01 ตุลาคม 2561

สร้าง Workspace ของ ROS



ทำไมต้องสร้าง Workspace ของ ROS

1. การจะเขียนโปรแกรม เราจะต้องเขียน Code

2. การจะแปลงโปรแกรมเป็นของที่เราสั่งให้ Computer Run ได้ จะต้อง Compile Code
ให้อยู่ในรูปของ Executable ซะก่อน

(ซึ่งใน ภาษา C++ จะต้องตระเตรียมข้อมูลการ Compile ด้วยสิ่งที่เรียกว่า Makefile )

3. การจะแปลงโปรแกรมที่เขียนด้วย ROS ให้ออกมาเป็น Executable แบบ ROS จะต้องใช้ Workspace (Environment ต่างๆ “รวมถึง Code ของเราด้วย” ) ของ ROS ในการสร้าง

ก็เลยมีสิ่งที่เรียกว่า Workspace และ ROS ก็ใช้ระบบที่ Build Workspace ที่เรียกชื่อว่า Catkin

Catkin เป็นระบบ Build Code ของ ROS ที่สร้างมาจาก Rosbuild (ก็คือระบบเดิมของ ROS) หน้าที่ของมันคือการเก็บ ชุดคำสั่ง(พวก Macro) ที่จะเอาไว้ใช้กับ CMake


ระบบ Build Code ทำงานยังไง ?


สืบเนื่องจาก ROS จะเก็บ Code เป็น Package (ก็คือ Folder นึง) แล้ว ใน Package จะมี Program ที่เราอยากจะ Compile หรือ build กี่อันก็ได้

โดยปกติ Package จะเก็บ Program, Code เป็นเรื่องๆ เช่น Package คุมกล้อง , Package ขับด้วย Joystick อะไรทำนองนี้

ถ้าเป็น ภาษา C++ ตอนเวลาเราเขียนโปรแกรม ก็จะมี file ที่เป็น ตัว Code และ file ที่เป็น Header (เอาไว้เป็นตัวให้รายละเอียด คร่าวๆ ของ code นั้นๆ) ที่ใช้คู่กัน

ทีนี้ ตอนเวลาเราจะ Build หรือ Compile ก็ต้องมี พิมพ์เขียวของงาน ที่บอกว่า Code อยู่ไหน Header อยู่ไหน และ มันไปใช้ Code ของเจ้าอื่นมาผสมด้วยไหม (เรียกว่าไปใช้ Library) ซึ่งพิมพ์เขียวตัวนี้เราจะเรียกว่า Makefile


การสร้าง Catkin Workspace


เริ่มต้นจากการเปิด Terminal ของ Ubuntu ก่อน โดย คลิกขวา ที่หน้าจอ แล้ว เลือก Open Terminal (หรือกด แป้นลัด Ctrl + Shift + T )

1. สร้างโฟลเดอร์ที่จะเป็น Workspace ในที่นี้จะตั้งชื่อว่า catkin_ws ไว้ที่ home ของ Ubuntu

mkdir catkin_ws

2. สร้างโฟลเดอร์ ที่เก็บ Code ของเรา ชื่อ src (อยู่ใน catkin_ws อีกที)

mkdir catkin_ws/src

3. Initial Workspace (เตรียม Site ก่อสร้าง) เข้าไปที่โฟลเดอร์ src แล้วใช้คำสั่ง catkin_init_workspace

cd catkin_ws/src
catkin_init_workspace


จะมีไฟล์ตั้งต้นของ Workspace เกิดขึ้นมา 1 File ชื่อ CMakeLists.txt


4. ระบุว่านี่คือ Site ก่อสร้าง Code ของเรา ด้วยการ Build Workspace ที่เปล่าๆ 1 ครั้ง ให้เกิด Reference โดยไปที่ โฟลเดอร์ catkin_ws แล้วใช้คำสั่ง catkin_make

cd catkin_ws
catkin_make


จะพบว่ามี โฟลเดอร์ เพิ่มเข้ามา ซึ่งเป็นของที่ประกอบขึ้นมาเป็น Workspace ของเรา


โดย โฟลเดอร์ ที่เกิดขึ้นใน Workspace จะมีดังนี้

src — ไว้เก็บ Code ของเรา **สนใจโฟลเดอร์นี้ก่อน

devel—ไว้เก็บตัวที่บอกว่านี่คือ Workspace ของเรา และ ตัวที่ทำการเชื่อม Code เราที่เพิ่งเขียน กับ ของที่เราได้ตอนที่เรา install ROS เข้าด้วยกัน รวมถึงของที่ ROS Generateให้ เช่น Custom Message ของเรา

build — Code ที่ถูก Build (Compile) เรียบร้อยแล้ว จาก ROS
โดยจริงๆแล้ว เวลาจะใช้งาน จะมีตัวมาเรียก Code จากตรงนี้ให้-ไม่ต้องเข้ามา Run เองในโฟลเดอร์นี้


5. บอกกับ Ubuntu ว่า ROS Workspace ได้ปักหลักตรงนี้แล้ว

จะได้รวบรวมของที่เราเคย Install ไว้แล้ว (ROS ทั้งหมด รวมถึง Catkin) ให้สามารถมาใช้งานร่วมกับตรงนี้ได้

สั่งให้ Ubuntu รู้จัก ROS Workspace ของเรา ผ่านไฟล์ setup.bash  โดยเปิดไฟล์ชื่อ .bashrc ภายใต้โฟลเดอร์ home ขึ้นมาแก้ไข แล้วเพิ่มโค้ด "source ~/catkin_ws/devel/setup.bash" ที่บอกไฟล์กรรมสิทธิ์การก่อสร้างของเรา  ต่อท้ายไฟล์เข้าไป ด้วยคำสั่ง

echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc

หลังจากนี้ “ต้องปิด Terminal และเปิดมันขึ้นมาใหม่” เพื่อให้ระบบโหลดไฟล์ที่เพิ่งแก้ใหม่ ซึ่งตอนเปิด Terminal มันจะทำให้ หรือใช้คำสั่ง source ~/.bashrc  ก็ได้เช่นกัน

source ~/.bashrc



หลังจากนี้ ระบบ ทั้ง Ubuntu และ Catkin ก็คือ ROS ก็จะรู้จักว่า Workspace เรา Code เราอยู่ตรงนี้แล้ว

...

หมายเหตุ : เรียบเรียงและแก้ไขดัดแปลงจากบทความต้นฉบับด้านล่าง