目录
1.确定版本
2.设置ros的下载源
3.安装ros
4.设置环境
5.rosdep的初始化
6.验证一下
跑orb或vins时都用到了ros,而重装系统后再去查ros的安装方式,接着解决报错感觉很麻烦,所以总结一下,方便自己,如果能帮到大家更好。
下面是官网的链接
melodic/Installation/Ubuntu - ROS Wiki
不同的ubuntu对应不同的ros版本,其对应关系如下所示:
ubuntu版本 | ros版本 |
14.04 | indigo |
16.04 | kinetic |
18.04 | melodic |
因为自带的ros源是国外的,所以要先将其替换为国内源
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'
然后设置公钥
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
设置完成后,更新一下
sudo apt-get update
根据网上的建议,安装完整版(我的机器是ubuntu18.04,所以是melodic)
sudo apt install ros-melodic-desktop-full
其他版本如下图所示:
安装完成后,如果想查看哪些包可以使用,可以使用
apt search ros-melodic
根据官网上的说法:设置后,每次启动新shell时都会自动将ROS环境变量添加到bash会话中。我的理解是,设置后可以让你的bash会话,识别roscore,rosrun等命令
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
需要安装rosdep(如果一开始就是安装的完整版就直接下一步)
sudo apt install python-rosdep
rosdep的初始化
sudo rosdep init
rosdep update
问题一:输入sudo rosdep init后报错,如下图所示出现cannot download default sources list from:...
解决方法:
git clone https://github.com/ros/rosdistro.git
注意:如果下载后的文件名为rosdistro-master,需要将rosdistro-master改称rosdistro
2)修改代码
sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/rep3.py
sudo gedit /usr/lib/python2.7/dist-packages/rosdistro/__init__.py
sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/sources_list.py
在这三个文件中,将https://raw.githubusercontent.com/ros/rosdistro/master 全部替换为 file:///home/swhz/rosdistro 接着再输入sudo rosdep init
出现以上画面说明成功。
注意1:只替换到master,后面跟的不用动
注意2:file:///....这个地址是我在第一步中git下来的rosdistro的地址,请具体情况,具体分析
问题二:rosdep update报错,出现unable to process source [....],如下所示:
解决方法:自己修改20-default.list
文件
在上面的sudo rosdep init成功执行后,就会有20-default.list文件
与上面的操作类似,打开20-default.list文件
sudo gedit /etc/ros/rosdep/sources.list.d/20-default.list
然后将里面的内容替换为
# os-specific listings first
yaml file:///home/swhz/rosdistro/rosdep/osx-homebrew.yaml osx
# generic
yaml file:///home/swhz/rosdistro/rosdep/base.yaml
yaml file:///home/swhz/rosdistro/rosdep/python.yaml
yaml file:///home/swhz/rosdistro/rosdep/ruby.yaml
yaml file:///home/swhz/rosdistro/releases/fuerte.yaml
# newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead
最后保存、退出,再次输入rosdep update
成功!!!
roscore