Skip to content

How to set IMU–LiDAR extrinsics and URDF RPY correctly? #566

@arenran02

Description

@arenran02

Question about IMU / LiDAR extrinsic parameters and URDF frames

Hi, I have a question about how to correctly set up the extrinsic parameters and URDF frames between my IMU and LiDAR.


Frames

IMU frame

  • +X: left
  • +Y: backward
  • +Z: up

LiDAR frame

  • +X: forward
  • +Y: left
  • +Z: up
  • LiDAR is pitched -9° (down)

Questions

  1. In this situation, how should I correctly set the extrinsic parameters between the IMU and LiDAR?
  2. Do I also need to modify the URDF joint origin RPY values (e.g. for imu_link, hesai_lidar, etc.) to be consistent with the extrinsics?

Current extrinsic parameters

extrinsicTrans:  [ -1.8,  0.0,  -0.8 ]      # in meters

# LiDAR pitched -9° (down), IMU yawed +90° (looks left). Rotation is LiDAR -> IMU.
extrinsicRot: [  0.0,        1.0,        0.0,
                -0.987688,   0.0,       -0.156434,
                -0.156434,   0.0,        0.987688 ]
extrinsicRPY: [  0.0,        1.0,        0.0,
                -0.987688,   0.0,       -0.156434,
                -0.156434,   0.0,        0.987688 ]

Current robot.urdf

<?xml version="1.0"?>
<robot name="lio" xmlns:xacro="http://tixiaoshan.github.io/">
  <xacro:property name="PI" value="3.1415926535897931" />

  <link name="chassis_link"></link>

  <link name="base_link"></link>
  <joint name="base_link_joint" type="fixed">
    <parent link="base_link"/>
    <child link="chassis_link" />
    <origin xyz="0 0 0" rpy="0 0 0" />
  </joint>

  <link name="hesai_lidar"> </link>
  <joint name="lidar_joint" type="fixed">
    <parent link="base_link" />
    <child link="hesai_lidar" />
    <!-- LiDAR pitched -9 degrees downward relative to base_link -->
    <origin xyz="0 0 0" rpy="0 -0.1571 0" />
  </joint>

  <link name="imu_link"> </link>
  <joint name="imu_joint" type="fixed">
    <parent link="chassis_link" />
    <child link="imu_link" />
    <!-- +90 degrees yaw -->
    <origin xyz="0 0 0" rpy="0 0 1.5708" />   
    <!-- <origin xyz="0 0 0" rpy="0 0 0" /> -->
  </joint>

  <link name="laser_sensor_frame"> </link>
  <joint name="laser_joint" type="fixed">
    <parent link="imu_link" />
    <child link="laser_sensor_frame" />
    <origin xyz="0 0 0" rpy="0 0 0" />
  </joint>

  <link name="gps"> </link>
  <joint name="navsat_joint" type="fixed">
    <parent link="chassis_link" />
    <child link="gps" />
    <origin xyz="0 0 0" rpy="0 0 0" />
  </joint>

</robot>

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions