Zeta Edu Ros2 Version Logo
latest

Robot Hardware and ROS 2 Installation

  • 하드웨어 스펙
    • 로봇의 구성요소
    • 주요 부품들
    • 블럭 다이어그램
    • 요약
  • 하드웨어 체크
    • 전제조건
    • 로봇의 구성요소
    • 1 배터리 표시기, 충전포트, 전원스위치
    • 2 스피커
      • 테스트
    • 3 카메라
    • 4 라이다
    • 5 모터 혹은 IMU
    • 요약
  • 로봇 조립
    • 전제조건
    • 로봇의 하단 부분 조립
    • 로봇의 중단 부분 조립
    • 로봇의 상단 부분 조립
    • 검증
    • 요약
  • 로봇 셋업
    • 전제조건
      • 1 로봇에 우분투 22.04 OS 설치
        • 1.1 PC에서
        • 1.2 로봇에서
      • 2 로봇 WiFi 설정하기
      • 2 로봇 openssh-server 설정하기
    • 요약
    • 다음 단계
  • PC 셋업
    • 전제조건
      • 1 Ubuntu USB 메모리 스틱 만들기
      • 2 PC에 Ubuntu 설치하기
      • 4 PC에서 로봇 ssh 연결
    • 요약
    • 다음 단계
  • Ubuntu (Debian 패키지)
    • 자료
    • 로케일 설정
    • 소스 설정
    • ROS 2 패키지 설치
    • 환경 설정
      • 설정 스크립트 소싱
    • 예제 시도
      • 대화형-수신자
    • 설치 후 다음 단계
    • ROS 1 브릿지 사용
    • 추가 RMW 구현 (선택 사항)
    • 문제 해결
    • 제거
  • 로봇 조립 경연대회
    • 대회 규칙
    • 점수 배정

ROS 2 CLI Tutorial

  • 설정
    • source setup
    • source 자동화 하기
    • 환경 변수 확인
    • 도메인 아이디 설정
    • DDS 설정
    • Summary
  • 터틀심과 rqt
    • turtlesim 설치
    • turtlesim 시작
    • turtlesim 사용해보기
    • rqt 설치
    • rqt 사용
    • spawn서비스 사용해보기
    • set_pen서비스 사용하기
    • Remapping
    • turtlesim 닫기
    • 정리
  • 노드 이해하기
    • 배경
      • 1 ROS 2 그래프
      • 2 ROS 2에서의 노드
    • 사전 준비
    • 작업
      • 1 ros2 run
      • 2 ros2 node list
        • 2.1 리매핑
      • 3 ros2 node info
    • 요약
    • 다음 단계
  • 토픽 이해하기
    • 배경
    • 사전 준비
    • 작업
      • 1 설정
      • 2 rqt_graph
      • 3 ros2 topic list
      • 4 ros2 topic echo
      • 5 ros2 topic info
      • 6 ros2 interface show
      • 7 ros2 topic pub
      • 8 ros2 topic hz
      • 9 정리
    • 요약
    • 다음 단계
  • 서비스 이해하기
    • 배경
    • 필수 준비물
    • 작업
      • 1 설정
      • 2 ros2 service list
      • 3 ros2 service type
        • 3.1 ros2 service list -t
      • 4 ros2 service find
      • 5 ros2 interface show
      • 6 ros2 service call
    • 요약
    • 다음 단계
    • 관련 콘텐츠
  • 매개변수 이해하기
    • 배경
    • 필수 준비물
    • 작업
      • 1 설정
      • 2 ros2 param list
      • 3 ros2 param get
      • 4 ros2 param set
      • 5 ros2 param dump
      • 6 ros2 param load
      • 7 노드 시작 시 매개변수 파일 로드
    • 요약
    • 다음 단계
  • 액션 이해하기
    • 배경 정보
    • 전제 조건
    • 작업
      • 1 설정
      • 2 액션 사용
      • 3 ros2 node info
      • 4 ros2 action list
        • 4.1 ros2 action list -t
      • 5 ros2 action info
      • 6 ros2 interface show
      • 7 ros2 action send_goal
    • 요약
    • 다음 단계
    • 관련 콘텐츠
  • rqt_console 를 사용하여 로그 보기
    • 배경 지식
    • 전제 조건
    • 작업
      • 1 설정
      • 2 rqt_console에서 메시지
      • 3 로거 레벨
        • 3.1 기본 로거 레벨 설정
    • 요약
  • 노드 실행
    • 배경 지식
    • 전제 조건
    • 작업
      • 런치 파일 실행
      • (선택 사항) Turtlesim 노드 제어
    • 요약
    • 다음 단계
  • 데이터 녹화 및 재생
    • 배경 지식
    • 전제 조건
    • 작업
      • 1 설정
      • 2 토픽 선택
      • 3 ros2 bag record
        • 3.1 단일 토픽 녹화
        • 3.2 여러 토픽 녹화
      • 4 ros2 bag info
      • 5 ros2 bag play
    • 요약
    • 다음 단계
    • 관련 콘텐츠
  • 로봇 구성요소의 역할 탐구
    • 목표
    • 과제 설명
    • 프레젠테이션 준비
    • 평가 기준 및 점수 배점
    • 제출 가이드라인
    • 결론

