学习笔记19 --gazebo仿真使用的bumper传感器无数据输出问题解决

环境:ubnutu16.04 ros-kinetic gazebo7.16

问题:在urdf添加了仿真时候用的碰撞传感器bumper(这个是gazebo本身自带的,直接在urdf里面声明就可以使用了),但是无论怎么碰撞测试,该topic都是没有数据输出的.

原因有:
1)定义的传感器没有裸露在外侧,没有办法和外界接触
2)排除了1)的可能性后,就是在urdf定义该传感器问题了:gazebo-sensor-contact-collision 没有指定定义bumper的link的sdf中的collision名称.

解决方式补全原因2)的名称,下面用案例来展示:

<link name="base_link"/>
<joint name="bumper_joint" type="fixed">
    <origin xyz="1 0 0" rpy="0 0 0"/>
    <parent link="base_link"/>
    <child link="bumper_link"/>
</joint>
<link name="bumper_link">
    <visual>
        <origin xyz="0 0 0" rpy="0 0 0"/>
        <geometry>
            <box size="0.01 0.1 0.1"/>
        </geometry>
    </visual>
    <collision>
        <origin xyz="0 0 0" rpy="0 0 0"/>
        <geometry>
            <box size="0.01 0.1 0.1"/>
        </geometry>
    </collision>
    <inertial>
        <mass value="0.1"/>
        <origin xyz="0 0 0" rpy="0 0 0"/>
        <inertia ixx="1000" ixy="0" ixz="0" iyy="1000" iyz="0" izz="1000"/>
    </inertial>
</link>
<gazebo reference="bumper_link">
    <sensor type="contact" name="bumper">
        <always_on>true</always_on>
        <update_rate>1000.0</update_rate>
        <visualize>true</visualize>
        <contact>
        //重点获取该collision名称
            <collision>base_link_joint_lump__bumper_link_collision_1</collision>
        </contact>
        <plugin name="gazebo_ros_bumper_controller" filename="libgazebo_ros_bumper.so">//gazebo自带的bumper插件调用样式
            <updateRate>100</updateRate>
            <bumperTopicName>bumper</bumperTopicName>
            <frameName>base_link</frameName>
        </plugin>
    </sensor>
</gazebo>

我们一般没有办法直接看出来,定义的该有碰撞属性的link在gazebo里面,其中的collision名称叫什么,但是我们可以使用工具:

//注意如果是xacro格式的,先使用rosrun xacro xacro a.xacro>a.urdf转为urdf格式先
gz sdf -p a.urdf >a.sdf

将我们的urdf转为sdf格式,根据我们定义的link名称以及父link名称来确定该link的collision在sdf里面叫什么,然后截取该名称填写到gazebo-sensor-contact-collision 中,碰撞测试,该bumper 的 topic就可以有输出了.

下面是个人该bumper的link的collision名称截取部分样式:

  <collision name='base_link_joint_lump__bumper_link_collision_1'>
  //上面这个标签名称就是我们想要的,截取并填写到urdf里面的gazebo-sensor-contact-collision位置上
    <pose frame=''>1 0 0 0 -0 0</pose>
    <geometry>
      <box>
        <size>0.01 0.1 0.1</size>
      </box>
    </geometry>
    <surface>
      <contact>
        <ode/>
      </contact>
      <friction>
        <ode/>
      </friction>
    </surface>
  </collision>

至此,我们就可以解决了gazebo仿真时候,引用gazebo自带的bumper碰撞传感器没有数据输出的问题.

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
px4是一款开放源代码的飞行控制软件,它广泛应用于无人机的飞行控制系统中。而gazebo是一款用于机器人模拟和仿真的强大工具。基于gazebo的视觉导航仿真是指利用gazebo仿真环境和px4飞行控制系统进行无人机的视觉导航仿真。 在学习px4的过程中,基于gazebo的视觉导航仿真是一个重要的学习内容。这种仿真方式可以提供一个虚拟的环境,使得我们可以在计算机上进行无人机的飞行控制和导航算法的开发与测试。 学习基于gazebo的视觉导航仿真,首先需要了解gazebo的基本原理和使用方法。gazebo可以模拟真实的物理环境,包括地形、天气等因素,同时还能够与px4飞行控制系统进行集成。学习者需要掌握gazebo的安装和配置,以及如何创建无人机模型和仿真场景。 其次,学习者还需要了解px4飞行控制系统在视觉导航方面的应用。px4可以利用无人机搭载的摄像头获取图像信息,并通过计算机视觉算法进行视觉导航。学习者需要学习如何配置无人机的视觉传感器,并利用px4的导航算法实现视觉导航功能。 在学习过程中,可以通过模拟不同的仿真场景,如室内、室外、复杂地形等,来测试和优化视觉导航算法。学习者可以通过观察仿真结果,调整算法参数和改进算法,提高无人机的导航精度和鲁棒性。 总体而言,基于gazebo的视觉导航仿真学习px4的重要环节之一。通过这种仿真方式,可以帮助学习者深入了解px4飞行控制系统和视觉导航算法的原理和应用,提升无人机的导航能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值