[ros2_control] 아키텍처 분석
본 글에서는 ros2_control의 아키텍처 시스템을 분석해보려고 합니다.
Getting Started — ROS2_Control: Rolling Aug 2022 documentation
The ros2_control framework’s source can be found in ros2_control and ros2_controllers GitHub-repositories. The following figure shows the architecture of the ros2_control framework. Resource Manager The Resource Manager (RM) abstracts physical hardware a
control.ros.org
ros2_control 다이어그램
ros2_control은 컨트롤 매니저(CM)와 컨트롤러, 리소스 매니저(RM)와 하드웨어 컴포넌트로 구성되어있습니다.
컨트롤 매니저
컨트롤 매니저는 컨트롤러와 하드웨어의 추상층을 연결해주며 컨트롤러들을 관리합니다.
즉, 모터나 로봇 그리퍼와 같은 하드웨어 컴포넌트들과 컨트롤러들이 서로 통신할 수 있도록 도와줍니다.
코드의 루프문 안에 read(), update(), write()가 있는데,
read()를 통해 하드웨어의 상태를 읽고 update()에서 컨트롤 작업을 수행하며, write()를 통하여 하드웨어 컴포넌트에 제어값을 명령합니다.
여기서 CM은 update() 부분을 할 수 있도록 도와줍니다.
컨트롤러
컨트롤러는 제어공학에서 말하는 컨트롤과 같은 기능을 수행합니다.
목표 값과 현재 값을 차이를 통해 제어 시스템에 대한 인풋 값을 계산하는 역할을 합니다.
CM이 update()함수를 호출할 때,컨트롤러에서 연산 프로세스를 진행합니다.
기본적으로 ros2_controller의 컨트롤러는 controller_interface를 상속해서 제작합니다.
사전 제작된 controller는 ros2_controllers를 참고하세요.
RM
리소스 매니저(RM)는 하드웨어 컴포넌트를 Load(사용), Unload(미사용)할 수 있게 매니저 역할을 하고
하드웨어 컴포넌트에게서 값을 읽게 도와주거나(read) 명령(write)하는 환경을 만들어줍니다.
RM은 위 코드에서 read()와 write()이 가능하게 해주는 것입니다.
하드웨어 컴포넌트
하드웨어 컴포넌트는 RM에 호출되는 하드웨어 요소들입니다.
ROS의 플러그인립으로 제작되어있으며, 실질적으로 하드웨어 자원들과 통신하는 역할을 수행합니다.
하드웨어 컴포넌트는 3가지 타입이 있습니다.
1. 시스템
시스템은 로봇 플랫폼이나 그리퍼같은 로봇 제품입니다.
상태 값을 읽을 수 있는 reading과 명령을 보내는 writing 인터페이스를 가집니다.
2. 센서
말 그대로 엔코더나 힘-토크 센서같은 센서부류입니다.
센서이다보니 명령하는 writing 인터페이스는 없고 상태 값만 읽을 수 있는 reading 인터페이스만 가집니다.
3. 액추에이터
모터와 같은 액추에이터 타입입니다.
reading과 writing 인터페이스를 가지고 있으나, 읽기인 reading 부분은 꼭 가질 필요는 없습니다.
위 내용을 종합한 아키텍처 다이어그램 첨부로 글을 마무리하겠습니다.