ROS 2 Client libraries Tutorial

  • colcon 을 사용하여 패키지 빌드하기
    • 배경
    • 전제 조건
      • colcon 설치
      • ROS 2 설치
    • 기초사항
      • 워크스페이스 생성
      • 일부 소스 추가
      • 환경 소스
      • 워크스페이스 빌드
      • 테스트 실행
      • 환경 소스
      • 데모 실행
    • 직접 패키지 생성하기
    • colcon_cd 설정하기
    • colcon 탭 완성 설정하기
    • 팁
  • 작업 공간 생성
    • 배경 지식
    • 전제 조건
    • 작업 내용
      • 1. ROS 2 환경 소스화
      • 2. 새 디렉터리 생성
      • 3. 샘플 리포지토리 복제
      • 4. 패키지 종속성 해결
      • 5. colcon으로 작업 공간 빌드
      • 6. 오버레이 소스화
      • 7. 오버레이 수정
    • 요약
    • 다음 단계
  • 패키지 만들기
    • 배경 지식
      • 1 ROS 2 패키지란 무엇인가요?
      • 2 ROS 2 패키지는 무엇으로 이루어져 있나요?
      • 3 작업 공간의 패키지
    • 전제 조건
    • 작업
      • 1 패키지 만들기
      • 2 패키지 빌드
      • 3 설정 파일 소스화
      • 4 패키지 사용
      • 5 패키지 내용 검사
      • 6 package.xml 사용자 정의
    • Summary
    • 다음 단계
  • 간단한 publisher/subscriber 작성 (C++)
    • 배경
    • 전제 조건
    • 작업
      • 1. 패키지 만들기
      • 2. 퍼블리셔 노드 작성
        • 2.1 코드 검토
        • 2.2 종속성 추가
        • 2.3 CMakeLists.txt
      • 3. 구독자 노드 작성
        • 3.1 코드 검토
        • 3.2 CMakeLists.txt
      • 4 빌드 및 실행
    • 요약
    • 다음 단계
    • 관련 콘텐츠
  • 간단한 publisher/subscriber 작성 (Python)
    • 배경 지식
    • 전제 조건
    • 작업
      • 1. 패키지 생성
      • 2. 퍼블리셔 노드 작성
        • 2.1. 코드 검토
        • 2.2. 종속성 추가
        • 2.3. 엔트리 포인트 추가
        • 2.4. setup.cfg 확인
      • 3 서브스크라이버 노드 작성
        • 3.1. 코드 검토
        • 3.2. 엔트리 포인트 추가
      • 4 빌드 및 실행
        • 요약
        • 다음 단계
        • 관련 콘텐츠
  • 간단한 service and client 작성 (C++)
    • 배경
    • 사전 준비 사항
    • 작업
      • 1 패키지 생성
        • 1.1 package.xml 업데이트
      • 2 서비스 노드 작성
        • 2.1 코드 분석
        • 2.2 실행 파일 추가
      • 3 클라이언트 노드 작성
        • 3.1 코드 분석
        • 3.2 실행 파일 추가
      • 4 빌드 및 실행
    • 요약
    • 다음 단계
    • 관련 콘텐츠
  • 간단한 service and client 작성 (Python)
    • 배경
    • 사전 준비 사항
    • 작업
      • 1 패키지 생성
        • 1.1 package.xml 업데이트
        • 1.2 setup.py 업데이트
      • 2 서비스 노드 작성
        • 2.1. 코드 검토
        • 2.2. 엔트리 포인트 추가
      • 3 클라이언트 노드 작성
        • 3.1 코드 살펴보기
        • 3.2 엔트리 포인트 추가
      • 4 빌드 및 실행
    • 요약
    • 다음 단계
    • 관련 컨텐츠
  • 커스텀 msg와 srv 파일 생성하기
    • 배경
    • 사전 준비 사항
    • 작업
      • 1 새 패키지 생성하기
      • 2 커스텀 정의 생성하기
        • 2.1 msg 정의
        • 2.2 srv 정의
      • 3 CMakeLists.txt
      • 4 package.xml
      • 5 tutorial_interfaces 패키지 빌드하기
      • 6 msg 및 srv 생성 확인하기
      • 7 새 인터페이스 테스트하기
        • 7.1 Num.msg 를 pub/sub으로 테스트하기
        • 7.2 AddThreeInts.srv 를 서비스/클라이언트와 테스트하기
    • 요약
    • 다음 단계
  • 사용자 정의 인터페이스 구현
    • 배경 지식
    • 전제 조건
    • 작업
      • 1 패키지 생성
      • 2 msg 파일 생성
        • 2.1 msg 파일 빌드
        • 2.2 (추가) 여러 인터페이스 설정
      • 3 동일 패키지에서 인터페이스 사용
        • 3.1 코드 설명
        • 3.2 퍼블리셔 빌드
        • 3.3 인터페이스와 연결
      • 4 실행해 보기
      • 5 (추가) 기존 인터페이스 정의 사용
    • 요약
    • 다음 단계
    • 관련 컨텐츠
  • 클래스에서 매개변수 사용하기 (C++)
    • 배경
    • 전제 조건
    • 작업
      • 1 패키지 생성
        • 1.1 package.xml 업데이트
      • 2 C++ 노드 작성
        • 2.1 코드 검토
        • 2.2 실행 파일 추가
      • 3 빌드 및 실행
        • 3.1 콘솔을 통한 변경
        • 3.2 런치 파일을 통한 변경
    • 요약
    • 다음 단계
  • 클래스에서 매개변수 사용하기 (Python)
    • 배경
    • 전제 조건
    • 작업
      • 1 패키지 생성
        • 1.1 package.xml 업데이트
      • 2. 파이썬 노드 작성
        • 2.1 코드 검토
        • 2.2 엔트리 포인트 추가
      • 3 빌드 및 실행
        • 3.1 콘솔을 통한 변경
        • 3.2 런치 파일을 통한 변경
    • 요약
    • 다음 단계
  • ros2doctor 를 사용하여 문제 식별
    • 배경
    • 필수 조건
    • 작업
      • 1 설정 확인
      • 2 시스템 확인
      • 3 전체 보고서 얻기
    • 요약
    • 관련 콘텐츠
    • 다음 단계
  • ROS 기초 개별 미션
    • 목표
    • 과제 설명
    • PPT 형식
    • 평가 기준
    • 결론

