mytopic_demo
代码下载地址:
GitHub:https://github.com/kdongyi/turtlebot-communication-demo
码云:https://gitee.com/kdongyi/turtlebot-communication-demo
觉得有用请Star、Fork ^_^
一、mytopic_demo功能:Python的Topic通信示例
- 1、与turtlebot3机器人传感器通信,例:获取turtlebot3激光雷达的数据
- 2、自定义通信格式,向其他机器人发布数据消息
二、建立通信过程
1、与turtlebot3机器人传感器通信
- 使用rostopic list命令查询要获取的传感器的topic名称
kdy@kdy:~$ rostopic list
...
/robot1/imu
/robot1/scan
...
/robot2/imu
/robot2/scan
...
- 例如:我们要获取robot1激光雷达传感器的信息,就使用rostopic info /robot1/scan命令查看msg名称
kdy@kdy:~$ rostopic info /robot1/scan
Type: sensor_msgs/LaserScan
Publishers:
* /robot1/turtlebot3_lds (http://192.168.3.28:40104/)
Subscribers:
* /robot1/turtlebot3_diagnostics (http://192.168.3.28:46652/)
可以看到显示的msg名称为:sensor_msgs/LaserScan
因此在程序中需要导入mgs到pkg中
from sensor_msgs.msg import LaserScan
其他可以参考mytopic_demo项目程序
2、自定义通信格式,向其他机器人发布数据消息
- 根据传输数据的需要,自定义msg文件夹下的msg文件
- 具体程序参考talker_demo.py 程序中有详细的注释
三、运行方法
1、与turtlebot3机器人传感器通信
- 启动ROSCORE
$ roscore
- 启动要发布传感器数据的turtlebot3机器人:
$ ROS_NAMESPACE=robot1 roslaunch turtlebot3_bringup turtlebot3_robot.launch multi_robot_name:="robot1" set_lidar_frame_id:="robot1/base_scan"
- 启动接收者
$ rosrun topic_demo listener_demo.py
2、自定义通信格式,向其他机器人发布数据消息
- 启动发布者
$ rosrun mytopic_demo talker_demo.py
- 启动接收者
$ rosrun topic_demo listener_demo.py
四、注意事项
-
一定要注意文件的权限问题,新创建或者复制一个程序文件(py、launch文件等),它很可能是没有权限的,如果此时执行程序,会报错,因此需要使用命令对文件加权限:
$ sudo chmod 777 talker_demo.py
-
自定义通信传输时,要注意修改CMakeLists.txt的内容,不然无法对创建的msg文件进行编译
-
自定义通信传输,需要进行编译,但一定不要忘记source
$ catkin_make $ souce ~/catkin_ws/devel/setup.bash
-
对于编写的.py程序,可以在launch文件中进行调用,具体方式可以参考 跟随demo 代码