855 karma · joined May 3, 2016
Contact me: https://www.chrisdalke.com/ chrisdalke (at) gmail (dot) com
I previously used the S3 + Cloudfront setup that many commenters have mentioned, but have switched to Netlify for static sites simply because I don’t have the overhead of setting up any configuration in AWS. With Netlify, you can be up and running with a new static site as soon as the DNS record propagates.
I’ve always wondered if there was any throttling or performance impact at high traffic- but I haven’t built any high-traffic sites yet :)
There are a lot of similarly great React libraries that focus on just one high-level component. A few of my favorites that have saved me tons of time:
- react-grid-layout (https://github.com/STRML/react-grid-layout) for draggable / resizable grids with an easily-serializable layout.
- react-mosaic (https://github.com/nomcopter/react-mosaic) for tiling / movable window layouts.
- react-table (https://react-table.js.org/) for a very powerful, expandable table implementation.
There's definitely a lot of different decisions you can make on the hardware side: Choosing what sensors you include, flight computer & flight controller, ESCs and motors, frame, and so on.
On the other hand, you could also choose to build a drone from a kit or ready-to-fly model, and experiment more with higher-level software. ArduPilot can be connected to ROS, which is the standard software platform for robotics. Much of the swarming behavior, visual tracking, and other experiments are done on a platform like ROS, which then sends waypoints or other instructions to the flight computer.
Some areas to research if you're into this:
ArduPilot (Firmware handling waypoint missions, guidance, etc. on an onboard flight controller): https://ardupilot.org/copter/index.html
MavLink (Standard serial protocol used to communicate with drones, used to communicate between an ArduPilot controller and a ground station): https://mavlink.io/en/
ROS (Software platform designed for robotics, commonly ArduPilot drones feed into a ROS system for swarm experiments etc.): https://www.ros.org/
I have some concerns about larger PCB quadcopter designs because I can imagine that fatigue due to flexing on the PCB over long-term use could cause issues with the PCB delaminating or solder joints failing. On the ArduBee particularly, you can see a lot of surface-mount components mounted on the arms. I'd love to read more about any lifetime testing they've done on the PCB.
Of course there's always the risk of just crashing your drone and breaking it, but that's no different than other drone designs!
A lot of the time ArduPilot is installed with a flight computer (separate from the flight controller) which sends control signals inline with the RC receiver and can be retrofit onto an existing drone.
You can also pick up pretty inexpensive kits to retrofit any DIY quadcopter or RC aircraft with autopilot capability. Two examples are the older APM2.8 hardware (no longer supported, dirt cheap) and the Pixhawk PX4 (actively supported, more expensive but still <$200.)
FWIW here's a really cheesy video for an electric outboard project I did back in college: https://www.youtube.com/watch?v=Elw9DDL6wTM
Out of the box with minimal configuration, my telemetry platform has:
- Support for many common telemetry protocols, for example: (NMEA 0183, Mavlink, CAN-bus, VE.Direct, Key-Length-value strings)
- Realtime data streaming, play/pause/replay, time scrubbing
- Dashboard editor and component library (charts, gauges, text displays, instrument panels, etc)
- Data syncing in realtime between servers and the cloud; dashboards can be shared and viewed anywhere
My background in this is from my work at the University of Rochester leading a manned electric boat racing team. A need we saw across teams at our competitions was the ability to integrate realtime data from many embedded devices into a single data stream, plot data live on dashboards during races, store data for later analysis, and easily share that data among team members. Building out the infrastructure to do this gave our team a great advantage as we were able to back up high-level decisions with quantitative data we received from our system.
For example, where other teams would guess based on sparse data the ideal propeller pitch for a desired event, we had exact data on the RPM/torque from our drivetrain and current draw on the motor, and were able to quantitatively compare our propeller selection in different events to optimize for speed, efficiency, etc.
The professional ecosystem in this area is huge:
- ROS is the dominant telemetry platform across hardware systems
- The Mavlink protocol is used for drone communication
- CAN-bus and other hardware standards are used in the vehicle industry
- Matlab is commonly used for data collection & analysis among researchers
Across all these systems there is a common problem for beginners: There is a huge amount of domain knowledge and setup required before you can effectively build complex systems. Across almost every amateur project that does hardware data collection, people are repeating the same steps: Set up a custom protocol for streaming from an MCU over serial, write a program to receive/store that data, use an external tool to load, process and chart the data, etc.
On some level, that experience is really valuable, and I'm building the platform not to force you into a certain method: Using one piece of the system does not require buying into every feature. For example, you could just use the server for data collection, and read data points directly from the server into your own UI. conversely, you could use the server/UI to point at a ROS instance and just use the UI as a UI layer for dashboards.
Overall, I'm really excited because I think that building a ready-to-use server and a powerful UI into a single package represents a real step forwards. There's a real need for this type of system that I've seen time and time again in the field from makers, researchers, and anyone else building hardware systems.
What size/model is the boat? Depending on your interests, you could even explore a more powerful electric motor and try to get it up on plane. There are lots of people out there building powerful DIY electric drivetrains (eg. https://efoil.builders/ for e-foils). Have fun!
The last 10 years has seen a huge influx in powerful, cheap RC components: better/smaller receivers, brushless motors, autopilot systems like ArduPilot, etc. It's more accessible than ever to experiment with control systems in RC craft, which is really exciting.