Deprecated: (6.186) preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /afs/athena.mit.edu/course/6/6.186/web_scripts/2013/w/includes/Sanitizer.php on line 1550
Team Four/Journal - Maslab 2013

Team Four/Journal

From Maslab 2013
Jump to: navigation, search

Day One

Today is one of those days where everything that can go wrong, will go wrong. In lab we promptly shorted out our battery (luckily we had properly hooked up the fuse) and right before finishing code for checkpoint two we accidentally plugged something somewhere it wasn't supposed to go and released the magic blue smoke from our motor controller. ヽ(`Д´)ノ ┻━┻

The end of the day is starting to look up though. We have most of the critical modules of our robot SoldidWorksed, as of right now we're in the process of adding in the specifics such motor mounts and standoffs. Hopefully by the end of tomorrow we will have everything finalized so we can cut out the relevant parts out of acrylic in Edgerton. We found these amazing motors that fulfill all of the requirements for operating our hopper and ball collection system, and put in an order for it. It should arrive sometime between Friday and Wednesday.

Tomorrow aside from lecture we plan on replacing our motor control and getting checkpoint two to work before leaving. I am also going to Edgerton to get training so I can use their laser cutter.

Day Two

Today was much better than the day before. We got our power cable re-soldered to the switches make sense, making it impossible to short out our board like we did the day before. Lesson learned. Q(^_^Q ) After a little fiddling with our code we finally got our checkpoint two to work. It turned out our bump sensor needed a pull down resistor, because otherwise it was acting as an antenna and every time one of us got close to the robot it activated the switch, which gave the appearance that the code wasn't working. Just goes to show you all the small things you don't really consider while soldering up electronics that can really mess you up. We'll be twice as vigilant in the future.

At our meeting tonight we got our strategy and mechanical design mostly flushed out. Our cad model is coming along, and if we get our t-bolting to work the first time we can have a completed robot base within the next two days! ;) We also got a jump start on playing with vision code, however no significant progress has been made so far.

Day Three

Today was a rather successful day. We have a moderately complete Finite State Machine laid out, and we have planned much of our software architecture. We were able to complete the day's checkpoint without much hassle and are working to implement some of the suggestions offered by the staff regarding both the software and mechanical aspects of our design.

In addition, we have made some good progress in our vision code. By the end of the night we were able to identify red blotches in static images, and have almost finished implementing some basic edge detection with a Hough transform. Early tomorrow we should be able to identify red balls in images and determine their location relative to the front of the robot. We expect to apply this code to the video stream from our webcam at some point tomorrow as well, allowing us to implement a basic PID aiming function and align the front of the robot with the balls on the field.

In addition to this software progress, the mechanical design has made a lot of headway as well. We've decided to use a total of 4 motors and 2 servos to control our mechanisms. This number has been changing a lot over the last few days, but we believe that we have settled on a design that is both robust and mechanically simple(r). We've replaced the small, shady kit motors with more powerful Trossen motors from the stock bin for use in our drive train, and relegated one of the kit motors to the front roller. We designed a right angle gearbox for the motor we ordered yesterday, allowing us to power the hopper from the base. There will also be room in the base to mount the Arduino and the Dagu controller. This will keep our power and mechanical elements more consolidated and our total center of mass much lower. In addition, the basic design of the hopper is complete, and over the next few days all of the acrylic plates can be cut out and we can start assembly. Hopefully we will have a drivable base with a working roller on the front by Friday!

Day Four

We made a lot of progress today, both mechanically and with software. We were one of only three teams to successfully complete the 4th checkpoint, and our robot (still unnamed) could chase red balls around the practice field by means of vision control. We had code running that would analyze a video frame, find a red ball, determine a relative angle between our heading and the ball, then adjust motor speeds to aim at that ball. This was only a basic algorithm, however, and would simply stop moving when it couldn't see any balls. We used some simple proportional control to adjust motor speeds and hope to update this to some smoother PID code tomorrow. Our code was processing the full HD resolution from the webcam during our tests today, so the program was only getting about 10 cycles per second. We are going to downsize this resolution a bunch to try and improve this speed.

On the mechanical side of things the base is completely modeled. The two drive motor assemblies, front collection roller, central gear box, and battery housing are ready to be cut out at Edgerton tomorrow morning. We will also be stopping by the Hobby Shop to cut out our wheels and some sheet metal parts, as well as to manufacture some hubs and shaft sleeves. We hope to have the base assembled by the end of the day tomorrow!

Day Five

