Below are the main posts concerning my Arduino Airbot project – codenamed AJ for Aviation Junkie!… As you do.
- Project Introduction
- Living design documents
- Phase 1: Automotive Control
- Airframe modifications
- Larger battery
- Arms taped
- Landing gear?
- Flight control integration
- Arduino flight monitoring
- Accelerometer, gyro, magnetometer integration
- Basic movement commands (ascend, hover, descend, off)
- Definition of low hover
- Fixed ascent and descent rates
- Basic state engine programmed
- Basic flight plan configured
- Experiment/Proof: Takeoff and landing
- Airframe modifications
- Phase 2: Flight Recording / Debugging
- Internal logging
- SD card integration
- Save settings (personality)
- Sensor readings logged with other state information
- Live transmission
- Protocol: MavLink extensions?
- Mechanism: Via BLE Nano?
- Receiver: Logging to screen only
- REST event sink (to MarkLogic for posterity)
- Logging plugin framework for Arduino
- MarkLogic Arduino API comms
- Each update is a document, max 1 per second sent
- 2D geospatial grid index, altitude, timecode, etc.
- Basic tabular most recent display, facet for ‘before time index’
- 3D display environment (Virtual 3D environment from work?)
- Experiment/Proof: Live display in 3D environment
- Experiment/Proof: Point in time query of position
- Internal logging
- Phase 3: Inertial Navigation
- 3 axis accelerometer integration
- Calculate floating point accuracy and wall clock of duration
- Physics based INS assumptions
- Integrate INS computer module
- Integrate distance sensors
- Sharp 10-80 cm sensors
- Touch sensor for landed?
- Overlay both and overlay outputs on screen
- Programme basic move to commands (home, height, position)
- Create pluggable flight plan commands
- Experiment/Proof: Set a complex route over 10 minutes and compare results of INS versus actual position and sensors
- 3 axis accelerometer integration
- Phase 4: Danger avoidance
- Variable speeds forward and aft (fixed at slow until now)
- Inverse feedback routine if collision on current heading detected (only if collision happens within next 2 seconds)
- Remember to override avoidance when landing
- Train to hover, back away from obstacle, and return to original position
- Train to move to side if obstacle cannot be moved away from fast enough
- Train to interrupt flight plan, to slow to a holding position near obstacle, then halt in hover
- Experiment/Proof: Test with random flight paths and distances within room, and to RTB within 5 minutes
- Phase 5: Map Memory
- Log distance to obstacles, but only in 15cm increments, show separately on 3D environment
- Train to explore and follow edges of obstacles, whilst mapping
- Train to determine air corridors/highways/navigations
- Train to create directed graph of corridors and interconnections
- Create flight plan based on navigations
- Enter and leave navigations on flight plan
- Experiment/Proof: Create flight plan to take off, join navigation, move through house, land at bright spot, fully charge battery, then take off and move back to original position, and landing
- Phase 6: Negative and Positive Reinforcement
- Add ‘fear’ weighting to being near obstacle, away from home, away from charge point, low on charge, collision course, and unexpected obstacle (movement of person/labrador), flying at high and low speeds, being unstable in flight, being away from mapped area
- Add ‘happy’ weighting to being at home, charging, near middle of navigation area
- Phase 7: Personality
- Weightings to characteristics like Explorer, Adrenaline Junkie, Inquisitive, Gymnast
- Put these in to action in flight controller and state engine
- Add feedback devices in visual and audio
- Add Exercise mode where AJ flies around known space
- Experiment/Proof: Corner AJ and see fear increase, let him roam free and see happy increase when flying, see flight paths weighted towards centre of navigations
- Phase 8: Outside navigation
- Respond to voice commands
- Stay near to beacon (how?)
- GPS integration
- Multiple environment configurations
- Phone (BLE?) flight programming and observation?
- New commands – follow me
- Emergency landing functions (don’t land on reflective paths aka lakes/rivers)
- Programme with emergency travel to home command when out of area
- Experiment/Proof: Follow me around a park