Monday, February 28, 2011

Thing a Day: Camera Servo Mount

February is almost over and we are almost done thing-a-day. You can see all the things we made this month over here.


This one is a camera servo mount for a Pt. Grey Flea or Chameleon camera.


One part connects the camera to a Robotis AX-12+ servo.


The other part connects the AX-12+ servo to a standard tripod.


This allows the camera to be panned left and right with a 0.29 degree accuracy. These things are available for download from thingiverse and available for purchase at the I Heart Engineering store

Thursday, February 24, 2011

Playback: Kinect Outdoors

Here are some videos showing outdoor performance of the Kinect.


There is no depth data available for the areas in red.


The performance looks like it could be somewhat useful at night or in shaded areas, but does not provide any data in direct sunlight.

Tuesday, February 22, 2011

ROS Updates


ROS Diamondback Release Candidate 2 is now available for testing.

ROS + Python + Android = awesome I'm not sure if this is more useful for controlling ROS based robots from your cellphone or for building a swarm of cellbots style robots.

Meka's M1 looks great and runs ROS.

Neato XV-11 Laser Rangefinder driver. Probably worth keeping an eye open for "broken" vacuum cleaners.

Gostai Jazz at CeBIT



This year at CeBIT, Gostai will be showing off its new Jazz robots, including an upgraded Jazz Connect equipped with an LCD display for two-way video conferencing.

The Jazz Connect seems like a solid concept and the new LCD screen should make it more user friendly and improve its usability.

The Jazz Security robot, on the other hand, probably has some applications where a business would want security to be able to patrol without risking thefts by human security guards. In this case the lack of arms may be an advantage. Overall the execution of the concept is good, I'm just not certain it makes sense for most businesses.

Finally, while the concept of the Jazz Icon as a branding robot seems somewhat silly, it really is no different than hiring models to pose in front of booths to draw traffic. The costs of 7900€ or 1800€ for rental are not all that expensive in the context of a booth rental at a large trade show. Also, I will be disappointed if I do not see Jazz Icon waiters in Parisian restaurants on my next trip to France.

Friday, February 18, 2011

Playback: Even More Arduino Based Robots


Excellent work, I am looking forward to seeing future videos of this project.


A nice simple four legged walker built with what looks to be foamcore.


Dance Dance Robot!!


Here is a great project for an old laptop.


Step 1 Build robot, step 2 ... step 2 Profit!
This looks like a good start for step 1.


Cute or Creepy? Play with me or ELSE!! Thanks to Anders & Petter for the nightmares.

Wednesday, February 16, 2011

OpenSCAD Tip: Round 2 of 3 - Advanced Rounding

After starting with some basic rounding, it is time for advanced rounding. While there are other ways to accomplish the rounds and fillets shown in this tutorial, these techniques are useful in a variety of cases.

The basic idea is that a round can be produced with the integrated volume of a sphere whose center is moving along a path parallel to the edges and tangent to the the two surfaces. It sounds more complicated than it really is.

b = 10;
h = 10;
w = 4;

//Start with an extruded triangle
rotate(a=[90,-90,0])
linear_extrude(height = w, center = true, convexity = 10, twist = 0)
polygon(points=[[0,0],[h,0],[0,b]], paths=[[0,1,2]]);


Starting with an extruded triangle, the top edge can be rounded.



If you try using a cylinder like last time you will find that you need to figure out how high to move the cylinder.

This shows a cross sectional view where you can see where the round must be tangent to the hypotenuse of the triangle.

Next we setup our problem and assign letters to lengths we are interested in.

Now it's time for some trignometry!! Be glad it's not projective geometry.

So if we use 5.17157 for the Z translation of the cylinder the part may or may not be manifold, so it is best to let the computer do the math and use the formula.

pad = 0.1; // Padding to maintain manifold
b = 10;
h = 10;
w = 4;
r = 3; // Radius of round
smooth = 360; // Number of facets of rounding cylinder

z = h - r*h/b - r*pow(pow(h,2)+pow(b,2),0.5)/b;
// x3 = width of cutting block
x3 = r*h/pow(pow(h,2)+pow(b,2),0.5) + r;

translate([0,0,z])
difference() {
translate([-x3/2,0,(h-z)/2])
cube([x3+pad,w+2*pad,h-z],center=true);
translate([-r,0,0])
rotate(a=[0,90,90])
cylinder(w+4*pad,r,r,center=true,$fn=smooth);
}

This is the shape that needs to be removed from the original triangle.
pad = 0.1; // Padding to maintain manifold
b = 10;
h = 10;
w = 4;
r = 3; // Radius of round
smooth = 360; // Number of facets of rounding cylinder

z = h - r*h/b - r*pow(pow(h,2)+pow(b,2),0.5)/b;
x3 = r*h/pow(pow(h,2)+pow(b,2),0.5) + r;

