由于个人需要用到Ubuntu16.04,所以在笔记本上安装了Ubuntu16.04的双系统,目前系统中就安装了opencv3.2.0,然后现在开始安装ROS。Ubuntu16.04对应的ROS版本为ROS knietic版本,需要注意
1、设置软件源:sources.list以及密匙
配置你的电脑使其能够安装来自 packages.ros.org的软件包。目前最新版本的 ROS Kinetic 只支持Ubuntu 15.10和 Ubuntu 16.04 。
在终端输入:
$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
$ sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
这里的sources.list以及密匙来自于ROS官网,大概是一年一更新,所以如果想用最新的sources.list以及密匙的话可以直接去ROS官网的kinetic安装教程中去找最新的sources.list以及密匙。一般用最新的sources.list以及密匙不太容易出现下面2、3步骤中的错误,可以直接到第四步。
2、更新
sudo apt-get update
(2.1)这里如果出现错误:
Reading package lists... Done
E: Problem executing scripts APT::Update::Post-Invoke-Success
'if /usr/bin/test -w /var/cache/app-info -a -e /usr/bin/appstreamcli;
then appstreamcli refresh > /dev/null; fi'
E: Sub-process returned an error code
可以用以下方法:
$ sudo pkill -KILL appstreamcli
$ wget -P /tmp https://launchpad.net/ubuntu/+archive/primary/+files/appstream_0.9.4-1ubuntu1_amd64.deb https://launchpad.net/ubuntu/+archive/primary/+files/libappstream3_0.9.4-1ubuntu1_amd64.deb
$ sudo dpkg -i /tmp/appstream_0.9.4-1ubuntu1_amd64.deb /tmp/libappstream3_0.9.4-1ubuntu1_amd64.deb
重新运行update不会出现错误
3、安装
sudo apt-get install ros-kinetic-desktop-full
(3.1)、这里如果出现报错如下:
Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. The following information may help to resolve the situation:
The following packages have unmet dependencies: ros-kinetic-desktop-full : Depends: ros-kinetic-desktop but it is not going to be installed Depends: ros-kinetic-perception but it is not going to be installed Depends: ros-kinetic-simulators but it is not going to be installed Depends: ros-kinetic-urdf-tutorial but it is not going to be installed E: Unable to correct problems, you have held broken packages.
解决方法:
删除ros-latest.list
rm -rf /etc/apt/sources.list.d/ros-latest.list
修改源
sudo vim /etc/apt/sources.list
然后改为以下内容:
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
然后从第一步开始从头设置即可。
安装完成后,可以用下面的命令来查看可使用的包:
apt-cache search ros-kinetic
4、初始化ROS
$ sudo rosdep init
$ rosdep update
4.1、这里使用 rosdep init 的时候经常会提示无法连接到xxx网址,这是由于raw.githubusercontent.com被墙,程序无法下载相应的文件导致的。解决方法就是使得raw.githubusercontent.com能够被正常访问。所以我们只要能够找到这个网站的正确ip就可以了。
IP地址可能会变,可以去这个网址查一下:例如目前所查到的ip地址为151.101.84.133
查到之后就可以执行:
sudo gedit /etc/hosts
打开hosts文件,将该ip地址添加到文件中来,即在文件中添加以下内容:
151.101.84.133 raw.githubusercontent.com
然后保存退出。
4.2、在执行update的时候也比较容易报错,不过这里的错误大部分都是来自于网络问题,多换几个网络试一下就可以了,好像移动热点比较容易被墙,联通的热点基本每次都很顺利。学校有线网似乎成功率也还行。
5、设置环境变量
$ echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
$ source ~/.bashrc
这里注意kinetic的“k”是小写的,之前第一次没注意打成了大写的后来报错了,如果有错误可以打开:
gedit ~/.bashrc
查看最后的source项是否正确,特别这里如果之前装过不止一个ROS的这里可能会出现多个source项,删除多余的留下有用的即可。
6、安装插件
sudo apt-get install python-rosinstall
这个可以不用装,视情况而定
7、测试ROS
roscore
得到如下结果:
8、检查环境变量配置
export | grep ROS
得到如下结果:
到这里就OK了
参考:
http://wiki.ros.org/kinetic/Installation/Ubuntu
https://blog.csdn.net/wangguchao/article/details/81044558
https://blog.csdn.net/xuehuafeiwu123/article/details/52549872
https://blog.csdn.net/xiangxianghehe/article/details/78483799
https://www.cnblogs.com/EasonJim/p/7343892.html