Joint velocities over the velocity limit

I am currently using DART 6.7 for robotic manipulation and I am trying to compute the time it took for the arm to reach a certain pose. I am recording the velocities of the joints at each timestep running: skeleton->getVelocities() and I obtained velocities higher than the velocity limit for the joints.

The current velocity limit for a joint, I am currently interested on, is 0.43633, I set acceleration limits of ±0.01 and I am using a timestep of 0.001. I am using a PD controller with the formula P_gain * (target_position - current_position) + D_gain * (0 - current_velocity) for the motion commands.

Is it normal/expected for the velocity obtained with getVelocities() to be over the velocity limit?. Am I missing some condition to enforce those limits?.

Thank you for the report. Joint velocity wasn’t being considered as a constraint in the forward dynamics simulation, but https://github.com/dartsim/dart/pull/1407 should address it.

Thank you for your fast reply and changes to overcome this problem. I have some questions about how to address these changes:

  1. Would it work in DART 6.7? I am currently using a wrapper named (robot_dart)[https://github.com/resibots/robot_dart] and it uses that version.
  2. How should I collect the PR?. Do I just merge into my current DART folder? Or Do I need to re-run the cmake to recompile the library?.

Adding more information to my previous comment.

I pulled the velocities_limit branch and compiled the library getting dart 6.10.

When trying to compile some of my programs that worked on 6.7, they did compiled successfully but the compiled program did not run.

It said ‘error while loading shared libraries: libdart.so.6.10: cannot open shared object file: No such file or directory’. I checked and libdart.so.6.10 exists. I also checked the dependencies for that library and it said that it could not found libdart-external-odelcpsolver.so.6.10, which was also there.

For now, I got back to 6.7 as it is the one that currently works for my implementations, but it would be really helpful to get the joint velocities constraints working on it somehow. I was considering in just applying the same changes you did. Do you think this would work?.

Unfortunately the new features like supporting joint limit constraint should be added to a new minor or major release, but not the already released version. You can manually apply the changes in the PR to DART 6.7 if preferred, but I would recommend to try fix the linking error with DART 6.10.

I’d firstly try clean build something like:

  • Remove installed DART 6.7 from your system
  • Install DART from velocities_limit branch
  • Remove the CMake build directory of your project
  • Rebuild your project

I hope this helps resolving the linking issue.

Thank you for the reply. I followed your steps and it worked properly!.

1 Like