ROS安装
(强烈推荐鱼香ROS的一键安装!!!什么都不用管)在多次给自己以及帮助他人安装ROS时,饱受rosdep init,rosdep update失败的困扰,其原因就是通常无法连接到国外站点,导致系统文件无法下载。本人站在各位前辈的肩膀上总结出无需外网,无需运气的安装方法,供需要的同学采纳。首先选择中科大的镜像源(其他的如清华,阿里云亦可)添加软件源配置秘钥更新软件源安装rosdep 的依赖安装最全版本的ROSrosdep init?第一个文件第二个文件第三个文件(还没完呢!)配置环境ROS的核心已经安装完了再运行下面的命令将ROS的依赖和软件包构建起来验证是否ROS是否安装成功安装完成!(强烈推荐鱼香ROS的一键安装!!!什么都不用管)在多次给自己以及帮助他人安装ROS时,饱受rosdep init,rosdep update失败的困扰,其原因就是通常无法连接到国外站点,导致系统文件无法下载。本人站在各位前辈的肩膀上总结出无需外网,无需运气的安装方法,供需要的同学采纳。
在rosdep init 之前的步骤基本都是一样的,废话不多说,开始在安装。
首先选择中科大的镜像源(其他的如清华,阿里云亦可)
添加软件源
sudo sh -c 'echo "deb /ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
配置秘钥
sudo apt-key adv --keyserver 'hkp://:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
更新软件源
sudo apt update
安装rosdep 的依赖
sudo apt-get install python-rosdep
安装最全版本的ROS
sudo apt install -y ros-melodic-desktop-full
rosdep init?
正常来说需要运行rosdep init这个命令进行rosdep的初始化,其作用就是从这个网站里下载/ros/rosdistro这个repository里的文件。这个网站除了翻墙和换网以及运气外基本连不上,我已经将所有文件放到的国内的gitee里面,不需要这个命令可以快速完成下载。
需要先安装git
终端输入
sudo apt-get install git
打开终端输入下行命令下载文件
git clone /wx_b25a68fb1d/rosdistro.git
将文件放置到/etc/ros下(有的同学可能要问了,诶,我的/etc下没有ros文件啊。没事,这里直接利用根命令在/etc这个文件结下创建一个就行:如下图)
sudo cp -r /home/pf/rosdistro /etc/ros
然后打开20-default.list文件
sudo gedit /etc/ros/rosdistro/rosdep/sources.list.d/20-default.list
里面的内容用下面的替换
# os-specific listings first#yaml /ros/rosdistro/master/rosdep/osx-homebrew.yaml osxyaml file:///etc/ros/rosdep/osx-homebrew.yaml osx# generic#yaml /ros/rosdistro/master/rosdep/base.yaml#yaml /ros/rosdistro/master/rosdep/python.yaml#yaml /ros/rosdistro/master/rosdep/ruby.yaml#gbpdistro /ros/rosdistro/master/releases/fuerte.yaml fuerteyaml file:///etc/ros/rosdep/base.yamlyaml file:///etc/ros/rosdep/python.yamlyaml file:///etc/ros/rosdep/ruby.yamlgbpdistro file:///etc/ros/releases/fuerte.yaml fuerte# newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead
之后修改下面三个文件里面的连接
1. /usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py2. /usr/lib/python2.7/dist-packages/rosdep2/rep3.py3. /usr/lib/python2.7/dist-packages/rosdistro/__init__.py
第一个文件
sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py
将FUERTE_GBPDISTRO_URL修改为下面内容
# FUERTE_GBPDISTRO_URL = '/ros/rosdistro/master/releases/fuerte.yaml'FUERTE_GBPDISTRO_URL = 'file:///etc/ros/releases/fuerte.yaml'
记得保存
第二个文件
sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/rep3.py
修改REP3_TARGETS_URL内容为下
# REP3_TARGETS_URL = '/ros/rosdistro/master/releases/targets.yaml'REP3_TARGETS_URL = 'file:///etc/ros/releases/targets.yaml'
第三个文件
sudo gedit /usr/lib/python2.7/dist-packages/rosdistro/__init__.py
修改DEFAULT_INDEX_URL内容为下
# DEFAULT_INDEX_URL = '/ros/rosdistro/master/index-v4.yaml'DEFAULT_INDEX_URL = 'file:///etc/ros/index-v4.yaml'
现在基本已经完成rosdep init的工作了
但是直接进行rosdep update很可能会出现未进行初始化的问题,原因是rosdep update的路径是/etc/ros而上述修改后的文件在/etc/ros/rosdistro 路径下,不要慌,简单的一个复制就能解决问题,命令如下:
sudo cp -r /etc/ros/rosdistro/rosdep /etc/ros
运行rosdep update
sudo rosdep update
效果如下
(还没完呢!)配置环境
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrcsource ~/.bashrc
ROS的核心已经安装完了再运行下面的命令将ROS的依赖和软件包构建起来
sudo apt install -y python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
验证是否ROS是否安装成功
roscore
出现下图则成功