ทำไมต้องสร้าง 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 กี่อันก็ได้
ถ้าเป็น ภาษา 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
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
...
หมายเหตุ : เรียบเรียงและแก้ไขดัดแปลงจากบทความต้นฉบับด้านล่าง