You are not logged in.

#1 Re: Microcontrollers & Computers » Arduino Uno projects » 2014-12-24 18:12:13

If you ever get that game station started/completed I would love to hear about the process. Never got to work with a RaspBerry Pi but I heard some good things about it

#2 Re: Introduce yourself » Hello World » 2014-12-24 18:07:50

I'm not so much angry at the people as I am angry that I never got to see the results of my effort. It was a great set of projects that  were a lot of fun and informative and I just wanted to see how far our robot would have come without any interference, although if I had a chance I would redo and make some sort of a wall robot or see if there's one way to ensure 100% of the balls stay on the opponents side.

#3 Re: Introduce yourself » Who is SherpaDoug » 2014-12-24 18:04:26

Would you happen to have any videos or a way to share the swimming eyeball? I would love to see it in action an read about the mechanics behind it.

#4 Re: Introduce yourself » Hello World » 2014-12-17 22:51:45

Well ok here's what happened.

It was a 4th year mechatronics course at Uoft and the entire course just has 3 robotics projects made with LEGO Mindstorms and a custom PIC:
1. Make a robot that can push 6 empty soda cans out of a circle (RoboCan)
2. A robot that can put ping pong balls into a hole (RoboGolf)
3. A robot that can compete with another in a pong-style battle (RoboPong)

