오도미터? 오도메트리?

  • Odometer : 차량이나 로봇이 주행하며 이동한 거리를 측정하는 기기
  • Odometry : 오도미터 등의 기기의 측정 값으로 움직이는 사물의 위치를 측정하는 방법
  • 예시 : 반지름이 5cm인 바퀴가 3바퀴 굴렀으니, 10πcm만큼 이동했겠구나!

자동차 핸들과 앞 바퀴

  • 회전 시, 안쪽 바퀴와 바깥쪽 바퀴가 회전하는 정도가 다르다.

왼쪽 그림과 같이 안쪽 바퀴, 바깥쪽 바퀴의 회전 원의 중심이 일치해야 한다.

  • 그렇다면 두 바퀴의 회전 차이를 어떻게 구현해야 할까?

Ackermann Steering

  • 간단한 기계식 구조로 회전시 꺾이는 각도가 다르도록 설계

자동차의 위치 정보

  • 현재 위치는 (x, y)좌표, θ세타
  • 이동 속도는 선속도 v, 각속도 w
  • 조향각은 δ델타

RVIZ 오토메트리

  • 오토메트리 토픽 : /odom
  • 메시지 타입 : nav_msgs/Odometry
# 토픽 내용 확인
rosmsg show nav_msgs/Odometry

# Output
std_msgs/Header header
  uint32 seq
  time stamp
  string frame_id
string child_frame_id
geometry_msgs/PoseWithCovariance pose
  geometry_msgs/Pose pose
    geometry_msgs/Point position
      float64 x
      float64 y
      float64 z
    geometry_msgs/Quaternion orientation
      float64 x
      float64 y
      float64 z
      float64 w
  float64[36] covariance
geometry_msgs/TwistWithCovariance twist
  geometry_msgs/Twist twist
    geometry_msgs/Vector3 linear
      float64 x
      float64 y
      float64 z
    geometry_msgs/Vector3 angular
      float64 x
      float64 y
      float64 z
  float64[36] covariance

이번에는 3D 자동차를 진짜 움직여 보자.

  • 이전 8자 주행 프로그램에서는 바퀴가 움직이기만 했다.
  • 이번에는 움직여 보자.
  • 동작 과정
  • 파일 구성
    • 런치 파일 - rviz_odom.launch
    • 소스 파일 - converter.py, odom_8_drive.py, rviz_odom.py

실행

선생님 어디가세요?

  • odom_8_drive.py의 회전 값을 50→60~70정도로 줘야 8자를 그리는 것 같다.


좀 8같다.

profile
올해로 26세

0개의 댓글