로봇이 개인용 컴퓨터(pc), 스마트폰 처럼 시장에 보급이 원활하게 되기 위해서, 산업의 분업화를 이뤄내고 생태계를 구축해야 한다.
생태계는 다음과 같다.
<하드웨어 - 운영체제 - 앱 - 사용자>
스마트폰을 예로 들면, 안드로이드 라는 운영체제를 기반으로 여러 하드웨어 회사들이 (삼성, lg) 등이 하드웨어를 개발한다. 그리고 앱 개발자도 따로 존재한다. 시장에서 수요와 공급이 이루어 지기 위해, 상품을 사는 소비자의 니즈를 정확히 파악해야 한다.
만약 한 회사가 운영체제, 하드웨어, 앱 개발을 모두 담당한다면, 소비자의 피드백을 받는 일을 전문화 하기 어려울 것이다.
하지만 앱개발자가 존재하기에 이들이 소비자와의 소통으로 휴대폰이라는 하드웨어를 소비자의 니즈에 맞게 사용할 수 있도록 여러 앱을 개발하고 있는 것이다.
로봇시장에서 위의 생태계 구축을 목표로 만들어진 대중적인 운영체제 ( 메타운영체제 ) 로스(Robotics Operating System)에 대해서 스터디할 것이다.
<소프트웨어 프레임워크>
- 노드간 메세지 교환 방법으로 복잡한 프로그램을 잘게 나눠 공동 개발 가능
- 명령어 도구, 시각화 도구, RViz, Gazebo 등 여러가지 패키지, 앱 제공 (로봇개발에 용이함)
<지원하는 운영체제 ( 사실 운영체제 위에서 돌아가기 때문에 정확히 로스를 운영체제라고 하지 않음)
- 우분투, 리눅스 추천, 윈도우즈, 민트, macOS
- 운영체제를 올릴 수 없는 mcu 에서도 시리얼통신, 랜, 블루투스 등 다양한 방법으로 통신이 가능함
< client layer (개발언어) >
- rospy, roscpp, roslisp, rosjava, roslibjs (서로 다른 언어로 작성해도 노드 간 통신 가능)
< Robotics Application (로봇의 어떤 행동을 설계할때, 라이브러리 처럼 누군가 만들어 놓은 행동, 형식에 맞게 사용) >
- rospeex, navigation( 로봇의 시작점과 도착점을 지정하면, 스스로 주행함. 장애물도 회피 가능), teleop. pkgs
< Robotics Application Framework ( 위의 앱들을 개발하기 위해 필요한 개발도구)>
- tf ( 로봇은 많은 센서들, 관절들이 합쳐서 하나의 본체를 이룬다. 이때 각 센서들, 관절 부품들의 상대 좌표를 변환해줌 ), robot localisation ( 로봇의 현재 위치 추정)
https://velog.io/@7cmdehdrb/whatIsTF
tf 에 대한 이론은 다음 블로그를 참고하였다.
< Communication Layer (로스는 노득 간 통신을 지원한다. 이때 통신에 사용되는 형태들) >
- rosbag, rostopic, roslaunch( 런치 파일을 실행 시키면, 동시에 여러 코드가 실행됨) , rosnode
< Software Development Tools (코딩할 때 필요한 도구) >
- Rviz( 각종 센서 데이터 값, 로봇의 주행 행동 동작들을 시각화 하고 , 다양하게 가공할 수 있도록 함 ), rqt, rospack, catkin ( 로스에서 코드의 빌드 담당 ), rosdep ( 빌드 시 필요한 로스 패키지를 확인하고 자동적으로 설치해줌 )
< Simulation >
- gazebo
< 통신 인프라 >
- 특정 센서들의 데이터 값의 표준적인 메세지 형태를 정의 하고 있음 ( 언제든지 변할 수 있음 )
- 주고 받은 메세지 기록
- 다양한 프로그래밍 언어 사용가능
- 분산 매개 변수 시스템
< 로봇 관련 다양한 기능 >
- 로스를 운영체제로 가진 로봇들의 표준 메세지 정의
- 로봇의 상대적 위치 좌표를 변환해 주는 tf 라이브러리 존재 -> 다수의 로봇 기하학 라이브러리 존재
- 로봇 기술 언어 파일 제공
- 로봇의 현 상태 진단 가능
- 센서, 네비게이션 등 로봇에게 필요한 정보를 처리할 수 있는 라이브러리 제공
< 다양한 개발 도구 >
- command line tools
- Rviz, Rqt, Gazebo
https://wiki.ros.org/Documentation
로스는 오픈소스 이기 때문에 다양한 개발자들의 의견이 오간다. 위의 위키에 들어가면 수많은 패키지, 앱을 볼 수 있다.
터틀심 노드 ( 거북이의 위치를 보여주는 파란창 )
커맨드 밸류 ( 키값을 터틀심이 알아들을 수 있는 형태로 변환 )
텔레옵 노드 ( 내가 키보드를 눌러서 거북이의 이동 방향을 명령함 )
'FOSCAR-(Autonomous Driving) > ROS 스터디' 카테고리의 다른 글
[2024 ROS 스터디] 이상혁 #1주차 - ROS 소개 및 설치하기 (0) | 2024.01.28 |
---|---|
[2024 ROS 스터디] 변수양 #1주차 - ROS 소개 및 설치하기 (0) | 2024.01.28 |
[2024 ROS 스터디] <정성진> #1주차 - ROS 소개 및 설치하기 (0) | 2024.01.27 |
[2024 ROS 스터디] 정주광 #1주차 - ROS 소개 및 설치하기 (1) | 2024.01.26 |
[2024 ROS 스터디] 박재훈 #1주차 - ROS 소개 및 설치하기 (0) | 2024.01.24 |