ควบคุมเต่าบน 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 ของเรานั้นสำเร็จแล้ว