Team Twelve/Journal

From Maslab 2013
Revision as of 00:41, 30 January 2013 by Holden1 (Talk | contribs)
Jump to: navigation, search

Contents

Day 1: Mon. January 7

Preliminaries

First we divided tasks, so everyone is an expert in one area.

  • Melody is figuring out how Arduino works.
  • Roxana will figure out how all the electrical parts work.
  • David will figure out how to implement computer vision (understand OpenCV).
  • Holden will figure out finite state machines and navigation.

The roles may change as we progress. Other categories include understanding EE vs. MechE stuff

Our tentative meeting schedule is simply every day after lecture.

Building a robot

Laying out all the gadgetry on the table, we felt like we had just landed in the middle of a foreign country without knowledge of the language. We had no idea how to build anything at first, asked a lot of stupid questions (multiple times), and did a bunch of stupid things (screwing up screwing things in, connecting wires wrong, blowing up the battery, etc.). Roxana and Holden put the wheels, etc. together; David worked on setting up the laptop; Melody worked on programming in Arduino; Melody and Roxana studied and implemented the circuits; and then we all huddled around our robot making last-minute fixes. At around 7:40 THE ROBOT MOVED! Just one wheel because the other hadn't been programmed, but still. We were psyched. Team 12 was the eight (not twelfth) to complete Checkpoint 1.

File:Team12robot day1.jpg

Day 2: Tue. January 8

Planning

From 11 to 12:30 we brainstormed ideas of our robot. Our tentative strategy is to

  • hold onto balls until ~2:30
  • deposit balls into pyramid

We debated whether to use an arm or ramp to pick up balls. For tomorrow,

  • Melody will write a schedule for IAP
  • Roxana will sketch a design
  • David wrote out a strategy
  • Holden will plan the software architecture.

Checkpoint 2

