Ở đây, chúng tôi tạo một node publisher với tên là “talker”, node này sẽ phát ra message và node subscriber với tên “người nghe”) để nhận message qua topic là “/ chatter”
Talker Node
Chắc chắn rằng bạn đã tạo catkin_ws và thử catkin_make
Bước 1: Tạo hello_world package
$ catkin_create_pkg hello_world rospy std_msgs
Như bạn có thể thấy, chương trình tự động tạo một số tệp bên dưới:
Created file hello_world/package.xml
Created file hello_world/CMakeLists.txt
Created folder hello_world/include/hello_world
Created folder hello_world/src
Successfully created files in /home/<your_name>/catkin_ws/src/hello_world.
Please adjust the values in package.xml.
Sau đó ta cd vào thư mục catkin_ws và compile code bằng lệnh catkin_make
$ cd ~/catkin_ws/
$ catkin_make
Bước 2. Vào thư mục hello_world bằng roscd và tạo file talker.py
roscd hello_world
mkdir scripts
cd scripts
gedit talker.py
Bước 3. Cho phép file talker.py hoạt động (Permission file talker.py)
$ roscd hello_world
$ cd script
$ chmod +x talker.py
Listener Node
Tương tự như vậy các bạn hãy bắt đầu code file listener.py
#!/usr/bin/env pythonimport rospyfrom std_msgs.msg import Stringdefcallback(data): rospy.loginfo(rospy.get_caller_id() +"I heard %s", data.data)deflistener():# In ROS, nodes are uniquely named. If two nodes with the same# name are launched, the previous one is kicked off. The# anonymous=True flag means that rospy will choose a unique# name for our 'listener' node so that multiple listeners can# run simultaneously. rospy.init_node('listener', anonymous=True) rospy.Subscriber("chatter", String, callback)# spin() simply keeps python from exiting until this node is stopped rospy.spin()if__name__=='__main__':listener()
Nào các bạn chạy các ROS Node thôi nào.
Chạy các Node bằng Python
Bước đầu tiên bạn phải make các package trong catkin_ws
$ cd ~/catkin_ws
$ catkin_make
Mở terminal 1 chạy roscore
roscore
Terminal 2 chạy talker.py
rosrun hello_world talker.py
Bạn có thể thấy node talker.py bắt đầu publish data
[INFO] [WallTime: 1521785268.935330] hello world 1521785268.94
[INFO] [WallTime: 1521785269.035358] hello world 1521785269.04
[INFO] [WallTime: 1521785269.135298] hello world 1521785269.14
Terminal 3 chạy talker.py
rosrun hello_world listener.py
Node listener bắt đầu nhận dữ liệu từ node talker
[INFO] [WallTime: 1521785358.586366] /listener_14367_1521785357161I heard hello
world 1521785358.58
[INFO] [WallTime: 1521785358.686434] /listener_14367_1521785357161I heard hello
world 1521785358.69
[INFO] [WallTime: 1521785358.786199] /listener_14367_1521785357161I heard hello
world 1521785358.78
Terminal 4 : Mở Sơ đồ các node (Open Node graph)
rqt_graph
Bạn có thể tham khảo giải thích chi tiết code ở link sau: