1D motion profile generation?
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?
Asked by lucasw on 2015-07-31 11:31:37 UTC
Answers
This is the closest I've found so far, but it relies on Matlab/Simulink exports to run: https://github.com/AIS-Bonn/opt_control
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.
Asked by lucasw on 2019-09-07 08:42:37 UTC
Comments
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.
Asked by gvdhoorn on 2019-09-07 09:11:20 UTC
Comments
http://answers.ros.org/question/41616/how-do-i-move-with-linear-velocity-for-an-exact-distance/ asks for implementation details, though I would like existing software.
Asked by lucasw on 2015-07-31 12:08:14 UTC
Trying out https://robotics.stackexchange.com/questions/14392/software-to-generate-linear-motion-profile to see if there is an answer there.
Asked by lucasw on 2017-10-07 12:32:25 UTC
Results from robotics stackexchange gatekeepers:
Definitely the wrong venue, robotics and software aren't to be mixed there:
Also a refutation of the whole concept of open source software, and indirectly ROS itself (not surprising given above I suppose):
And stack exchanges:
Asked by lucasw on 2020-11-21 12:48:23 UTC