IMU(Inertial Measurement Unit)
§ 관성측정 장치
• 가속도계(Accelerometer), 자이로스코프(Gyroscope)로 구성
u 6축 센서 = triaxial accelerometer + three-axis gyroscope
u 9축 센서 = 6축 센서 + three axis magnetic field (3축 지자기 센서)
• 가속도 : accelerometer 센서를 통해 측정
u 순간적인 가속, 진동, 충격 등 동적 힘이 발생했을 때 움직임의 변화 감지. (x, y, z 방향)
u 기울기와 중력 가속도에 따라 가속도 측정값이 변화, 이를 통해 기울어진 각도 측정
• 각속도 : gyroscope 센서를 통해 측정
u 회전 변화량 측정, 측정값을 적분하면 각도 자체가 생성 (Pitch, Roll, Yaw)
• 지자기 센서
u 지구 자기장의 세기(자기선속)와 방향(자북을 기준으로 틀어진 각도)을 측정
IMU 상보 필터 (IMU Complementary Filter)
§ 각속도(Gyroscope) 센서는 시간이 지남에 따라 표류(Drift) 되는 현상 발생
§ 가속도(Accelerometer) 센서는 비교적 정확한 자세 정보를 얻을 수 있으나 노이즈에 취약하고 느림
§ 안정적이고 정확한 자세 정보를 추정하기 위해서 IMU 데이터 상보 필터 사용
§ 칼만 필터
• 노이즈가 있는 데이터를 예측하여 최적의 데이터를 추정하는 알고리즘
u 과거의 측정 데이터와 새로운 측정 데이터를 사용하여 데이터에 포함된 노이즈를 제거하고, 새로운 결
과를 추정(estimate)하는 알고리즘
u 노이즈가 있는 센서들로부터 측정값을 결합(Sensor Fusion)하여 최적의 추정치 파악
u 관심 데이터를 직접 측정할 수 없는 조건에서 간접 측정치를 통해 관심 데이터를 추정 (공분산)
§ EKF: 칼만필터의 비선형 모델 (non-linear Gaussian model)
§ UKF: Unscented Kalman Filter(무향 칼만필터), EKF보다 정확하지만 느림
• 상보 필터 (IMU_Complementary_Filter)
• Madgwick Algorithm (IMU_Filter_Madgwick)
§ IMU 상보 필터는……
• 자이로 센서에서 측정한 각속도를 적분하여 각도 추정
• 가속도 센서에서 측정한 중력 가속도의 방향으로 roll, pitch 각도 보정
• 자기 센서에서 측정한 지자기의 방향으로 yaw 각도 보정
§ ARS/AHRS(Attitude Heading Reference System) 내장된 IMU 장치는 IMU 상보 필터를 적용하지 않아도 됨
센서융합 설정
§ 실습 로봇은 'robot_localization.yaml’ 파일을 통해서 센서 융합 설정
§ Wheel 엔코더 기반 odometry 메시지 데이터와 IMU 메시지 데이터에서 융합에 필요한 데이터 값 선택
• ‘True’, ‘False'로 센서 메시지 데이터 참조 여부 설정
• 다수의 odom, imu 데이터를 포함할 수 있음.
§ 센서융합시 각 데이터별 노이즈 상관 관계를 정의한 공분산 행렬
• 특별한 경우가 아니면 default 설정 사용
• 15개의 변수가 참조되며, 각 변수에 대한 신뢰도 표현
u 위치: x, y, z
u 방향: roll, pitch, roll
u 선형 속도: vx, vy, vz
u 각속도: vroll, vpitch, vroll
u 선형 가속도: ax, ay, az
• 변수의 공분산 값이 높으면 해당 변수에 노이즈가 많음을 의미.
• 대칭형/정사각형 행렬, 대각 성분은 실수형 양수 값만 허용
§ 라이다(LIDAR/LiDAR, light detection and ranging" 또는 "laser imaging, detection, and
ranging"의 약자))는 레이저 펄스를 쏘고 반사되어 돌아오는 시간을 측정하여 반사체의
위치 좌표를 측정
§ 라이다 데이터는 로봇 이동중 장애물 감지/회피, 로봇 위치 추정에 사용
§ 2D 라이다 :
• 단일 레이저 발광/수광 센서 사용
• Laser Scan 메시지 형태의 데이터 출력
§ 3D 라이다 :
• 여러 개의 레이저 발광/수광(16채널, 32채널) 센서 사용
• Point Cloud 형태의 데이터 출력
Camera
§ 실습 로봇은 ‘Raspberry Cam’ 사용
§ CIS(Camera Serial Interface) 인터페이스 연결
§ Camera ROS 패키지는 ‘gstreamer’ 멀티 미디어 SW 프레임워크 사용
• 비디오/오디오 재생, 녹음, 스트리밍 등 다양한 멀티 미디어 Application 개발을 용이
• 파이프 라인 구성을 통해 멀티 미디어 SW 환경 구성
• NVIDIA는 Jetson에 특화된 gstreamer 파인 구성 SW 제공(nvarguscamerasrc)
SLAM
§ Simultaneous Localization And Mapping
§ 지도(map) 생성과 동시에 로봇의 위치를 추정하는 것
출처 : 구글 Cartographer SLAM
https://google-cartographer-ros.readthedocs.io/en/latest/
Navigation
§ 로봇이 스스로 길을 찾아 목적지(goal)로 이동
§ 아래와 같이 4개 기능적 요소가 필요
• 위치 : 로봇의 현재 위치 추정
• 센싱 : 로봇 위치 추정 그리고 벽, 장애물 등을 회피하기 위한 감지 기능
• 지도 : 이동할 수 있는 길과 장애물 정보가 담긴 지도
• 경로 : 목적지(goal)에 도달하기 위해 최적의 경로를 계산 기능
§ SLAM을 통해서 로봇이 목적지 이동을 위한 경로 계산과 위치를 추정할
수 있는 지도를 생성 한다.
위치 추정 방법
§ GPS (Global Positioning System)
• 실외에서 가능
• 날씨 등 조건에 따른 오류가 많음
§ 실내
• Landmark (Visual SLAM: Camera, Depth Camera )
• 추측 항법(dead reckoning)
u 바퀴의 회전 값을 계산, 이동거리와 위치측정
• 선속도(linear velocity: x)
• 각속도(angular velocity: z)
u 바닥 슬립, 기계적 누적 오차 발생
u IMU 등의 관성 센서와 필터/센서 융합을 통해 보정
u /odometry
SLAM 종류
§ Gmapping
• ROS 기본 패키지로 제공 (Melodic version 이후로 개발 중지)
• ‘OpenSLAM’에서 공개한 SLAM 의 한 종류
• 실시간 Odometry 데이터 필요
• 2D SLAM 만 가능(2D LIDAR 센서 필요)
§ Cartographer
• 구글에서 개발한 SLAM 라이브러리
• 다양한 플랫폼과 센서(Lidar, Camera)구성으로
2D 및 3D로 실시간 SLAM 기능 제공
격자 지도
§ SLAM을 통해서 OGM(Occupancy Grid Map : 점유 격자 지도) 생성
• 흰색 = 로봇이 이동 가능한 자유 영역(free area)
• 흑색 = 로봇이 이동 불가능 한 점유 영역(occupied area)
• 회색 = 확인 되지 않은 미지 영역(unknown area)
• .pmg 파일로 ‘map_server’ 노드 에 저장
§ 생성된 .pmg 파일은 별도로 편집 가능
• 회피 구간 지정
• Map에 미지 영역이 많을 경우
• path planning(경로 계획) 과정에서 특정 영역을 회피토록 수정
실습 2-5: SLAM(Gmapping)
n SLAM(Simultaneous Localization And Mapping)을 위한 ‘launch’ 파일
로봇이 이동중 위치 파악과 동시에 지도를 생성하는 ‘SLAM’을 수행하기 위해서는 최소
‘odometry’, ‘IMU’ 그리고 ‘Lidar’와 같은 센서 데이터가 요구된다. ROS의 기본 SLAM
패키지인 ‘Gmapping’을 활용하기 위해서는 gmapping노드와 관련 파라메터들을 로드해야
한다.
• Jetson 디바이스의 ‘~/catkin_ws/src/allbot/launch’ 경로에 ‘lidar_slam.launch’파일을
확인한다.
<launch>
• Host PC에 아래 화면처럼 4개의 터미널이 실행되어야 한다.
https://qiao.github.io/PathFinding.js/visual/
댓글 없음:
댓글 쓰기