Description: A trajectory-smoothing library
Developed by Andy Zelenak at PickNik Consulting
TODO(andyze): fix Travis badge:
TrackJoint takes an input state consisting of (position, velocity, acceleration) and a target state. It fits a spline from input to target state, then smooths the spline until each waypoint obeys the given (velocity, acceleration, and jerk) kinematic limits. In other words, it is great at generating a trajectory from State A to State B.
TrackJoint also has a streaming mode which is intended for the smoothing of realtime commands such as from a joystick or visual servoing.
TrackJoint is not intended to generate a trajectory passing through multiple vias or waypoints.
-
Clone this package into a colcon workspace
-
colcon build
ros2 run trackjoint simple_example
(for example)
Note: this package has not been released yet
colc_build_test
colc_test_pkg trackjoint
Install pre-commit: pre-commit install
It will automatically format the repo whenever you make a commit.
Usually a robot manufacturer provides joint velocity limits. It can be difficult to set joint acceleration or jerk limits when the manufacturer does not provide them. Here are some hints to help choose reasonable values:
-
The jerk limit is usually greater than the acceleration limit, which is greater than the velocity limit: jerk_limit > acceleration_limit > velocity_limit.
-
The jerk limit should be less than (acceleration_limit / controller_timestep). Otherwise, acceleration could jump to maximum in one timestep and there would be no reason for a jerk limit.
-
For tuning the acceleration limit, think about how long it should take the robot to accelerate to maximum velocity in your application. For example, if it takes approximately 0.5 seconds to accelerate to full speed, an estimate is: acceleration_limit = velocity_limit / 0.5.
The following libraries are used in TrackJoint: