프로젝트에서 사용하고 있는 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 토픽을 받아올 수 있습니다.