From Maslab 2011
(L)eighton, (D)an, (S)tan, (C)athy
D, L, S, C met a couple times for organizational purposes before winter break. Video conferenced with strategy and design details during winter break after each reading a few old papers and giving some thought to MASLAB
D designed most of the mechanical aspects of the robot and drew it out in SolidWorks
L looked into better batteries and encoders. Read about sensors
C went through the vision tutorial and wrote some custom vision code, started setting up development environment (git, eclipse, ant, botclient, feh, v4l4j, etc.), started sketching out software architecture
Day 1, Monday January 3
L, C we attended lecture and then assembled our pegbot and got it driving. Trying to get a jump on the work ahead of us, we took pictures of the field and of the balls with our webcam for vision testing and started to wire up several IR sensors and a gyro.
D finalized 4-bar synthesis for the mechanism that raises the ball hopper up over the wall. He also figured out how everything will fit inside the robot's circular footprint.
Day 2, Tuesday January 4
D got the majority of the detailed mechanical design finished.
C tried to fix a problem with the v4l4j library by setting up a VM with Ubuntu 10,10 and a whole new dev environment on her machine, since certain camera functionality didn't work without v4l4j and v4l4j didn't work with her version of Ubuntu.
C helped S and L set up eclipse projects and git working directories.
C, S, L discussed software design.
C went to get shop-trained.
L rigged up some sensors.
Day 3, Wednesday January 5
D did more detailed CAD, set up files for rapid cutting, and created an assembly plan so we can start building this weekend.
L, C attended lecture, troubleshooted and tested sensors (IR, gyro), worked through checkpoint 3
L assembled encoders, planning to put them on pegbot tomorrow
S worked on setting up software framework
C got camera working with personal machine (thanks, staff!), configured ant, set up convenient routine for running robot remotely
Day 4, Thursday January 6
L, S, C attended lecture
L mounted encoders, wired up LED for debugging, helped debug checkpoint 4
S continued working with software framework: main loop, state machine, sensor abstraction
C wrote and tested a basic PID controller, worked on checkpoint 4, wrote some edge detection code
Day 5, Friday January 7
D, L, S, C we met to get D up to speed, since he got in last night
D measured components to make sure that they fit the mechanical design, made a prototype roller to test out functionality
L wired up a controller for powering the roller's motor, helped C debug checkpoint 5
S helped C debug checkpoint 5, worked on wall following code
C worked on checkpoint 5, eventually got a PD controller running that tracks and approaches a red ball
Day 6, Saturday January 8
D battled with obstreperous machines and got everything cut.
L built a controller for our fourth motor, did other random electronics stuff, and built our very own field.
C started writing sensor classes and finished checkpoints 4 and 5.
S attacked wall-following.
Day 7, Sunday January 9
D machined hubs and didn't cut the hopper because he didn't have 1/16" Al.
D and L did post-processing on the cut materials and assembled the majority of the robot. Left to do is mounting the hopper.
C finished up sensor classes and wrote and tested color calibration code.
Day 8, Monday January 10
C wrote the checkpoint 6 code (button start, timing, color calibration) and wrote the ball picking up code in preparation for the mock competition.
S finished some classes for velocity control and wall following (still untested).
L mounted the buttons to start the robot for the mock competitions.
C, L and S debugged the robot at the mock competition. Then we won the mock competition!
C, S divided up the rest of the software areas.
Day 9, Tuesday January 11
L wired up limit switches and bump sensors and prototyped the break-beam sensor.
D cut and installed the hopper and worked on the ball intake ramp.
S debugged wall-following control.
C wrote software to optimize image processing and ported our mock 1 code to the state machine framework.
Day 10, Wednesday January 12
C got most of the rest of the vision work done, including smoothing, down-sampling, and worked on blue-line filtering.
S managed to get real-time parameter updating working! and succeeded with wall-following.
L did lots of wiring, installed break beam sensor, defined I/O ports, got the roller motor PWM circuit going.
D installed curved ball guide, wired up the new battery pack, and tweaked various things on the robot.
Day 11, Thursday January 13
C tested the code from mock 1 that was ported to the state machine framework, worked on more sensor abstractions, implemented timeouts.
S finished writing wall following.
D, L, S, C tested wall following on a simple field.
C wrote scoring code.
D, L, S, C tested wall following, picking up balls and scoring all together.
Day 12, Friday January 14
L, S, C tested, tweaked our code from the first mock competition ported over to a state machine framework.
L, C tested, tweaked our scoring mechanism and code
S, C made a state machine that incorporates wall following, mock competition 1, and scoring.
S debugged wall following
C added timeouts in code, wrote better color calibration utility
L, D, S, C tested, tweaked, tested, broke the robot (oops), tested, tested, tested, won mock 2, got a lot of sleep
D, L repaired the robot
Day 13, Saturday January 15
A slow day for us. We recovered from mock comp 2 and the all nighter that came before.
D fabbed robust "whiskers" for the bump sensors. Made a pack of A123 lithium polymer batteries that the bot could use.
L prototyped replacing encoders with geartooth break beam sensors. Attempted to acquire a static IP on MIT's wireless. Started rewiring.
S started to revise the wall-following code after mock 2.
C started improving vision code w/ down-sampling and reduced the number of stills sent to botclient.
Day 14, Sunday January 16
S coderodered all night and day and made a stronger, faster, smoother, better wall following state.
L got break beam encoders working!
D made more battery options.
C added a better vision calibration test, and made vision processing faster.
Day 15, Monday January 17
L, S fixed wall following - now it's a lot smoother.
S started working on a wheel velocity controller. Tabled it -- encoders aren't good enough, and motion is fine for now.
C started fixing synchronization issues in the vision code. Before, the robot was acting on incomplete vision data. Goal is to only pull complete (but slightly old) vision data.
C implemented more ball fetching and scoring logic and LED debugging (color indicators), started optimizing generation of RGB to HSV lookup table, trimmed timeouts
Day 16, Tuesday January 18
D, S, L, C tested and tweaked robot, modified gains, broke the robot, fixed the robot, test test test
C fixed concurrent programming issues, worked in stuck handling, bump detection, added more SM logic, added some random behavior
C, S worked on stuck detection
Day 17, Wednesday January 19
Mock 3 and sponsor dinner! We went in and did our run early in an attempt not to spend hours optimizing to each field.
Day 18, Thursday January 20
A slow day after mock 3 and sponsor dinner. We have begun to pinpoint failure modes and work relentlessly to resolve them.
C worked on getting stuck detection with respect to bump sensors working robustly. Wrote code for new bump sensors. Implemented basic memory scheme used exclusively for helping stuck detection. Reserved 26-100 for a full day of testing on Sunday.
S worked on stuck detection with respect to motor currents.
L was a debug demon.
D cut and installed new back angled plate, new front bump sensor, and moved angled IR sensors to the top plate.
Day 19, Friday January 21
S got relatively robust stuck detection using motor current and a double filter (sliding window + min time steps above threshold. Started working on encoder tick visualization and stuck detection. Started straighter wall following.
D and L mounted side bump sensors on the top half of the robot.
C fixed false scoring where the robot would hit a tower and see the yellow wall and try to score. More reliable scoring over convex yellow walls. More reliable ball counting with breakbeam. Faster ball scanning.
Day 20, Saturday January 22
D fixed the hopper, which was starting to get stuck when lowering
D, L, C debugged
S continued work on motor current
C improved scoring, ball collection, ball counting reliability and logic, added some time-based strategies, added code to prevent balls from jamming under the hopper
Day 21, Sunday January 23
With the blessing of MIT and the MASLAB staff we set up a full field in 26-100 and tested from 11am to 5am. The major fix was of the day was ball-jamming, which is no longer a significant problem thanks to some repositioning and a ramp to block balls from going underneath the hopper while it is extended.
Day 22, Monday January 24
Day 23, Tuesday January 25
Day 24, Wednesday January 26
S, L, D, C continued work on final paper
D switched out the drive motor that didn't break during the seeding tournament
Day 25, Thursday January 27
Day 26, Friday January 28