1. 程式人生 > >用Python實現ROS節點(編寫簡單的訊息釋出器和訂閱器)

用Python實現ROS節點(編寫簡單的訊息釋出器和訂閱器)

編寫一個簡單的釋出器和訂閱器

1.建立工作空間

建立資料夾hello_rospy,再在該目錄下建立子目錄src,cd到該src目錄,執行如下命令建立工作包

catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

2.編寫釋出器和訂閱器

進入之前建立的beginner_tutorials包

roscd beginner_tutorials

建立scripts目錄存放Python程式碼:

mkdir scripts
cd scripts

下載例子指令碼talker.py到scripts目錄,並修改許可權為可執行(釋出節點):

wget https://raw.github.com/ros/ros_tutorials/kinetic-devel/rospy_tutorials/001_talker_listener/talker.py
chmod +x talker.py

下載listener.py到scripts目錄,並修改許可權為可執行(訂閱節點):

wget https://raw.github.com/ros/ros_tutorials/kinetic-devel/rospy_tutorials/001_talker_listener/listener.py
chmod +x listener.py

構建節點:

cd ~/hello_rospy
catkin_make

3.測試釋出器和訂閱器

啟動釋出器:

開啟終端,輸入:

roscore

確保roscore可用。

開啟新的終端,輸入:

如果使用catkin,確保你在呼叫catkin_make後,在執行你自己的程式前,已經source了catkin工作空間下的setup.sh檔案

cd ~/hello_rospy
source ./devel/setup.bash
rosrun beginner_tutorials talker.py

此時你會看到如下資訊:

[INFO] [1534388269.223655]: hello world 1534388269.2233906
[INFO] [1534388269.323618]: hello world 1534388269.3233504
[INFO] [1534388269.423586]: hello world 1534388269.4233208
[INFO] [1534388269.523613]: hello world 1534388269.5233488
[INFO] [1534388269.623685]: hello world 1534388269.6233852
[INFO] [1534388269.723714]: hello world 1534388269.7234194
[INFO] [1534388269.823649]: hello world 1534388269.8233697
[INFO] [1534388269.923647]: hello world 1534388269.9233446
[INFO] [1534388270.023622]: hello world 1534388270.023337
[INFO] [1534388270.123665]: hello world 1534388270.1233444
[INFO] [1534388270.223655]: hello world 1534388270.2233653
[INFO] [1534388270.323668]: hello world 1534388270.3233645
[INFO] [1534388270.423637]: hello world 1534388270.423357
[INFO] [1534388270.523678]: hello world 1534388270.5233543
[INFO] [1534388270.623646]: hello world 1534388270.6233633
[INFO] [1534388270.723670]: hello world 1534388270.723355
[INFO] [1534388270.823638]: hello world 1534388270.8233557
[INFO] [1534388270.923635]: hello world 1534388270.9233434
[INFO] [1534388271.023646]: hello world 1534388271.0233815

釋出器節點已經啟動執行。現在需要一個訂閱器節點來接受釋出的訊息。

啟動訂閱器:

開啟新的終端,輸入:

cd ~/hello_rospy
source ./devel/setup.bash
rosrun beginner_tutorials listener.py

此時你會看到如下資訊:

[INFO] [1534388451.225271]: /listener_32238_1534388451115I heard hello world 1534388451.2233224
[INFO] [1534388451.325214]: /listener_32238_1534388451115I heard hello world 1534388451.3234394
[INFO] [1534388451.425159]: /listener_32238_1534388451115I heard hello world 1534388451.4234073
[INFO] [1534388451.525082]: /listener_32238_1534388451115I heard hello world 1534388451.5234268
[INFO] [1534388451.624949]: /listener_32238_1534388451115I heard hello world 1534388451.6233602
[INFO] [1534388451.724969]: /listener_32238_1534388451115I heard hello world 1534388451.723355
[INFO] [1534388451.825018]: /listener_32238_1534388451115I heard hello world 1534388451.823384
[INFO] [1534388451.925162]: /listener_32238_1534388451115I heard hello world 1534388451.923369
[INFO] [1534388452.025092]: /listener_32238_1534388451115I heard hello world 1534388452.0234113
[INFO] [1534388452.125054]: /listener_32238_1534388451115I heard hello world 1534388452.1233687

至此,全部完成。