From the beginning, we were extremely interested in creating a toy that would be interactive for pets. Originally, we wanted to make a structure for cats that would supply entertainment for them. This was quickly ruled out when we realized that it would not be enough of a challenge for us considering that it would not include any coding and only a wooden structure. It was back to the drawing board for us. We eventually came to the idea of creating a ball that dogs could use to play with. This ball included a dock that dispensed a treat whenever the ball returned to it.
We started by sketching the different elements to both the ball and dock. We had a couple different ideas as to how the ball would actually move. A couple of these ideas involved the ball moving with a weight in the center of it or the ball would have a mini cart inside of it and navigate the ball to which direction it should go to. The idea for the dock originated from the idea of the game “fetch.” Whenever you play fetch with a dog, you give the dog a treat after they return the ball back to you. So our dock would dispense a treat every time the ball was returned to its spot.
We used the laser cutter and wood to build our prototype. When we figured out every specific dimension we wanted for the dock, we continued on modeling with Rhino to make the 3D printed parts. Some of these parts were crucial to the product because they were the actual parts we used to dispense a treat. After creating that, it was time to work on the coding.
We used an arduino to code our dock. Since we had an exact spot for the ball to return back to, we figured it would be smart to put a switch there. So whenever the ball would return to the dock, it would hit the switch and that would signal the motor to move the auger tool that dispenses the treat.
Originally, we created a car that would fit into a hamster ball. The way the ball would move is that the car would drive and move the sides of the ball in the direction the car moves. However, this ended up being too complicated because the hamster ball was a set size and we could only make the car a certain size given the materials we had access to. It was time for plan B.
Our second plan was to project two rods out from both sides of the ball. These rods would have holes in both sides to perfectly fit the motor. One side of the motor was heavier than the other so when the motor would rotate, one side of the ball would be weighted down, making the ball roll as a result. At first, we tried to design a specific part to fit inside of the hamster ball. However, it soon became clear that an easier solution would be to use the 3D printer and make our own ball. We designed the ball so that it printed one half at a time with the rod protruding.
After we had printed out both sides of the ball, we tested it with one motor, and it worked! The ball was able to move all by itself! However, it was only able to rotate forwards and back -- we needed it to move more! As a solution to this problem, we attached a servo to the original motor. By adding more weight to the original motor, we now had a way to make the ball move in whatever direction we wanted it to go.
At this point, we thought we were all done with the ball. However, we realized that the weight of the servo itself wasn’t enough to change the direction the ball was moving. Luckily, we had another solution: the battery the ball needed to move. The battery was fairly heavy and the solution was simple: attach the battery to the servo to add weight. In order to accomplish this, we designed an other piece in Rhino that was able to hold the battery to the ball and 3D printed it. Now, we had a ball that was able to roll forwards, backwards, and side to side. The next step was simple: we wrote a code on arduino for the ball to move in a specific pattern that was random. It now did exactly what we wanted it to do -- well almost.
There was only one thing the ball wasn’t able to do: it wasn’t able to detect what was happening to it. In other words, we wanted the ball to know when it wasn’t being played with (touched), and when there was a person or an animal that was ready to play. In order to give the ball the ability to sense its surroundings, we put an accelerometer in the ball. We then programed the accelerometer to detect if there was an outside force pushing the ball or not. With this program in place, we programed the ball to complete one full pattern (previously programed). Once the ball was stopped, it would assess the situation around it: if there wasn’t an outside force (something pushing the ball) then the program would stop until the ball was nudged. However, if there was an animal nudging it, the ball would continue to roll.