ROS 2 Intermediate

  • rosdep를 사용하여 종속성 관리
    • rosdep가 무엇인가요?
    • package.xml 파일에 대한 간략한 설명
      • <depend>
      • <build_depend>
      • <build_export_depend>
      • <exec_depend>
      • <test_depend>
    • rosdep가 어떻게 작동하나요?
    • 내 package.xml에 어떤 키를 넣어야 하는지 어떻게 알 수 있나요?
    • 만약 내 라이브러리가 rosdistro에 없다면 어떻게 해야 하나요?
    • rosdep 도구를 어떻게 사용하나요?
      • rosdep 설치
      • rosdep 작동
  • 액션 생성하기
    • 배경
    • 사전 준비 사항
    • 작업
      • 1 액션 정의하기
      • 2 액션 빌드하기
    • 요약
    • 다음 단계
    • 관련 내용
  • 액션 서버 및 클라이언트 작성하기 (C++)
    • 배경 정보
    • 전제 조건
    • 작업
      • 1 액션 서버를 위한 action_tutorials_cpp 패키지 생성
        • 1.1 action_tutorials_cpp 패키지 생성
        • 1.2 가시성 제어 추가
      • 2 액션 서버 작성
        • 2.1 액션 서버 코드 작성
        • 2.2 액션 서버 컴파일
        • 2.3 액션 서버 실행
      • 3 액션 클라이언트 작성
        • 3.1 액션 클라이언트 코드 작성
        • 3.2 액션 클라이언트 컴파일
        • 3.3 액션 클라이언트 실행
    • 요약
    • 관련 컨텐츠
  • 액션 서버 및 클라이언트 작성하기 (Python)
    • 배경
    • 필수 사항
    • 작업
      • 1 액션 서버 작성
        • 1.2 피드백 게시
      • 2 액션 클라이언트 작성
        • 2.2 피드백 받기
    • 요약
    • 관련 콘텐츠
  • Launch
    • 런치파일 생성하기
      • 필수 사항
      • 배경
      • 작업
        • 1 설정
        • 2 런치 파일 작성
        • 3 ros2 launch
        • 4 rqt_graph를 사용하여 시스템 검토
      • 요약
    • ROS 2 패키지에 런치 파일 통합하기
      • 전제 조건
      • 배경 지식
      • 작업
        • 1 패키지 생성
        • 2 런치 파일을 저장할 구조 생성
        • 3 런치 파일 작성
        • 4 런치 파일 빌드 및 실행
      • 문서화
    • 대체 사용법 익히기
      • 배경 지식
      • 전제 조건
      • 대체 사용법 사용하기
        • 1 패키지 생성 및 설정
        • 2 상위 런치 파일
        • 3 대체 사용법 예제 런치 파일
        • 4 패키지 빌드
      • 예제 실행
      • 런치 인수 수정
      • 문서화
      • 요약
    • 이벤트 핸들러 사용
      • 배경 정보
      • 전제 조건
      • 이벤트 핸들러 사용
        • 1. 이벤트 핸들러 예제 런치 파일
      • 패키지 빌드
      • 예제 실행
      • 문서화
      • 요약
    • 대규모 프로젝트 관리
      • 배경
      • 전제 조건
      • 소개
      • 런치 파일 작성
        • 1 최상위 구성
        • 2 매개변수
        • 3 네임스페이스
        • 4 노드 재사용
        • 5 매개변수 오버라이드
        • 6 리매핑
        • 7 구성 파일
        • 8 환경 변수
      • 런치 파일 실행
        • 1. setup.py 업데이트
        • 2. 빌드 및 실행
      • 요약
  • tf2
    • tf2 소개
      • 데모 설치
      • 데모 실행
      • 무슨 일이 일어나고 있나요?
      • tf2 도구
        • 1. view_frames 사용
        • 2. tf2_echo 사용
      • rviz2 및 tf2
    • tf2 정적 브로드캐스터 작성 (Python)
      • 배경
      • 필수 준비물
      • 작업
        • 1 패키지 생성
        • 2 정적 브로드캐스터 노드 작성
        • 3 빌드
        • 4 실행
      • 정적 변환을 게시하는 올바른 방법
      • 요약
    • tf2 정적 브로드캐스터 작성 (C++)
      • 배경
      • 필수 준비물
      • 작업
        • 1 패키지 생성
        • 2. 정적 변환자 노드 작성
        • 3. 빌드
        • 4. 실행
      • 정적 변환을 게시하는 올바른 방법
      • 요약
    • 브로드캐스터 작성하기 (Python)
      • 배경
      • 필수 준비 사항
      • 작업
        • 1 브로드캐스터 노드 작성
        • 2 런치 파일 작성
        • 3 빌드
        • 4 실행
      • 요약
    • 브로드캐스터 작성하기 (C++)
      • 배경
      • 필수 준비 사항
      • 작업
        • 1 브로드캐스터 노드 작성
        • 2 런치 파일 작성
        • 3 빌드
        • 4 실행
    • 리스너 작성하기 (Python)
      • 배경
      • 전제 조건
      • 작업
        • 1. 리스너 노드 작성
        • 2. 런치 파일 업데이트
        • 3. 빌드
        • 4. 실행
      • 요약
    • 리스너 작성하기 (C++)
      • 배경
      • 전제 조건
      • 작업
        • 1. 리스너 노드 작성
        • 2. 런치 파일 업데이트
        • 3. 빌드
        • 4. 실행
      • 요약
    • 프레임 추가 (Python)
      • 배경
      • tf2 트리
      • 작업
        • 1 고정 프레임 브로드캐스터 작성
        • 2. 동적 프레임 브로드캐스터 작성
      • 요약
    • 프레임 추가 (C++)
      • 배경
      • tf2 트리
      • 작업
        • 1 고정 프레임 브로드캐스터 작성
        • 2 동적 프레임 브로드캐스터 작성
      • 요약
    • 시간 사용하기 (Python)
      • 배경 정보
      • 작업
        • 1 리스너 노드 업데이트
        • 2 리스너 노드 수정
        • 3 결과 확인
      • 요약
    • 시간 사용하기 (C++)
      • 배경 정보
      • 작업
        • 1 tf2와 시간
        • 2 변환 대기
        • 3 결과 확인
      • 요약
    • 시간을 여행하다 (Python)
      • 배경 정보
      • 시간 여행
      • lookup_transform()에 대한 고급 API
      • 결과 확인
      • 요약
    • 시간을 여행하다 (C++)
      • 배경 정보
      • 시간 여행
      • lookupTransform()에 대한 고급 API
      • 결과 확인
      • 요약
    • 디버깅
      • 배경 정보
      • 디버깅 예제
        • 1 예제 설정 및 시작
        • 2 tf2 요청 찾기
        • 3 프레임 확인
        • 4 타임스탬프 확인
      • 요약
    • Quaternion fundamentals
      • 배경
      • 필수 전제 조건
      • 쿼터니언의 구성 요소
      • ROS 2에서의 쿼터니언 유형
      • 쿼터니언 연산
        • 1 롤(roll), 피치(pitch), 요(yaw)로 생각한 다음 쿼터니언으로 변환하기
        • 2 쿼터니언 회전 적용
        • 3 쿼터니언 반전
        • 4 상대 회전
      • 요약
    • tf2_ros::MessageFilter로 stamped 데이터 유형 사용하기
      • 배경
      • 작업
        • 1 PointStamped 메시지 브로드캐스터 노드 작성
        • 2 메시지 필터/리스너 노드 작성
        • 3 실행
      • 요약
    • 작업 공간 설정
    • tf2 학습
    • tf2 디버깅
    • tf2와 센서 메시지 사용
  • ROS 중급 개별 미션
    • 목표
    • 과제 설명
    • PPT 형식
    • 평가 기준
    • 결론

