[2023-04-03] 2. IMU 센서 활용 및 데이터 시각화
IMU 센서 활용
세 방향의 축
- Roll
- Pitch
- Yaw
- 자동차(자이카)에서는 다음과 같이 표현할 수 있음
/imu 토픽
패키지 생성
$ catkin_create_pg my_imu std_msgs rospy
- 기울기 값 출력 프로그램 예제 작성(roll_pitch_yaw.py)
#!/usr/bin/env python
import rospy
import time
from sensor_msgs.msg import Imu # imu 메시지 사용 준비
from tf.transformations import euler_from_quaternion # euler_from_quaternion 함수 사용 준비
Imu_msg = None
def imu_callback(data): # Imu 데이터가 들어오면 실행되는 콜백함수
global Imu_msg
Imu_msg = [data.orientation.x, data.orientation.y, data.orientation.z, data.orientation.w]
rospy.init_node("Imu_Print")
rospy.Subscriber("imu", Imu, imu_callback) # Imu 토픽이 들어오면 콜백함수가 호출되도록 설정
while not rospy.is_shutdown():
if Imu_msg == None:
continue
(roll, pitch, yaw) = euler_from_quaternion(Imu_msg) # 쿼터니언 값을 Roll, Pitch, Yaw 값으로 변환
print('Roll : %.4f, Pitch : %.4f, Yaw : %.4f' % (roll, pitch, yaw)) # 화면에 Roll, Pitch, Yaw 출력
time.sleep(0.5)
- roll_pitch_yaw.launch 파일 작성
<launch>
<node pkg="xycar_imu" type="9dof_imu_node.py" name="xycar_imu" output="screen">
<param name="rviz_mode" type="string" value="false" />
<node pkg="my_imu" type="roll_pitch_yaw.py" name="Imu_Print" output="screen" />
</launch>
$ roslaunch my_imu roll_pitch_yaw.launch
IMU 데이터 시각화
IMU 관련 RVIZ 플러그인 설치
-
rviz_imu_plugin.tgz 파일 복사
-
~/xycar_ws/src 폴더에 갖다 놓고 압축 풀기
$ tar xzvf rviz_imu_plugin.tgz
-
-
$ cm
로 빌드-
*.cpp 파일이 컴파일되고 빌드됨
-
별도의 설치 없이 자동으로 IMU Plugin이 자동으로 올라옴
-
-
$ catkin_create_pkg rviz_imu rospy tf geometry_msgs urdf rviz xacro
로 패키지 생성
코드 작성 및 실행
- imu_3d.launch
<launch>
<!-- rviz display -->
<node name="rviz_visualizer" pkg="rviz" type="rviz" required="true" args="-d $(find rviz_imu)/rviz/imu_3d.rviz" />
<node pkg="rviz_imu" type="9dof_imu_node.py" name="xycar_imu" output="screen">
<param name="rviz_mode" type="string" value="false" />
</node>
</launch>
$ roslaunch rviz_imu imu_3d.laumch
로 코드 실행
플러그인 추가 및 속성 변경
- IMU Viewer - RVIZ Displays Tab - Topic
- IMU Viewer - RVIZ Displays Tab - Box Properties
- IMU Viewer - RVIZ Displays Tab - Axes Properties
- IMU Viewer - Customized IMU Viewer
- RVIZ 창을 닫으려고 하면 저장문구가 나오는데 Save 하면 됨
RVIZ 재실행 및 rqt_graph
-
$ roslaunch rviz_imu imu_3d.launch
를 입력해 다시 뷰어 실행 -
rqt_graph