[ WSL ] Ubuntu 24.04 Jazzy ROS2
[ jetson ] Jetson nano Foxy ROS2
실습과제
(1) Odometry을 이용하여 로봇의 자세를 추정하는 원리를 자세히 조사하시오.
Odometry?
> 엔코더(센서의 일종으로 모터의 회전수와 속도 등을 감지할 수 있음)를 통한 회전수와
IMU(관성 측정 장비, 가속도)로 기울기 등을 측정해서 움직이고 있는 사물의 위치를 측정하는 방법
주행 거리를 측정하는 거라고 이해하면 쉬움, 시작 위치(원점, 출발점)에 대한 위치를 추정하기 위함
시간에 따른 위치 변화를 측정하기 위해 모션 센서의 데이터를 사용하는 것...
== GPS처럼 절대적인 위치를 아는 게 아니라 출발 지점으로부터 얼마나 떨어져 있나 파악하는 상대적인 위치 추정 방법임
따라서 센서의 위치를 잘 잡아서 사용해야 함
동작 원리
> 엔코더로부터 받은 바퀴의 회전 정보를 바탕으로, 로봇의 선속도와 각속도를 계산함
계산된 속도 정보를 시간에 따라 적분하여 로봇의 현재 위치 변화량을 추정하고 시간의 간격 동안의 이동거리를 계산,
이를 이전 위치에 계속 더해나가는 방식임.
https://velog.io/@keepbini366/ROS-STUDY-Math-behind-Odometry
+ ROS에서의 Odometry
earth
earth frame은 여러 대의 로봇들이 서로 다른 map 위에서 존재할 수 있도록 해줌.
로봇들이 서로 다른 map을 가지고 있을 경우 earth frame은 모든 map frame을 통해 각 층의 정보를 가질 수 있게 해주는 역할임
map
map frame은 earth frame에 고정된 프레임.
odom frame이 움직일 때 로봇의 위치가 미세하게 바뀌는 경우가 발생할 수 있음
map frame은 연속적이지 않기 때문에 시뮬레이션을 돌릴 때 로봇이 갑자기 순간이동 한 듯 움직일 수 있음.
odom
odom frame은 world fixed frame으로서 또한 earth frame에 고정된 프레임임.
로봇의 위치를 연속적으로 나타낼 수 있어 로봇이 갑자기 순간이동을 하는 듯한 모습이 적음.
base_link
base_link frame은 로봇 자체의 위치를 나타내는 frame임.
base_link frame의 위치를 odom 혹은 map frame을 사용하여 위치를 추정하는 방법이 있음.
https://elecs.tistory.com/296
(2) AMCL을 이용하여 로봇의 자세를 추정하는 원리를 자세히 조사하시오.
(5) AMCL 노드 실행 시 나타나는 파티클(/particle_cloud)의 의미를 조사하시오.
AMCL: Adaptive Monte Carlo Localization
자기 위치 추정을 위한 확률적 접근 방식임
AMCL은 여러 가지 particle을 사용하여 로봇의 위치를 추정함
> particle?
: 로봇이 있을 수 있는 특정 위치와 방향을 나타냄, 각각 가중치를 가지고 있음
particle들은 로봇이 있을 가능성이 있는 위치에 무작위로 분포하게 됨 (여러 개 == particle cloud)
로봇이 움직일 때, 각 파티클은 로봇의 현재 상태와 이동 명령을 입력으로 받아서 새로운 상태를 예측하여 업데이트.
== 로봇의 센서로부터 새로운 측정값이 들어오면, 각 particle의 가중치를 업데이트하는 방식
여러 paricle의 위치 및 자세에 가중치를 곱해서 추정 위치를 계산
이후에 Resampling 과정을 통해 가중치가 적은 particle들을 제거하고 나머지를 중심으로
또 새로운 particle을 생성함. 이를 반복적으로 수행하며 위치값을 추정하는 알고리즘임.
https://youngseong.tistory.com/225
(3, 4) AMCL 노드가 구독, 발행하는 토픽을 자세히 조사하시오.
Subscribed Topics (AMCL이 받아야 하는 데이터)
- Scan (sensor_msgs / LaserScan)
: LiDAR가 측정한 거리 데이터
- tf (tf / Message)
: 좌표 변환
Odom -> Base_link: 바퀴가 굴러가서 계산된 정보
Base_link -> Laser: 로봇에 레이저 센서가 어디에 붙어있는지 위치 정보
- initialpose (geometry_msgs / PoseWithCovarianceStamped)
: Rviz에서 2D Pose Estimate 눌러서 주는 정보
초기 위치 값임
- map (nav_msgs / OccupancyGrid)
: Map Server로부터 받아오는 지도
Published Topics (AMCL 결과)
- amcl_pose (geometry_msgs / PoseWithCovarianceStamped)
: 최종 추정 위치
- particlecloud (geometry_msgs / PoseArray)
: particle cloud 시각화
- tf (tf / Message)
: 위치 오차 보정
map 기준으로 odom 좌표계가 얼마나 틀어졌는지 계산해서, 차이만큼 tf로 발행해 보정해줌.
강의자료 - [ROS2심화] localization
(1) 실험과정을 동영상으로 저장하라.
(2) Odometry의 추정오차의 원인을 설명하라.
Odometry의 동작 원리:
계산된 속도 정보를 시간에 따라 적분하여 로봇의 현재 위치 변화량을 추정하고 시간의 간격 동안의 이동거리를 계산,
이를 이전 위치에 계속 더해나가는 방식임.
== 모터의 미끄러짐이나 센서의 불완전성 때문에 시간이 지남에 따라 작은 오차들이 누적될 수 있음
(3) /odom 토픽에 포함된 정보를 모두 정확히 설명하라.
(4) /tf 토픽에 포함된 정보를 설명하라.
(5) /tf_static 에 포함된 정보를 설명하라.
(6) /odom과 /amcl_pose 토픽의 차이를 설명하라. odometry와 amcl의 결과의 차이를 설명하라는 의미임
/odom은 로봇이 켜진 자리를 원점(0,0)으로 잡고 바퀴 회전수와 관성 센서로 계산하는 상대적 추측 값
== 데이터가 끊김 없이 매우 빠르고 부드럽게 나오지만 시간이 지날수록 미끄러짐 등으로 오차가 무한히 누적됨
/amcl_pose는 라이다 센서 데이터와 저장된 지도를 대조해 찾아내는 지도상 절대 위치 값이라 계산이 오래 걸림
== 데이터가 느리고 위치가 튀지만 오도메트리가 아무리 틀어져도 현재의 진짜 위치를 찾아냄
오차를 일정 범위 내로 강제 보정해준다는 차이가 있음.
(7) ros2 run nav2_util lifecycle_bringup 명령어의 기능을 설명하라.
ROS2 Nav2 노드들은 실행 파일만 켠다고 바로 작동하는 게 아님
초기에는 아무것도 안 하는 미설정(Unconfigured) 상태로 대기 중에 있음
이 명령어는 그런 노드들에게 Configure(설정)와 Activate(활성화) 신호를 순서대로 쏴줘서
노드를 활성(Active) 상태로 깨우는 역할을 함.
(9) gazebo simulator를 이용하여 amcl를 이용하여 localization 실험을 수행하라.
카페 게시글
과제게시판
[ROS2] Localization
신민서
추천 0
조회 81
26.01.13 18:52
댓글 0
다음검색