ros自定义消息python示例
时间: 2023-03-28 14:02:29 浏览: 119
你好,以下是一个 ROS 自定义消息的 Python 示例:
1. 首先,在 ROS 工作空间的 src 目录下创建一个名为 my_msgs 的包,并在该包下创建一个名为 MyMsg.msg 的消息文件,内容如下:
```
int32 id
string name
float32 score
```
2. 在该包下创建一个名为 my_publisher.py 的 Python 节点,用于发布自定义消息,代码如下:
```python
#!/usr/bin/env python
import rospy
from my_msgs.msg import MyMsg
def my_publisher():
pub = rospy.Publisher('my_topic', MyMsg, queue_size=10)
rospy.init_node('my_publisher', anonymous=True)
rate = rospy.Rate(10) # 10hz
while not rospy.is_shutdown():
msg = MyMsg()
msg.id = 1
msg.name = 'Alice'
msg.score = 90.5
rospy.loginfo(msg)
pub.publish(msg)
rate.sleep()
if __name__ == '__main__':
try:
my_publisher()
except rospy.ROSInterruptException:
pass
```
3. 在该包下创建一个名为 my_subscriber.py 的 Python 节点,用于订阅自定义消息,代码如下:
```python
#!/usr/bin/env python
import rospy
from my_msgs.msg import MyMsg
def my_callback(msg):
rospy.loginfo('Received message: id=%d, name=%s, score=%.1f', msg.id, msg.name, msg.score)
def my_subscriber():
rospy.init_node('my_subscriber', anonymous=True)
rospy.Subscriber('my_topic', MyMsg, my_callback)
rospy.spin()
if __name__ == '__main__':
my_subscriber()
```
4. 分别运行 my_publisher.py 和 my_subscriber.py 节点,可以看到自定义消息被发布和订阅的过程。
希望这个示例对你有帮助!
阅读全文