difference() {
rotate(a=[90,-90,0])
linear_extrude(height = w, center = true, convexity = 10, twist = 0)
polygon(points=[[0,0],[h,0],[0,b]], paths=[[0,1,2]]);
translate([0,0,z])
difference() {
translate([-x3/2,0,(h-z)/2])
cube([x3+pad,w+2*pad,h-z],center=true);
translate([-r,0,0])
rotate(a=[0,90,90])
cylinder(w+4*pad,r,r,center=true,$fn=smooth);
}
}


The resulting edge is now properly rounded.

Now let's try something a little different where instead of rounding along a linear path we round along a circular path.

Start with a cup shape.

The inside fillet is then produced by the difference of two toroids.
difference() {
rotate_extrude(convexity=10, $fn = smooth)
translate([cr-ct-r+pad,ct-pad,0])
square(r+pad,r+pad);
rotate_extrude(convexity=10, $fn = smooth)
translate([cr-ct-r,ct+r,0])
circle(r=r,$fn=smooth);
}


This is then unioned with the original cup.

The bottom round is similar to the inner fillet.

This is the result when the bottom round is removed.

This diagram might provided a clearer idea of the process of producing rounded corners shown above.


Next time, in Round 3, we will consider rounding edges like the one shown here. All of the .scad files used can be found on thingiverse. All of our previous OpenSCAD tutorials can be found here.

Tuesday, February 15, 2011

OpenRave NXT


An excellent Lego NXT line following robot implemented with the OpenRAVE simulator.


Great work Sean!

Monday, February 14, 2011

ROS Answers

Are you troubled by TFs?
Having problems installing a stack?
Do you have philosophical questions about ROS?

ROS Answers
is a new site to help answer all of your questions!

OpenSCAD Tip: Round 1 of 3 - Basic Rounding


This is the beginning of a three part series on rounding edges in OpenSCAD. This tutorial shows how to make a box with rounded edges, but this technique can be used anywhere you are trying to round an edge where both surfaces are flat and meet at a 90 degree angle.


Starting with a box in OpenSCAD
box_l = 10; // Length
box_w = 10; // Width
box_h = 10; // Height
cube([box_l, box_w, box_h], center = true);

So what is a rounded corner? One way to think about it is that it is shaped in a way similar to a cylinder. The idea is to make the edge of the box into a cylinder, so the first attempt will to be to remove an absence of a cylinder. Next move a cylinder into place for the edge to be rounded. The padding is there to maintain manifoldness.
pad = 0.1; // Padding to maintain manifold
box_l = 10; // Length
box_w = 10; // Width
box_h = 10; // Height
round_r = 2; // Radius of round
smooth = 45; // Number of facets of rounding cylinder
difference() {
cube([box_l, box_w, box_h], center = true);

translate([0, -box_w/2+round_r, box_h/2-round_r]) {
rotate(a=[0,90,0])
cylinder(box_l+4*pad,round_r,round_r,center=true,$fn=smooth);
}
}


Now that all the padding and minus signs are correct, a box is moved into place to make the part to round the edge off.
translate([0, -box_w/2+round_r, box_h/2-round_r]) {
difference() {
translate([0,-round_r+pad,round_r+pad])
cube([box_l+2*pad, round_r*2+pad, round_r*2+pad], center = true);
rotate(a=[0,90,0])
cylinder(box_l+4*pad,round_r,round_r,center=true,$fn=smooth);
}
}

Now by subtracting this from the original box one of the edges is rounded off.

difference() {
cube([box_l, box_w, box_h], center = true);
translate([0, -box_w/2+round_r, box_h/2-round_r]) {
difference() {
translate([0,-round_r+pad,round_r+pad])
cube([box_l+2*pad, round_r*2+pad, round_r*2+pad], center = true);
rotate(a=[0,90,0])
cylinder(box_l+4*pad,round_r,round_r,center=true,$fn=smooth);
}
}
}

Now by repeating the technique on all of the sides a new problem is discovered.


To fix the corners, the absence of a sphere must be subtracted from each corner.


If a cylinder isn't a good analogy then the question becomes, how do you mathematically represent a rounded edge. One way to do that is to think of the shape produced by a sphere moving along the edge. We will explore this concept of rounding using a rolling ball further in the next tutorial, Advanced Rounding with OpenSCAD.

All of the .scad files can be found on Thingiverse and our previous OpenSCAD tutorials can be found here.

Sunday, February 13, 2011

ROS Diamondback RC1


More info on how to join the party here.


If you need to clean up before the party you might want to check out this video from OTL.

Congrats

It looks like the consolidation phase has begun for robot blogging.

Congrats to Voltron Evan Ackerman of Botjunkie and Erico Guizzo from the IEEE Automaton Blog.

Bots High World Premiere



The 'Bots High' documentary will have its world premiere in about two weeks during the National BotsIQ championship in Miami, Florida.

For more information when tickets become available, sign up for their newsletter here.

Friday, February 11, 2011

OSHW v1.0 is here!

The Open Hardware Definition version 1.0 has been released.

