기기의 측정값으로 움직이는 사물의 위치를 측정하는 방법
l = 2r
앞 바퀴 2개
각도는 를 기준
현재 위치 : , ,
이동 속도 : ,
조향각 :
Point Position
위치 좌표
Quaterniaon orientation
Euler Angles(Roll,Yaw,Pitch) 대신 Quarternian 표현
Vector3 linear
선속도
Vector3 angular
각속도
xycar_ws
├ src
│ └ ex_urdf
│ ├ src
│ ├ └ odom_publisher_ex.py
│ └ launch
│ └ odom_pub.launch
├ build
└ devel
roslaunch ex_urdf odom_pub.launch
Fixed Frame을 odom
으로 변경
odom
을 기준으로 pan_tilt가 움직임
rqt_graph
xycar_ws
├ src
│ └ rviz_xycar
│ ├ src
│ │ ├ converter.py
│ │ ├ odom_8_drive.py
│ │ └ rviz_odom.py
│ ├ launch
│ │ └ rviz_odom.launch
│ ├ urdf
│ └ rviz
│ └ rviz_odom.rviz
├ build
└ devel
동작 과정
8자 주행 프로그램이 모터제어 메시지를 담은 /xycar_motor
토픽 보내면
변환 프로그램이 메시지 변환 후 /joint_states
토픽 만들어 보내고
odometry 프로그램이 변환 후 /odom
토픽 만들어 보냄
roslaunch rviz_xycar rviz_odom.launch
br.sendTransform()
의 파라미터
(위치 좌표, 각속도, 현재 시간, 동적 객체 base_link
, 기준 객체 odom
)
br = tf.TransformBroadcaster()
br.sendTransform((msg.x, msg.y, 0),
tf.transformations.quaternion_from_euler(0, 0, msg.theta),
rospy.Time.now(),
turtlename,
"world")