ros用std_msgs发送并接收 std_msgs/Float64MultiArray数据
时间: 2023-12-17 09:06:01 浏览: 191
01_msg消息1
在ROS中,可以通过std_msgs/Float64MultiArray消息类型来传输浮点型数组数据。下面是一个发送和接收std_msgs/Float64MultiArray数据的示例:
发送端代码:
```python
import rospy
from std_msgs.msg import Float64MultiArray
rospy.init_node('array_publisher')
pub = rospy.Publisher('my_array_topic', Float64MultiArray, queue_size=10)
array_data = [1.0, 2.0, 3.0] # 测试数据
rate = rospy.Rate(10) # 发送频率为10Hz
while not rospy.is_shutdown():
array_msg = Float64MultiArray()
array_msg.data = array_data
pub.publish(array_msg)
rate.sleep()
```
接收端代码:
```python
import rospy
from std_msgs.msg import Float64MultiArray
def array_callback(array_msg):
rospy.loginfo("Received array: %s", array_msg.data)
rospy.init_node('array_subscriber')
sub = rospy.Subscriber('my_array_topic', Float64MultiArray, array_callback)
rospy.spin()
```
在上面的示例中,发送端将测试数据作为浮点型数组赋值给`Float64MultiArray`消息的`data`字段,然后使用`rospy.Publisher`将该消息发布到`my_array_topic`主题上。接收端订阅该主题并使用`rospy.Subscriber`注册回调函数`array_callback`,以便在收到消息时打印该数组数据。`rospy.spin()`用于保持节点运行,直到它被关闭。
阅读全文