Your browser was unable to load all of the resources. They may have been blocked by your firewall, proxy or browser configuration.
Press Ctrl+F5 or Ctrl+Shift+R to have your browser try again.

Avoid inverse kinematics and only simulate end-effector #29



I am using Klampt to simulate an environment for a Reinforcement Learning agent. RL requires quite a lot of iterations before it converges to a solution. Since every iteration the environment has to be simulated, I am trying to increase the simulation speed as much as possible. One of the major computational bottlenecks with the simulator is the Inverse Kinematics solver (almost one third of the computation time). Therefore, I was thinking of only simulating the position of the end-effector of my robot, and not simulating any of the parent links. That way I can avoid the IK solver, and only simulate the kinematics of the end-effector in Cartesian space.

My question is whether it is possible to do that, to only simulate the kinematics of the end-effector and ignoring all the parent links? So to simulate a kind of 'floating' robot end-effector, while keeping the physics and contact mechanics of the end-effector and rigid objects. All positions of the end-effector are always physically possible, so the collision behavior of the parent links can be completely ignored.

Thanks a lot for the help.

PS Great simulation toolbox! :)

  • replies 1
  • views 2.1K
  • likes 0

Yes, it is possible. If you create a robot model file (URDF or ROB) that just contains the gripper as a fixed object, you can use the utility klampt.model.create.moving_base_robot.make function to create a floating-base gripper model. Its first 6 DOF are x,y,z, roll, pitch, yaw and the rest will be your gripper DOFs.

These first 6 DOFs will be driven by a PID emulator, so you may want to tune the default PID gains if you have a particularly heavy gripper or objects to lift. There are some other utilities for driving around such a robot in the moving_base_robot module, please take a look.