WitMotion WT901C IMU
WitMotion WT901C IMU를 ROS 2에 연결하고 /imu/data_raw 토픽으로 발행되는 자세 데이터를 RViz에서 확인합니다.
참고 자료
이 실습은 MechaSolution ros_wit_imu_node를 사용합니다.
준비물
- Ubuntu 24.04와 ROS 2 Jazzy가 설치된 PC
- WitMotion WT901C IMU
- USB 케이블 또는 USB-UART 변환기
드라이버와 시각화 도구 설치
IMU 자세를 RViz에서 표시하기 위해 imu-tools를 설치합니다. WT901C 드라이버는 워크스페이스의 src 폴더에 복제한 뒤 빌드합니다.
$ sudo apt update
$ sudo apt install -y ros-jazzy-imu-tools
$ cd ~/ros2_ws/src
~/ros2_ws/src$ git clone https://github.com/mechasolution/ros_wit_imu_node.git
$ cd ~/ros2_ws
~/ros2_ws$ rosdep install --from-paths src --ignore-src -r -y
~/ros2_ws$ colcon build --symlink-install
~/ros2_ws$ source install/setup.bash
시리얼 포트 권한 설정
WT901C를 연결한 뒤 시리얼 장치 이름을 확인합니다.
$ ls /dev/ttyUSB*
현재 사용자를 dialout 그룹에 추가합니다.
$ sudo usermod -aG dialout $USER
경고
그룹 권한은 로그아웃 후 다시 로그인해야 적용됩니다. 다시 로그인한 뒤 groups 명령어 결과에 dialout이 있는지 확인하세요.
장치 경로와 통신 속도 확인
드라이버의 기본 장치 경로는 /dev/ttyUSB0입니다. 런치파일의 기본 통신 속도는 115200으로 설정되어 있습니다.
다른 장치 경로나 통신 속도를 사용해야 한다면 실행할 때 런치 인자로 지정합니다.
IMU 실행
드라이버의 런치파일을 사용해 IMU 노드를 실행합니다.
v26.06a 하드웨어의 IMU 센서는 통신 속도를 9600으로 지정해야 하므로, 아래와 같이 실행합니다.
$ ros2 launch wit_imu_driver wit901.launch.py buadrate:=9600 frame_id:=imu_link
경고
런치파일의 통신 속도 인자 이름은 baudrate가 아니라 buadrate입니다. 철자가 다르므로 예시처럼 그대로 입력해야 합니다.
새 터미널에서 토픽을 확인합니다.
$ source ~/ros2_ws/install/setup.bash
$ ros2 topic list
/imu/data_raw
/imu/mag
/imu/temperature
/parameter_events
/rosout
$ ros2 topic echo /imu/data_raw --once
header:
stamp:
sec: 1783926351
nanosec: 657021316
frame_id: imu_link
orientation:
x: 0.0029349153263388042
y: -0.005414149070844515
z: -0.49362460184434204
w: 0.8696532790232443
# (생략)
런치파일로 실행하면 다음 센서 토픽을 발행합니다.
/imu/data_raw: 자세, 각속도, 선형 가속도/imu/mag: 지자기/imu/temperature: 온도
RViz에서 시각화
새 터미널에서 RViz를 실행합니다.
$ rviz2
Fixed Frame을imu_link로 설정합니다. 프레임 목록에 표시되지 않으면 직접 입력합니다.- 왼쪽 아래의 Add 버튼을 누릅니다.
- By display type에서 Imu를 추가합니다.
Topic을/imu/data_raw로 설정합니다.
