turtlebot3机器人通信

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 代码

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章