一. 添加传感器插件
(1)在rrbot.xacro中添加< link/>和< joint/>,内容如下:

<joint name="camera_joint" type="fixed"><axis xyz="0 1 0" /><origin xyz="${camera_link} 0 ${height3 - axel_offset*2}" rpy="0 0 0"/><parent link="link3"/><child link="camera_link"/></joint><!-- Camera --><link name="camera_link"><collision><origin xyz="0 0 0" rpy="0 0 0"/><geometry><box size="${camera_link} ${camera_link} ${camera_link}"/></geometry></collision><visual><origin xyz="0 0 0" rpy="0 0 0"/><geometry><box size="${camera_link} ${camera_link} ${camera_link}"/></geometry><material name="red"/></visual><inertial><mass value="1e-5" /><origin xyz="0 0 0" rpy="0 0 0"/><inertia ixx="1e-6" ixy="0" ixz="0" iyy="1e-6" iyz="0" izz="1e-6" /></inertial></link>

上面是用于rviz加载
(2)在rrbot.gazebo中添加如下内容:

  <!-- camera --><gazebo reference="camera_link"><sensor type="camera" name="camera1"><update_rate>30.0</update_rate><camera name="head"><horizontal_fov>1.3962634</horizontal_fov><image><width>800</width><height>800</height><format>R8G8B8</format></image><clip><near>0.02</near><far>300</far></clip><noise><type>gaussian</type><!-- Noise is sampled independently per pixel on each frame.That pixel's noise value is added to each of its colorchannels, which at that point lie in the range [0,1]. --><mean>0.0</mean><stddev>0.007</stddev></noise></camera><plugin name="camera_controller" filename="libgazebo_ros_camera.so"><alwaysOn>true</alwaysOn><updateRate>0.0</updateRate><cameraName>rrbot/camera1</cameraName><imageTopicName>image_raw</imageTopicName><cameraInfoTopicName>camera_info</cameraInfoTopicName><frameName>camera_link_optical</frameName><!-- setting hackBaseline to anything but 0.0 will cause a misalignmentbetween the gazebo sensor image and the frame it is supposed tobe attached to --><hackBaseline>0.0</hackBaseline><distortionK1>0.0</distortionK1><distortionK2>0.0</distortionK2><distortionK3>0.0</distortionK3><distortionT1>0.0</distortionT1><distortionT2>0.0</distortionT2><CxPrime>0</CxPrime><Cx>0.0</Cx><Cy>0.0</Cy><focalLength>0.0</focalLength></plugin></sensor></gazebo>
<gazebo reference="camera_link">

首先这个link的名字必须与我们添加到xacro文件中的canera的link匹配。

<sensor type="camera" name="camera1">

其次传感器的名字必须是唯一的,除了在gazebo插件中,这个名字不能用在其它地方。

<update_rate>30.0</update_rate>

这是在仿真期间传感器尝试刷新的最大频率,但是当物理仿真速度快于传感器生成的速度时,它会低于这个目标值。

        <horizontal_fov>1.3962634</horizontal_fov><image><width>800</width><height>800</height><format>R8G8B8</format></image><clip><near>0.02</near><far>300</far></clip>

上面的取值是与自身相机物理硬件的规格相匹配。而< near>和< far>表示的是相机可以看到物体的最近和最远距离。

<plugin name="camera_controller" filename="libgazebo_ros_camera.so">

这个是实际文件gazebo_ros/gazebo_ros_camera.cpp所要链接的。

        <cameraName>rrbot/camera1</cameraName><imageTopicName>image_raw</imageTopicName><cameraInfoTopicName>camera_info</cameraInfoTopicName>

这里定义的是相机发布的话题。对于rrbot,我们所要订阅的话题为:

/rrbot/camera1/image_raw
/rrbot/camera1/camera_info

二. 运行launch文件

roslaunch rrbot_gazebo rrbot_world.launch
roslaunch rrbot_description rrbot_rviz.launch

结果如下图:


运行rqt_graph,显示节点图:

可以看出gazebo和rviz中的机器人状态不一致。
此时加载的rrbot_world.launch的内容如下:

<launch><!-- these are the arguments you can pass this launch file, for example paused:=true --><arg name="paused" default="false"/><arg name="use_sim_time" default="true"/><arg name="gui" default="true"/><arg name="headless" default="false"/><arg name="debug" default="false"/><!-- We resume the logic in empty_world.launch, changing only the name of the world to be launched --><include file="$(find gazebo_ros)/launch/empty_world.launch"><arg name="world_name" value="$(find rrbot_gazebo)/worlds/rrbot.world"/><arg name="debug" value="$(arg debug)" /><arg name="gui" value="$(arg gui)" /><arg name="paused" value="$(arg paused)"/><arg name="use_sim_time" value="$(arg use_sim_time)"/><arg name="headless" value="$(arg headless)"/></include><!-- Load the URDF into the ROS Parameter Server --><param name="robot_description"command="$(find xacro)/xacro --inorder '$(find rrbot_description)/urdf/rrbot.xacro'" /><!-- Run a python script to the send a service call to gazebo_ros to spawn a URDF robot --><node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model" respawn="false" output="screen"args="-urdf -model rrbot -param robot_description"/></launch>

rrbot_rviz.launch的内容如下:

