weekend project: minimalistic servo arm

There’s a video of it in its final state, with its multitude of issues. *sigh* one day I will actually finish a project. Only the first and last 5 seconds or so are interesting. Cost: ~$6 for the two microservos (!! so cheap), plastic is free, then the board+microcontroller battery is $25+$15+free (probably $10?).

After building hexa-rideablepod, I have definitely been more inclined to daydream about small or fold-able or compact project.

I should update my project todo list.

Anyway,
I started at ~8pm on Saturday and finished ~3:30 pm on Sunday (and yes, I did sleep a bit, as well as watch an anime movie (Summer Wars) …


what the cloud looks like in the future

… and spend a lot of time reading about inverse kinematics and poking at IK code I never ended up using).

I was inspired by http://www.instructables.com/id/Robotic-Arm-with-Servo-Motors/?ALLSTEPS

The code looks pretty straightforward.

// Given theta1, theta2 solve for target(Px, Py) (forward kinematics)
void get_xy() {
  actualX = a1*cos(radians(theta1)) + a2*cos(radians(theta1+theta2));
  actualY = a1*sin(radians(theta1)) + a2*sin(radians(theta1+theta2));
}

I was a bit confused by the definitions of the variables, since I haven’t done kinematics in a while. In the forward kinematics part it is essentially saying:

measuring the servo spline outer diameter in order to create lasercut female splines on my parts instead of using the proprietary servo horns. I started around this time. I swear I spent like 30 minutes trying to figure out how many divots it has (21) before just trial-erroring it, lol.

It gets to be pretty late in the day after I try to struggle to remember kinematics.
Here are some beautifully written kinematics notes I found linked from stackexchange question on drawing robots (robotics stackexchange! i’m excited).

Well, crap. I hesitate — do I want to try to get something done and present a project or not? I eventually decide (and with some support from the awesome Jessica Artiles) that I may as well get more feedback on my ideas. What is there to lose?

Thus, I emergency hot-glued some potentiometers onto pieces of plastic and used that as my control ( a simple mapping of potentiometer values to servo values is all that’s needed) instead of writing IK code. This arm controller design was inspired by http://www.maxjusticz.com/a-miniature-robotic-arm-controller/.

img src my design inspiration, except mine was jankier and used more hot glue

near the end of the designathon

I didn’t even have time to map things correctly, because I thought the presentations began at 5pm but actually they began at 3pm.

The lasercutter files looked like so:

It’s hard to see the cuts. But the pots have flats on their shafts, so the pot arms have semicircular holes that are tightly fit onto the pot shaft to couple rotationally. And for a minimalistic design, the robot arms have servo splines cut into them so they mate directly to the servo.

I had the most issues trying to make a press-fit bracket for the servo so that I could couple it to a base. The sides of the servo weren’t particularly flat so the rectangular brackets always broke on installation; I ended up with a C-shaped bracked design.

a frontal image

Also, the servos are amazingly torque-ful. I thought the base would be enough to hold it down but I ended up adding tape so that the servo arm wouldn’t swing itself around.

Also to fix, I actually need to build a platform so that the base is heavy enough that the servos don’t push it around and high enough that at zero degrees the width of the servo arm doesn’t cause it to hit the ground.

I also actually did calculations for the servo, or rather used a calculator online, to verify the servos would handle the sharpie weight. Not that I had different servos or anything. (screenshot below)

Oh, another issue I ran into, the servo.write() arduino library uses modulation from 544us to 2400us, while the microservos used 500-2400 us, which gave me this issue where the servos wouldn’t go all the way down to zero degrees when I used myservo.write(0). I took a quick look at “arduino-1.0librariesServo” and found out thatyou can specify these min/max values when you initialize the servo, e.g.

attach(pin ) - Attaches a servo motor to an i/o pin. attach(pin, min, max ) - Attaches to a pin setting min and max values in microseconds 

There was some other funky issue with trying to read a sensor while the servo was drawing power. Turns out I just need more delay in my loop.

Can’t think of anything else for now.

Material Costs

ebay $11.88 
“4x SG90s 9G CYS micro servo motor RC Robot Helicopter Airplane Car Boat + Horns”
so about $3 per servo

