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

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