การสร้าง Package ด้วยภาษา Python
เริ่มแรก เรามาออกแบบกันก่อน เรากำลังจะทำ Node 2 อัน ที่ทำหน้าที่พูดคนนึง และ รับฟังคนนึง
Package ชื่อ : beginner_tutorials
โดยใช้ Dependencies ดังนี้:
1. catkin (build system)
2. rospy (ROS ภาษา Python)
3. std_msgs (Package ข้อความพื้นฐานใน ROS)
อยากจะสร้าง Node ที่ทำหน้าที่เป็น
Publisher 1 Node ทำหน้าที่ส่งข้อความ
Subscriber 1 Node ทำหน้าที่รับข้อความแล้วหาคำตอบ — แล้วแสดง
เปิด Terminal ของ Ubuntu
catkin_create_pkg ชื่อ วรรค ตามด้วย dependency หลายๆตัว ที่เว้นวรรค 1 ที
cd catkin_ws/src
catkin_create_pkg beginner_tutorials std_msgs rospy
เราจะได้ โฟลเดอร์ ที่มีชื่อว่า beginner_tutorials ขึ้นมา พอเป็นเข้าไปด้านใน จะพบว่ามี โฟลเดอร์ และไฟล์มารอดังนี้
แล้วสร้างโฟลเดอร์ ที่มีชื่อว่า scripts ให้อยู่ภายใต้ โฟลเดอร์ beginner_tutorials
mkdir catkin_ws/src/beginner_tutorials/scripts
เปิดโปรแกรม Geany IDE ด้วยคำสั่ง geany
geany
1. สร้าง Node ตัวส่งข้อความ “Publisher”
ไฟล์ : talker.py
#!/usr/bin/env python # license removed for brevity import rospy from std_msgs.msg import String def talker(): pub = rospy.Publisher('chatter', String, queue_size=10) rospy.init_node('talker', anonymous=True) rate = rospy.Rate(10) # 10hz while not rospy.is_shutdown(): hello_str = "hello world %s" % rospy.get_time() rospy.loginfo(hello_str) pub.publish(hello_str) rate.sleep() if __name__ == '__main__': try: talker() except rospy.ROSInterruptException: pass
cd catkin_ws/src/beginner_tutorials/scripts
chmod u+x talker.py
2. สร้าง Node ตัวรับข้อความ “Subscriber”
ไฟล์ : listener.py
#!/usr/bin/env python import rospy from std_msgs.msg import String def callback(data): rospy.loginfo(rospy.get_caller_id() + "I heard %s", data.data) def listener(): rospy.init_node('listener', anonymous=True) rospy.Subscriber('chatter', String, callback) rospy.spin() if __name__ == '__main__': listener()
cd catkin_ws/src/beginner_tutorials/scripts
chmod u+x listener.py
หลังจากเขียนโค้ดเสร็จแล้ว ให้ทำการ Build
cd catkin_ws
catkin_make
หน้าต่างที่1 เราจะ RUN ระบบ ROS จะต้องมี Core ที่ทำหน้าที่เป็นหัวใจของระบบ
หลังจากนั้นจึง Run Node ของเราได้
หน้าต่างที่ 2 เปิด Publisher (ตัวส่งข้อมูล)
roscore
หน้าต่างที่ 2 เปิด Publisher (ตัวส่งข้อมูล)
rosrun beginner_tutorials talker.py
rosrun beginner_tutorials listener.py
หมายเหตุ : เรียบเรียงและแก้ไขดัดแปลงจากบทความต้นฉบับด้านล่าง