Thursday, December 27, 2012

tv: How to Wire a Robot

Season 3 : Ep. 8 | 9:18



In this episode we consider what goes into wiring a robot. We look at a cheap source of 24 gauge wire, look at standardized connectors, and go over wire organization.

Thursday, December 20, 2012

tv: Robotic Leg Assembly

Season 3 : Ep. 7 | 3:23



In this episode we assemble the latest version of the dogBot leg!

Saturday, December 8, 2012

tv: Servo Animation

Season 3 : Ep. 6 | 4:18



In this episode we plug in our hacked servo. This hack allows us to not only tell the servo what to do, but also record movement. One application of this is to record a manual motion while the servo is disabled, then enable the servo and play the motion back! - Season 3 : Ep. 6 For more episodes, visit: http://tv.onshoulders.org

Test Bed Details:
Hardware - Boarduino
Arduino Code - https://gist.github.com/4241105
Wiring - White wire to a0, with voltage divider
Need more test bed details? Just ask.


I'd like to thank jes1510 for his excellent work getting me started with servo hacking: http://forums.trossenrobotics.com/tutorials/how-to-diy-128/get-position-feedback-from-a-standard-hobby-servo-3279/

Thanks for watching and don't forget to subscribe!

Thursday, November 29, 2012

tv: Hacking a Servo Trimpot

Season 3 : Ep. 5 | 3:28



In this episode we hack the trimpot of a servo in order to read the position of the servo. This servo will be used in an ongoing robotic dog project.

Thanks for watching and don't forget to subscribe!

Wednesday, November 14, 2012

tv: Accelerometer & Proximity Sensor

Season 3 : Ep. 4 | 3:59



In this episode we add a 3-axis accelerometer and an infrared proximety sensor to the DogBot foot.

Visit the following links for more information on the sensors used in this episode.

http://www.adafruit.com/products/163
http://www.pololu.com/catalog/product/1132

Go here to get a tutorial on how to write visualization apps that can interface with an arduino:

http://www.codeproject.com/Articles/389676/Arduino-and-the-Web-using-NodeJS-and-SerialPort2

Thanks for watching and don't forget to subscribe!

Sunday, November 4, 2012

tv: Force Sensitive Resistor, Part 2

Season 3 : Ep. 3 | 3:52



In this episode we will add the force sensitive resistor to the DogBot and do some preliminary tests.

Saturday, November 3, 2012

RepRap: Halloween Costume

I printed myself a pair of Harry Potter glasses for a Halloween party! How cool is that?

Even cooler is the fact that I didn't design them! Downloaded them off of Thingiverse, I did. http://www.thingiverse.com/thing:12993

I love this ecosystem!



Sunday, October 28, 2012

tv: Force Sensitive Resistor, Part 1

Season 3 : Ep. 2 | 3:54



Who wants to incorporate touch sensors when you can incorporate force sensitive resistors? In this episode we start to explore a force sensitive resistor for the DogBot!

Sunday, October 21, 2012

tv: Season 3 Begins

Season 3 : Ep. 1 | 2:47



I introduce my new workshop in this episode.

Wednesday, October 17, 2012

RepRap: Unboxing

As you know, I moved recently. I don't have many possessions, but one of my most prized possession is my 3d printer. I mean, I printed it myself on a printer I made by hand using primitive wood tools. I could make another one, but I don't want to start from scratch again! I'd rather use the printer I have to print my next one. So when I was packing up my small apartment I took extra care to pack my printer.

I started with a piece of 2 inch thick insulation board.


I made a box out of it.


I then wrapped the box in a whole roll of plastic moving wrap.



And if anyone forgot what was in the box I labeled it properly!


This box was the printer's home ever since. I needed time to move in and set up my workshop before I wanted to risk stripping off the cocoon. But today was the day!




And here it is getting acquainted to its new home!


Does it still work? I hope so! I don't have time to plug it in...

Thursday, September 13, 2012

Dogbot: A Threshold

If you've ever read anything by Joseph Campbell you'll be introduced to the motif of the threshold, e.g. Adam biting the apple or King Arthur pulling the sword from the stone. This motif, or theme, is quite prevalent. You have passed over the threshold, the line in the sand, and you will never be the same person again.

That is how I feel right now. I feel that I am passing over a threshold as I hold in my hand a parcel who's contents change... everything. I haven't opened it yet because I'm basking in the moment.


Before I open this box I am a computer programmer, and an Arduino / micro-controller programmer. After I open this box I am also inevitably an embedded linux programmer. You may ask yourself "What's the difference?" I will try to explain.

