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