새소식

ROS & Robotics

[RELLIS-3D] Gazebo Warthog 로봇에 IMU 탑재하기

  • -

프로젝트에서 사용하고 있는 RELLIS-3D 데이터셋은 Warthog 로봇으로 획득한 것입니다.

따라서 실험 시뮬레이션도 Warthog 로봇을 사용했는데, 기본 세팅으로 센서가 정의되어 있기는 하지만 rostopic list 를 했을 때 아무 데이터도 볼 수 없었습니다. 따라서 Gazebo 에서 이 센서를 사용할 수 있도록 따로 설정해주어야 합니다. 

 

(사담 : 처음에는 Turtlebot3 를 사용했는데, 종잇장처럼 얕은 경사도 오르지 못 했기 때문에 사용할 수 없었습니다.)

 

Gazebo 시뮬레이션 설정

ㄴ src
	ㄴ warthog_simulator
    	ㄴ warthog_description
        	ㄴ urdf
            	ㄴ warthog.urdf.xacro

 

이 위치에 들어 있는 warthog.urdf.xacro 파일에 다음 부분을 추가해줍니다. 

 

<gazebo>
    <plugin name="imu_plugin" filename="libgazebo_ros_imu.so">
      <alwaysOn>true</alwaysOn>
      <updateRate>1000.0</updateRate>
      <bodyName>imu_link</bodyName>
      <topicName>imu_data</topicName>
      <gaussianNoise>0.05</gaussianNoise>
      <xyzOffset>0 0 0</xyzOffset>
      <rpyOffset>0 0 0</rpyOffset>
      <visualize>true</visualize>
    </plugin>
  </gazebo>

 

그리고 같은 파일에 이 부분도 추가해 줍니다.

 

  <link name="imu_link" />
  <joint name="imu_link_joint" type="fixed">
    <origin xyz="$(optenv WARTHOG_IMU_XYZ 0 0 0)" rpy="$(optenv WARTHOG_IMU_RPY 0 0 0)" />
    <parent link="chassis_link"/>
    <child link="imu_link" />
  </joint>

 

이 코드는 imu_plugin 이라는 플러그인을 로드합니다. 이 플러그인은 IMU 데이터를 생성하고, imu_link 에서 이 데이터를 읽어와 imu_data 라는 이름의 토픽으로 발행합니다. 

 

이후 로봇을 Gazebo 상에서 로드하면 다음과 같이 imu 토픽을 받아올 수 있습니다. 

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.