4. เครื่องมือบรรทัดคำสั่ง

เครื่องมือชุดนี้คือสิ่งที่ใช้ตอบคำถาม "ตอนนี้ระบบเป็นยังไง" โดยไม่ต้องแก้โค้ดและไม่ต้องหยุดระบบ

Important

หัวข้อนี้สำคัญกว่าที่คิด — เวลาต่ออุปกรณ์จริงแล้วหุ่นไม่ขยับ คนที่ใช้เครื่องมือพวกนี้เป็นจะหาสาเหตุเจอใน 5 นาที คนที่ไม่เป็นจะเดาไปเรื่อยว่าสายเสีย ไดรฟ์เสีย หรือโค้ดผิด

ตรวจ topic

คำสั่ง

ตอบคำถามว่า

ros2 topic list

มีช่องอะไรอยู่บ้าง

ros2 topic echo /ชื่อ

ข้อมูลที่ไหลอยู่หน้าตาเป็นยังไง

ros2 topic info /ชื่อ

ใครส่ง ใครรับ กี่ตัว

ros2 topic info -v /ชื่อ

เหมือนข้างบน + ตั้งค่า QoS ← สำคัญมาก

ros2 topic hz /ชื่อ

ส่งมากี่ครั้งต่อวินาที

ros2 topic pub

ส่งข้อมูลเข้าไปเองเพื่อทดสอบ

ros2 topic hz — เครื่องมือที่ควรใช้บ่อยที่สุด

ros2 topic hz /scan
average rate: 9.998
	min: 0.099s max: 0.101s std dev: 0.00047s window: 10

average rate บอกความถี่ แต่ ตัวที่ควรดูจริง ๆ คือ max

Warning

🔴 ค่าเฉลี่ยซ่อนอาการสะดุดได้เก่งมาก

LiDAR ที่ควรส่ง 10 Hz ถ้าค่าเฉลี่ยได้ 9.9 ดูเหมือนปกติ แต่ถ้า max: 0.8s แปลว่ามีช่วงที่หายไป 0.8 วินาที ซึ่งนานพอให้หุ่นวิ่งเลยจุดที่ควรหยุด

ใช้ --window 50 เพื่อดูช่วงยาวขึ้น:

ros2 topic hz /scan --window 50

ros2 topic pub — ทดสอบโดยไม่ต้องเขียนโค้ด

สั่งเต่าให้เดินหน้าโดยไม่ใช้ teleop

ros2 topic pub /turtle1/cmd_vel geometry_msgs/msg/Twist \
  "{linear: {x: 1.0}, angular: {z: 0.0}}"

กด Ctrl+C เพื่อหยุด (มันจะส่งซ้ำไปเรื่อย ๆ) หรือใส่ --once ให้ส่งครั้งเดียว

Danger

กับหุ่นจริงคำสั่งนี้อันตราย — มันข้ามด่านความปลอดภัยทุกชั้นที่อยู่เหนือขึ้นไป ทั้งตัวจำกัดความเร็วและตัวหยุดเมื่อเจอสิ่งกีดขวาง

ถ้าจะใช้กับหุ่นจริง ต้องยกล้อลอยพื้นก่อน และรู้ว่าปุ่มหยุดฉุกเฉินอยู่ตรงไหน

ตรวจ node

ros2 node list
ros2 node info /turtlesim

ros2 node info บอกครบว่า node นั้นส่งอะไร รับอะไร มี service และ parameter อะไร

ตรวจและแก้ค่าตั้ง

ros2 param list                              # มีค่าอะไรให้ตั้งบ้าง
ros2 param get /turtlesim background_b       # อ่านค่าเดียว
ros2 param set /turtlesim background_b 255   # เปลี่ยนค่าทันที

พื้นหลังเต่าจะเปลี่ยนสีทันทีโดยไม่ต้องเปิดโปรแกรมใหม่

Note

ค่าที่เปลี่ยนด้วย ros2 param set หายเมื่อปิดโปรแกรม ถ้าอยากให้อยู่ถาวร ต้องเขียนลงไฟล์ YAML ซึ่งอยู่ใน หัวข้อ 7

ข้อดีคือใช้ลองค่าตอนจูนได้เร็วมาก — เปลี่ยนแล้วเห็นผลทันที ไม่ต้อง build ใหม่

rqt_graph — ดูภาพรวมเป็นรูป

rqt_graph

จะได้แผนภาพว่า node ไหนต่อกับ topic ไหน ลูกศรชี้ทิศทางข้อมูล

Tip

ใช้หาลูกศรที่ขาด — ถ้าเห็น node สองตัวลอยอยู่โดยไม่มีเส้นเชื่อม ทั้งที่ควรคุยกัน แปลว่าชื่อ topic ไม่ตรงกัน (กับดักจากหัวข้อที่แล้ว)

ถ้าไม่เห็นอะไรเลย ให้กดปุ่มรีเฟรชมุมซ้ายบน และเลือก Nodes/Topics (all) ในเมนูดรอปดาวน์

ros2 bag — บันทึกไว้ดูทีหลัง

ros2 bag record /turtle1/cmd_vel /turtle1/pose    # บันทึก
ros2 bag record -a                                # บันทึกทุก topic
ros2 bag play rosbag2_2026_09_01-10_30_00          # เล่นซ้ำ
ros2 bag info rosbag2_2026_09_01-10_30_00          # ดูว่ามีอะไรอยู่ข้างใน

Important

มีประโยชน์มากกับอาการที่เกิดนาน ๆ ครั้ง เช่นหุ่นกระตุกทุก 10 นาที เปิดบันทึกทิ้งไว้ พอเกิดอาการแล้วค่อยเอามาเล่นซ้ำดูช้า ๆ ได้เท่าที่ต้องการ

ระวังพื้นที่ดิสก์ — -a กับหุ่นที่มี LiDAR และกล้อง กินได้หลาย GB ต่อนาที

ลำดับการตรวจเมื่อ "สั่งแล้วไม่ขยับ"

ทำตามลำดับนี้ จะได้ไม่ต้องเดา

1. ros2 node list          → node ที่ควรมี เปิดอยู่ครบไหม
2. ros2 topic list         → ชื่อ topic สะกดตรงกันไหม
3. ros2 topic info -v      → Publisher count เป็น 0 ไหม · QoS ตรงกันไหม
4. ros2 topic echo         → มีข้อมูลไหลจริงไหม
5. ros2 topic hz           → ไหลสม่ำเสมอไหม ดู max ไม่ใช่ average

ส่วนใหญ่จบที่ข้อ 3 หรือ 4


ก่อนหน้า: 3. node · topic · message · ต่อไป: 5. workspace กับ package แรก