NVIDIA Isaac SDK로 지능형 로봇 개 만들기

작성자 : Xingye (Dennis) Da 및 Cenk Oguz Saglam | Tags : AI , Isaac SDK , Jetson , 기계 학습 , 제작자 , 로봇 공학
댓글 1 개

그림 1. 자율 탐색을 위해 Isaac SDK를 실행하는 일부 모바일 로봇. 왼쪽부터 오른쪽으로, NVIDIA 카터 , BMW STR , NVIDIA 가야 , 그리고 Laikago . 탐색 스택은 다양한 기반, 두뇌 및 센서를 지원합니다.

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에 연결합니다.

그림 2. 물병을 사용하여 자율적으로 탐색하는 Laikago.

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. Laikago의 자율 탐색을위한 애플리케이션. Laikago 로봇에 고유 한 유일한 코드 렛은 LaikagoDriver입니다. 2D Laikago 하위 그래프에는 LaikagoDriver 코드 렛 및 Scan Flattener 하위 그래프가 포함됩니다.

그림 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를 자율적으로 탐색

  1. 앞에서 설명한대로 Velodyne VLP-16 LIDAR로 하드웨어를 업그레이드합니다.
  2. (선택 사항) Bluetooth를 통해 게임 패드를 Laikago의 TX2에 연결합니다. 이를 통해 원하는 경우 로봇을 원격 제어 할 수 있습니다. 자세한 내용 은 Isaac SDK 문서 의 Joystick 항목을 참조하십시오 .
  3. 애플리케이션을 배포하려면 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

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의 모든 게시글보기