Giskard


Giskard is an open source motion planning and control framework, which uses constraint and optimization based task space control to generate trajectories for the whole body of mobile manipulators. It offers easy to use Python and ROS interfaces that facilitate the specification of constraints for the underlying optimization problem, which is solved for the instantaneous joint velocities of the robot.

Interactive Actions and/or Examples

Run Code Source Code

Description

Given a world model (i.e. the kinematic model of the robot (and the environment if available)) and a motion goal description, Giskard can produce a constraint and optimization-based task space controller tailored to the robot. This controller can either be used to control the robot in a closed-loop fashion, or to generate a trajectory by running the controller in a simple kinematic simulation and integrating the generated velocities.

Giskard has predefined motion goals, such as Cartesian pose goals, pointing (with a camera), and collision avoidance. These goals can be combined to define complex motions, such as “keeping the cup you are holding level while also driving to a target pose and avoiding collisions.” Additionally, new motion goals can be implemented by defining scalar-valued task functions using the controllable and observable variables of the world model.

In most cases, the controllable variables are the joint position and velocity of the robot. Giskard will turn these functions into a quadratic program. Solving this returns the minimal velocity, acceleration and jerk for every joint that satisfy all constraint for the current time step and a specified prediction horizon. The prediction horizon is used to ensure that the velocity of the current time step can always be regulated to zero during the specified time window.

Example Videos

Publications

See also