My First but Not Humble Robot Project
Finally, I've made up my mind and ordered a few parts. My robot will look like Stingray but not exatly the same. I am going to use Stingray motors and main wheels. I will make the chassis from black HDPE which is 4 mm thick. The HDPE is a God-send product for hobbyiests. Easy to work with and durable. And, the brain is going to be based on Arduino. In addition to regular ultrasonic sensors, I also plan to use a new cam module which is still alive at this time on Kickstarter. I will put it on a pan tilt servo unit to enable it watch every direction. In a few sentence they describe it as "Pixy is a fast vision sensor you can quickly “teach” to find objects, and it connects directly to Arduino and other controllers." More info can be found at Kickstarter -> Pixi (CMUcam5). My initial goals are to have it play in the house, e.g. when I throw a ball I expect him to follow, find and fetch it.
I will post my work as I make progress, because I learned a lot from the other contributers.
I will post my work as I make progress, because I learned a lot from the other contributers.
Comments
Please see consequent posts for more pictures and detail in a chronological order.
I'm also watching with interest to see what you do.
[PHP]// Servo Sweep
// 19 Sep 2013 by mrma
// Servo testing
#include <Servo.h>
Servo myservo1; // create servo object to control a servo
Servo myservo2; // create servo object to control a servo
int pos = 0; // variable to store the servo position
void setup()
{
myservo1.attach(8); // attaches the servo on pin 8 to the servo object
myservo2.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop()
{
for(pos = 0; pos < 180; pos += 1) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree
myservo1.write(pos); // tell servo to go to position in variable 'pos'
myservo2.write(pos); // tell servo to go to position in variable 'pos'
delay(10); // waits 10ms for the servo to reach the position
}
for(pos = 180; pos >= 1; pos -= 1) // goes from 180 degrees to 0 degrees
{
myservo1.write(pos); // tell servo to go to position in variable 'pos'
myservo2.write(pos); // tell servo to go to position in variable 'pos'
delay(5); // waits 5ms for the servo to reach the position
}
}[/PHP]
The top and bottom plates are made of HDPE. Side panels including the motor mounts will be from aluminum u profile. Here are some pictures;
I feel so jealous of the ones who have access to a laser cutter. This could have been much easier with a laser cutter, although I'm not sure about the outcome with HDPE on a laser cutter.
Anyway, with the help of my wife we first raw cut and do the fine trimming with dremel. I must admit she has done much of the work
I also prepared a template for the bolt holes to make sure that each side panel has the exact same drill pattern,
I had some concerns that the aluminum profile was too thin (1 mm) but having had no alternative after some experiment it turned out to be fairly sturdy, especially after the bolts are done.
Great idea using that aluminum extrusion as your side panel! Ready to go and very consistent spacing. Nice project overall, kudos for classic fabrication with basic hand tools. As world goes mad with rapid prototyping, there's less incentive for people to "get their hands dirty" with saws, drills & files. But IMO, the skills you're using and sharing are absolutely relevant & necessary for common sense design, even (especially) for people who do use rapid prototyping. Please keep us updated!
Now, It's time to focus on Stingray's tale. Since I use Parallax caster wheel I need to make a mount for the wheel which attaches to the chassis. Pictures tell much more than words,
I cut this piece from an aluminum sheet that is 2 mm thick,
At the final stage, after drilling and happy with the result, I will give the brushed aluminum effect manually, this is the how to video on youtube.
I have nothing but an old vise to use for bending. But the trick is; first make a groove around (0.5 mm) on the plate where you want to bend with a dremel cutting disc, and then bend it slowly. Before bending, I made some brushing with 240 grit sand paper. I'm very happy with the result :cool:, it's just great, isn't it?
Fabulous! Nice work all around!
I meant comment on your earlier motor post. I'm not so sure fast motors are a bad thing. As long as the motor have enough torque to move the robot at slow speeds, I don't think having a fast top speed is a bad thing. You can always keep the speed low with your program.
I'm a big fan of encoders myself and it looks like those motors lend themselves to adding encoders. With encoders, you can set up a PID routine (usually just the P is needed) and have the PWM signal automatically adjust to get the speed output you want.
Even bad low end torque can be overcome with encoders. My Mecanum wheeled rover 5 robot is really a bit under powered but by adding feedback from the encoders I was able to get the robot to travel a slow speeds consistently.
There's a video linked to at Let's Make Robots with lots of really good information about robotics. One of the things suggested is to make a robot so it's capable of turning around in place. It also suggests the powered wheels be on the outside most edge of the robot.
Thanks for keeping us updated on your progress. It's fun to follow along.
Thank you guys for your comments and feedback.
In the meantime I purchased some parts for my robot. I'm not sure yet how I can make use of them in the end but we'll see.
One of the items that I bought is Sparkfun Robotic Claw MK II with its Pan/Tilt Bracket.
The claw is made from metal and has a spring clutch, I hope it will save the servo from ruining.
The more complex looking claw is surprisingly cheaper than the bracket, but the bracket comes with its servo. Even though it says the bracket is made especially for the claw there is no easy way to put them together. The assembly instructions are really poor and the proposed method doesn't fit my liking so I decide to make a U shape piece as an adapter between to screw them together.
Here you can see the pictures, I just installed the servos;
In my not so humble opinion you are one ingenious fellow.
I also admire and envy your craft with hand tools.
From what I have seen so far you could have a career In packing design.
My next project once I(hopefully) start bringing in money instead of putting it out on tools and equipment to build my current project will be bot building.
You have already solved two of the problems I expected to have with most bot kits in getting higher ground clearance and adding the enclosures that could also facilitate adding more sensors and associated discrete components within the enclosure.
I will continue to follow your project and will be delighted for any comments or suggestions you would care to share once I start posting my project here.
Tim
-If you think you will fail, you are likely right. If are certain you are going to win you just made your chances of doing so much more certain.- author unknown to me
I've made the piece that I mentioned in my previous post. It's a simple U shape aluminum to connect the claw to the pan/tilt bracket.
Then, I mounted the claw on a test platform to see how it works. In the video you'll see that a servo tester in automatic mode tilting and opening the claw.
Will this be able to lift up a softdrink can ? Not sure yet, we'll see.
and, here is the video,
Great work mrma. Thanks for sharing :thumb::thumb:
-mumbles something about castors and stumbles off into the dark...
Here are the first pictures of the product, mounting brackets fastened.
It processes images at a frame rate of 50 Hz and support multiple interfaces: UART serial, SPI, I2C, digital out, or analog out. I must say that from my point of view, the result of the project was the best one so far coming from Kickstarter. There was also an optional purposefully built pan/tilt kit but I thought that I could make it by myself by using servos out of the house-stock.
The old friend HDPE comes to stage again. Why do I use this stuff for everything, because;
- I have it,
- It's durable, a little flexible but not brittle,
- It's machineable, drillable, sandable and can be filed like soft metals, and can be cut with any small teeth saw.
- and it looks good.
Below are the stages for creating the pan/tilt mechanism. Pan servo is fastened with screws, but tilt servo is kept only with the bracket (painted in black, later) and there is a small trick to keep it in place. I made a small groove on the plate and filed one side of the mount of servo to fit in that groove, so that it doesn't move back and forth.And, the final product put together,
Later, I started experimenting with ultrasonic sensors. Much to my surprise, these sensors are really sensitive and precise, almost in the rate of half a centimeter. And there is more, I thought it would be a great idea to have a permanent display on the bot for debugging, displaying the state of the program, etc. Thus, I assembled a 4x20 character display. My code is still in a spagetti state therefore I didn't post it yet. But I will post it when it is ready and beautified.
Here are some pictures of the top plate and mentioned elements on top of it;
When I power it on, it will begin in [initialize & wait] state until it receives a move command via bluetooth module which puts it in [moving forward] state.
Below, you will find my first and simple state diagram. I will build my software on top of it and the state diagram will surely change and improve over time.
I think ultrasound sensors work great most of the time but they do have their limitations. Hard flat surfaces can be invisible to US as shallow angles. Soft surfaces (like out couch) absorb US rather than reflect it.
Some simple IR sensors like used in the BOE-Bot could really help make up for the weaknesses of US. When I added a US sensor to my Scribbler 2, I was very pleased to see how well the two different types of sensors complimented each other.
The S2 uses a single IR detector and two IR LEDs. The S2 can figure out which side the obstacle is on by using only one IR LED at a time.
Thanks again for letting us follow along in this project.
Actually, I've already purchased an infrared distance sensor with LM393. They say that it can work between 2 to 80 cm, but haven't tested it yet. I didn't give much attention when I bought it maybe because it was fairly cheap but if I'm not wrong it just warns you with a low digital signal when it senses a reflection from a predetermined distance, that distance can be adjusted with a potentiometer, though.
I think that the Sharp IR sensor which is also sold by Parallax is a better solution in terms of IR technology. Instead of telling only yes or no, it speaks analog and gives a voltage corresponding to the distance of the object. I haven't had any experience with that yet, and I don't know how narrow the IR beam is. For example; will it be able to detect a thin wooden chair leg correctly? We'll see.
I think it's more accurate to say "senses a reflection of a predetermined magnitude". An object which reflects IR well will return a stronger reading than an object that doesn't reflect IR well.
But even with this limitation (similar to the S2's IR sensors), it can be very useful in cases where ultrasound doesn't perform well.
There where several times when my S2 would be cruising full speed towards a wooden chest but because of the angle of the chest, the US was being bounced away from the sensor and not back to the sensor. It wasn't until the IR sensor picked up the chest that the robot would turn away from an eminent collision. So even though the IR sensors couldn't accurately measure the distance to the obstacle, just knowing there was an obstacle was a big help.
I have one of the Sharp IR sensors and I've only used it a little. From my very limited experience with it, I think it's a good sensor. My guess is it would be able to pick up a chair leg. I've found the IR sensors on the S2 are blind to most chair legs. Fortunately chair leg detection is a strength of US sensors.
They are analog output, but in a pinch you can use them as digital sensors: https://www.youtube.com/watch?v=t_OF8XK53LY
WRT chair leg detection, I'd have to say that sensing at a distance would depends on the chair leg position & geometry. By scanning your sensor you can improve detection reliability: https://www.youtube.com/watch?v=O18ZHHfJrN0