- CatPilot >
- Quick graphical user interfaces creation
Quick graphical user interfaces creation¶
C-ATOM and CatPilot ecosystem has Pyhton extension above ESWB middlware allowing forwarding on-board ESWB to sync with a ground ESWB bus, and then, subscribe widgets on ESWB topics update in the declarative form.
Screenshot at the bottom is the result from this code:
#!/usr/bin/env python3
import sys
sys.path.append("./catpilot/c-atom/eswb/pytools")
from eswbmon import *
mon_bus_name = 'monitor'
telemetry_dir_name = 'telemetry'
args_parser = ArgParser()
args = args_parser.args
mon = Monitor(monitor_bus_name=mon_bus_name, argv=sys.argv)
mon.mkdir(telemetry_dir_name)
topics_root = mon_bus_name + '/' + telemetry_dir_name
mon.bridge_sdtl(path=args.serdev, baudrate=args.serbaud, bridge_to='telemetry')
imu_roll_pitch = ewChart([DataSourceEswbTopic('roll', path=f'{topics_root}/nav/nav/roll', mult=57.32),
DataSourceEswbTopic('pitch', path=f'{topics_root}/nav/nav/pitch', mult=57.32)],
data_range=(-60, +60))
imu_omega = ewChart([DataSourceEswbTopic('omega_x', path=f'{topics_root}/nav/nav/omega/x', mult=57.32),
DataSourceEswbTopic('omega_y', path=f'{topics_root}/nav/nav/omega/y', mult=57.32),
DataSourceEswbTopic('omega_z', path=f'{topics_root}/nav/nav/omega/z', mult=57.32)],
data_range=(-60, +60))
imu_a = ewChart([DataSourceEswbTopic('a_x', path=f'{topics_root}/nav/nav/a/x'),
DataSourceEswbTopic('a_y', path=f'{topics_root}/nav/nav/a/y'),
DataSourceEswbTopic('a_z', path=f'{topics_root}/nav/nav/a/z')],
data_range=(-15, +15))
hk_sine = ewChart([DataSourceEswbTopic('sine', path=f'{topics_root}/hk/sine')],
data_range=(-1, +1))
manc_xy = ewCursor([(DataSourceEswbTopic('x', path=f'{topics_root}/cont/man_cont/direct/x'),
DataSourceEswbTopic('y', path=f'{topics_root}/cont/man_cont/direct/y'))])
mon.add_widget(ewGroup([imu_roll_pitch, ]))
mon.add_widget(ewGroup([manc_xy, imu_omega, imu_a, hk_sine]))
mon.add_widget(mon.get_stat_widget())
mon.run()

This GUI might be launched from UAS-CatPilot directory by a command:
python3 gui.py --serdev /dev/ttyUSB0 --serbaud 57600