You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ROS订阅者接收String类型消息出现Data前缀导致转换报错求解

ROS订阅者接收String消息前缀问题解决

问题根源

  • ROS的std_msgs/String是专门定义的消息类型,并非Python原生字符串,回调函数传入的data参数是该消息类型的实例对象
  • 实际发布的字符串内容存储在该对象的data属性中,直接打印消息对象时,会输出data: "xxx"格式的结构化描述,这就是你看到额外前缀的来源
  • 直接将消息对象赋值给变量、或者将整个消息对象转字符串,都会保留前缀信息,导致后续转int时报错

修正代码

只需要修改订阅者的回调函数,从消息对象的data字段取实际内容即可,原有后续逻辑不需要改动:

class clicker(object):
    def __init__(self):
        self.jugada_sub = rospy.Subscriber("jugada",String, self.callback)

    def callback(self, data): 
        # 取出std_msgs/String消息中存储的实际字符串内容
        jugada = data.data
        print(jugada)
        # 原有转换逻辑可直接正常运行
        if jugada != "None":
            jugada = int(jugada)

内容的提问来源于stack exchange,提问作者Forquilla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 19:54:03