Here is a sample of the blueprint that was created by the python code from the database
Here is an image of the final android app which can connect to the robot via bluetooth
Here is the side view of the robot. Visible are the two motors which power the wheels.
Front view of Rumino. Visible is the ultrasonic sensor.
Top view of Rumino. Visible are the two breadboards and arduino circuit board.
For this project, we wanted to experiment with building a robot, and how a robot might connect to various types of computer languages and software. Our group was relatively new to the intricacies of communication between hardware and software, and we thought that the Rumino would be a great way to experiment. We hope architects, engineers, and other design professionals will find Rumino useful in their work. We hope it can save them time and resources, allowing them to complete their projects more quickly.
What it does
Centered around an Arduino circuit, Rumino uses its two motors to autonomously explore a room. With code to turn before it hits an object, measured by a sensor, Rumino can run the perimeter of the room and collect information such as how far it has traveled, and where objects are relative two it. The user can then access the andriod app to connect to Rumino via bluetooth. In this way they can request that Rumino calculate relevant information to the room. This includes the rooms area, perimeter, and the dimension of the room and any irregular objects. Rumino then accesses its personalized database to collect the information which has been transmitted to the app, to print a layout of the room based on the vector matrix given to it. Through the app, it will then relay that graph back to the user, along with the requested dimensions and calculations.
How we built it
We started by constructing the base of the robot, as well as the two motors it would user to power itself. Simultaneously, we also constructed the sensor technology, and added everything to the top of the robot. After that, Emma and Noah worked to integrate all of the Arduino code, commanding the robots movements and how it should sensor its environment.
We used a MySQL database to store all of the information, and Eric built a Java code which could convert the data into a csv file which was much more usable for our purposes. After that, Eric converted the csv file into a graph of the room, as collected by the Arduino sensor, using Python code.
Simultaneously, Sydney and Noah worked to design the front and back end of the app which would retrieve the information from the Arduino sensor, combine that with user input, and send it to the database.
Challenges we ran into
Due to a lack of specialized hardware for this purpose, we found that we could not deliver enough power to the Arduino to run both motors, as well as the sensor. After experimenting with many different battery orientations and supply levels, we managed to turn the wheels while also operating the sensor, albeit slowly. If we had a chance to continue improving the design, we would add a more sophisticated power supply to Rumino, so it could run faster and more efficiently.
Additionally, we ran into some issues converting the data that the arduino was collecting into a usable array we could upload to the database. While trying to test our array with random numbers, we found that we could not allow more than 10 inputs to be added to the array. After some experimentation, we found a code that we think will work command Rumino, however we are unable to test all of the functionality due to the power supply issues detailed above.
Finally, we had some issues with the database information collection and analysis. Originally, we would have liked the database information to be converted directly into a mapping layout of the room using one piece of python code. However, we were not satisfied with the quality of the graphs we received, and couldn't find a way to do this consistently with different values. Because of this, we had to get creative with how we received and processes the information from the database, resulting in the method you see above.
Accomplishments that we're proud of
First of all, Eric managed to stay awake the full 24 hours, which is very impressive considering the workload he took on. One thing we all learned during this experience is how to tell useful information for our project apart from information that isn't useful. Embarking on such a new experience led to many long hours of creative google searches, and at the end of this experience we have all found that we're much better at locating useful and relevant information on the internet.
Another accomplishment we are proud of is how we were able to take a relatively simple idea; build a robot that can drive around and see which is in front of it; and transform it to a robot which is able to utilize multiple platforms to collect, store and analyze the data that it sees. It is a lesson in creativity, flexibility, and teamwork to see such a complicated project come to life in just 24 hours.
What we learned
First of all, we are very proud of having learned languages that are new to all of us in the time span of 24 hours, and being able to utilize our knowledge in a real-world project. This experience has been one to remember because of how unlike the classroom it was. In the classroom, we learn a new language, and after time, use its practical applications. In the hackathon, it was necessary to use the information, and learn it simultaneously.
Because we had all met each other two days before the hackathon, we did not have much time beforehand to hash our the design, or its applications. If we were to compete in a hackathon again, we might have been thinking about possible ideas and a method for implementing them before the start of the 24 hours. We feel that having a concrete plan before you start is the best way to avoid roadblocks and complications later on in the competition. Overall however, we enjoyed the experience of getting to create something new, with new people. We have made great friends in the last 24 hours, and we are proud of what we were able to create.
What's next for Rumino
If we were to continue to improve the design, we would like to work on the functionalities of calculating the area, perimeter, and dimensions of the room based on Rumino's input. At the moment, we have all the parts working on their own, and we would like to connect them to each other to streamline the whole process. Additionally, we would implement a more sophisticated power supply to the design, and create a better looking version of the robot and the app interface.