사족보행을 위한 효과적인 보행 정책을 개발하는 것은 복잡한 역학 관계로 인해 로보틱스 분야에서 상당한 어려움을 야기합니다. 실제 세계에서 계단을 오르내리도록 사족보행을 트레이닝하면 장비와 환경이 손상될 수 있습니다. 따라서 시뮬레이터는 학습 과정에서 안전과 시간 제약 모두에 있어서 핵심적인 역할을 합니다.
시뮬레이션된 환경에서 로봇을 트레이닝하기 위해 딥 RL(강화 학습)을 활용하면 복잡한 작업을 더 효과적이고 안전하게 수행할 수 있습니다. 그러나 이 접근 방식은 시뮬레이션에서 트레이닝된 이 정책이 실제 세계로 원활하게 전송되도록 하는 방법에 대한 새로운 과제를 안고 있습니다. 다시 말해, 시뮬레이션과 현실의 간극을 어떻게 좁힐 수 있을까요?
시뮬레이션과 현실의 격차를 해소하려면 트레이닝을 위한 높은 충실도의 물리 기반 시뮬레이터, NVIDIA Jetson과 같은 고성능 AI 컴퓨터, 공동 수준 제어 기능을 갖춘 로봇이 필요합니다. Boston Dynamics, NVIDIA, The AI Institute와 공동으로 개발한 강화 학습 연구원 키트는 이러한 기능을 한데 모아 사족보행을 가상 세계에서 현실 세계로 원활하게 배포할 수 있습니다. 여기에는 로봇의 이동 방식을 제어하는 Spot 사족보행 로봇용 합동 수준 제어 API, 정책을 실행하기 위한 NVIDIA Jetson AGX Orin 페이로드용 장착 하드웨어(AGX Orin 별도 판매), NVIDIA Isaac Lab의 Spot을 위한 시뮬레이션 환경이 포함됩니다.
Isaac Lab은 특히 대규모 로봇 학습에 최적화된 NVIDIA Isaac Sim 플랫폼에 구축된 경량 레퍼런스 애플리케이션입니다. 대규모 병렬 물리 기반 시뮬레이션에 GPU 기반 병렬화를 활용하여 최종 정책 성능을 개선하고 로보틱스에서 RL의 트레이닝 시간을 단축합니다. Isaac Lab은 높은 충실도의 물리효과 및 도메인 무작위화 기능을 통해 시뮬레이션과 현실 간의 격차를 해소하여 트레이닝된 모델을 물리적 로봇에 제로 샷으로 원활하게 배포할 수 있습니다. 자세한 내용은 NVIDIA Isaac Sim 4.0 및 NVIDIA Isaac Lab을 사용한 AI 및 시뮬레이션으로 로보틱스 워크플로우 강화를 참조하세요.
이 게시물에서는 Isaac Sim 및 Isaac Lab에서 Spot에 대한 보행 RL 정책이 생성되고 RL 연구원 키트의 구성 요소를 사용하여 하드웨어에 배포되는 방법을 설명합니다.
Isaac Lab의 사족보행 트레이닝
이 섹션에서는 Isaac Lab에서 보행 RL 정책을 트레이닝하는 방법을 설명합니다.
목표
Spot 로봇이 평평한 지형을 걸을 때 목표 x, y, yaw 기본 속도를 추적하도록 트레이닝합니다.
관측값 및 행동 공간
목표 속도는 재설정할 때마다 무작위화되며 그림 1에 표시된 다른 관측값과 함께 제공됩니다. 행동 공간에는 12개의 DOF 관절 위치만 포함되며, 이 위치는 하위 수준 관절 컨트롤러에 참조 관절 위치로 전달됩니다.
도메인 무작위화
그림 1의 무작위화 매개 변수에서 볼 수 있듯이 다양한 매개 변수가 주요 트레이닝 단계에서 무작위화됩니다. 이러한 무작위화는 모델이 실제 배포를 위한 견고성을 보장하는 데 도움이 됩니다. 이 프로세스를 도메인 무작위화라고 합니다.
네트워크 아키텍처 및 RL 알고리즘 세부 정보
보행 정책은 [512, 256, 128] 뉴런을 포함하는 3개의 레이어가 있는 MLP(Multilayer Perceptron)로 구조화되며, GPU 연산에 최적화된 RSL-rl의 PPO(근접 정책 최적화) 알고리즘을 사용하여 트레이닝되었습니다.
전제 조건
보행 정책을 트레이닝하려면 다음이 필요합니다.
- NVIDIA RTX GPU가 탑재된 시스템. 자세한 최소 사양은 Isaac Sim 문서를 참조하세요.
- NVIDIA Isaac Sim, Isaac Lab및 RSL-rl.
사용법
이 섹션에서는 정책을 트레이닝하고, 재생하고, 결과를 검사하는 방법을 보여 줍니다.
정책 트레이닝
cd <path_to_isaac_lab> ./isaaclab.sh -p source/standalone/workflows/rsl_rl/train.py –task Isaac-Velocity-Flat-Spot-v0 –num_envs 4096 –headless –video –enable_cameras |
--video --enable_cameras
인수는 트레이닝 중 에이전트의 행동을 비디오로 녹화합니다. 따라서 이는 선택 사항입니다.
트레이닝된 정책 재생
이 단계에서는 트레이닝된 모델을 재생하고 .pt 정책을 log 디렉터리의 내보낸 폴더의 .onnx로 내보냅니다.
cd <path_to_isaac_lab> ./isaaclab.sh -p source/standalone/workflows/rsl_rl/play.py –task Isaac-Velocity-Flat-Spot-v0 –num_envs 64 |
결과
비디오 1은 트레이닝된 정책이 Spot 로봇에서 실제로 작동하는 모습을 보여 줍니다. 로봇은 목표 x, y, yaw 속도를 따라 평평한 지형을 걸을 수 있습니다. 4,096개의 환경과 15,000번의 반복을 통해 NVIDIA RTX 4090 GPU에서 약 4시간의 트레이닝 시간에 해당하는 수준으로, 85,000~95,000FPS(초당 프레임)의 트레이닝 속도를 달성했습니다.
Jetson Orin을 사용하여 Spot에 트레이닝된 RL 정책 배포
로보틱스 애플리케이션을 위해 시뮬레이션에서 트레이닝된 모델을 실제 세계에 배포하는 것은 실시간 제어, 안전 제약 조건, 기타 실제 조건을 포함한 몇 가지 문제를 야기합니다. Isaac Lab의 정확한 물리효과 및 도메인 무작위화 기능을 통해 시뮬레이션에서 트레이닝된 정책을 Jetson Orin 제로 샷의 실제 Spot 로봇에 배포하여 가상 세계와 실제 세계 모두에서 유사한 성능을 달성할 수 있습니다.
그림 2는 실제 Spot 로봇 프레임워크 정책 배포를 보여 줍니다. 정책 신경망이 실제 로봇에 로드되고 추론됩니다. 시뮬레이션에서와 동일한 관측값이 Boston Dynamics State API를 사용하여 계산됩니다.
트레이닝된 모델을 Spot 로봇으로 전송하려면 모델을 엣지에 배포하고 짧은 지연 시간과 높은 빈도로 로봇을 제어해야 합니다. NVIDIA Jetson AGX Orin 고성능 컴퓨팅 기능과 지연 시간이 짧은 AI 처리는 실제 로보틱스 애플리케이션에 매우 중요한 빠른 추론 및 응답 시간을 보장합니다. 시뮬레이션된 정책은 추론을 위해 직접 배포되어 배포 프로세스를 간소화할 수 있습니다.
전제 조건
배포에는 다음이 필요합니다.
- 이더넷 포트, 전원 케이블, 장착 브래킷을 사용하여 Jetson Orin이 부착되고 맞춤형 페이로드로 구성된 Spot 로봇. 제공된 설정 지침을 따릅니다.
- Spot RL 연구원 키트의 배포 코드 및 Spot Python SDK.
- Bluetooth를 통해 Jetson Orin에 연결된 PS4 게임패드 컨트롤러.
- 외부 PC에서 Jetson에 SSH로 연결하고 코드를 실행합니다.
- Isaac Lab의 트레이닝된 모델 및 구성 파일.
Jetson Orin의 하드웨어 및 네트워크 설정
- Ubuntu 22.04가 설치된 외부 PC에 SDK Manager를 설치합니다.
- L4T BSP 플래시에 SDK Manager를 사용하는 방법의 지침에 따라 SDK Manager를 사용하여 JetPack 6로 Jetson Orin을 플래시합니다. 완료되면 다시 시작합니다.
- Jetson Orin을 디스플레이 포트, 키보드, 마우스에 연결합니다.
- 2단계에서 설정한 사용자 이름과 비밀번호를 사용하여 Jetson Orin에 로그인합니다.
- Jetson Orin과 Spot 간의 통신을 위해 Jetson Orin의 이더넷 포트에 대해 수동으로 유선 네트워크 구성을 설정합니다. IP 주소 선택 지침을 읽어보세요.
- 설정 -> 네트워크 -> 유선 -> + IPv4(경로)에 정보 추가: 주소 – Jetson IP 주소(192.168.50.5 선택), 넷 마스크 – 255.255.255.0, 기본 게이트웨이 -192.168.50.3으로 이동합니다.
- 추가 버튼을 클릭합니다.
Jetson의 소프트웨어 설정
먼저 시뮬레이션된 트레이닝된 정책을 .pt에서 .onnx로 변환하고 환경 구성을 내보냅니다. 이는 트레이닝을 위해 PC에서 수행됩니다.
cd <path_to_isaac_lab> ./isaac_lab.sh -p source/standalone/workflows/rsl_rl/play.py –task Isaac-Velocity-Flat-Spot-v0 |
결과는 모델에 대한 트레이닝 로그 디렉터리의 내보낸 폴더에 저장됩니다. 폴더에는 env_cfg.json 및 .onnx 파일이 포함되어 있습니다.
1. 트레이닝 PC에서 폴더를 생성하고 env.yaml 파일 및 .onnx 파일을 폴더에 복사합니다. 참고: env.yaml은 params 폴더에 있으며 .onnx 파일은 트레이닝 로그 디렉터리의 내보낸 폴더에 있습니다.
2. 트레이닝 PC에서 SSH를 사용하여 1단계의 폴더를 Jetson Orin에 복사합니다. PC와 Jetson이 Spot 로컬 Wi-Fi와 같은 동일한 네트워크에 있는지 확인합니다. PC의 터미널에서 다음 명령을 실행합니다.
scp -P 20022 -r /path/to/folder/* orinusername@network_IP:<path_to_copy_files> |
3. 다음으로, 홈 디렉터리의 Orin 터미널에서 다음 명령을 실행합니다.
mkdir spot-rl-deployment && cd spot-rl-deployment && mkdir models git clone https://github.com/boston-dynamics/spot-rl-example.git cd spot-rl-example && mkdir external && cd external && mkdir spot_python_sdk |
4. 공동 수준 API가 포함된 Spot Python SDK를 다운로드하고 3단계의 spot_python_sdk 폴더에 콘텐츠의 압축을 풉니다.
5. 배포 코드 종속성을 설치합니다.
cd ~/spot-rl-deployment/spot-rl-example sudo apt update sudo apt install python3-pip cd external/spot_python_sdk/prebuilt pip3 install bosdyn_api-4.0.0-py3-none-any.whl pip3 install bosdyn_core-4.0.0-py3-none-any.whl pip3 install bosdyn_client-4.0.0-py3-none-any.whl pip3 install pygame pip3 install pyPS4Controller pip3 install spatialmath-python pip3 install onnxruntime |
6. env.yaml 파일을 env_cfg.json 파일로 변환합니다.
cd ~/spot-rl-deployment/spot-rl-example/python/utils/ python env_convert.py #input the path to the .yaml file e.g ~/env.yaml #The file outputs a env_cfg.json file in the same directory as the .yaml file |
7. 6단계의 env_cfg.json과 2단계의 트레이닝된 모델 정책 .onnx 파일을 models 폴더로 이동합니다.
mv env_cfg.json policy.onnx ~/spot-rl-deployment/models |
정책 실행
1. Spot의 전원을 켜고 로봇 뒷면의 모터 잠금 버튼을 누릅니다. Jetson Orin의 전원이 켜져 있는지 확인합니다.
2. Spot 태블릿 컨트롤러에서 Spot 앱을 엽니다. 로봇을 선택하고 프롬프트에 따라 로그인하고 Spot을 작동합니다. 정책을 실행하려면 태블릿에서 제어권을 해제해야 합니다. 모터 상태 메뉴(전원 아이콘)를 열고 고급 설정으로 이동하여 제어권 해제를 선택합니다.
3. PC를 Spot 로컬 Wi-Fi에 연결하고 터미널에서 Orin에 SSH로 연결합니다. Spot은 포트 20022를 페이로드에 전달하므로 Spot IP와 이 포트에 대한 SSH 연결을 열어 Orin에 도달할 수 있습니다. IPv4 주소 192.168.50.3은 스팟 IP입니다.
ssh <jetson_username>@<spot_ip> -p 20022 e.g ssh <jetson_username>@192.168.50.3 -p 20022 |
4. bluetoothctl을 사용하여 무선 게임패드를 Orin에 연결합니다.
bluetoothctl scan on // wait for devices populate ~5s scan off devices |
나열된 디바이스에서 게임패드의 Mac 주소를 찾습니다. 게임패드를 페어링 모드로 전환하고 Select 및 PlayStation 버튼을 최대 5초 동안 누른 상태에서 bluetoothctl 키를 누릅니다. 페어링 모드를 종료하는 경우 다음 단계를 완료하기 전에 이 프로세스를 반복해야 할 수도 있습니다.
trust {MAC} pair {MAC} connect {MAC} exit |
5. RL 정책을 실행합니다.
cd ~/spot-rl-deployment/spot-rl-example/python python spot_rl_demo.py <spot_ip> ~/spot-rl-deployment/models –gamepad-config ./gamepad_config.json |
메시지가 표시되면 Spot의 사용자 이름과 비밀번호를 입력합니다. 그러면 Spot이 유지되지만 Enter 키를 누를 때까지 정책이 제어하지 않습니다. 이제 게임패드로 로봇을 구동할 수 있습니다. Enter 키를 다시 눌러 Spot을 제자리에 놓고 종료합니다.
6. PS4 게임패드로 제어합니다.
게임패드 그림과 같이 왼쪽 조이스틱은 x, y 이동에, 오른쪽 조이스틱은 회전에 사용합니다. 다른 게임패드(예: PS5 컨트롤러)를 사용하려면 다른 축 매핑이 필요합니다. axis_mapping
은 pygame
에 따른 축 색인을 나타냅니다. ~/spot-rl-deployment/spot-rl-example/python/utils/test_controller.py
의 test_controller.py
스크립트를 사용하여 각 축의 값을 출력하여 서로 다른 컨트롤러에 대한 적절한 매핑을 결정할 수 있습니다.
7. 게임패드 구성 옵션을 사용하여 정책을 실행합니다.
python spot_rl_demo.py ~/spot-rl-deployment/models –gamepad-config /home/gamepad_config.json |
비디오 2는 시뮬레이션에서 트레이닝된 후 실제 Spot 로봇이 작동하는 모습을 보여 줍니다.
맞춤형 애플리케이션 개발 시작하기
Spot RL 연구원 키트에서 제공되는 코드베이스는 시뮬레이션에서 맞춤형 RL 작업을 생성한 다음, 하드웨어에 배포하기 위한 출발점입니다. 맞춤형 애플리케이션을 구축하기 위해 자체 로봇 모델, 환경, 보상 함수, 커리큘럼 학습, 도메인 무작위화 등을 추가하여 현재 코드베이스를 수정하고 확장할 수 있습니다.
Isaac Lab을 사용하여 특정 작업에 대한 정책을 트레이닝하는 방법에 대한 자세한 지침은 설명서를 참조하세요. 트레이닝된 정책을 다른 로봇에 배포하는 것은 로봇 아키텍처에 따라 다릅니다. 그러나 Spot 사용자는 애플리케이션에 추가 관측값이 필요한 경우 현재 배포 코드를 수정할 수 있습니다.
강화 학습 연구원 키트 및 Spot 로봇을 구매하고 맞춤형 애플리케이션 개발을 시작하세요.
Isaac Sim을 기반으로 구축된 Isaac Lab에 대해 자세히 알아보세요. 더 많은 영감과 작업 설명은 다음 논문을 참조하세요.
- Enhancing Efficiency of Quadrupedal Locomotion Over Challenging Terrains with Extensible Feet
- Enhancing Efficiency of Quadrupedal Locomotion Over Challenging Terrains with Extensible Feet
- Learning Torque Control for Quadrupedal Locomotion
- More Than an Arm: Using a Manipulator as a Tail for Enhanced Stability in Legged Locomotion
LinkedIn, Instagram, X, Facebook에서 최신 소식을 받아보세요. NVIDIA 설명서와 YouTube 채널을 살펴보고 NVIDIA 개발자 로보틱스 포럼에 참여하세요. Isaac ROS 및 Isaac Sim에 대한 자기 주도 트레이닝 및 웨비나를 통해 자세히 알아보세요.
도움 주신 분들
Spot에 Isaac Lab 기반 트레이닝 환경을 제공하고 트레이닝된 정책의 배포를 지원한 The AI Institute의 Farbod Farshidian, Adam Miller, Fangzhou Yu, Michael Brauckmann에게 감사드립니다.