Appendix C: Essential Tools for Developers (เครื่องมือเสริมที่ควรมี)
นอกเหนือจากโปรแกรมพื้นฐานที่มาพร้อมกับ Ubuntu แล้ว ยังมีเครื่องมืออำนวยความสะดวกสำหรับนักพัฒนา (Developer Tools) ที่จะช่วยให้การเขียนโค้ดและการแก้ปัญหาทำได้รวดเร็วและมีประสิทธิภาพมากขึ้น
Terminator (เทอร์มินัลอเนกประสงค์)
ในงาน ROS2 เรามักต้องเปิด Terminal พร้อมกันหลายหน้าต่าง (เช่น ช่อง 1 รัน Rviz, ช่อง 2 รัน Node, ช่อง 3 ดู Log) การใช้ Terminal ธรรมดาทำให้หน้าจอรกรุงรัง
Terminator ช่วยให้เราแบ่งหน้าจอ (Split Screen) ได้ภายในหน้าต่างเดียว และสามารถพิมพ์คำสั่งพร้อมกันทุกช่องได้ (Broadcast)
การติดตั้ง
sudo apt install terminator
การตั้งค่าที่แนะนำ (Configuration)
คลิกขวาที่ว่างใน Terminator เลือก Preferences
Profiles -> Scrolling:
ตั้งค่า Scrollback เป็น
50000linesทำไมไม่เลือก Infinite? การตั้งแบบไม่จำกัดมีความเสี่ยง หากโปรแกรมทำงานผิดพลาดและพ่นข้อความ Log ออกมาต่อเนื่อง จะทำให้ RAM ของเครื่องเต็มและระบบอาจค้างได้ ค่า 50,000 เพียงพอสำหรับการดู Log ย้อนหลังในการคอมไพล์โปรแกรมส่วนใหญ่
Profiles -> Colors:
เลือก Scheme เป็น Ambience (พื้นหลังเทาเข้ม ตัวหนังสือขาว) หรือ Black on Yellow
เหตุผล: สีที่มี Contrast ดีจะช่วยลดอาการล้าของสายตาเมื่อต้องจ้อง Log เป็นเวลานาน
Profiles -> General -> Font:
แนะนำให้ใช้ฟอนต์เดิม (Monospace หรือ Ubuntu Mono)
เหตุผล: ฟอนต์แบบ Monospace มีความกว้างเท่ากันทุกตัวอักษร ทำให้การจัดระเบียบโค้ดและการแสดงผลตารางใน Terminal ไม่เบี้ยว
การปรับขนาด: สามารถกด
Ctrl++(ขยาย) หรือCtrl+-(ย่อ) หรือกดCtrlค้างไว้แล้วเลื่อนลูกกลิ้งเมาส์ (Scroll) เพื่อปรับขนาดชั่วคราวได้ทันที
คีย์ลัดสำคัญ (Shortcuts):
Ctrl+Shift+O: แบ่งหน้าจอแนวนอน (Horizontal)Ctrl+Shift+E: แบ่งหน้าจอแนวตั้ง (Vertical)Alt+Arrow Keys: กระโดดข้ามไปมาระหว่างช่องCtrl+Shift+W: ปิดหน้าจอปัจจุบัน
Visual Studio Code (VS Code)
โปรแกรมแก้ไขโค้ด (IDE) ที่ได้รับความนิยมสูงสุด รองรับทั้ง Python, C++ และมี Extension สำหรับ ROS2 โดยเฉพาะ
การติดตั้ง (Official Snap Method)
Ubuntu แนะนำให้ติดตั้งผ่าน Snap Store เพื่อให้ได้เวอร์ชันล่าสุดและอัปเดตอัตโนมัติ
# Install VS Code classic edition
sudo snap install --classic code
Note
Snap vs Apt: การติดตั้งแบบ Snap เป็นเทคโนโลยีใหม่ของ Ubuntu ที่รวบรวม Library ที่จำเป็นไว้ในกล่องเดียว (Sandbox) ทำให้โปรแกรมทำงานได้เสถียรโดยไม่กวนระบบหลัก ส่วน Apt (.deb) เป็นวิธีดั้งเดิมที่อาจได้เวอร์ชันเก่ากว่า
Network Tools (การจัดการเครือข่าย)
ระบบ ROS2 สื่อสารกันผ่านเครือข่าย (DDS) ดังนั้นการตรวจสอบ IP Address และสถานะเครือข่ายจึงเป็นเรื่องสำคัญ
ip vs ifconfig
ในอดีตเราคุ้นเคยกับคำสั่ง ifconfig แต่ใน Ubuntu เวอร์ชันใหม่ๆ แนะนำให้ใช้ชุดคำสั่ง ip แทน เนื่องจากทำงานได้เร็วกว่าและให้ข้อมูลครบถ้วนกว่า (ติดตั้งมาให้แล้วโดย Default)
ตารางเปรียบเทียบคำสั่ง
Action |
Old Command |
New Command (Recommended) |
|---|---|---|
ดู IP Address |
|
|
ดูสถานะการ์ดแลน |
|
|
ดู Gateway |
|
|
คำศัพท์เครือข่ายที่ควรรู้
Term |
Description |
|---|---|
Interface |
ชื่อของการ์ดเครือข่าย เช่น |
IP Address |
ที่อยู่ของเครื่อง เช่น |
Localhost |
|
Ping |
คำสั่งทดสอบการเชื่อมต่อ เช่น |
Nano Cheat Sheet (คู่มือ Nano ฉบับพกพา)
Nano เป็น Text Editor ใน Terminal ที่ใช้งานง่ายที่สุด เหมาะสำหรับการแก้ไขไฟล์ Config เล็กๆ น้อยๆ บนหุ่นยนต์ผ่าน SSH
สัญลักษณ์: ^ หมายถึงปุ่ม Ctrl
Shortcut |
Action |
|---|---|
|
บันทึกไฟล์ (Save) (ระบบจะถามชื่อไฟล์ ให้กด Enter ยืนยัน) |
|
ออกจากโปรแกรม (ถ้ายังไม่เซฟ ระบบจะถามว่าต้องการเซฟไหม ให้ตอบ |
|
ค้นหาคำ (Search) |
|
ตัดบรรทัด (ใช้ลบบรรทัดได้ด้วย) |
|
วางบรรทัด (Paste) ที่ตัดไป |
|
กระโดดไปบรรทัดที่ระบุ (มีประโยชน์มากเวลา Debug Error ที่แจ้งบรรทัดมา) |
System Logs (การตรวจสอบอุปกรณ์ต่อพ่วง)
เมื่อเราเสียบอุปกรณ์ USB เช่น Lidar, กล้อง หรือบอร์ด Microcontroller เราต้องตรวจสอบว่าระบบมองเห็นอุปกรณ์หรือไม่
dmesg vs journalctl
dmesg: เป็นคำสั่งดั้งเดิมที่แสดง Log จาก Kerneljournalctl: เป็นคำสั่งสมัยใหม่ของระบบ systemd ที่เก็บ Log อย่างเป็นระเบียบ ค้นหาย้อนหลังได้ และแสดงเวลาที่ชัดเจนกว่า
แนะนำให้ใช้: journalctl -k (หรือ --dmesg)
เทคนิคการดู Log แบบ Real-time (แนะนำ) ให้ถอดสาย USB ออกก่อน พิมพ์คำสั่งด้านล่าง แล้วเสียบสาย USB เข้าไปใหม่ จะเห็นข้อความเด้งขึ้นมาทันที
# Follow kernel logs in real-time
# -f : Follow (Keep reading new messages)
# -k : Kernel messages only (For USB, Driver)
sudo journalctl -k -f
ถ้าเห็นข้อความเช่น ch341-uart converter now attached to ttyUSB0 แสดงว่าบอร์ดเชื่อมต่อสำเร็จที่พอร์ต /dev/ttyUSB0
Other Recommendations (แนะนำเพิ่มเติม)
Tree (ดูโครงสร้างไฟล์)
ช่วยให้เห็นภาพรวมของโฟลเดอร์ในรูปแบบต้นไม้ เหมาะสำหรับดูโครงสร้าง ROS2 Package
# Install
sudo apt install tree
# Usage (Show tree structure)
tree
# Show only 2 levels deep
tree -L 2