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

  1. Profiles -> Scrolling:

    • ตั้งค่า Scrollback เป็น 50000 lines

    • ทำไมไม่เลือก Infinite? การตั้งแบบไม่จำกัดมีความเสี่ยง หากโปรแกรมทำงานผิดพลาดและพ่นข้อความ Log ออกมาต่อเนื่อง จะทำให้ RAM ของเครื่องเต็มและระบบอาจค้างได้ ค่า 50,000 เพียงพอสำหรับการดู Log ย้อนหลังในการคอมไพล์โปรแกรมส่วนใหญ่

  2. Profiles -> Colors:

    • เลือก Scheme เป็น Ambience (พื้นหลังเทาเข้ม ตัวหนังสือขาว) หรือ Black on Yellow

    • เหตุผล: สีที่มี Contrast ดีจะช่วยลดอาการล้าของสายตาเมื่อต้องจ้อง Log เป็นเวลานาน

  3. 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

ifconfig

ip addr (หรือ ip a)

ดูสถานะการ์ดแลน

ifconfig -a

ip link

ดู Gateway

route -n

ip route

คำศัพท์เครือข่ายที่ควรรู้

Term

Description

Interface

ชื่อของการ์ดเครือข่าย เช่น eth0 (สายแลน), wlan0 (ไวไฟ), lo (Loopback/Localhost)

IP Address

ที่อยู่ของเครื่อง เช่น 192.168.1.50 (สำคัญมากในการตั้งค่า ROS_DOMAIN_ID)

Localhost

127.0.0.1 หมายถึง "เครื่องนี้เอง" ใช้ทดสอบระบบภายในโดยไม่ออกเน็ต

Ping

คำสั่งทดสอบการเชื่อมต่อ เช่น ping 8.8.8.8 (เช็คเน็ต) หรือ ping 192.168.1.x (เช็คหุ่นยนต์)

Nano Cheat Sheet (คู่มือ Nano ฉบับพกพา)

Nano เป็น Text Editor ใน Terminal ที่ใช้งานง่ายที่สุด เหมาะสำหรับการแก้ไขไฟล์ Config เล็กๆ น้อยๆ บนหุ่นยนต์ผ่าน SSH

สัญลักษณ์: ^ หมายถึงปุ่ม Ctrl

Shortcut

Action

^O (Write Out)

บันทึกไฟล์ (Save) (ระบบจะถามชื่อไฟล์ ให้กด Enter ยืนยัน)

^X (Exit)

ออกจากโปรแกรม (ถ้ายังไม่เซฟ ระบบจะถามว่าต้องการเซฟไหม ให้ตอบ Y หรือ N)

^W (Where Is)

ค้นหาคำ (Search)

^K (Cut)

ตัดบรรทัด (ใช้ลบบรรทัดได้ด้วย)

^U (Uncut)

วางบรรทัด (Paste) ที่ตัดไป

^_ (Go To Line)

กระโดดไปบรรทัดที่ระบุ (มีประโยชน์มากเวลา Debug Error ที่แจ้งบรรทัดมา)

System Logs (การตรวจสอบอุปกรณ์ต่อพ่วง)

เมื่อเราเสียบอุปกรณ์ USB เช่น Lidar, กล้อง หรือบอร์ด Microcontroller เราต้องตรวจสอบว่าระบบมองเห็นอุปกรณ์หรือไม่

dmesg vs journalctl

  • dmesg: เป็นคำสั่งดั้งเดิมที่แสดง Log จาก Kernel

  • journalctl: เป็นคำสั่งสมัยใหม่ของระบบ 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