Simple Commander API
개요
Nav2 Simple (Python3) Commander의 목표는 Python3 사용자에게 “라이브러리로서의 내비게이션” 기능을 제공하는 것입니다.
Nav2의 기능을 활용하여 응용 프로그램을 구축할 수 있도록 ROS 2 및 액션 서버 작업을 모두 처리하는 API를 제공합니다.
또한 nav2_simple_commander 패키지에서 사용법 및 데모를 제공합니다. Github Page
아래에 간단한 데모가 표시됩니다. 참고로 goToPose(), goThroughPoses(), followWaypoints() 와 유사한 함수들은 비동기적 으로 작동하여 단일 스레드 응용 프로그램에서 피드백을 수신하고 처리할 수 있습니다.
따라서 작업이 완료될 때까지 기다리는 동안, while not nav.isTaskComplete() 디자인은 내비게이션 완료 사항을 폴링하고, 작업이 완료되지 않은 경우 응용 프로그램에서 관심 있는 작업(피드백 처리, 로봇이 수집한 데이터 처리, 오류 확인 등)을 수행해야 합니다.
이 간단한 commander는 동일한 유형의 명령을 예상되는 것과 중단할 수 있지만, goToPose() 와 goThroughPoses() 또는 followWaypoints() 간을 전환할 때는 현재 명령을 명시적으로 취소하고 새로운 명령을 내려야 합니다.
from nav2_simple_commander.robot_navigator import BasicNavigator
import rclpy
rclpy.init()
nav = BasicNavigator()
# ...
nav.setInitialPose(init_pose)
nav.waitUntilNav2Active() # if autostarted, else use lifecycleStartup()
# ...
path = nav.getPath(init_pose, goal_pose)
smoothed_path = nav.smoothPath(path)
# ...
nav.goToPose(goal_pose)
while not nav.isTaskComplete():
feedback = nav.getFeedback()
if feedback.navigation_duration > 600:
nav.cancelTask()
# ...
result = nav.getResult()
if result == TaskResult.SUCCEEDED:
print('Goal succeeded!')
elif result == TaskResult.CANCELED:
print('Goal was canceled!')
elif result == TaskResult.FAILED:
print('Goal failed!')
Commander API
기본 Navigator에서 제공하는 메서드는 다음과 같습니다. 입력 및 예상 반환 값을 보여줍니다. 서버가 실패하면 예외를 throw하거나 None 객체를 반환할 수 있으므로 내비게이션 호출을 try/catch로 적절하게 래핑하고 반환 값을 None 유형으로 확인하십시오.
2023년 9월 이후 새로운 기능: 간단한 Navigator 생성자는 다중 로봇 응용 프로그램 또는 네임스페이스 Nav2 시작을 지원하기 위해 namespace 필드를 허용합니다.
Robot Navigator 메서드 설명 |
설명 |
|---|---|
|
로봇의 초기 위치( |
|
일련의 위치( |
|
특정 위치( |
|
일련의 경유지( |
|
시작점에서 목표지까지의 경로( |
|
주어진 각도로 로봇을 회전하도록 요청합니다. |
|
주어진 거리만큼 로봇을 특정 방향으로 운전하도록 요청합니다. |
|
주어진 거리만큼 로봇을 후진하도록 요청합니다. |
|
보조 텔레옵 작업을 실행하도록 로봇에 요청합니다. |
|
진행 중인 작업을 취소합니다. |
|
작업이 완료되었는지 확인합니다. 경로 추적 작업을 확인하는 경우, 기본 인수를 |
|
작업으로부터 피드백을 받아옵니다. 경로 추적 작업의 피드백을 가져오려면 기본 인수를 |
|
작업의 최종 결과를 가져옵니다. |
|
시작점에서 목표지까지의 경로를 가져옵니다. ( |
|
시작점에서 목표지까지의 경로를 가져옵니다. ( |
|
시작점에서 목표지까지의 빈도 경로와 밀집 경로를 가져옵니다. 시작점과 목표점은 알려진 NodeIDs의 경우 |
|
시작점에서 목표지까지의 빈도 경로와 밀집 경로를 가져오고 추적합니다. 시작점과 목표점은 알려진 NodeIDs의 경우 |
|
주어진 경로를 부드럽게 만듭니다. ( |
|
현재 맵에서 map_filepath 의 yaml로 변경을 요청합니다. |
|
전역 및 로컬 코스트맵을 모두 지웁니다. |
|
로컬 코스트맵을 지웁니다. |
|
전역 코스트맵을 지웁니다. |
|
전역 코스트맵을 가져옵니다. |
|
로컬 코스트맵을 가져옵니다. |
|
Nav2가 완전히 온라인이 되고 라이프사이클 노드가 활성 상태에 있는지 블록됩니다. autostart 또는 외부 라이프사이클 bringup과 함께 사용하십시오. |
|
모든 라이프사이클 관리 서버에 활성 상태로 전환하도록 요청을 보냅니다. autostart가 |
|
모든 라이프사이클 관리 서버에 종료 요청을 보냅니다. |
|
객체에서 사용하는 리소스를 해제합니다. |
코스트맵 API
이것은 코스트맵 2D 메시지에 대한 Python3 API입니다. 코스트맵 2D C++ API에서 찾을 수 있는 기본 변환, 가져오기/설정 및 처리 세맨틱스를 제공합니다.
메서드 |
설명 |
|---|---|
|
셀의 맵 너비를 가져옵니다. |
|
셀의 맵 높이를 가져옵니다. |
|
미터 단위로 x 축 맵 크기를 가져옵니다. |
|
미터 단위로 y 축 맵 크기를 가져옵니다. |
|
맵의 x 축 원점을 가져옵니다. |
|
맵의 y 축 원점을 가져옵니다. |
|
맵 해상도를 가져옵니다. |
|
전역 프레임 ID를 가져옵니다. |
|
코스트맵 타임스탬프를 가져옵니다. |
|
맵 좌표 mx ( |
|
인덱스 ( |
|
맵 좌표 mx ( |
|
맵 좌표 mx ( |
|
월드 좌표 wx ( |
|
맵 좌표 mx ( |
풋프린트 충돌 체크 API
이것은 풋프린트 충돌 체크를 위한 Python3 API입니다. 좌표를 조작하고 주어진 맵에서 풋프린트의 비용을 계산하는 데 필요한 메서드를 제공합니다.
메서드 |
설명 |
|---|---|
|
암시적으로 제공된 좌표 위치에서 풋프린트 ( |
|
라인을 따라 모든 지점을 반복하여 충돌을 확인합니다. 라인은 x0, y0, x1, y1, step_size ( |
|
월드 좌표 wx ( |
|
맵 좌표 XY를 사용하여 코스트맵의 점의 비용을 가져옵니다. ( |
|
풋프린트 충돌 체커와 함께 사용할 코스트맵을 지정합니다. ( |
|
맵 좌표에서 특정 Pose의 풋프린트 비용을 가져옵니다. x, y, theta ( |
예제와 데모
이 모든 내용은 패키지 에서 찾을 수 있습니다.
nav2_simple_commander 에는 사용자로서 사용할 수 있는 API 기능을 강조하는 몇 가지 예제가 있습니다:
example_nav_to_pose.py- Navigator의 pose로 이동하는 기능 및 여러 보조 메서드를 보여줍니다.example_nav_through_poses.py- Navigator의 위치를 통과하는 기능과 여러 보조 메서드를 보여줍니다.example_waypoint_follower.py- Navigator의 waypoint를 따라가는 기능과 여러 보조 메서드를 보여줍니다.example_follow_path.py- Navigator의 경로를 따라가는 기능과 경로 부드럽게 만드는 등 여러 보조 메서드를 보여줍니다.
nav2_simple_commander 에는 사용자가 API를 사용하여 빌드할 수 있는 간단한 자율성 응용 프로그램을 강조하는 몇 가지 데모가 있습니다:
demo_security.py- 간단한 보안 로봇 응용 프로그램으로, 보안 경로를 따라 로봇이 순찰 경로를 수행하도록 Navigate Through Poses를 사용하는 방법을 보여줍니다.demo_picking.py- 간단한 물건 집는 응용 프로그램으로, 로봇이 창고의 특정 선반으로 이동하여 물건을 집거나 사람이 물건을 바구니에 넣고 배송 목적지로 전달하는 방법을 보여줍니다.demo_inspection.py- 간단한 선반 검사 응용 프로그램으로, 선반의 현재 상태를 분석하고 찾을 수 있는 항목을 확인하기 위해 Waypoint Follower 및 작업 실행기를 사용하는 방법을 보여줍니다.