2025年6月25日 星期三

ROS2 加入 IMU 和 LiDAR(光達) 感測器模擬

 要在你的 roscar4wheel 車上加入 IMULiDAR(光達) 感測器模擬,

並能在 Gazebo 中正確發出 ROS 2 topic,可以透過以下方式整合:


✅ 一、IMU 感測器模擬(使用 Gazebo plugin)

roscar.urdf 中加入:

xml
<!-- IMU Sensor --> <link name="imu_link"> <inertial> <mass value="0.01"/> <origin xyz="0 0 0" rpy="0 0 0"/> <inertia ixx="0.001" ixy="0.0" ixz="0.0" iyy="0.001" iyz="0.0" izz="0.001"/> </inertial> <visual> <geometry> <box size="0.02 0.02 0.02"/> </geometry> <material> <color rgba="0 0 1 1"/> </material> </visual> </link> <joint name="imu_joint" type="fixed"> <parent link="base_link"/> <child link="imu_link"/> </joint> <gazebo reference="imu_link"> <sensor name="imu_sensor" type="imu"> <always_on>true</always_on> <update_rate>50</update_rate> <visualize>true</visualize> <imu> <angular_velocity>true</angular_velocity> <linear_acceleration>true</linear_acceleration> </imu> <plugin name="imu_plugin" filename="libgazebo_ros_imu_sensor.so"> <ros> <remapping>imu/data:=imu/data</remapping> </ros> <topicName>imu/data</topicName> <frameName>imu_link</frameName> </plugin> </sensor> </gazebo>

✅ 二、LiDAR 感測器模擬(使用 2D Ray Sensor)

加入以下內容模擬一個水平掃描雷達(如 RPLIDAR):

xml
<!-- LiDAR Sensor --> <link name="lidar_link"> <inertial> <mass value="0.01"/> <origin xyz="0 0 0"/> <inertia ixx="0.001" ixy="0" ixz="0" iyy="0.001" iyz="0" izz="0.001"/> </inertial> <visual> <geometry> <cylinder radius="0.05" length="0.02"/> </geometry> <material> <color rgba="1 0 0 1"/> </material> </visual> </link> <joint name="lidar_joint" type="fixed"> <parent link="base_link"/> <child link="lidar_link"/> </joint> <gazebo reference="lidar_link"> <sensor name="lidar_sensor" type="ray"> <pose>0 0 0.1 0 0 0</pose> <update_rate>20.0</update_rate> <ray> <scan> <horizontal> <samples>720</samples> <resolution>1</resolution> <min_angle>-1.5708</min_angle> <max_angle>1.5708</max_angle> </horizontal> </scan> <range> <min>0.2</min> <max>10.0</max> <resolution>0.01</resolution> </range> <noise> <type>gaussian</type> <mean>0.0</mean> <stddev>0.01</stddev> </noise> </ray> <plugin name="gazebo_ros_laser" filename="libgazebo_ros_ray_sensor.so"> <ros> <remapping>scan:=scan</remapping> </ros> <topicName>scan</topicName> <frameName>lidar_link</frameName> </plugin> </sensor> </gazebo>

✅ 三、結果 Topic

感測器發布 TopicFrame ID消息類型
IMU/imu/dataimu_linksensor_msgs/Imu
LiDAR/scanlidar_linksensor_msgs/LaserScan

✅ 四、RViz2 可視化建議設定:

  • 加入:

    • LaserScan/scan,Frame: lidar_link

    • IMU/imu/data,Frame: imu_link

  • 勾選 TF 顯示,確認有 base_link → imu_linkbase_link → lidar_link 的 TF


✅ 五、打包整合

我可以為你:

  1. 將上述內容整合進 roscar.urdf

  2. 產出 launch 檔自動啟動 + RViz2

  3. 產生一個 zip 包含:

    • urdf/roscar.urdf(含 sensor plugin)

    • launch/robot.launch.py(RViz + publisher)

    • rviz/roscar.rviz(預設視圖)

📦 是否要我幫你直接整合並生成可用套件?如有專用 STL 可放進 meshes/ 一併整合。

沒有留言:

張貼留言