对于新手来说,自行学习建造一个自动化的机器人是很困难的,因为机器人学覆盖面很广,涉及到大量的硬件和软件知识,这都需要深入了解。尽管ROS可以搭建在多种硬件之上,但是并不一定要有一个真实的机器人才能开始学习它。ROS包括许多能在模拟环境中运行机器人的程序包,以便在真实的世界里冒险之前就可以测试有关程序。
ROS运行的上位机可以是Raspberry Pi,TK1/TX1, BeagleBone, 笔记本电脑等,对于仿真应用来说,采用笔记本即可。
ROS不同版本的语义不尽相同,这里采用的软件版本是:
Software
- ROS: Indigo version 1.11.20
- OS: Ubuntu 14.04
- Gazebo 5.3.0
设置工作环境:
// 安装git svn
$ sudo apt-get update
$ sudo apt-get install git subversion mercurial
// 安装ROS
$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
$ sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
$ sudo apt-get update
$ sudo apt-get install ros-indigo-desktop-full
$ sudo rosdep init
$ rosdep update
$ echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc
$ source ~/.bashrc
// 安装catkin Command Line Tools
$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu `lsb_release -sc` main" > /etc/apt/sources.list.d/ros-latest.list'
$ wget http://packages.ros.org/ros.key -O - | sudo apt-key add -
$ sudo apt-get update
$ sudo apt-get install python-catkin-tools
// 安装Gazebo
$ curl -ssL http://get.gazebosim.org | sh
// Create workspace:
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
$ catkin_init_workspace
// Build the workspace:
$ cd ~/catkin_ws/
$ catkin build
// Source your workspace:
$ source devel/setup.bash
推荐两个入门的范例:
https://github.com/richardw05/mybot_ws
https://github.com/pirobot/rbx1
区别是使用的仿真器不同,分别使用Gazebo和Arbotix,下面使用arbotix作为示例:
$ rospack profile
$ roslaunch rbx1_bringup fake_pi_robot.launch
如果正常可以得到如下启动信息:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0NXYFhGd192UvwVe0lmdhJ3ZvwFM38CXlZHbvN3cpR2Lc1TPB10QGtWUCpEMJ9CXsxWam9CXwADNvwVZ6l2c052bm9CXUJDT1wkNhVzLcRnbvZ2Lc1TPRlVNGJDZoxGWZZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39TN1QTO1ITNzEDMyQDM3EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
rosrun rviz rviz -d `rospack find rbx1_nav`/sim.rviz
调出RViz可以看到模拟的机器人pirobot.
$ rostopic pub -r /cmd_vel geometry_msgs/Twist
'{linear: {x: 0.2, y: 0, z: 0},
angular: {x: 0, y: 0, z: 0.5}}'
该命令可以使机器人按照逆时针圆圈方向运动:
发布一个空消息来停止机器人的运动,reset按键可以清屏。
进入launch目录:
可以自定义启动文件: