4. เครื่องมือบรรทัดคำสั่ง
เครื่องมือชุดนี้คือสิ่งที่ใช้ตอบคำถาม "ตอนนี้ระบบเป็นยังไง" โดยไม่ต้องแก้โค้ดและไม่ต้องหยุดระบบ
Important
หัวข้อนี้สำคัญกว่าที่คิด — เวลาต่ออุปกรณ์จริงแล้วหุ่นไม่ขยับ คนที่ใช้เครื่องมือพวกนี้เป็นจะหาสาเหตุเจอใน 5 นาที คนที่ไม่เป็นจะเดาไปเรื่อยว่าสายเสีย ไดรฟ์เสีย หรือโค้ดผิด
ตรวจ topic
คำสั่ง |
ตอบคำถามว่า |
|---|---|
|
มีช่องอะไรอยู่บ้าง |
|
ข้อมูลที่ไหลอยู่หน้าตาเป็นยังไง |
|
ใครส่ง ใครรับ กี่ตัว |
|
เหมือนข้างบน + ตั้งค่า QoS ← สำคัญมาก |
|
ส่งมากี่ครั้งต่อวินาที |
|
ส่งข้อมูลเข้าไปเองเพื่อทดสอบ |
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 แรก