基于ubuntu1604的ROS安装

不同版本的Ubuntu都有对应的ROS版本,不要强行安装不对应的版本,否则遇到问题会很难找到解决方法。此教程也只是基于Ubuntu1604和kinetic版本的ROS。

一、基本流程

以下命令仅记录执行顺序,不要无脑复制执行,重在理解

#基本更新
sudo apt update
sudo apt upgrade

##添加ROS下载源
sudo touch /etc/apt/sources.list.d/ros-latest.list
#阿里ros源,将以下语句复制进ros-latest.list即可
deb https://mirrors.aliyun.com/ros/ubuntu/ xenial main

#设置秘钥
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
#继续执行,curl未安装的先安装curl
curl -sSL 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xC1CF6E31E6BADE8868B172B4F42ED6FBAB17C654' | sudo apt-key add -

安装ROS完整版,大概2G多,需要等一会儿,ros安装路径在/opt/ros/kinetic/
sudo apt install ros-kinetic-desktop-full
二、rosdep

以上过程较为容易,有不同之处百度下即可解决。下面要进行rosdep初始化,可能会有一些问题,但耐心仔细地跟着网上的教程走一般也能搞定。首先看问题:

sudo rosdep init

大概率会报以下错误:
问题截图
上面的命令其实就是从指定的地址下载一个文件,如图中所示,但由于国内科学上网的问题没法下载下来,方法也很简单,将需要的文件转移到一个能访问的地址就可以了,或者更直接一点,把文件及源码直接克隆到本地。

git clone https://github.com/ros/rosdistro.git

如果这个也没法克隆,就先利用码云从github导过来,再克隆到本地,以下是从github导入到码云的一个库(不保证能用多久)

https://gitee.com/lxhqddlx/rosdistro.git

克隆完成后,修改原来需要下载的文件,因为那个文件作用也是指定其他文件地址,很不幸也是几个访问不到的地址,所以也要改为本地地址(或能访问到的网络地址)。

cd rosdistro/rosdep/sources.list.d/
vim 20-default.list

20-default.list这个文件在执行完rosdep init后会被放到/etc/ros/rosdep/sources.list.d/下。
可以看到其内容是关于几个yaml文件网络位置的,我们已经将整套源码包括这几个文件克隆到本地了,所以可以改成本地地址(只需要替换网络位置部分即可)。修改前:

# os-specific listings first
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml osx

# generic
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml
gbpdistro https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml fuerte

# newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead

修改后(不要无脑复制,重在理解):

# os-specific listings first rosdep update
yaml file:///home/lxh/rosdistro/rosdep/osx-homebrew.yaml osx

# generic
yaml file:///home/lxh/rosdistro/rosdep/base.yaml
yaml file:///home/lxh/rosdistro/rosdep/python.yaml
yaml file:///home/lxh/rosdistro/rosdep/ruby.yaml
gbpdistro file:///home/lxh/rosdistro/releases/fuerte.yaml fuerte

# newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead

根据以上经验,只要涉及到无法访问的地址的文件都要改,大概还有一下几个文件需要修改:

/usr/lib/python2.7/dist-packages/rosdistro/__init__.py
/usr/lib/python2.7/dist-packages/rosdep2/rep3.py
/usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py
/usr/lib/python2.7/dist-packages/rosdep2/sources_list.py

需要修改的地方都包含一个我们无法访问的网络地址https://raw.githubusercontent.com,直接搜索这个字符串就能找到修改的地方,改后内容(对应上述文件顺序):

DEFAULT_INDEX_URL = 'file:///home/lxh/rosdistro/index-v4.yaml'
REP3_TARGETS_URL = 'file:///home/lxh/rosdistro/releases/targets.yaml'
FUERTE_GBPDISTRO_URL = 'file:///home/lxh/rosdistro/releases/fuerte.yaml'
DEFAULT_SOURCES_LIST_URL = 'file:///home/lxh/rosdistro/rosdep/sources.list.d/20-default.list'

此时再执行

sudo rosdep init
rosdep update

畅通无阻。

三、rosinstall

没什么难度了

##配置环境变量
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
source ~/.bashrc

##安装
sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential
四、测试(小海龟)

要打开窗口界面的,所以需要在ubunutu16桌面打开终端执行,需要三个终端

##相当于服务器,给终端和控制端传递消息
roscore

##小海龟终端
rosrun turtlesim turtlesim_node

##小海龟控制端,按下方向键控制小海龟
rosrun turtlesim turtle_teleop_key

看到图像界面并且能进行控制说明测试通过,安装完成。

博文参考1http://t.csdnimg.cn/I5F0D
博文参考2http://t.csdnimg.cn/bsZzU

你可能感兴趣的:(ros,机器人)