目录
(二)ROS环境配置
解决了网卡和显卡的问题(实验室有两块显卡,一块是Q P620一块是Titani V,P620的驱动成功安装了,但是TitanV安装出现了循环登录。)可以开始搭建ROS环境了。
ROS版本选择
需要安装ROS的有两个设备,一个是安装在机器人上的TX1,一个是我们的台式服务器。两个设备都采用了Ubuntu16.04的系统,因此选择对应的ROS Kinetic版本。
安装ROS
1、更新配置
首先确保“设置->软件和更新->Ubuntu软件”的前四项勾选,并确保选择合适的服务器。否则会出现类似于:
XXX: Depends: XXXX4.10
Depends: XXXXX但是它将不会被安装
Recommends: XXXXXXXX 但是它将不会被安装
E: Unable to correct problems, you have held broken packages.
的依赖项问题。
2、添加下载源和公钥
需要事先添加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系统的一种安全机制,也是ROS安装中不可缺的一部分。
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
3、更新系统
成功添加公钥后更新系统
sudo apt-get update && apt-get upgrade
4、下载ROS
我们希望使用功能完整的ROS,所以下载桌面完整版:
sudo apt-get install ros-kinetic-desktop-full
大小大概是2~3个G,现在等待安装结束。
配置ROS
接下来还有几个比较重要的ROS组件需要我们配置。
rosdep
rosdep可以方便在你需要编译某些源码的时候为其安装一些系统依赖,同时也是某些ROS核心功能组件所必需用到的工具。
编译他人代码的时候不需要担心缺少依赖项了。(只能安装系统依赖项,并不是所有依赖项都能用rosdep解决)
sudo rosdep init && rosdep update
更新.bashrc
这是极其重要的一部,.bashrc文件位于主文件夹(Home)下,不过被隐藏了起来了。使用ctrl+H就可以查看。
ROS的环境配置,是每一个终端彼此独立的,但是他们都会运行.bashrc,因此我们需要将ROS的bash文件写入.bashrc当中,这样我们每开启一个终端,就会自动source ROS。
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
这里还有一件事情要强调一下,如果我们使用的是普通的终端,那么就按照如上操作没有问题。如果使用的是zsh的shell,那么你需要source的就是.zsh文件。
安装rosinstall
rosinstall 是ROS中一个独立分开的常用命令行工具,它可以方便让你通过一条命令就可以给某个ROS软件包下载很多源码树。
sudo apt-get install python-rosinstall
更新Gazebo
ros桌面完整版虽然自带rviz和Gazebo,但是很可能不是最新的版本,如果你的项目需要最新的Gazebo支持,那么确保将Gazebo更新到7.0以上的版本。
sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
sudo apt-get update
sudo apt-get install gazebo7
最新版本是Gazebo9,但是需要先卸载原来的Gazebo。我们只更新到7.14就可以了。
更改Python默认编码配置
目前ROS使用的Python代码是支持Python2的,ROS2才开始支持Python3,所以我们需要确保默认的Python版本是2.x。
并且将Python的默认编码方式修改为utf-8。否则会出现
‘ascii’ codec can’t decode byte 0xe6 in position 10: ordinal not in range(128)
The traceback for the exception was written to the log file
的问题。
更改的方式是进入在python的lib文件夹下的sitecustomize.py文件中添加代码:(文件位于/usr/lib/python2.7)
加上这两句
import sys
sys.setdefaultencoding('utf-8')
接下来我们测试一下代码,看看安装是否成功。
安装成功!