赞
踩
Gazebo是一个优秀的功能强大开源物理环境仿真平台,具备强大的物理引擎,高质量的图形渲染等优异优点,可在机器人和周围环境加入多种物理属性,对机器人传感器信息通过插件形式加入仿真,并以可视化的方式进行显示。通过终端命令“roscore”启动ROS,重新打开一个终端,“rosrun gazebo_ros gazebo”启动Gazebo界面。
5.1构建仿真环境,仿真环境的构建有两种方法:
<1>.直接插入模型,通过下载GitHub网站共享模型文件将其放置到.gazebo/models路径下,终端输入命令“git clong https:github.com/osrf/gazebo_models.git”进行模型远程下载,模型较多,保持网络流畅,建议连接手机热点进行下载,耐心等待,下载完成后在主目录下生成gazebo_models文件,在usr/include/gazebo-9/gazebo目录下打开终端输入命令“sudo mkdir -p models”在gazebo目录下生成models文件夹,Ctrl+alt+t重新打开终端,命令“sudo mv gazebo_models/ /usr/include/gazebo-9/gazebo/models”将下载的模型文件拷贝到.gazebo/models路径下,启动Gazebo,在左侧模型列表中,在insert选项下选择“Add Path”选项,选中.gazebo/models目录下的gazebo_models模型文件夹,点击对话框右上角“open”,返回Gazebo界面在右侧模型列表下产生一系列仿真环境模型,选择适用模型放置在主显示区中。
<2>.Building Editor,使用Gazebo提供的Building Editor工具手动绘制地图,在Gazebo左侧选项栏中选择“Edit”→“Building Editor”,可以打开如图界面,选择左侧绘制选项在上侧窗口鼠标绘制,下侧窗口实时显示仿真环境。
5.2在Gazebo中机器人模型的导入
模型导入之前要为机器人模型添加Gazebo属性,分别包括<1>.为link添加<gazebo>标签,仅包含material参数设置外观颜色,默认模型灰白色。<2>.添加传动装置,通过加入驱动机器人运动的动力源调节两轮驱动速度比例,进而完成一系列动作,需要在模型中加入<transmission>元素使用ROS控制器驱动机器人,将传动装置与joint绑定。<3>.为使机器人完成在Gazebo中的运动仿真,需要使用Gazebo控制器插件,帮助模型绑定ROS信息,完成传感器的仿真输出以及对电机的控制,Gazebo已经提供了一个用于差速控制的插件libgazebo_ros_diff_drive.so,将其应用到现有机器人模型上需要添加插件声明。(添加Gazebo属性的模型文件放置在源码ros_exploring/robot_mrobot/mrobot_gazebo功能包文件夹下) 为机器人添加完成一系列Gazebo属性后,终端输入命令“roslaunch mrobot_gazebo view_mrobot_gazebo.launch”通过launch启动文件运行Gazebo加载机器人模型,一切正常,外观蓝色的机器人模型成功加载到仿真环境中。5.3控制机器人在Gazebo中运动
机器人模型中已经加入libgazebo_ros_diff_drive.so插件,在catkin_ws目录下设置环境变量后终端输入“rosrun teleop_twist_keyboard teleop_twist_keyboard.py”启动键盘控制节点控制机器人在Gazebo中运动,键盘按键同Rviz仿真,运动过程中对于小型障碍物机器人可进行推动,对于大型障碍物机器人将难以运动。
5.4传感器仿真
在rviz+ArbotiX仿真环境中,机器人装配的传感器模型并无法获取任何环境数据,Gazebo提供了一系列传感器插件获取仿真环境传感信息,以摄像头模型为例,为摄像头模型添加Gazebo插件,类似于机器人模型中的差速控制器插件,传感器插件也需要在URDF文件中配置,复制mrobot_description中的传感器模型到mrobot_gazebo包中,在摄像头模型文件中添加两个<gazebo>相关标签,第一个<gazebo>设置摄像头模型material外观,在第二个<gazebo>标签中,<sensor>标签包含传感器各种属性,<camera>标签具体描述摄像头参数,最后使用<plugin>标签加载摄像头插件libgazebo_ros_camera.so,同时设置插件参数。(摄像头插件配置完成的机器人模型文件mrobot_with_camera.urdf.xacro) 摄像头插件配置完成后,终端“roslaunch mrobot_gazebo view_mrobot_with_camera_gazebo.launch”在Gazebo加载配置了摄像头的机器人模型,终端输入命令“rqt_image_view”,在对话框中选择仿真摄像头发布的图像话题/camera/image_raw,即可显示摄像头观测到的图像信息,同时配合键盘控制节点控制机器人运动,可实现运动过程中实时显示摄像头捕捉到的环境信息。 5.5SLAM建图
由于机器人在Gazebo中使用激光雷达进行SLAM仿真效果更好,最终建立的地图几乎和仿真环境一致,为方便后期仿真工作,因此此处也针对于激光雷达传感器进行操作。同样采取类似于摄像头传感器的操作方式,在自定义完成激光雷达模型后添加激光雷达插件,其中<gazebo>标签中在<ray>标签中设置雷达参数,使用<plugin>标签中加载激光雷达插件libgazebo_ros_laser.so,使模型在Gazebo环境中具有雷达的仿真功能。(激光雷达插件配置完成的机器人模型文件mrobot_with_rplidar.urdf.xacro) 激光雷达插件配置完成后,终端“roslaunch mrobot_gazebo view_mrobot_with_laser_gazebo.launch”在Gazebo加载配置了激光雷达的机器人模型,终端打开Rviz查看激光雷达数据,在rviz中设置“Fixed Frame”为“base_footprint”,在“add”中添加一个LaserScan类型的插件,修改插件订阅话题为“/scan”,便可在Rviz界面中显示激光雷达数据。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。