User:Mschmick
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 one non-ROS approach and I'm open to suggestions.
I call Birdhouse a "robot" since it does run an autonomous event loop (no human UI):
- gather data from sensors and telemetry
- apply realtime logic
- 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