반응형
Chapter 1 로봇 소프트웨어 플랫폼
- Eco System = 하드웨어 모듈 + 운영체제 + 앱 (서비스) + 유저
- 역사는 반복된다.
- Personal PC → Personal Phone → Personal Robot(?)
- PC가 변화해온 방향으로 핸드폰이 변화해왔다.
- 이 방향이면 로봇 운영체제도 통일 가능성 있음.
- 로봇 분야의 운영체제는 춘추 전국시대
- 다양한 회사에서 각자의 운영체제를 만들어 가는 중.
- EX) Open Source (ROS), Closed Source (NAOqi), Galapagos (OpenRTM) 등
- 우리나라나 일본에서도 만들었음.
- 이건 축구 경기장을 짓는 것과 동일 → 여기에 집중하지 말고, 여기 안의 플레이어
- 즉, 응용 프로그램을 잘 만드는 것에 집중하자.
- 다양한 회사에서 각자의 운영체제를 만들어 가는 중.
Chapter 2 로봇 운영체제 ROS
- 오픈소스가 기반이며, 가장 많은 사람들이 사용하는 메타 운영체제.
- 로봇 소프트웨어를 개발하기 위한 소프트웨어 프레임워크
- ROS = Plumbing + Tools + Capabilities + Ecosystem
- 노드간에 메시지 교환 방법으로 복잡한 프로그램을 잘게 나눠 공동 개발이 가능
- 명령어 도구, 시각화 도구 Rviz, GUI 도구 모음 rqt, 3차원 시뮬레이터 Gazebo 지원
- 로보틱스에서 많이 사용되는 모델링, 센싱, 인식, 내비게이션, 매니퓰레이션 기능 지원
- 로보틱스 생태계 생성
- 진정한 목적 : 로보틱스 소프트웨어 개발을 전세계 레벨에서 공동작업이 가능하도록 생태계를
- 구축하는 것.
- 엄밀히 말하면 운영체제가 아님.
- 전통적인 운영체제 (리눅스, 윈도우즈, 안드로이드 등)가 아니고, 오히려 이를 이용하고 있음.
- 로봇 응용 소프트웨어 개발을 위한 로봇 소프트웨어 프레임워크 (Toolbox) 제공
- 메타 운영체제를 통해 로봇이나, 센서, 앱 등을 개발할 수 있음.
- 이기종 디바이스 간의 통신을 지원 = 하드웨어가 달라도 상호작용 가능 - ROS의 최대 장점
- ROS의 구성


