1.代码更新修改

1.1 添加物理关节

        如图,在原有机械臂的基础上添加camera_link和base_camera_joint作为传感器的几何属性

        对应的xml代码如下

    <link name="${prefix}camera_link">
      <collision>
        <geometry>
          <box size="0.01 0.1 0.05"/>
        </geometry>
      </collision>
      <inertial>
        <origin rpy="0 0 0" xyz="0 0 0"/>
        <mass value="0.1"/>
        <inertia ixx="1.04E-4" ixy="0.0" ixz="0.0"
        iyy="2.08E-5" iyz="0.0" 
        izz="8.33E-5"/>
      </inertial>
      <visual>
        <geometry>
          <box size="0.01 0.1 0.05"/>
        </geometry>
        <material name="orange">
          <color rgba="1 0.3 0.1 1"/>
        </material>
      </visual>
    </link>

1.2 添加摄像头传感器插件

        在描述文件中指定camera_link,加载传感器插件,定义传感器属性

    <gazebo reference="camera_link">
        <material>Gazebo/Red</material>
        <sensor name="camera_sensor" type="camera">
            <pose>0 0 0 0 0 0</pose>
            <visualize>true</visualize>
            <update_rate>10.0</update_rate>
            <plugin name="plugin_name" filename="libgazebo_ros_camera.so">
                <!-- Set TF frame name. If empty, defaults to link name -->
                <frame_name>camera_link</frame_name>
            </plugin>
        </sensor>
    </gazebo>

1.3 更新结果

2.ros2_control 与gazebo 插件内容区别

在 Gazebo 中,传感器插件和控制器插件通常是分开配置的,这是因为它们的功能和用途不同。

2.1 ros2_control 标签

ros2_control 标签主要用于配置和管理硬件接口和控制器。这里你定义了轮子的关节、命令接口和状态接口,这些都是控制机器人的运动和状态的核心部分。

2.2 gazebo 标签

传感器插件,如你的相机传感器,是用于获取环境信息的。这些传感器通常在 Gazebo 模型的 gazebo 标签下进行配置。通过这个标签,你可以为模型添加传感器,并定义它们的参数,如位置、更新速率等。

2.3 功能分离

  • ros2_control 主要用于硬件接口和控制器的配置,处理机器人的运动和状态反馈。
  • 传感器更多是用来感知环境,而不是直接控制机器人。

2.4 标准实践

  • 在 Gazebo 中,传感器通常通过其专用的插件配置。这种做法遵循了 Gazebo 的设计理念,使得传感器和控制器的管理更为清晰和模块化。

2.5 类型支持

  • 尽管 ros2_control 确实支持定义传感器接口,但在许多使用场景中,特别是与 Gazebo 配合时,开发者通常选择使用 Gazebo 提供的传感器插件。这些插件可以直接生成数据流,而无需在 ros2_control 中额外定义。

总结

虽然可以在 ros2_control 中定义传感器接口,但在实际应用中,特别是与 Gazebo 结合时,通常会将传感器配置和控制器配置分开,使用专用的传感器插件会更常见。这使得代码更加简洁,功能更为清晰,并且可以更好地利用 Gazebo 提供的特性。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