개요

DART (Dynamic Animation and Robotics Toolkit)는 조지아 공과 대학교의 그래픽스 연구실과 인간형 로봇 연구실에서 개발된 협업, 크로스 플랫폼, 오픈 소스 라이브러리로, 워싱턴 대학교 개인용 로봇 연구실과 오픈 소스 로봇 재단에서 지속적인 기여를 받고 있습니다. 이 라이브러리는 로봇 및 컴퓨터 애니메이션의 운동학 및 동역학 응용 프로그램을 위한 데이터 구조 및 알고리즘을 제공합니다. DART는 관절이 있는 강체 시스템을 나타내기 위해 일반화 좌표를 사용하고, Featherstone의 관절 본 알고리즘을 적용하여 움직임 동역학을 계산하여 정확성과 안정성을 제공하는 점에서 뛰어난 성능을 보입니다.

개발자들에게는 DART가 질량 행렬, 코리올리스 및 원심력과 같은 내부 운동학 및 동역학 양에 대한 전체적인 액세스를 제공하여, 시뮬레이터를 블랙박스로 처리하는 많은 인기 있는 물리 엔진과는 달리, 효율적인 계산을 통해 임의의 바디 포인트와 좌표 프레임에 대한 자코비안 행렬을 제공합니다. 또한 DART의 프레임 의미론은 사용자가 임의의 참조 프레임(관성 및 비관성 모두)을 정의하고 사용하여 데이터를 지정하거나 요청할 수 있도록 합니다.

DART는 게으른 평가로 인해 코드 안전성을 보장하기 위해 자동으로 전진 운동학 및 동력학 값을 업데이트하므로 실시간 컨트롤러에 적합합니다. 또한 사용자가 제공하는 클래스를 DART 데이터 구조에 임베드하여 API를 확장할 수 있습니다. 접촉과 충돌은 암시적 시간 단계, 속도 기반 선형 보완성 문제(LCP)를 사용하여 비침투, 방향성 마찰 및 근사적인 쿨롱 마찰원 조건을 보장합니다.

요약하면, DART는 다중체 동역학 시뮬레이터와 제어 및 모션 계획을 위한 다양한 운동학 도구를 갖추고 있어 로봇 공학 및 컴퓨터 애니메이션 분야에서 활용될 수 있습니다.

특징

일반

  • BSD 라이센스로 배포되는 오픈 소스 C++ 라이브러리 입니다.

  • Ubuntu, Archlinux, FreeBSD, macOS 및 Windows를 비롯한 여러 플랫폼을 지원합니다.

  • Gazebo와 완전히 통합되어 있습니다.

  • URDF 및 SDF 형식의 모델을 지원합니다.

  • 기본 적분 방법(세미 암시적 Euler 및 RK4)과 다른 수치 적분 방법에 대한 확장 가능한 API를 제공합니다.

  • 게으른 평가 및 운동학 및 동역학 양의 자동 업데이트를 지원합니다.

  • API를 확장하여 사용자가 제공한 클래스를 데이터 구조에 임베드할 수 있습니다.

  • 시뮬레이션 기록에서 포괄적인 이벤트 기록을 제공합니다.

  • OpenGL 및 OpenSceneGraph와 ImGui 지원을 사용한 3D 시각화 API.

  • 비선형 프로그래밍 및 다목적 최적화와 같은 다양한 최적화 문제와 상호 작용하기 위한 확장 가능한 API.

충돌 감지

  • FCL, Bullet 및 ODE와 같은 다중 충돌 감지기를 지원합니다.

  • 기본 도형, 오목한 메시 및 확률적 복셀 그리드를 비롯한 다양한 충돌 모양을 지원합니다.

  • 최소 거리 계산을 지원합니다.

기구학

  • 다양한 종류의 조인트를 지원합니다.

  • 사용자 정의 가능한 관성 및 물성 속성을 가진 다양한 기본 및 임의의 바디 모양을 지원합니다.

  • 스켈레톤 모델링을 유연하게 지원하며, 스켈레톤 또는 스켈레톤 부분의 복제 및 재구성이 가능합니다.

  • 임의의 개체 및 좌표 프레임의 운동학 상태(변환, 위치, 속도 또는 가속도)에 대한 포괄적인 액세스를 제공합니다.

  • 다양한 자코비안 행렬 및 이들의 미분에 대한 포괄적인 액세스를 제공합니다.

  • 좌표 프레임의 유연한 변환을 지원합니다.

  • 완전히 모듈화된 역운동학 프레임워크를 제공합니다.

  • 플러그 앤 플레이 형태의 계층적 전신 역운동학 솔버를 제공합니다.

  • ikfast 지원을 갖춘 해석학적 역운동학 인터페이스를 제공합니다.

동역학

  • Lie 그룹 표현과 Featherstone 하이브리드 알고리즘을 사용하여 관절 동적 시스템에 대한 고성능을 제공합니다.

  • 일반화된 좌표를 사용하여 바디 노드 간의 관절을 정확하게 강제합니다.

  • 질량 행렬, 코리올리스 힘, 중력 및 기타 외부 및 내부 힘과 같은 동적 양과 이들의 미분에 대한 포괄적인 API를 제공합니다.

  • 강성 및 연성 바디 노드를 모두 지원합니다.

  • 관절 마찰과 하드 관절 한계를 가진 점성탄성 관절 동역학 모델링을 지원합니다.

  • 다양한 유형의 액추에이터를 지원합니다.

  • 암시적 LCP를 사용하여 비침투, 방향성 마찰 및 근사적인 쿨롱 마찰원 조건을 보장하여 접촉 및 충돌을 처리합니다.

  • 효율적인 성능을 위해 제한 조건을 세분화하는 ‘Island’ 기술을 사용합니다.

  • 다양한 카르테시안 제약 조건을 지원하며, 사용자 정의 가능한 제약 조건을 위한 확장 가능한 API를 제공합니다.

  • 여러 제약 해결기를 지원합니다: Lemke 방법, Dantzig 방법 및 PSG 방법.

  • 폐루프 구조의 동적 시스템을 지원합니다.