<launch><param name="robot_description"command="$(find xacro)/xacro --inorder '$(find rrbot_description)/urdf/rrbot.xacro'" /><!-- send fake joint values --><node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher"><param name="use_gui" value="true"/></node><!-- Combine joint values --><node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher"/><!-- Show in Rviz   --><node name="rviz" pkg="rviz" type="rviz" args="-d $(find rrbot_description)/launch/rrbot.rviz"/></launch>

对于添加激光雷达插件是一样的原理。

参考:
http://gazebosim.org/tutorials?tut=ros_gzplugins

gazebo教程---使用gazebo插件相关推荐

  1. 建造属于你的无人驾驶车——(七)为XACRO模型添加GAZEBO属性与运动控制插件

    建造属于你的无人驾驶车! 本专栏持续更新中- 程序源码:https://github.com/kkmd66/ZZX_RUN Solidworks模型文件:https://github.com/kkmd ...

  2. 【从零开始的ROS四轴机械臂控制】(二) - ROS与Gazebo连接,Gazebo仿真及urdf文件修改

    [从零开始的ROS四轴机械臂控制(二)] 四.urdf文件及gazebo仿真 1.simple_arm示例 (1)config文件夹 (2)launch文件夹 (3)meshes文件夹 (4)urdf ...

  3. cass插件_南方CASS专题系列,全套教程+视频讲解+插件汇总,全部打包速带走

    南方CASS专题系列,全套教程+视频讲解+插件汇总,全部打包速带走 CASS软件是基于CAD平台开发的一套集地形.地籍.空间数据建库.工程应用.土石方算量等功能为一体的软件系统:广泛应用于地形成图.地 ...

  4. java post请求 json_好程序员Java教程分享Vue插件之Axios

    好程序员Java教程分享Vue插件之Axios 环境安装: npm install --save axios vue-axios //安装axios Npm install //安装依赖 在main. ...

  5. cass读取dat文件_南方CASS教程+视频讲解+插件汇总,小白快速上手的测绘神器

    南方CASS教程+视频讲解+插件汇总,小白快速上手的测绘神器 自CASS软件推出以来,市场占有率遥遥领先,已经成为业内应用最广.使用最方便快捷的软件品牌.也是用户量最大.升级最快.服务最好的主流成图和 ...

  6. jQuery起点教程之有序化插件实例

    jQuery起点教程之有序化插件实例是一篇使用jquery的tablesorter插件来实现一些功能效果的教程,大家可以认真学习一下.Sort me将我有序化:使用tablesorter插件进行表格排 ...

  7. cass参考手册_什么?你还不会测绘?南方CASS教程+视频讲解+插件汇总,快来学!...

    自南方CASS软件推出以来,市场占有率遥遥领先,已经成为业内应用最广.使用最方便快捷的软件品牌,也是用户量最大.升级最快.服务最好的主流成图和土石方计算软件系统.但对于想学好测绘的朋友来说,如何快速上 ...

  8. Revit综合插件使用教程,综合插件主要的几个功能(下)

    Revit综合插件使用教程,综合插件主要的几个功能(下) [问题视图]将问题记录在项目中,随时查看.定位. 需求场景:不知道有没人和我一样,建模时最怕遇到设计问题(难道就不能让我建出最完美的模型?\狗 ...

  9. java lodop打印_[Java教程]LODOP打印插件

    [Java教程]LODOP打印插件 0 2016-03-15 10:00:06 HTML代码(请先下载对应LODOP插件安装)  -    打印onclike事件CreatePrintPage()打印 ...

最新文章

  1. php静态方法场景,深入介绍PHP中的static的修饰方法和yield的使用场景
  2. 一文看懂集群、分布式与负载均衡的关系
  3. 修改Win10 alt+F4默认选项为关机
  4. scoket多线程例子
  5. 微信小程序提醒并延迟跳转
  6. java设置面板的大小_java – 设置面板的大小
  7. Pentium Pro架构/流水线及其优化 (2) - 指令流水线 存储子系统详解
  8. 怎么分辨是不是外包工司_怎么分辨白酒是不是纯粮食酒?学会这几招,轻松辨别真假白酒...
  9. MySQL中的常用函数和聚合函数
  10. IEEE Access的模板的问题
  11. 微机原理与接口技术整理
  12. 【Windows】打印机0x0000011b解决办法
  13. mac 上装windows系统 win10 没声音 耳机也没声音
  14. 生物信息学python脚本_使用Python/Biopython/Clustalw的生物信息学脚本,使用stdout迭代蛋白质目录...
  15. 微信公众平台编辑器教程-微信公众号使用教程32
  16. C++中cout、cin和endl的用法
  17. L2TP协议及AVP
  18. 用CBF做DOA原理与MATLAB实例
  19. VSTS Overview
  20. Logistic Regression with Python

热门文章

  1. android 手机资源获取失败,安卓root权限获取失败原因及解决办法
  2. QQ发送PDF为什么显示服务器,qq上传输文件默认发送在线文件设置.pdf
  3. 【路径规划】粒子群算法机器人避障路径规划【含GUI Matlab源码 923期】
  4. surface3的2G版用matlab,新品小降:Microsoft 微软 Surface 3 平板(2G、64G)
  5. 计算机的幼儿教育,计算机科学在幼儿教育中的探讨
  6. “Authentication is not valid“和“Insufficient permission“是同样的意思
  7. italic和oblique区别
  8. cxfreeze的打包实践
  9. Elasticsearch实战之(商品搜索API实现)
  10. IWebBrowser2登陆网站(无验证码的)