본문 바로가기
카테고리 없음

[Intel] 엣지 AI SW 아카데미 34일차 (부산상공회의소 인력개발원)

by 0x01 2023. 12. 17.

 

일정: 2023.12.12(화)

 

수업 내용: 
 

 - Robot Operating System (ROS)

 - ROS 개발환경 구축

 

목표: 

로봇 소프트웨어 플랫폼
(하드웨어 추상화, 하위디바이스 제어, 로보틱스 센싱, 인식, 위치추정, 지도 작성 , 내비게이션 등) 중심의 기술과
로봇 소프트웨어 플랫 폼(ROS)이 가져올 미래 가치와 기술 선점을 위한 교육을 바탕으로
다양한 영상과 라이다 기반의 로봇 자율주행 기술 교육을 통해 학생들의 첨단 기술습득을 목표로 함.

 

Bringup(3.5.1)
https://emanual.robotis.com/docs/en/platform/turtlebot3/bringup/#bringup
(3) Bringup TurtleBot3
[Remote PC 에서 SBC를 원격 제어] 
새 터미널(CTRL + ALT + T) 열고
$ roscore
새 터미널 (CTRL + ALT + T) 열고
$ ssh ubuntu@192.168.0.21 (for Raspberry) (IP주소는 Raspberry)
password 는 turtlebot (암호 입력 안보임, enter)
[SBC (TurtleBot burger) 제어]
$ export TURTLEBOT3_MODEL=burger
$ roslaunch turtlebot3_bringup turtlebot3_robot.launch
: TurtleBot3 applications 시작하기 위한 기본 package 불러오기

 

https://emanual.robotis.com/docs/en/platform/turtlebot3/basic_operation/#basic-operation [3.6.1.1 teleop_key]
[Basic operation]
[Remote PC 에서] 새 터미널 (CTRL + ALT + T) 열고
$ export TURTLEBOT3_MODEL=burger 
 실제 bashrc 에 있기때문에 실행 안해도 됨
$ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

 

 

[rqt]
[Remote PC 에서] 새 터미널 (CTRL + ALT + T) 열고
$ rqt

: GUI 개발에 사용되는 Qt framework 기반의 ROS software framework
: rqt graph 처럼 node간의 관계를 확인할 때 사용
: 3개의 meta package 로 구성하여 복잡한 GUI를 쉽게…
- rqt → rqt 구동 core module
- rqt_common_plugins → Turtlebot 작동 중이거나 정지 중에 사용 가능한 도구 모음
- rqt_robot_plugins → Turtlebot 작동하고 있을 때 로봇과 상호작용하기 위한 도구 모음

 

 

 SLAM : 동시적 위치 추정 및 지도작성
: to draw a map by estimating current location in an arbitrary space

 

 LIDAR : 빛을 통한 감지 및 거리 측정(Light Detection and Ranging) 
LIDAR (turtlebot3 – LDS-01) : 
https://hlds.co.jp/product/details_en 
https://hitachi-lg.com/kr/products/sensor/
LDS-01
: HLS-LFCD-LDS(Laser Distance Sensor)
: HLDS(Hitachi-LG Data Storage) 개발
: 2D laser scanner capable 
of sensing 360 degrees

 

 LIDAR (turtlebot3) : https://hitachi-lg.com/kr/products/sensor/

 

Hitachi-LG Data Storage

센서 HLS-LFOM 시리즈는 적외선 레이저가 빛을 방출하고 수신하는 데 걸리는 시간을 측정하여 거리를 계산하는 ToF (비행시간, time-of-flight) 3D LiDAR 모션 센서입니다. 그것은 이미지 센서의 픽셀 단위

hitachi-lg.com

 

 ToF(Time of Flight) 방식
: ToF 방식은 Laser 펄스 신호가측정 범위 내의 물체에서 반사되어 수신기에 도착한 시간을 측정 하여 거리를 측정하는 원리

 

 PS(Phase Shift) 방식
: 특정 주파수를 가지고 연속적으로 변조되는 Laser 빔을 방출하고, 물체에서 반사되어 오는 Laser 신호의 위상 변화량을  측정하여 거리를 측정하는 방식

6-1. Specification of LiDAR 
(1) 360° LiDAR : HLS-LFCD LDS(Laser Distance Sensor)
- Detection distance 120mm~3500mm
- Angular Resolution 1 degree / USB2LDS (UART 통신 115,200 baudrate)
- Robotis e-manual 13장 https://emanual.robotis.com/docs/en/platform/turtlebot3/appendix_lds_01/

 

ROBOTIS e-Manual

 

emanual.robotis.com

 

(2) 360° LiDAR : HLS-LFCD LDS(Laser Distance Sensor)

 

6-2. SLAM Node
※ Navigation 
① 위치: 로봇의 위치 계측/추정하는 기능  Localization, pose estimation 라 부름
② 센싱: 벽, 물체 등의 장애물의 계측하는 기능  sensing
③ 지도: 길과 장애물 정보가 담긴 지도
④ 경로: 목적지까지 최적 경로를 계산하고 주행하는 기능
→ motion planning(path planning)라고 부름
⑤ 장애물 회피(collision avoidance)
: 이동 궤적에 따라 목적지까지 이동중 갑자기 나타난 장애물 회피
→  Dynamic Window Approach(DWA) 알고리즘 사용
※ 위치 검출
- 실외 GPS (Global Positioning System)
- 실내 Indoor Positioning Sensor
: Landmark (Color, IR Camera)
: Indoor GPS, WiFi SLAM, Beacon
→  실내 위치 검출의 경우 오차 발생

 

