작성자 : Xingye (Dennis) Da 및 Cenk Oguz Saglam | Tags : AI , Isaac SDK , Jetson , 기계 학습 , 제작자 , 로봇 공학
댓글 1 개
NVIDIA Isaac SDK 의 사용하기 쉬운 모듈 식 내비게이션 스택 은 다양한 모바일 로봇의 개발을 지속적으로 가속화하고 있습니다. Isaac SDK 2020.1 은 네 발 달린 동물 로봇에 대한 지원을 포함하며 차동 휠베이스 및 홀로 노믹 휠베이스와 같이 SDK에서 지원되는 다른 로봇 플랫폼에 추가됩니다 (그림 1).
Unitree Robotics 의 4 족 로봇 인 Laikago 는 모바일 로봇 포트폴리오의 최신 멤버입니다. Laikago는 NVIDIA Jetson TX2 로 구동되며 원격 제어 이동을 허용하는 균형 및 걷기를위한 저수준 컨트롤러를 갖추고 있습니다. 이 게시물은 이전에 Isaac SDK를 사용한 적이없는 경우에도 Laikago에 자율 탐색을 허용하는 방법을 설명합니다.
기본적으로 Laikago에는 주변을 인식 할 수있는 센서가 없습니다. 기본적으로 로봇은 위치 파악이나 장애물 회피가 불가능합니다. 환경에 대한 3D 정보를 얻기 위해이 프로젝트를 위해 Laikago에 Velodyne VLP-16 LIDAR를 설치했습니다. Laikago 의 CAD 모델을 기반으로하는 LIDAR 장착에 사용되는 3D 인쇄 가능한 메시 파일을 다운로드 할 수 있습니다 . 또한 Laikago의 19V 출력을 줄이고 LIDAR의 전압 범위를 충족하기 위해 DC-DC 컨버터를 설치했습니다. USB to Ethernet 어댑터는 LIDAR를 NVIDIA Jetson에 연결합니다.
Isaac SDK 2020.1에는 라이카 고의 모터와 통신하기 위해이 프로젝트의 일부로 구현 된 라이카 고용 드라이버가 있습니다. 드라이버 코드 렛에는 간단한 인터페이스 messages::HolonomicBaseControls
가 있습니다. 전진, 측면 및 각 속도 값을 포함 하는 유형의 메시지를 수신 한 다음이를 Laikago 로봇으로 전달합니다. 그 대가로 LaikagoDriver는 Laikago에서 현재 속도 및 가속 정보를 읽고 유형의 메시지를 전송합니다 messages::HolonomicBaseDynamics
.
// The desired motion of Laikago of type messages::HolonomicBaseControls
ISAAC_PROTO_RX(StateProto, base_command);
// The state of Laikago of type messages::HolonomicBaseDynamics
ISAAC_PROTO_TX(StateProto, base_state);
LaikagoDriver는 응용 프로그램을 실행하기 전에 JSON 을 통해 구성 하거나 런타임에 Sight 를 통해 구성 할 수있는 선형 및 각 속도를 제한하는 매개 변수를 제공합니다 .
// Maximum linear speed robot is allowed to travel with
ISAAC_PARAM(double, speed_limit_linear, 0.6);
// Maximum angular speed robot is allowed to rotate with
ISAAC_PARAM(double, speed_limit_angular, 0.8);
하드웨어와 드라이버가 준비되면 그림 3에 나와있는 자율 내비게이션 애플리케이션을 만들 차례입니다. 여기에서 Laikago 로봇에 고유 한 유일한 코드 렛은 LaikagoDriver입니다. 다른 모든 하위 그래프 (예 : 탐색 스택), 구성 요소 (예 : Lidar) 및 에지 (예 : NVIDIA Carter )는 유사한 애플리케이션의 다른 로봇에서도 사용됩니다.
탐색 스택에는 두 가지 입력이 필요합니다.
- FlatscanProto는 VLP-16 LIDAR의 3D 데이터를 평면화하여 얻은 로봇 주변에 대한 2D 정보를 제공합니다.
- LaikagoDriver는 로봇의 현재 상태에 대한 정보를 제공합니다. 그 대가로 내비게이션 스택은 안전하고 자율적 인 내비게이션을위한 최적의 속도 값을 LaikagoDriver에 알려줍니다.
그림 3의 자율 탐색 애플리케이션은 packages / laikago / apps / laikago_navigate.app.json 의 다음 코드 예제에 해당합니다 . 특히 코드의 “가장자리”섹션은 탐색 하위 그래프와 2D Laikago 하위 그래프 사이에 세 개의 화살표로 표시됩니다. 내비게이션 스택은 장애물을 안전하게 피할 수 있도록 로봇의 모양을 표현하여 라이카 고용으로 구성되었습니다.
{
"graph": {
"nodes": [
{
"name": "2d_laikago",
"subgraph": "packages/laikago/apps/2d_laikago.subgraph.json"
},
{
"name": "navigation",
"subgraph": "packages/navigation/apps/holonomic_base_navigation.subgraph.json"
},
...
],
"edges": [
{
"source": "navigation.subgraph/interface/command",
"target": "2d_laikago.subgraph/interface/base_command"
},
{
"source": "2d_laikago.subgraph/interface/flatscan",
"target": "navigation.subgraph/interface/flatscan"
},
{
"source": "2d_laikago.subgraph/interface/base_state",
"target": "navigation.subgraph/interface/state"
},
...
]
},
"config": {
"navigation.shared_robot_model": {
"SphericalRobotShapeComponent": {
"circles": [
{ "center": [0.0 ,0.0], "radius": 0.3},
{ "center": [0.3 ,0.0], "radius": 0.3},
{ "center": [-0.3 ,0.0], "radius": 0.3},
{ "center": [-0.5 ,0.0], "radius": 0.3}
]
}
}
}, ...
}
Isaac SDK 2020.1에는 NVIDIA Isaac SDK 설명서 와 함께 앞에서 설명한 드라이버 및 애플리케이션이 포함되어 있습니다 . Jetson TX2에서 Jetpack 4.3 이 사용 되는지 확인합니다 .
Laikago를 자율적으로 탐색
- 앞에서 설명한대로 Velodyne VLP-16 LIDAR로 하드웨어를 업그레이드합니다.
- (선택 사항) Bluetooth를 통해 게임 패드를 Laikago의 TX2에 연결합니다. 이를 통해 원하는 경우 로봇을 원격 제어 할 수 있습니다. 자세한 내용 은 Isaac SDK 문서 의 Joystick 항목을 참조하십시오 .
- 애플리케이션을 배포하려면 Isaac SDK 2020.1에서 다음 명령을 실행합니다.
bob @ desktop : ~ / isaac $ ./engine/build/deploy.sh -p // packages / laikago / apps : laikago_navigate-pkg -h -d jetpack43 --remote_user laikago
- 애플리케이션을 실행하려면 SSH를 사용하여 Laikago의 TX2에 연결합니다.
laikago @ tx2 : ~ / deploy / bob / laikago_navigate-pkg $ ./packages/laikago/apps/laikago_navigate --more <map_json>
명령에서는 apps / assets / maps / virtual_tutorial.json<map_json>
과 유사한 맵별 JSON 파일 입니다.
- Sight를 통해 로봇, 현지화 및 기타 다양한 정보를 모니터링하려면 브라우저에서 <TX2_IP_address> : 3000을 엽니 다.
- 는 IF 지도보기 창 “pose_as_goal”에 대한 대화 형 마커를 가지고, 다음 단계로 이동합니다. 그렇지 않으면 다음을 수행하십시오.
- 에서 지도보기 창에서 마우스 오른쪽 버튼으로 클릭하고 설정 , 선택 마커 , 및 “pose_as_goal을”.
- 마커 추가 , 업데이트를 선택합니다 .
- 새 마커를 보려면지도를 확대해야 할 수 있습니다.
- “pose_as_goal”마커를지도의 새 위치로 드래그합니다.
- 게임 패드의 manual_button을 길게 누르고 move_axes 및 rotate_axes 를 사용 하여 로봇을 수동으로 원격 제어합니다. 눌러 홀드 autonomous_button 대상으로 자율 주행을위한입니다. 자세한 내용 은 구성 요소 API 개요 주제 의 isaac.navigation.RobotRemoteControl 섹션을 참조하세요 .
비디오 : 라이카 고가 Isaac SDK로 자율적으로 탐색합니다.
이 프로젝트는 Isaac SDK를 사용하고 로봇에서 새로운 기능을 활성화 하는 것이 얼마나 쉬운 지 보여줍니다 . Isaac SDK 플랫폼은 또한 다양한 GPU 가속 인식 알고리즘, 딥 신경망, 로봇 암을위한 조작 패키지, 시뮬레이션 기능을 제공합니다. 오늘 Isaac SDK를 다운로드하여 사용해보세요 !저자 정보
Xingye (Dennis) 정보 Da
Dennis는 NVIDIA SimTech 팀의 로봇 공학 / AI 연구 및 개발 엔지니어로, 제어, 궤도 최적화, 시뮬레이션 및 학습을 담당하고 있습니다. 그는 박사 학위를 받았습니다. 미시간 대학교에서 기계 공학을 전공하여 다리 운동과 학습을 공부했습니다.Xingye (Dennis) Da의 모든 게시글보기
Cenk Oguz Saglam 소개 Cenk Oguz Saglam
은 NVIDIA의 Isaac SDK 팀 개발자입니다. 이전에는 Sabanci University의 모션 제어 시스템, Carnegie Mellon University의 벽 등반 로봇, University of California Santa Barbara의 다리 운동, Intel에서 미션 크리티컬 소프트웨어 개발 작업을했습니다.Cenk Oguz Saglam의 모든 게시글보기