First Commit

This commit is contained in:
2024-12-02 15:11:30 +01:00
commit 031f6004de
4688 changed files with 441558 additions and 0 deletions

View File

@@ -0,0 +1,23 @@
I stumbled across this because I was researching what the most efficient way of implementing our FruxelGrid was. In this [StackOverflow answer](https://stackoverflow.com/a/14579347/7705525) I got pointed to graph theory.
7 Bridges of Königsberg
![[Pasted image 20231023150710.png]]
# Definitions
| Definition | Meaning |
| -------------- | -------------------------------------------- |
| Node / Vertex | The object doing some work |
| Edge | Path between two Nodes |
| Node degree | Number of edges that touch the node / vertex |
| Graph | Combination of Nodes and Vertices / Nodes |
| Eulerian Graph | Exactly zero or two nodes have an odd degree |
# Rules
1. Exactly zero or two vertices can have an odd (=uneven) degree
# Implementation in [[C++]]
1. **direct Translation** of the Definition: create a `std::vector` for a list of vertices and a list of edges. The edges themselves are represented as a `std::pair`
2. Adjacency List
3. Adjacency Matrix
![[Pasted image 20231023154352.png]]

View File

@@ -0,0 +1,38 @@
# Hardware
## Electrical Hardware
### Testing
- Define and run hardware tests for every single board and document it on google drive (with templates).
- What are common industry standard hardware tests that we should perform?
- If we wanted to sell the drone as a product:
- what tests would we need to do?
- those tests can indicate what we should be testing
- EMI testing:
- can EMI cause issues of the drone operation
- Vibration testing:
- How does the drone operate after 100 Hours of some vibration level?
- Are connectors still in place?
# Roles
## Hiring
- Control Engineer (CH)
- Hover, Cruise and transition
- use all actuators in unison to achieve a goal
- Experience with PX4 is a plus
- Embedded microcontroller programming experience
- Senior Software Engineer (WORLD)
- C++, Linux, ROS2 (even though)
- has written well developed software
- Full stack web engineer (or on fiverr)
- log server
- pilot interface
- groundstation
## Advisors
- talk to company that does large drone operation (zipline?)
- Quality Assurance?
- Make sure that the drone
# Office in Zurich
- Clean & organised
- every object has its place (have a sheet where you can find every object)
-

View File

@@ -0,0 +1,250 @@
# 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
-

View File

@@ -0,0 +1,24 @@
# Documentation
- copy Obsidian documentation into confluence
- download all confluence as html (all spaces)
- finish missing documentation
# Handover
## Hasan
## Ugur
## Vidit
## Ayush
## Jerry
# Computer
- [ ] Is everything pushed?
# Admin
- [ ] Vertrag: Geld für Mai (halber Lohn, Ferien, etc), Options, unpaid leave (option contract)
- [ ] Passwort übergabe Dannick
This weekend at home:
- [ ] script to move all repos to bitbucket
- [ ] download all passwords for Dannick
- [ ] downlad example report for tests templates on drive

View File

@@ -0,0 +1,12 @@
Show some tag context
```dataview
list from #learning/bite
```
```query
#learning/bite
```