※ 로봇의 위치 계측/추정하는 기능
① 추측 항법(dead reckoning)
- 양 바퀴 축의 회전 값을 이용 (주행기록계 odometer) 
- 이동 거리와 회전 값을 계산, 위치 측정
- 바닥 슬립, 기계적, 누적 오차 발생
- IMU(자이로/가속도/지자계) 등 관성 센서 및 필터로 위치 보상
- Kalman filter
- 필요한 정보(encoder: wheel의 회전량 측정)
: 양 바퀴 축의 엔코더 값 E 
: 바퀴 간 거리 D, 바퀴 반지름 r

 

 

※ 센싱: 벽, 물체 등의 장애물의 계측하는 기능
- 거리센서, 비전센서, Depth 카메라

 

※ 지도: 길과 장애물 정보가 담긴 지도

- SLAM(Simultaneous Localization And Mapping)

 

※ 경로: 목적지까지 최적 경로를 계산하고 주행하는 기능
- 내비게이션(Navigation) 
- 위치 추정 (Localization / Pose estimation)
- 경로 탐색/계획 (Path search and planning)
: Dynamic Window Approach (DWA)
→ 이동 경로 계획 및 장애물을 회피할 때 사용되는 방법(성능 탁월)
→  로봇의 속도 탐색 영역(velocity search space)에서, 로봇과 충돌 가능한 장애물을 회피하면서 목표점까지 빠르게 다다를 수 있는 속도를 선택하는 방법
: A* (A Star)알고리즘
: Potential Field
: Particle Filter

 

(1) SLAM(Simultaneous Localization and Mapping)
: 동시적 위치 추정 및 지도작성
: to draw a map 
by estimating current location 
in an arbitrary space
: OpenSLAM
https://openslam-org.github.io/
- SLAM package 종류
→  gmapping (터틀봇 적용)
(http://wiki.ros.org/gmapping)
Melodic version 지원 안됨
→  cartographer (ROS2)
→  hector mapping
→  rtabmap

 

(2) Gmapping
: OpenSLAM에 공개(free)된 SLAM 종류, ROS package로 제공
: 최근 가장 많이 사용되는 물체 추정 알고리즘으로 Rao-Blackwellized 파티클 필터(Particle filter) 사용
- Particle 수가 감소되었고, grid 맵 제공
- X, Y(x,y 병진속도 linear velocity), Theta 속도(angular velocity) 이동 명령을 받도록 되어있어
→  두 축의 구동 모터로 이루어져 좌/우측 바퀴를 따로 구동하는 로봇이나 3개 이상의 구동 휠을 가지고 있어야 함
→  주행기록계(Odometry)가 반드시 있어 이동한 거리, 회전량을 추측 항법(dead reckoning)으로 계산할 수 있어야 함
→  자세(pose) 보상, 위치 계측 및 추정 수단이 있어야 됨
- XY 평면상의 장애물을 계측하기 위해
→  LDS(Laser Distance Sensor), LRF(Laser Range Finder), LiDAR(Light Detection And Ranging) 있어야 됨
- 로봇 형태 제약 조건
→  정다각형, 직사각형, 원형 로봇 적합
→  한쪽 축이 길게 나온 변형 로봇, 문 사이로 나가지 못할 정도로 큰 로봇, 휴머노이드, 다관절 이동 로봇, 비행 로봇 제외
(휴머노이드, 다관절의 경우 자세 계측이 어려움)

 

(2) Gmapping
: Gmapping 계측 환경
- 다음의 환경에 적합하지 않음
→  장애물 하나 없는 정사각형 형태의 환경
→  장애물 없는 평행한 복도
→  레이저 및 적외선이 반사되지 못하는 유리창
→  레이저 및 적외선이 산란하는 거울
→  호수, 바닷가 기타 물가
(3) Cartographer
: Google 제작한 SLAM 기법으로, 2D 및 3D 매핑을 지원
: 그리드 방식의 매핑과 Ceres 기반 Scan Matcher를 이용하여 환경 재구성
: Cartographer는 ROS2에서 동작, ROS2를 지원하는 package
: Gmapping은 라이선스로 인하여 상업용으로 사용하기 어려움
: Google Cartographer는 Apache 2.0 라이센스를 사용, 지속적인 유지 보수가 되고 있음(현재 가장 많이 사용됨) 

 

(4) SLAM 실습
: gmapping SLAM 실습 http://wiki.ros.org/gmapping
: 4-1장 https://emanual.robotis.com/docs/en/platform/turtlebot3/slam/#run-slam-node

 

새 터미널 열고 $ roscore
새 터미널 열고 $ ssh ubuntu@192.168.0.21 (IP is Raspberry, password turtlebot)
$ roslaunch turtlebot3_bringup turtlebot3_robot.launch  LDS 회전 확인(회전 안하면)

새 터미널 열고
$ roslaunch turtlebot3_slam turtlebot3_slam.launch

만일 회전 안하면, openCR의 RESET누르고, Ctl+c, 새 터미널
roslaunch turtlebot3_bringup turtlebot3_robot.launch

SLAM 실행되면서 Rviz 화면이 열리면서 turtlebot과 장애물 화면 생성됨