It's the weekend, so today was inherently pretty slow. While we planned on getting most of our things cut today, many small problems, such as where to place mounting holes for our hopper and designing our hopper supports, that we didn't notice until today kept cropping up. This prevented us from moving forward on construction. However, the good news is that by Monday all of these kinks should be ironed out and if we wake up early enough we can have our actual robot base done and use it for mock competition 1, which will be a huge advantage.

Another good note is that because our robot worked so well today we have a rather large head start on working on our vision code. We cleared the checkpoint of following green balls with ease, and got our frame-rate up. At this pace I am very hopeful for our performance during mock 2.

Day Six

We were lied to. As it turns out, Edgerton does not have a laser cutter, and we were not able to cut out our plate parts for the base. We are lucky enough to have a friend working in a lab with a laser cutter who is willing to help us out, but we have been delayed significantly. We have to wait until Monday or Tuesday to have the parts finished. So instead of having a functional base in time for Mock 1, we are now planning on having a completed base by Mock 2 on Friday. Hopefully this base will also include a front ramp, roller, and funnel, so that incorporating the hopper will be easier later on.

We planned on having some actual pictures to upload to the journal showcasing our beautifully complete base, but we'll just upload some screenshots of the solidworks design instead.

Complete base design.

This is our base assembly, made using a combination of t-bolted acrylic plates and standoffs. The goal with this design was to keep as many of the heavy parts as low in the frame as possible. This should help keep the center of mass of our [very] tall robot low. As such, every motor is mounted below the top of the base, and a central gearbox is used to transfer the motion through a right angle to power the hopper. We spec'ed out a motor to use in this gearbox that had double the power required (determined with some conservative calculations), but we don't know exactly the final speed (and therefore the gear ratio) we'd need for the central brush. To that end, this gear box was designed to have multiple configurations; we can assemble it to produce either a 1:1, 1:2, or 2:1 ratio between motor and end shaft.

Adjustable gear ratio right angle gearbox.

A similar design strategy was used for the gearing on the front roller. There are holes in the roller mounting plates that can accommodate gears in either a 3:1 or a 3:2 gear ratio, without changing the motor, roller, or plate position. This should allow us to play with different roller speeds without much hassle.

Adjustable gearing for the front roller.

Day Seven

Today was the first Mock Competition. Initially we had planned on having a rolling base ready for this competition, but due to some extenuating circumstances that plan fell through. Last night we decided instead to focus on using our Pegbot for the mock and began writing up the necessary code. We implemented a timer that would stop the robot after 3 minutes and transferred our code from Matt's laptop to the eeePC. It's worth noting that our vision code, which ran at about 10 fps on Matt's laptop, only manages about a frame per second on the smaller computer. We'll have to work out ways to improve this.

During the mock we managed to displace 2 balls in an official trial, without using any form of wall following or navigation. Our robot simply spun in a circle until it saw a ball then drove at it. The slower frame rate on our vision code ended up being a detriment to our performance, as our robot would turn faster than the vision code could process, meaning we would look past a ball before the robot realized a ball existed. We tried lowering the turning speed to allow the camera more time to keep up, but the kit motors used on the kit bot did not have enough torque to spin the robot at low enough power. This shouldn't be much of an issue with our final robot, as we are using bigger motors.

We also noticed that the square wheelbase of the pegbot tended to get stuck quite a bit. When the robot lost sight of a ball it would try to spin in place and search for more, however the corners of the pegboard would often jam against the wall of the field or the tower, stopping the robot completely. This should be rectified on our final robot by the circular chassis. Furthermore, our final robot will have bump sensors set up across the front that should allow us to further prevent stalling.

Day Eight

Today was a big day mechanically. We were able to get our parts cut out after a few days of setbacks with laser availability. With these parts completed and our McMaster orders in hand we began to assemble our robot. We have many more pieces to machine (like hubs, standoffs, axles, and supports) but the machine is beginning to take shape.

Some of the pieces of the base mid-assembly.

Above are a few of the base parts as they are being test assembled. We are waiting to put the robot together fully until all of the remaining parts are completed. Shown below is one of the mounts for our drive motors. A plate on standoffs and a bushing support the end of the motor shaft and distribute the weight of the robot. A wheel has been cut out of aluminum to fit here, but cannot be attached until the hubs are complete. We're going to be doing a lot of machining tomorrow and Thursday to try and finish up the base in time for Mock 2 on Friday.

Half of the drive train, sans wheel.

Day Nine

It was another successful day of robot building for Team 4 today. After 8 hours or so of machining we have two completed drive assemblies, gear boxes, and a front roller. Tomorrow morning we are getting another replacement part laser cut and then we will be able to fully assemble our base. Once that's done we can add the ramp, put the rubber bands on our roller, wire up the motors and the controllers, transfer our code, and start practicing with an actual robot frame instead of the pegbot. Exciting.