- ROS의 특징
- 통신 인프라
- 노드 간 데이터 통신을 제공
- 통상적 미들웨어로 지칭되는 메시지 전달 인터페이스를 지원
- 메시지 파싱 기능
- 로봇 개발 시에 빈번히 사용되는 통신 시스템 제공
- 캡슐화 및 코드 재사용을 촉진하는 노드들 간의 메시지 전달 인터페이스
- 메시지의 기록 및 재생
- 노드 간 송/수신 되는 데이터인 메시지를 저장하고 필요시 재사용 가능
- 저장된 메시지를 기반으로 반복적인 실험 가능, 알고리즘 개발에 용이
- 메시지 사용으로 인한 다양한 프로그래밍 언어 사용 가능
- 노드 간의 데이터 교환이 메시지를 사용 → 각 노드는 서로 다른 언어로 작성 가능
- 클라이언트 라이브러리 : roscpp, rospy, roslisp, rosjava 등
- 분산 매개 변수 시스템
- 시스템에서 사용되는 변수를 글로벌 키값으로 작성해 공유 및 수정해 실시간 반영
- 로봇 관련 다양한 기능
- 로봇에 대한 표준 메시지 정의
- 카메라, IMU, 레이저 등의 센서/오도메트리, 경로 및 지도 등의 내비게이션 데이터
- 등의 표준 메시지를 정의해 모듈화, 협업 작업을 유도, 효율성 향상
- 로봇 기하학 라이브러리
- 로봇, 센서 등의 상대적 좌표를 트리화 시키는 TF 제공
- 로봇 기술 언어
- 로봇의 물리적 특성을 설명하는 XML 문서 기술
- 진단 시스템
- 로봇의 상태를 한눈에 파악할 수 있는 진단 시스템 제공
- 센싱/인식
- 센서 드라이버, 센싱/인식 레벨의 라이브러리 제공
- 내비게이션
- 로봇에서 많이 사용되는 로봇의 포즈 (위치/자세) 추정, 지도 내의 자기 위치 추정 제공
- 지도 작성에 필요한 SLAM, 작성된 지도 내에서 목적지를 찾아가는 Navigation
- 라이브러리 제공
- 매니퓰레이션
- 로봇 암에 사용되는 IK, FK는 물론, 응용단의 Pick and Place를 지원하는 다양한
- Manipulation 라이브러리 제공
- GUI 형태의 Tools 제공 (Movelt!)
- 로봇에 대한 표준 메시지 정의
- 다양한 개발 도구
- 로봇 개발에 필요한 다양한 개발 도구를 제공
- 로봇 개발의 효율성 향상
- Command-Line Tools
- GUI없이 ROS에서 제공되는 명령어로만 로봇 액세스 및 거의 모든 ROS 기능 소화
- RViz
- 강력한 3D 시각화툴 제공
- 레이저, 카메라 등의 센서 데이터를 시각화
- 로봇 외형과 계획된 동작을 표현
- RQT
- 그래픽 인터페이스 개발을 위한 Qt 기반 프레임워크 제공
- 노드와 그들 사이의 연결 정보 표시 (rqt_graph)
- 인코더, 전압 또는 시간이 지남에 따라 변화하는 숫자를 플로팅 (rqt_plot)
- 데이터를 메시지 형태로 기록하고 재생 (rqt_bag)
- Gazebo
- 물리 엔진을 탑재, 로봇, 센서, 환경 모델 등을 지원, 3차원 시뮬레이터
- ROS와의 높은 호환성
- 통신 인프라
Chapter 3 ROS 개발 환경 구축
- 1줄 설치 방법
- wget https://raw.githubusercontent.com/ROBOTIS-GIT/robotis_tools/master/install_ros_kinetic.sh && chmod 755 ./install_ros_kinetic.sh && bash ./install_ros_kinetic.sh
- 근데, 이 방법은 kinetic 버전으로 설치하는 걸 전제로 하기에, noetic 버전을 설치해야하는 입장에선 필요가 없다.
- 수동 설치 방법
- wiki.ros.org 접속 후, 가장 위의 Install 누르기 → LTS 버전 설치
- IDE 추천
- Qtcreator + Qt Creator Plugin for ROS
- 장점 : CmakeLists.txt를 그대로 사용 가능, rqt 플러그인 및 GUI 개발하기 쉬움
- Visual Studio Code + ROS Extension
- 장점 : 간단한 텍스트 편집기 지향, 빠름
- Eclipse
- 장점 : 많은 사람들이 사용하는 익숙한 통합개발환경
- Qtcreator + Qt Creator Plugin for ROS
반응형
'FOSCAR-(Autonomous Driving) > ROS 스터디' 카테고리의 다른 글
[2025 ROS 스터디] 한상민 #1주차 - ROS 소개 및 설치 (0) | 2025.04.06 |
---|---|
[2025 ROS 스터디] 김승현 #1주차 - ROS 소개 (0) | 2025.04.04 |
[2025 ROS 스터디] 신채영 #4주차 - SLAM과 내비게이션 (0) | 2025.02.07 |
[2025 ROS 스터디] 이영상 #4주차 - SLAM과 내비게이션 (0) | 2025.02.07 |
[2025 ROS 스터디] 황희찬 #4주차 - SLAM과 내비게이션 (0) | 2025.02.07 |