Ubuntu18.04安裝ROS Melodic(詳細填坑)
最近學習ROS Melodic,網上有一些安裝教程,但是不夠詳細,自己動手做了下,隨手記下整個安裝流程,並詳細記錄細節和遇到的問題,爲後來者節省10來分鐘足矣。本文參考《機器人開發實戰》,作者無爲齋主。
ROS作爲目前最受歡迎的機器人操作系統,它的核心代碼採用C++編寫並經由BSD許可發佈。ROS源於2007年斯坦福大學和機器人技術公司Willow Garage合作項目Switchyard。2012年,ROS團隊從Willlow Garage獨立出來,併成立了一家非營利組織,即開源機器人基金會(Open Source Robotics Foundation, OSRF),ROS自2013年起移交該基金會管理。
自2010年3月推出第一個發行版Box Turtle以來,ROS以每年1~2個版本的節奏已經發行了多個版本。ROS作爲次級操作系統,官方推薦基於Ubuntu操作系統運行,並跟隨Ubuntu發佈節奏發佈,在偶數年發佈維護週期爲5年的長期演進版本,奇數年發佈維護週期爲2年的普通版本。但2019年未發佈新版本。ROS已發佈的歷史版本如表1-1所示。
表1-1 ROS的歷史版本
發行版本 | 發佈日期 | 截止日期 | Ubuntu版本 | 備註 |
---|---|---|---|---|
Melodic Morenia | 2018年5月 | 2023年5月 | 18.04 LTS | LTS |
Lunar Loggerhead | 2017年5月 | 2019年5月 | 17.04 | |
Kinetic Kame | 2016年5月 | 2021年5月 | 16.04 LTS | LTS |
Jade Turtle | 2015年5月 | 2017年5月 | 15.04 | |
Indigo Igloo | 2014年7月 | 2019年4月 | 14.04 LTS | LTS |
Hydro Medusa | 2013年9月 | 2015年5月 | 13.04 | |
Groovy Galapagos | 2012年12月 | 2014年7月 | 12.10 | |
Fuerte Turtle | 2012年4月 | 12.04 LTS | ||
Electric Emys | 2011年8月 | 11.10 | ||
Diamondback | 2011年3月 | 11.04 | ||
C Turtle | 2010年8月 | 10.04 LTS | ||
Box Turtle | 2010年3月 | 9.10 |
文章採用ROS版本爲ROS Melodic,操作系統爲Ubuntu 18.04 LTS 64bit。操作系統安裝教程請參考作者上一篇博文推薦的鏈接。
詳細安裝步驟如下:
1.設置安裝源
爲了安裝ROS Melodic,首先需要在Ubuntu 18.04 LTS上添加安裝源到source.list,方法如下:
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
另外ROS提供了國內的安裝源,添加國內中國科學技術大學的安裝源示例代碼如下:
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'
2.添加祕鑰
添加祕鑰到本地的trusted數據庫中並加以驗證,方法如下:
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
若密鑰服務器hkp://ha.pool.sks-keyservers.net:80無法添加成功,則可以嘗試hkp://pgp.mit.edu:80或者hkp://keyserver.ubuntu.com:80。
在更新之前,需要安裝公鑰,否則無法驗證簽名,這一步也是原書沒有的,需要朋友們注意,命令如下:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654
3.更新列表
更新Ubuntu 18.04 LTS的最新可用軟件包列表:
sudo apt update
4.開始安裝
下面開始安裝ROS,推薦安裝桌面完整版,這樣就可以將ROS、rqt、rviz、機器人通用庫、2D/3D仿真器、導航、2D/3D感知等功能一次性安裝完成。
安裝之前,需要安裝其他依賴庫,一次性安裝如下:
sudo apt install libvtk6-jni libvtk6-java libvtk6-dev libvtk6-qt-dev libpcl-dev
sudo apt install ros-melodic-pcl-conversions ros-melodic-pcl-ros ros-melodic-perception-pcl ros-melodic-perception
有的人之前安裝過某些庫,我的機器之前安裝opencv時裝過vtk7,版本不兼容,識別不到,所以不得已卸載後安裝vtk6,最好把這些庫的安裝都執行一遍。
最後終於開始安裝ROS Melodic,方法如下:
sudo apt install ros-melodic-desktop-full
如果希望安裝特定的ROS程序包,則可以首先查看當前可用的程序包列表,然後選擇自己需要的程序包進行安裝,示例代碼如下:
apt-cache search ros-melodic
sudo apt install ros-melodic-slam-gmapping
5.安裝核心組件rosdep
開始使用ROS之前,還需要安裝rosdep,rosdep是ROS一些核心組件的運行基礎,會在編譯ROS源碼時檢查和安裝程序包依賴。安裝ROS方法如下:
sudo rosdep init
# fix-permission限制權限爲當前用戶
sudo rosdep fix-permissions
# 可能由於網絡原因會失敗,多運行幾次即可
rosdep update
6.配置ROS環境變量
默認情況下,ROS_HOME的路徑爲"~/.ros",該目錄保存着日誌文件和測試結果文件。另外,第一次啓動ROS時,需要進行環境變量配置,命令如下:
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
查看環境變量是否設置正確,命令如下:
env | grep ROS
筆者查看環境變量結果如下:
ROS_ETC_DIR=/opt/ros/melodic/etc/ros
ROS_ROOT=/opt/ros/melodic/share/ros
ROS_MASTER_URI=http://localhost:11311
ROS_VERSION=1
ROS_PYTHON_VERSION=2
ROS_PACKAGE_PATH=/opt/ros/melodic/share
ROSLISP_PACKAGE_DIRECTORIES=
ROS_DISTRO=melodic
至此,ROS的核心程序包安裝完畢。
7.安裝rosinstall
爲了構建和管理開發者自己的ROS工作空間,還需要安裝rosinstall,方法如下:
sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential
成功安裝後,就可以體驗ROS和創建ROS應用了。
8.學習ROS源碼
如果希望基於ROS源代碼進行學習,則可以下載完整的ROS源代碼,方法如下:
sudo apt-get install python-rosdep python-rosinstall-generator python-rosinstall python-wstool build-essential
mkdir ~/ros_catkin_ws/ && cd ~/ros_catkin_ws/
rosinstall_generator desktop_full --rosdistro melodic --deps --tar > melodic-desktop-full.rosinstall
wstool init -j8 src melodic-desktop-full.rosinstall
ROS將使用wstool進行版本管理。如果希望在網絡發生中斷後可以以斷點續傳的方式繼續下載,那麼命令如下:
wstool update -j 8 -t src
至於如何通過ROS源代碼學習ROS的更多實現細節,可以在Ubuntu 18.04 LTS下通過安裝oepngrok進行瀏覽,筆者打算在下一篇文章中介紹。
9.啓動小海龜
turtlesim時ROS系統自帶的小海龜仿真程序。分步驟介紹如下:
1.啓動節點管理器
爲了啓動turtlesim,首先運行roscore啓動ROS的節點管理器,方法及結果如下:
simon@bert:~$ roscore
... logging to /home/simon/.ros/log/6b8e52d4-1597-11ea-ade6-000ec6c8c4f9/roslaunch-bert-2594.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
started roslaunch server http://bert:44267/
ros_comm version 1.14.3
SUMMARY
========
PARAMETERS
* /rosdistro: melodic
* /rosversion: 1.14.3
NODES
auto-starting new master
process[master]: started with pid [2604]
ROS_MASTER_URI=http://bert:11311/
setting /run_id to 6b8e52d4-1597-11ea-ade6-000ec6c8c4f9
process[rosout-1]: started with pid [2615]
started core service [/rosout]
roscore會啓動一個ROS Master、一個ROS參數服務器和一個名爲rosout的日誌節點。ROS Master默認運行於11311端口,如果想指定端口,可參照如下:
roscore -p 11312
2.啓動ros節點
利用Ctrl+Shift+T快捷鍵另外打開一個終端,啓動turtlesim的節點turtlesim_node,命令如下:
simon@bert:~$ rosrun turtlesim turtlesim_node
[ INFO] [1575452194.366400729]: Starting turtlesim with node name /turtlesim
[ INFO] [1575452194.371807393]: Spawning turtle [turtle1] at x=[5.544445], y=[5.544445], theta=[0.000000]
3.使用鍵盤
如果希望小海龜能夠移動,可以啓動turtlesim的鍵盤控制節點turtle_teleop_key,利用Ctrl+Shift+T快捷鍵另外再打開一個終端,輸入命令:
simon@bert:~$ rosrun turtlesim turtle_teleop_key
Reading from keyboard
---------------------------
Use arrow keys to move the turtle.
在當前終端下,按住方向鍵即可控制小海龜移動,截圖如下:
好了,趕快去試試吧,歡迎留言討論~