引言
安装时碰到了很多问题,搜索了很多方案,这里只是总结了下,来源我也不记得了,欢迎大家指出来源。
设置ROS软件源
`sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'`
(为了提高软件下载,安装进度,可用国内的镜像源)
-
Ubuntu 官方源服务器在欧洲,国内访问很慢,所以这里有必要将软件源更换为国内的源。国内源很多,我们选择阿里云与清华大学的 Ubuntu 源:
阿里云源
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse清华大学源
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/bionic-security main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse -
Ubuntu 的源存放在在 /etc/apt/ 目录下的 sources.list 文件中,修改前我们先备份,在终端中执行以下命令:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
-
然后执行下面的命令打开 sources.list 文件,清空里面的内容,把上面阿里云与清华大学的 Ubuntu 源复制进去,保存后退出。
sudo gedit /etc/apt/sources.list
-
接着在终端上执行以下命令更新软件列表,检测出可以更新的软件:
sudo apt-get update
-
最后在终端上执行以下命令进行软件更新:
sudo apt-get upgrade
添加公钥
`sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654`
(如果失败则参考**问题1及解决方案**)
安装ROS
-
更新package:
sudo apt-get update
-
安装ROS Kinetic完整包:
sudo apt-get install ros-melodic-desktop-full
-
初始化rosdep:
sudo rosdep init
(如果失败则参考**问题2及解决方案**)
rosdep update
(如果失败则参考**问题3及解决方案**)
-
配置ROS环境:
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
-
安装依赖项–rosinstall工具,可用来下载和安装ROS中的功能包程序:
sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential
-
测试ROS是否安装成功:
roscore
如果出现安装ROS的版本、节点等信息,则证明ROS安装成功,如果ROS安装失败,请按照上述步骤重新进行安装。
出现的问题以及解决方案
问题1及解决方案:
- **问题:**公钥添加失败
- **方案:**将
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
中的公钥服务器更换为hkp://pgp.mit.edu:80
问题2及解决方案:
-
问题: 初始化rosdep失败
-
方案:
#打开hosts文件(用gedit/vi/vim都可) sudo gedit /etc/hosts #在文件最后面加上如下这一行: 199.232.96.133 raw.githubusercontent.com #保存后退出再尝试初始化rosdep
注:上面的ip地址是和后面的网址对应的,这个IP地址可能会变,可在下面的网站上查询网址对应的ip地址:
问题3及解决方案:
-
问题:
cannot download default sources list
,由于墙的缘故,无法正常访问github的用户数据服务器 -
方案:
替换rosdep的网络映射地址为本地的地址:
下载rosdistro文件夹,可以去github上ROS开源包中下载,也可以下载我提供的资源。
修改下载的文件夹里面的以下内容:(路径注意替换成你们本地的)
- 第一个文件:
cd home/username/ROS-DAQ_V1.0/doc/03开发文档/rosdistro/rosdep/sources.list.d/
sudo gedit 20-default.list
将里面的raw.githubusercontent.com
替换为本地映射地址:
# os-specific listings first
yaml file:///home/username/ROS-DAQ_V1.0/doc/03开发文档/rosdistro/rosdep/osx-homebrew.yaml osx
# generic
yaml file:///home/username/ROS-DAQ_V1.0/doc/03开发文档/rosdistro/rosdep/base.yaml
yaml file:///home/username/ROS-DAQ_V1.0/doc/03开发文档/rosdistro/rosdep/python.yaml
yaml file:///home/username/ROS-DAQ_V1.0/doc/03开发文档/rosdistro/rosdep/ruby.yaml
gbpdistro file:///home/username/ROS-DAQ_V1.0/doc/03开发文档/rosdistro/releases/fuerte.yaml fuerte
# newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead
(注意地址为真实的本地文件地址,需要根据实际情况进行替换)
- 第二个文件:
cd /usr/lib/python2.7/dist-packages/rosdep2/
sudo gedit gbpdistro_support.py
同样的替换
FUERTE_GBPDISTRO_URL = 'file:///home/username/ROS-DAQ_V1.0/doc/03开发文档/rosdistro/' \
'releases/fuerte.yaml'
- 第三个文件:
cd /usr/lib/python2.7/dist-packages/rosdep2/
sudo gedit rep3.py
同样的替换
REP3_TARGETS_URL = 'file:///home/username/ROS-DAQ_V1.0/doc/03开发文档/rosdistro/releases/targets.yaml'
- 第四个文件:
cd /usr/lib/python2.7/dist-packages/rosdistro/
sudo gedit __init__.py
同样的替换
DEFAULT_INDEX_URL = 'file:///home/username/ROS-DAQ_V1.0/doc/03开发文档/rosdistro/index-v4.yaml'
- 打开终端执行以下指令创建root并切换至root用户
sudo su //输入你的密码切换至root
sudo mkdir -p /etc/ros/rosdep/sources.list.d
cd /etc/ros/rosdep/sources.list.d
sudo gedit 20-default.list
将以下内容复制进20-default.list
中
#os-specific listings first
yaml file:///home/username/ROS-DAQ_V1.0/doc/03开发文档/rosdistro/rosdep/osx-homebrew.yaml osx
# generic
yaml file:///home/username/ROS-DAQ_V1.0/doc/03开发文档/rosdistro/rosdep/base.yaml
yaml file:///home/username/ROS-DAQ_V1.0/doc/03开发文档/rosdistro/rosdep/python.yaml
yaml file:///home/username/ROS-DAQ_V1.0/doc/03开发文档/rosdistro/rosdep/ruby.yaml
gbpdistro file:///home/username/ROS-DAQ_V1.0/doc/03开发文档/rosdistro/releases/fuerte.yaml fuerte
#newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead
- 最后开启新终端:
rosdep update