[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 