Zeta2 Robot Packages

  • zeta2 bringup
    • 전제조건
      • 1 라이다 세팅
      • 2 zeta2_bringup 패키지 설치
    • 요약
    • 다음 단계
  • zeta2 autonomous
    • 전제조건
      • 1 필요한 패키지들 설치
      • 2 slam tool box 매핑
      • 3 cartographer 매핑
      • 4 navigation2 실행
    • 요약
    • 다음 단계

Navigation2 Packages

  • Navigation2 Start
    • 전제조건
      • 1 navigation2 를 위한 로봇 셋업
        • 1.1 TF
        • 1.2 Odometry(odom)
        • 1.2.1 zeta2 로봇에서의 odom
        • 1.3 Sensor
        • 일반적인 센서 메시지
        • 매핑과 로컬라이제이션
        • Costmap 2D Overview
        • 1.4 Footprint
        • 1.5 Navigation Plugins
        • 플래너와 컨트롤러 서버
    • 요약
    • 다음 단계
  • Navigation2 플래너
    • 전제조건
      • 1 Planners 의 종류
      • 2 Planners 기본 사용법
        • 매개변수
        • 기본 플러그인
        • Example
    • 요약
    • 다음 단계
  • NavFn Planner
    • 매개변수
    • 예시
      • 다음 단계
  • Smac 플래너
    • 제공되는 플러그인
      • Smac 2D 플래너
        • 매개 변수
        • Example
      • Smac Hybrid-A* Planner
        • 매개변수
        • Example
      • Smac State Lattice Planner
        • 매개변수
        • Example
    • 설명
      • 다음 단계
  • Theta Star Planner 설정
    • 매개변수
      • Example
        • 다음 단계
  • Navigation2 컨트롤러
    • 전제조건
      • 1 Controllers 의 종류
      • 2 Controllers 기본 사용법
        • 매개변수
        • 제공된 플러그인
        • 기본 플러그인
        • Example
    • 요약
    • 다음 단계
  • DWB 컨트롤러
    • 컨트롤러
      • DWB 컨트롤러
        • 매개변수
      • XYTheta 이터레이터
        • 매개변수
      • 운동학 매개변수
        • 매개변수
      • Publisher
        • 매개변수
    • 플러그인
      • LimitedAccelGenerator
        • 매개변수
      • StandardTrajectoryGenerator
        • 매개변수
    • 트라젝토리 크리틱
      • BaseObstacleCritic
        • 매개변수
      • GoalAlignCritic
        • 매개변수
      • GoalDistCritic
        • 매개변수
      • ObstacleFootprintCritic
        • 매개변수
      • OscillationCritic
        • 매개변수
      • PathAlignCritic
        • 매개변수
      • PathDistCritic
        • 매개변수
      • PreferForwardCritic
        • 매개변수
      • RotateToGoalCritic
        • 매개변수
      • TwirlingCritic
        • 매개변수
      • 다음 단계
  • Regulated Pure Pursuit
    • 규제된 순수 추적 매개변수
    • Example
  • 모델 예측적 경로 적분 컨트롤러
    • MPPI 파라미터
      • Trajectory Visualization
      • Path Handler
      • Ackermann Motion Model
      • Constraint Critic
      • Goal Angle Critic
      • Goal Critic
      • Obstacles Critic
      • Cost Critic
      • Path Align Critic
      • Path Angle Critic
      • Path Follow Critic
      • Prefer Forward Critic
      • Twirling Critic
    • Example
    • 사용자에게 알림
      • 일반적인 지혜의 말씀
      • 예측 지폐, 코스트맵 크기 및 오프셋
      • 장애물, 인플레이션 레이어 및 경로 추적
  • Rotation Shim Controller
    • Rotation Shim Controller 매개변수
    • Example
  • Graceful Controller
    • Graceful Controller 매개변수
    • Example
  • Simple Commander API
    • 개요
    • Commander API
    • 코스트맵 API
    • 풋프린트 충돌 체크 API
    • 예제와 데모
      • example_nav_to_pose.py
      • example_nav_through_poses.py
  • Navigation2 Conclusion
    • 전제조건
      • 1 플래너
      • 2 컨트롤러
      • 3 smoother(스무더)
    • 요약
  • 네비게이션 미션
    • 목표
    • 과제 설명
    • PPT 형식
    • 평가 기준
    • 결론
  • 미래의 로봇 시나리오 프로젝트
    • 목표
    • 과제 설명
    • PPT 형식
    • 평가 기준
    • 결론
