While MAVProxy serves as a fully-functional cross-platform portable ground control station software, the system lacks the presence of a Graphical User Interface making it more difficult to use as compared to other GCS like Mission Planner, QGroundControl etc. Also, the GCS can be improved by the addition of some modules to replace the commonly used cumbersome terminal commands. A major deliverable of this project was the addition of a UI based parameter handling module which is at par with the other commonly used GCS.
Parameter Editor Module
The GUI based parameter editor module added to MAVProxy extends the features of Param module in a user friendly manner.
This GUI provides a variety of features which were earlier offered by the command line param module.
- Reset Parameters to Default asks for permission before resetting parameters
- Writing and Reading Parameters from File
- The incremental search and categorical search helps in quick access of intended parameters. The search considers not only the parameter name but its description as well providing more flexibility.
- Dropdown list, checkbox and incremental widgets makes parameter setting experience more user friendly. Changing the parameter values highlights respective cell background in green colour providing a clear indication.
The current flight mode channel can be observed by the highlighted parameter name.
Parameter status is displayed at all times to give a clear indication fetch process over slow telemetry link. The module can be launched using Parameter menu in console module or using command line (module load paramedit).
Mission Editor Module
Mission editor module has been around for a long time and is widely used for creating waypoint plans. Addition of distance and gradient fields to this module is expected to make it more user-friendly specially for ArduPlane users. The module can handle different frames quite effectively.
Work in Progress
Dynamic addition of new fields for displaying data in console module.
The following Pull Requests contain the code contributed during GSOC 2019 for the project titled MAVProxy GUI and module development:
- Misseditor Distance and Gradient
- Parameter Editor
- Console Dynamic Field Display
- Added Parameter menu to console
- Highlighting current Flight Mode
- Parameditor: Categorical search of parameters
- Paramstatus: Display current status of received parameters to help with param fetch
One of the most difficult challenges faced during this process was creating cross-platform support for the modules which has not been solved completely. The false warnings being generated by GTK on different versions of Ubuntu took a major chunk of the timeline but was finally solved.
The module works well on Ubuntu 14.04, Ubuntu 16.04 and Ubuntu 18.04 using both Python2 and Python3. The support for Windows still requires some work while more testing is required on MACOS.
Overall, the experience of GSOC has been full of learning for me. This work would not have been possible without the mentorship of @tridge and @peterbarker, thanks for all the guidance and help they provided. I hope this work will be of use to the community.