IMU 센서 활용

세 방향의 축

  • Roll
  • Pitch
  • Yaw

image

  • 자동차(자이카)에서는 다음과 같이 표현할 수 있음

image

/imu 토픽

image

패키지 생성

  • $ catkin_create_pg my_imu std_msgs rospy

image

  • 기울기 값 출력 프로그램 예제 작성(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로 코드 실행

플러그인 추가 및 속성 변경

image

  • IMU Viewer - RVIZ Displays Tab - Topic

image

  • IMU Viewer - RVIZ Displays Tab - Box Properties

image

  • IMU Viewer - RVIZ Displays Tab - Axes Properties

image

  • IMU Viewer - Customized IMU Viewer

image

  • RVIZ 창을 닫으려고 하면 저장문구가 나오는데 Save 하면 됨

RVIZ 재실행 및 rqt_graph

  • $ roslaunch rviz_imu imu_3d.launch를 입력해 다시 뷰어 실행

  • rqt_graph

image