Ubuntu18.04安装ROS并实现小海龟demo
一、ROS的介绍
机器人操作系统(Robot Operating System, ROS)是一个应用于机器人上的操作系统,它操作方便、功能强大,特别适用于机器人这种多节点多任务的复杂场景。
说明:ROS是一个适用于机器人编程的框架, 这个框架把原本松散的零部件耦合在了一起, 为他们提供了通信架构。 ROS虽然叫做操作系统, 但并非Windows、 Mac那样通常意义的操作系统, 它只是连接了操作系统和你开发的ROS应用程序, 所以它也算是一个中间件, 基于ROS的应用程序之间建立起了沟通的桥梁, 所以也是运行在Linux上的运行环境, 在这个环境上, 机器人的感知、 决策、 控制算法可以更好的组织和运行。
二、ROS软件安装
1.添加ROS软件源
打开终端,选择下面其中一个软件源,然后回车。
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’
2.添加密钥
sudo apt-key adv --keyserver ‘hkp://keyserver.ubuntu.com:80’ --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
3.安装软件包
sudo apt install ros-melodic-desktop-full
4.初始化rosdep
sudo rosdep init
如果出现错误:cannot download default sources list from:,则输入:
cd /etc
sudo gedit hosts
在文件末尾换行加上:
151.101.84.133 raw.githubusercontent.com
之后保存文件,关闭终端再次执行sudo rosdep init,成功结果如下。
5.rosdep升级
rosdep update
下载源是国外的网站,只能翻墙,或者碰运气,换源多执行几次。如果成功了可以直接跳到第9步。另外也可以离线安装,下载好更新内容之后,将下载源全都改为本地的地址。在此因为版权问题我就不放离线包的链接了,可以在其他博主下找到离线包的资源,如果实在找不到可以私信我。
1.更新rosdep相关文件,增加代理地址
rm rosdep_update.sh ; wget https://gitee.com/ncnynl/rosdep/raw/master/rosdep_update.sh ; sudo chmod +x ./rosdep_update.sh; sudo ./rosdep_update.sh
完成之后,运行rosdep update即不会出现错误提示 脚本只能运行一次,多次运行,会提示重复运行信息
2.恢复rosdep相关文件,去掉代理地址
rm rosdep_recover.sh ; wget https://gitee.com/ncnynl/rosdep/raw/master/rosdep_recover.sh ; sudo chmod +x ./rosdep_recover.sh; sudo ./rosdep_recover.sh
将rosdistro-master压缩包放在Ubuntu虚拟机的主目录下,然后执行:
cd ~
unzip rosdistro-master.zip
mv rosdistro-master rosdistro
修改20-default.list文件:
sudo gedit /etc/ros/rosdep/sources.list.d/20-default.list
打开文件后删除文件内容,然后输入以下内容:
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
其中xxx是自己的用户名,下面也是。
修改 sources_list.py 文件:
sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/sources_list.py
注释之前的DEFAULT_SOURCES_LIST_URL一行,然后增加:
DEFAULT_SOURCES_LIST_URL = ‘file:///home/xxx/rosdistro/rosdep/sources.list.d/20-default.list’
修改 rep3.py 文件:
sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/rep3.py
注释原 REP3_TARGETS_URL 一行,然后增加:
REP3_TARGETS_URL = ‘file:///home/xxx/rosdistro/releases/targets.yaml’
修改 init.py 文件:
sudo gedit /usr/lib/python2.7/dist-packages/rosdistro/init.py
注释原 DEFAULT_INDEX_URL 一行,然后在其后添加如下一行:
DEFAULT_INDEX_URL = ‘file:///home/xxx/rosdistro/index-v4.yaml’
重新执行 rosdep update。
6.运行小海龟
添加ros环境变量:
echo “source /opt/ros/melodic/setup.bash” >> ~/.bashrc
source ~/.bashrc
安装rosinstall:
sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential
初次运行配置环境变量:
echo “source /opt/ros/melodic/setup.bash” >> ~/.bashrc
source ~/.bashrc
打开第一个终端运行:
roscore
打开第二个终端运行:
rosrun turtlesim turtlesim_node
此时有个静止的小乌龟,之后打开第三个终端运行:
rosrun turtlesim turtle_teleop_key
可以使用方向键控制小乌龟移动。
三、小结
安装ROS的整个过程,首先需要选择对应版本的ROS,接着就是在网络问题上的处理。目前网上还没有比较好的方法来解决线上安装过程遇到的网络问题,最佳的方式就是放弃线上安装,选择本地下载安装,不然会花费比较久的时间。