Embedded linux brings to robotics a level of computing power 10 to 100 times that of hobby micro-controllers. It also brings a suite of tools that is growing so quickly that it's almost impossible to stay on top of! Embedded linux will change hobby robotics drastically in the next few years! I would have made this move to embedded linux a year ago if I had a reason, but the added power seemed overkill. Now it's exactly what I need.

Box opened... Insert BeagleBone!


It's true that an Arduino can pull in 44 sensor values and use them to calculate 16 servo angle values in real time, but how complex of a calculation will it be capable of making? An Arduino Leonardo operates at 16MHz, vs. 720MHz for a BeagleBone. An Arduino Leonardo has 2.5KB of RAM, vs. 256MB of RAM on a BeagleBone. Finally, an Arduino Leonardo has 32KB of storage, vs. 4GB for a BeagleBone. These are really powerful stats! In other words the amount of intelligence that the BeagleBone is capable of putting into its calculations is close to or much greater than 50 times that of an Arduino. This is the difference between the very mechanical technology of a Model T and the modern computer controlled vehicles with Electronic Stability Control.

Don't get me wrong. I'm still using an Arduino in the Dogbot, right next to the BeagleBone. Arduino is a powerful platform. It has an important place in hobby robotics. That's why I'm using both!


On a final note... isn't the Dogbot and the BeagleBone just a match made in heaven?

Friday, September 7, 2012

Dogbot: Progress

In the last few months I spent two weeks in Hawaii, I moved 6 hours outside of Philadelphia, my wife started a new job, and we got an actual dog. In other words, life happened. But I'm still passionate about robotics when life isn't happening, like right now.

My 3d printer is still in a box and may still be in that box for the weeks to come, but my computers are set up. I started using Solidworks again and am thoroughly enjoying the experience! The tool is truly inspiring, letting me work out ideas and inspire new ideas in real time. Here's a render of my current Dogbot leg design.


Other than designing parts I've also put a lot of thought into the electronics. Since I don't have the time to work on my Mill right now, or to design my own boards, I am going to use the Mux Shield on an Arduino Leonardo.


I need the Mux Shield because I am using 16 servos in the design and at least 36 sensors, including pressure sensors, accelerometers, servo hacking, and depth sensors. Yes, I always bite off more than I can chew. I have to say, it's good to be back!

Update: Here's a video render of the new leg design.


Saturday, May 26, 2012

Dogbot: Openscad vs. Solidworks

This is a tough post for me to write because I am still processing a decision I need to make. Hopefully this post will help me, as well as you.

First, a little background. I started work on a dog robot a few years ago. One key aspect of the design was the solid bits that I printed on my 3d printer, which connected the servos together and gave the robot a shape. I chose to use a tool called Openscad  to design these parts. Because I kept the parts simple I was able to design them with Openscad fairly easily. I was even able to animate them to verify that I got the math right. All of this work is on my youtube channel.

Now here is where the story gets interesting. As I start to add in sensors and finalize the design I am desiring a much more complex design. I am wanting a design that can be considered to be art as much as good engineering. As I design artistic and life resembling parts I am starting to feel like I have reached the limits of Openscad. I don't give up without a fight, however. Here is an animation of my last stand:



This leg took me at least 10 hours to design and I was mentally fried multiple times by trying to visualize while I coded. In fact, I frequently picked up a pencil and paper as a faster medium to work out the kinks in my design before changing code. This is not how I want to design. I want my tools to be inspiring and suggestive, not tiring. Maybe I am doing something wrong. To give you a better idea of how I designed the lower portion of the leg, here is the code:

