ควบคุมเต่าบน ROS2
หลังจากที่เราทดสอบการใช้งาน โหนด ของ ROS2 มาบ้างแล้ว ต่อไปเราก็จะมาทำความเข้าใจการสื่อสาร ระหว่างโหนดต่างๆ และทดสอบการทำงานของมันว่าสามารถใช้งานได้แล้วรึเปล่า โดยเราจะใช้ Turtlesim (เต่าจำลอง) ที่ ROS2 มีให้มาอยู่แล้ว ซึ่งจะเป็นการเปิดหน้าต่างที่มีเต่าขึ้นมา แล้วควบคุมเต่าด้วย keyboard ให้เราได้ศึกษาการใช้งานคำสั่งพื้นฐานควบคุมการทำงานต่าง ๆ
1 : เขียน Node ภาษา Python แบบ OOP
เขียน Node ภาษา Python แบบ OOP ตามขั้นตอนลิงค์ด้านล่าง
2 : เปิด Terminator 4 หน้าต่าง
3 : ควบคุมเต่าบน ROS2
ไปที่ หน้าต่างที่ 2 แล้ว ติดตั้ง Foxy Turtlesim
sudo apt install ros-foxy-turtlesim
ไปที่ หน้าต่างที่ 1 โดยเราจะต้องทําให้ Terminator รู้จักคําสั่งของ ROS2 ด้วย คําสั่ง
source ~/.bashrc
คำสั่งนี้จะเป็นการรันโหนดที่มีชื่อว่า turtlesim_node ที่อยู่ในแพคเกจ turtlesim
ros2 run turtlesim turtlesim_node
เราจะเห็นข้อความขึ้นมา พร้อมกับมีหน้าต่าง ที่มีเต่าอยู่ตรงกลาง แสดงออกมาตามภาพ
กลับไปที่ หน้าต่างที่ 2 ใช้คำสั่งเพื่อแสดง โหนด ที่กำลังทำงานอยู่
ros2 node list
จะพบ โหนด turtlesim กำลังทำงานอยู่
ไปที่ หน้าต่างที่ 3 ใช้คำสั่ง รันโหนดที่มีชื่อว่า turtle_teleop_key ที่อยู่ในแพคเกจ turtlesim เพื่อควบคุมเต่าด้วย keyboard
ros2 run turtlesim turtle_teleop_key
เราจะเห็นข้อความบอกว่าให้เรากดตัวอักษรต่างๆ เพื่อควบคุมการหมุนของเต่า
ย่อหน้าต่างของ Terminator ให้เล็กลงมา เพื่อดูการทำงานของเต่า แล้วกดลูกศรเพื่อที่จะสั่งให้เต่าเคลื่อนที่ (เวลากดปุ่มต้องกดในหน้าต่าง Terminator หน้าต่างที่ 3 เท่านั้น)
เมื่อเรากดปุ่มเต่าก็จะเคลื่อนที
ไปที่ หน้าต่างที่ 4 ใช้คำสั่ง rqt_graph สำหรับการแสดงกราฟการเชื่อมต่อกันระหว่าง nodes ต่างๆที่มีการส่งข้อมูลหากัน ผ่าน GUI
rqt_graph
1 เลือกเป็น Nodes only และ 2 กดรีเฟรช
โดยตัวที่อยู่ในวงกลม (วงรี) จะหมายถึง node และตัวที่คั่นกลางอยู่ระหว่างเส้นทาง จะหมายถึง topic
จากภาพ จะเห็นลูกศรชี้จาก ‘/teleop_turtle’ ไป ‘/turtlesim’ แล้วคั่นกลางด้วย ‘/turtle1/cmd_vel’ ซึ่งรวมๆแล้วการทำงาน คือ การที่เรากดคีย์บอร์ดจะเป็นการส่ง ความเร็วจาก node teleop_turtle ไปยัง node turtlesim ที่เราเปิดอยู่ ผ่าน topic ที่มีชื่อว่า /turtle1/cmd_vel ซึ่งส่งผลให้เต่าสามารถเคลื่อนที่ได้
ถ้าทำมาถึงขั้นนี้แล้วไม่มีปัญหาก็แสดงว่า การทดสอบ ควบคุมเต่าบน ROS2 ของเรานั้นสำเร็จแล้ว