250 lines
9.1 KiB
Markdown
250 lines
9.1 KiB
Markdown
# General
|
|
## Development Process
|
|
- Docker Based Development
|
|
- Development Containers
|
|
Build docker container for all engineers to work on the exact same code
|
|
- include simulation with gazebo, px4, and always the same ROS version.
|
|
- very easy to setup for new engineers.
|
|
- Testing Containers:
|
|
- SITL testing container
|
|
- runs on gitlab (does not contain visual simulation)
|
|
- does not contain development tools nor build tools
|
|
- HITL testing container
|
|
- use a real drone to do HITL simulation testing
|
|
- uses our real hardware
|
|
- Automated Testing
|
|
- Software
|
|
- Have unit tests for everything
|
|
- Have integration tests that run in docker simulated environment
|
|
- Have hooks that use gitlab to run the tests
|
|
- Improve on model used in simulation (control engineer)
|
|
- connect unity with gazebo
|
|
- Hardware
|
|
- Future: have a space where drone can actually perform automated tests (hook takeoff)
|
|
- Drone Software version managing
|
|
- One overall version
|
|
- contains subversions for all different systems, including hardware and software.
|
|
- ESC firmware & configuration file
|
|
- OSD-software version & confiugration
|
|
- What exact software version of ROS2 do we use?
|
|
- PX4-software version & configuration
|
|
|
|
# Drone
|
|
## Low Level
|
|
### Sensors
|
|
- Pitot Tube (PX4)
|
|
- probably fast (plug and play)
|
|
- most work is integrating it into our flight stack in px4 --> control engineer
|
|
- ublox driver (ROS)
|
|
- Add unit tests
|
|
- Add meta data publishing (how is it usually done in ros)
|
|
- Add service to get health status message
|
|
- Add configuration parameters
|
|
- make sure correct firmware is on gnss module
|
|
- track antenna: does it work properly?
|
|
- LTE Driver (ROS)
|
|
- improve driver to have access to meta data (to be sure about connectivity)
|
|
- Make sure that VPN works flawlessly
|
|
- Or another way to work with the ground station server
|
|
- make sure correct firmware is on module
|
|
- track antenna: does it work properly?
|
|
- SIM management
|
|
- Temperature and Humidity Driver (ROS)
|
|
- share sensor message at certain frequency
|
|
- have configuration parameters
|
|
- BMS Driver (ROS)
|
|
- share raw bms sensor data to the ROS message bus
|
|
- have configuration parameters
|
|
- have services for recalibration, changing charging settings, and others
|
|
- Parachute system
|
|
- PX4 Heartbeat signal & driver (PX4)
|
|
- ROS action to trigger parachute (can also be done remotely)
|
|
- Optical flow
|
|
- make sure that it is well calibrated
|
|
|
|
# Other Hardware
|
|
- ESC:
|
|
- make sure correct firmware is running
|
|
- observe temperature and current
|
|
- feedback message to ROS system
|
|
- parachute board
|
|
- observe parachute state (GPIO available)
|
|
- share with ROS system
|
|
- share with Ground control station
|
|
- at what location and what time has the parachute been triggered?
|
|
- has the deployment been successful?
|
|
- Magnetic sensor board
|
|
- Add calibration routine --> we want to very easily
|
|
- Payload
|
|
- Payload manager:
|
|
- detect payload
|
|
- estimate properties of payload (weight, center of mass, etc.)
|
|
- share properties to control system and battery manager
|
|
- Payload ejection action (ROS2)
|
|
- payload reception action (ROS2)
|
|
- LED system
|
|
- LED control (ROS2 message to turn on / off)
|
|
- have a smart camera control instance to *synchronize* the LEDs with the caputring of the camera system
|
|
- Driver for different LEDs
|
|
- IR, White via I2C
|
|
- Armpit LEDs
|
|
- User Feedback LED
|
|
- user feedback LED
|
|
- different color / blink codes
|
|
- write different actions to request a sequence to be played
|
|
- Buzzer
|
|
- parachute auto buzzer
|
|
- user feedback buzzer
|
|
### Control
|
|
- integrate all flaps
|
|
- integrate state of payloadbay into model
|
|
- make a detailed and well tested model of drone that can be used in the simulation to accelerate development
|
|
- integrate variable pitch into the control
|
|
- actuators
|
|
- 2 virt swash
|
|
- 2 variable pitch
|
|
- 4 flaps
|
|
- payload bay
|
|
- payload ejector
|
|
- Sensors
|
|
- pitot tube
|
|
- optical flow
|
|
- move to px4 v1.14 --> means control allocation instead of mixers
|
|
- allows to more effectively use all actuators simultaneously
|
|
- every actuator is defined by forces that it can deliver and thus this system manages a single actuator failure much better than the mixer system
|
|
- also allows much better ros2 integration with px4
|
|
- Achieve <10cm hover accuracy
|
|
- Achieve efficient cruise flight
|
|
- Achieve reliable transition in both directions
|
|
- Integrate new S-Rod
|
|
- Integrate new single blade propeller
|
|
|
|
### Other Low Level
|
|
- remote ID implementation
|
|
|
|
## High Level
|
|
### OSD-Autopilot
|
|
- Settings Manager
|
|
- Have one common place to change all settings in the entire system
|
|
- change PX4 settings through the settings manager
|
|
- use setting files that define all settings
|
|
- Battery estimator
|
|
- use raw data from BMS and mission data from groundstation/px4
|
|
- how much flight time is left?
|
|
- at hover
|
|
- at cruise
|
|
- empty vs full
|
|
-
|
|
- can I get to the homeport safely?
|
|
- how much charging do we expect at the next restaurant?
|
|
- needs communication with groundstation and high level planning
|
|
- Navigation library
|
|
- A* planning algorithm (copy Jerrys implementation)
|
|
- unit tests
|
|
- integration tests
|
|
- Well tested controller-plugin
|
|
- Enables us to do trajectory tracking well
|
|
- probably offload to px4
|
|
- thus calculate a trajectory (includes derivatives like velocity, acceleration jerk and time based points) from a path that we know is feasible for our drone
|
|
- Costmap3D / Fruxelgrid
|
|
- make sure obstacles are well defined in 3d space includi
|
|
- write proper test functions
|
|
- make API to get information about the world
|
|
- Add some sort of memory (buffer? derivative?)
|
|
- Is an object moving towards me?
|
|
- Basically we should be able to detect if someone throws a stone at the drone and avoid the stone.
|
|
- Get inspired by StuffMadeHere trajectory estimation (basketball video or others) to estimate a trajectory of an approaching object
|
|
- Write more complex behaviors
|
|
- Hook landing
|
|
- Hook takeoff
|
|
- Flat surface Delivery
|
|
- Ask for pilot assistance
|
|
- Climate Manager
|
|
- Data sources
|
|
- use raw data from temperature sensors
|
|
- use camera data (through future FruxelGrid updates)
|
|
- control heating wires in propeller blades and leading edge of the wing
|
|
- Log Manager
|
|
- Improve Logging: use C++ instead of python
|
|
- unify px4-logs with rosbags
|
|
- is there a better logging method than rosbags?
|
|
- share low bandwidth log data to groundstation to live plotting with plotjuggler or similar
|
|
- Bringup manager:
|
|
- Make sure that the entire software stack is running after boot
|
|
- run a few hardware / software tests periodically to be sure that everything is running as it should be.
|
|
- Camera Node:
|
|
- detect if a camera is down
|
|
- action to capture an image to a file (maybe used to confirm delivery)
|
|
- Hailo Node:
|
|
- hef-file manager
|
|
- plugin based neural nets?
|
|
- change nets at runtime
|
|
- Meta data publishing
|
|
- health data publishing
|
|
- Destination finder
|
|
- panorama to location converter
|
|
|
|
### Other High Level
|
|
- Tele operation node, such that we can use a remote control over LTE instead of radio
|
|
- Demo library
|
|
- Demos are basically just another behaviortree with some user interaction
|
|
# Groundstation
|
|
- interface to single drone:
|
|
- communicate new job (incl. job-id)
|
|
- get updates on job
|
|
- encrypted communication (ROS? UDP? MAVLINKV2?)
|
|
- get flight logs continously
|
|
- throttled
|
|
- Fleet management:
|
|
- every drone has UID
|
|
- and all details stored with it:
|
|
- current version number (hardware and software)
|
|
- what type of rasperry pi (UID)
|
|
- LTE simcard management
|
|
- RTK correction stream management
|
|
- maintenance history of every drone
|
|
- flight log history of every drone
|
|
- current status of every drone
|
|
- how many drones are in the air right now?
|
|
- map with all drones: color coded which ones are flying, color coded which ones are unhealthy
|
|
- Interface to Delivery app, delivery software, etc.
|
|
- deciding function if a delivery is possible according to panoramic image (people in the loop?)
|
|
- routing software
|
|
- incoming jobs: which drone should do what job
|
|
- delegation software
|
|
- how to delegate pilot assistance requests to free pilots?
|
|
|
|
# OneSec Server
|
|
- log server
|
|
- automatic logupload (px4, rosbag, images?)
|
|
- daily, weekly, monthly... report in jupyter --> pdf or html
|
|
- dashboard with number of deliveries / number of flighthours, etc.
|
|
- debug tools
|
|
- download specific log
|
|
- compare all logs of the same vehicle
|
|
- maintenance server
|
|
- scheduled and unscheduled maintenance server
|
|
- detailed instructions (including videos and checklists) on how to do maintenance / debugging / fault finding
|
|
- email notifications if scheduled maintenance is needed
|
|
- Business Operations
|
|
- Delivery App / interface to uber eats
|
|
- Customer database, handling, etc
|
|
- address
|
|
- precise GNSS coordinates after first delivery
|
|
- panorama image before first delivery (encrypted?)
|
|
- multiple delivery locations
|
|
|
|
# Pilot Interface
|
|
- reliability
|
|
- dual power supply
|
|
- dual internet provider
|
|
- make sure machine is powerful enough
|
|
- security:
|
|
- make sure that some sort of encryption is happening
|
|
- Teleoperation
|
|
- visual confirmation
|
|
- high resolution map with precise coordinates
|
|
- interface:
|
|
- to choose delivery location on map
|
|
- to choose delivery polygons on map
|
|
- |