一、apt方式安裝
安裝
說起ROS,可能大家現在或多或少都有所了解。現如今世界機器人發展之迅猛猶如幾十年前計算機行業一樣,機器人也逐漸進入到千家萬戶,大到工業機器人,小到家用的服務型機器人,各式各樣,為各種人們生活所需的機器人以計算機技術的發展為基礎的機器人也是如雨后春筍。機器人可主要分為硬件層和軟件層兩個大的主要方向。每一種類型的機器人都需要以硬件的實際情況編寫符合用戶需要的功能,漸漸的人們發現,這樣的機器人代碼的復用率很低,大大阻礙了機器人的發展。因此ROS便是為機器人在研發的過程中的代碼復用提供支持.ROS是Robot Operating System(機器人操作系統)的簡稱.ROS開始於2007年,在斯坦福大學人工智能實驗室斯坦福AI機器人項目的支持下開發了ROS。從2010年3月2日發布的第一版ROS Box Turtle至今(截止到2018年8月)已有12個版本。對 ROS 兼容性最好的當屬 Ubuntu 操作系統了。其中三個長期支持版本,並對應着的Ubuntu的三個LTS版本具體如下:
ROS版本 發行時間 截止支持時間 對應的Ubuntu的版本
ROS Indigo 2014年7月22 2019年4月 Ubuntu 14.04
ROS Kinetic 2016年5月23 2021年4月 Ubuntu 16.04
ROS Melodic 2018年5月23 2023年4月 Ubuntu 18.04
更多的請參考 http://wiki.ros.org/Distributions列出的支持計划。
ROS支持的Python,C ++,JAVA等編程語言。因為ROS主要支持Ubuntu的操作系統,因此本教程也是在Ubuntu的系統下安裝的。這里比較建議安裝的Ubuntu系統或者的Windows的雙系統,這樣可以更便於ROS學習接 下來為大家詳細講解ROS的安裝。
(1)配置的Ubuntu的系統
“軟件和更新”界面中,打開后按照下圖進行配置(確保你的"restricted", "universe," 和 "multiverse."前是打上勾的),最好將源設置為中國。
輸入sudo gedit /etc/apt/sources.list
打開sources.list 將一下內容復制到里面,然后保存退出。
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties deb http://mirrors.aliyun.com/ubuntu/ xenial universe deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties deb http://archive.canonical.com/ubuntu xenial partner deb-src http://archive.canonical.com/ubuntu xenial partner deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse
(2)打開終端,快捷鍵是按Ctrl + Alt + T鍵,配置sources.list
設置計算機可以從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'
(3)設置秘鑰
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
設置結果
xxxx@cheetah-Z2-R:~$ sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116 Executing: /tmp/apt-key-gpghome.VQHtUrQqXU/gpg.1.sh --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116 gpg: 密鑰 5523BAEEB01FA116:公鑰 “ROS Builder <rosbuild@ros.org>” 已導入 gpg: 處理的總數:1 gpg: 已導入:1 xxxx@cheetah-Z2-R:~$
以上錯誤以及類似的“E: 無法定位軟件包 ros-melodic-desktop-full”的錯誤,是由於ROS的版本不對應導致的,每個不同的ubuntu系統對應着不同的ROS版本,如果裝錯了就會出現上述問題,在Ubuntu18.04.1環境下可以安裝的是melodic版本的,安裝教程可以參考官網安裝教程,ROS有Melodic、Lunar、Kinetic不同的種類對應着不同的ubuntu版本,
Melodic 主要對應:Ubuntu Artful (17.10), Bionic (18.04 LTS) 以及Debian Stretch
Kinetic 主要對應:Ubuntu Wily (15.10) and Ubuntu Xenial (16.04 LTS),
在安裝的過程中要根據自己的ubuntu系統版本選擇對應的ROS類型進行安裝,具體的ROS類型可以在官網分支類型介紹上查看。
解決方法:
打開軟件與更新->其他軟件,找到ros那個軟件源,選定后點編輯,把發行版從disco 改成bionic (Ubuntu18)或xenial應該就行了。
PS: 最好以對應的方式去安裝,否則后面的麻煩事情很多。
(4)安裝
現在讀者已經將ROS版本庫地址放在代碼列表中,然后更新下軟件包。
重新定向ROS服務器
sudo apt-get update && sudo apt-get upgrade -y
但是如果ubuntu版本對不上的話,可能會報如下錯誤
正在讀取軟件包列表... 完成 E: 倉庫 “http://packages.ros.org/ros/ubuntu disco Release” 沒有 Release 文件。 N: 無法安全地用該源進行更新,所以默認禁用該源。 N: 參見 apt-secure(8) 手冊以了解倉庫創建和用戶配置方面的細節。 .. cheetah@cheetah-Z2-R:~$
然后我們就可以安裝 ROS 啦,但是問題又出現了,ROS kinetic 也有很多版本,比如工業版,基礎版,高級版,豪華版,至尊豪華..
ROS,那就安裝至尊豪華全功能版吧,指令如下
sudo apt-get install ros-kinetic-desktop-full
或其他版本的ros等
sudo apt-get install ros-melodic-desktop-full
但是又報錯
下列軟件包有未滿足的依賴關系:
下列軟件包有未滿足的依賴關系:
ros-melodic-desktop-full : 依賴: ros-melodic-desktop 但是它將不會被安裝
依賴: ros-melodic-perception 但是它將不會被安裝
依賴: ros-melodic-simulators 但是它將不會被安裝
依賴: ros-melodic-urdf-sim-tutorial 但是它將不會被安裝
E: 無法修正錯誤,因為您要求某些軟件包保持現狀,就是它們破壞了軟件包間的依賴關系。
cheetah@cheetah-Z2-R:~$
解決方法為:sudo apt-get install xxx(上面報的缺少的東西)
安裝完成后,可以用下面的命令來查看可使用的包:
apt-cache search ros-kinetic
(5)初始化ROS
在使用ROS之前,必須先安裝和初始化rosdep命令行工具。這樣便可以使你輕松的安裝庫和源代碼時的系統依賴。與此同時,ROS中的一些核心組件也需要rosdep,因此rosdep默認安裝在ROS中。可以使用下面的命令安裝和初始化rosdep。
sudo rosdep init
rosdep updata
(6)初始化環境變量
你已經成功的安裝了ROS系統了。但是為了每次打開新的終端不用執行腳本來配置環境變量,需要在.bashrc中的腳本文件結束時添加腳本,用下面這個命令來完成。
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
要是配置生效,必須使用下面的命令來執行這個文件
source ~/.bashrc
上面兩句非常非常非常重要,很多小伙伴在日常的開發過程中,有的找不到 Package, 找不到node, 很多情況下都是沒有添加source。
(7)安裝rosinstall
rosinstall。是一種常用的命令行工具,使你可以使用一個命令輕松下載ROS包的許多源,輸入下面的命令安裝這個工具:
sudo apt-get install python-rosinstall
到此為止,你已經在電腦上安裝了一個較為完整的ROS系統了。
對了,這里要提醒一下,ros中很多的第三方插件的安裝格式是
$ sudo apt-get install ros-kinetic-...
例如:
$ sudo apt-get install ros-kinetic-turtlebot*
卸載ROS
sudo apt-get purge ros-*
sudo rm -rf /etc/ros
edit ~/.bashrc
二、官方方式安裝
安裝
按照 ROS安裝說明(Ubuntu install of ROS Melodic)完成安裝
注意: 如果你是使用類似apt這樣的軟件管理器來安裝ROS的,那么安裝后這些軟件包將不具備寫入權限,當前系統用戶比如你自己也無法對這些軟件包進行修改編輯。當你的開發涉及到ROS軟件包源碼層面的操作或者在創建一個新的ROS軟件包時,你應該是在一個具備讀寫權限的目錄下工作,就像在你當前系統用戶的home目錄下一樣。
管理環境
安裝ROS期間,你會看到提示說需要 source 多個setup.*sh文件中的某一個,或者甚至提示添加這條'source'命令到你的啟動腳本里面。這些操作是必須的,因為ROS是依賴於某種組合空間的概念,而這種概念就是通過配置腳本環境來實現的。這可以讓針對不同版本或者不同軟件包集的開發更加容易。
如果你在查找和使用ROS軟件包方面遇到了問題,請確保你已經正確配置了腳本環境。一個檢查的好方法是確保你已經設置了像ROS_ROOT和ROS_PACKAGE_PATH這樣的環境變量,可以通過以下命令查看:
$ export | grep ROS
如果發現沒有配置,那這個時候你就需要'source'某些'setup.*sh’文件了。
ROS會幫你自動生成這些‘setup.*sh’文件,通過以下方式生成並保存在不同地方:
- 通過類似apt的軟件包管理器安裝ROS軟件包時會生成setup.*sh文件。
- 在rosbuild workspaces中通過類似rosws的工具生成。
- 在編譯 或 安裝 catkin 軟件包時自動生成。
注意: 在所有教程中你將會經常看到分別針對rosbuild 和 catkin的不同操作說明,這是因為目前有兩種不同的方法可以用來組織和編譯ROS應用程序。一般而言,rosbuild比較簡單也易於使用,而catkin使用了更加標准的CMake規則,所以比較復雜,但是也更加靈活,特別是對於那些想整合外部現有代碼或者想發布自己代碼的人。關於這些如果你想了解得更全面請參閱catkin or rosbuild。
如果你是通過ubuntu上的 apt 工具來安裝ROS的,那么你將會在'/opt/ros/<distro>/'目錄中看到setup.*sh文件,然后你可以執行下面的source命令:
# source /opt/ros/
<distro>/setup.bash
請使用具體的ROS發行版名稱代替<distro>。
比如你安裝的是ROS Indigo,則上述命令改為:
$ source /opt/ros/indigo/setup.bash
在每次打開終端時你都需要先運行上面這條命令后才能運行ros相關的命令,為了避免這一繁瑣過程,你可以事先在.bashrc文件(初學者請注意:該文件是在當前系統用戶的home目錄下。)中添加這條命令,這樣當你每次登錄后系統已經幫你執行這些命令配置好環境。這樣做也可以方便你在同一台計算機上安裝並隨時切換到不同版本的ROS(比如fuerte和groovy)。
此外,你也可以在其它系統平台上相應的ROS安裝目錄下找到這些setup.*sh文件。
創建ROS工作空間
這些操作方法只適用於ROS Groovy及后期版本,對於ROS Fuerte及早期版本請選擇rosbuild。
下面我們開始創建一個catkin 工作空間:
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
即使這個工作空間是空的(在'src'目錄中沒有任何軟件包,只有一個CMakeLists.txt鏈接文件),你依然可以編譯它:
$ cd ~/catkin_ws/
$ catkin_make
catkin_make命令在catkin 工作空間中是一個非常方便的工具。如果你查看一下當前目錄應該能看到'build'和'devel'這兩個文件夾。在'devel'文件夾里面你可以看到幾個setup.*sh文件。source這些文件中的任何一個都可以將當前工作空間設置在ROS工作環境的最頂層,想了解更多請參考catkin文檔。接下來首先source一下新生成的setup.*sh文件:
$ source devel/setup.bash
要想保證工作空間已配置正確需確保ROS_PACKAGE_PATH環境變量包含你的工作空間目錄,采用以下命令查看:
$ echo $ROS_PACKAGE_PATH
/home/<youruser>/catkin_ws/src:/opt/ros/indigo/share:/opt/ros/indigo/stacks
到此你的工作環境已經搭建完成,接下來可以繼續學習 ROS文件系統教程.
三、測試
為了保險,重啟一下,測試測試我們的ROS吧....
ROS是依靠終端來運行的系統。所以還需要打開終端。這里給大家演示一個基本的案例--turtlrsim小海龜。運行下面的命令你便可以看到一個有小海龜的界面。
Roscore
rosrun turtlrsimn turtlesim_node
上面的第二行命令需要從新打開一個終端來輸入,因為你會發現當輸入roscore運行后終端是無法輸入有效的命令來運行的。
如何使用鍵盤是小海龜運動起來呢?就需要輸入下面的命令。
rosrun turtlesim turtle_teleop_key
四、參考文章