Skip to content

Commit

Permalink
Document various online signal smoothing algorithms (#1014)
Browse files Browse the repository at this point in the history
* Document varios online signal smoothing algorithms

* Small improvements, link to Ruckig

* Anybody can write a plugin
  • Loading branch information
AndyZe authored Jan 27, 2025
1 parent 4ed98c5 commit 82e1178
Showing 1 changed file with 25 additions and 0 deletions.
25 changes: 25 additions & 0 deletions doc/examples/realtime_servo/realtime_servo_tutorial.rst
Original file line number Diff line number Diff line change
Expand Up @@ -273,3 +273,28 @@ An example of using the pose commands in the context of servoing to open a door
.. code-block:: bash
ros2 launch moveit2_tutorials pose_tracking_tutorial.launch.py
Signal Smoothing
----------------

Reviewing :moveit_codedir:`servo_parameters.yaml <moveit_ros/moveit_servo/config/servo_parameters.yaml>`, notice the parameter `smoothing_filter_plugin_name`. This helps smooth out any irregularities in joint commands to the robot, for example if there is an inconsistent period between commands. It can greatly reduce wear-and-tear on the robot's actuators and, in fact, many robots will not move unless incoming commands are sufficiently smooth. These are plugins so any user can write their own.

The current options are:

`online_signal_smoothing::ButterworthFilterPlugin`: This is a very simple low-pass filter, slightly more advanced than a moving average.

Benefits: computationally efficient, never overshoots the command in joint space.

Drawbacks: may deviate slightly from "straight line motion" in Cartesian space. Does not explicitly limit actuator jerk or acceleration.

`online_signal_smoothing::AccelerationLimitedPlugin`: This is an optimization-based algorithm that obeys the robot's acceleration limits (if feasible). Read more at https://github.com/moveit/moveit2/pull/2651

Benefits: Maintains the desired direction of motion as long as it's kinematically feasible to do so. Can be useful for "sharp corners." Ensures robot joint acceleration limits are not violated.

Drawbacks: Does not explicitly limit actuator jerk. Still can deviate from the intended direction of motion if the incoming command is not possible. May overshoot.

`online_signal_smoothing::RuckigFilterPlugin`: This uses the well-known `Ruckig library <https://github.com/pantor/ruckig>`_ to ensure robot motions always obey joint and acceleration limits. Read more at https://github.com/moveit/moveit2/pull/2956

Benefits: The smoothest option. Required for certain industrial robots.

Drawbacks: Sometimes deviates from the intended direction of motion. For example, tends to make a swirling motion at sharp corners. To prevent the swirling motion requires extra logic on the incoming commands, outside of MoveIt Servo. May overshoot.

0 comments on commit 82e1178

Please sign in to comment.