In the afternoon we worked on programming the pegbot to turn at a wall. Roxana and Melody soldered the wires and connected the IR sensor. David learned OpenCV (for Thursday's checkpoint). Holden programmed a simple finite state machine to avoid walls. However, the program still had bugs in it when lab closed at 8pm.

Evening work

We met in MacGregor C-entry to make plans for the robot. We studied past years' designs. We decided that from now on

  • Holden and David will program the robot. They started by drawing a state diagram.
  • Melody and Roxana will build the robot. They sketched possible designs.

Day 3: Wed. January 9

Pegbot

Checkpoint 2

Holden debugged the code (the problem was calling arduino.run() before setting the connections). We went to the field to test. First one wheel fell off. Then we tested again and the other wheel fell off. Roxana fixed the wheels and at 3:10 we passed Checkpoint 2 (the 11th team to do so)!

Our robot now implements the following simple behavior:

  • It turns (left) when it gets close to a wall.
  • When it gets too close it backs up.



Plans, moving forward

After the checkpoint,

  • Roxana and Melody made robot drawings,
  • David used OpenCV to pick out a red ball from the camera image, and
  • Holden I modularized the code, and added the states responsible for looking for/approaching the ball.

Yesterday we came up with a "conveyor belt" design, but realized that we had misunderstood how the "Archimedes screw" (last year's winning design) worked. After we understood it, we decided that we would implement the Archimedes screw because it is a mechanically simpler way to lift balls.

We presented our plans and got some useful advice (for the builders, make sure the robot doesn't tip over; for the programmers, plan out the threads).

Roxana and Melody will work on a prototype for the robot. In the evening they went to Edgarton to cut two wheels out of pegboard, to make a rubber band roller.

Day 4: Thurs. January 10

David and Holden integrated the code for recognizing balls and the state machine, so that the robot will move towards red balls. Unfortunately we ran into technical issues with the arduino driver and camera.

Roxana and Melody planned the ball receptacle for the pegbot, and started assembling the pegbot with a fresh board.

Day 5: Fri. January 11

In the wee hours of the morning David got OpenCV installed on the eeePC and fixed the communication problem.

Roxana and Melody built a second layer onto the pegbot. The bottom layer will store balls.

David coded a ball recognizer using a breadth-first-search, adding neighboring pixels to the search tree when they are close enough to red in HSV space. Holden wrote a PID controller for approaching balls and logged sensor values.

We tested the robot on the playing field, but the code was buggy and the robot had a hard time tracking the ball. Holden (and Roxana) brought the robot back to MacG for more testing.

Day 6: Sat. January 12

Today we assembled the roller and ramp for the pegbot and made sketches for our robot. David got the vision code working: it now gives the coordinates of the center of the ball and the area.

Day 7: Sun. January 13

David coded the vision system to recognize multiple balls, pick the closest, and find the area (for distance measurement), and worked on a GUI for color calibration. Holden integrated the vision code with the state machine, and fixed a threading problem that made the vision system hog time. Roxana went to Edgarton to custom-make a metal part. (Thanks to Roxana and Melody for running places while the rest of us sat in MacGregor.) Melody and Roxana worked on drawing/CADing and assembling the whole robot (with electronics and roller). We tested the robot but then Holden disassembled the motor and broke it:(

Day 8: Mon. January 14

Today we put the pegbot together (we replaced the motor and secured the connections) and, after testing (we had the robot pause when turning when it saw a ball, to give the vision system time to react), went to do Mock 1. Our robot ate up 3 green balls; to get to the third ball it ran through a wall. For red balls it only got 1 before it got stuck. We were ranked first (we were the only team who showed up, took possession of balls, and had our scores recorded). We talked more about design for the actual robot. Melody will finish CADing tonight so the pieces can be laser cut tomorrow.

Day 9: Tue. January 15

David made a beautiful GUI for the program. Holden researched the IMU. Roxana went to Edgarton and Mark taught her to made an Archimedes screw. Melody finished CADing, and submitted the files to Tyler's group for laser cutting. Melody and Holden rewired the circuit.

The robot parts came in in the evening.

Day 10: Wed. January 16

Today we started assembling the robot. David worked more on vision and Holden started on basic mapping with the IR sensor and IMU. Roxana went to Central Machine Shop to get some parts and later to Edgarton to make some stuff.

Unfortunately, much of today's code got deleted (because we didn't understand GitHub) and then the robot body broke. Roxana laser cut the body again in the evening.

Day 11: Thu. January 17

Holden and David finished the code for mock 1 and everyone worked on assembling the robot. We met at New House in the evening, where we worked out a gear system connecting the motor to the wheels (though it didn't work very well).

Day 12: Fri. January 18

Incorporating suggestions from staff, we made the gears work better. We tested our robot but the computer wasn't communicating with the bot. We found this to be because of a disconnected ground wire. We started rewiring the arduino/motor controller (right now the wires are a mess). We fixed gear mounts, use cleaner, newer shafts, and get some advice on bushings for shafts.


Tomorrow, we will be tweaking robot motion, as well as adding the collecting mechanism, and re-wiring everything.

Day 13: Sat. January 19

Today we met at Edgerton to assemble things in the afternoon. We'll perfect gear rotation and re-wire the lot.

Alternatives to the gears will be CAD'ed, in case our fragile gear setup fails.

Coding in the future: alignments!

Day 14: Sun. January 20

Roxana and Melody designed and arranged a prototype-immutable helix at Edgerton. Testing happened at night.

Holden and David finished rewiring, soldering wires onto the arduino board. The wiring is a lot more compact now.

Day 15: Mon. January 21

Today Melody CAD'ed all the evolved prototype parts, and her and Roxana made sure that our parts were finalized, and had all the appropriate L bracket holes, motor holes, etc.

Arthur made a servo continuous for us!

Day 16: Tue. January 22

Today Melody and Roxana went to Edgerton. Roxana went to get CSAIL training (although she's not allowed to work in that lab...but now she can use a lathe!), and then cut some parts there with help from team 7. At night, we assembled the newly cut Hermes and attempted driving. Works!

David worked on edge recognition and Holden on mapping. Our plan is to make a map by identifying the position of walls through the camera.

Day 17: Wed. January 23

Our robot was working fine last night, and just as well as this morning. But then we had problems with the wheel coupler falling off, wires being snapped off the board, and the motor controller's logic not being hooked up to 5V (oops...that was bad). But nothing blew so it moved fine right after! Whoo hoo!

Mock 3 turned out to be a bit of a let-down because the python threads were acting up...it'll be fixed.

Melody and Roxana went to Edgerton to make a shaft coupling, and evolve our current helix. Hermes/baby is coming along!

At 5, all the teams went to a maslab sponsor dinner. Despite our robot/baby having hiccups, we felt proud. It's all still pretty amazing.

Day 18: Thu. January 24

David converted VisionSystem from a thread to a process, solving the threading issue. Holden worked on edge detection for mapping.

We completed checkpoint 5!

Day 19: Fri. January 25

Holden successfully implemented edge detection using HoughLines, and is working on processing the edges into a map showing the walls. David installed software on the small computer, helped put the robot back together, fixed minor software bugs, and had a lot of fun driving the robot remotely.

Melody and Roxana cemented parts of the helix together, and need to place the motor in the perfect place. All the various sensor mounts were made, and the process cemented so we can make more easily if need be.

Some Stream of Consciousness (bloggish): How to better secure the helix to its center-hold? Without welding (87$/hr at CMS), options are limited. Gluing radii sticks? Tape? Some kind of Z-brackets?:


| ___ | |o| |o| |_| |_|

or


/|

| O/ <- | _____/ |O| <-


Day 20: Sat., January 26

Holden and David worked on mapping.

Roxana and Melody made the ramp and other parts.

Day 21: Sun., January 27

Holden continued working on mapping. Roxana mounted the electronics nicely, and worked on various parts/assembly with Melody.

Day 22: Mon., January 28

We ate a lot of pizza today (which is supposed to be our prize for Mock 1, except that everyone else got pizza too).

After lab closed we congregated at NH3. Roxana re-soldered the wires and we assembled the robot, and made sure we put everything in the correct pins. Roxana and Melody mounted the tangle of wires and sensors beautifully. David added the ability to start the vision system and arduino connection remotely, set the ball color with a switch, and start on button press. We tested the robot a few times and it ran and caught balls!

Day 23: Tue., January 29

We got in at 10 and worked on miscellaneous issues and testing before our first two matches around 12. Our robot Hermes is good at gobbling up balls---in several matches it got 5 or 6 balls---and it goes for the cyan button to get more balls. We don't have the top hopper and servo, so we can't score yet.

Some things to fix: Hermes very good at running into walls and moving them. (Once it got stuck at the edge of the pyramid and turned it around several times.) Bump sensors keep falling off and we have to keep re-taping them on. When it gets into a corner it's hard to get out because it moves in a random direction, rather than turning towards open space (which the programmers will try to fix). The roller won't stop: right now the bot "vomits" out the balls at the end of 3 minutes (the roller spins the opposite direction by default). We still have a memory leak in the vision code.

While waiting for the final matches, Holden recalibrated the IR sensor. David fixed miscellaneous stuff in the code. Roxana and Melody went to Edgarton to make the top hopper. Melody worked on the ramp and tested it, but balls still had trouble going up.

We tied with team 8 (the deciding factor being that our robot went to the cyan button, so that we racked up 30 points, i.e., 6 balls), but won by virtue of the the "tiebreaker." Hermes went on to win the seeding competition; we are all very proud of herm.

Personal tools