A C++ library for kinematics and dynamics of articulated rigid body systems.

Related tags

Miscellaneous gear
Overview

gear

Geometric Engine for Articulated Rigid-body simulation

GEAR is a C++ library for kinematics and dynamics of articulated rigid body systems. It uses efficient algorithms based on Lie group and screw theory to solve the following problems:

  • Forward dynamics for calculating the resulting joint accelerations when the known joint torques or forces are applied to the mechanical system.
  • Inverse dynamics for calculating the joint torques that are necessary to make the system follow prescribed joint accelerations at the current state (position and velocity).
  • Hybrid dynamics for calculating the torques for prescribed joints, and the accelerations for unprescribed joints where 'prescribed' means joint acceleration is prescribed and 'unprescribed' (or 'torque-specified') means joint torque is known or given. A joint can be either 'prescribed' or 'unprescribed'. Hybrid dynamics is a generalization of the forward and inverse dynamics, i.e., they can be regarded as the extreme cases of hybrid dynamics when all of the joints are 'unprescribed' and when all of the joints are 'prescribed' respectively.
  • Analytical derivatives of the forward/inverse/hybrid dynamics with respect to an arbitrary system parameter.

GEAR uses a joint coordinate system to describe the degree of freedom of an articulated rigid body system. Thus, the joint constraints are inherently considered in the algorithms without having to consider them separately. Closed joint loops are automatically detected and handled as constraints. Additional constraints can also be added to the system.

How to compile

CMake and a C++ compiler are necessary to build GEAR.

  • On Linux, do make in the terminal to compile the library under gear/build_release.
  • On Windows, execute runcmake_win.bat to create a Visual Studio solution file under gear/build.
  • On Mac, execute runcmake_xcode to create an XCode project file under gear/build_xcode. Alternatively, you can do make in the terminal to compile using gcc.

How to use

See gear/examples for how to create your own simulation project.

You might also like...
A CUDA-accelerated cloth simulation engine based on Extended Position Based Dynamics (XPBD).
A CUDA-accelerated cloth simulation engine based on Extended Position Based Dynamics (XPBD).

Velvet Velvet is a CUDA-accelerated cloth simulation engine based on Extended Position Based Dynamics (XPBD). Why another cloth simulator? There are a

LightAIMD - A lightweight ab initio molecular dynamics simulation program

LightAIMD - Ubuntu 20.04 Build LightAIMD is a lightweight AIMD (ab initio molecular dynamics) simulation program for simulating aperiodic molecular sy

CS:APP is an excellent material for learning computer systems and systems programming

CS:APP is an excellent material for learning computer systems and systems programming. However, it is inconvenient to use a virtual machine for self-learners. In this repo, I build a Docker image with most pre-requistes installed and attached all lab materials in it.

F Graphics Library (FGL) is a small graphics C++ portable library for LCD displays on embedded systems

F Graphics Library (FGL) Full documentation: fgl.docsforge.com (By Filipe Chagas) F Graphics Library is a C++ library that I created for use in embedd

SafetyHook - simple procedure hooking library for Windows x86 and x86_64 systems

SafetyHook SafetyHook is simple procedure hooking library for Windows x86 and x86_64 systems. It aims to make runtime procedure hooking as safe as pos

Hobbyist Operating System targeting x86_64 systems. Includes userspace, Virtual File System, An InitFS (tarfs), Lua port, easy porting, a decent LibC and LibM, and a shell that supports: piping, file redirection, and more.
Hobbyist Operating System targeting x86_64 systems. Includes userspace, Virtual File System, An InitFS (tarfs), Lua port, easy porting, a decent LibC and LibM, and a shell that supports: piping, file redirection, and more.

SynnixOS Epic Hobby OS targeting x86_64 CPUs, it includes some hacked together functionality for most essential OSs although, with interactivity via Q

Newlib for Xuantie RISC-V CPU, a lightweight C library for embedded systems.

README for GNU development tools This directory contains various GNU compilers, assemblers, linkers, debuggers, etc., plus their support routines, d

musl - an implementation of the standard library for Linux-based systems

musl libc musl, pronounced like the word "mussel", is an MIT-licensed implementation of the standard C library targetting the Linux syscall API, suit

Utility Library for Imaging Systems
Utility Library for Imaging Systems

Overview ULIS is a rendering library written in C++. It is aimed at software rasterization and digital image processing. Official Github Repository Pr

Simple, differentiable rigid body dynamics

Quark Quark is intended to be a simple differentiable rigid body dynamics library. For the time being it is starting out as a ground-up rewrite of RBD

Pedro Morais 4 Nov 23, 2021
Artificial Intelligence for Kinematics, Dynamics, and Optimization

AIKIDO - AI for KIDO ⚠️ Warning: AIKIDO is under heavy development. These instructions are primarily for reference by the developers. AIKIDO is a C++

Personal Robotics Laboratory 190 Nov 21, 2022
[WIP] Differentiable Simulation of Soft Multi-body Systems (NeurIPS 2021)

Differentiable Simulation of Soft Multi-body Systems Yi-Ling Qiao, Junbang Liang, Vladlen Koltun, Ming C. Lin [Paper] [Code] Updates The C++ backend s

YilingQiao 24 Oct 9, 2022
Code for Stepper Motors and Robot Kinematics YouTube course

Code for YouTube course: Stepper Motors and Robot Kinematics: Theory and Practice on STM32 This repo contains the code for my YouTube course Stepper M

null 4 Jan 6, 2022
Create Particle Distribution for N-Body and SPH simulation.

ParticleDistributor Create Particle Distribution(s) for N-Body (and prospectively SPH) simulation. Distributors Currently supported distributors: Plum

Michael Staneker 1 Dec 1, 2021
VID-Fusion: Robust Visual-Inertial-Dynamics Odometry for Accurate External Force Estimation

VID-Fusion VID-Fusion: Robust Visual-Inertial-Dynamics Odometry for Accurate External Force Estimation Authors: Ziming Ding , Tiankai Yang, Kunyi Zhan

ZJU FAST Lab 86 Nov 18, 2022
OpenFOAM is a free, open source computational fluid dynamics (CFD) software package

acousticStreamingFoam About OpenFOAM OpenFOAM is a free, open source computational fluid dynamics (CFD) software package released by the OpenFOAM Foun

Bruno 3 Oct 28, 2022
Wolf_descriptions - WoLF: Whole-body Locomotion Framework for quadruped robots

WoLF: Whole-body Locomotion Framework for quadruped robots This repo contains a collection of different robots and sensors used in WoLF. Setup See the

Gennaro Raiola 7 Oct 6, 2022
Event-driven molecular dynamics simulations for hard spheres

Event-driven molecular dynamics code for hard spheres This is an event-driven molecular dynamics (EDMD) code for hard spheres. It uses neighbor lists

null 11 Nov 14, 2022
WoLF: Whole-body Locomotion Framework for quadruped robots

WoLF: Whole-body Locomotion Framework for quadruped robots This package contains the navigation stack to be used with WoLF. Mantainers: Federico Rollo

Gennaro Raiola 13 Nov 15, 2022