rosflight / rosflight_ros_pkgs

ROS packages for the ROSflight autopilot
http://rosflight.org/
BSD 3-Clause "New" or "Revised" License
90 stars 60 forks source link

RQT Parameter Tuning Plugin #172

Closed bsutherland333 closed 4 months ago

bsutherland333 commented 4 months ago

This pull request implements a dynamically populated parameter tuning GUI for RQT. The idea is that ground stations in ROSflight-based autonomy stacks (like ROSplane and ROScopter) will be able to easily populate a parameter tuning portion of their GCS using a configuration file unique to that autonomy stack, with no other unique code required.

Screenshot from 2024-07-10 14-57-08

The GUI uses a table-style layout, since tables work well with dynamic population. There is a box with the parameter name, the value (which is edited with the box directly), a description that is defined in the config file, and two buttons. One button will reset the specific parameter to the previous value, keeping track of all changes made from the original value. There is also another button that will reset the parameter to the original value, with the original value being that which was on the ROS network when the GUI was launched. The values found in the buttons describe specifically what the parameter will be set to.

Parameters are organized into groups (so parameter related to certain controllers can be viewed together), and groups are selected with a dropdown menu.

There is also a refresh button which updates the displayed values with the ROS network (in case of external changes) and a save to file button. The save to file button will write all parameters found in the GUI to a file if the file is new, otherwise it will update an existing file to include the values found in the GUI without altering values not found in the GUI. This does re-format the file though, unfortunately.