본문 바로가기

FOSCAR-(Autonomous Driving)/ROS 스터디

[2024 ROS 스터디] 이강욱 #1주차 - ROS 소개 및 설치하기

반응형

본 글은 다음 재생목록을 듣고 정리한 글입니다.

https://www.youtube.com/playlist?list=PLX-Ur4rl2-qxkR14lmj4YdbNRcGYMA4mP

 

2024 ROS 스터디 1주차

 

www.youtube.com

해당 재생목록은

  • Chapter 1. 로봇 소프트웨어 플랫폼
  • Chapter 2. 로봇 운영체제 ROS
  • Chapter 3. ROS 개발 환경 구축

으로 이루어져 있습니다.

 

다음은 각 챕터의 요약입니다.

  • Chapter1. 로봇 소프트웨어 플랫폼
    • Personal Computer(PC)와 Personal Phone(스마트폰)의 공통점
      1. 누구나 하나쯤 보유하고 있는 "대중화 제품"
      2. 다양한 하드웨어 결합이 가능한 "하드웨어 모듈"
      3. "운영체제" 및 "애플리케이션(<=> 서비스)"
    • 위 공통점에서 등장한 하드웨어 모듈, 운영체제, 애플리케이션에 유저를 더하면 개발 생태계가 구성된다.
    • 그리고 이로 인해 각 생태계 속의 분업이 가능해졌다.
      ex) Intel, AMD과 같은 하드웨어 회사, Microsoft와 같은 운영체제 개발사, 새롭게 나타 앱 개발사 등
    • 로봇분야는 아직까지 이러한 생태계가 완전히 구축되지는 못했다.
    • 소프트웨어 플랫폼이 가져온 변화
      1. 하드웨어 인터페이스 통합
      2. 하드웨어 추상화 · 규격화  ·  모듈화
      3. 가격 ↓, 성능 ↑
      4. 하드웨어 · 운영체제 · 애플리케이션 분리
      5. 사용자 수요에 맞는 서비스에 집중 ex) 게임, 인터넷 검색, 이메일 송/수신 
      6. 유저 증가 및 구매와 피드백을 통해 새로운 생태계의 선환 구조 형성
    • 로봇 분야의 경우 아직까지 Personal Computer, Phone 분야만큼 생태계가 통합되지 않은 상태임.
      ex) ROS, URBi, OPRoS, NAOqi 등 굉장히 다양한 운영체제가 있음.
            다만, 점점 서로 비슷한 방향으로 발전해가고 있음.
    • 미래에 로봇 소프트웨어 플랫폼이 통합된다면 진입장벽이 많이 낮아질 것으로 기대할 수 있다.
  • Chapter2. 로봇 운영체제 ROS
    • ROS(Robot Operating System) 소개
      • Personal Robot에 적용하기 위한 오픈소스이자 메타 운영체제인 미들웨어(소프트웨어 프레임워크)이다. 간단히 말하면, 로봇 소프트웨어를 개발하기 위한 소프트웨어 프레임워크이다.
        * 메타 운영체제: 전통적인 운영체제는 아니고 그 위에서 로봇 소프트웨어 개발을 위한 환경을 갖춘 소프트웨어
      •  ROS의 목적은 로보틱스 소프트웨어 개발을 전세계적인 규모에서 공동 작업 가능하도록 생태계를 구축하는 것이다.
      • ROS는 메타 운영체제이기 때문에 서로 다른 기기이더라도 각 기기의 운영체제가 ROS를 설치하고 활용할 수 있다면 서로 통신을 할 수 있다.
      • ROS에서는 다양한 API를 제공하고 있다.
    • ROS의 장점 및 특징
      • 노드(프로세스) 간 통신 인프라 
        • 통신에는 메시지라는 인터페이스가 사용되며, 이는 개발 시에 굉장히 많이 이용됨.
        • 노드 간 송/수신되는 데이터인 메시지를 저장하고 필요시에 그것을 재사용할 수 있음.
          저장된 메시지를 기반으로 반복적인 실험이 가능하여 알고리즘 개발에 용이함.
        • 메시지 사용으로 인한 다양한 프로그래밍 언어 사용 가능
        • 시스템에서 공통적으로 사용되는 변수를 글로벌 키갑스로 작성하여 공유 및 수정할 수 있는 분산 매개 변수 시스템
      • 로봇과 관련된 다양한 기능
        • 로봇에 대한 표준 메시지 정의 ex) 카메라, LiDAR, Odometry 등에 관해 정의된 표준 메시지
        • 로봇 기하학 라이브러리 ex) 로봇, 센서 등의 상대적 좌표를 트리화 시키는 TF 제공
        • 로봇의 물리적 특성을 설명하는 XML 문서 기술
        • 로봇의 현재 센서값, 관절의 각도 등 상태를 확인하고 진할 수 있는 시스템
        • 센싱/인식 관련 라이브러리
        • 내비게이션 ex) 지도 작성과 관련된 SLAM, 작성된 지도 내에서 길을 찾는 Navigation 라이브러리 등
        • 매니퓰레이션 ex) MoveIt
      • 다양한 개발도구
        • CLI Tools: ROS에서 제공되는 기본적인 명령어 도구
        • 시각화 도구 
          • RViz: LiDAR, tf 등 로봇과 관련된 데이터를 시각화할 수 있는 툴
          • RQT: 노드 간 연결 정보 표시(rqt_graph), 발행되는 이미지 확인(rqt_image_view), 데이터를 메시지 형태로 기록하고 재생(rqt_bag) 등 다양한 기능을 수행
          • Gazebo: 물리엔진을 탑재한 도구로 로봇, 센서, 환경 모델을 지원하며, 3차원 시뮬레이터임.
  • Chapter3. ROS 개발환경 구축
    • 영상 강의에서는 ROS kinetic 설치로 진행하지만, 본 스터디에서는 Ubunut 20.04 운영체제를 사용하기 때문에 ROS noetic 버전을 설치해야 합니다. 다음의 링크를 따라 진행하면 됩니다.
    • 단축 명령어의 경우 catkin_ws 단 1개 만을 대상으로 설정되어 있기 때문에 조금 다르게 설정하였습니다.
      • alias sds = 'source devel/setup.bash'
      • alias cm = 'catkin_make'
    •  개발환경은 제게 가장 익숙한 VS Code를 활용할 것입니다. 그리고 영상 중간(6:35)에 소개된 terminator 프로그램을 활용하여 보다 편리한 터미널 환경에서 스터디를 진행할 것입니다.

끝으로, turtle_sim 실습 사진을 남기면서 마무리 하겠습니다.

Chapter3. 영상 중간에 나오는 turtlesim 예제 실행 모습이다. 주의점은 teleop를 실행한 터미널에    키보드 입력을 해야 거북이가 움직인다.
노드 간 정보를 보여주는 rqt_graph 를 실행하면 다음과 같은 window가 나타난다

반응형