Zeta Edu Ros2 Version
  • Navigation2 컨트롤러
  • Edit on GitHub

Navigation2 컨트롤러

목표: navigation2 의 다양한 컨트롤러들을 간단하게 알아봅시다.

전제조건

앞의 과정을 다 끝내고 와야 합니다. ROS2 와 navigation2 의 기본 개념이 없으면 이해하기 힘들 수 있습니다.

앞에서 우리는 navigation2 를 시작할 때 필수적인 요소들에 대해서 공부했습니다.

1 Controllers 의 종류

아래와 같이 약 6가지 정도의 플래너가 존재한다. 현재 로봇에 사용중인 플래너는 DWB Controller 이다. 기본으로 설정되어 있는 컨트롤러다.

하나씩 순서대로 플래너에 대한 설명을 할 것이다.

Plugin Name

Creator

Description

Drivetrain support

DWB Controller

David Lu!!

A highly configurable DWA implementation with plugin interfaces

Differential, Omnidirectional, Legged

TEB Controller

Christoph Rösmann

A MPC-like controller suitable for ackermann, differential, and holonomic robots.

Ackermann, Legged, Omnidirectional, Differential

Regulated Pure Pursuit

Steve Macenski

A service / industrial robot variation on the pure pursuit algorithm with adaptive features.

