반응형
CH 01. 로봇 소프트웨어 플랫폼
대중화된 제품: Personal Computer, Phone
- 하드웨어 모듈로 구성 : 램, cpu, 디스플레이 등의 결합
- 운영체제(operating system) + Application
- 운영체제 : 윈도우, linux, mac …
- 운영체제를 기반으로 한 어플리케이션 탑재
생태계 4대 요소 : 하드웨어 모듈 + 운영체제 + 앱(서비스) + 유저
- 보이지 않는 생태계 속의 분업이 이루어지고 있다.
- 과거에는 모듈화되지 않은 상품들이 출시되었지만, 현재는 하드웨어가 모듈화 되어 개별적인 웹 또는 어플리케이션 개발이 가능해졌다.
- 과거에는 한 회사에서 모든 하드웨어를 만들어 제품을 만들었다.
그렇다면 로봇 분야는?
- personal robot은 위의 대중화된 제품인 personal computer 의 역사와 유사한 흐름으로 진행될 것이다.
- personal robot이 대중화되려면, 모듈화가 될 필요가 있다.
- 현재는 모듈화 되어있지 않으며, 대중화 되지도 않음
소프트웨어 플랫폼이 가져온 변화
- 하드웨어 인터페이스 통합
- 하드웨어 추상화 + 규격화 + 모듈화
- 가격 하락, 성능 상승 : 모듈화되면서 양상 체계가 가능해짐
- 하드웨어 + 운영체제 + 어플리케이션 분리
- 사용자 수요에 맞는 서비스에 집중
- 처음 스마트폰은 전화의 목적으로 만들어진 물건이지만, 현재는 다른 목적으로 사용하는 사용자들이 많다.
- 계속해서 사용자들의 니즈에 충족하는 서비스를 제공할 수 있다.
- 현재 로봇 분야는 시장의 니즈가 아닌 개발자를 기반으로 개발되어 판매되고 있다.
- 유저 증가 → 구매 및 피드백 → 새로운 생태계의 전환 구조 형성
로봇 분야의 운영체제
- 약 40 종류의 운영체제가 다양하게 개발되고 있다.
- 대표적으로, open RTM, opros, NAOqi, ROS …
- 운영체제보다 미들웨어라고 볼 수 있음
- Open source : ROS
- Closed source : NAOqi
- Galapagos : opros, RTM - 보급에서 실패
로봇 소프트웨어 플랫폼이 가져올 미래 : Personal computer/phone의 경우와 유사
- 하드웨어 플랫폼과의 소프트웨어 플랫폼간의 인터페이스 확립
- 모듈형 하드웨어 플랫폼확산
- 하드웨어에 대한 지식이 없어도 응용 프로그램 작성 가능 : 현재는 모든
- 더 많은 소프트웨어 인력들이 로보틱스 분야로 진입, 로봇 제품에 참여 가능 : 게임 개발자들은 이미 로봇에서 필요로 하는 인터페이스를 갖추고 있다.
- 유저에게 제공할 서비스에 집중
- 실수요가 있는 서비스 제공으로 유저 계층 형성 및 피드백
- 로봇 개발이 급속도로 발전 할 수 있는 계기
CH 02. 로봇 운영체제 ROS
1. ROS 소개
ROS는 로봇 개발을 위한 오픈소스 플랫폼으로, 가장 많은 유저를 보유하고 있으며, 가장 많은 로봇 및 센서를 지원하고 있다.
ROS란?
- Open-source 기반
- Meta-operating system
- 로봇을 위한 운영체제
2. 소프트웨어 프레임워크
- Plumbing + Tools + Capabilities + Ecosystem
- 로봇 소프트웨어를 개발하기 위한 소프트웨어 프레임워크
- 노드 간에 메시지 교환 방법으로 복잡한 프로그램을 잘게 나눠 공동 개발이 가능
- 명령어 도구, 시각화 도구 Rviz, GUI 도구 모음 rqt, 3차원 시뮬레이터 Gazebo 지원
- 로보틱스에서 많이 사용되는 모델링, 센싱, 인식, 내비게이션, 매니퓰레이션 기능 지원
- 로보틱스 생태계 생성
📌 ROS의 진정한 목적 : 로봇 소프트웨어 개발을 전세계 레벨에서 공동작업이 가능하도록 생태계를 구축하는 것!
3. 메타 운영체제(Meta-Operating System)
ROS는 새로운 운영 체제(OS)인가?
- 운영 체제 (Operating System)
- 범용 컴퓨터 : Windows, Linux, MAC
- 스마트폰 : Android, iOS, Windows Phone, Symbian, RiMo, Tizen
- ROS = Robot Operating System
- ROS는 메타운영체제(Meta-Operating System)이다. (운영체제X)
메타운영체제(Meta-Operating System)
- 메타운영체제는 완전히 정의된 용어는 아니다.
- 어플리케이션과 분산 컴퓨팅 자원 간의 가상화 레이어로 분산 컴퓨팅 자원을 활용하여 스케쥴링 및 로드, 감시, 에러 처리 등을 실행하는 시스템
- 전통적인 운영체제(Window, Linux, MAC 등)는 아니다.
- ROS는 기존의 전통적인 운영체제를 이용하고 있다.
- 기존 운영체제의 프로세스 관리 시스템, 파일 시스템, 유저 인터페이스, 프로그램 유틸(컴파일러, 스레드 모델) 등을 사용하고 있다.
- 다수의 이기종 하드웨어 간의 데이터 송수신, 스케쥴링, 에러 처리 등 로봇 응용 소프트웨어 개발을 위한 필수 기능들을 라이브러리 형태로 제공
- 로봇 소프트웨어 프레임워크를 기반으로 다양한 목적의 응용 프로그램을 개발, 관리, 제공하며, 유저들이 개발한 패키지를 유통하는 생태계를 갖추고 있다.
- 메타운영체제 ↔ Robot, Sensor, App
- : 디바이스 드라이버, 라이브러리, 디버그 도구, 메시지 통신, 구동 도구, 컴파일 도구, 인스톨러, 패키지 생성 릴리즈
ROS를 사용 가능한 운영체제
- 기존 전통적인 운영체제 : 아래 세 가지 모두 지원
- ROS를 사용 가능한 운영체제로는 Ubuntu, OS X, Windows, Fedora, Gentoo, OpenSUSE, Debian, Raspbian, Arch, QNX Realtime OS 등이 있으나 기능 제한사항이 있을 수 있다.
- 스마트폰 운영체제인 Android, iOS의 경우, 부분적 사용가능
- OS를 탑재할 수 없는 마이크로 컨트롤러 유닛(MCU)의 경우, 시리얼 통신, 블루투스, LAN 경유로 통신할 수 있는 라이브러리를 제공한다.
- 기본적으로는 Ubuntu, OS X에서 구동하는 것 추천
4. ROS의 구성
- Client Layer : 다양한 언어 지원
- Robotics Application
- Robotics Application Framework : 각종 프로그램 지원
- Communication Layer : 토픽, 액션 등의 메시지 교환 방식
- Hardware Interface Layer : 카메라, gps, 모터 등의 하드웨어 중 무엇을 쓸건지
- Software Development Tools
- Simulation : stage(2차원), gzrebo ros pkgs(3차원)
5. ROS의 생태계
- Robot, Sensor : 90종류 이상의 로봇과 80종류 이상의 센서를 지원하고 있다.
- ROS : 애플리케이션, 시뮬레이터, 지능모듈, 라이브러리, 툴, 프로그래밍언어 등
- APP
- 5000개 이상의 패키지 보유
- 2800개 이상의 공식 패키지 제공
- 113000 정도의 다운로드 수
- 17058 Wiki 페이지
6. ROS의 특징
- 통신 인프라
- 노드 간 데이터 통신을 제공
- 통상적 미들웨어로 지칭되는 메시지 전달 인터페이스 지원
- 메시지 파싱 기능
- 로봇 개발 시에 빈번히 사용되는 통신 시스템 제공
- 캡슐화 및 코드 재사용을 촉진하는 노드들 간의 메시지 전달 인터페이스
- 카메라 또는 모터에 저장된 정보를 어떻게 보낼지 규격화 되어있다.
- 메시지의 기록 및 재생
- 노드 간 송수신되는 데이터인 메시지를 저장하고 필요시에 재사용 가능
- 저장된 메시지를 기반으로 반복적인 실험 가능, 알고리즘 개발에 용이
- 카메라 정보를 기록하고 필요할 때 재생할 수 있다.
- 메시지 사용으로 인한 다양한 프로그래밍 언어 사용 가능
- 노드 간의 데이터 교환이 메시지를 사용하기 때문에 각 노드는 서로 다른 언어로 작성 가능
- 클라이언트 라이브러리 : roscpp, rospy, roslisp, rosjava, roslua, roscs, roseus, PhaROS, rosR
- 노드마다 다른 언어를 사용하여도 된다.
- 분산 매개 변수 시스템
- 시스템에서 사용되는 변수를 글로벌 키값으로 작성하여 공유 및 수정하여 실시간으로 반영
- 로봇 관련 다양한 기능
- 로봇에 대한 표준 메시지 정의
- 카메라, IMU, 레이저 등의 센서 / 오토메트리, 경로 및 지도 등의 내비게이션 데이터 등의 표준 메시지를 정의하여 모듈화, 협업 작업을 유도, 효율성 향상
- 로봇 기하학 라이브러리
- 로봇, 센서 등의 상대적 좌표를 트리화 시키는 TF 제공
- 휴머노이드 로봇의 경우 모든 관절이 상대 좌표로 정해져 있다.
- 로봇 기술 언어
- 로봇의 물리적 특성을 설명하는 XML 문서 기술
- 진단 시스템
- 로봇의 상태를 한눈에 파악할 수 있는 진단 시스템 제공
- 현재 로봇의 상태(배터리, 각도, 센서 값 등)를 진단
- 센싱/인식
- 센서 드라이버, 센싱/인식 레벨의 라이브러리 제공
- 내비게이션
- 로봇에서 많이 사용되는 로봇의 포즈(위치, 자세) 추정, 지도 내의 자기 위치 추정 제공
- 지도 작성에 필요한 SLAM, 작성된 지도 내에서 목적지를 찾아가는 Navigation 라이브러리 제공
- 매니퓰레이션
- 로봇 암에 사용되는 IK, FK는 물론 응용단의 Pick and Place를 지원하는 다양한 Manipulation 라이브러리 제공
- GUI 형태의 매니퓰레이션 Tools 제공 (MoveIt)
- 로봇에 대한 표준 메시지 정의
- 다양한 개발 도구
- 로봇 개발에 필요한 다양한 개발 도구를 제공
- 로봇 개발의 효율성 향상
- Command-Line Tools
- GUI 없이 ROS에서 제공되는 명령어로만 로봇 억세스 및 거의 모든 ROS 기능 소화
- RViz
- 강력한 3D 시각화 툴 제공
- 레이저, 카메라 등의 센서 데이터 시각화
- 로봇 외형과 계획된 동작을 표현
- RQT
- 그래픽 인터페이스 개발을 위한 Qt 기반 프레임워크 제공
- 노드와 그들 사이의 연결 정보 표시 (rqt_graph)
- 인코더, 전압, 또는 시간이 지남에 따라 변화하는 숫자를 플로팅 (rqt_plot)
- 데이터를 메시지 형태로 기록하고 재생 (rqt_bag)
- Gazebo
- 물리 엔진을 탑재, 로봇, 센서, 환경 모델 등을 지원, 3차원 시뮬레이터
- ROS와 높은 호환성1. ROS 소개ROS란?
- Open-source 기반
- Meta-operating system
- 로봇을 위한 운영체제
- Plumbing + Tools + Capabilities + Ecosystem
- 로봇 소프트웨어를 개발하기 위한 소프트웨어 프레임워크
- 노드 간에 메시지 교환 방법으로 복잡한 프로그램을 잘게 나눠 공동 개발이 가능
- 명령어 도구, 시각화 도구 Rviz, GUI 도구 모음 rqt, 3차원 시뮬레이터 Gazebo 지원
- 로보틱스에서 많이 사용되는 모델링, 센싱, 인식, 내비게이션, 매니퓰레이션 기능 지원
- 로보틱스 생태계 생성
- 운영 체제 (Operating System)
- 범용 컴퓨터 : Windows, Linux, MAC
- 스마트폰 : Android, iOS, Windows Phone, Symbian, RiMo, Tizen
- ROS = Robot Operating System
- ROS는 메타운영체제(Meta-Operating System)이다. (운영체제X)
- 메타운영체제는 완전히 정의된 용어는 아니다.
- 어플리케이션과 분산 컴퓨팅 자원 간의 가상화 레이어로 분산 컴퓨팅 자원을 활용하여 스케쥴링 및 로드, 감시, 에러 처리 등을 실행하는 시스템
- 전통적인 운영체제(Window, Linux, MAC 등)는 아니다.
- ROS는 기존의 전통적인 운영체제를 이용하고 있다.
- 기존 운영체제의 프로세스 관리 시스템, 파일 시스템, 유저 인터페이스, 프로그램 유틸(컴파일러, 스레드 모델) 등을 사용하고 있다.
- 다수의 이기종 하드웨어 간의 데이터 송수신, 스케쥴링, 에러 처리 등 로봇 응용 소프트웨어 개발을 위한 필수 기능들을 라이브러리 형태로 제공
- 로봇 소프트웨어 프레임워크를 기반으로 다양한 목적의 응용 프로그램을 개발, 관리, 제공하며, 유저들이 개발한 패키지를 유통하는 생태계를 갖추고 있다.
- 메타운영체제 ↔ Robot, Sensor, App
- : 디바이스 드라이버, 라이브러리, 디버그 도구, 메시지 통신, 구동 도구, 컴파일 도구, 인스톨러, 패키지 생성 릴리즈
- 기존 전통적인 운영체제 : 아래 세 가지 모두 지원
- ROS를 사용 가능한 운영체제로는 Ubuntu, OS X, Windows, Fedora, Gentoo, OpenSUSE, Debian, Raspbian, Arch, QNX Realtime OS 등이 있으나 기능 제한사항이 있을 수 있다.
- 스마트폰 운영체제인 Android, iOS의 경우, 부분적 사용가능
- OS를 탑재할 수 없는 마이크로 컨트롤러 유닛(MCU)의 경우, 시리얼 통신, 블루투스, LAN 경유로 통신할 수 있는 라이브러리를 제공한다.
- 기본적으로는 Ubuntu, OS X에서 구동하는 것 추천
- Client Layer : 다양한 언어 지원
- Robotics Application
- Robotics Application Framework : 각종 프로그램 지원
- Communication Layer : 토픽, 액션 등의 메시지 교환 방식
- Hardware Interface Layer : 카메라, gps, 모터 등의 하드웨어 중 무엇을 쓸건지
- Software Development Tools
- Simulation : stage(2차원), gzrebo ros pkgs(3차원)
- Robot, Sensor : 90종류 이상의 로봇과 80종류 이상의 센서를 지원하고 있다.
- ROS : 애플리케이션, 시뮬레이터, 지능모듈, 라이브러리, 툴, 프로그래밍언어 등
- APP
- 5000개 이상의 패키지 보유
- 2800개 이상의 공식 패키지 제공
- 113000 정도의 다운로드 수
- 17058 Wiki 페이지
- 통신 인프라
- 노드 간 데이터 통신을 제공
- 통상적 미들웨어로 지칭되는 메시지 전달 인터페이스 지원
- 메시지 파싱 기능
- 로봇 개발 시에 빈번히 사용되는 통신 시스템 제공
- 캡슐화 및 코드 재사용을 촉진하는 노드들 간의 메시지 전달 인터페이스
- 카메라 또는 모터에 저장된 정보를 어떻게 보낼지 규격화 되어있다.
- 메시지의 기록 및 재생
- 노드 간 송수신되는 데이터인 메시지를 저장하고 필요시에 재사용 가능
- 저장된 메시지를 기반으로 반복적인 실험 가능, 알고리즘 개발에 용이
- 카메라 정보를 기록하고 필요할 때 재생할 수 있다.
- 메시지 사용으로 인한 다양한 프로그래밍 언어 사용 가능
- 노드 간의 데이터 교환이 메시지를 사용하기 때문에 각 노드는 서로 다른 언어로 작성 가능
- 클라이언트 라이브러리 : roscpp, rospy, roslisp, rosjava, roslua, roscs, roseus, PhaROS, rosR
- 노드마다 다른 언어를 사용하여도 된다.
- 분산 매개 변수 시스템
- 시스템에서 사용되는 변수를 글로벌 키값으로 작성하여 공유 및 수정하여 실시간으로 반영
- 로봇 관련 다양한 기능
- 로봇에 대한 표준 메시지 정의
- 카메라, IMU, 레이저 등의 센서 / 오토메트리, 경로 및 지도 등의 내비게이션 데이터 등의 표준 메시지를 정의하여 모듈화, 협업 작업을 유도, 효율성 향상
- 로봇 기하학 라이브러리
- 로봇, 센서 등의 상대적 좌표를 트리화 시키는 TF 제공
- 휴머노이드 로봇의 경우 모든 관절이 상대 좌표로 정해져 있다.
- 로봇 기술 언어
- 로봇의 물리적 특성을 설명하는 XML 문서 기술
- 진단 시스템
- 로봇의 상태를 한눈에 파악할 수 있는 진단 시스템 제공
- 현재 로봇의 상태(배터리, 각도, 센서 값 등)를 진단
- 센싱/인식
- 센서 드라이버, 센싱/인식 레벨의 라이브러리 제공
- 내비게이션
- 로봇에서 많이 사용되는 로봇의 포즈(위치, 자세) 추정, 지도 내의 자기 위치 추정 제공
- 지도 작성에 필요한 SLAM, 작성된 지도 내에서 목적지를 찾아가는 Navigation 라이브러리 제공
- 매니퓰레이션
- 로봇 암에 사용되는 IK, FK는 물론 응용단의 Pick and Place를 지원하는 다양한 Manipulation 라이브러리 제공
- GUI 형태의 매니퓰레이션 Tools 제공 (MoveIt)
- 로봇에 대한 표준 메시지 정의
- 다양한 개발 도구
- 로봇 개발에 필요한 다양한 개발 도구를 제공
- 로봇 개발의 효율성 향상
- Command-Line Tools
- GUI 없이 ROS에서 제공되는 명령어로만 로봇 억세스 및 거의 모든 ROS 기능 소화
- RViz
- 강력한 3D 시각화 툴 제공
- 레이저, 카메라 등의 센서 데이터 시각화
- 로봇 외형과 계획된 동작을 표현
- RQT
- 그래픽 인터페이스 개발을 위한 Qt 기반 프레임워크 제공
- 노드와 그들 사이의 연결 정보 표시 (rqt_graph)
- 인코더, 전압, 또는 시간이 지남에 따라 변화하는 숫자를 플로팅 (rqt_plot)
- 데이터를 메시지 형태로 기록하고 재생 (rqt_bag)
- Gazebo
- 물리 엔진을 탑재, 로봇, 센서, 환경 모델 등을 지원, 3차원 시뮬레이터
- ROS와 높은 호환성
- ROS는 새로운 운영 체제(OS)인가?
- ROS는 로봇 개발을 위한 오픈소스 플랫폼으로, 가장 많은 유저를 보유하고 있으며, 가장 많은 로봇 및 센서를 지원하고 있다.
반응형
'FOSCAR-(Autonomous Driving) > ROS 스터디' 카테고리의 다른 글
[2024 ROS 스터디] 곽우인 #2주차 - ROS에서 쓰이는 용어와 도구 (0) | 2024.07.12 |
---|---|
[2024 ROS 스터디] 반제호 #2주차 - ROS의 컨셉과 RViz (0) | 2024.07.12 |
[2024 ROS 스터디] 김기태 #1주차 - ROS 소개 및 설치하기 (0) | 2024.07.07 |
[2024 ROS 스터디] 반제호 #1주차 - ROS를 왜 사용할까? (0) | 2024.07.06 |
[2024 ROS 스터디] 초라핀스카 베로니카 #1주차 - ROS 소개 및 설치 (0) | 2024.07.03 |