기술나눔

ROS 기본학습 - ROS 운영관리

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

ROS 운영 관리

1. ROS 운영관리에 대한 간략한 설명

ROS는 완전한 ROS 시스템 구현인 다중 프로세스(노드) 분산 프레임워크입니다.

여러 호스트가 포함될 수 있습니다.
각 호스트에는 여러 작업 공간이 있습니다.
각 작업 공간에는 여러 기능 패키지가 포함되어 있습니다.
각 함수 패키지에는 여러 노드(노드)가 포함되어 있으며, 각 노드에는 고유한 노드 이름이 있습니다.
각 노드에는 하나 이상의 주제가 설정될 수도 있습니다.

여기에 이미지 설명을 삽입하세요.
다중 레벨 ROS 시스템에서는 구현 및 유지 관리에 다음과 같은 몇 가지 문제가 발생할 수 있습니다.
1. 서로 다른 기능 패키지를 연결하는 방법 ----(메타 기능 패키지)
2. 다양한 ROS 노드를 시작하는 방법----(실행 파일)
3. 함수 패키지, 노드, 토픽, 매개변수의 중복된 이름 처리 방법----(중복된 이름 문제 해결)
4. 서로 다른 호스트의 노드가 통신하는 방법 ----(분산 통신)

이 장의 주요 내용은 ROS의 위 문제에 대한 솔루션을 소개합니다(이 장의 목차 참조). 예상되는 학습 목표도 위 문제와 일치합니다.

  • 메타 함수 패키지 사용 구문을 숙지하세요.
  • 실행 파일 사용 구문을 숙지하세요.
  • ROS 작업 공간 적용 범위와 보안 위험이 무엇인지 이해하십시오.
  • 중복된 노드 이름을 처리하는 방법을 이해합니다.
  • 이름이 중복된 주제를 처리하는 방법을 이해합니다.
  • 중복된 매개변수 이름을 처리하는 방법을 이해합니다.
  • ROS 분산 통신을 달성할 수 있습니다.

2. ROS 메타 기능 패키지

시나리오: ROS에서 체계적인 기능을 완료하려면 지도, 위치 지정, 경로 계획 등과 같은 다양한 하위 수준 기능 패키지가 있는 로봇 내비게이션 모듈 구현과 같은 여러 기능 패키지가 포함될 수 있습니다. 그러면 호출자가 모듈을 설치할 때 각 함수 패키지를 하나씩 설치해야 합니까?

물론, 함수 패키지를 하나씩 설치하는 것은 비효율적입니다. ROS에서는 특정 함수 모듈을 설치할 때 패키지된 함수 패키지를 직접 호출하면 됩니다. .

2.1 개념

MetaPackage는 Linux의 파일 관리 시스템 개념입니다. ROS의 가상 패키지입니다. 실질적인 내용은 없지만 다른 소프트웨어 패키지에 의존합니다. 이러한 방식으로 다른 패키지를 결합할 수 있습니다. -패키지는 패키지 컬렉션에 있으며 다운로드할 수 있는 위치입니다.

예를 들어:

  • sudo apt install ros-noetic-desktop-full 명령은 ros를 설치할 때 메타 기능 패키지를 사용합니다. 이 메타 기능 패키지는 ROS의 일부 다른 기능 패키지에 의존하며, 종속 항목도 함께 설치됩니다.
    또한 몇 가지 일반적인 MetaPackages도 있습니다: Navigation moveit!

2.2 기능

사용자 설치를 용이하게 하려면 다른 관련 소프트웨어 패키지를 함께 구성하고 설치하는 데 이 패키지 하나만 필요합니다.

2.3 구현

1단계: 첫 번째: 새 기능 패키지 만들기
2 단계: 그런 다음 package.xml을 수정하면 내용은 다음과 같습니다.

<exec_depend>통합 기능 패키지</exec_depend>

<export>
<metapackage />
</export>
여기에 이미지 설명을 삽입하세요.

3단계: 마지막으로: CMakeLists.txt를 수정합니다. 내용은 다음과 같습니다.

cmake_minimum_required(버전 3.0.2)
프로젝트(데모)
find_package(catkin 필수)
catkin_metapackage()

위의 4줄만 유지하고 나머지는 삭제하세요.

또한 다음을 참조하십시오:
http://wiki.ros.org/catkin/package.xml#메타패키지

3. ROS 실행 파일

우리는 첫 번째 장에서 다음을 소개했습니다.

프로그램은 ROS에 내장된 작은 거북이 케이스와 같이 여러 노드를 시작해야 할 수 있습니다. 거북이의 움직임을 제어하려면 roscore, 거북이 인터페이스 노드 및 키보드 제어 노드를 시작하여 여러 창을 시작해야 합니다. 각기. rosrun을 매번 호출해서 하나씩 시작한다면 분명히 비효율적일 것입니다.

채택된 최적화 전략은 roslaunch 명령을 사용하여 시작 파일을 수집하여 관리 노드를 시작하는 것이며, 후속 튜토리얼에서도 시작 파일이 여러 번 사용됩니다.

3.1. ROS 노드 관리 실행 파일

3.1.1 개념

런치 파일은 여러 로컬 및 원격 노드를 시작하고 매개변수 서버에서 매개변수를 설정할 수 있는 XML 형식의 파일입니다.

3.1.2 기능

노드 구성 및 시작을 단순화하고 ROS 프로그램의 시작 효율성을 향상시킵니다.

3.1.3 이용

설명을 위해 Turtlesim을 예로 들어 보겠습니다.

step1. 새로운 실행 파일을 생성합니다.
함수 패키지 아래에 시작 디렉터리를 추가하고 해당 디렉터리에 새 xxxx.launch 파일을 생성한 후 시작 파일을 편집합니다.

<launch>
<node pkg=“turtlesim” type=“turtlesim_node” name=“myTurtle” output=“screen” />
<node pkg=“turtlesim” type=“turtle_teleop_key” name=“myTurtleContro” output=“screen” />
</launch>

step2. 실행 파일 호출

roslaunch 패키지 이름 xxx.launch

참고: roslaunch 명령이 실행 파일을 실행할 때 먼저 roscore가 시작되었는지 확인합니다. 시작되면 다시 시작되지 않습니다. 그렇지 않으면 roscore가 자동으로 호출됩니다.

다음을 참조할 수 있습니다:
영어: http://wiki.ros.org/roslaunch/XML (영어)

3.2 실행 파일 태그

한국어: https://www.bilibili.com/video/BV1Ci4y1L7ZZ?p=150&spm_id_from=pageDriver&vd_source=15dd2e64f0499027ca66125b65dd2de9