I don't have any videos of my group's robots but if you search MIE443 or robocan/robogolf/robopong (may need to add "uoft" or something like that to filter) you can find these videos. (I can't post links for some reason)


The project rules were simple (too simple, I'll elaborate later): Build 3 separate robots that accomplishes the task fully autonomously with only a power supply tether and write a report on each, including a CAD drawing. Each kit contained 2 LEGO servos and the necessary parts to connect the servos to the PIC. All the robots were made from LEGO Mindstorms kits and everybody had their own kit while the programmable logic was to be done on a custom PIC made by the TAs and programming was done in C. The only restriction to the project was that you were not allowed to buy extra LEGO parts (or destroy any), but how you used the parts and how you accomplished the tasks were up to you. All sensors, extra motors/servos, etc. had to be bought by yourselves and the cost will be reimbursed at the end.


This was the introductory project where they taught you how to detect objects with an ultrasonic sensor, as well as detect lines on the ground. The task was simple: find and push 6 soda cans out of a circle. Most groups went with the simple "scan and attack" sort of build which went something like this:

1. The robot would rotate in place at the centre of the circle and scan for non-infinity values coming from the ultrasonic sensor
2. Full throttle forward when the ultrasonic sensor detects "something" until the light/colour sensor underneath the robot detected a non-white surface (the circle).
3. Then backpedal until it detected that it was back within the inner circle.
4. Repeat.

The robot did not have to count that it did this a total of 6 times, nor did it need to confirm that it actually push a can out. All that mattered were results.

Of course, many teams couldn't get their servos calibrated properly so their robots would skew when travelling but this was usually corrected by letting the robot run in an infinite loop so that eventually it would get everything. Slightly more efficient groups would rely on the symmetry of the cans and do a full backpedal after the forward push (detect 4 black lines on the backpedal before stopping) to make use of the robot's backside to push a 2nd can. Since this was a contest, the shortest times would get a higher mark on the project so everybody was aiming for low times (those that could get their work done faster anyway). So my group thought, "Well, the most efficient thing to do would be to never trace your steps right?". We basically did not want to have to rely on the centre circle or ever having to reverse the robot, so we came up with an idea to "sweep" the cans out. We designed our bot to have a hooked arm on one side so that if you rotate the bot, it would sweep the can out. Basically it went like this:

1. Rotate and scan for first can, push it out
2. Backpedal a little bit
3. Rotate and scan for the next can.
4. Move up to the next can and rotate the bot so that the "bulldozing arm" would sweep the can out of bounds
5. Repeat from #3

Overall, it went pretty well and we got a pretty decent time (above average) but some groups had some really good programmers that knew how to code very efficient feedback control systems into their bot so it would always run full throttle. One very funny robot had an arm, similar to our robot, but it was just straight and at an angle so that their robot would spiral out from the centre and eventually push everything out as it went around and around in circles lol


This was the first direct competition against another robot. The task was to put all the ping pong balls on your side into the hole in the centre of the arena while the opposing robot was doing the same. The simplest robots did this:

1. Orient itself within the box and the corner (with 1 or 2 ultrasonic sensors, depending on their budget) and angle towards the balls.
2. Move forward until the ball is captured (they were orange to so the light sensor read something different than "black")
3. Rotate and move arbitrarily towards the centre until it detects a black line.
4. Follow the black line until it detects the hole
5. Turn towards the wall and use the wall to guide back to the starting spot (black box on the ground)
6. Repeat

Of course, this was extremely inefficient because this did the task one by one. Some groups were able to get it done fast if they had a good code that let the robot run a full throttle. My group decided to get all the balls and drop them all off at the same time. Basically there was a horizontal cartridge where the balls can roll on the ground along with the robot and as it ran over the hole, they would all drop in like this:

O O O O O O     -->
                 |_| (hole)

The hole was designed so that the balls would just roll out into one area to be collected, like a public coin-operated pool table.

Again, your time determined your mark in the project, but there wasn't really a more efficient way to do this. Some groups thought of the idea of blocking the hole with their robot when it was done, but of course the TAs and professor instantly said no. Some of the more creative groups would have vertical cartridges and the robot would just sit on top of the hole long enough so gravity takes over and all the balls fell out. The very efficient groups were the ones that had good feedback control so that their robot wasn't wiggling down the line. The biggest challenge in this project was detecting the other robot. If 2 bots went for the hole at the same time, they they would collide and get stuck. The smart (and more polite ones haha) would back off and wait until the other robot was done. Sadly, no extra marks were added for the contest (but there was in the report).

This was where some of the drama started brewing. It was the groups that had suggested blocking the hole that got me very pissed of later on that year (during the RoboPong contest, explanation below)


Everybody was waiting for this project. Most people have been coming up with ideas since the beginning of the year on how they will do this. The task was simple: there are some balls in the arena, some at the ends and some in the middle, and whoever had more balls at the end of 2 minutes was the loser of that match (elimination bracket tournament) and your mark was based on how well you did in the tournament. Bots had to stay on their side and never cross over. Some groups would collect multiple balls (because they were lazy and already had the robot from RoboGolf) and juts push them over the edge over and over again.

The simplest robots simply moved back and forth along the end with a propeller (like a lawnmower) and prayed to RNGesus that they won at the end of the day. These matches were the most fun and chaotic to watch because balls flew everywhere (sometimes outside because of collisions or if a ball got stuck between the blade and the wall).

My group did this strategy because we had a lack of parts for what we originally wanted to do: hold all the balls and let it all go at 1:59.  We actually learned later that we were allowed to make trades for parts as long as we had a "contract" to return the parts at the end of the year so that the kits remained equal. Too bad hmm

I actually had a much better idea (which my friend did the year after) that would guarantee a win 90% of the time. Basically, you wanted to build a moving wall. The restriction was that the robot must fit within a certain footprint, but the rules never dictated a z-axis. If I had enough parts, then I would have built a robot that was as tall as the arena was wide and at the start of the count the robot would just drop a wall down from the corner, then the wall would move up and stop at the midpoint. This meant that the opposing bot had to be able to LAUNCH THE BALLS OVER THE WALL or get lucky enough to get some behind the wall before it went down. I regret not being able to do this but because my friend did it the year after at least I got to see my idea come true.

One other group had a similar idea, but done much slower. They had a wall come out slowly by oscillating a servo back and for to extend it out from the start position. The extending arm looked like one of those arms you would find on a wall lamp (with an X pattern, google "extending arm"). The problem with this was it took too long because the extension process moved it forward a few centimetres at a time. Usually, some balls would end up behind the wall before it could move up.

The Drama of RoboPong

So that group that mentioned blocking the hole in RoboGolf actually caused problems, and it happened to my group. Their robot was a simple bulldozer that collected as many balls as possible and pushed it over the middle on repeat, but it had an extra effect. Their robot started out by carrying a bunch of lego parts in the shape of Xs and Vs that they put together inside the hopper/bulldozer component. When everybody saw this they all thought "huh?", including us. We couldn't imagine what purpose they served and how it would help them. Boy, were we surprised.

The robot's starting command was to move up to the middle of the arena and at this point everybody watching was extremely excited to see what it's next move was. People were climbing on top of tables just to get a view. Then it happened. Their robot quickly SNAPPED the hopper forward and all the parts inside of it were on our side and all over the place. Everybody then understood what their aim was, but boy were we all wrong. We all thought that these randomly scatter LEGO pieces were there as obstacles to block balls from being shot to the other side, like pinball bumpers. Everybody laughed and thought it was genius. But then I noticed that the pieces were oddly shaped for this purpose. Why did they have to be "sharp and jagged" when all it needed to be were closed shapes? Then I noticed that some of the pieces ended up in the back where our robot was doing it's propeller thing and it dawned on me with their true goal was. As our robot moved closer to the first piece, you can see them smiling like their plan was about to work. Our robot ran over the piece and it JAMMED THE PROPELLER. I immediately looked at the TAs and professor and yelled at them, "THIS CAN'T BE LEGAL!" Right as I finished, a weird sound came from our robot. Because our propeller was spinning at max speed while still getting jammed, all the force and torque was relieved by our robot completely coming apart. It collapsed and the parts still attached to the servo were spinning in place on the arena. I immediately picked up their robot (which would normally mean instant disqualification) and threatened to take it apart. I was beyond mad. Everybody in the room had spent many nights sleeping in the lab working on their robot and this team's idea of a strategy was to sabotage the robot. We literally watched all our hard work get destroyed in front of us. One of my group members were frantically trying to put the robot back together while me and the others started a shouting match at the other group and the TAs. After an insane amount of swearing, the professor finally told them to redo this match but their robot was not allowed to have all the extra pieces. It didn't matter, our robot was not the same anymore. We couldn't put it back together to exactly how it was before in the few minutes we had and it ended up not being able to run along the walls properly. I stood there watching us lose trying to hold back from punching the other group.

In the end, the professor and TA said that our mark in this project would not be reflected by how well we did and we were given an average 75 for the project. It really didn't matter to us, it was just so dirty of them to do that strategy and really frustrating for us to not be able to see our hard work in action as it was intended to be.

All in all, I felt I had learned a lot from doing the projects. To this day I am still angry that we never got to properly take part in the tournament, but such is life. If you had to take a moral from this story, I would say "Don't be an asshole" because a lack of rules doesn't dictate a lack of respect. Still, it was a pretty fun set of projects.

#5 Re: Introduce yourself » Hello World » 2014-12-16 22:15:18

I can share the university project story (there's a bit of drama in it). Should I share it here?

#6 Re: Programming » Free book about ROS » 2014-12-16 22:11:28

I haven't looked through it yet, but do you need a working board or PIC to learn ROS?

#7 Introduce yourself » Hello World » 2014-12-16 20:03:40

Replies: 7

Hi! I found this forum while looking for a place to get started again in robotics. I graduated from the Mechatronics program at the University of Toronto a few years ago but regrettably didn't continue on with robotics. I'm looking to get refreshed and advance from what I learned after realizing that this is something I really want to do. I do not currently own a robotics kit so I will try to win this competition to get started big_smile.

My background in robotics only include the projects I worked on while in school, which were 3 different robots using a LEGO Mindstorm kit with a custom-built PLC that the TAs designed. The first robot had to be able to detect and push 6 empty soda cans out of a circle, a second competed with another robot to retrieve and deposit as many ping pong balls as possible within a hole ("golf"), and the last robot was a mad pong (the game) battle where the side with more balls at the end of a timer was the loser.

My goal right now is to get reacquainted with PLCs and robotics (like controlling LEDs and motors, reading from sensors, etc.), then advance into beginner projects  like a Line Following robot or obstacle detection/avoidance bot, then finally onto more complicated builds like CNC or mimicking driver-less cars.

Board footer