Ubuntu18.04安裝ROS Melodic(詳細填坑)

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.

在當前終端下,按住方向鍵即可控制小海龜移動,截圖如下:
移動小海龜
好了,趕快去試試吧,歡迎留言討論~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章