ros下gazebo的安装,模型加载和仿真

1、安装环境ubuntu14.04 x64 ROS indigo

2、gazebo的安装:先在ubuntu上安装gazebo,此时和ros没有建立联系,然后在安装gazebo_ros_pkgs这样就可以利用ros的指令启动和加载模型了。流程如下:

2.1在ubuntu下安装gazebo

默认的安装方式:curl -ssL http://get.gazebosim.org | sh(这是利用脚步进行安装的,敲完这条等着就行了)

我在安装过程中报错

libgazebo7-dev : 依赖: libgts-dev 但是它将不会被安装
                  依赖: libgdal-dev 但是它将不会被安装
                  依赖: libsdformat4-dev 但是它将不会被安装
                  依赖: libgazebo7 (= 7.4.0-1~trusty) 但是它将不会被安装
                  依赖: gazebo7-common (= 7.4.0-1~trusty) 但是它将不会被安装
                  依赖: gazebo7-plugin-base (= 7.4.0-1~trusty)
                  冲突: gazebo2 但是 2.2.6-1~trusty 正要被安装

查看后发现,是安装ros indigo的时候有旧版本的gazebo的各种依赖还有库,和现在安装的gazebo7所需要的冲突了。这里我选择移除了冲突库和依赖,然后重新运行了2.1最开始的安装指令,然后就ok了。也可以用新立得软件包查看冲突的项目,然后进行删除旧的库,安装新的库的操作,就不需要再次运行2.1的指令了。打开一个终端,输入:gazebo

出现一个空白世界的界面(不是黑屏的)就说明成功了。也可以自己一步步安装链接在此:http://www.gazebosim.org/tutorials?tut=install_ubuntu&cat=install

2.2在ros下安装gazebo_ros_pkgs。

github上功能包的下载链接:https://github.com/ros-simulation/gazebo_ros_pkgs/tree/indigo-devel(注意选择好和ros对应的版本)

和编译其它功能包没啥区别,放到工作空间的src目录下,然后catkin_make 就完事了。记得source一下你的工作空间然后再厕所哦~

用新立得好像也能一建安装,编译出错的同学不妨一试。

测试:roslaunch gazebo_ros empty_world.launch (空白世界)

目录下有 7个launch文件,都可以打开看看,是不同的模拟场景
3.已有模型的加载

gazebo里面的模型已.urdf和.xacro两种文件保存,可以自己写,我比较懒就直接下载的模型的功能包。

想自己写的同学看这里:http://www.gazebosim.org/tutorials?cat=build_robot

我加载了三个模型分别是PR2,先锋和turtlebot。都可以使用,加载过程大同小异,用PR2来讲解一下:

在这个链接下面模型文件(ros下功能包的形式,不仅仅是单纯的模型文件):https://github.com/PR2/pr2_simulator。放入一个工作空间catkin_make,报错find_package巴拉巴拉的,其实就是找不到依赖的功能包。这里需要安装很多PR2模型依赖的功能包比如pr2_managner等,这里就不细说了,就是报错少哪个功能包就去github下载然后在工作空间下编译即可,别选错ros版本哦~反正我是一一下载编译,废了点时间,但是没有其他的问题。编译pr2_simulator成功之后就可以测试了。

测试:roslaunch pr2_gazebo pr2_table_object.launch,你可以看到一个机器人孤零零立在那里了。可以发现机器人的正前方有扇形的红色区域,那是深度传感器的扫描扇区。用鼠标托几个箱子放旁边,打开rviz,把固定坐标系改为base_link,ADD一个camera,选择一个有消息的topic,你就可以在rviz下看到仿真环境的传感器发来的图像了,这样说明PR2的传感器也加载正常了。

4.仿真。仿真环境搭建完毕,就可以测试我们自己写的程序了。这里需要注意一点,就是话题很可能和你一直用的话题不一样了。比如原来laser的话题是/scan在仿真环境下可能就不是这个了,PR2仿真下的laser话题就是/base_scan,这时候可以用remap指令进行重映射解决这个问题。如在你自己下的程序的launch文件的用到scan话题的节点下添加:
   

这样程序就会把原来的订阅的scan话题全面转换为base_scan话题,就可以正常使用了。当然你在cpp中改订阅者的订阅话题也是可以的,就是麻烦了些。

5.如有错误,请指正,谢谢~

你可能感兴趣的:(ros,ubuntu)