module leg_lower(){
difference(){
union(){
difference(){
translate([leg_upper_length/2,0,-servo_h+3])
scale([2,1,1])scale([1.3,1.3,2])
cylinder(r=leg_upper_length/2,h=servo_h/2, $fn=1000);
translate([leg_upper_length/2,0,-servo_h+3-1])
scale([2,1,1])scale([1.2,1.2,2.1])
cylinder(r=leg_upper_length/2,h=servo_h/2, $fn=1000);
rotate([0,15,0])translate([-500,-500,-servo_h+3+servo_h-0.1])
cube([1000,1000,100]);
translate([-500,0,-50])
cube([1000,1000,100]);
rotate([0,0,-45])translate([-500,45,-50])
cube([1000,1000,100]);
translate([leg_lower_length+5,-35,-servo_h+3+servo_h/4])
rotate([0,0,35])rotate([90,0,0])cylinder(r=screw_r,h=100,center=true,$fn=100);
}
translate([leg_lower_length-18,-26,-servo_h+5+servo_h/4])
cylinder(r=5,h=servo_h/2+4,center=true,$fn=100);
}
translate([leg_lower_length-18,-26,-servo_h+5+servo_h/4])
cylinder(r=2,h=servo_h/2+4+1,center=true,$fn=100);
translate([leg_lower_length-18+5,-26,-servo_h+5+servo_h/4+0])
rotate([0,0,25])cube([1,5,20]);
translate([leg_lower_length-18+5,-26,-servo_h+5+servo_h/4-20-3])
rotate([0,0,25])cube([1,5,20]);
translate([leg_lower_length-18+5,-26,-servo_h+5+servo_h/4+0])
rotate([0,0,25+180])translate([-1,-5-5,0])cube([20,15,5]);
translate([leg_lower_length-18+5,-26,-servo_h+5+servo_h/4-5-3])
rotate([0,0,25+180])translate([-1,-5-5,0])cube([20,15,5]);
}
}


Does it make sense to you? What line of code makes the screw hole that holds the rubber ball to the leg? Even after writing it I couldn't tell you right away.

After this experience I started looking for a new tool. I am not a mechanical engineer. I didn't know what to use. So I started looking around the internet for something that looked like the best CAD tool out there. I found a few, but Solidworks stood out as a FUN tool. I want to have fun!

So I decided to conduct an experiment. Below is a picture of a servo that I use in my dogbot. What would the experience be like modeling this servo in Openscad? What would be the experience modeling it in Solidworks?


To model this in Openscad you need to keep it simple. Here is the code to create a rough representation of the servo:



module servo(){
color([0.6,0.6,0.6])union(){
//drive shaft
translate([0,0,-servo_ds_h])
cylinder(r=servo_ds_r, h=servo_ds_h);
//body
translate([-servo_t/2,-servo_t/2,-servo_h-servo_ds_h])
cube([servo_w,servo_t,servo_h]);
//flange
translate([-servo_t/2-servo_flange_l,-servo_t/2,-servo_h+servo_flange_z-servo_ds_h])
cube([servo_flange_w,servo_t,servo_flange_h]);
//wire
translate([-servo_t/2-servo_wire_l,-servo_wire_t/2,-servo_h-servo_ds_h])
cube([servo_wire_l,servo_wire_t,servo_wire_h]);
}
}


It only took me about 30 minutes to get the code just right and to take all the measurements. Here is a render of the result:



So next I tried to design this servo in Solidworks. This was one of the first times I have used Solidworks after watching a few youtube tutorials. At first I just went with a simple representation like I did with Openscad, but that only took 10 minutes. So I decided to see how far a newbie could take it. I buckled in and took it all the way to what I consider to be an identical representation. In less than 2 hours I finished the design! In another 30 minutes I had the material tools and rendering tools figured out. Here is the result!


If you put the original servo next to this render you can barely tell them apart, and that's just because I am new to Solidworks. So now I have a dilemma. Openscad is open source and I believe in open source. It is code based and because of this you can create parametric designs that can change by changing one variable, like bolt size. Solidworks is hundreds of dollars and is almost completely mouse driven. But Solidworks is fun and almost without limitless with a new version is coming out every year.

What to do? Which do I use? Is there something even better?

Tuesday, May 15, 2012

Dogbot: Should I be using Solidworks?

I've been using OpenSCAD for a several years now and love that it's open source and driven by code and not a lot of clicking. Still, after seeing this video it makes me wonder... should I be using Solidworks?


Monday, April 23, 2012

RepRap: Upgrades!

This year I started feeling like I was falling behind with the opensource 3d printing movement, so I made the time to upgrade my printer. I started by finally installing a new heated bed. Before now I was still printing PLA on blue tape. Now I'm printing PLA on heated glass. Here is a before and after:




 I followed Nophead's lead with simplifying the y axis by using a few linear bearings.

While I was at it I also upgraded my electronics! I was pretty happy to get away from prototyping breadboards by upgrading to RAMPS. These pictures say it all...

Before:




After:



Finally, I upgraded my extruder. The old extruder was my own design that was still running strong after over a year of use, but it was big and bulky, taking up to 10 minutes to heat up. It also pushed 3mm filament through a .5mm hole. The new MakerGear extruder only takes a few minutes to heat up and pushes 1.75mm filament through a .25mm hole. Here is a before and after:



Special thanks to the authors of the following things on thingiverse to add finishing touches to my printer:

