ROS安装
一、配置ubuntu的软件和更新
配置ubuntu的软件和更新,允许安装不经认证的软件。首先打开“Software and Update”对话框,具体可以在 Ubuntu 搜索按钮中搜索。打开后按照下图进行配置:
二、换源
以下三个源都可以:
1.国内源
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
2.清华源
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
3.中科大源
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'
4.中手动换源
上面三个能会出现找不到sources.list.d/ros-latest.list
文件的情况,需要手动换源。
三、设置key
源换好了之后设置key
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
四.安装ROS
官方建议使用 apt 而非 apt-get
sudo apt update
sudo apt-get install ros-kinetic-desktop-full
五、初始化ROS
sudo rosdep init
rosdep update
上面这一步会报错,因为国内的服务器无法完成。
解决方案如下:
1.下载rosdistro功能包
进入github.com/ros/rosdistro下载这个功能包。
2.修改20-default.list
修改这个包中rosdep/source.list.d/下的文件20-default.list,将这个文件中指向raw.githubusercontent.com的url地址全部修改为指向本地文件的地址,也就是该下载好的包的地址:
# os-specific listings first
yaml file:///home/xxx/rosdistro/rosdep/osx-homebrew.yaml osx
# generic
yaml file:///home/xxx/rosdistro/rosdep/base.yaml
yaml file:///home/xxx/rosdistro/rosdep/python.yaml
yaml file:///home/xxx/rosdistro/rosdep/ruby.yaml
gbpdistro file:///home/xxx/rosdistro/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
yaml file:///home/chen/Downloads/rosdistro-master/rosdep/osx-homebrew.yaml osx
# generic
yaml file:///home/chen/Downloads/rosdistro-master/rosdep/base.yaml
yaml file:///home/chen/Downloads/rosdistro-master/rosdep/python.yaml
yaml file:///home/chen/Downloads/rosdistro-master/rosdep/ruby.yaml
gbpdistro file:///home/chen/Downloads/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
3.修改默认的url的地址
修改/usr/lib/python2.7/dist-packages/rosdep2/main.py中的默认的url的地址,但是经过代码阅读,该文件中并不存在指向raw.githubusercontent.com的代码。而且经过对代码的分析,提示报错的代码就在该文件中
def command_init(options):
try:
data = download_default_sources_list()
except URLError as e:
print('ERROR: cannot download default sources list from:\n%s\nWebsite may be down.' % (DEFAULT_SOURCES_LIST_URL))
return 4
except DownloadFailure as e:
print('ERROR: cannot download default sources list from:\n%s\nWebsite may be down.' % (DEFAULT_SOURCES_LIST_URL))
由于其调用了download_default_sources_list()这个函数
而该函数就在/usr/lib/python2.7/dist-packages/rosdep2该文件夹下面的sources_list.py文件里面。而这个文件里面的代码则进行了访问raw.githubusercontent.com的操作,因此修改该默认url即可。
# default file to download with 'init' command in order to bootstrap
# rosdep
DEFAULT_SOURCES_LIST_URL = 'file:///home/xxx/rosdistro/rosdep/sources.list.d/20-default.list'
# seconds to wait before aborting download of rosdep data
该步实际并不是修改 main.py 文件里面默认url的指向地址,而是修改同文件夹下的sources_list.py文件里面的代码,下面是我修改好的:
# default file to download with 'init' command in order to bootstrap
# rosdep
DEFAULT_SOURCES_LIST_URL = 'file:///home/chen/Downloads/rosdistro-master/rosdep/sources.list.d/20-default.list'
# seconds to wait before aborting download of rosdep data
4.修改rep3.py、init.py里面的代码:
/usr/lib/python2.7/dist-packages/rosdep2/rep3.py
/usr/lib/python2.7/dist-packages/rosdistro/init.py
下面是我分别修改后的样例:
/usr/lib/python2.7/dist-packages/rosdep2/rep3.py文件:
# location of targets file for processing gbpdistro files
REP3_TARGETS_URL = 'file:///home/chen/Downloads/rosdistro-master/releases/targets.yaml'
# seconds to wait before aborting download of gbpdistro data
/usr/lib/python2.7/dist-packages/rosdistro/__init__.py的文件:
# index information
DEFAULT_INDEX_URL = 'file:///home/chen/Downloads/rosdistro-master/index-v4.yaml'
def get_index_url():
5.再次初始化
sudo rosdep init
rosdep update
如果有以下提示:
ERROR: default sources list file already exists:
/etc/ros/rosdep/sources.list.d/20-default.list
Please delete if you wish to re-initialize
那么就进入到/etc/ros/rosdep/sources.list.d/目录中把20-default.list删除即可。
sudo rm -r 20-default.list
再次初始化,应该可以通过:
六、配置ROS环境变量
初始化完成后可以配置ROS环境
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
七、安装ROS依赖
安装依赖项
sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential
八、安装完成.可以测试
CTRL+ALT+T打开终端,roscore启动
roscore
再打开一个新的终端,输入以下命令,弹出一个小乌龟窗口:
rosrun turtlesim turtlesim_node
出现一个小乌龟的LOGO后,再打开一个新的终端,输入以下命令
rosrun turtlesim turtle_teleop_key
通过方向键控制小乌龟的移动,,安装成功。