ROS环境配置:https://www.bilibili.com/video/av59217777/
ROS (Kinetic)安装: https://www.bilibili.com/video/av64772412/
STEP-1,添加 sources.list,设置 ROS 更新源(可以使用USTC或TU的镜像)
STEP-2,更新KEYs
STEP-3,安装并更新
https://www.jianshu.com/p/7fccfe18d7d3
发行版本 发布日期 截止日期 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.1 打开system setting(系统设置)->Software&Updates(软件与更新)
1.2点击上方Other software(其他软件),点击左下角add(添加)按钮
1.3下面一段复制进去
deb http://ros.exbot.net/rospackage/ros/ubuntu/ bionic main1.4 确定点Add Source 勾选选项
就可以愉快地在终端(快捷键:CTRL+ALT+T)里
sudo apt-get update
配置你的电脑使其能够安装来自 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'
或者在终端使用镜像(USTC):
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
或者在终端使用镜像(Tsinghua University):
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver hkp://pool.sks-keyservers.net --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
确保你的Debian软件包索引是最新的:
sudo apt-get update
安装桌面完整版:(推荐) 包含ROS、rqt、rviz、通用机器人函数库、2D/3D仿真器、导航以及2D/3D感知功能。
sudo apt-get install ros-melodic-desktop-full
如果出现以下错误:
The following packages have unmet dependencies:
ros-melodic-desktop : Depends: ros-melodic-common-tutorials but it is not going to be installed
Depends: ros-melodic-geometry-tutorials but it is not going to be installed
Depends: ros-melodic-robot but it is not going to be installed
Depends: ros-melodic-ros-tutorials but it is not going to be installed
Depends: ros-melodic-urdf-tutorial but it is not going to be installed
Depends: ros-melodic-visualization-tutorials but it is not going to be installed
Depends: ros-melodic-viz but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
解决方案——安装 aptitude,然后继续:
$ sudo apt install aptitude
$ sudo aptitude -y install ros-melodic-desktop-full
The following NEW packages will be installed:
然后就成功了
有的问题 apt-get 解决不了,必须使用 aptitude 解决,有的问题,用 aptitude 解决不了,必须使用apt-get.
$ sudo mv /var/lib/dpkg/info /var/lib/dpkg/info_old //现将info文件夹更名
$ sudo mkdir /var/lib/dpkg/info //再新建一个新的info文件夹
$ sudo apt-get update
$ sudo apt-get -f install
$ sudo mv /var/lib/dpkg/info/* /var/lib/dpkg/info_old //
在开始使用 ROS 之前你还需要初始化 rosdep。rosdep 可以方便在你需要编译某些源码的时候为其安装一些系统依赖,同时也是某些 ROS 核心功能组件所必需用到的工具。
sudo rosdep init
可能出现如下错误(pkg-resources改出问题了):
U303L:~/ros_ws$ sudo rosdep init
Traceback (most recent call last):
File "/usr/bin/rosdep", line 11, in
load_entry_point('rosdep==0.19.0', 'console_scripts', 'rosdep')()
File "/home/npuyin/.local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 489, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/home/npuyin/.local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2852, in load_entry_point
return ep.load()
File "/home/npuyin/.local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2443, in load
return self.resolve()
File "/home/npuyin/.local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2449, in resolve
module = __import__(self.module_name, fromlist=['__name__'], level=0)
ImportError: No module named rosdep2.main
解决办法——需要卸载 python-pkg-resources 再安装
sudo rm -rf /var/lib/dpkg/info/python-pkg-resources
sudo dpkg --remove --force-remove-reinstreq python-pkg-resources
sudo apt-get purge python-pkg-resources
pip install distribute
sudo apt install --fix-missing python-rosdep
运行 rosdep init 还是出现的问题
U303L:~/ros_ws$ sudo rosdep init
ERROR: cannot download default sources list from:
https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
Website may be down.
解决办法很多,本文使用方法如下:
将文件 20-default.list 下载并复制到 /etc/ros/rosdep/sources.list.d/20-default.list 后直接进入下一步:
sudo rosdep update
更新ROS源代码。这个命令相当于 Linux 使用 sudo apt-get update
来更新系统软件,它的作用就是更新 ROS 系统中的软件包
可以参考:
1-《解决rosdep init报错“Website may be down”》,https://zhuanlan.zhihu.com/p/107218921
2-《ROS:sudo rosdep init出错常规方法都无效后解决办法记录》,https://zhuanlan.zhihu.com/p/77483614
3- 控制台使用SSR代理,在 ~/.bashrc 中添加如下内容并使用 source 更新,能够完成后续的 ros 系统更新
alias setproxy="export ALL_PROXY=http://127.0.0.1:12333"
alias unsetproxy="unset ALL_PROXY"
alias ip="curl -i http://ip.cn"
2.5 环境设置
如果需要每次新的终端都能将 ROS环境变量都能够自动配置好(即添加到bash会话中),则需要进行以下操作:
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
上述命令的意思是:将 source /opt/ros/indigo/setup.bash 这句话 ,添加(追加)到 ~/.bashrc 的尾部。
(注意: )
文件中。
~/.bashrc
文件?source /opt/ros/melodic/setup.bash
,然后才能使用 ros 相关的命令。所以,每次新打开一个终端,就要执行一次 source /opt/ros/melodic/setup.bash
命令,这样很麻烦。.bashrc
文件是终端的启动文件,我们将这句话添加到启动文件中的效果就是,我们每次新打开一个终端,都会自动执行这句话。所以,直接将这条命令写到 ~/.bashrc
文件里。rosinstall是 ROS 中一个独立分开的常用命令行工具,它可以方便让你通过一条命令就可以给某个 ROS 软件包下载很多源码树。
sudo apt-get install python-rosinstall
一个检查的好方法是确保你已经设置了像ROS_ROOT和ROS_PACKAGE_PATH这样的环境变量,可以通过以下命令查看:
export | grep ROS
U303L:~$ export | grep ROS
declare -x ROSLISP_PACKAGE_DIRECTORIES=""
declare -x ROS_DISTRO="melodic"
declare -x ROS_ETC_DIR="/opt/ros/melodic/etc/ros"
declare -x ROS_MASTER_URI="http://localhost:11311"
declare -x ROS_PACKAGE_PATH="/opt/ros/melodic/share"
declare -x ROS_PYTHON_VERSION="2"
declare -x ROS_ROOT="/opt/ros/melodic/share/ros"
declare -x ROS_VERSION="1"
或者输入以下指令进行检查:
roswtf
U303L:~$ roswtf
Loaded plugin tf.tfwtf
No package or stack in the current directory
================================================================================
Static checks summary:
No errors or warnings
================================================================================
ROS Master does not appear to be running.
Online graph checks will not be run.
ROS_MASTER_URI is [http://localhost:11311]
注意:如果什么都没有,我们必须对 ROS 进行配置环境变量,才可以在终端中使用 ROS 的相关命令和工具,即:
source /opt/ros/melodic/setup.bash
【source命令用法:source FileName 作用:在当前bash环境下读取并执行FileName中的命令。
注:该命令通常用命令“.”来替代。 如:source .bash_rc 与 . .bash_rc 是等效的。】
再进行上面的检查,出现如上结果说明成功。但是我们使用 source
这个 指令来添加环境变量有一个缺点: 它只作用于当前终端,如果我们重新打开一个新的终端,使用 export | grep ROS
命令来查看当前终端上的环境变量我们依然得不到想要的结果,所以就需要上面的2.5 环境设置。
到这里说明ROS-melodic就安装完成了。接下来,我们要做的事情是:开始ROS基础学习。
用apt-get方式安装melodic的,卸载使用如下命令:
$ sudo apt-get remove ros-melodic-*
卸载成功的效果:就是/opt/ROS/indigo文件夹被删除
如果希望基于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进行浏览,笔者打算在下一篇文章中介绍。
ROS系统自带的小海龟仿真程序turtlesim。
分步骤介绍如下:
为了启动turtlesim,首先运行roscore启动ROS的节点管理器,方法及结果如下:
$ 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 11311
利用Ctrl+Shift+T快捷键另外打开一个终端,启动turtlesim的节点turtlesim_node,命令如下:
$ 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]
如果希望小海龟能够移动,可以启动turtlesim的键盘控制节点turtle_teleop_key,利用Ctrl+Shift+T快捷键另外再打开一个终端,输入命令:
$ rosrun turtlesim turtle_teleop_key
Reading from keyboard
---------------------------
Use arrow keys to move the turtle.
在当前终端下,按住方向键即可控制小海龟移动,截图如下:好了,终于可以愉快的玩耍了。