※ 본 포스트는 아래의 강의를 기반으로 작성되었습니다 ※
https://www.youtube.com/playlist?list=PLRG6WP3c31_VIFtFAxSke2NG_DumVZPgw
Chapter 01. 로봇 소프트웨어 플랫폼
'Personal Computer'와 'Personal Phone'의 공통점을 통해 'Personal Robot'의 미래를 예측해본다.
'Personal Computer'와 'Personal Phone'의 공통점?
- 누구나 하나쯤은 보유하고 있는 대중화 제품
- 다양한 하드웨어의 결합이 가능한 하드웨어 모듈
- 운영체제(Operationg System)와 애플리케이션(App)을 보유
- 하드웨어 모듈 + 운영체제 + 앱(서비스) + 유저 = 생태계(Eco-system)
※ 보이지 않는 생태계 속의 분업 ※
그렇다면 로봇분야(Personal Robot)는?
- 소프트웨어 플랫폼이 가져온 변화
- 하드웨어 인터페이스 통합
- 하드웨어 추상화, 규격화, 모듈화
- 가격은 내리고 성능은 증가
- 하드웨어, 운영체제, 애플리케이션 분리
- 사용자 수요에 맞는 서비스에 집중
- 유저 증가! 구매와 피드백, 새로운 생태계의 선환 구조 형성
- 로봇 소프트웨어 플랫폼이 가져올 미래
- 하드웨어 플랫폼과의 소프트웨어 플랫폼간의 인터페이스 확립
- 모듈형 하드웨어 플랫폼 확산
- 하드웨어에 대한 지식이 없어도 응용프로그램 작성 가능
- 더 많은 소프트웨어 인력들이 로보틱스 분야로 진입, 로봇 제품에 참여 가능
- 유저에게 제공할 서비스에 집중
- 실수요가 있는 서비스 제공으로 유저계층 형성 및 피드백
- 로봇 개발이 급속도로 발전할 수 있는 계기
Chapter 02. 로봇 운영체제 ROS
ROS란?
- 오픈소스기반, meta-operating system, 로봇 소프트웨어를 개발하기 위한 소프트웨어 프레임워크
ROS의 진정한 목적
- 로보틱스 소프트웨어 개발을 전세계 레벨에서 공동 작업 가능하도록 생태계를 구축하는 것
메타운영체제(meta-operating system)란?
- 전통적인 OS가 아님, 이것들을 이용하면서 로봇 응용 소프트웨어 개발을 위한 툴박스!
※ 메타운영체제의 최대 장점 : 이기종 디바이스 간의 통신 지원 하드웨어가 워낙에 다양하기 때문 ※
ROS를 사용 가능한 운영체제에는 기존 전통적인 운영체제는 가능하다 하지만 기본적으로 Ubuntu를 사용하는 것을 추천!
로봇 운영체제 ROS의 특징
- 통신 인프라 : 노드 간 데이터 통신을 제공, 통상적 미들웨어로 지칭되는 메시지 전달 인터페이스 지원
- 메시지 파싱 기능 : 예를 들어 카메라 정보를 어떻게 보낼지, 데이터를 어떻게 전송할지 규격화 되어있음
- 메시지의 기록 및 재생 : 카메라 정보를 전송, 수신하여 2차적 작업, 로봇이 받아들이고 있는 정보들을 기록할 수 있고 나중에 필요시 재생도 가능. 알고리즘 개발 때 많이 사용한다.
- 메시지 사용으로 인한 다양한 프로그래밍 언어 사용 가능 : 서로 다른 언어로 프로그래밍을 하여도 데이터 교환이 가능함
- 분산 매개 변수 시스템
- 로봇 관련 다양한 기능
- 로봇에 대한 표준 메시지 정의 : 다양한 데이터를 주고받기 위한 표준을 만들어 놓음, 현재도 변화중
- 로봇 기하학 라이브러리
- 로봇 기술 언어
- 진단 시스템 : 로봇의 상태를 파악할 수 있음
- 센싱/인식
- 내비게이션 : 특정 지점으로부터 지점까지 이동
- 매니퓰레이션
- 다양한 개발 도구 : 로봇 개발에 필요한 다양한 개발도구를 제공, 로봇 개발의 효율성 향상
- Command Line Tools : 명령어 제공
- RViz : 강력한 3D 시각화 제공
- RQT
- Gazebo : 물리엔진을 탑재, 기반으로 시뮬레이터
ROS 버전 선택
- 5년 지원 약속된 최신 LTS버전의 Ubuntu 선택 (2년마다 LTS버전 릴리즈, 매년 4월)
- Ubuntu 릴리즈된 후 3개월 후
- 최신의 LTS 지원 ROS 버전
- 단, ROS는 릴리즈된 후 3개월 후
- Gazebo "gazebosim.org" 정보 확인 후 사용
Chapter 03. ROS 개발환경 구축
ROS 1줄 설치 방법
ROS 수동 설치 방법
ROS 설치 : http://wiki.ros.org/kinetic/Installation/Ubuntu
ROS 환경설정 : http://wiki.ros.org/ROS/Tutorials/InstallingandConfiguringROSEnvironment
저는 처음에 수동설치 방법으로 설치하려다 실패하고 한줄설치 방법으로 시도해보았습니다
하지만
.
.
.
.
왜인지 모르게 ROS의 버전이 melodic이 아닌 debian이 설치가 되어있었다.
그래서 ROS를 삭제하고 다시 설치하기 위해 설치된 ROS를 삭제하는 명령어인
$ sudo apt-get purge ros-*
$ sudo apt-get remove ros-*
$ sudo apt-get autoremove
이것들을 모두 사용한 뒤 ROS가 삭제되었는지 확인할 수 있는 명령어인
$ rosversion -d
를 입력해보았지만 삭제가 되지 않았다.
결국 가상머신과 Ubuntu를 삭제하고 재설치하였고 한줄설치 방법을 시도해보았다.
그리고 ROS가 정상적으로 설치되었는지 확인하기 위해 'roscore' 명령어를 입력해보았지만
뭔지 알 수 없는 소리들로 가득했다....
마음을 가다듬고 정석대로 수동설치를 시도해보았다.
여기까지 진행이 잘 되었고 다시 한 번 'roscore' 명령어를 입력해보았다.
그 결과는
.
.
.
.
다행히 설치가 잘 된 것을 볼 수 있다(왜지..?)
그리고 강의에서 사용하는 terminator를 설치하기 위해서는
$ sudo apt-get install termiantor
를 입력해주면 된다.
termiantor 창을 나누어서 여러개를 사용할 수 있는데 이 때 사용하는 단축키는
'Ctrl + Shift + O' (수평으로 나누어짐)와 'Ctrl + Shift + E' (수직으로 나누어짐)이 있다
그럼 이제 ROS가 잘 설치되었고 잘 실행되는지 확인해 봐야하는데 먼저
$ roscore
를 입력해준다. 그리고 다른 창에
$ rosrun turtlesim turtlesim_node
를 입력해주면 옆에 거북이가 드디어 뜨게된다! 마지막으로
$ rosrun turtlesim turtle_teleop_key
를 입력해주면 방향키를 누르는대로 거북이가 움직이는 모습을 볼 수 있다.
1주차 마무리
Chapter 1, 2에서는 ROS가 무엇인지 그리고 왜 ROS를 사용해야하는지에 대한 기본적인 배경지식을 습득할 수 있었다.
Chapter 3에서는 ROS를 Ubuntu에 설치하고 설치가 잘 되었는지 점검하는 시간을 가졌는데 여기서 많은 에러들을 마주쳐 엄청나게 많은 시간을 투자하게 되었다. 이 에러들을 바로잡기 위해 많은 구글링과 이것을 바탕으로 많은 것들을 시도해보았지만 결국 실패하고 말았다. 그 당시에는 정말 화도 나고 포기하고 싶었다. 하지만 잘 마무리가 된 지금 돌아보면 이런 시간들이 단순하게 낭비한 시간은 아니라고 생각이 든다. 비록 에러를 바로잡진 못했을지라도..
사실 내가 부족하여 에러를 바로잡는 방법이 있음에도 불구하고 해결하지 못 한 것일 수도 있다. 하지만 가끔씩은 나처럼 단순하게 삭제하고 모든 것을 처음부터 다시 진행해보는 것도 좋은 방법이라고 생각한다.
처음 가상머신을 설치할 때 참고했던 블로그에서 본 문장이 있다.
잘 동작하는 이유는 단 하나지만, 에러를 만나게 되는 이유는 굉장히 다양하다.
사실 너무나 당연한 말이지만 자주 잊게되는 말인 것 같다. 그러므로 앞으로도 많은 에러들을 마주칠 것이기 때문에 이번처럼 끈기를 가지고 나아가야겠다는 다짐을 하게된 1주차였다.
'FOSCAR-(Autonomous Driving) > ROS 스터디' 카테고리의 다른 글
[2023 ROS 스터디] 조성준 #3주차 - ROS 기본 프로그래밍 (0) | 2023.01.27 |
---|---|
[2023 ROS 스터디] 오준호 #2주차 - ROS 용어 및 도구 (1) | 2023.01.25 |
[2023 ROS 스터디] 박준석 #2주차 - ROS 용어, 명령어, 도구 (0) | 2023.01.23 |
[2023 ROS 스터디] 윤준영 #2주차 - ROS 용어 및 도구 (0) | 2023.01.23 |
[2023 ROS 스터디] 김예진 #2주차 - ROS 용어 및 도구 (0) | 2023.01.23 |