Ubuntu 16.04 安装 ROS
Robot Operating System (ROS) 是一個得到廣泛應(yīng)用機(jī)器人系統(tǒng)的軟件框架,它包含了一系列的軟件庫和工具用于構(gòu)建機(jī)器人應(yīng)用。從驅(qū)動到最先進(jìn)的算法,以及強(qiáng)大的開發(fā)者工具,ROS 包含了開發(fā)一個機(jī)器人項(xiàng)目所需要的所有東西。且它們都是開源的。
ROS 雖然名為機(jī)器人操作系統(tǒng),但它與我們一般概念中的操作系統(tǒng),如 Windows,Linux,iOS 和 Android 這些。Windows,Linux,iOS 和 Android 這些操作系統(tǒng)為我們管理計算機(jī)的物理硬件資源,如 CPU、內(nèi)存、磁盤、網(wǎng)絡(luò)及外設(shè),提供如進(jìn)程、線程和文件這樣的抽象,并提供如讀文件、寫文件、創(chuàng)建進(jìn)程、創(chuàng)建線程及啟動線程這樣的操作。ROS 所工作的層級并沒有這么低,它基于一般概念中的操作系統(tǒng)來運(yùn)行,官方推薦基于 Ubuntu Linux 運(yùn)行,并在 Ubuntu Linux 操作系統(tǒng)提供的抽象和操作的基礎(chǔ)之上,提供了更高層的抽象,如節(jié)點(diǎn)、服務(wù)、消息、主題等,以及更高層的操作,如主題的發(fā)布、主題的訂閱、服務(wù)的查詢與連接等操作。同時 ROS 還提供開發(fā)機(jī)器人項(xiàng)目所需的工具和功能庫。
ROS 發(fā)行版是一個版本標(biāo)識的 ROS 包集合,這些與 Linux 發(fā)行版(如 Ubuntu)類似。ROS 發(fā)行版的目的是讓開發(fā)者可以基于一個相對穩(wěn)定的代碼庫來工作,直到他們可以平穩(wěn)地向前演進(jìn)。一旦發(fā)行版發(fā)布,官方就會限制對其的改動,而僅僅提供對于核心包的 bug fixes 和非破壞性的增強(qiáng)。
當(dāng)前(2018-01-28) ROS 系統(tǒng)已經(jīng)發(fā)布了多個版本。ROS 最新的一些版本如下:
| ROS Lunar Loggerhead | May 23rd, 2017 | May, 2019 |
| ROS Kinetic Kame | May 23rd, 2016 | LTS,April, 2021 (Xenial EOL) |
| ROS Jade Turtle | May 23rd, 2015 | May, 2017 |
| ROS Indigo Igloo | July 22nd, 2014 | LTS,April, 2019(Trusty EOL) |
| ROS Hydro Medusa | September 4th, 2013 | May, 2015 |
ROS 基本上保持每年一個新版本,每兩年一個長期發(fā)行版的發(fā)布節(jié)奏。關(guān)于 ROS 版本發(fā)布的更多內(nèi)容,如更多的發(fā)行版的介紹,發(fā)布的計劃等,可以參考 ROS 官方站點(diǎn)的 Distributions 主頁。
目前官方推薦使用最近的一個長期支持版本,即 ROS Kinetic Kame,求新的同時兼顧穩(wěn)定性無疑應(yīng)該采用這一版本,如果想要嘗試最新的功能特性則可以使用最新的發(fā)行版 ROS Lunar Loggerhead。
ROS 的安裝步驟如下。
配置 Ubuntu 倉庫
配置 Ubuntu 倉庫,以允許 “restricted”,”universe” 和 “multiverse”。打開 新立得包管理器,如下圖:
選擇 設(shè)置 -> 軟件庫(R),彈出如下對話框:
打開 “Ubuntu 軟件” Tab 頁,勾選 “restricted”,”universe” 和 “multiverse” 等選項(xiàng),如上圖所示。通常情況下,這些選項(xiàng)都是默認(rèn)選中的,因此這一步一般不會遇到什么問題。
設(shè)置 sources.list
為 Ubuntu 的包管理器增加源,設(shè)置計算機(jī)接受來自于 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'這一步會根據(jù) Ubuntu Linux 發(fā)行版本的不同,添加不同的源。Ubuntu 的版本通過 lsb_release -sc 獲得。
一旦添加了正確的軟件庫,操作系統(tǒng)就知道去哪里下載程序,并根據(jù)命令自動安裝軟件。
設(shè)置密鑰
這一步是為了確認(rèn)源代碼是正確的,并且沒有人在未經(jīng)所有者授權(quán)的情況下,修改任何程序代碼。通常情況下,當(dāng)添加完軟件庫時,已經(jīng)添加了軟件庫的密鑰,并將其添加到操作系統(tǒng)的可信任列表中。
設(shè)置密鑰的命令如下:
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116如果在連接密鑰服務(wù)器時遇到了問題,可以嘗試在上面的命令中用 hkp://pgp.mit.edu:80 或 hkp://keyserver.ubuntu.com:80 來替換。
安裝
首先,需要確保包管理器的索引已經(jīng)更新至最新:
sudo apt-get updateROS 中有非常多不同的庫和工具。官方提供了四種默認(rèn)的配置來安裝 ROS。也可以獨(dú)立地安裝 ROS 包。
桌面完整安裝(推薦采用):ROS,rqt,?rviz,機(jī)器人通用庫,2D/3D 仿真器,導(dǎo)航及 2D/3D 感知
$ sudo apt-get install ros-kinetic-desktop-full 正在讀取軟件包列表... 完成 正在分析軟件包的依賴關(guān)系樹 正在讀取狀態(tài)信息... 完成 . . . . . . 將會同時安裝下列軟件:binfmt-support blt cpp-5 docutils-common docutils-doc fltk1.3-doc fluid fonts-lyx freeglut3 freeglut3-dev g++-5g++-5-multilib gazebo7 gazebo7-common gazebo7-plugin-base gcc-5 gcc-5-base gcc-5-base:i386 gcc-5-multilibgfortran gfortran-5 hddtemp hdf5-helpers lib32asan2 lib32atomic1 lib32cilkrts5 lib32gcc-5-dev lib32gomp1lib32itm1 lib32mpx0 lib32quadmath0 lib32stdc++-5-dev lib32stdc++6 lib32ubsan0 libaec-dev libaec0 libapr1-devlibaprutil1-dev libarmadillo6 libarpack2 libasan2 libassimp-dev libassimp3v5 libatomic1 libavcodec-devlibavformat-dev libavutil-dev libblas-dev libboost-all-dev libboost-atomic-dev libboost-atomic1.58-devlibboost-atomic1.58.0 libboost-chrono-dev libboost-chrono1.58-dev libboost-chrono1.58.0 libboost-context-devlibboost-context1.58-dev libboost-context1.58.0 libboost-coroutine-dev libboost-coroutine1.58-devlibboost-coroutine1.58.0 libboost-date-time-dev libboost-date-time1.58-dev libboost-dev libboost-exception-devlibboost-exception1.58-dev libboost-filesystem-dev libboost-filesystem1.58-dev libboost-graph-devlibboost-graph-parallel-dev libboost-graph-parallel1.58-dev libboost-graph-parallel1.58.0libboost-graph1.58-dev libboost-graph1.58.0 libboost-iostreams-dev libboost-iostreams1.58-devlibboost-locale-dev libboost-locale1.58-dev libboost-locale1.58.0 libboost-log-dev libboost-log1.58-devlibboost-log1.58.0 libboost-math-dev libboost-math1.58-dev libboost-math1.58.0 libboost-mpi-devlibboost-mpi-python-dev libboost-mpi-python1.58-dev libboost-mpi-python1.58.0 libboost-mpi1.58-devlibboost-mpi1.58.0 libboost-program-options-dev libboost-program-options1.58-dev libboost-python-devlibboost-python1.58-dev libboost-python1.58.0 libboost-random-dev libboost-random1.58-dev libboost-random1.58.0libboost-regex-dev libboost-regex1.58-dev libboost-regex1.58.0 libboost-serialization-devlibboost-serialization1.58-dev libboost-serialization1.58.0 libboost-signals-dev libboost-signals1.58-devlibboost-signals1.58.0 libboost-system-dev libboost-system1.58-dev libboost-test-dev libboost-test1.58-devlibboost-test1.58.0 libboost-thread-dev libboost-thread1.58-dev libboost-timer-dev libboost-timer1.58-devlibboost-timer1.58.0 libboost-tools-dev libboost-wave-dev libboost-wave1.58-dev libboost-wave1.58.0libboost1.58-dev libboost1.58-tools-dev libbulletcollision2.83.6 libbulletdynamics2.83.6 libcc1-0 libcilkrts5libcollada-dom2.4-dp-dev libcollada-dom2.4-dp0 libconsole-bridge-dev libconsole-bridge0.2v5libcurl4-openssl-dev libdap-dev libdap17v5 libdapclient6v5 libdapserver7v5 libeigen3-dev libepsilon1libflann-dev libflann1.8 libfltk-cairo1.3 libfltk-forms1.3 libfltk-gl1.3 libfltk-images1.3 libfltk1.3libfltk1.3-dev libfreeimage-dev libfreeimage3 libfreexl1 libgazebo7 libgazebo7-dev libgcc-5-dev libgdal-devlibgdal1i libgeos-3.5.0 libgeos-c1v5 libgeos-dev libgfortran-5-dev libgfortran3 libgif-dev libgl2ps-devlibgl2ps0 libglade2-0 libgomp1 libgtest-dev libgts-0.7-5 libgts-bin libgts-dev libhdf4-0-alt libhdf4-alt-devlibhdf5-10 libhdf5-cpp-11 libhdf5-dev libhdf5-mpi-dev libhdf5-openmpi-10 libhdf5-openmpi-dev libhwloc-devlibhwloc-plugins libhwloc5 libibverbs-dev libibverbs1 libignition-math2 libignition-math2-dev libinput-binlibinput-dev libinput10 libitm1 libjasper-dev libjbig-dev libjs-jquery-ui libjsoncpp-dev libjxr0 libkmlbase1libkmldom1 libkmlengine1 liblapack-dev libldap2-dev liblinearmath2.83.6 liblog4cxx-dev liblog4cxx10-devliblog4cxx10v5 liblsan0 liblz4-dev liblzma-dev libminizip1 libmpx0 libmysqlclient-dev libmysqlclient20libnetcdf-c++4 libnetcdf-cxx-legacy-dev libnetcdf-dev libnetcdf11 libnuma-dev libodbc1 libogdi3.2 libogg-devlibogre-1.9-dev libogre-1.9.0v5 libopenjp2-7 libopenmpi-dev libopenmpi1.10 libopenni-devlibopenni-sensor-pointclouds0 libopenni0 libpcl-apps1.7 libpcl-common1.7 libpcl-dev libpcl-features1.7libpcl-filters1.7 libpcl-io1.7 libpcl-kdtree1.7 libpcl-keypoints1.7 libpcl-octree1.7 libpcl-outofcore1.7libpcl-people1.7 libpcl-recognition1.7 libpcl-registration1.7 libpcl-sample-consensus1.7 libpcl-search1.7libpcl-segmentation1.7 libpcl-surface1.7 libpcl-tracking1.7 libpcl-visualization1.7 libpcl1.7 libpoco-devlibpococrypto9v5 libpocodata9v5 libpocofoundation9v5 libpocomysql9v5 libpoconet9v5 libpoconetssl9v5libpocoodbc9v5 libpocosqlite9v5 libpocoutil9v5 libpocoxml9v5 libpocozip9v5 libpq-dev libproj-dev libproj9libprotoc-dev libprotoc9v5 libpyside-py3-2.0 libpyside2-dev libpyside2.0 libqhull-dev libqhull7 libqt4-devlibqt4-dev-bin libqt4-help libqt4-opengl-dev libqt4-scripttools libqt4-test libqt5clucene5 libqt5concurrent5libqt5core5a libqt5dbus5 libqt5designer5 libqt5designercomponents5 libqt5gui5 libqt5help5libqt5multimediaquick-p5 libqt5network5 libqt5opengl5 libqt5opengl5-dev libqt5printsupport5libqt5quickparticles5 libqt5scripttools5 libqt5sql5 libqt5svg5-dev libqt5test5 libqt5webkit5-dev libqt5widgets5libqt5x11extras5-dev libqt5xml5 libqt5xmlpatterns5 libqt5xmlpatterns5-dev libqt5xmlpatterns5-private-devlibqtwebkit-dev libquadmath0 libsdformat4 libsdformat4-dev libshiboken-py3-2.0 libshiboken2-dev libshiboken2.0libsimbody-dev libsimbody3.5v5 libspatialite-dev libspatialite7 libspnav0 libstdc++-5-dev libstdc++6libstdc++6:i386 libsuperlu4 libswresample-dev libswscale-dev libsz2 libtar-dev libtar0 libtbb-dev libtheora-devlibtiff5-dev libtiffxx5 libtinyxml-dev libtinyxml2-2v5 libtinyxml2-dev libtsan0 libubsan0 liburdfdom-devliburdfdom-headers-dev liburdfdom-model-state0.4 liburdfdom-model0.4 liburdfdom-sensor0.4 liburdfdom-toolsliburdfdom-world0.4 liburiparser1 libusb-1.0-0-dev libusb-1.0-doc libuuid1 libvtk-java libvtk5.10 libvtk6-devlibvtk6-java libvtk6-qt-dev libvtk6.2 libvtk6.2-qt libwacom-bin libwacom-common libwacom2 libwebp-devlibwebpdemux1 libx32asan2 libx32atomic1 libx32cilkrts5 libx32gcc-5-dev libx32gomp1 libx32itm1 libx32quadmath0libx32stdc++-5-dev libx32stdc++6 libx32ubsan0 libxerces-c-dev libxerces-c3.1 libxmu-dev libxmu-headerslibyaml-cpp-dev libzzip-0-13 mpi-default-bin mpi-default-dev ocl-icd-libopencl1 odbcinst odbcinst1debian2openmpi-bin openmpi-common openni-utils proj-bin proj-data pyqt5-dev python-attr python-autobahnpython-catkin-pkg python-catkin-pkg-modules python-chardet python-concurrent.futures python-cyclerpython-defusedxml python-docutils python-ecdsa python-empy python-glade2 python-gobject-2 python-gtk2python-imaging python-lz4 python-matplotlib python-matplotlib-data python-mpi4py python-msgpackpython-netifaces python-nose python-opengl python-pam python-paramiko python-pil python-pyasn1-modulespython-pydot python-pygments python-pyqt5 python-pyqt5.qtopengl python-pyqt5.qtsvg python-pyqt5.qtwebkitpython-pyside2 python-pyside2.qtconcurrent python-pyside2.qtcore python-pyside2.qtgui python-pyside2.qthelppython-pyside2.qtnetwork python-pyside2.qtprintsupport python-pyside2.qtqml python-pyside2.qtquickpython-pyside2.qtquickwidgets python-pyside2.qtscript python-pyside2.qtsql python-pyside2.qtsvgpython-pyside2.qttest python-pyside2.qtuitools python-pyside2.qtwebkit python-pyside2.qtwebkitwidgetspython-pyside2.qtwidgets python-pyside2.qtx11extras python-pyside2.qtxml python-roman python-rosdeppython-rosdistro python-rosdistro-modules python-rospkg python-rospkg-modules python-serialpython-service-identity python-sip python-sip-dev python-snappy python-tk python-trollius python-twistedpython-twisted-bin python-twisted-core python-txaio python-vtk6 python-wxgtk3.0 python-wxtools python-wxversionpython-zope.interface qt4-linguist-tools qt4-qmake qt5-qmake qtbase5-dev qtbase5-dev-tools qtbase5-private-devqtdeclarative5-dev qtdeclarative5-private-dev qtmultimedia5-dev qtscript5-dev qtscript5-private-devqttools5-dev qttools5-dev-tools qttools5-private-dev ros-kinetic-actionlib ros-kinetic-actionlib-msgsros-kinetic-actionlib-tutorials ros-kinetic-angles ros-kinetic-bond ros-kinetic-bond-core ros-kinetic-bondcppros-kinetic-bondpy ros-kinetic-camera-calibration ros-kinetic-camera-calibration-parsersros-kinetic-camera-info-manager ros-kinetic-catkin ros-kinetic-class-loader ros-kinetic-cmake-modulesros-kinetic-collada-parser ros-kinetic-collada-urdf ros-kinetic-common-msgs ros-kinetic-common-tutorialsros-kinetic-compressed-depth-image-transport ros-kinetic-compressed-image-transport ros-kinetic-control-msgsros-kinetic-cpp-common ros-kinetic-cv-bridge ros-kinetic-depth-image-proc ros-kinetic-desktopros-kinetic-diagnostic-aggregator ros-kinetic-diagnostic-analysis ros-kinetic-diagnostic-common-diagnosticsros-kinetic-diagnostic-msgs ros-kinetic-diagnostic-updater ros-kinetic-diagnosticsros-kinetic-dynamic-reconfigure ros-kinetic-eigen-conversions ros-kinetic-eigen-stl-containersros-kinetic-executive-smach ros-kinetic-filters ros-kinetic-gazebo-dev ros-kinetic-gazebo-msgsros-kinetic-gazebo-plugins ros-kinetic-gazebo-ros ros-kinetic-gazebo-ros-pkgs ros-kinetic-gencppros-kinetic-geneus ros-kinetic-genlisp ros-kinetic-genmsg ros-kinetic-gennodejs ros-kinetic-genpyros-kinetic-geometric-shapes ros-kinetic-geometry ros-kinetic-geometry-msgs ros-kinetic-geometry-tutorialsros-kinetic-gl-dependency ros-kinetic-image-common ros-kinetic-image-geometry ros-kinetic-image-pipelineros-kinetic-image-proc ros-kinetic-image-publisher ros-kinetic-image-rotate ros-kinetic-image-transportros-kinetic-image-transport-plugins ros-kinetic-image-view ros-kinetic-interactive-marker-tutorialsros-kinetic-interactive-markers ros-kinetic-joint-state-publisher ros-kinetic-kdl-conversionsros-kinetic-kdl-parser ros-kinetic-laser-assembler ros-kinetic-laser-filters ros-kinetic-laser-geometryros-kinetic-laser-pipeline ros-kinetic-librviz-tutorial ros-kinetic-map-msgs ros-kinetic-media-exportros-kinetic-message-filters ros-kinetic-message-generation ros-kinetic-message-runtime ros-kinetic-mkros-kinetic-nav-msgs ros-kinetic-nodelet ros-kinetic-nodelet-core ros-kinetic-nodelet-topic-toolsros-kinetic-nodelet-tutorial-math ros-kinetic-octomap ros-kinetic-opencv3 ros-kinetic-orocos-kdlros-kinetic-pcl-conversions ros-kinetic-pcl-msgs ros-kinetic-pcl-ros ros-kinetic-perceptionros-kinetic-perception-pcl ros-kinetic-pluginlib ros-kinetic-pluginlib-tutorials ros-kinetic-polled-cameraros-kinetic-python-orocos-kdl ros-kinetic-python-qt-binding ros-kinetic-qt-dotgraph ros-kinetic-qt-guiros-kinetic-qt-gui-cpp ros-kinetic-qt-gui-py-common ros-kinetic-qwt-dependency ros-kinetic-random-numbersros-kinetic-resource-retriever ros-kinetic-robot ros-kinetic-robot-model ros-kinetic-robot-state-publisherros-kinetic-ros ros-kinetic-ros-base ros-kinetic-ros-comm ros-kinetic-ros-core ros-kinetic-ros-tutorialsros-kinetic-rosbag ros-kinetic-rosbag-migration-rule ros-kinetic-rosbag-storage ros-kinetic-rosbashros-kinetic-rosboost-cfg ros-kinetic-rosbuild ros-kinetic-rosclean ros-kinetic-rosconsoleros-kinetic-rosconsole-bridge ros-kinetic-roscpp ros-kinetic-roscpp-core ros-kinetic-roscpp-serializationros-kinetic-roscpp-traits ros-kinetic-roscpp-tutorials ros-kinetic-roscreate ros-kinetic-rosgraphros-kinetic-rosgraph-msgs ros-kinetic-roslang ros-kinetic-roslaunch ros-kinetic-roslib ros-kinetic-roslintros-kinetic-roslisp ros-kinetic-roslz4 ros-kinetic-rosmake ros-kinetic-rosmaster ros-kinetic-rosmsgros-kinetic-rosnode ros-kinetic-rosout ros-kinetic-rospack ros-kinetic-rosparam ros-kinetic-rospyros-kinetic-rospy-tutorials ros-kinetic-rosservice ros-kinetic-rostest ros-kinetic-rostime ros-kinetic-rostopicros-kinetic-rosunit ros-kinetic-roswtf ros-kinetic-rqt-action ros-kinetic-rqt-bag ros-kinetic-rqt-bag-pluginsros-kinetic-rqt-common-plugins ros-kinetic-rqt-console ros-kinetic-rqt-dep ros-kinetic-rqt-graphros-kinetic-rqt-gui ros-kinetic-rqt-gui-cpp ros-kinetic-rqt-gui-py ros-kinetic-rqt-image-viewros-kinetic-rqt-launch ros-kinetic-rqt-logger-level ros-kinetic-rqt-moveit ros-kinetic-rqt-msgros-kinetic-rqt-nav-view ros-kinetic-rqt-plot ros-kinetic-rqt-pose-view ros-kinetic-rqt-publisherros-kinetic-rqt-py-common ros-kinetic-rqt-py-console ros-kinetic-rqt-reconfigureros-kinetic-rqt-robot-dashboard ros-kinetic-rqt-robot-monitor ros-kinetic-rqt-robot-pluginsros-kinetic-rqt-robot-steering ros-kinetic-rqt-runtime-monitor ros-kinetic-rqt-rvizros-kinetic-rqt-service-caller ros-kinetic-rqt-shell ros-kinetic-rqt-srv ros-kinetic-rqt-tf-treeros-kinetic-rqt-top ros-kinetic-rqt-topic ros-kinetic-rqt-web ros-kinetic-rvizros-kinetic-rviz-plugin-tutorials ros-kinetic-rviz-python-tutorial ros-kinetic-self-testros-kinetic-sensor-msgs ros-kinetic-shape-msgs ros-kinetic-simulators ros-kinetic-smach ros-kinetic-smach-msgsros-kinetic-smach-ros ros-kinetic-smclib ros-kinetic-stage ros-kinetic-stage-ros ros-kinetic-std-msgsros-kinetic-std-srvs ros-kinetic-stereo-image-proc ros-kinetic-stereo-msgs ros-kinetic-tfros-kinetic-tf-conversions ros-kinetic-tf2 ros-kinetic-tf2-eigen ros-kinetic-tf2-geometry-msgsros-kinetic-tf2-kdl ros-kinetic-tf2-msgs ros-kinetic-tf2-py ros-kinetic-tf2-rosros-kinetic-theora-image-transport ros-kinetic-topic-tools ros-kinetic-trajectory-msgsros-kinetic-turtle-actionlib ros-kinetic-turtle-tf ros-kinetic-turtle-tf2 ros-kinetic-turtlesimros-kinetic-urdf ros-kinetic-urdf-parser-plugin ros-kinetic-urdf-tutorial ros-kinetic-vision-opencvros-kinetic-visualization-marker-tutorials ros-kinetic-visualization-msgs ros-kinetic-visualization-tutorialsros-kinetic-viz ros-kinetic-webkit-dependency ros-kinetic-xacro ros-kinetic-xmlrpcpp sbcl sdformat-sdfshiboken2 sip-dev tango-icon-theme tcl-dev tcl-vtk6 tcl8.6-dev tk-dev tk8.6-blt2.5 tk8.6-dev ttf-bitstream-verattf-liberation unixodbc unixodbc-dev uuid-dev vtk6 建議安裝:blt-demo gcc-5-locales gcc-5-doc libstdc++6-5-dbg lib32stdc++6-5-dbg libx32stdc++6-5-dbg gazebo7-doclibgomp1-dbg libitm1-dbg libatomic1-dbg libasan2-dbg liblsan0-dbg libtsan0-dbg libubsan0-dbg libcilkrts5-dbglibmpx0-dbg libquadmath0-dbg gfortran-multilib gfortran-doc gfortran-5-multilib gfortran-5-doc libgfortran3-dbgksensors liblapack-doc-man liblapack-doc libboost-doc libboost1.58-doc gccxml libmpfrc++-dev libntl-dev doxygendefault-jdk fop libbullet2-dev libbullet2 libcurl4-doc libcurl3-dbg libidn11-dev librtmp-dev libeigen3-doclibmrpt-dev libgdal-doc libgts-doc libhdf4-doc hdf4-tools libnetcdf4 libhdf5-doc libhwloc-contrib-pluginslibjs-jquery-ui-docs liblog4cxx-doc liblzma-doc netcdf-bin netcdf-doc libmyodbc odbc-postgresql tdsodbcunixodbc-bin ogdi-bin ogre-1.9-doc libogre-1.9.0v5-dbg opennmpi-doc openni-doc libpcl-doc libpoco-doclibpococrypto9v5-dbg libpocodata9v5-dbg libpocofoundation9v5-dbg libpocomysql9v5-dbg libpoconet9v5-dbglibpoconetssl9v5-dbg libpocoodbc9v5-dbg libpocosqlite9v5-dbg libpocoutil9v5-dbg libpocoxml9v5-dbglibpocozip9v5-dbg postgresql-doc-9.5 firebird-dev libsqlite0-dev qt4-dev-tools qt4-doc libqt5libqgtk2qt5-image-formats-plugins spacenavd libstdc++-5-doc tbb-examples libtbb-doc libtinyxml-doc java-virtual-machinelibvtk5-dev vtk-doc vtk-examples vtk6-doc vtk6-examples libxerces-c-doc opencl-icd openmpi-checkpointtexlive-latex-recommended texlive-latex-base texlive-lang-french fonts-linuxlibertine | ttf-linux-libertinepython-gtk2-doc python-gobject-2-dbg dvipng inkscape ipython python-cairocffi python-configobjpython-excelerator python-gobject python-matplotlib-doc python-qt4 python-scipy python-tornado python-traitstexlive-extra-utils texlive-latex-extra ttf-staypuft python-coverage python-nose-doc libgle3 python-pam-dbgpython-pil-doc python-pil-dbg python-pyqt5-dbg python-sip-doc tix python-tk-dbg python-twisted-bin-dbgpython-qt3 python-txaio-doc mayavi2 sbcl-doc sbcl-source slime gnome-icon-theme kdelibs-data tcl-doc tcl8.6-doctk-doc tk8.6-doc 下列軟件包將被【卸載】:libcurl4-gnutls-dev 下列【新】軟件包將被安裝:binfmt-support blt docutils-common docutils-doc fltk1.3-doc fluid fonts-lyx freeglut3 freeglut3-dev gazebo7gazebo7-common gazebo7-plugin-base gfortran gfortran-5 hddtemp hdf5-helpers libaec-dev libaec0 libapr1-devlibaprutil1-dev libarmadillo6 libarpack2 libassimp-dev libassimp3v5 libavcodec-dev libavformat-devlibavutil-dev libblas-dev libboost-all-dev libboost-atomic-dev libboost-atomic1.58-dev libboost-atomic1.58.0libboost-chrono-dev libboost-chrono1.58-dev libboost-chrono1.58.0 libboost-context-dev libboost-context1.58-devlibboost-context1.58.0 libboost-coroutine-dev libboost-coroutine1.58-dev libboost-coroutine1.58.0libboost-date-time-dev libboost-date-time1.58-dev libboost-dev libboost-exception-devlibboost-exception1.58-dev libboost-filesystem-dev libboost-filesystem1.58-dev libboost-graph-devlibboost-graph-parallel-dev libboost-graph-parallel1.58-dev libboost-graph-parallel1.58.0libboost-graph1.58-dev libboost-graph1.58.0 libboost-iostreams-dev libboost-iostreams1.58-devlibboost-locale-dev libboost-locale1.58-dev libboost-locale1.58.0 libboost-log-dev libboost-log1.58-devlibboost-log1.58.0 libboost-math-dev libboost-math1.58-dev libboost-math1.58.0 libboost-mpi-devlibboost-mpi-python-dev libboost-mpi-python1.58-dev libboost-mpi-python1.58.0 libboost-mpi1.58-devlibboost-mpi1.58.0 libboost-program-options-dev libboost-program-options1.58-dev libboost-python-devlibboost-python1.58-dev libboost-python1.58.0 libboost-random-dev libboost-random1.58-dev libboost-random1.58.0libboost-regex-dev libboost-regex1.58-dev libboost-regex1.58.0 libboost-serialization-devlibboost-serialization1.58-dev libboost-serialization1.58.0 libboost-signals-dev libboost-signals1.58-devlibboost-signals1.58.0 libboost-system-dev libboost-system1.58-dev libboost-test-dev libboost-test1.58-devlibboost-test1.58.0 libboost-thread-dev libboost-thread1.58-dev libboost-timer-dev libboost-timer1.58-devlibboost-timer1.58.0 libboost-tools-dev libboost-wave-dev libboost-wave1.58-dev libboost-wave1.58.0libboost1.58-dev libboost1.58-tools-dev libbulletcollision2.83.6 libbulletdynamics2.83.6libcollada-dom2.4-dp-dev libcollada-dom2.4-dp0 libconsole-bridge-dev libconsole-bridge0.2v5libcurl4-openssl-dev libdap-dev libdap17v5 libdapclient6v5 libdapserver7v5 libeigen3-dev libepsilon1libflann-dev libflann1.8 libfltk-cairo1.3 libfltk-forms1.3 libfltk-gl1.3 libfltk-images1.3 libfltk1.3libfltk1.3-dev libfreeimage-dev libfreeimage3 libfreexl1 libgazebo7 libgazebo7-dev libgdal-dev libgdal1ilibgeos-3.5.0 libgeos-c1v5 libgeos-dev libgfortran-5-dev libgif-dev libgl2ps-dev libgl2ps0 libglade2-0libgtest-dev libgts-0.7-5 libgts-bin libgts-dev libhdf4-0-alt libhdf4-alt-dev libhdf5-10 libhdf5-cpp-11libhdf5-dev libhdf5-mpi-dev libhdf5-openmpi-10 libhdf5-openmpi-dev libhwloc-dev libhwloc-plugins libhwloc5libibverbs-dev libibverbs1 libignition-math2 libignition-math2-dev libinput-bin libinput-dev libjasper-devlibjbig-dev libjs-jquery-ui libjsoncpp-dev libjxr0 libkmlbase1 libkmldom1 libkmlengine1 liblapack-devlibldap2-dev liblinearmath2.83.6 liblog4cxx-dev liblog4cxx10-dev liblog4cxx10v5 liblz4-dev liblzma-devlibminizip1 libmysqlclient-dev libmysqlclient20 libnetcdf-c++4 libnetcdf-cxx-legacy-dev libnetcdf-devlibnetcdf11 libnuma-dev libodbc1 libogdi3.2 libogg-dev libogre-1.9-dev libogre-1.9.0v5 libopenjp2-7libopenmpi-dev libopenmpi1.10 libopenni-dev libopenni-sensor-pointclouds0 libopenni0 libpcl-apps1.7libpcl-common1.7 libpcl-dev libpcl-features1.7 libpcl-filters1.7 libpcl-io1.7 libpcl-kdtree1.7libpcl-keypoints1.7 libpcl-octree1.7 libpcl-outofcore1.7 libpcl-people1.7 libpcl-recognition1.7libpcl-registration1.7 libpcl-sample-consensus1.7 libpcl-search1.7 libpcl-segmentation1.7 libpcl-surface1.7libpcl-tracking1.7 libpcl-visualization1.7 libpcl1.7 libpoco-dev libpococrypto9v5 libpocodata9v5libpocofoundation9v5 libpocomysql9v5 libpoconet9v5 libpoconetssl9v5 libpocoodbc9v5 libpocosqlite9v5libpocoutil9v5 libpocoxml9v5 libpocozip9v5 libpq-dev libproj-dev libproj9 libprotoc-dev libprotoc9v5libpyside-py3-2.0 libpyside2-dev libpyside2.0 libqhull-dev libqhull7 libqt4-dev libqt4-dev-bin libqt4-helplibqt4-opengl-dev libqt4-scripttools libqt4-test libqt5clucene5 libqt5concurrent5 libqt5designer5libqt5designercomponents5 libqt5help5 libqt5multimediaquick-p5 libqt5opengl5-dev libqt5quickparticles5libqt5scripttools5 libqt5svg5-dev libqt5webkit5-dev libqt5x11extras5-dev libqt5xmlpatterns5libqt5xmlpatterns5-dev libqt5xmlpatterns5-private-dev libqtwebkit-dev libsdformat4 libsdformat4-devlibshiboken-py3-2.0 libshiboken2-dev libshiboken2.0 libsimbody-dev libsimbody3.5v5 libspatialite-devlibspatialite7 libspnav0 libsuperlu4 libswresample-dev libswscale-dev libsz2 libtar-dev libtar0 libtbb-devlibtheora-dev libtiff5-dev libtiffxx5 libtinyxml-dev libtinyxml2-2v5 libtinyxml2-dev liburdfdom-devliburdfdom-headers-dev liburdfdom-model-state0.4 liburdfdom-model0.4 liburdfdom-sensor0.4 liburdfdom-toolsliburdfdom-world0.4 liburiparser1 libusb-1.0-0-dev libusb-1.0-doc libvtk-java libvtk5.10 libvtk6-devlibvtk6-java libvtk6-qt-dev libvtk6.2 libvtk6.2-qt libwebp-dev libwebpdemux1 libxerces-c-dev libxerces-c3.1libxmu-dev libxmu-headers libyaml-cpp-dev libzzip-0-13 mpi-default-bin mpi-default-dev ocl-icd-libopencl1odbcinst odbcinst1debian2 openmpi-bin openmpi-common openni-utils proj-bin proj-data pyqt5-dev python-attrpython-autobahn python-catkin-pkg python-catkin-pkg-modules python-chardet python-concurrent.futurespython-cycler python-defusedxml python-docutils python-ecdsa python-empy python-glade2 python-gobject-2python-gtk2 python-imaging python-lz4 python-matplotlib python-matplotlib-data python-mpi4py python-msgpackpython-netifaces python-nose python-opengl python-pam python-paramiko python-pil python-pyasn1-modulespython-pydot python-pygments python-pyqt5 python-pyqt5.qtopengl python-pyqt5.qtsvg python-pyqt5.qtwebkitpython-pyside2 python-pyside2.qtconcurrent python-pyside2.qtcore python-pyside2.qtgui python-pyside2.qthelppython-pyside2.qtnetwork python-pyside2.qtprintsupport python-pyside2.qtqml python-pyside2.qtquickpython-pyside2.qtquickwidgets python-pyside2.qtscript python-pyside2.qtsql python-pyside2.qtsvgpython-pyside2.qttest python-pyside2.qtuitools python-pyside2.qtwebkit python-pyside2.qtwebkitwidgetspython-pyside2.qtwidgets python-pyside2.qtx11extras python-pyside2.qtxml python-roman python-rosdeppython-rosdistro python-rosdistro-modules python-rospkg python-rospkg-modules python-serialpython-service-identity python-sip python-sip-dev python-snappy python-tk python-trollius python-twistedpython-twisted-bin python-twisted-core python-txaio python-vtk6 python-wxgtk3.0 python-wxtools python-wxversionpython-zope.interface qt4-linguist-tools qt4-qmake qt5-qmake qtbase5-dev qtbase5-dev-tools qtbase5-private-devqtdeclarative5-dev qtdeclarative5-private-dev qtmultimedia5-dev qtscript5-dev qtscript5-private-devqttools5-dev qttools5-dev-tools qttools5-private-dev ros-kinetic-actionlib ros-kinetic-actionlib-msgsros-kinetic-actionlib-tutorials ros-kinetic-angles ros-kinetic-bond ros-kinetic-bond-core ros-kinetic-bondcppros-kinetic-bondpy ros-kinetic-camera-calibration ros-kinetic-camera-calibration-parsersros-kinetic-camera-info-manager ros-kinetic-catkin ros-kinetic-class-loader ros-kinetic-cmake-modulesros-kinetic-collada-parser ros-kinetic-collada-urdf ros-kinetic-common-msgs ros-kinetic-common-tutorialsros-kinetic-compressed-depth-image-transport ros-kinetic-compressed-image-transport ros-kinetic-control-msgsros-kinetic-cpp-common ros-kinetic-cv-bridge ros-kinetic-depth-image-proc ros-kinetic-desktopros-kinetic-desktop-full ros-kinetic-diagnostic-aggregator ros-kinetic-diagnostic-analysisros-kinetic-diagnostic-common-diagnostics ros-kinetic-diagnostic-msgs ros-kinetic-diagnostic-updaterros-kinetic-diagnostics ros-kinetic-dynamic-reconfigure ros-kinetic-eigen-conversionsros-kinetic-eigen-stl-containers ros-kinetic-executive-smach ros-kinetic-filters ros-kinetic-gazebo-devros-kinetic-gazebo-msgs ros-kinetic-gazebo-plugins ros-kinetic-gazebo-ros ros-kinetic-gazebo-ros-pkgsros-kinetic-gencpp ros-kinetic-geneus ros-kinetic-genlisp ros-kinetic-genmsg ros-kinetic-gennodejsros-kinetic-genpy ros-kinetic-geometric-shapes ros-kinetic-geometry ros-kinetic-geometry-msgsros-kinetic-geometry-tutorials ros-kinetic-gl-dependency ros-kinetic-image-common ros-kinetic-image-geometryros-kinetic-image-pipeline ros-kinetic-image-proc ros-kinetic-image-publisher ros-kinetic-image-rotateros-kinetic-image-transport ros-kinetic-image-transport-plugins ros-kinetic-image-viewros-kinetic-interactive-marker-tutorials ros-kinetic-interactive-markers ros-kinetic-joint-state-publisherros-kinetic-kdl-conversions ros-kinetic-kdl-parser ros-kinetic-laser-assembler ros-kinetic-laser-filtersros-kinetic-laser-geometry ros-kinetic-laser-pipeline ros-kinetic-librviz-tutorial ros-kinetic-map-msgsros-kinetic-media-export ros-kinetic-message-filters ros-kinetic-message-generation ros-kinetic-message-runtimeros-kinetic-mk ros-kinetic-nav-msgs ros-kinetic-nodelet ros-kinetic-nodelet-coreros-kinetic-nodelet-topic-tools ros-kinetic-nodelet-tutorial-math ros-kinetic-octomap ros-kinetic-opencv3ros-kinetic-orocos-kdl ros-kinetic-pcl-conversions ros-kinetic-pcl-msgs ros-kinetic-pcl-rosros-kinetic-perception ros-kinetic-perception-pcl ros-kinetic-pluginlib ros-kinetic-pluginlib-tutorialsros-kinetic-polled-camera ros-kinetic-python-orocos-kdl ros-kinetic-python-qt-binding ros-kinetic-qt-dotgraphros-kinetic-qt-gui ros-kinetic-qt-gui-cpp ros-kinetic-qt-gui-py-common ros-kinetic-qwt-dependencyros-kinetic-random-numbers ros-kinetic-resource-retriever ros-kinetic-robot ros-kinetic-robot-modelros-kinetic-robot-state-publisher ros-kinetic-ros ros-kinetic-ros-base ros-kinetic-ros-commros-kinetic-ros-core ros-kinetic-ros-tutorials ros-kinetic-rosbag ros-kinetic-rosbag-migration-ruleros-kinetic-rosbag-storage ros-kinetic-rosbash ros-kinetic-rosboost-cfg ros-kinetic-rosbuildros-kinetic-rosclean ros-kinetic-rosconsole ros-kinetic-rosconsole-bridge ros-kinetic-roscppros-kinetic-roscpp-core ros-kinetic-roscpp-serialization ros-kinetic-roscpp-traits ros-kinetic-roscpp-tutorialsros-kinetic-roscreate ros-kinetic-rosgraph ros-kinetic-rosgraph-msgs ros-kinetic-roslang ros-kinetic-roslaunchros-kinetic-roslib ros-kinetic-roslint ros-kinetic-roslisp ros-kinetic-roslz4 ros-kinetic-rosmakeros-kinetic-rosmaster ros-kinetic-rosmsg ros-kinetic-rosnode ros-kinetic-rosout ros-kinetic-rospackros-kinetic-rosparam ros-kinetic-rospy ros-kinetic-rospy-tutorials ros-kinetic-rosservice ros-kinetic-rostestros-kinetic-rostime ros-kinetic-rostopic ros-kinetic-rosunit ros-kinetic-roswtf ros-kinetic-rqt-actionros-kinetic-rqt-bag ros-kinetic-rqt-bag-plugins ros-kinetic-rqt-common-plugins ros-kinetic-rqt-consoleros-kinetic-rqt-dep ros-kinetic-rqt-graph ros-kinetic-rqt-gui ros-kinetic-rqt-gui-cpp ros-kinetic-rqt-gui-pyros-kinetic-rqt-image-view ros-kinetic-rqt-launch ros-kinetic-rqt-logger-level ros-kinetic-rqt-moveitros-kinetic-rqt-msg ros-kinetic-rqt-nav-view ros-kinetic-rqt-plot ros-kinetic-rqt-pose-viewros-kinetic-rqt-publisher ros-kinetic-rqt-py-common ros-kinetic-rqt-py-console ros-kinetic-rqt-reconfigureros-kinetic-rqt-robot-dashboard ros-kinetic-rqt-robot-monitor ros-kinetic-rqt-robot-pluginsros-kinetic-rqt-robot-steering ros-kinetic-rqt-runtime-monitor ros-kinetic-rqt-rvizros-kinetic-rqt-service-caller ros-kinetic-rqt-shell ros-kinetic-rqt-srv ros-kinetic-rqt-tf-treeros-kinetic-rqt-top ros-kinetic-rqt-topic ros-kinetic-rqt-web ros-kinetic-rvizros-kinetic-rviz-plugin-tutorials ros-kinetic-rviz-python-tutorial ros-kinetic-self-testros-kinetic-sensor-msgs ros-kinetic-shape-msgs ros-kinetic-simulators ros-kinetic-smach ros-kinetic-smach-msgsros-kinetic-smach-ros ros-kinetic-smclib ros-kinetic-stage ros-kinetic-stage-ros ros-kinetic-std-msgsros-kinetic-std-srvs ros-kinetic-stereo-image-proc ros-kinetic-stereo-msgs ros-kinetic-tfros-kinetic-tf-conversions ros-kinetic-tf2 ros-kinetic-tf2-eigen ros-kinetic-tf2-geometry-msgsros-kinetic-tf2-kdl ros-kinetic-tf2-msgs ros-kinetic-tf2-py ros-kinetic-tf2-rosros-kinetic-theora-image-transport ros-kinetic-topic-tools ros-kinetic-trajectory-msgsros-kinetic-turtle-actionlib ros-kinetic-turtle-tf ros-kinetic-turtle-tf2 ros-kinetic-turtlesimros-kinetic-urdf ros-kinetic-urdf-parser-plugin ros-kinetic-urdf-tutorial ros-kinetic-vision-opencvros-kinetic-visualization-marker-tutorials ros-kinetic-visualization-msgs ros-kinetic-visualization-tutorialsros-kinetic-viz ros-kinetic-webkit-dependency ros-kinetic-xacro ros-kinetic-xmlrpcpp sbcl sdformat-sdfshiboken2 sip-dev tango-icon-theme tcl-dev tcl-vtk6 tcl8.6-dev tk-dev tk8.6-blt2.5 tk8.6-dev ttf-bitstream-verattf-liberation unixodbc unixodbc-dev uuid-dev vtk6 下列軟件包將被升級:cpp-5 g++-5 g++-5-multilib gcc-5 gcc-5-base gcc-5-base:i386 gcc-5-multilib lib32asan2 lib32atomic1lib32cilkrts5 lib32gcc-5-dev lib32gomp1 lib32itm1 lib32mpx0 lib32quadmath0 lib32stdc++-5-dev lib32stdc++6lib32ubsan0 libasan2 libatomic1 libcc1-0 libcilkrts5 libgcc-5-dev libgfortran3 libgomp1 libinput10 libitm1liblsan0 libmpx0 libqt5core5a libqt5dbus5 libqt5gui5 libqt5network5 libqt5opengl5 libqt5printsupport5libqt5sql5 libqt5test5 libqt5widgets5 libqt5xml5 libquadmath0 libstdc++-5-dev libstdc++6 libstdc++6:i386libtsan0 libubsan0 libuuid1 libwacom-bin libwacom-common libwacom2 libx32asan2 libx32atomic1 libx32cilkrts5libx32gcc-5-dev libx32gomp1 libx32itm1 libx32quadmath0 libx32stdc++-5-dev libx32stdc++6 libx32ubsan0 升級了 59 個軟件包,新安裝了 653 個軟件包,要卸載 1 個軟件包,有 394 個軟件包未被升級。 需要下載 445 MB 的歸檔。 解壓縮后會消耗 2,139 MB 的額外空間。 您希望繼續(xù)執(zhí)行嗎? [Y/n] Y這種方式的安裝,所需要安裝的包非常多。
桌面安裝:ROS,rqt,?rviz,機(jī)器人通用庫
sudo apt-get install ros-kinetic-desktopROS-Base (Bare Bones):ROS 包,構(gòu)建和通信庫。沒有 GUI 工具。
sudo apt-get install ros-kinetic-ros-base獨(dú)立的包安裝:可以安裝一個特定的 ROS 包(用實(shí)際的包名來替換下面的命令中的 “PACKAGE”)。
sudo apt-get install ros-kinetic-PACKAGE如:
sudo apt-get install ros-kinetic-slam-gmapping要找到可用的包,可以使用:
apt-cache search ros-kinetic通常在做開發(fā)時,采用 桌面完整安裝 比較方便一點(diǎn),可以一股腦將所有有可能用到的軟件包都安裝進(jìn)來。對于實(shí)際的機(jī)器,則通常采用 ROS-Base (Bare Bones) + 獨(dú)立的包 的方式進(jìn)行安裝。
初始化 rosdep
在使用 ROS 之前,需要先初始化 rosdep。rosdep 使得你可以為你想要編譯的源碼,以及需要運(yùn)行的 ROS 核心組件,簡單地安裝系統(tǒng)依賴。
sudo rosdep init rosdep update環(huán)境設(shè)置
如果在每次一個新的終端啟動時,ROS 環(huán)境變量都能自動地添加進(jìn)你的 bash 會話是非常方便,這可以通過如下命令來實(shí)現(xiàn):
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc source ~/.bashrc如果安裝了多個 ROS 發(fā)行版,則 ~/.bashrc 必須只 source 當(dāng)前正在使用的那一版的 setup.bash。
如果你只想要修改當(dāng)前 shell 的環(huán)境,則輸入如下的命令來替換上面的命令:
source /opt/ros/kinetic/setup.bash構(gòu)建包所需的依賴
到這一步,應(yīng)該已經(jīng)安裝好了運(yùn)行核心 ROS 包的所有東西。要創(chuàng)建和管理你自己的 ROS workspace,還有單獨(dú)發(fā)布的許多的工具。比如,rosinstall 是一個常用的命令行工具,使你可以通過一個命令為 ROS 包簡單地下載許多源碼樹。
要安裝這個工具及其它的依賴以構(gòu)建 ROS 包,則運(yùn)行:
sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential完成完整的 ROS 安裝之后,可以對安裝做一個簡單的測試。可以通過 roscore 和 turtlesim 來做測試。
roscore 測試如下:
$ roscore ... logging to /home/hanpfei0306/.ros/log/3e61b674-03cf-11e8-ac54-9cb70ddc3658/roslaunch-hanpfei0306-31481.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://hanpfei0306:44979/ ros_comm version 1.12.12SUMMARY ========PARAMETERS* /rosdistro: kinetic* /rosversion: 1.12.12NODESauto-starting new master process[master]: started with pid [31495] ROS_MASTER_URI=http://hanpfei0306:11311/setting /run_id to 3e61b674-03cf-11e8-ac54-9cb70ddc3658 process[rosout-1]: started with pid [31508] started core service [/rosout]turtlesim 測試如下:
注意 turtlesim 的運(yùn)行依賴于 roscore 的運(yùn)行,因此在測試 turtlesim 需要同時運(yùn)行 roscore。
參考文檔
ROS Distributions
Ubuntu install of ROS Kinetic
Done.
總結(jié)
以上是生活随笔為你收集整理的Ubuntu 16.04 安装 ROS的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Anbox 实现分析 3:会话管理器与容
- 下一篇: 使用 GDB 调试 Android 应用