<div align="center">
<a href=""><img width="400px" height="auto" src="https://raw.github.com/duburcqa/jiminy/readme/jiminy_logo.svg"></a>
</div>
License
Version
Python
Downloads
Try it in Binder
Try it in Colab
Try in in Deepnote
Linux CI
MacOS CI
Windows CI
Jiminy는 다관절 시스템을 위한 크로스 플랫폼 오픈 소스 시뮬레이터입니다. 이 시뮬레이터는 두 가지 아이디어를 염두에 두고 구축되었습니다:
- 로보틱스 연구를 위한 빠르면서도 물리적으로 정확한 시뮬레이터 제공.
Jiminy는 오픈 소스 고속 및 효율적인 운동학(kinematics) 및 동역학(dynamics) 라이브러리인 Pinocchio를 기반으로 구축되었습니다. 따라서 Jiminy는 최소 좌표와 라그랑지안 역학을 사용하여 다관절 시스템을 시뮬레이션합니다: 이는 Jiminy가 관절 위반(joint violation)의 위험 없이 수치적으로 분석적 해에 가장 가깝게 만듭니다.
- 로보틱스 분야 머신러닝을 위한 효율적이고 유연한 플랫폼 구축.
계산 집약적인 분산 시뮬레이션을 실행해야 하는 머신러닝의 요구 사항에 대한 성능에 중점을 두는 것 외에도, Jiminy는 전용 모듈 Gym-Jiminy를 통해 학습을 위한 편의 도구를 제공합니다. 이는 gym 표준 API와 완벽하게 호환되며, 모든 로보틱스 시스템을 최첨단(state-of-the-art) 학습 프레임워크에 인터페이스할 수 있는 고도로 사용자 정의 가능한 래퍼(wrapper)를 제공합니다.
주요 기능
일반
- 최소 좌표와 라그랑지안 역학을 사용한 다물체 시스템 시뮬레이션.
- Pinocchio 덕분에 동적 양 및 그 도함수를 계산하기 위한 포괄적인 API 제공.
- C++ 코어에 전체 Python 바인딩이 포함되어 두 언어 간 사용자 API의 일치성을 제공합니다.
- 머신러닝을 염두에 두고 설계되었으며, 한 줄로 로봇을 OpenAI Gym 환경으로 래핑하여 원활하게 사용할 수 있습니다. Jiminy는 학습에 필요한 물리 엔진과 로봇 모델(센서 포함)을 모두 제공합니다.
- 완전 모듈식 학습 환경 파이프라인 설계로, 플러그 앤 플레이 방식의 로봇 관찰자 및 컨트롤러, 그리고 조합 가능한 보상 구성 요소와 종료 조건을 갖추고 있습니다. 예시 여기를 참고하세요.
- 풍부한 시뮬레이션 로그 출력을 제공하며, 기록(recording), 내부 검사(introspection), 디버깅을 위해 쉽게 사용자 정의할 수 있습니다. 이 시뮬레이션 로그는 빠른 접근을 위해 RAM에 직접 사용 가능하며, 바이너리 또는 HDF5 형식으로 내보낼 수 있습니다.
- Google Colab, Jupyter Lab, Mybinder 및 VSCode에 전용 통합 기능을 제공하여 별도의 설정 없이 바로 사용할 수 있습니다. 여기에는 Meshcat 기반의 대화형 3D 뷰어가 포함됩니다. 이는 원격 환경에서 작업하는 것을 용이하게 합니다.
- 그래픽 서버 없이 GPU 가속을 지원하는 동기식 및 단일 스레드 오프스크린 렌더링 기능(Panda3d 기반). Panda3d를 기반으로 합니다.
- 설치가 간편합니다: 시작하려면
pip만 있으면 됩니다! Linux, Mac 및 Windows 플랫폼을 지원합니다.
물리
- 고전적인 현상학적 힘 레벨 스프링-댐퍼 접촉 모델과 최대 에너지 소산 원칙을 만족하는 제약 조건 솔버를 모두 제공합니다.
- 고정된 접점 세트(기본 도형 및 메시지는 추후 지원 예정)으로부터의 지면과의 접촉 및 충돌을 지원합니다.
- 다중 에이전트 학습이나 군집 로봇 공학과 같은 사용 사례를 지원하기 위해 여러 관절 시스템이 서로 상호 작용하는 것을 동시에 시뮬레이션할 수 있습니다.
- 보행 로봇 공학에서 흔히 발생하는 현상인 모터 변속 백래시(backlash)와 구조적 변형을 스프링-댐퍼 동역학을 가진 순응성 구면 관절(compliant spherical joints)을 통해 모델링합니다.
- 지속 시간 또는 이산 시간 컨트롤러를 모두 시뮬레이션할 수 있으며, 이때 컨트롤러 및 센서 업데이트 주파수가 다를 수도 있습니다.
더 완전한 기능 목록은 wiki에서 확인할 수 있습니다.
문서는 Github.io에서, 또는 소스에서 빌드할 경우 로컬의 docs/html/index.html에서 이용 가능합니다.
Gym Jiminy
Gym Jiminy는 Jiminy 시뮬레이터와 강화 학습(Reinforcement Learning) 프레임워크 간의 인터페이스입니다. 이는 현재 표준인 Open AI Gym API를 완벽하게 준수합니다. 또한, 사용자가 로봇의 URDF 파일만 제공하는 것으로 충분하며, 최소한의 개입으로 보행(locomotion) 작업을 학습하기 위한 범용적이고 쉽게 구성 가능한 학습 환경을 제공합니다. 나아가 Gym Jiminy는 풍부한 탐색을 제공하고 견고한 학습을 보장하기 위해 시뮬레이션의 많은 측면을 쉽게 수정할 수 있게 합니다. 이는 외부 섭동력(perturbation forces)부터 센서 노이즈 및 바이어스까지, 질량과 관성(inertias)의 무작위화, 지면 마찰 모델 또는 심지어 중력 자체를 포함합니다. 참고로 학습은 모든 고수준 동역학 기능에서 쉽게 수행되거나, 종단 간(end-to-end) 학습을 위해 모의 센서 데이터로 제한될 수 있습니다.
Gym은 크로스 플랫폼이며 표준 알고리즘을 구현하는 대부분의 강화학습 (Reinforcement Learning) 프레임워크와 호환됩니다. 예를 들어, Stable Baselines 3, Tianshou, 또는 Rllib가 있습니다. Stable Baselines 3와 Tianshou는 그 대응 패키지인 Pytorch를 사용하며, Rllib는 둘 다 지원합니다. 이러한 패키지에 의존하는 몇 가지 학습 예제도 제공됩니다.
일부 잘 알려진 장난감 모델 및 참조 로봇 공학 플랫폼을 위한 사전 구성된 환경이 제공됩니다: cartpole, acrobot, pendulum, Ant, ANYmal, 그리고 Cassie, 그리고 Atlas.
데모 (Demo)
<a href="./python/jiminy_py/examples/tutorial.ipynb">
<p align="middle">
<img src="https://raw.github.com/duburcqa/jiminy/readme/jiminy_plot_log.png" width="49.0%"/>
<img src="https://raw.github.com/duburcqa/jiminy/readme/jiminy_viewer_open.png" width="49.0%"/>
<img src="https://raw.github.com/duburcqa/jiminy/readme/jiminy_tensorboard_cartpole.png" width="98.5%"/>
<img src="https://raw.github.com/duburcqa/jiminy/readme/jiminy_learning_ant.gif" width="32.5%"/>
<img src="https://raw.github.com/duburcqa/jiminy/readme/cassie.png" width="32.5%"/>
<img src="https://raw.github.com/duburcqa/jiminy/readme/atlas.png" width="32.5%"/>
</p>
</a>
시작하기 (Getting started)
Jiminy와 Gym Jiminy는 Linux, Mac 및 Windows를 지원하며 Python3.10 이상과 호환됩니다. 사전 컴파일된 바이너리는 PyPi에서 배포됩니다. pip>=20.3을 사용하여 설치할 수 있습니다:
Jiminy 설치
Jiminy를 설치하려면 다음 명령을 사용하세요.
python -m pip install --prefer-binary jiminy_py[meshcat,plot]
...
소스 코드에서 빌드하는 것을 포함한 자세한 설치 지침은 여기를 참고해주세요.