Ackermann, Legged, Differential

MPPI Controller

Steve Macenski Aleksei Budyakov

A predictive MPC controller with modular & custom cost functions that can accomplish many tasks.

Differential, Omni, Ackermann

Rotation Shim Controller

Steve Macenski

A “shim” controller to rotate to path heading before passing to main controller for tracking.

Differential, Omni, model rotate in place

Graceful Controller

Alberto Tudela

A controller based on a pose-following control law to generate smooth trajectories.

Differential

각각의 내용들을 익히고 사용하고 싶은 컨트롤러를 사용해 볼 수 있습니다.

TEB 는 ROS2의 공식적인 지원을 중단하여 생략하겠습니다.

2 Controllers 기본 사용법

Github_에서 소스 코드를 확인하세요.

컨트롤러 서버는 스택의 컨트롤러 요청을 처리하고 플러그인 구현의 맵을 호스팅하는 서버를 구현합니다. 컨트롤러, 진행 체커 및 목표 체커에 대한 경로와 플러그인 이름을 입력하고 적절한 플러그인을 호출합니다. 또한 로컬 코스트맵을 호스팅합니다.

매개변수

controller_frequency

타입

기본값

double

20.0

설명

컨트롤러를 실행하는 주파수입니다(Hz).

use_realtime_priority

