728x90

본 포스팅은 표윤석 박사님의 youtube 강의와 자료들을 토대로 작성하였습니다.

자료 출처

- 표윤석 박사님의 ROS Courses, ROS 강의 Chapter2. 로봇 운영체제 ROS,https://www.youtube.com/watch?v=KcIUl3WH-C8&list=PLRG6WP3c31_VIFtFAxSke2NG_DumVZPgw&index=2

- ros-seminar pdf Github Link, https://github.com/robotpilot/ros-seminar

- ros wiki, http://wiki.ros.org/ko/ROS/Introduction

Ros란?

  • ROS is an open-source, meta-operating system for your robot. It provides the services you would expect from an operating system, including hardware abstraction, low-level device control, implementation of commonly-used functionality, message-passing between processes, and package management. It also provides tools and libraries for obtaining, building, writing, and running code across multiple computers.
  • 로봇 소프트웨어를 개발하기 위한 소프트웨어 프레임워크
    • 노든간에 메시지 교환 방법으로 복잡한 프로그램을 나눠 공동 개발 가능
    • 명령어 도구, 시각화 도구 Rviz. GUI 도구 모음 rqt, 3차원 시뮬레이터 Gazebo 지원
    • 로보틱스에서 많이 사용되는 모델링, 센싱, 인식, 내비게이션, 매니퓰레이션 기능 지원

Ros 특징

1. 이기종 디바이스 간의 통신 지원

  • Ros를 깔고 앱 사용 시 다른 운영체제, 로봇간에 움직이거나 데이터를 주고받을 수 있음

2. 유닉스 기반의 다양한 운영체제에서 사용 가능

  • Ubuntu, OS X, Windows, Fedora, Gentoo, OpenSUSE, Debian, Raspbian, Arch, QNX REaltime OS 등이 있으나 기능 제한사항이 있을 수 있다.
  • Android. iOS의 경우 부분적으로 사용 가능
  • OS를 탑재할 수 없는 마이크로 컨트롤러 유닛(MCU)의 경우 시리얼 통신, 블루투스, LAN 경유로 통신할 수 있는 라이브러리 제공
  • 기본적으로 Ubuntu, OS X에서 구동하는 것을 추천

3. 통신 인프라

  • 노드 간 데이터 통신을 제공
  • 통상적 미들웨어로 지칭되는 메시지 전달 인터페이스 지원
  • 메시지 파싱 기능
    • 로봇 개발 시에 빈번히 사용되는 통신 시스템 제공
    • 캡슐화 및 코드 재사용을 촉진하는 노드들 간의 메시지 전달 인터페이스
  • 메시지의 기록 및 재생
    • 노드 간 송/수신되는 데이터인 메시지를 저장하고 필요시에 재사용 가능
    • 저장된 메시지를 기반으로 반복적인 실험 가능, 알고리즘 개발에 용이
  • 메시지 사용으로 인한 다양한 프로그래밍 언어 사용 가능
    • 노드 간의 데이터 교환이 메시지를 사용하기 때문에 각 노드는 서로 다른 언어로 작성 가능
    • 클라이언트 라이브러리 : roscpp, rospy, oslisp, rosjava, roslua, roscs, roseus, PhaROS, rosR
  • 분산 매개 변수 시스템
    • 시스템에서 사용되는 변수를 글로벌 키 값으로 작성하여 공유 및 수정하여 실시간으로 반영

4. 로봇 관련 다양한 기능

  • 로봇에 대한 표준 메시지 정의
  • 로봇 기하학 라이브러리 제공
  • 로봇 기술 언어
  • 진단 시스템 제공
  • 센서 드라이버, 센싱/인식 레벨의 라이브러리 제공
  • 로봇에서 많이 사용되는 롭소의 포즈 추정, 지대 내의 자기 위치 추정 제공하며, 지도 작성에 필요한 SLAM, 작성된 지도 내에서 목적지를 찾아가는 Navigation 라이브러리 제공
  • 로봇 암에 사용되는 IK, FK는 물론 응용단의 Pick and Place를 지원하는 다양한 Manipulation 라이브러리를 제공
  • GUI 형태의 Manipulation Tools 제공 (MoveIt!)

5. 다양한 개발 도구

  • 로봇 개발에 필요한 다양한 개발 도구를 제공
    • Command-Line Tools
      • GUI 없이 ROS에서 제공되는 명령어로만 로봇 엑세스 및 거의 모든 ROS 기능 소화
    • RViz
      • 강력한 3D 시각화 툴 제공
      • 레이저, 카메라 등의 센서 데이터를 시각화
      • 로봇 외형과 계획된 동작을 표현
    • RQT
      • 그래픽 인터페이스 개발을 위한 Qt 기반 프레임 워크 제공
      • 노드와 그들 사이의 연결 정보 표시(rqt_graph)
      • 인코더, 전압, 또는 시간이 지남에 따라 변화하는 숫자를 플로팅(rqt_plot)
      • 데이터를 메시지 형태로 기록하고 재생(rqt_bag)
    • Gazebo
      • 물리 엔진을 탑재, 로봇, 센서, 환경 모델 등을 지원, 3차원 시뮬레이터
      • ROS와의 높은 호완성을 가
  • 로봇 개발의 효율성 향상
728x90

'Programming > Ros' 카테고리의 다른 글

Ros의 중요 컨셉  (0) 2019.07.25
Ros 개발환경 구축  (2) 2019.07.15

+ Recent posts