ROS2,向主题发布自定义消息时出现 TypeError (python)
ROS2, TypeError when publishing custom message to Topic (python)
我定义了一条自定义消息:uint8[] data
自定义消息在我的节点 class 中导入没有问题:from my_shared.msg import MyMessage
在同一个节点中,我创建发布者:self.my_publisher = self.create_publisher(MyMessage, 'topic_in', 200)
然后我发布消息:self.my_publisher.publish(my_msg)
my_msg 的构建方式如下:
payload_bitstream = np.fromstring(my_data, np.uint8)
my_msg = payload_bitstream.tolist()
遗憾的是,我得到了 TypeError: File "/opt/ros/eloquent/lib/python3.6/site-packages/rclpy/publisher.py", line 68, in publish raise TypeError() TypeError
如果你知道我做错了什么,你能帮忙解决一下吗?
提前致谢,G.
问题出在您对 my_msg
的分配中,它是 class MyMessage
的一个实例,其中包含 my_shared.msg
文件中定义的属性,即 my_msg.data
类型为 uint8[]
。您使用 payload_bitstream.tolist()
获取具有 uint8 值的本机 python 整数列表是正确的,但您需要将其分配给 data
属性。长话短说:
my_msg.data = payload_bitstream.tolist()
我定义了一条自定义消息:uint8[] data
自定义消息在我的节点 class 中导入没有问题:from my_shared.msg import MyMessage
在同一个节点中,我创建发布者:self.my_publisher = self.create_publisher(MyMessage, 'topic_in', 200)
然后我发布消息:self.my_publisher.publish(my_msg)
my_msg 的构建方式如下:
payload_bitstream = np.fromstring(my_data, np.uint8)
my_msg = payload_bitstream.tolist()
遗憾的是,我得到了 TypeError: File "/opt/ros/eloquent/lib/python3.6/site-packages/rclpy/publisher.py", line 68, in publish raise TypeError() TypeError
如果你知道我做错了什么,你能帮忙解决一下吗?
提前致谢,G.
问题出在您对 my_msg
的分配中,它是 class MyMessage
的一个实例,其中包含 my_shared.msg
文件中定义的属性,即 my_msg.data
类型为 uint8[]
。您使用 payload_bitstream.tolist()
获取具有 uint8 值的本机 python 整数列表是正确的,但您需要将其分配给 data
属性。长话短说:
my_msg.data = payload_bitstream.tolist()