ROS2 이론 정리
ROS2 설치 및 사전 지식(3)
dawon-project
2025. 4. 10. 23:49
로봇과 센서
엑츄에이터 : 움직임(Output)을 위해서 사람의 근육과 같은 역할을 하는 것으로, 전기 신호를 받아 물리적인 움직임이나 변화를 만들어내는 장치, 정보를 실행하는 역할을 한다.
센서(Sensor) : 측정(Input)을 위해 사람의 감각과 같은 역할을 하는 것
Middleware와 Firmware
미들웨어(Middleware) : 응용 소프트웨어(Application software)가 운영 체제(Operation System, OS)로부터 제공 받는 서비스 이외에, 추가적인 서비스를 제공하는 컴퓨터 소프트웨어
-> 양쪽을 연결하여 데이터를 주고 받을 수 있도록 중간에서 매개 역할을 하는 소프트웨어
-> ex) ROS
SRC(Sigle Board Computer) : 싱글 보드 컴퓨터로, 하나의 보드에 CPU, 메모리, 저장 장치 등을 모두 포함한 작은 컴퓨터를 의미
- 주로 IOT, 임베디드 시스템, 소규모 서버 용도로 활용
- 즉 주로 소형 로봇에 탑재되는 소형 컴퓨터
- 협동로봇처럼 크기가 크거나 무거운 연산(프로세스 스레드)을 요구하는 로봇의 경우 해당 SBC 대신 우리가 일반적으로 생각하는 컴퓨터 보드나 CPU를 탑재하기도 함
- 예시
- Raspberry Pi, Arduion, BeagleBone, NVDIA Jetson Nano 등
제어기 : 로봇의 두뇌 역할을 하는 장치로써, 다양한 센서와 엑추에이터를 연결할 수 있다.
IOT(Internal of Things) : 사물인터넷이라도 부르며, 연결된 디바이스의 공통 네트워크를 의미한다.
-> 디바이스와 클라우드 및 디바이스 간 통신을 용이하게 하는 기술을 의미
- IOT의 구성 요소
- 스마트 디바이스 : 환경, 사용자 입력 또는 사용 패턴에서 데이터를 수집하고, 인터넷을 통해 IOT 애플리케이션과 데이터를 주고받는다.
- IOT 애플리케이션 : 다양한 IOT 디바이스에서 수신한 데이터를 통합하는 서비스 및 소프트웨어의 모음
-> 머신러닝/딥러닝 기술을 사용하여 이 데이터를 분석하고 정보에 입각한 결정을 내림
-> 이러한 결정은 IOT 디바이스로 다시 전달되고 IOT 디바이스는 입력에 지능적으로 응답 - 그래픽 사용자 인터페이스 : 그래픽 사용자 인터페이스를 통해 IOT 디바이스나 디바이스 플릿(Fleet)을 관리할 수 있다.
-> 일반적인 예로 스마트 디바이스를 등록하고 제어하는데 사용할 수 있는 모바일 애플리케이션 또는 웹사이트
- 예시
임베디드(Embedded)
->내장형 시스템이라는 뜻으로, 시스템 내부에 탑재된 컴퓨터
- 시스템을 동작시키는 소프트웨어를 하드웨어에 내장하여 특수한 기능만을 수행하는 컴퓨터 시스템
- 즉, 디바이스를 직접적으로 제어하는 프로그램
- 디바이스를 제어하기 위해 메모리 영역에서 리소스를 제어하는 것이 필요해서 강력한 메모리 조작 성능을 갖추고 있는 C/C++ 언어의 사용을 권장
- 임베디드 개발에서 메모리 리소스 영역을 제대로 정리하지 못하고, 침범하면 하드웨어의 심각한 오작동을 유발할 수 있기 때문에 컴파일 언어의 빌드 동작으로 메모리 리소스를 효율적으로 확보해야함
-> 기기에 탑재되는 프로그램 리소스가 제한될 수 있어 최적화가 반드시 필요
파이썬으로 임베디드 개발이 가능한가? 결론부터 말하자면 부적절하다
부적절한 이유
- 메모리 제어의 어려움
-> 파이썬은 가비지 컬렉션을 통해 메모리를 자동으로 관리하기 때문에 메모리 할당과 해제를 사용자가 명확하게 통제하기 어렵고, 예측 가능한 메모리 사용이 중요한 임베디드 환경에서는 부적절하다. - 실시간성 부족
-> 파이썬 인터프리터는 실시간 처리를 보장하지 못하기때문에 실시간성을 해칠 수 있다. - 무거운 런타임 환경
-> 파이썬은 실행에 필요한 메모리와 CPU 자원이 비교적 커서 자원이 제한된 임베디드 시스템에서는 큰 부담이 된다.
로봇의 센서 활용 구성
-> 협동로봇의 경우 사람과 상호작용을 하며 사용이 되며 크기 또한 비교적 작다. 하지만 산업용 로봇은 크기가 매우 크며 토크 또한 강하기 때문에 사람에게 매우 위협적이어서 펜스가 필요하다.
로봇의 조인트(Joint, 관절)
좌표계
ROS : 로봇을 위한 오픈소스이자 메타 운영 시스템
-> 하드웨어 추상화, 하위 디바이스 제어, 로보틱스에서 많이 사용되는 센싱, 인식, 지도 작성, 모션 플래닝 등의 기능 구현, 프로세스 사이의 메세지 파싱, 패키지 관리, 개발환경에 필요한 라이브러리와 다양한 개발, 디버깅 도구를 제공한다.
ROS의 통신은 SBC나 로봇에 탑재된 컴퓨터가 통신하는 것
-> 컴퓨터(데스크탑 혹은 노트북)의 SBC 혹은 로봇에 탑재된 컴퓨터 간의 통신
메타 운영 체제 : 애플리케이션과 분산 컴퓨팅 자원 간의 가상화 레이어로 분산 컴퓨팅 자원을 활용하여 스케쥴링 및 로드, 감시, 에러 처리 등을 실행하는 시스템
ROS의 사용 목적
- 로보틱스 소프트웨어 개발을 전 세계 레벨에서 공동 작업이 가능하도록 하는 환경 구축
- 코드 재사용을 목적으로 이를 지원하기 위한 로봇 SW 개발 환경을 지원
- 실시간 처리를 지원하는 DDS 기반의 통신 미들웨어 사용
- 보안 기능을 강화하여 데이터 무결성과 기밀성을 부여할 수 있다.
ROS2 설치 방법 -> 우분투 22.04 버전에서 진행된다.