Ask Your Question

Trajectory interpolation for ROS-I robot driver.

asked 2015-07-29 10:47:40 -0500

CTieben gravatar image

updated 2015-07-31 03:37:58 -0500

gvdhoorn gravatar image

Hi there, I have develop a driver for the KUKA LWR 4+ by use of the FRI Library. The driver designed like the ros-i driver spec and so it works also with MoveIt!

If I plan a trajectory with MoveIt I will get a trajectory_msgs::JointTrajectory message with the waypoints. But how to interpolate correctly between the points?

I have a internal cycle time of 1ms and need to sample the trajectory down to this constant interval. Do I really need to build up splines based on the waypoints or can I tell MoveIt to sample the trajectory with 1ms?

edit retag flag offensive close merge delete


There is a ROS Industrial Trajectory Filter for exactly this problem. It a ROS Type Wrapper for the KDL Velocity Profile Spline to sample it down to n-parts or duration.

CTieben gravatar image CTieben  ( 2015-08-14 08:09:17 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2015-07-31 03:25:52 -0500

gvdhoorn gravatar image

updated 2015-07-31 03:32:21 -0500

Do I really need to build up splines based on the waypoints or can I tell MoveIt to sample the trajectory with 1ms?

If I recall correctly, MoveIt sort-of assumes a lower-level controller that accepts JointTrajectory messages exists, and that that lower-level controller will do all the 'heavy lifting' to execute the trajectory. In the case of the PR2 that is the whole real-time capable pr2_controllers infrastructure. That is not really usable with other robots though.

You might be able to re-use the controllers in the ros_control package. One of the supported interfaces is a JointTrajectoryAction server, which internally runs PID (or custom, more advanced) controllers to take joints through the trajectory points it receives. The ros_control nodes are capable of running in real-time as well. Be sure to watch the presentation Adolfo gave on ROSCon14, it provides a much more in-depth picture of what is going on then the documentation currently does.

Note that ros_control by default does not expose a ROS-Industrial compatible motion interface, but that can be solved by remapping a few topics.

Edit: you might also be interested in the ongoing work in the kuka_experimental repository of the ROS-Industrial Github organisation, and the ros-sig-kuka mailing list. The kuka_experimental repository has an open PR for a ros_control based driver using RSI. Perhaps you can use it as an example of how to implement a similar system for FRI.

Contacting either the ROS-Industrial mailing list and / or the ros-sig-kuka would be a good idea anyway: there are a number of projects currently underway (CentroEPiaggio/kuka-lwr being one of them), and it would be nice to avoid redoing existing work.

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools



Asked: 2015-07-29 10:47:40 -0500

Seen: 1,704 times

Last updated: Jul 31 '15