ros는 리눅스 배포판입니다. ROS의 전체 이름은 로봇 운영 체제(Robot Operating System)로, Linux 커널을 기반으로 하며 Linux에서만 실행될 수 있습니다. ROS는 하드웨어 추상화, 기본 장치 제어, 공통 기능 구현, 프로세스 간 메시징 및 패킷 관리와 같은 일부 표준 운영 체제 서비스를 제공합니다. ROS는 두 개의 계층으로 나눌 수 있습니다. 하위 계층은 위에서 설명한 운영 체제 계층이고, 상위 계층은 포지셔닝 매핑, 행동 계획, 인식 등과 같은 다양한 기능을 구현하기 위해 광범위한 사용자 기반에서 제공되는 다양한 소프트웨어 패키지입니다. .
이 튜토리얼의 운영 환경: linux7.3 시스템, Dell G3 컴퓨터.
ROS는 Robot Operating System의 약어로, 로봇 운영체제로 번역됩니다. Linux 커널을 기반으로 하며 현재는 Linux에서만 실행됩니다.
ROS 디자이너는 ROS를 "ROS = 배관 + 도구 + 기능 + 생태계"라고 설명합니다. 즉, ROS는 통신 메커니즘, 도구 패키지, 고급 로봇 기술 및 로봇 생태계의 모음입니다.
이름에서 알 수 있듯이 ROS는 시스템입니다. 이는 우리가 사용하는 일반적인 운영 체제와 유사합니다. 즉, ROS를 사용하여 개발하는 사람들의 눈에는 서로 다른 로봇에 포함된 다양한 기본 매개 변수가 동일합니다. 또한 ROS에는 현재 시각적 인터페이스가 없다는 점도 언급해야 합니다. 우리가 사용하는 Windows와 Linux는 시각적 인터페이스가 있기 때문에 이미지 인터페이스를 직접 보고 조작할 수 있지만 ROS는 그렇지 않습니다. 소위 운영 체제가 반드시 시각적 인터페이스를 가질 필요는 없습니다. 관심이 있다면 명령줄만 있고 다채로운 인터페이스가 없었던 초기 운영 체제를 살펴볼 수 있습니다.
ROS는 하드웨어 추상화, 기본 장치 제어, 공통 기능 구현, 프로세스 간 메시징 및 패킷 관리와 같은 일부 표준 운영 체제 서비스를 제공합니다. ROS는 그래프 아키텍처를 기반으로 하므로 서로 다른 노드의 프로세스가 다양한 정보(예: 감지, 제어, 상태, 계획 등)를 수신, 게시 및 집계할 수 있습니다.
ROS는 두 개의 레이어로 나눌 수 있습니다. 하위 레이어는 위에서 설명한 운영 체제 레이어이고, 상위 레이어는 포지셔닝 매핑, 행동 계획, 인식과 같은 다양한 기능을 구현하기 위해 광범위한 사용자 기반에서 제공되는 다양한 소프트웨어 패키지입니다. , 시뮬레이션 등
ROS는 다의어이며 의사소통 메커니즘이 될 수도 있습니다. ROS 개발에서 노드는 애플리케이션을 나타내는 데 사용되며 노드는 실행 가능한 프로그램입니다. 노드 간 통신은 ROS를 통해 이루어집니다. ROS는 노드 매니저(Master)를 통해 각 노드를 관리합니다. 원칙의 구체적인 구현에 대해서는 나중에 논의하겠습니다.
또한 ROS는 로봇 개발을 위한 일련의 툴킷, 알고리즘, 기술, 플랫폼, 생태학 등을 나타냅니다.
ROS의 역사. 직설적으로 말하면, ROS는 로봇을 개발할 때 대기업 그룹이 더 좋다고 생각하는 것입니다(유용한 라이브러리 및 소프트웨어일 수도 있고 아이디어, 프로토콜 및 표준일 수도 있음). 로봇 개발에는 다양한 로봇에 대한 통일된 표준이 없으며, 이전에 본 적이 없는 로봇을 개발할 때마다 다시 배워야 하는 것이 너무 많아서 큰 사람들은 그로부터 교훈을 얻습니다. 로봇이 맨 아래 레이어를 캡슐화하는 시스템을 구축할 수도 있지 않을까? 그리하여 ROS가 탄생했습니다. 수년간의 다듬질 끝에 ROS는 점점 더 완벽해졌고 점점 더 많은 사람들이 이를 사용하고 있습니다.
나에게 ROS가 무엇을 하는지 묻고 싶다면 한 문장만 알면 됩니다. ROS는 로봇이나 로봇 팔 개발에 사용됩니다.
로봇 개발 역사상 표준화 작업이 제대로 이루어지지 않았습니다. 서로 다른 로봇은 서로 다른 시스템, 프로그램 등을 사용하므로 크로스 플랫폼인 한 개발이 매우 어렵습니다. 이러한 문제를 해결하기 위해 ROS가 탄생했습니다. ROS는 캡슐화를 통해 기본 하드웨어를 개발자에게 투명하게 만들어 크로스 플랫폼 개발의 어려움을 크게 줄일 수 있습니다.
우리가 ROS를 선택하는 이유는 위에서 언급한 것처럼 모두가 이해해야 한다는 것입니다. 많은 사람들이 사용하고 폭넓은 인기를 누리고 있기 때문입니다. ROS에는 수많은 필드, 데이터, 기능, 콘텐츠, 지식 등이 포함되어 있습니다. 이를 사용하지 않고 자신만의 데이터베이스를 컴파일하고 싶으신가요?
ROS를 정식으로 배우기 전에 먼저 ROS의 여러 기능, 즉 메타 운영 체제, 분산 통신 메커니즘, 느슨하게 결합된 소프트웨어 프레임워크, 풍부한 오픈 소스 기능 라이브러리 등을 소개합니다. 지각적인 이해를 확립하도록 돕습니다.
ROS는 로봇공학 분야의 메타 운영체제입니다. 즉, 진정한 의미의 운영 체제가 아닙니다. 기본 작업 예약, 컴파일, 장치 드라이버 등은 여전히 기본 운영 체제 Ubuntu Linux에 의해 완료됩니다.
ROS는 실제로 Ubuntu Linux에서 실행되는 하위 운영 체제 또는 소프트웨어 프레임워크이지만 하드웨어 추상화, 함수 호출, 프로세스 관리 등 운영 체제와 유사한 기능을 제공하고 획득, 컴파일을 위한 기능도 제공합니다. , 크로스 플랫폼 기능 및 도구.
ROS의 핵심 아이디어는 로봇의 소프트웨어 기능을 노드로 만들고, 노드는 서로 메시지를 보내 통신하는 것입니다. 이러한 노드는 동일한 호스트, 다른 호스트 또는 인터넷에 배포될 수 있습니다. ROS 네트워크 통신 메커니즘의 마스터 노드(master)는 네트워크 내 다양한 노드 간의 통신 프로세스를 관리하고 스케줄링하는 동시에 네트워크의 전역 매개변수를 구성하는 서비스를 제공하는 역할을 담당합니다.
ROS는 노드 간 프로세스 통신을 달성하기 위해 분산 통신 메커니즘을 사용하는 느슨하게 결합된 소프트웨어 프레임워크입니다. ROS의 소프트웨어 코드는 유연한 개발 프로세스와 손쉬운 관리 및 유지 관리를 통해 느슨하게 결합된 방식으로 구성됩니다.
ROS에는 풍부한 오픈 소스 함수 라이브러리가 있습니다. ROS는 BSD(Berkeley Software Distribution) 프로토콜을 기반으로 한 오픈 소스 소프트웨어로 누구나 수정, 재사용, 재배포 및 상업용 및 비공개 소스 제품에서 사용할 수 있습니다. ROS를 사용하면 자신만의 로봇 프로토타입을 빠르게 구축할 수 있습니다.
Linux 배포판과 유사하게 ROS 배포판에는 ROS 시스템을 기본 시스템에 패키징하고 설치하는 데 일반적으로 사용되는 일련의 기능 패키지가 내장되어 있습니다. ROS는 원래 Ubuntu 시스템을 기반으로 개발되었으며 ROS의 릴리스 버전 이름도 Ubuntu와 동일한 규칙을 채택합니다. 즉, 버전 이름은 첫 글자가 동일한 두 개의 영어 단어로 구성되며 버전의 첫 글자가 선택됩니다. 그림 1-1은 알파벳의 오름차순으로 ROS의 일부 주요 릴리스를 보여줍니다.
많은 친구들은 ROS를 설치한 후 즉시 프로그램 작성을 시작하고 싶어할 것입니다. ROS의 아키텍처는 상대적으로 복잡하기 때문에 나중에 접하게 되는 다양한 개념을 쉽게 이해하기 위해 ROS의 다양한 개념을 모두가 포괄적으로 이해할 수 있도록 ROS의 시스템 아키텍처에 대해 먼저 논의하겠습니다. 공식 성명에 따르면 ROS 아키텍처는 계산 그래프, 파일 시스템, 오픈 소스 커뮤니티의 관점에서 이해할 수 있습니다.
ROS에서 실행 가능한 프로그램의 기본 단위는 노드(노드)라고 하며, 이를 통해 네트워크 다이어그램을 형성합니다. 그림 1-3과 같이 계산 그래프라고 합니다.
노드는 실행 가능한 프로그램이며 일반적으로 프로세스라고도 합니다. ROS 기능 패키지에서 생성된 각 실행 프로그램은 그림 1-3의 노드 1, 노드 2, 노드 3 등과 같은 시스템 프로세스에 시작되어 로드된 후 ROS 노드가 됩니다.
노드는 메시지를 주고받으며 통신합니다. 메시지 송수신 메커니즘은 그림 1-3과 같이 topic(주제), service(서비스) 및 action(동작)의 세 가지 유형으로 구분됩니다. 노드 2와 노드 3. 노드 2와 노드 5는 토픽 통신을, 노드 2와 노드 4는 서비스 통신을, 노드 1과 노드 2는 액션 통신을 사용한다. 계산 그래프의 노드, 주제, 서비스 및 작업에는 식별자로 고유한 이름이 있어야 합니다.
ROS는 노드를 사용하여 코드와 기능을 분리하여 시스템의 내결함성과 유지 관리성을 향상시킵니다. 따라서 하나의 거대하고 모든 것을 포괄하는 노드를 만드는 것보다 각 노드가 특정 단일 기능을 제공하도록 하는 것이 더 좋습니다. C++를 사용하여 노드를 작성하는 경우 ROS에서 제공하는 roscpp 라이브러리를 사용해야 하며, Python을 사용하여 노드를 작성하는 경우 ROS에서 제공하는 rospy 라이브러리를 사용해야 합니다.
메시지는 메시지 메커니즘과 메시지 유형을 포함하여 계산 그래프의 핵심입니다. 메시지 메커니즘에는 주제, 서비스 및 작업의 세 가지 유형이 있습니다. 각 메시지 메커니즘에서 전송되는 데이터에는 특정 데이터 유형(예: 메시지 유형)이 있습니다. 메시지 유형은 주제 메시지 유형, 서비스 메시지 유형 및 작업 메시지 유형으로 나눌 수 있습니다. 메시지 메커니즘과 메시지 유형은 섹션 1.5에서 설명됩니다.
데이터 패키지(rosbag)는 주제별 데이터를 저장하고 재생하는 데 특별히 사용되는 ROS의 파일입니다. 수집하기 어려운 일부 센서 데이터는 데이터 패키지에 기록한 후 반복적으로 재생하여 알고리즘 성능을 디버깅할 수 있습니다.
매개변수 서버는 전체 ROS 네트워크의 노드에 대해 쉽게 수정된 매개변수를 제공할 수 있습니다. 매개변수는 정적 매개변수와 동적 매개변수를 포함하여 외부에서 수정할 수 있는 노드의 전역 변수로 간주될 수 있습니다. 정적 매개변수는 일반적으로 노드가 시작될 때 노드 작동 모드를 설정하는 데 사용됩니다. 동적 매개변수는 노드가 실행 중일 때 노드를 동적으로 구성하거나 노드 작동 상태를 변경하는 데 사용할 수 있습니다(예: 모터 제어 노드의 PID 제어 매개변수).
마스터 노드는 다양한 노드 간의 통신 프로세스를 스케줄링하고 관리하는 역할을 담당합니다. 따라서 마스터 노드를 먼저 시작해야 하며, roscore 명령을 통해 시작할 수 있습니다.
ROS 프로그램의 다양한 구성 요소는 다양한 기능에 따라 파일을 구성합니다. 그림 1-4와 같습니다.
작업 공간은 함수 패키지, 컴파일된 패키지 및 컴파일된 실행 파일이 포함된 폴더입니다. 사용자는 필요에 따라 여러 작업 공간을 생성하고 다양한 목적에 맞게 기능 패키지를 개발할 수 있습니다. 각 작업 공간에서. 그림 1-4에서는 src, build 및 devel이라는 세 개의 폴더가 포함된 catkin_ws라는 작업 공간을 만들었습니다.
Function 패키지는 ROS의 소프트웨어 구성의 기본 형태로 ROS 프로그램을 만들기 위한 최소한의 구조와 내용을 담고 있습니다.
i.CMakeLists.txt는 Cmake 함수 패키지의 컴파일 구성을 컴파일하는 데 사용되는 함수 패키지 구성 파일입니다.
ii.package.xml은 함수 패키지 매니페스트 파일로, 주로 설치를 용이하게 하기 위해 패키지 이름, 개발자 정보, 종속성 등 함수 패키지의 다양한 관련 정보를 표시하는 데 xml 태그 형식을 사용합니다. 기능 패키지의 설치가 더 쉽습니다.
iii.include/
iv. msg, srv 및 action 세 폴더는 각각 비표준 주제 메시지, 서비스 메시지 및 작업 메시지의 정의 파일을 저장하는 데 사용됩니다. ROS는 사용자가 메시지 통신 프로세스에 사용되는 메시지 유형을 사용자 정의할 수 있도록 지원합니다. 프로그램은 표준 메시지 유형만 사용하므로 이러한 사용자 정의 메시지는 필요하지 않습니다.
v. 스크립트 디렉토리는 Bash, Python 및 기타 스크립트 파일을 저장하며 필요하지 않습니다.
vi. 실행 디렉터리는 노드의 시작 파일을 저장합니다. *.launch 파일은 하나 이상의 노드를 시작하는 데 사용되며 여러 노드가 있는 대규모 프로젝트에서는 필요하지 않습니다.
vii. src 디렉터리에는 함수 패키지 노드에 해당하는 소스 코드가 저장되어 있습니다. 함수 패키지에는 다양한 기능을 완성하기 위한 여러 노드 프로그램이 있을 수 있으며, 각 노드 프로그램은 독립적으로 실행될 수 있습니다. 여기의 src 디렉토리에는 이러한 노드 프로그램의 소스 코드가 저장됩니다. 소스 코드를 구성하기 위해 필요에 따라 폴더와 파일을 만들 수 있습니다. 소스 코드는 C++, Python 등으로 작성할 수 있습니다.
ROS는 오픈 소스 소프트웨어입니다. 각각의 독립적인 온라인 커뮤니티는 소프트웨어와 튜토리얼을 공유하고 기여하여 그림 1과 같이 강력한 ROS 오픈 소스 커뮤니티를 형성합니다. -5.
ROS 개발은 오픈 소스 및 공유 소프트웨어에 의존합니다. 이러한 코드는 GitHub 소스 코드 공유, Ubuntu 소프트웨어 저장소 등 다양한 조직에서 공유 및 릴리스됩니다. 출시 등 Sanfangku et al. ROS의 공식 위키는 해당 문서 페이지를 쉽게 게시하고 수정할 수 있는 중요한 문서 토론 커뮤니티입니다. ROS 답변 홈페이지에는 ROS 개발자들의 수많은 질문과 답변이 담겨 있으며, ROS 개발에서 부딪히는 다양한 이슈에 대한 논의가 매우 활발합니다.
관련 추천: "Linux 비디오 튜토리얼"
위 내용은 ros는 어떤 리눅스 버전인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!