Xacro添加传感器模型(三)- 添加摄像头传感器

在上一节,我们参考大佬古月居的IMU传感器,集成在了自己的模型上面。这一节,我们继续参考摄像头集成在自己的模型中,参考链接如下:

https://www.guyuehome.com/detail?id=1896924896297013249

1、之前sw没有建立摄像头的Link,因此通过xacro新建camera.xacro文件时候,添加camera的link进行关联,代码如下:

XML 复制代码
<?xml version="1.0" encoding="utf-8"?>
<robot name="tyut_jjc_model" xmlns:xacro="http://wiki.ros.org/xacro">

  <!-- ===== 相机Link定义 ===== -->
  <link name="camera_link">
    <inertial>
      <origin xyz="0 0 0" rpy="0 0 0"/>
      <mass value="0.1"/>  <!-- 相机质量0.1kg -->
      <inertia ixx="0.001" ixy="0" ixz="0" iyy="0.001" iyz="0" izz="0.001"/>
    </inertial>
    
    <visual>
      <origin xyz="0 0 0" rpy="0 0 0"/>
      <geometry>
        <box size="0.08 0.05 0.03"/>  <!-- 小方块:长8cm x 宽5cm x 高3cm -->
      </geometry>
      <material name="camera_blue">
        <color rgba="0.2 0.4 0.8 1.0"/>  <!-- 蓝色相机外观 -->
      </material>
    </visual>
    
    <collision>
      <origin xyz="0 0 0" rpy="0 0 0"/>
      <geometry>
        <box size="0.08 0.05 0.03"/>  <!-- 碰撞体积与视觉一致 -->
      </geometry>
    </collision>
  </link>

  <!-- ===== 相机与基座的连接关节 ===== -->
  <joint name="camera_joint" type="fixed">
    <origin xyz="-5.0 0 1.5" rpy="0 0.1 0"/>  <!-- 安装在机器人 -->
    <parent link="base_link"/>
    <child link="camera_link"/>
    <axis xyz="0 0 0"/>
  </joint>

<gazebo reference="camera_link"> <!-- Gazebo模型引用camera_link -->
  <sensor type="camera" name="camera1"> <!-- 定义传感器类型为相机 -->
    <update_rate>30.0</update_rate> <!-- 更新频率为30Hz -->
    <camera name="head"> <!-- 相机名称为head -->
      <horizontal_fov>1.3962634</horizontal_fov> <!-- 水平视场角 -->
      <image> <!-- 图像参数 -->
        <width>1920</width> <!-- 图像宽度 -->
        <height>1080</height> <!-- 图像高度 -->
        <format>R8G8B8</format> <!-- 图像格式为R8G8B8 -->
      </image>
      <clip> <!-- 剪裁参数 -->
        <near>0.02</near> <!-- 最近剪裁距离 -->
        <far>300</far> <!-- 最远剪裁距离 -->
      </clip>
      <noise> <!-- 噪声参数 -->
        <type>gaussian</type> <!-- 噪声类型为高斯噪声 -->
        <!-- 噪声在每帧的每个像素上独立采样。每个像素的噪声值
              将添加到其每个颜色通道,该通道的范围在[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> <!-- 更新频率为0(不更新) -->
      <cameraName>/</cameraName> <!-- 相机名称 -->
      <imageTopicName>cam</imageTopicName> <!-- 图像主题名称 -->
      <cameraInfoTopicName>camera_info</cameraInfoTopicName> <!-- 相机信息主题名称 -->
      <frameName>camera_link</frameName> <!-- 坐标系名称 -->
      <hackBaseline>0.07</hackBaseline> <!-- 基线偏差 -->
      <distortionK1>0.0</distortionK1> <!-- 畸变系数K1 -->
      <distortionK2>0.0</distortionK2> <!-- 畸变系数K2 -->
      <distortionK3>0.0</distortionK3> <!-- 畸变系数K3 -->
      <distortionT1>0.0</distortionT1> <!-- 畸变切向分量T1 -->
      <distortionT2>0.0</distortionT2> <!-- 畸变切向分量T2 -->
    </plugin>
  </sensor>
</gazebo>
 
</robot>

2、集成到总体的xacro下

XML 复制代码
<robot name="tyut_jjc_model" xmlns:xacro="http://wiki.ros.org/xacro">
      <xacro:include filename="xacro/tyut_jjc.xacro" />
      <xacro:include filename="xacro/transmission.xacro" />
       <xacro:include filename="xacro/gazebo_ros_control.xacro" />
       <xacro:include filename="xacro/tyut_color.xacro" />
       <xacro:include filename="xacro/tyut_mu.xacro" />
       <xacro:include filename="xacro/laser.xacro" />
      <xacro:HDL-32E parent="base_link" name="velodyne" topic="/points_raw"  hz="10" samples="1024" gpu="false">
        <origin xyz="0.4 0 1.0" rpy="0 0 0" />
      </xacro:HDL-32E>
      <xacro:include filename="xacro/imu.xacro" />
      <xacro:include filename="xacro/camera.xacro" />
 
      </robot>

3、启动文件,在rviz中添加image话题,即可显示

相关推荐
FLJwu1 天前
《运动相机硬件防护选型实战》专栏|第二篇(PPTC 自恢复保险丝)
android·经验分享·数码相机·1024程序员节·运动相机
江苏久众新视1 天前
SOP流程AI视觉检测实战案例:基于安防相机与本地AI的产线防错防漏方案落地分享
人工智能·数码相机·视觉检测
高升说2 天前
无人机吊舱相机选型:稳定、变焦与画质的工程权衡
数码相机·无人机
QYRese2 天前
CAGR3.1%!抗辐射相机市场迎替换潮,核设施数字化、水下场景带来增量
大数据·数码相机
unicrom_深圳市由你创科技3 天前
多相机GigE Vision:触发与图像网段怎么分?
数码相机
FLJwu3 天前
运动相机采购实战|第四篇(终章):一张清单走完选型全流程,把风险拦在源头
c语言·开发语言·数码相机·运动相机·oem 量产
光电的一只菜鸡3 天前
鱼眼镜头需要考虑color shading吗
数码相机
小蒋观天下3 天前
太阳能低功耗AI相机专项:AOV值守、唤醒时序、ISP启停时序BUG
深度学习·数码相机·算法·机器学习
奇树谦3 天前
Qt | 基于 GVCP 协议的 GigE 工业相机 IP 配置工具
数码相机·qt·tcp/ip
机器视觉知识推荐、就业指导3 天前
线扫相机拍出来的圆,怎么变成椭圆了?
数码相机