The servo specs: http://www.servodatabase.com/servo/towerpro/sg90

Pulse Width: 500-2400 µs sg90

Current Status:
I lost the code, and I broke some of the lasercut pieces, (the usb port for programming the arduino also seems to create a lot of sensor noise and the servo arm kind of did crazy robot arm thing and killed itself) so right now I re-lasercut  pieces and am re-writing the code. Should be up within a week.

===================================

Follows is a live blog of me working on drawbot:

===================================

ebay $11.88 
“4x SG90s 9G CYS micro servo motor RC Robot Helicopter Airplane Car Boat + Horns”
so about $3 per servo
let’s follow this tutorial
confirmation that 9g micro servo can indeed make robot arm: 
okay yay let’s do some math
thanks society of robots

alright, now let’s see some real specs on these micro-servos:

Stall Torque at 4.8 volts = 22.2 oz/in (1.6 kg/cm)

aww… so cute (compare to the 7 to 15 kg/cm ones used in “small” robot arms: http://www.nex-robotics.com/robotic-arm/robotic-arm.html)

So what are the tradeoffs? With a longer robot arm length, I get more range, but then I suffer torque-wise.

Also, need 4 dof — one for the pen to move up and down.

===
7:47pm
some research into simulating robot arms online..
http://wps.aw.com/aw_young_physics_11/0,8076,898588-nav_and_content,00.html

my initial thought was to use processing, but oh hexapods java applets >__<

okay the guy next to me at the hackathon, idk his name, says i should just write it in html5
[edit: it may have been vincent xue]

excellent plan, learn html5

mmm kinematics libraries http://kineticjs.com/

wah html5 games
http://raptjs.com/
okay let’s not get too distracted

hrm kinematics in flash
http://active.tutsplus.com/tutorials/animation/learn-about-linear-kinematics/
===
http://www.societyofrobots.com/robot_arm_tutorial.shtml

frick
i should catch up in 18.06, perhaps
http://commons.bcit.ca/math/examples/robotics/linear_algebra/index.html

==
okay, assume some weights
google: density of acrylic
1.18 g/cm³
thanks google

okay let’s make up some dimensions for a link length
4x16x3 = 192 cm^3 * 1.18 g/cm^3 =
226.56
thanks dot-gridded metric notebook and google

hrm, so about 1/5th of a kg. Wait what? that seems wrong.

oh units -> 0.3cm thick, so = 22.7 grams.

(from actual measurements:
15g for a 3*50*76 mm chunk, or 1.32 g/cm^3

okay now for
pre-built calculator!
😛

okay not operating near stall torque, that is good

(conversion N m to kg cm is about x10, if you let gravity ~10 m/s/s)
==
8:30
okay, screw this, I am going to CAD some stuff
later: end up not CADing anything
==
3:18
One anime later, and back to staring at robots.
i start watching youtube stanford lectures but am too sleepy
http://www.cs.unc.edu/~jeffi/c-space/robot.xhtml mmm canvas, 2010 2d robot arm simulator

hmm GUI via processing
http://luckylarry.co.uk/arduino-projects/arduino-modifying-a-robot-arm-part-2/

oh! excellent written documentation
http://www.micromegacorp.com/downloads/documentation/AN044-Robotic%20Arm.pdf

===
day 2
haha, still here. i’m so sloowwww at building things, all the other teams are so cool
okay i’m working by myself because i’m weird like that

eww, the servos are doing funky things where servo.write(0) doesn’t seem to go all the way to zero. let’s compare. hitec311 and sg90.
http://www.servodatabase.com/servo/hitec/hs-311

Pulse Width: 500-2400 µs sg90

Pulse Width: 900-2100 µs hitec311

hrmmm.

bam,
arduino-1.0.3librariesServoServo.h

   attach(pin, min, max  ) – Attaches to a pin setting min and max values in microseconds
   default min is 544, max is 2400

==
Adam Libert, DIY waterjet and crazy grad student, drops by and shows me cool robots:
http://medesign.seas.upenn.edu/index.php/Courses/MEAM520

==
serial monitor output:

º’j¤ º’jP ºŠjR ºŠjR º’jT ºŠjR ºŠjR ºŠjT ºŠjR º’jR ºŠjP º’jP º’jT º’jR º’jP º’jR º’jP º’jR º’jR ºŠjR º’jR º’j

Exciting, when I am commanding a servo, it pollutes the analogRead.
Well then.

Oh, I just needed to increase the delay (was using 1). Hmm. I’m not even writing to the servos. I wonder why initializing the servo means the serial loop can’t run fast enough.

==
how the heck does a kit for this not exist already?
http://www.bizoner.com/arduino-6-dof-programmable-clamp-robot-arm-kit-ready-to-use-p-238.html
$250, wow.

==
whee it’s 3 pm and i decided to pitch because I HAVE NO SHAME. 😀 It’s amazing what having the support of a friend can do for you.

MIT Founders’ Skills Accelerator 2013 application in non-form format

Ugh, the Founders’ Skill Accelerator application is in this dumb form format, where you have to fill out required questions on each page before seeing the rest of the application. I put in dummy answers and then compiled all the questions the application asks as of now.

In neat google doc form:
https://docs.google.com/document/d/1dgtuI_cpWE-TWoLtpPvW_wsbbLbqRnEQJoWFkgohl-c/edit?usp=sharing

I copied it below as well, but too lazy to fix the formatting.
==

http://entrepreneurship.mit.edu/fsa/faq
http://www.tfaforms.com/forms/resume/275181

Teams should commit to work in the FSA office space for the duration of the summer (June 1-August 31), and present at the Demo Day on September 7.

Page 1
Deadline: Friday, April 5, 2013 at 5pm EST
Bio (2-3 students) for each of us

How long have you known each other, and what have you worked on in the past? (Include past work done on this project, if applicable.)

Will the team member work in the FSA space Room E40-160 in Cambridge, Mass. for the duration of the summer (June 1 – Aug 31)?

Page 2
Your Project
We call each team’s work a “project” to emphasize the educational nature of the accelerator.

  • What problem are you trying to solve through your project?
  • Tweet us your elevator pitch — give us your elevator pitch in 140 characters or less.

  • Page 3

Proposed Milestones (aka how your team earns up to $20K!)
What do you want to achieve this summer? We will work with you to create rigorous yet achievable milestones, but we’d first like to hear from you. Where do you want your team to be by mid-September regarding customers, product, team, and finances? (list 2-5) For more explanation about milestones, including examples, please go to http://entrepreneurship.mit.edu/fsa

Proposed Customer Milestones (list 2-5 for each)

  • customers
  • product
  • team
  • finances


http://entrepreneurship.mit.edu/fsa/milestones
Page 4
Additional Questions
What inspired your team to get together and work on this project?

Who do you view as your competitors, and how do you differ from them?

Who is your target customer? (Hint: “Everyone” is not the right answer.)

Have you received any funding (including angels, family/friends, personal dollars invested, etc.)? Do you have any customers? (These two questions help us gauge your starting point, so don’t worry, there is no “wrong answer.”)

We will have a lot of applications for this program, so choosing our final teams will be tough. Why do you think you should rise to the top? What sets you apart from other teams?

 ==
Questions I need to ask:
Can I work out of IDC space instead (the MIT-SUTD international design center is a co-sponsor of this) of the E15 space?
Incorporation of media (e.g. video) into application?
Alternative resources (because way to hang by a thread until May 1st)?

Key dates:

  • Due Friday, April 5 at 5pm. (week after spring break)
  • Notified by May 1st.
  • Work in space for duration of the summer (June 1-August 31), and present at the Demo Day on September 7.

Notes:

A select number of teams (in 2012, there were 26) will be interviewed in person during the week of April 22. Of the teams interviewed, we expect to select 8 teams for FSA 2013, but the FSA organizing team has full discretion over the number of teams selected.

So… odds are not great. Stipends are nice. Stipends will feed me. Maybe I should look into trying to get no-strings attached grants from places?

Hexapod conference? how to plan a conference budget?

caution: hexapods ahead. cc0

I applied to the deFlorez Fund for Humor at MIT. The application deadline for grants over $1000 was due at midnight, and at around 10pm I decided to apply for funds for a hexapod conference.

I should hear back by the end of MIT spring break (the 30th).

Funding decisions will be made approximately two weeks following the application deadline. If an award is made, disbursement of the award will take place once sufficient funds have been secured to hold the event.

 If they fund this, it will be hilariously awesome. However, the application is so hilariously rushed and badly written that I am actually really embarrassed. It was so much fun writing it though. The coherent parts were written by the lovely +Julia Hopkins (http://fluidarchive.blogspot.com/), including this beautiful part:

Please explain in one or two paragraphs how exactly this event fits the de Florez Humor Fund mission of “impressing students with the importance of humor in all aspects of life, both personal and business.”

Let’s face it. An MIT student’s personal life is their work life. Too few are prepared to find the humor in this, or prepared to acknowledge such humor exists. This conference epitomizes silliness in research, silliness in personal projects, and silliness in how we envision the technical world around us evolving. Moreover, it highlights the importance of this silliness in a student’s daily life. The concept of a hexapod, the concept of investing time and resources into something that, in the end, probably won’t change the world (unless you build it several stories tall and figure out how to give it a Godzilla complex), resonates with many an MIT student. This conference is to help them both acknowledge and celebrate all of the things in their research, classes, personal lives (for those that persist in imagining they have one, in any case), and business which have not gone the direction they anticipated, or which did not provide as much of an impactful result as they were envisioning.

I would try and explain the humor of wrapping all of this up in a metaphor of hexapods and then go on to wax eloquently (or perhaps just wax) about the philosophical implications of how a project which has gone nowhere can still impart necessary skills and life lessons, but that’d be spoiling the fun of it. You should come see for yourself the wonders of dancing hexapods, the hours of toil put into this utterly silly contraption, and experience your nervous laughter as this parody evolves into genuine humor acknowledging all of the ridiculous things humans do which, somehow, make the world a better place. We’re just not sure how yet.

Well, anyway.  How do you plan a conference?

Well, you decide on a mission (yes, conferences have missions) and then make a budget. This is a most excellent guide on missions and general conference thoughts: http://ctb.ku.edu/en/tablecontents/sub_section_main_125.aspx

e.g.

 The field needs a conference.  There are several possible reasons for this:
  • The field may be a new one, and still lack a clear identity.  A conference could bring together the people who are building it, and help to define it.
  • The field may not be cohesive.  People in it may not know one another, may disagree on methods or other issues, or may simply not realize how many others have similar interests.  A conference could bring them together and create networks that would expand and improve the work.

The mission of this conference would be to promote silliness at MIT.

Here is the budget I ended up with:

.
Item Cost Comments
.
venue rental fee connections (held in the N52 IDC space, using equpiment there)
.
food and beverage fee 300 (can be acquired from dumpsters but kind of sketchy)
.
transportation & lodging scholarships 500 to help people make it here
.
A&V, recording, livecasting equipment 150
.
speaker fee bribe with cookies
.
activity fee 100 (lasercut hexapod material – bristol board)
.
miscellaneous fee 100
.
prizes from reuse
.
.
Total 1150

(budget table in neater formatting here)

And here is my (rambling because I had no time) proposal:
https://docs.google.com/document/d/1rq3cIFy9j1FjbIYA67gpZCksZKgtXzLZrxkLw93_v2s/edit

The conference schedule (tentatively planned for May 4th) would be

9 – 9:30 registration, breakfast
9:30 – 10 keynote speaker
10:15 – 11:15, break, 11:30 – 12 five-minute lightning talks (+ 5 minutes questions), nine total
12 – 13 eat food and make hexapods (invite general public, including kids)
13 – 14 hexapod dance-off, other hexapod competitions (e.g. fastest?)
14 – 17 conference talks about specific topics (e.g. the use of hexapods in educational kits, in adaptive terrain traversing (climbing trees, over rough ground), in millirobotics)
17 – 18 pm Poster session and demonstrations, appetizers

For reference, prior work:

http://youtu.be/pXMnbNoccgA?t=49s


http://ieee.scripts.mit.edu/urgewiki/index.php?title=S2012_-_Hexapods_and_Other_Cool_Things
An extracurricular undergraduate reading group I led last year.

http://katygero.wordpress.com/2012/07/17/hexapods/
The rapid fabrication hexapods we made during the last reading group session.


Hexapod Demonstration II from Katy Gero on Vimeo.