Gear task#

A GearTask can be used to create a relation between two degrees of freedom.

It can be used to simulate the behaviour of a gear (with a given ratio) or a timing belt, but also of any other situation where a degree of freedom is mimicking the behaviour of another one.

Creating the task#

The gear task can be created by calling add_gear_task() on the solver:

# Creating the gear task
gear_task = solver.add_gear_task()
gear_task.configure("gear", "hard")

Setting up the relations#

Relations can then be set by calling set_gear() on the task:

# Setting up the relations
gear_task.set_gear("joint1", "joint2", 2.0)

# After that, joint1 = 2 * joint2

The first two arguments are the names of the degrees of freedom that are linked together. The third argument is the ratio between the two degrees of freedom. You can also call add_gear() to make the relation multiple:

# Adding a gear relation
gear_task.set_gear("joint1", "joint2", 2.0)
gear_task.add_gear("joint1", "joint3", 3.0)

# After that, joint1 = 2 * joint2 + 3 * joint3

Example#

In the following example, the planar 2 DoF robot is being used with an additional gear task on its two joints with a relation of -1.0. One of the degrees of freedom is then moved with a joints task, leading to the other one moving in the opposite direction.

Planar 2 DoF (gear relation)

Example code: kinematics/planar_2dof_gear.py

In this other example, gears are coupled with more complex relations:

Differential

A differential gear system.

Example code: kinematics/differential.py