Wheel task#
The WheelTask
can be used to create a constraint on
a joint that is a wheel of a given radius acting on a given surface (by default, the ground of the world).
Being a wheel means that the instantaneous contact point can’t slide in the wheel direction. A wheel can be omnidirectional (in that case, the contact point can slide laterally) or not (in that case, the contact point can’t slide laterally).
Creating the task#
Creating a wheel task is done by calling the add_wheel_task()
method
on the solver:
# Creating a wheel task for the joint wheel1, with a radius of 0.04m, and that is omnidirectional
wheel1_task = solver.add_wheel_task("wheel1", 0.04, True)
wheel1_task.configure("wheel1", "hard")
The arguments of the add_wheel_task()
method are the
name of the joint, the radius of the wheel, and a boolean indicating if the wheel is omnidirectional or not.
Updating the task#
The following parameters can be updated on the wheel task:
# Updating the omniwheel status of the wheel
wheel1_task.omniwheel = False
# Updating the radius of the wheel
wheel1_task.radius = 0.05
# Updating the surface on which the wheel is acting
wheel1_task.T_world_surface = tf.translation_matrix([0.0, 0.0, 0.5])
Example#
Here is an example of an omnidirectional robot wheel:
Omniwheel robot