本篇文章以安裝ROS Kinetic為例進行講解。
1.設置網絡時間協議(NTP,Network Time Protocol)
在ROS官方安裝項目中雖然沒有包括NTP,但為了縮小PC間通信中的ROS Time的誤差,下面我們設置NTP。設置方法是安裝chrony之后用ntpdate命令指定ntp服務器即可。這樣一來會表示服務器和當前計算機之間的時間誤差,進而會調到服務器的時間。這就是通過給不同的PC指定相同的NTP服務器,將時間誤差縮短到最小的方法。
sudo apt-get install -y chrony ntpdate sudo ntpdate -q ntp.ubuntu.com
ps:有些時候,有些朋友會遇到SLAM導航時控制不了機器人,可能與這個有關。需要做的就是讓主從機時間同步。
2.添加代碼列表
在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'
3.設置公鑰(Key)
為了從ROS存儲庫下載功能包,下面添加公鑰 。作為參考,以下公鑰可以根據服務器的操作發生變更,請參考官方wiki頁面。
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
4.更新軟件包索引
現在用戶已經將ROS版本庫地址放在代碼列表中,我們建議在安裝ROS之前刷新軟件包列表的索引並升級所有當前安裝的Ubuntu軟件包,但這不是必選項。
sudo apt-get update
5.安裝ROS Kinetic Kame
使用以下命令安裝台式機的ROS功能包。這包括ROS、rqt、RViz、機器人相關的庫、仿真和導航等等。
sudo apt-get install ros-kinetic-desktop-full
上面的安裝只包含基本的rqt,但是筆者將安裝所有額外的rqt相關的功能包。用下面的命令安裝所有rqt相關的功能包,可以很方便地使用各種rqt插件。
sudo apt-get install ros-kinetic-rqt*
6.初始化rosdep
在使用ROS之前,必須初始化rosdep。rosdep是一個通過在使用或編譯ros的核心組件時輕松安裝依賴包來增強用戶便利的功能。
sudo rosdep init rosdep update
7.安裝rosinstall
這是安裝ROS的各種功能包的程序。它是被頻繁使用的有用的工具,因此務必要安裝它。
sudo apt-get install python-rosinstall
8.加載環境設置文件
下面加載環境設置文件。里面定義着ROS_ROOT和ROS_PACKAGE_PATH等環境變量。
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc source ~/.bashrc
9.創建並初始化工作目錄
ROS使用一個名為catkin的ROS專用構建系統。為了使用它,用戶需要創建並初始化catkin工作目錄,如下所示。除非用戶創建新的工作目錄,否則此設置只需設置一次。
mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src catkin_init_workspace
如果用戶已經創建了一個catkin工作目錄,下面我們來進行構建。目前,只有src目錄和CMakeLists.txt文件在catkin工作目錄中,但讓我們嘗試使用catkin_make命令來構建吧。
cd ~/catkin_ws/ catkin_make
當用戶構建沒有問題時,運行ls命令。除了自己創建的src目錄之外,還出現了一個新的build和devel目錄。catkin的構建系統的相關文件保存在build目錄中,構建后的可執行文件保存在devel目錄中。
ls build devel src
最后,我們加載與catkin構建系統相關的環境文件。
echo “source ~/catkin_ws/devel/setup.bash”>> ~/.bashrc source .bashrc
10.測試安裝結果
所有ROS安裝已完成。要測試它是否正確安裝,請關閉所有終端窗口並運行一個新的終端窗口。現在通過輸入以下命令來運行roscore。
roscore
如果運行之后像下面沒有出現錯誤,則說明成功安裝。退出是[Ctrl+c]。
... logging to /home/pyo/.ros/log/9e24585a-60c8-11e7-b113-08d40c80c500/roslaunch-pyo-5207.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://localhost:38345/ ros_comm version 1.12.7 SUMMARY ======== PARAMETERS * /rosdistro: kinetic * /rosversion: 1.12.7 NODES auto-starting new master process[master]: started with pid [5218] ROS_MASTER_URI=http://localhost:11311/ setting /run_id to 9e24585a-60c8-11e7-b113-08d40c80c500 process[rosout-1]: started with pid [5231] started core service [/rosout]