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

ROS订阅节点无法获取Twist消息浮点值问题求助

解决ROS订阅节点无法正确提取Twist消息浮点值的问题

你代码里的核心问题是回调函数错误使用了全局初始化的空Twist对象msg,而不是ROS传递过来的消息参数data。那个全局msg是你在listener()里创建的空实例,所有分量默认都是0,所以不管发布端发什么,你输出的都是0,和字符串转换完全无关。

修正后的订阅节点代码

from geometry_msgs.msg import Twist
import rospy

def callback(data):
    # 直接使用传入的data参数,这才是发布端发来的Twist消息
    rospy.loginfo(f"{rospy.get_caller_id()}")
    rospy.loginfo(f"Linear: x={data.linear.x}, y={data.linear.y}, z={data.linear.z}")
    rospy.loginfo(f"Angular: x={data.angular.x}, y={data.angular.y}, z={data.angular.z}")

def listener():
    rospy.init_node('listener', anonymous=True)
    rospy.Subscriber('/cmd_vel', Twist, callback)
    rospy.spin()

if __name__ == '__main__':
    listener()

正确提取浮点值的方法

Twist消息的分量本身就是浮点类型,直接通过以下方式提取即可:

  • 线速度分量:data.linear.x、data.linear.y、data.linear.z
  • 角速度分量:data.angular.x、data.angular.y、data.angular.z

这些值可以直接用于计算或打印,不需要额外的字符串转换操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 22:27:20