N.E.R.D. - Our Robot

Our Robot Requirements:

With regard to our robot's hardware, we had a couple main requirements, so that our robot could function as best as possible. Some of these were to:


  • Create a robust and strong robot.

  • Provide many means of modification.

  • Have optimal sensor placement for line tracing, green square, and obstacle.

  • Be able to pickup up balls and deposit them.

  • Be as compact as possible.

  • Be able to climb up ramps/equal weight distribution.

  • Be able to control the robot well.

  • Have a board that can be fast enough for processing.

Achieving Those Requirements:

Since we have had a lot of experience from last year's RCJ competition, we knew how to achieve many of these goals, and we knew what would not work.


  • To create a strong robot, we built our robot with metal, unlike last year, in which we used Legos. Last year, we had many problems with Legos, such as the beams connecting to the axle breaking, causing the robot to be unable to move properly. We also used screws and heavy duty glue to make sure that everything was attached properly.

  • To be able to easily modify the robot, we made the base skeleton of our robot have a lot of free space for us to tinker with, allowing us to modify it in any way or test different sensor placements. We also had black panels with holes in many places, so that sensors could be unscrewed and screwed in different place quickly.

  • In last year's competition, we used light sensor to follow the line. However, this year we realized that we needed to be able to see more, because with more data, we could follow the line better. Because of this, we decided to use a camera, which allowed us to do line tracing, green square, and Evac room with one sensor. To make our camera even more useful, we implemented a servo motor allowing it to tilt it's angle. For obstacle avoidance, we used an ultrasonic sensor as opposed to an IR sensor, allowing it to see clear objects such as water bottles. We mounted this sensor above the camera allowing it to also be tilted by the servo. To get sensor data and move all servos we used a MegaPi.

  • To pickup balls for the second room, we have a little flap at the front of our robot allowing it to pickup balls. Once it has been picked up, it goes to a special chamber in the robot. Once the balls need to be deposited, a claw like machine that the ball is in pushes it to the side, allowing it to go into the 6 cm high black triangle.

  • To be as compact as possible to allow our sensors to be optimally placed, we placed both our AA battery holder and battery pack under the skeleton of the robot. This also allowed us to climb up ramps and seesaws with ease, as the batteries and battery pack are heavy and created a low center of gravity.

  • To allow us to control the robot well as well as allow us to climb up ramps we used treads over wheels, as they created a higher surface area touching the ground. We also used good motor which allowed us to go very fast and very slow with control. We used a MegaPi to control our motors.

  • With regard to our board, we used a Raspberry PI this year, instead of Lego Mindstorms, like we did last year. We had many reasons, but one main one was that it simply was not fast enough. Because of this, we decided to use a Raspberry PI as our control board. To control our motors, we used a MegaPi as it allowed us to control our main motors as well as many servos at the same time. To see how we communicated between the Raspberry PI and the MegaPi, please look at our Serial Communication tab.

Here you can view a video of the robot picking up a ball and dropping it off:

IMG_1813.MOV