본문 바로가기

FOSCAR-(Autonomous Driving)/ROS 스터디

[2024 ROS 스터디] <유민아> #1주차 - ROS 소개 및 설치하기

반응형

로봇이 개인용 컴퓨터(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

 

초보자를 위한 ROS : TF란 무엇인가

ROS를 이용한 프로그래밍에서 매우 중요한 frame과 TF(Transform)에 대하여 알아보자. TF란 무엇일까?

velog.io

tf 에 대한 이론은 다음 블로그를 참고하였다.

 

 

< Communication Layer (로스는 노득 간 통신을 지원한다. 이때 통신에 사용되는 형태들) >

- rosbag, rostopic, roslaunch( 런치 파일을 실행 시키면, 동시에 여러 코드가 실행됨) , rosnode

< Software Development Tools (코딩할 때 필요한 도구) >

- Rviz( 각종 센서 데이터 값, 로봇의 주행 행동 동작들을 시각화 하고 , 다양하게 가공할 수 있도록 함 ), rqt, rospack, catkin ( 로스에서 코드의 빌드 담당 ), rosdep ( 빌드 시 필요한 로스 패키지를 확인하고 자동적으로 설치해줌 )

< Simulation >

- gazebo

 

< 통신 인프라 >

- 특정 센서들의 데이터 값의 표준적인 메세지 형태를 정의 하고 있음 ( 언제든지 변할 수 있음 )

- 주고 받은 메세지 기록

- 다양한 프로그래밍 언어 사용가능

- 분산 매개 변수 시스템

여러 노드간 통신 상태를 시각화 한 rqt graph

 

 

< 로봇 관련 다양한 기능 >

- 로스를 운영체제로 가진 로봇들의 표준 메세지 정의

- 로봇의 상대적 위치 좌표를 변환해 주는 tf 라이브러리 존재 -> 다수의 로봇 기하학 라이브러리 존재

- 로봇 기술 언어 파일 제공

- 로봇의 현 상태 진단 가능

- 센서, 네비게이션 등 로봇에게 필요한 정보를 처리할 수 있는 라이브러리 제공

 

< 다양한 개발 도구 >

 - command line tools

- Rviz, Rqt, Gazebo

rviz

 

 

https://wiki.ros.org/Documentation

 

Documentation - ROS Wiki

ROS (Robot Operating System) provides libraries and tools to help software developers create robot applications. It provides hardware abstraction, device drivers, libraries, visualizers, message-passing, package management, and more. ROS is licensed under

wiki.ros.org

로스는 오픈소스 이기 때문에 다양한 개발자들의 의견이 오간다. 위의 위키에 들어가면 수많은 패키지, 앱을 볼 수 있다. 

 

 

 

터틀심 노드 ( 거북이의 위치를 보여주는 파란창 )

커맨드 밸류 ( 키값을 터틀심이 알아들을 수 있는 형태로 변환 )

텔레옵 노드 ( 내가 키보드를 눌러서 거북이의 이동 방향을 명령함 )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

   

 

반응형