本文主要是介绍ROS -by- Example slam,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
ROS-by-example的安装
在这里我之前用的VM12安装成功之后,仿真器机器人会有问题,故把电脑做成双系统的形式来重新安装;
环境:Ubuntu14.04 LTS 32bits
ROS版本:ROS Indigo
在学习本部分之后的内容,请先学习 beginner_Tutorials 和 learning_tf 的ROS 相关教程。
下面是安装准备
1、在下载机器人程序包之前,我需要先安装一些必要的软件包。直接执行下面的命令进行安装:
(注意:如果你还没有使用 ROS 的国内镜像网站,请先配置相关文件。将 ROS 的下载网站设置为国内镜像网站。参考网站:http://blog.csdn.net/github_35160620/article/details/52337181,这里面有讲:如何设置软件源配置文件。)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | sudo apt-get install -y ros-indigo-turtlebot-bringup \ ros-indigo-turtlebot-create-desktop ros-indigo-openni-* \ ros-indigo-openni2-* ros-indigo-freenect-* ros-indigo-usb-cam \ ros-indigo-laser-* ros-indigo-hokuyo-node \ ros-indigo-audio-common gstreamer0.10-pocketsphinx \ ros-indigo-pocketsphinx ros-indigo-slam-gmapping \ ros-indigo-joystick-drivers python-rosinstall \ ros-indigo-orocos-kdl ros-indigo-python-orocos-kdl \ python-setuptools ros-indigo-dynamixel-motor-* \ libopencv-dev python-opencv ros-indigo-vision-opencv \ ros-indigo-depthimage-to-laserscan ros-indigo-arbotix-* \ ros-indigo-turtlebot-teleop ros-indigo-move-base \ ros-indigo-map-server ros-indigo-fake-localization \ ros-indigo-amcl git subversion mercurial |
ros-by-example包 提供了2个测试用的模拟机器人:TurtleBot 和 Pi Robot
2、在必要软件安装好之后,下载rbx1.
$ cd ~/catkin_ws/src $ git clone https://github.com/pirobot/rbx1.git $ cd rbx1 $ git checkout indigo-devel $ cd ~/catkin_ws $ catkin_make $ source ~/catkin_ws/devel/setup.bash $ rospack profile
在ROS By Example包中都是以rbx1开头,使用如下命令
roscd rbx1 cd .. ls -F
一、简单节点仿真
1. 运行fake_turtlebot节点:
- $ roslaunch rbx1_bringup fake_turtlebot.launch
2. 运行rbx1_nav仿真:
- $ rosrun rviz rviz -d `rospack find rbx1_nav` /sim.rviz
3. 发布一个topic,让机器人动起来:
- $ rostopic pub -r 10 /cmd_vel geometry_msgs/Twist '{ linear:{x: 0.2, y: 0, z: 0 }, angular:{x: 0, y: 0, z: 0.5} }'
这里特别要注意,命令中冒号(:)后面要有一个空格,不然会报错。运行效果如下:
4. 让机器人停止运动:
首先,用ctrl+c结束掉上条命令的执行,然后运行:
- $ rostopic pub -r 10 /cmd_vel geometry_msgs/Twist '{ }'
二、导航仿真
1. 运行fake_turtlebot节点
首先得用ctrl+c关闭先前运行的fake_turtlebot节点,然后运行:
- $ roslaunch rbx1_bringup fake_turtlebot.launch
2. 运行蒙特卡洛粒子滤波算法节点,同时加载地图:
- $ roslaunch rbx1_nav fake_amcl.launch map:=test_map.yaml
3. 运行rviz仿真器
- $ rosrun rviz rviz -d `rospack find rbx1_nav`/nav_test.rviz
点击左上角2D Nav Goal,选择目标点,即可看到导航的仿真效果。到此,总结完毕!
一、用move_base导航走正方形
1、
1 | roscore |
2、执行
1 | roslaunch rbx1_bringup fake_turtlebot.launch |
然后
1 | roslaunch rbx1_nav fake_move_base_blank_map.launch |
接着
1 | rosrun rviz rviz -d `rospack find rbx1_nav`/nav.rviz |
然后:
1 | rosrun rbx1_nav move_base_square.py |
二、避开模拟障碍物
1、
1 | roscore |
2、执行
1 | roslaunch rbx1_bringup fake_turtlebot.launch |
然后:
1 | rosparam delete /move_base |
接着:
1 | roslaunch rbx1_nav fake_move_base_map_with_obstacles.launch |
开启rviz:
1 | rosrun rviz rviz -d `rospack find rbx1_nav`/nav_obstacles.rviz |
当move_base节点正在运行时,可看到RViz中的障碍物,点击reset按钮刷新显示,然后运行python脚本:
1 | rosrun rbx1_nav move_base_square.py |
这篇关于ROS -by- Example slam的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!