Now all we need is some open and editable formats for mechanical design.

Thing a day: 39% of the way there


It's day 11 and we have survived 39% of Thing-a-Day. The calipers are available on Thingiverse.

Homebrew Robotics Club: ROS for the Rest of Us

If you haven't seen them already, these videos, from Patrick Goebel's talk at the Homebrew Robotics Club, are a great introduction to ROS.





More videos from the Homebrew Robotics Club can be found here.

Bilibot Project Updates



Over at Hizook, there is a great writeup with more info about the Bilibot Project.

Thursday, February 10, 2011

Call for Papers: ICRA 2011 Workshop on Mobile Manipulation

This workshop on integrating perception and manipulation for mobile robots looks interesting, especially the list of invited speakers.

In Stock: Ratchet Crimping Pliers



The PAR-20 Ratchet Crimping Pliers are a high quality hand tool made in Japan that is great for securely crimping electronics connectors.

While not as efficient as the expensive automatic crimping machines the PAR-20 is a capable tool for medium volume applications. It is designed for efficiency and allows both the insulating sheath and the conductor to be crimped simultaneously with a single action.

The crimpers are 265mm long for extra leverage and ease of use. It comes with English instructions and crimps a wide variety of connectors with 1.6mm, 1.7mm, 1.9mm and 2.3mm wide crimping dies. RohS compliant with a Polypropylene handle for chemical resistance. It is currently on sale for $149.95.

More new tools and crimping pliers are in stock at the I Heart Engineering store.

Tuesday, February 8, 2011

ROS Diamondback Beta 2 Release

Diamondback is getting ready to party!

Also, if you are using Eigen3 in your packages, please read this for information about necessary changes for Diamondback.

Monday, February 7, 2011

Call for Events - U.S. National Robotics Week 2011


The National Robotics Week Advisory Council invites robot enthusiasts of all ages to celebrate with us by organizing robot-related events across the country during National Robotics Week.

The mission of National Robotics Week is to celebrate the U.S. as a leader in robotic technology, to educate the public about robotics and to inspire students to pursue careers in Science, Technology, Engineering and Math (STEM) fields.

National Robotics week is coming April 9-17, 2011, so if you are interested in organizing a local event you can find out more here.

I Heart Robotics will be covering as many events as possible in the northeast during Robotics Week. Our previous coverage of the 2010 National Robotics Week is also available.

Friday, February 4, 2011

Power Line Inspection Robot

IEEE Automaton blog has a feature on a new power line inspection robot from HiBot, a Japanese company whose team previously worked on these snake robots you may have seen.

Thursday, February 3, 2011

ROS 3D Contest Results!!

and the winners are...

Congrats to the winners and thanks to everyone who entered for contributing to opensource robotics.

Please Secure Your Robot: Part 4 of 5

Accounting provides a log of the robot's operation. This is not only necessary as a debugging tool, but it also provides a way to audit the operation of the robot. While there may be some duplication of the information logged, these two tasks should be accomplished by separate subsystems.

Many of the newer robotics frameworks have an extensive logging support capable of recording huge amounts of sensor data at high speeds. While being able to record message bus traffic to disk is useful for debugging the majority of the data is of short term value. Furthermore as newer 3D sensors produce an ever increasing amount of data the storage requirements can quickly become formidable. This type of log is mostly useful for research and development, and for failure analysis of production systems where a rolling log of the previous hours data may be sufficient. Given the temporal nature of the data an operator may have control of this subsystem to enable or disable debugging, or to clear the debug logs entirely.

However, independent of the robotics framework, there is a need for an operational log that is only accessible with administrative access. This should be a long term log of the operation of the robot over the course of weeks and months.

It should contain a log of the robot's high level state, and at minimum the log should record if the robot is running autonomously or being teleoperated. Even on smaller robots it would not be difficult to have a microcontroller wake up at regular intervals to log the GPS position of the robot.

Linux based robots inherit a well tested systems for user login records, however this will bring it's own challenges as many robotics frameworks do not yet fully support multi-user installations. The most important things to log are the time a user logs in and where they are connecting from.

In an ideal world, the robot's log would be convincingly tamper resistant and robust enough that if the robot is damaged or destroyed that the operation logs will still exist and admissible as evidence in court. Even on the simplest robots it would be helpful to have an audit log of when the robot was operating in autonomous mode or being teleoperated.

A basic robot operation log should have minimal implementation costs and would greatly improve forensic analysis in the event of the robot being involve in an intentional or accidental injury or death. Basically, we need to start building flight data recorders for robots.

Wednesday, February 2, 2011

An Update on Things


Since making a thing-a-week proved to be too much for our schedule, we have decided to try making a thing-a-day for the month of February. The first one is an adapter to connect a Canon PowerShot Camera to a servo. All of the I Heart Robotics things can be found here.

Also posted the STL files for a recent design of a rotary stage for the Kinect up on thingiverse. Should have some video of it working in ROS soon.