A MAVSDK-based implementation of a multirotor skywriting mode that:
- Establishes connection to PX4 system
- Takes a string argument of the form 'WRITE THIS' and converts it to waypoints and trajectories
- Executes mission with an optional trigger for light, laser, smoke element, etc.
*MAVSDK libraries must be installed on the system, and you must have PX4 locally to run SITL simulation
cd /{PROJECT DIR}
mkdir build
cd build
cmake ..
make
- Run JMavSim
cd .../src/Firmware/ (wherever you have PX4 source installed)
make px4_sitl_default jmavsim
- Run Offboard Program
./offboard_skywriting udp://:14540 'ABCDEFGHIJKLM
NOPQRSTUVWXYZ'
Output (retrieved from flight log):
This command will initialize vehicle takeoff sequence (if not already airborne) and will traverse the alphabet in two lines. *Program start quirk will reject first offboard call in simulation -- simply run the program again and the sequence will start.
- Implement better PID for trajectory control
- Add flags/modifiers for skywriting setting #defines in main
- Add safety protocols
- Create GTests for each library
- Add external instrument (LED, smoke machine) controls (refer to https://ardupilot.org/copter/docs/common-external-leds.html -- even though this reference is for ardupilot, should be a programming option for PX4)
- add manifold mapping to create a surface to write on in the sky
- parameterize things like letter max speeds, intensity of letter (i.e., density of smoke plume, or the brightness of leds)
- for smoke, incorporate logic to have outlet negate vehicle velocity (i.e., point in reverse direction of flight and match the traversal speed to have it stay stagnant in air)
- add geofencing for safety