本文主要介绍一下ROS是什么,如何在Ubuntu中安装ROS,以及如何基于ROS在Gazebo模拟器中通过键盘控制TurtleBot移动。
ROS是什么
ROS为Robot Operating System(机器人操作系统)的简写,是一个面向机器人的开源元操作系统(open-source,meta-operating system)。它能够提供类似传统操作系统的诸多功能,如硬件抽象、底层设备控制、进程间消息传递和程序包管理等。此外,它还提供相关工具和库,用于获取、编译、编辑代码以及在多个计算机之间运行程序完成分布式计算。ROS的运行架构是一种使用ROS通信模块实现模块间P2P的松耦合的网络连接的处理架构,它执行若干种类型的通讯,包括基于服务的同步RPC(远程过程调用)通讯、基于Topic的异步数据流通讯,还有参数服务器上的数据存储。
在Ubuntu中安装ROS
因为ROS Indigo只支持Saucy (13.10) 和 Trusty (14.04),故此处介绍在Ubuntu14.04中如何安装ROS Indigo。打开终端后,按照下面步骤将命令复制(ctrl+c)、粘贴(ctrl+shift+v)到终端。
第一步:添加 sources.list。
一旦添加了正确的软件源,操作系统就知道去哪里下载程序,并根据命令自动安装软件。
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
第二步:添加keys
sudo apt-key adv --keyserver hkp://pool.sks-keyservers.net --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
第三步:安装
首先确认你的Debian的软件包索引是最新的。
sudo apt-get update
推荐桌面完整版安装:因为其包含所有的packages
sudo apt-get install ros-indigo-desktop-full
此处安装需要等一段时间。可能有几个包安装失败,如下:
根据提示,重新更新并安装,即重复第三步。
第四步:初始化rosdep。
rosdep可以方便在你需要编译某些源码的时候为其安装一些系统依赖,同时也是某些ROS核心功能组件所必需用到的工具。
sudo rosdep init
rosdep update
第五步:环境设置。
添加ROS的环境变量,这样,当你打开你新的shell时,你的bash会话中会自动添加环境变量。
echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc
source ~/.bashrc
第六步:安装rosinstall。
rosinstall命令是一个使用的非常频繁的命令,使用这个命令可以轻松的下载许多ROS软件包。
sudo apt-get install python-rosinstall
至此,ROS安装完毕。
用键盘控制TurtleBot移动
首先安装一个catkin_tools:
sudo apt-get install python-catkin-tools
然后安装turtlebot软件:
sudo apt-get install ros-indigo-turtlebot ros-indigo-turtlebot-apps ros-indigo-turtlebot-interactions ros-indigo-turtlebot-simulator ros-indigo-kobuki-ftdi ros-indigo-rocon-remocon ros-indigo-rocon-qt-library ros-indigo-ar-track-alvar-msgs
安装结束,启动turtlebot仿真环境:
小提示:双击Tab键可以显示补全命令名,如下:
启动仿真环境:
roslaunch turtlebot_gazebo turtlebot_world.launch
启动后会弹出一个Gazebo三维场景(初次启动比较慢),如下:
此处可能会出现如下报错:
Invalid
Arg xml is
The traceback for the exception was written to the log file
则重新进行上节安装ROS中的第五步,即重新配置环境变量。
Gazebo界面操作方法:左键单击拖动——平移,中键单击拖动——动态观察,滚轮缩放,右键单击拖动——缩放。
下面演示用键盘控制turtlebot
此时在终端单击右键打开一个标签页:
输入命令:
roslaunch turtlebot_teleop keyboard_teleop.launch
我们将看到移动键,加减速键,停止键,如下:
下面你就可以用键盘控制turtlebot的移动啦~注意:只能在终端界面用键盘控制turtlebot移动,无法在Gazebo界面控制,如下:
参考资料:
[1]《机器人操作系统(ROS)浅析》( Jason M. O'Kane著)
[2]http://wiki.ros.org/cn/indigo/Installation/Ubuntu