Autonomous Javelin Retrieving Robot – Javeliner
This robot returns things that people throw just so they could throw them again. Brilliant, I know.
More specifically, this robot uses GPS to drive on the field (word #2 of Track&Field), and retrieve javelins from their landing point back to the athletes.
Fun fact: I got to present it at MIT’s XFair! It is a tech-expo-career-fair mashup. It was really exciting.
Javelins are dangerous. Even more when they fly through the air. So I thought I could make the job of getting them back to the athletes a little easier and safer by creating a robot to do it by itself. Also, I wanted to work with GPS technology and long range communication for a while, so I thought that this was a great opportunity to do that.
Let’s dive right in to the way it works. Overall, the system is comprised by two units – the mobile unit and a handheld unit.
After an athlete throws a javelin, and it lands (hopefully), a person on the field (most likely a referee that has to be there to measure the throw) will summon the mobile unit to him by pressing a button on the handheld unit. Once it gets there, a javelin will be loaded on to the robot, and it will drive back to the athletes (in response to another handheld unit button press).
I know, it would have been SO MUCH COOLER if the robot would have picked up the javelin from the ground by itself! I totally agree. Though the fact that a referee must measure a throw before anything touches it makes this idea legally challenging, and I also didn’t have the time to do that before the expo J .
Anyway, moving on! Let’s explore what is happening behind the scenes when the system works. Let’s do it step by step:
- Before the meet even starts, the system has to “know” where the athletes are located (this location does not change throughout the competition). To teach it the coordinates, the handheld unit is brought to the location, and a calibration procedure is initiated. The function stores the location’s GPS coordinates in the Arduino’s EEPROM for future use.
Now that the system is calibrated, the referee can go out to the field and use the hand-held-unit-mobile-unit combo extravaganza (sorry that was horrible).
The way this works is quite simple:
- As a button is pressed on the handheld unit, its own GPS coordinates are transmitted to the mobile unit over long range Bluetooth.
- The robot starts autonomously navigating to to the coordinates it received. It will stop when reaching a radius of ~5 meters from it, and let the referee load javelins on to it. That threshold of ~5 meters was added to keep the robot from circling around the target if it missed it in the first place.
- Upon a press of another button on the handheld unit, the robot navigates back to its “home base” – the location of the athletes that is stored in the EEPROM. Since those coordinates were saved in to the handheld unit, it just sends those coordinates to the mobile unit when the second button is pressed. Therefore, from the robot’s point of view, it is just going through the same program loop of receiving coordinates – navigating there- waiting for more- repeat.
- Once the robot reaches the athletes, they would be able to take the javelins off and the process will start all over again (well, actually not ALL over, will repeat steps 2 through 5).
Components used:
Computing power
- Arduino Mega (one for each unit)
Communication
- HC-12 long range Bluetooth.
GPS navigation
- Adafruit Ultimate GPS
- GY-273 HMC5883L magnetometer
Robot base
- Hacked RC rock crawler – Exceed MadTorque 1/8 scale
Besides the capabilities that the system has now, which I am honestly pretty happy with, I am thinking about adding some functionalities to it in the future. One thing that could easily be done is to have the robot measure the distance of the throw. It is actually doing it already, though it just doesn’t share it with the world. Shy robot. Additionally, I would love to replace the bulky handheld unit with a smartphone. It already has on-board GPS and Bluetooth so there should not be any problem in using it instead of an Arduino. Even if the Bluetooth range of the phone would not be long enough, the phone could always upload the data to some sort of cloud, which could be accessed by the mobile unit’s Arduino if it would have cellular connectivity – which is pretty straightforward to add.
The issue of picking the javelins up from the ground is more complicated – that could make an interesting future challenge 😉 .
It should also be noted that this whole project was funded by MIT’s ProjX. This is a program that supports student-makers on campus and aspires to get the community more involved in making. Thanks guys!
Alright that’s about it!