2. ติดตั้ง Ubuntu กับ ROS 2

เลือกรุ่นให้ตรงกันก่อน

Danger

ROS 2 แต่ละรุ่นใช้ได้กับ Ubuntu รุ่นเดียวเท่านั้น ลง Ubuntu ผิดรุ่นแล้วติดตั้ง ROS 2 ที่ต้องการไม่ได้ ต้องลง Ubuntu ใหม่ทั้งเครื่อง ตรวจข้อนี้ให้แน่ก่อนเริ่ม

ROS 2

Ubuntu

หมดอายุ

Humble ← คู่มือนี้ใช้ตัวนี้

22.04

พ.ค. 2027

Jazzy

24.04

พ.ค. 2029

เลือก Humble เพราะแพ็กเกจสำหรับหุ่นเคลื่อนที่ (Nav2 · slam_toolbox · ไดรเวอร์ LiDAR) นิ่งและมีตัวอย่างให้ดูมากที่สุด

ติดตั้ง Ubuntu 22.04

ใช้ Ubuntu Desktop 22.04 LTS ไม่ใช่รุ่น Server เพราะต้องใช้ RViz ซึ่งต้องมีหน้าจอ

ดาวน์โหลดจาก releases.ubuntu.com/22.04

Tip

ลงลงเครื่องจริง อย่าลงใน VirtualBox หรือ VMware ถ้าตั้งใจจะต่ออุปกรณ์จริง — เครื่องเสมือนมักมีปัญหากับพอร์ต USB และเวลาที่เดินไม่ตรง ซึ่งทำให้ค่า odometry เพี้ยน

ติดตั้ง ROS 2 Humble

รันตามลำดับ แต่ละบล็อกรอให้เสร็จก่อนค่อยทำอันถัดไป

① เปิด repository ที่ Ubuntu ต้องใช้

sudo apt update && sudo apt install -y software-properties-common curl
sudo add-apt-repository universe

② เพิ่มกุญแจและแหล่งของ ROS 2

sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key \
  -o /usr/share/keyrings/ros-archive-keyring.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] \
http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" \
  | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

③ ติดตั้ง

sudo apt update
sudo apt install -y ros-humble-desktop

ros-humble-desktop รวม RViz กับตัวอย่างมาให้แล้ว ใช้เวลาสักพักและกินพื้นที่ราว 3 GB

④ เครื่องมือสำหรับ build

sudo apt install -y python3-colcon-common-extensions python3-rosdep
sudo rosdep init && rosdep update

ตรวจว่าใช้ได้จริง

ติดตั้งเสร็จแล้วยังใช้ไม่ได้ทันที ต้อง source ก่อนทุกครั้งที่เปิด terminal ใหม่

source /opt/ros/humble/setup.bash

แล้วทดสอบด้วยการเปิด 2 terminal

terminal ที่ 1

source /opt/ros/humble/setup.bash
ros2 run demo_nodes_cpp talker

terminal ที่ 2

source /opt/ros/humble/setup.bash
ros2 run demo_nodes_py listener

ถ้าถูกต้อง ฝั่ง talker จะพิมพ์ Publishing: 'Hello World: 1' ไปเรื่อย ๆ และฝั่ง listener จะพิมพ์ I heard: [Hello World: 1] ตามหลัง

Important

ทดสอบนี้พิสูจน์ 2 อย่างพร้อมกัน — ติดตั้งครบ และการสื่อสารระหว่าง node ทำงาน ถ้า talker พิมพ์แต่ listener เงียบ อย่าเพิ่งไปต่อ แก้ตรงนี้ให้ได้ก่อน

ให้ source เองอัตโนมัติ

พิมพ์ source ทุกครั้งน่ารำคาญ ใส่ลง ~/.bashrc ให้ทำเองได้

echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc

Warning

🔴 ข้อนี้เป็นดาบสองคม — พอทำแล้วจะลืมไปเลยว่าต้อง source วันที่ไปใช้เครื่องอื่นที่ไม่ได้ตั้งไว้ จะเจอ ros2: command not found แล้วงงว่าทำไมเครื่องนี้ใช้ไม่ได้ ทั้งที่แค่ยังไม่ได้ source

จำไว้ว่า .bashrc แค่พิมพ์แทนเรา ไม่ได้แปลว่าไม่ต้อง source

ปัญหาที่เจอบ่อย

อาการ

สาเหตุ

ros2: command not found

ยังไม่ได้ source /opt/ros/humble/setup.bash

apt หาแพ็กเกจ ros-humble-desktop ไม่เจอ

Ubuntu ไม่ใช่ 22.04 — ตรวจด้วย lsb_release -a

talker ทำงาน แต่ listener ไม่ได้ยิน

terminal ที่ 2 ยังไม่ได้ source · หรือมีไฟร์วอลล์บล็อก

ติดตั้งช้ามาก

เปลี่ยน mirror ของ Ubuntu เป็นของไทย


ก่อนหน้า: 1. ROS 2 คืออะไร · ต่อไป: 3. node · topic · message