비동기 멀티바디 프레임워크
Asynchronous multi-body framework![]() 비동기 멀티바디 프레임워크 | |
개발자 | 아드난 무나와르 |
---|---|
초기 릴리즈 | 전( |
저장소 | github |
기입처 | C++, Python |
운영 체제 | Linux, macOS |
유형 | 로봇 시뮬레이터 |
AMBF(Asynchronous Multi-Body Framework)는 2019년 4월에 개발된 로봇용 오픈 소스 3D 다목적 시뮬레이터이다.이 멀티바디 프레임워크는 로봇, 프리바디, 멀티링크 퍼즐과 같은 멀티바디의 실시간 동적 시뮬레이션을 다양한 입력 [1]장치와의 실시간 햅틱 상호작용과 함께 제공합니다.이 프레임워크는 실제 외과의 마스터 콘솔을 통합하여 시뮬레이션된 로봇을 실시간으로 제어합니다.이 기능을 통해 시뮬레이터는 수술 및 비수술 작업에 대한 실시간 교육 애플리케이션에서 사용됩니다.조직이 변형되기 쉬운 외과 작업을 시뮬레이션하기 위해 부드러운 신체와 상호작용할 수 있는 가능성을 제공합니다.또한 Python Client를 제공하여 시뮬레이션된 신체와 쉽게 상호 작용하고 루프 내 시뮬레이션을 통해 실시간 데이터에 대한 신경 네트워크를 훈련시킵니다.여기에는 로봇, 그립, 센서, 퍼즐, 부드러운 몸체가 폭넓게 포함되어 있습니다.시뮬레이션된 각 오브젝트는 afObject로 표현되며 시뮬레이션 월드는 afWorld로 표현됩니다.둘 다 state와 command라는2개의 통신 인터페이스를 사용합니다.State 명령어를 통해 오브젝트는 시뮬레이션 환경 밖으로 데이터를 전송할 수 있으며 명령어는 기본 afObject에 [2]명령을 적용할 수 있습니다.
AMBF 시뮬레이터는 입력 디바이스 통합을[3] 위한 CHAI-3D, 강체 및 소프트 바디의 시뮬레이션을 위한 Bullet Physical, Open-GL, GLFW 등 여러 외부 패키지를 사용합니다.
Ubuntu 16.04 및 Ubuntu 18.04와 호환되지만 macOS Maverick 및 macOS Mojave에서도 테스트되었습니다.
시뮬레이터는 다중 신체 시뮬레이션, 로봇 조작기 조작, 수술 및 비수술 작업에 대한 실시간 훈련, 강화 학습 등 다양한 분야에서 응용 프로그램을 찾습니다.
AMBF 파일 형식
비동기식 멀티바디 프레임워크에는 새로운 로봇 설명 파일 형식(AMBF 설명 형식 또는 ADF)이 도입됩니다.설명 형식은 YAML을 기반으로 하며, 사람이 읽기 쉽기 때문에 멀티바디를 쉽게 수정, 생성 또는 테스트할 수 있습니다.그 아이디어는 로봇이 관절이 연결의 일부인 신체의 공간 나무라는 것이다.AMBF 설명 파일은 블록별로 구성된 것으로 볼 수 있습니다.이러한 각 블록에는 다른 블록에 영향을 주지 않고 수정하거나 제거할 수 있도록 단일 독립 본체에 대한 데이터가 포함됩니다.헤더 리스트는 파일의 선두에 있으며 글로벌파라미터와 특정 설명 파일을 정의하는 모든 요소(바디, 비주얼 요소, 제약 [2]조건 등)가 포함되어 있습니다.
이 파일 형식을 사용하면 동일한 설명 파일에 서로 다른 다중 바디 또는 다중 로봇을 정의할 수도 있습니다.
특징들
ROS 커뮤니케이션
시뮬레이터는 로봇과의 통신을 처리하는 미들웨어인 ROS(Robot Operating System)와 통합되어 있다.ROS는 외부 코드를 통해 시뮬레이션된 로봇을 제어할 수 있으며 유용한 Plotting(RQT Plot) 및 Logging(ROS Bag) 도구도 제공합니다.Asynchronous Framework는 ROS 기반의 런타임 메카니즘으로부터 격리된 채 툴을 활용할 수 있습니다.고속 비동기 통신은 AMBF 프레임워크 라이브러리의 ROS 토픽을 통해 구현됩니다.C++와 Python은 시뮬레이션 로봇, 멀티바디, 키네마틱 및 비주얼 객체와의 상호작용에 사용할 수 있습니다.
Python 클라이언트
Python Client는 높은 통신 속도를 유지하면서 다른 afObject를 제어할 수 있는 기능을 제공합니다.이를 통해 ROS 통신을 관리할 수 있어 시뮬레이션된 몸을 제어하는 프로세스가 다른 시뮬레이터에 비해 훨씬 쉬워집니다.클라이언트와 AMBF 시뮬레이터 간의 통신은 미들웨어로서 ROS를 통해 관리됩니다.클라이언트는 Python 함수의 라이브러리를 사용하여 본문에 명령을 설정하는 동시에 본문의 상태를 읽을 수 있도록 양방향 통신을 사용합니다.이러한 기능은 예를 들어 차체의 위치와 방향을 설정 또는 파악하거나 차체에 작용하는 렌치를 제어하거나 렌치에 연결된 조인트 수를 파악하는 데 사용됩니다.사용 시 클라이언트의 인스턴스가 생성되어 시뮬레이션에 연결됩니다.이것에 의해, ROS 토픽으로부터 콜 가능한 오브젝트가 작성되어 쌍방향 [4]통신용의 스레드 공유 풀이 개시됩니다.각 콜 가능한 오브젝트에는 타이밍 조건이 실패했을 때 명령어를 리셋하는 WatchDog 타이머가 있습니다.
또한 Python Client는 실시간 데이터에 대한 강화 학습 에이전트 교육에 사용됩니다.
입력 내면 장치
이 프레임워크를 통해 실제 마스터 콘솔을 통합하여 시뮬레이션된 본체를 실시간으로 조작할 수 있습니다.이러한 인터페이스는 입력 인터페이스 디바이스(IID)라고도 불리며, 햅틱인지 아닌지를 지정할 수 있습니다.Geomagic Phantom, Falcon Novint, Razer Hydra, dVRK MTM 등 여러 입력 인터페이스가 이미 시뮬레이터에 포함되어 있습니다.다른 입력 인터페이스는 input_device.yaml 파일에 정의하면 시뮬레이터에 쉽게 포함될 수 있습니다.각 입력 인터페이스는 시뮬레이션된 신체에 결합되거나 결합되지 않는 동적 엔드 이펙터(SDE)로서 시뮬레이션된다.시뮬레이션된 엔드 이펙터는 입력 [5]장치의 움직임에 기초한 동적 제어 법칙을 사용하여 제어됩니다.루트 링크는 입력 디바이스가 연결되어 있는 시뮬레이션된 엔드 이펙터의 베이스입니다.통상 입력 인터페이스의 상태는 디바이스 자체의 참조 프레임에 있는 반면 엔드 이펙터는 월드 프레임에 관한 것이므로 상태를 공통 프레임으로 변환하기 위해서는 트랜스폼매핑이 필요합니다.각 요소에 대해 다음과 같은 일부 속성을 지정할 수 있습니다.
- 워크스페이스 스케일링: 시뮬레이션에서 입력 장치의 움직임을 스케일링합니다.
- 시뮬레이션 멀티바디: 시뮬레이션된AMBF 장면 내에서 외부 디바이스를 에뮬레이트하는 멀티바디를 지정합니다.그리퍼와 같은 다른 기술 파일을 선택하여 시뮬레이션에서 구현할 수 있습니다.
- 햅틱 게인: 입력 인터페이스 장치에 적용되는 힘의 피드백을 제어하기 위한 게인 세트입니다.
- 컨트롤러 게인: 시뮬레이션된 엔드 이펙터의 렌치를 스케일링하는 데 사용됩니다.
- 페어링 카메라 파일: IID-SDE 페어와 페어링할 하나 이상의 카메라를 설정하는 데 사용됩니다.[6]
부드러운 몸매치
강체 외에, AMBF는 부드러운 차체를 지원합니다.소프트 바디는 소프트 바디의 동작을 정의하기 위해 조정할 수 있는 추가 매개변수가 있는 강체로 정의됩니다.물체 간의 상호작용은 Bullet의 솔버에 의해 제공되며, 이 솔버는 강체와 부드러운 차체의 역학을 모두 처리합니다.
연성체는 장면의 다른 물체와 충돌할 수 있는 상호 연결된 관성 노드의 집합으로 표현된다.상호접속은 장력, 비틀림 및 굴곡을 설명하는 3차원 스프링으로 일반화되어 있습니다.각 노드의 위치는 각 시간 [7]단계에서 심플렉티트 오일러 방법을 사용하여 계산됩니다.또, 연질 본체 마다, 시각화용의 고품질 메쉬와 연질 본체를 나타내는 저해상도 메쉬를 지정할 수 있다.
블렌더 애드온
AMBF에는 새로운 모델을 만들거나 용도에 따라 기존 모델을 수정할 수 있는 블렌더 기능이 포함되어 있습니다.Blender는 그래픽 디자이너를 위한 대규모 커뮤니티 지원을 제공하며 사용자가 [8]본문을 작성하거나 수정할 수 있는 즉각적이고 직관적인 인터페이스를 제공합니다.Blender-to-AMBF add-on은 양방향으로 사용자가 AMBF 파일 형식을 통해 정의된 객체를 Import하여 고해상도 파일과 저해상도 파일, 그 후 복잡한 로봇 및 멀티보디의 AMBF YAML 구성 파일을 생성할 수 있음을 의미합니다.이 툴은 사용자가 실시간 시각적 피드백에 따라 단단하고 부드러운 바디를 조정할 수 있도록 함으로써 새로운 요소의 작성 프로세스를 용이하게 합니다.
레퍼런스
- ^ "WPI-AIM/ambf". GitHub. Archived from the original on 2020-11-03.
- ^ a b Munawar, Adnan; Wang, Yan; Gondokaryono, Radian; Fischer, Gregory (November 4–8, 2019). "A Real-Time Dynamic Simulator and an Associated Front-End Representation Format for Simulating Complex Robots and Environments". IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS): 1875–1882. doi:10.1109/IROS40897.2019.8968568. ISBN 978-1-7281-4004-9. S2CID 210971054.
{{cite journal}}
: CS1 maint: 날짜 형식(링크 - ^ "CHAI-3D". Archived from the original on 2003-10-11.
- ^ "Python Client". GitHub. Archived from the original on 2020-11-03.
- ^ Munawar, Adnan; Fischer, Gregory (November 2019). "An Asynchronous Multi-Body Simulation Framework for Real-Time Dynamics, Haptics and Learning with Application to Surgical Robots". IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS): 6268–6275. doi:10.1109/IROS40897.2019.8968594. ISBN 978-1-7281-4004-9. S2CID 210972445.
- ^ "Input Devices". GitHub.
{{cite web}}
: CS1 maint :url-status (링크) - ^ Adnan Munawar, 2019년 12월, "다중 사용자 대화형 협업을 위한 비동기 시뮬레이션 프레임워크:로봇 지원 수술에 적용"을 참조하십시오.
- ^ "Blender". Archived from the original on 2002-11-24.