Ask Your Question

1D motion profile generation?

asked 2015-07-31 11:31:37 -0600

lucasw gravatar image

updated 2020-11-21 11:59:00 -0600

Is there a ros package to generate position s-curves / trapezoidal velocity profiles for motion control? I'd like to be able to specify velocity and acceleration limits, then do a velocity or a position command and get a constant acceleration ramp up to constant target velocity, then ramp down at the end. (in other words, not a PID controller, though I may have one of my own running in a higher frequency inner loop to track the commanded velocity)

Maybe there is a lightweight non-ROS python package that can do it?

edit retag flag offensive close merge delete

Comments asks for implementation details, though I would like existing software.

lucasw gravatar image lucasw  ( 2015-07-31 12:08:14 -0600 )edit

Trying out to see if there is an answer there.

lucasw gravatar image lucasw  ( 2017-10-07 12:32:25 -0600 )edit

Results from robotics stackexchange gatekeepers:

This post is hidden. It was automatically deleted 3 years ago by Community

Definitely the wrong venue, robotics and software aren't to be mixed there:

questions asking for code are off-topic

Also a refutation of the whole concept of open source software, and indirectly ROS itself (not surprising given above I suppose):

it's quicker to learn the math and code from scratch 100 lines of code than to dig through a bunch of libraries looking at implementations

And stack exchanges:

the problem appears to be 'Can you guys Google this for me, because I didn't find anything'
lucasw gravatar image lucasw  ( 2020-11-21 11:48:23 -0600 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2019-09-07 08:42:37 -0600

lucasw gravatar image

This is the closest I've found so far, but it relies on Matlab/Simulink exports to run:

opt_control generates time-optimal second- and third order trajectories from arbitrary start- to arbitrary target states. The trajectories respect per-axis constraints on minimum and maximum velocity, acceleration and jerk. Individual axes can be coupled by synchronizing the total time of each trajectory. Since the method is very fast (<<1ms per axis per trajectory), it can be used in closed loop even for fast systems. With the ability to predict the target state, trajectories end in an optimal interception point when the waypoint is non-stationary. The method has been successfully used as model predictive controller on different micro aerial vehicles, in different research projects and robotic competitions.

edit flag offensive delete link more



opt_control is interesting, but has some drawbacks (the matlab thing, which you already note, but there are also some assumptions about the use-case and the fact that it is mostly focused on usage with drones and similar kinematics).

Another interesting one is hungpham2511/toppra:

TOPP-RA is a library for computing the time-optimal path parametrization for robots subject to kinematic and dynamic constraints.

If you have no jerk-limitations then this library is actually pretty OK. There's even a ROS wrapper available here.

And it's all Python.

gvdhoorn gravatar image gvdhoorn  ( 2019-09-07 09:11:20 -0600 )edit

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-31 11:31:37 -0600

Seen: 1,912 times

Last updated: Sep 07 '19