Lab planning progress update.
Last week, I met up with one of the MIT staff, Steve Banzaert, who handles a lot of the edgerton center and lab spaces in the campus.
It was definitely an eye-opener because he addressed issues I hadn’t thought about.
One of the things mentioned again was that money and equipment wasn’t the problem. However, instead of effort being in the way, it was logistics, politics, ownership, management and safety.
It turns out, every 2 years or so, a few people from dormitories, fraternities and other living groups come out and propose a laboratory space. So it’s not uncommon that he’s meeting up with me to talk about this kind of idea. haha.
Anyway, he said that most fail because of the planning stages. After reviewing the proposal draft I had, he quickly addressed these issues:
Constitutional Space: Who owns it? Is it a commercial space or an academic space?
Insurance Policy: Depending on the ownership, there are liability issues that needs to be addressed. If it’s MIT, then they have their own protocol. If it’s a commercial or private owned, a 3rd party insurance company needs to get involved.
Other Important Logistics:
- How is access granted?
- Who manages this place? Is there only a single person in charge?
- How is this going to be maintained? Long term is the goal here but once the person managing it graduates, somebody needs to take over.
- What are the safety protocols?
- What is the sustainability plan?
If you notice, there is nothing mentioning money at all. It’s all politics, liability, safety, and management. The Yale accident recently doesn’t help either.
Anyway, the next step is to talk to the EHS (Environmental Health and Safety) in MIT. I also need to meet up with the alumni board again and report about the progress.
But before I meet up, I need to make a compilation of tools, materials, and safety protocols attached with it.
OmniDrive Completed: Speed Assembly above
The video shows a 16x Speed Assembly of almost the entire thing. The bloggie battery kept on dying after being on for 3 hours at a time. I did manage to capture some key moments, but otherwise, it does give a general view of how the robot was assembled.
The past 2 weeks have been pretty crazy to say the least. When the parts came in, we started building as fast as possible, and the first run through was completed by Friday of last week. The sample video can be seen here:
As for specific engineering & construction notes, I’ll start from where I left off last time.
Assembling and Wiring
After building the main chassis frame, it was time to mount the electronics and the motors.
Because the wormgearbox motor has a lot of torque, it’s very common to use a direct drive. In many cases, this simplifies design and construction a lot.
The best way to show how we mounted the wheels to the motor is using the exploded view from SolidWorks:
Spacer and a 1/4-20 Screw keeps the omni-wheel place. The NPC motor happens to have a 1/4-20 tap hole at the center of the shaft, so this was pretty convenient.
The spacers on the other hand wasn’t so convenient. If you’ve cut spacers before using a hack saw or band saw, you’d know that it’s never accurate. On a plus note, it was a bit idiotic for me to purchase spacers that had an EXACT 0.5in Inside Diameter (ID) delrin tube.
We had to cut the delrin to simulate a C-Clamp, and pretty much force it to work. On the plus side, this gave room to the key of motor so that both wheel and shaft turn in sync.
After doing one successfully, we just repeated this pain/reward cycle 3 more times:
(guess what the mallet did there? Yup. Forced the ~0.5in ID Delrin to the ~0.5in OD shaft).
After the wheel and motor module was assembled, it’s really a matter of putting it all together.
The electronics was also straightforward. I’ll give a paint drawing of the schematics, but really it’s just:
12V Battery -> Motor Controllers - > Motor.
The 12V battery also powers the Arduino using the female VIN pin header on the board. The arduino has a 5V voltage regulator that can handle around 20V of battery input.
Here’s an attempt to demonstrate the wiring through paint:
Anything multiplied by 4x tends to look more complicated than necessary.
Look at the wiring though:
Messy Christmas lights. (If you have a keen eye, you’ll notice there aren’t any VICTOR 883 speed controllers. I’ve explained this below).
Addressing Other Issues
Primarily, there are 2 issues with the design. One was addressed properly without much change, but the other is a bit more difficult.
High PWM Frequency - If you notice during the video testing, the motor has a very loud whining sound. Initially, we tried changing the PWM frequency sent by the arduino using this PWM Library.
This led to unfruitful results. I spent a lot of time trying to figure out why changing the arduino frequency doesn’t do anything. When I contacted Shane from MITers, he said that the VICTOR 883 Speed Controllers will receive the standard RC signal from the Arduino, and the VICTOR will use its own 100Hz frequency.
He suggested to change to a different speed controller.
Here’s a cool fact. The human hearing range is from 20Hz - 20kHz. All you have to do is put the PWM frequency in the » 20kHz range and humans won’t hear it anymore. It’s still there. You just don’t hear it. Cool huh?
I ended up just following Shane’s recommendation and asked my supervisor to buy Four of these:
It’s a Syren 25A Regenerative Motor Controller. EXTREMELY EXPENSIVE! In essence, it acts the same as a VICTOR controller but its transistors switch at a rate of 32kHz. 12,000Hz above the range of human hearing, so there’s no way you would be able to hear the PWM frequency.
That did just the trick!
I have another video of us testing the new motor controllers, but I’ll save that for another post.
Addressing Traction/Slipping: If you watch the test run video again, the wheels slip whenever only 2 of the wheels are only functioning. The quick easy fix is to always maneuver using four wheels. But there are some movements where you just want to use 2 of the wheels…
This would’ve been easily solved using a suspension system. This would’ve been a bit more complicated and a bit more expensive. My previous design had it, but it did seem overkill and I believe $1000.00 more expensive.
In any case, I’ve been thinking about how to add a spring system to what we have now, and after a week of doing the problem, there’s no easy solution unless I create a new motor module.
So how do you attain traction at all times without using suspensions? There’s another design that we’ve been thinking of doing. Instead of using 4 omni-wheels, we would just use 3.
This is the tri-omni design:
We would’ve built it this week, but unfortunately the water jet wasn’t really available. In addition, I hate dismantling a successful, functioning robot to create an unsure robot.
There’s a few issue with the tri-omni design. The Center of Gravity is the most obvious one.
As for controls, it’s a simple linear algebra problem where you only use 2 of the vectors and make the 3rd vector dependent on it.
Anyway, We ended up not building this design, but maybe future UROPs can try this out. I’ve already figure out the wiring, programming, and mechanical design so all that is needed is manufacturing and assembly.
Other Traction Solutions:
I weigh 140lbs. When I rode the robot, it had a bit more traction than usual, but it’s not that great. Putting weight on the robot obviously increases your dynamic friction but it really won’t help unless the floor is even.
So how did we solve the traction problem? We didn’t. It’s sad that it has this critical flaw when it was first addressed from the very beginning of the design stage.
Other Aesthetic Development:
We proceeded to make the robot look more presentable.
Look, Black acrylic sheets:
And look how awesome it is when we mounted it:
I think I’ve addressed all of the assembly, wiring, and how we addressed all other issues.
Also, here’s a quick summary:
TL;DR: Robot is finished. Awesome Speed Assembly Video. Awesome Robot Testing. Assembled the Wheels. Demonstrated Wiring. Changed Speed Controller to Syren for quietness. Didn’t address traction. Covered the bot with black acrylic for style.
Machining + Assembly.
The deadline of this project is next week. The progress thus far? Way ahead of schedule. ;]
There’s been a lot of progress in terms of machining and assembly, and it just got better when all of the parts came in yesterday.
In order for the robot to be built, I had this mental task list:
1. LaserCut Acrylic Electronics Base
2. WaterJet Motor Brackets
3. Cut 80-20’s in the Bandsaw.
4. Purchase all accessories from McMaster
5. Assemble and Wire Electronics
Here’s what happened this past week.
Turns out, there was a bunch of 80-20 parts downstairs in the basement. Upon acquiring them, my coworker and I marked them, and went straight down to the machine shop to cut them to size in the bandsaw.
Typically, this should be about a 30 minute job at most. But, the band saw we used had a really out-dated blade. It cuts 1/10th of the time, and caresses your stock 90% of the time. -_-.
Still, we managed to just cut all of the essential pieces to make a the simple square shaped base.
We couldn’t really do much with the 80-20 pieces without having connector pieces. So we went ahead and started laser cutting the electronic base.
The solidworks drawing was saved as .dxf, imported to AutoCad, RESCALED and then printed on a 10% speed, 70% power setting.
Later in the week, we would find that the piece didn’t account for inaccuracies. Regardless, it was already 6:00pm, so it was time to go home.
I scheduled a meeting with Ken, director of the MIT Hobby Shop, to help me water jet the motor mount pieces.
Ken was very helpful, and we finished manufacturing the part with minor issues
such as almost ruining the waterjet nozzle and z-axis.
This piece costs around $30 to make. It’s not so bad when you only have to do it once, but we have 4 of these, so it’s actually $120.00! It’s $3 a minute so manufacturing time was around 40 minutes. Note to self: Don’t have too many fancy rectangles. Those spike manufacturing time and also price very quickly. XD
Still, water jetting is pretty awesome. Observe:
It’s a perfect fit. ;]
We tried to do other machining stuff back in the lab, but it was futile since we didn’t have the right tools.
Anyway, at the end of tuesday, I made sure all of the parts we need would be ordered from McMaster. Which means, parts won’t be coming in pretty soon. Or so I thought…
I decided to come in late to work, and by the time I got there all of the parts was delivered. Talk about awesome timing. :D McMaster hasn’t failed me yet! The parts list was around $300.00. 80-20 parts from McMaster are pretty ridiculous. If you’re worried about price, don’t buy 80-20 from McMaster! It’s exactly like buying from a middle man instead of the actual supplier.
In addition, an L-bracket from them cost about $5.00 ea. Unthinkable! So my supervisor said I should just make my own. >.>
Anyway, we spent too much time machining on this day. No actual assembly was done. By machining, I mean making these annoying L-brackets:
Again, we used the same weak band-saw which cut 10% of the time and caresses your part for the most part.
After cutting them to 1in( + or - 0.2in) pieces (This was ridiculously inaccurate. Damn band saw). We had to drill the holes. The holes have about a 0 tolerance in terms of being lined up.
Lucikly, this machine was there to save the day:
After using an edge-finder, a digital read out (DRO) and a part stop, I made 24 accurate L-bracket holes. If you’re mass producing something, Use the same reference point and a part stop! Super helpful and increases productivity.
But seriously though, I need to stop designing with these crap. But the only alternative I know is using plates or welding (a skill I still need to learn). >.<
Anyway, that took a whole day to do.
Come Thursday, I thought we would be assembling the entire day. But again, unforeseen problems unfolded.
I had to mill out certain pieces to make room for a notch on the motor I decided not to model earlier. I knew not modeling that piece would hurt me later on! Here’s what I mean:
And here’s our solution:
Anyway, the remainder of the afternoon, (3pm - 5:50pm) was spent on assembling.
Here’s how far we got:
Not too bad. And plus! The manufactured L-brackets worked. Real high tolerance holes can be achieved with consistency and good setup.
Main chassis + Speed controllers are setup.
Also, if you notice, the acrylic base is now black. Again, this is because of the brackets. I modeled the brackets to be the ones from the 80-20 retailer. But when we made our own brackets, I didn’t take this into account. So we quickly laser cut a new piece.
Tomorrow, motor assembly and wiring will be done.
Let’s review my checklist again:
1. LaserCut Acrylic Electronics Base 2. WaterJet Motor Brackets 3. Cut 80-20’s in the Bandsaw. 3.1 Do extra Machining with 80-20s 4. Purchase all accessories from McMaster
5. Assemble and Wire Electronics
Assemble and then present! We have 24 hours. :]
OmniDrive Version 2.0
10 Hours later, an initial CAD model is finished!
Upon reviewing the first design of the the omnidrive all-purpose-platform, there was a lot of talk between my supervisors about being too heavy-duty and overly designed. Naturally, a redesign is much needed.
The biggest opposition beforehand was the complexity of the suspension system. And arguably, it turns out the platform won’t be experiencing any rough terrain and probably won’t need much dampening system anyway, so this really had to go. I actually wanted to see if I can make a custom drive system with a working suspension, but I suppose practicality dictates the situation.
Regardless, this time around, the specs of the robot was more defined. I finally know the boundaries I need to work with. My supervisor also decided to start buying the materials. Because each part cost almost $100.00, it’s pretty much guaranteed to be used once bought. Which means, It HAS TO BE IN THE DESIGN.
In some cases, this can be problematic because your design will be restricted. BUT! I actually prefer this because before the design specs were completely open-ended that there was a bunch of solutions. Selecting some constraints lets your final design converge.
-“Specs” for the new design:
-Must be as small (length and width) as possible
-Must be as short as possible
-No more crazy suspensions
-Must be able to carry arbitrary load (~200lbs)
In addition to specs, certain materials are also narrowed down. These babies were finally bought:
It’s a dualie-omni wheel because it’s literally 2 omni-wheels in one. The primary difference is that the wheels were offset from each other.
As for the motors, the real goal is to make them operate as quietly as possible. I asked for MITers for assistance and it seems that the best way to go is to use wheel chair electric motors. But these are extremely expensive… So upon further “research” I stumbled upon wormgearbox motors. It was a battle between:
I tested the motors, and running them on a 20% duty cycle (around 2V) with the VICTOR883 showed that the latter motor(NPC 41250) was quieter. I’m actually glad because this motor has mounting holes perpendicular to the drive shaft so it’s a lot easier to mount. All it needs is some water jet part.
Here’s the motor mount:
SolidWorks makes it really easy to make custom mounts and faceplates using circles lines and offset entitites. You can also make them fancy with fillets. XD
In the design, I also wanted to maximize the room for electronics but at the same time not ruin the symmetry of all the motors. The limiting factor to this is the motors.
In order for the platform to be as short as possible, the motors needs to be mounted horizontally. But since the motor is not symmetrical, the entire platform must be bigger to compensate for this.
Here’s an example trying to optimize space but losing symmetry:
You can clearly tell that the motors aren’t aligned.
I’ve put lots of constraints so that it’ll be symmetrical everywhere giving a square base while having the geometric centroid on the center of the robot:
Thus, this is the minimum required shape to retain perfect symmetry given the motor dimensiosn.
The design can actually be further simplified by not having shields that protect the omniwheel:
Practically, this is the way to go because it conserves space. It’s only 21”x21” from its maximum points. But, I think you’ll agree with me when it doesn’t look as COOLas having shields:
With Shields: 23.5”x23.5”
It’s only a 1.5 inch gain for more space for payload and *cough*coolfactor*cough
Overall, I’m pretty content with the design. It stands 7 inches tall from the ground to the maximum height. It’s pretty short, but wide and powerful enough for almost any payload.