본문 바로가기
Ros

ROS:: Ros 소개 및 필요성

by alscks 2024. 9. 6.

국민대 자율주행 대회에 참여하며 ros를 처음 접하게 되었다.

ros를 통한 패키지 작성과 런치파일 작성등이 필요하였고 최종적으로 본선에서는 ros를 통해 자동차를 구동하였고 그 과정에서 lidar, usbcam, 초음파 센서, 모터 등의 장치를 구동하고 데이터를 받아올 때 ros가 필수적임을 알 수 있었다. 해당 대회에서 ros을 사용한 것에 비해 공부가 부족하였음을 느꼈고 추가적인 공부를 통해 ros를 익혀 다른 공모전이나 프로젝트에 효과적으로 사용할 수 있게 되었으면 한다.

공부는 ROS 로봇 프로그래밍(표윤석/조한철/정려운/임태훈- 루피페이퍼) 교재를 기반으로 진행할 것이며 ROS 카테고리에 해당되는 게시물은 해당 교재를 기반으로 작성될 것으로 예상된다.

 

 

ROS는 로봇 응용 프로그램을 개발할 때 필요한 패키지 관리, 라이브러리, 디버깅 도구를 제공하며 로보틱스에서 많이 사용하는 센싱 인식 지도작성 등의 기능 구현을 제공한다.

" ROS는 운영체제와 비슷한 역할인 하드웨어 추상화를 포함하고 있으면서도 전통적인 운영체제가 아니기에 이기종 하드웨어에서 사용할 수 있는 특징을 가지고 있으며 응용 프로그램을 개발하기 위해 로봇에 특화된 다양한 개발환경을 제공하는 소프트웨어 플랫폼이다. "

ROS는 로보틱스를 위한 새로운 운영체제인가?  -> Robot Operating System으로 운영체제는 맞다.. 하지만?

명확하게 표현하면 ROS는 메타 운영체제이다. Meta-Operating System으로 분산 컴퓨팅 자원 간의 가상화 레이어로 분산 컴퓨팅 자원을 활용하는 운영체제이다. (Middleware, software framework)

ROS는 로보틱스 소프트웨어 개발을 전 세계 레벨에서 공동 작업이 가능하도록 하는 환경을 구축하는 것을 목표로 한다. 따라서 로보틱스 연구, 코드 재사용을 극대화하는 것에 초점이 맞춰져 있다.

 

분산 프로세스 : 최소 단위의 실행 가능한 프로세스(Node)형태로 프로그램. 각 프로세스는 독립적으로 실행되면서 유기적으로 데이터를 주고받음

패키지 단위 관리 : 같은 목적을 갖는 복수 개의 프로세스를 패키지 단위로 관리하여 관리 및 수정, 배포가 편리하다.

공개 리포지토리 : 각 패키지는 개발자가 선호하는 공개 리포지토리등에 패키지를 공개하고 라이선스도 밝히게 되어 있다.(ar_track_avar 사용해 보았음,, github에서 소스코드를 확인 가능함.)

다수의 프로그래밍 언어 지원 : 그냥 다양한 언어를 지원한다. python, c++...

 

2장의 이후 내용은 일단 생략하였음