Ch 1. 로봇 소프트웨어 플랫폼
1) 스마트폰과 컴퓨터의 공통점
- 둘 다 대중화된 상품
- 다양한 하드웨어가 결합 가능한 구조
- 운영체제(OS) + 애플리케이션(App)
→ 하드웨어 모듈 + 운영체제 + 앱(서비스) + 유저 = 하나의 생태계
2) 소프트웨어 플랫폼이 가져온 변화
- 하드웨어 인터페이스가 통합됨
- 하드웨어를 추상화, 규격화, 모듈화해서 가격은 낮추고 성능은 향상
- 하드웨어, 운영체제, 앱이 분리됨
→ 개발자는 사용자 니즈에 맞춘 서비스 개발에 집중할 수 있음
- 구매 → 사용자 수 증가 → 피드백 → 생태계 순환 구조 형성
3) 로봇 분야
- 현재 여러 로봇 운영체제가 존재함 (ex. NAOqi, ROS, OPROS 등)
- 가장 많이 쓰이는 것은 ROS
- 우리나라도 자체 운영체제를 만들려고 노력 중이지만, 현실적으로는 쉽지 않음
→ 주어진 플랫폼(ROS)을 잘 활용하자.
4) 로봇 소프트웨어 플랫폼이 가져올 미래
- 하드웨어 플랫폼과의 소프트웨어 플랫폼간의 인터페이스 확립
- 모듈형 하드웨어 플랫폼 확산
- 하드웨어에 대한 지식이 없어도 응용 프로그램 작성 가능
- 더 많은 소프트웨어 인력들이 로보틱스 분야로 진입, 로봇 제품에 참여 가능
- 유저가 원하는 실질적인 서비스를 제공 → 유저 계층 형성 및 피드백 → 로봇 개발 속도가 급격히 향상됨
Ch 2. 로봇 운영체제 ROS
1) ROS 란
- 로봇 소프트웨어를 개발하기 위한 소프트웨어 프레임 워크
- 노드 간 메시지 교환 방법으로 복잡한 프로그램을 잘게 나눠 공동 개발 가능
- 로보틱스에서 많이 사용되는 모델링, 센싱, 인식, 내비게이션, 매니퓰레이션 기능 지원
→ 로보틱스 생태계 생성
2) ROS는 새로운 운영 체제(OS)인가?
- 결론은 X
- ROS = Robot Operating System
- ROS는 메타운영체제(Meta-Operating System)이다.
3) 메타운영체제(Meta-Operating System)란?
- 전통적인 운영체제(ex. 리눅스, 윈도우즈, 안드로이드)가 아님
- 로봇 응용 소프트웨어 개발을 위한 필수 기능들을 라이브러리 형태로 제공하는 생태계를 갖춤,
- 이기종 디바이스 (서로 다른 디바이스) 간의 통신 지원
→ 로봇을 움직이거나 데이터를 받는 등의 작업 쉽게 가능
4) ROS를 사용 가능한 운영체제
- 기존 전통적인 운영체제
→ 기본적으로는 Ubuntu, OS X에서 구동하는 것을 추천
5) ROS의 구성
6) ROS 생태계
7) ROS의 특징
특징 1 : 통신 인프라
- 노드간 데이터 통신을 제공
- 미들웨어로 지칭되는 메시지 전달 인터페이스 지원한다.
- 메시지 파싱 기능, 메시지의 기록 및 재생, 메시지 사용으로 인한 다양한 프로그래밍 언어 사용 가능, 분산 매개변수 시스템
특징 2 : 로봇 관련 다양한 기능
- 로봇에 대한 표준 메시지 정의, 로봇 기하학 라이브러리, 로봇 기술 언어, 진단 시스템, 센싱/인식, 내비게이션, 매니퓰레이션
특징 3 : 다양한 개발 도구
- 로봇 개발에 필요한 다양한 개발 도구 제공
- 로봇 개발의 효율성 향상
- Command-Line Tools, RViz, RQT, Gazebo
Ch 3. ROS 개발환경 구축
1) ROS noetic 설치 링크
noetic/Installation/Ubuntu - ROS Wiki
noetic/Installation/Ubuntu - ROS Wiki
Wiki: noetic/Installation/Ubuntu (2023-03-04 17:53:42에 IsaacSaito가(이) 마지막으로 수정)
wiki.ros.org
2) 터미널 창에서 roscore 실행
[250410 ROS 스터디] 1주차 추가 정리
roscpp, rospy
- roscpp: C++ 언어로 ROS 노드를 만들 때 사용하는 클라이언트 라이브러리
- rospy: Python 언어로 ROS 노드를 만들 때 사용하는 클라이언트 라이브러리
→ ROS는 언어 독립적으로 메시지를 주고받을 수 있기 때문에, 파이썬 노드와 C++ 노드가 함께 작동 가능하다.
tf (transform)
- 로봇의 여러 프레임(좌표계) 간의 위치 관계를 실시간으로 추적해주는 도구
- ex. base_link, camera_link, map, odom 등의 프레임 간 위치 관계를 시간에 따라 추적
rosbag
- ROS 데이터를 파일로 기록하고 재생할 수 있는 툴
- 실험 데이터를 나중에 다시 분석하거나 테스트할 때 유용함
- rosbag record, rosbag play 명령어로 사용
웹소켓 (WebSocket)
- 웹에서 실시간으로 데이터를 주고받기 위한 통신 기술
- ROS와 연결하여 웹 UI에서 로봇을 조작하거나 센서 데이터를 확인할 수 있음
→ 대표적인 예: [rosbridge + roslibjs] 조합으로 웹 브라우저에서 ROS 데이터 송수신 가능
Rviz
- ROS의 3D 시각화 툴
- 센서 정보(Lidar, Camera), 로봇 모델, 좌표계(tf), 경로 등을 시각적으로 보여줌
Rqt
- ROS에서 사용하는 GUI 기반 플러그인 툴 모음
- 주로 토픽 보기, 노드 그래프, 파라미터 설정, 플롯 그리기 등 다양한 기능을 GUI로 확인 가능
* GUI (Graphical User Interface) : 버튼, 창, 그래프, 마우스 클릭 등 조작이 가능한 화면
* CLI (Command Line Interface) : 터미널에서 명령어로 조작하는 화면
'FOSCAR-(Autonomous Driving) > ROS 스터디' 카테고리의 다른 글
[2025 ROS 스터디] 김승현 #2주차-ROS의 중요컨셉, 명령어, 도구 (0) | 2025.04.22 |
---|---|
[2025 ROS 스터디] 조원영 #2주차- ROS 용어, 명령어, 도구 (0) | 2025.04.15 |
[2025 ROS 스터디] <문승주> #1주차 - <ROS소개 및 설치> (0) | 2025.04.08 |
[2025 ROS 스터디] 윤윤지 # 1주차 - ROS 소개 및 설치하기 (0) | 2025.04.07 |
[2025 ROS 스터디] 한상민 #1주차 - ROS 소개 및 설치 (0) | 2025.04.06 |