5

I'm trying to do cartesian control with a simulated PR2 robot in pybullet. In pybullet, the function calculateInverseKinematics(...) optionally takes joint lower limits, upper limits, joint ranges and rest poses in order to do null space control.

First of all, what practical benefit do you get using null space control instead of "regular" inverse kinematics?

Secondly, why do you need to specify joint ranges, isn't that fully determined by the lower and upper limits? What is the range of a continuous joint?

What exactly are rest poses? Is it just the initial pose before the robot starts to do a task?

user3925668
  • 51
  • 1
  • 3

1 Answers1

1

There are often many solutions to the Inverse Kinematics problem. Using the null space allows you to influence the IK solution, for example closer to a rest pose.

By default, the PyBullet IK doesn't use the limits from the URDF file, hence you can explicitly specify the desired ranges for the IK solution. A continuous joint has the full 360 degree range.

Check the PyBullet user manual and there are several examples how to use inverse kinematics with PyBullet:

https://github.com/bulletphysics/bullet3/tree/master/examples/pybullet/examples (just use git checkout https://github.com/bulletphysics/bullet3 and go to examples/pybullet/examples)

There is also an additional PyBullet IK example for the Sawyer robot here: https://github.com/erwincoumans/pybullet_robots

Erwin Coumans
  • 1,766
  • 14
  • 22
  • 4
    Could you elaborate a bit? How exactly does using the null space with a rest pose allow you to influence the IK solution? And what about the point he made of the limits and ranges being redundant? – cmoses Sep 19 '18 at 14:43