On the software side, we were able to get the code architecture laid out and started putting together our FSM. We're aiming to keep it very modular to make testing and debugging easier. By Friday we should have code to find and collect balls, and by early next week we'll have the mechanisms in place to score them.


Day Ten

We finally got the base of the robot built and added a few temporary parts to help our robot out during Mock 2 (namely a cardboard box hopper). Especially with the upcoming holiday and the closing of a lot of machining spaces, the MechE's really want to get everything cut as soon as possible (Friday or Saturday). On the software side, we got the IMU to work with the Arduino interface, but we're having trouble getting it to work with the Python interface after adding in gyro code, which is pretty frustrating. Otherwise, our vision code is getting along pretty well, though we still need to implement code to flesh out our FSM skeleton. And we need to get cracking on our other sensors.... Anyways...


Day Eleven

Today was a mixed bag mechanically. On one hand we got the pieces for our central gear box machined, a preliminary ramp made, got our tower design all finalized and ready to cut out, and scored some more free stock from CMS (I love you Richy <3). However, even though everything was finalized, the OMAX software reacted unfavorably to our waterjet-time saving layout and refused to publish the tool paths correctly. This is a huge setback because the hobby shop isn't out tomorrow, so for now it looks like we're going to have to resort to cutting, drilling, and bending out all 8 of our tower supports tomorrow at Edgerton. Bu hao _| ̄|○ On top of all of that, we discovered myriad mechanical problems during mock 2 today which require us to redesign a bit, but the biggest issue is that we burned out the two provided drive motors we were using to drive our ball collection roller. We'll see what can be done about that tomorrow though.


Day Twelve

Mechanically, a lot of progress was made. We also decided that new roller/roller motor mounts will need to be made to lower the roller and fit the new motors, and will hopefully be laser cut by tomorrow. The coders were distracted by Mystery Hunt, but we have a simple method of determining the heading of the robot, though we need a way to make it reliable even with the motors running.


Day Thirteen

Not much progress was made, especially since Mystery Hunt was wayy too long. An attempt to manipulate accelerometer data into a heading angle was made, but most likely won't be very effective.


Day Fourteen

As tomorrow is Mock 3, we're frantically and furiously assembling the robot, which looks cool, but a bit like a bee due to our color choices... Anyways, there are a lot of small mistakes (in CADing, having the right nuts and bolts) are showing up. We'll blame this on the sleep deprivation of our MechE's. In terms of coding, we seem to have pretty fast and accurate color detection, and we're starting to get together our finite state machine, and incorporating it with our sensors and stuff. Hopefully we'll have a reasonably fleshed out state machine for the Mock. ...

Day Fifteen

Mock 3 was a bust, but we did manage to get possession of one ball, moving us firmly into not-last place ( ^_^)v. Uncovered a few mechanical improvements that we'll be implementing over the course of the next two days, including mounting bump sensors that can actually bump when the roller is attached. (・。・;)

However there was one huge success of the day:

OUR HOPPER IS DONNNNEEEEEEE!!!!

Needless to say, we're pretty damn chuffed.


Day Sixteen

Tested out the wheels on the new foam, and it turns out we can not destroy the playing field if we put tape around the wheels, unfortunately hiding the monstrous spikes that gave our robot character. Unfortunately, we also realized that our set screw threads for our hopper motor were messed up, so we need to redo that...


Day Seventeen

After taking a break and going ice skating, and then with drunk partiers crashing our robot work space, we managed to get started working on PID and that's pretty much it.


Day Eighteen

We finally got PID working! Which was somehow more annoying than it should have been? Especially since Git erased our work when we merged it with the master branch... We also started finishing our finite state machine and panicking that the seeding competition is this Tuesday :O Otherwise, mechanically, we got started on fixing the robot and installing the final parts (like the shooter ramp thing). We still need to work on the QR codes because that would be awesome, and we need to do a lot of testing, like for scoring and driving/our PID things.


Day Nineteen

Mechanically, we finished our scoring mechanism and the servo gate. We also tuned the PID constants and tested it with the robot code that is still under development. We also tested how much slower the robot responded to the vision code when multiple threads were run. Having multiple threads didn't seem to slow it down significantly, but starting and stopping threads can be done more effectively, probably.


Day Twenty

Our tower motor broke.

In other news, we're trying to get a replacement motor set up, without having to redo everything. Still working on the FSM and editing out things we haven't gotten to yet (like the QR codes and stuff). We're mostly focusing on getting wall following to work, which we should be able to get working with PID.

Personal tools