February 17, 2019
มาทำความรู้จักกับ ROS กันคร่าวๆก่อนนะครับ ก็อย่างที่เห็นนะครับมันคือ Robot OS แต่อยากให้มองว่ามัน Framework ที่ใช้ในการเขียนโปรแกรมหุ่นยนต์มากกว่าครับ ที่สำคัญ คือ เป็น Open-Source
โดยเจ้าตัว ROS เนี่ยมันจะรวบรวม Libraries หรือ Tools ที่สำคัญต่างๆไว้มากมายเลยทีเดียว และยังรองรับการเขียนโปรแกรมทั้งในภาษา C++ และ Python อีกด้วยครับ
ทุกอย่างที่เขียนในบทความนี้จะอ้างอิงจาก wiki ของ ROS นะครับ
ก่อนการติดตั้งให้ Check version ของ Ubuntu ให้ตรงกับ version ของ ROS ด้วยนะครับ เพราะ อย่างเช่น ROS Kinetic ที่เราจะติดตั้งกัน ถ้าไปลง Ubuntu ที่สูงกว่า 16.04 ก็จะไม่สามารถติดตั้งได้
1. ตั้งค่า sources.list
เพิ่ม ROS Package
ไปที่ sources.list.d
เพื่อให้ Ubuntu ยอมให้เราเข้าถึง Software จาก packages.ros.org.
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release-sc) main" >/etc/apt/sources.list.d/ros-latest.list'
2. การตั้งค่า Key
เพิ่ม key สำหรับ Downlaod file จาก ROS Server
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
ผลลัพธ์
gpg: requesting key B01FA116 from hkp server ha.pool.sks-keyservers.net
gpg: key B01FA116: public key "ROS Builder <rosbuild@ros.org>" imported
gpg: Total number processed: 1
gpg: imported: 1
ถ้าใครมีปัญหาการเชื่อมต่อ Keyserver ให้ลองเปลี่ยนจาก hkp://ha.pool.sks-keyservers.net:80
มาเป็น hkp://pgp.mit.edu:80 or hkp://keyserver.ubuntu.com:80
3. อัพเดท Debian package
ขั้นตอนนี้ก็จะเป็นการ Update ข้อมูลจาก ROS Server
$ sudo apt-get update
4. ติดตั้ง ROS-Kinetic
โดยเราจะลงตัว desktop-full
ซึ่งจะมี Package พื้นฐานครบทุกตัว แนะนำให้ลงตัวนี้ไปก่อนนะครับ จะได้ไม่มีปัญหาเรื่อง Package
sudo apt-get install ros-kinetic-desktop-full
หรือใครที่กลัวจะเปลืองพื้นที่ ก็จะมีอีกสองตัวล่างนะครับ ซึ่งแต่ละ Package ก็ต่างกันอยู่ลองดูจากตารางได้ครับ ว่าอันไหนเหมาะกับเรา
Package | Description |
---|---|
ros-kinetic-desktop-full | ROS, rqt, rviz, robot-generic libraries, 2D/3D simulators, navigation and 2D/3D perception |
ros-kinetic-desktop | ROS, rqt, rviz, and robot-generic libraries |
ros-kinetic-ros-base | ROS package, build, and communication libraries. No GUI tools |
แล้วก็พอเราใช้ ros ไปเรื่อยๆ เราอาจจะต้องติดตั้ง Package เพิ่ม
เช่น เราอยากจะทำ Stereo Vision โดยใช้ package stereo_image_proc
ซึ่งคำสั่งที่ใช้ในการติดตั้ง คือ
sudo apt-get install ros-kinetic-<package ที่จะลง>
แล้วก็ให้เราเปลี่ยนชื่อ package จาก (_) Underscore เป็น (-) Dash แทนก็จะได้
sudo apt-get install ros-kinetic-stereo-image-proc
5. ตั้งค่า rosdep
ทำไมต้องตั้งค่ามัน เพราะว่าเจ้าตัว rosdep เนี่ยจะช่วยให้เราสามารถติดตั้ง dependencies ต่างๆได้ง่ายขึ้น
sudo rosdep init
rosdep update
6. การตั้งค่า Environment
เป็นการเพิ่มตัวแปร environment ของ ROS ลงใน Bash session โดยเราจะใช้คำสั่ง
source /opt/ros/kinetic/setup.bash
พิเศษสำหรับใครที่ใช้ zshell ให้สั่ง
source /opt/ros/kinetic/setup.zsh
แล้วลองพิมพ์ ros
แล้วก็กด tab สองที เราจะเห็นว่ามี ROS มี command หลายตัวเลย
ทีนี้ให้เปิด Terminal ขึ้นมาใหม่นะครับ แล้วลองพิมพ์ ros
แล้วกด tab tab เห็นอะไรมั้ยครับ ว่ามันไม่มี command ของ ROS แสดงขึ้นมาเลย (Terminal ล่าง) มีแต่พวกคำสั่งที่ใช้ดู version หรืออะไรนิดๆหน่อยๆ นั้นก็เพราะว่า เวลาที่เราเปิด Terminal ใหม่ เราจะต้องเพิ่มตัวแปร environment ของ ROS ลงใน Bash session ใหม่
แล้วลองพิมพ์ ros
แล้วก็กด tab สองที เราจะเห็นว่ามี ROS มี command หลายตัวเลย (Terminal บน)
ใครจะมานั่งพิมพ์ source /opt/ros/kinetic/setup.bash
ทุกครั้งใช่มั้ยครับ ใน ubuntu จะมีไฟล์ .bashrc
อยู่ในเราเพิ่มคำสั่งด้านบนไปที่บรรทัดสุดท้ายของไฟล์ .bashrc
โดยใช้คำสั่ง
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
หรือถ้าเป็น zshell ก็
echo "source /opt/ros/kinetic/setup.zsh" >> ~/.zshrc
แล้วก็สั่ง source
ไฟล์ .bashrc
รอบนึง
source ~/.bashrc
zshell ก็
source ~/.zhrc
หลังจากนั้นให้ลองเปิด ปิด Terminal ใหม่ แล้วทดสอบเหมือนเดิม ถ้ามี command ของ ROS แสดงขึ้นมาก็ถือว่าการติดตั้งทุกอย่างเสร็จแล้ววววววววว เย้ๆๆๆๆๆๆๆ