타입

기본값

bool

false

설명

코드베이스의 시간에 민감한 부분에 리소스를 더 잘 할당하기 위해 컨트롤러 서버에 소프트 실시간 우선 순위를 추가합니다. 이것은 시스템의 나머지 부분보다 컨트롤러의 실행 스레드를 더 높은 우선 순위로 설정하여 놓쳐진 루프 속도를 줄이기 위해 스케줄링 기한을 충족합니다(90). 이 기능을 사용하려면 다음을 사용하여 /etc/security/limits.conf 내부에 다음을 설정하여 사용자 공간에 우선 순위 권한을 부여합니다: “<username> soft rtprio 99 <username> hard rtprio 99”

action_server_result_timeout

타입

기본값

단위

double

10.0

초

설명

액션 서버가 결과를 생성하지 않은 경우 골 핸들을 폐기하는 시간 제한 값(초)입니다. 이것은 기본적으로 rcl에서 15분으로 설정되어 있었으나 이 PR #1012 에서 10초로 변경되었습니다. 대부분의 응용 프로그램에서는 서버 내의 액션이이 기간을 초과하지 않는 한이 기간을 조정할 필요가 없습니다. 이 문제는 OSRF와 함께 활동 중인 골 타임아웃을 방지하기 위한 다른 솔루션을 찾기 위해 제기되었으므로 이것은 반시시적인 임시 해결책입니다

controller_plugins

타입

기본값

vector<string>

[‘FollowPath’]

설명

처리 요청 및 매개변수를위한 컨트롤러 플러그인의 매핑 된 이름 목록입니다.

참고

이 목록에 정의된 각 플러그인 네임스페이스는 로드할 플러그인의 유형을 정의하는 plugin 매개변수를 가져야 합니다.

예제:

controller_server:
  ros__parameters:
    controller_plugins: ["FollowPath"]
    FollowPath:
      plugin: "dwb_core::DWBLocalPlanner"
progress_checker_plugins

타입

기본값

vector<string>

[“progress_checker”]

설명

로봇이 이동하는 진행률을 확인하는 진행 체커 플러그인에 대한 매핑 된 이름입니다. 이전에는 단일 문자열 플러그인이었습니다.

참고

정의된 플러그인 네임스페이스에는 로드할 플러그인 유형을 정의하는 plugin 매개변수가 있어야 합니다.

예제:

controller_server:
  ros__parameters:
    progress_checker_plugins: ["progress_checker"] # progress_checker_plugin: "progress_checker" For Humble and older
    progress_checker:
      plugin: "nav2_controller::SimpleProgressChecker"
goal_checker_plugins

타입

기본값

vector<string>

[“goal_checker”]

설명

목표 달성 여부를 확인하는 목표 체커 플러그인에 대한 매핑 된 이름입니다. 플러그인 수가 2개 이상인 경우 각 FollowPath 액션은 goal_checker_id 필드와 함께 목표 체커 플러그인 이름을 지정해야 합니다.

참고

정의된 플러그인 네임스페이스에는 로드할 플러그인 유형을 정의하는 plugin 매개변수가 있어야 합니다.

예제:

controller_server:
  ros__parameters:
    goal_checker_plugins: ["goal_checker"]
    goal_checker:
      plugin: "nav2_controller::SimpleGoalChecker"
min_x_velocity_threshold

타입

기본값

double

0.0001

설명

컨트롤러 서버는 컨트롤러 플러그인으로 보내기 전에 받은 오도메트리 메시지의 속도 부분을 필터링합니다. 이 임계 값을 아래의 오도메트리 값(m/s)으로 설정합니다.

