Looking into the future, it seems that robots and the IoT have the greatest potential to influence daily life. With countless innovations being made in fields like robotics, networking, and augmented reality, the possibilities are truly endless. We decided to explore one of these possibilities at this hackathon: a drone that we're able to interface with over the internet.
What it does
We have an IMU that is connected and read by Unity through serial. Do to the modularity of the project we have implemented two IMUs on the transmitter side for redundancy and one on the drone side for debugging. Currently, we send the data through a websocket from the transmitter end to the drone's Raspi. This allows two computers to interface and we can run more heavy programs on either side. In essence, the drone is controlled by a glove, which is currently being tracked by the IMU. As the IMU changes position, our drone will compensate using PID to maintain its current position.
How we built it
Our construction process consisted of two specializations: hardware and software. In terms of hardware, most of our time was spent on putting Arduino boards, Raspi's, and sensors together into a haphazard system. Not only did we spend over an hour simply crimping wires, two of our propellors broke and an HDMI cable we had also broke. On the software side, we created a PID controller in order to stabilize our drone. In addition, we utilized a networking protocol with web sockets in order to communicate information to our drone over the internet. Lastly, we utilized a Kalman filter in order to reduce error within the multiple sensor inputs we had in order to determine orientation.
Challenges we ran into
One of the hardest challenges for us was utilizing a networking protocol in order to communicate with our drone. First off, sending the data was challenging as we needed to know what data to communicate and how often. Furthermore, simply connecting the server with our drone over the internet was difficult. Finally, running a data-receiving script in tandem with a script controlling our drone forced took numerous attempts. Electrical connections also posed a major issue throughout this hackathon. Due to our self-crimped wires, we were unsure whether bugs existed due to poor connections or software issues. Finally, finding our PID constants were difficult due to the fact that our drone only had two working motors.
Accomplishments that we're proud of
Eventually being able to communicate data through the internet was a big accomplishment for us. It took an incredible amount of trial and error to achieve communication between our wireless devices. Initially using a hotspot did not work, but it was a dead end Through the use of websockets over the Lancerhack wifi network, we were able to send information back and forth across the campus.
What we learned
We learned how to interface between multiple Raspi's over the internet. Furthermore, we learned how to read information and parse data from the IMU in order to get accurate positioning data and finally we learned how to write a PID controller in order to stabilize the orientation of our drone at any chosen position.
What's next for Drone Control using IMU with PID and Raspi over wifi
We still have a long way to go and we definitely have multiple improvements to make, like fine-tuning our PID constants, making sure our IMU data is fully filtered, and accurately control our position of the drone. Another important thing do is create a more sturdy frame as the current one relies on balsa wood and thus isn't the best option to house our strong motors. In the future, we are planning to make the drone a complete unit that is separate from any connected wires and receives instructions wirelessly from another source. This will allow us to fly the drone and test its accurate positioning. If we win any prizes today, they will be used to help further our cause to complete the glove. Thanks for reading through our submission!