7. การสร้าง Workspace, Package และ Node
ในบทนี้คุณจะได้เรียนรู้วิธีสร้างพื้นที่ทำงานของ ROS 2 (Workspace) ซึ่งเป็นจุดเริ่มต้นของการพัฒนาแพ็กเกจ (Package) ที่จะใช้เก็บ Node และไฟล์ที่เกี่ยวข้อง จากนั้นเราจะทำการสร้าง Node ซึ่งเป็นหน่วยประมวลผลพื้นฐานของ ROS 2 เพื่อให้สามารถทำงานและสื่อสารกับระบบอื่นๆ ได้
7.1. การสร้าง Workspace
เปิด Terminal รันคำสั่งดังนี้:
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws
colcon build
ใช้คำสั่ง ls เพื่อแสดงโฟลเดอร์
ls
7.2. การสร้าง Package (Python)
รันคำสั่งดังนี้(เปิดTerminal ใหม่ หรือ ใช้Terminal เดิมก็ได้ ) :
cd ~/ros2_ws/src
ros2 pkg create --build-type ament_python --license Apache-2.0 my_package
cd ~/ros2_ws
colcon build
หากต้องการสร้างแพ็กเกจ C++ ให้ใช้คำสั่งนี้แทน :
ros2 pkg create --build-type ament_cmake --license Apache-2.0 my_package
ภาพตัวอย่างการใช้คำสั่ง สร้าง Package (ชื่อ my_package)
7.3. การสร้าง Node ใน ROS2 ด้วย Python
7.3.1. สร้างไฟล์ Python Node
รันคำสั่งดังนี้(เปิดTerminal ใหม่ หรือ ใช้Terminal เดิมก็ได้ ) :
cd ~/ros2_ws/src/my_package/my_package
touch my_node.py
และตรวจสอบไฟล์ ด้วยคำสั่ง
ls
จะเห็นได้ว่ามีไฟล์ my_node.py ปรากฎขึ้นมาดังภาพ
7.3.2. เขียนโค้ดสำหรับ Python Node
เข้าไปแก้ไขไฟล์ด้วยคำสั่ง:
gedit ~/ros2_ws/src/my_package/my_package/my_node.py
เขียนโค้ด Python ลงไป หลังจากนั้นกด Save
โค้ด my_node.py
import rclpy
from rclpy.node import Node
class MyNode(Node):
def __init__(self):
super().__init__('my_node')
self.get_logger().info("Hello, ROS2!")
def main():
rclpy.init()
node = MyNode()
rclpy.spin(node)
node.destroy_node()
rclpy.shutdown()
if __name__ == '__main__':
main()
7.3.3. การตั้งค่า setup.py สำหรับ Python Package ใน ROS2
หลังจากที่เราสร้าง Node ใน Python แล้ว จำเป็นต้อง ตั้งค่าไฟล์ setup.py เพื่อให้ ROS 2 สามารถรัน Node ได้อย่างถูกต้อง แก้ไขไฟล์ setup.py ด้วยคำสั่ง:
gedit ~/ros2_ws/src/my_package/setup.py
เพิ่ม 'my_node = my_package.my_node:main' จากนั้นกด Save
'my_node = my_package.my_node:main'
หลังจากสร้างไฟล์ Python เสร็จสิ้นแล้ว ขั้นตอนต่อไปคือ การคอมไพล์ด้วยคำสั่ง colcon build
cd ~/ros2_ws
colcon build
7.4. วิธีการรัน Node
หลังจากได้สร้าง Node ในหัวข้อ 6.3 การสร้าง Node ใน ROS2 ด้วย Python เสร็จสิ้น ขั้นตอนต่อไปนี้คือการรัน Node ที่เราสร้างขึ้น
7.4.1. เปิด Terminal รันคำสั่ง
แก้ไขไฟล์ ~/.bashrc ดังนี้
gedit ~/.bashrc
แก้ไขไฟล์ ~/.bashrc ดังนี้
source ~/ros2_ws/install/setup.bash
เพิ่มบรรทัดนี้ที่ด้านล่างของไฟล์ แล้วกด Save จากนั้นปิด Terminal แล้วเปิด Terminal ใหม่
7.4.2. รันโหนด
ros2 run my_package my_node
ข้อความ [INFO] ... [my_node]: Hello, ROS 2! แสดงว่าการทำงานของโหนดสำเร็จ และโหนดได้ทำการพิมพ์ข้อความผ่าน get_logger().info("Hello, ROS 2!") สรุปคำสั่งและคำอธิบาย
คำสั่ง |
ตัวอย่าง |
|---|---|
|
สร้างโฟลเดอร์ Workspace ros2_ws และโฟลเดอร์ src/ สำหรับเก็บแพ็กเกจ |
|
เปลี่ยนไปยังโฟลเดอร์ Workspace ros2_ws |
|
เปลี่ยนไปยังโฟลเดอร์ src/ ภายใน Workspace |
|
คอมไพล์ Workspace และแพ็กเกจทั้งหมดที่อยู่ใน src/ โดยใช้ colcon build |
|
แสดงรายการไฟล์และโฟลเดอร์ในไดเรกทอรีปัจจุบัน |
|
สร้างแพ็กเกจใหม่ชื่อ my_package โดยใช้ ament_python และกำหนดไลเซนส์เป็น Apache-2.0 |
|
เปลี่ยนไปยังไดเรกทอรี my_package/my_package ซึ่งเป็นที่เก็บโค้ดของแพ็กเกจ |
|
สร้างไฟล์ my_node.py ซึ่งเป็นโค้ดสำหรับรันโหนด |
|
เปิดไฟล์ my_node.py ด้วย gedit เพื่อแก้ไขโค้ด |
|
เปิดไฟล์ setup.py ด้วย gedit เพื่อกำหนดค่าแพ็กเกจ |
|
โหลดค่าต่าง ๆ สภาพแวดล้อม ROS2 เพื่อให้ระบบรู้จักแพ็กเกจ |
|
รันโหนด my_node ที่อยู่ในแพ็กเกจ my_package |