min_y_velocity_threshold

타입

기본값

double

0.0001

설명

컨트롤러 서버는 컨트롤러 플러그인으로 보내기 전에 받은 오도메트리 메시지의 속도 부분을 필터링합니다. 이 임계 값을 아래의 오도메트리 값(m/s)으로 설정합니다. 비 홀로노믹 로봇을 위해.

min_theta_velocity_threshold

타입

기본값

double

0.0001

설명

컨트롤러 서버는 컨트롤러 플러그인으로 보내기 전에 받은 오도메트리 메시지의 속도 부분을 필터링합니다. 이 임계 값을 아래의 오도메트리 값(rad/s)으로 설정합니다.

failure_tolerance

타입

기본값

double

0.0

설명

호출된 컨트롤러 플러그인이 실패할 수 있는 최대 기간(즉, 플러그인의 computeVelocityCommands 함수가 예외를 throw 할 때)은 nav2_msgs::action::FollowPath 액션이 실패하기 전에 지정합니다. 특별한 값을 -1.0으로 설정하면 무한대이고, 0으로 설정하면 비활성화되며 적절한 타임아웃을 위해 양수 값을 설정합니다.

speed_limit_topic

타입

기본값

string

“speed_limit”

설명

구독 할 속도 제한 토픽 이름입니다. 이것은 속도 필터에 의해 발행 될 수 있습니다 (speed_filter 구성 페이지를 참조하세요). 속도 필터없이도 이를 사용할 수 있습니다. 외부 서버에서 이러한 메시지 를 게시하는 경우도 있습니다.

odom_topic

타입

기본값

string

“odom”

설명

속도의 즉각적인 측정을 받을 토픽입니다.

enable_stamped_cmd_vel

타입

기본값

bool

false

설명

geometry_msgs::msg::Twist 또는 geometry_msgs::msg::TwistStamped 속도 데이터를 사용할지 여부입니다. True는 TwistStamped를 사용하고, false는 Twist를 사용합니다.

제공된 플러그인

아래에 나열된 플러그인은 nav2_controller 네임 스페이스 내에 있습니다.

기본 플러그인

progress_checker_plugins, goal_checker_plugin 또는 controller_plugins 매개변수가 재정의되지 않은 경우 다음 기본 플러그인이 로드됩니다:

네임스페이스

플러그인

“progress_checker”

“nav2_controller::SimpleProgressChecker”

“goal_checker”

“nav2_controller::SimpleGoalChecker”

“FollowPath”

“dwb_core::DWBLocalPlanner”

위의 코드를 사용하여 컨트롤러 서버 설정을 설명했습니다.

Example

controller_server:
  ros__parameters:
    use_sim_time: True
    controller_frequency: 20.0
    min_x_velocity_threshold: 0.001
    min_y_velocity_threshold: 0.5
    min_theta_velocity_threshold: 0.001
    failure_tolerance: 0.3
    odom_topic: "odom"
    progress_checker_plugins: ["progress_checker"] # progress_checker_plugin: "progress_checker" For Humble and older
    goal_checker_plugins: ["goal_checker"] # goal_checker_plugin: "goal_checker" For Galactic and older
    controller_plugins: ["FollowPath"]
    progress_checker:
      plugin: "nav2_controller::SimpleProgressChecker"
      required_movement_radius: 0.5
      movement_time_allowance: 10.0
    goal_checker:
      plugin: "nav2_controller::SimpleGoalChecker"
      xy_goal_tolerance: 0.25
      yaw_goal_tolerance: 0.25
      stateful: True
    FollowPath:
      plugin: "dwb_core::DWBLocalPlanner"

요약

컨트롤러의 종류에 대해서 배웠습니다.

컨트롤러의 기본 설정법에 대해서 배웠습니다.

아무 설정을 하지 않아도 progress_checker_plugins, goal_checker_plugin, controller_plugins 가 기본 값으로 지정 됩니다.

다음 단계

다음 과정에선 사용할 수 있는 각각의 컨트롤러의 내용에 대해서 배워 볼 것이다. 가장 먼저는 DWBLocalPlanner 입니다.

Previous Next

© Copyright . Revision bf63d301.

Built with Sphinx using a theme provided by Read the Docs.