march_gain_scheduling

The march_gain_scheduling package is used to implement the gainscheduling control method. More about this control method can be found on the following page. We implemented the method in such a way that it changes the PID gains/values when a different type of gait is selected.

Principle

The Gainscheduling package uses the definition of gait_type as, for example, seen in this gait file. to change all the PID values for the relevant joints.

The following gait_types are supported:

  • sit_like

  • walk_like

  • stairs_like

These gait_types are set in the gait generator if required, otherwise the default walk_like is used.

The PID values are changed using a dynamic reconfigure client which alters the gains at /march/controller/trajectory/gains/ + joint_name. The node obtains the gait_type from the following topic: /march/gait/schedule/goal where GaitActionGoal type messages are published.

This node also offers the ability to change PID values linearly through the setting of a parameter during the launch of the node.

How to use

Gainscheduling is already set to run alongside the exoskeleton. You will most likely not need to launch this node manually. If you do want to launch it manually run the following lines in a terminal:

roslaunch march_gain_scheduling march_gain_scheduling.launch

you can change the used configuration (exoskeleton, test_joint_rotational, test_joint_linear) using the configuration argument. You can set or reset the use of the linearization using the linear argument and lastly you can set the slope with which the PID values are linearized using the slope argument.

Note

Always launch the gainscheduling node after starting the hardware interface. This prevents the node from searching for parameters and topics that are not yet alive.

How to tune

Tuning using gainscheduling is rather easy. You can freely change the PID values in the config folder. In this folder you’ll find a number of .yaml files which correspond to different configurations of the exoskeleton and different test/run modes.

Please tune the exoskeleton in the following order:

  • try the tuning on a testjoint with a relevant load

  • tune in airgait stand

  • tune whilst groundgaiting

  • tune with the pilot in the exo

Warning

Pay attention when tuning these values! Always double check if your values aren’t absurdly large and pay attention to the amount these values change when a different gait_type is used. Too large changes can cause instability in the system.

Warning

When using the linear argument (set to true by default) pay attention to the slope argument as well. large changes in gains need to be applied accordingly. Neither too slow (low slope value) for the gait to perform well, or too quick (high slope value) so that it won’t introduce instability into the system.