ROS学习笔记(八、python编写消息发布器和接收器)

在上一章笔记七中,我们知道了如何创建ros消息并且如何修改package.xml和CMakeLists.txt文件,确保消息文件生成对应的c++和python接口。接下来,我们学习使用python编写一个消息发布器和接受器。直接上实战。

首先,还是常规操作设置环境变量,进入test_pkg功能包

source catkin_ws/devel/setup.bash
roscd test_pkg

然后,增加在test_pkg文件夹下,创建一个scripts文件夹,专门用来存储python文件或者c++文件

mkdir scripts

然后,在scripts目录中创建talker.py和listener.py文件

touch talker.py
touch listener.py

但是,仅仅通过touch创建的python文件只有可读和可写权限,不具备可执行权限,因此需要通过以下命令使得python文件能够执行

sudo chmod +x talker.py listener.py

通过以下命令,显示文件信息:

ls -ll

在终端里会看到:

显示rwxrwxr-x显示该文件具有可执行权。

然后,打开talker.py文件,输入内容

gedit talker.py

在发布编辑器中输入以下内容:

#指定一个解释器,使得ros能够认识python中的内容
#!/usr/bin/env python3
#导入python模块和s
在Robot Operating System (ROS)中,编写简单的消息发布订阅通常涉及以下几个步骤: 1. **安装必要的包**: 首先,确保已经安装了ROS并配置好环境。如果还没有,可以访问ROS官方网站下载适合的操作系统的版本,并按照教程设置。 2. **创建消息类型**: 使用`msg`包定义自定义的消息类型,例如`std_msgs/String`或自定义的消息文件。例如: ```bash rosmsg gen msg MyCustomMessage ``` 3. **发布(Publisher)**: 使用`rospy`库中的`publisish()`函数创建一个发布。这里是一个基本示例,假设你有名为`my_message`的变量存储自定义消息: ```python import rospy from my_custom_package.msg import MyCustomMessage def publish_message(): pub = rospy.Publisher('my_topic', MyCustomMessage, queue_size=10) msg = MyCustomMessage(data="Hello ROS!") while not rospy.is_shutdown(): pub.publish(msg) rospy.sleep(1) if __name__ == '__main__': rospy.init_node('publisher') try: publish_message() except rospy.ROSInterruptException: pass ``` 这里,我们创建了一个节点,并指定主题(`my_topic`),然后每秒发送一条消息。 4. **订阅(Subscriber)**: 使用`subcriber()`函数创建一个订阅,它会在接收到消息时触发回调函数: ```python import rospy from my_custom_package.msg import MyCustomMessage def message_callback(msg): print("Received message:", msg.data) def subscribe_to_topic(): rospy.Subscriber('my_topic', MyCustomMessage, message_callback) rospy.spin() if __name__ == '__main__': rospy.init_node('subscriber') try: subscribe_to_topic() except rospy.ROSInterruptException: pass ``` 这里,我们创建了一个监听者,当`my_topic`上发布新消息时,会打印消息内容。 5. **启动节点服务**: 确保发布订阅都在各自的独立节点上运行。分别运行这两个Python脚本,发布会开始在指定主题上发送消息,而订阅会接收并处理这些消息。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值