http://www.thingiverse.com/thing:6630
http://www.thingiverse.com/thing:14112

One last before and after:




 I am very happy with my printer and can't wait to start working on my DogBot again!

Sunday, March 18, 2012

Abundance is our future

For some time now I have been aware of the power of perspective and the choice we have each minute to focus on something good or to focus on something bad. We have the choice because we are surrounded by so much good and so much bad. I don't normally blog on this topic, but this time I couldn't resist. Most examples I've read about or personally experienced on the optimistic perspective have a small or narrow context. But here is a person who has applied optimism to our global problems. Oh, and he mentions 3d printing! Well worth a watch!



Monday, March 5, 2012

Dogbot: Improved by someone else!

This weekend I was browsing thingiverse and found that dkobozev recently extended my Dogbot to be printable on a makerbot! Not only this, but some of his other modifications eliminate many of the needed bolts! Check it out: http://www.thingiverse.com/thing:18045


Sunday, February 26, 2012

Blog Upgrade

A lot has changed since I started blogging in 2008. Back then I didn't want to tie myself too closely to a service or technology, so I created my own blog software knowing I would have the ability to export to something else in the future. With all the rich features of blogspot.com, it's time for me to upgrade. This is me upgrading....

Wednesday, February 8, 2012

Graphics: Art is Key

I started reading The Art Of Game Design this week. I'm reading it because I want to understand a little more about why we create and play games before starting my next graphics POC. I figure the best way to really grasp graphics programming is to create playable games.

Inspired by the book I decided to make my Green Army Man POC more immersive by breaking out my best recording equipment and recording the actual sounds my soft air gun makes when it is loaded and fired. Adding these sounds into the POC, as well as adding realistic impact sounds really made a difference! I also took it one step further and added a visible gun. Thanks to TIGG I didn't have to model my own. His model was much better than I am currently capable of, so I didn't hesitate in using it.

I took a video of me messing around with the POC to give you an idea of current state.



Also, if you have a desire to play around with it yourself I am including the executable, as well as the artifacts and dependencies. You can download it here. You'll need a Windows OS. I am not currently capable of compiling for Linux or Mac. Also, you will need DirectX, if you don't already have it.

I just got some feedback that tutorials on OGRE, Bullet, OpenAL, and Blender would be useful to a few people. If you would also find this valuable, leave a comment! What subjects are most interesting to you?

Monday, January 16, 2012

Graphics: Green Army Men

I find it exponentially more difficult applying myself to my hobbies the further I go in my career. Sometimes months go by without me even realizing I haven't hobbied it up in a while. The holidays are even worse. But that's why they are hobbies, right? They are what you do when you have time. This weekend I had time and decided to pick up Graphics. I'm still not sure why, but when I asked myself on my Saturday morning what I was most excited about doing I thought of Graphics. ( For context, my other in-flight hobbies are my dogbot, a quad-copter, and a smaller mill for milling circuit boards. The dogbot and the quad-copter are currently dependent on the new mill. )

Graphics is still a huge intellectual challenge for me, so maybe that's why I was excited to work on it. I don't have enough deep intellectual challenges as of late and as a result I feel my brain turning to mush. For example, it hit me this weekend while coding a c++ Graphics application that the last time the concept of Polymorphism entered my head was 4 years ago! Shame.

I made a decision this weekend that I didn't enjoy making. I decided to throw out my Code::Blocks IDE with its MinGW compiler for Visual Studio Express. I prefer to use opensource, but I don't enjoy fighting for a whole day, just to get a new project to compile. The more I get into Graphics the more I am realizing that all the opensource graphics related projects are native to Visual Studio, so I gave in.

I am currently using OGRE for rendering, Blender for art, Bullet for physics, CEGUI for user interfaces, and OpenAL for audio. I pushed off Lua scripting until I refactor clean integration of renderer, art, UI, and audio.

I'm finally getting to the point where I'm proficient enough in Blender to start having fun. Below is an image of a green army man I made in Blender for what I consider the ultimate graphics engine proof of concept.


This POC is a simple game I wrote incorporating all of my engines and tools. Through keyboard input the player is able to navigate to any position and orientation, and shoot balls at green army men. When the ball is released it triggers a local sound. When the ball makes contact with a green army man an impact sound, originating at the relative location of the green army man in a 3d space, is triggered. All object interaction is handled through Bullet Physics. Real time physics can be toggled on and off, allowing for a cool time freeze effect. The player can still move around, but the objects that make up the scene are frozen in time. Here are a few more images.