User:Mschmick

From Noisebridge
Revision as of 17:30, 7 February 2018 by Mschmick (talk | contribs) (Created page with "Hi, Mark here. I'm building a robot for drones: http://www.flyingchair.co (prototype stage). Here's a summary of the 5MoF talk I'm preparing for Thur 2/15. If you have any su...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Hi, Mark here. I'm building a robot for drones: http://www.flyingchair.co (prototype stage).

Here's a summary of the 5MoF talk I'm preparing for Thur 2/15. If you have any suggestions or concentrations please let me know.


I'm building a robot for drones called Birdhouse. Its a smart launchpad for commodity models like the Phantom or Inspire, letting you remotely shelter, charge and fly. It looks like a breadbox (shelter/charge), and opens to a flight deck (launch/fly/land). In this talk I'd like to detail the software stack I'm running since this is my first robot and I'm probably doing it wrong. Anyway, this is the non-ROS way I'm doing it but I'm open to suggestions.

I call Birdhouse a "robot" since it does run an autonomous event loop (no human UI):

  1. gather data from sensors and telemetry
  2. apply realtime logic
  3. run actuators, etc to change state

To minimize pilot loading, the loop runs whenever props are spinning i.e. the pilot is piloting. It's a worst-case scenario and consequently a good basis for system requirements. Consider the case below of an outbound drone that breaches a departure geofence, closing Birdhouse until you return.

  • stream LOS video (RasPi cam, mplayer)
  • ingest drone telemetry @50Hz
  • down-sample to Birdhouse @5Hz (REST updates)
  • read sensors: light, weather, audio, video (0MQ pub/sub)
  • logic & logging
  • track LOS camera on drone
  • run "close" sequence (5X motors, lights)
  • serve file from network share (smb)
  • serve web and REST requests (http)

The software architecture I'm proposing draws from a variety of OSS projects. It provides system services for general robotics like low-to-zero latency and high concurrency. On top of that I've implemented some abstractions that are particularly useful for dev-stage robotics:

  • HAL (hardware abstraction library)
  • Virtual clock
  • RESTful hardware singleton