Posts Tagged ‘robot’
I’ve given her another 2 ultraound sensors on either side, so that she can see how well lined-up she is to walls on either side of her. This is to try to keep her heading directly towards a wall, so that the head ultrasound sensor will get the best reflections possible (assuming that her environment uses lots of right-angles).
The Arduino fires all 3 ultrasound sensors and listens for their echoes at the same time in order to “see” at the highest frame rate possible (typically 20-50 FPS), but this causes issues with echoes from one sensor bouncing around and returning to a different sensor. Although the code avoids any clearly-bad echoes like this (e.g. 2 echoes on the same sensor), it’s far from perfect, and she often thinks that she’s crashed into something (an object is very close to the head) when she hasn’t. I think there’s also a strange bug in the function that times the echo delays, or something strange is going on with hardware interrupts, because the function sometimes returns 0 for a sensor which clearly has an object in range, and at the same time, the sound of the tone playing on the speaker (using the built-in tone() function) becomes distorted so that it doesn’t even sound like a square wave anymore. I’ve never experienced that before, and I have no idea what’s wrong there. Oh well, she looks cool aligning herself half of the time.
Fun game to play: See how many inconsistencies there are in this video. It’s a combination of videos recorded 7 months apart.
A look at how the clumsy autonomous robot was made, and her very first versions, when she was worse than clumsy, before she was even slightly clever. There’s more to show, but it was already approaching my longest ever video, so I decided to end it here.
A later version can be seen here. She’s progressed a little further still, now – I should upload a video of her outside soon!
Music by Kevin MacLeod (incompetech.com):
- “The Way Out”
- “Dance Monster”
I decided to see how much weight Dojikko, my work-in-progress robot, could comfortably carry. I cut out 3 boring tests and yet it’s still kind of boring.
She drains them in minutes. They were cheap, though. Her usual battery is an 11.1V 5000mAh LiPo.
Ultrasound fails when it comes to corners. It gets reflected away by the walls and the walls become invisible to it.
The code was supposed to prevent constantly overshooting while turning to face a new direction, but it had quite a different effect. This is the kind of weirdness that happens on the very first attempt of adding new code.
It was fixed shortly after recording this. =)
The ultrasonic pulses that let Dojikko “see” her surroundings are normally inaudible to humans, but now, you can hear in detail exactly what’s going on. The ultrasound is 40 KHz, about double the highest frequency that most people can hear. When slowed down, not only can you hear the transmitted pulses, but the echoes and the delay between them are clearly audible, too!
I recorded the sound at a very high sample rate (192 kHz – at this rate, the microphones can hear frequencies up to 96 KHz). Afterwards, I slowed down the sound to a quarter of the original speed, 1/8th, 1/16th, etc, even down to 1/128th (at that speed, just 2 seconds would be over 4 minutes long). I also recorded video in slow-motion, but my camcorder can only go up to 200 FPS (1/8th speed when played back at the usual 25 FPS), meaning that lower speeds such as 1/64th aren’t smooth, as I had to futher slow down the video in editing. But the main point of this video is the sound.
I tried to implement a closed-loop system to keep the actual speed the same by increasing power to the motors if e.g. stuck on an object. Results were… amusing.
The speed was correctly being calculated from readings from the ultrasonic rangefinder. There turned out to be a combination of 2 problems (a variable overflowing, and something specific to the format of data that the Sabertooth motor speed controller requires), but they’re fixed and it’s working much better now. I’m still fine-tuning it, as it’s still far from ideal, though (either slow to respond or over-aggressive and dangerous, and interferes with other systems such as the part that detects if it’s stuck).
This is a project I’ve been working on since December 2012. Dojikko explores her environment using an ultrasound “radar” to see, and a compass to tell which direction she’s facing. An Arduino Mega controls everything. She tends to be clumsy due to my lame programming. The battery lasts for about 3 to 3.5 hours non-stop.
I’m currently working on a video showing the construction process, but there’s an awful lot of footage to work through, so I wanted to at least make this video to introduce this project.
The chassis is a LynxMotion A4WD1 (the wheels and motors were included in the A4WD1 kit v3). The pan/tilt mechanism (head) is also a kit from LynxMotion, although the servos that move the head were sourced separately and I’m using nuts and bolts rather than the pathetic excuse of the nylon fasteners that the kit comes with. The ultrasound module is the extremely cheap Chinese HC-SR04, and I’m very impressed with it considering it’s a 10th of the price of the “Ping)))” module that it is an alternative to. I bought a handful of them since they were so cheap, but I’m ending up enjoying the challenge of using only 1 and making use of the pan/tilt servos.
I decided, after a very long time of doing nothing with my robotic arm, to make a program for it. It’s nothing too fancy when I think about it (it did only take today and yesterday to make), but I was excited when I finally saw it working. =D
Here’s the YouTube video!
By the way, the arm’s a Lynx6. Check out the great LynxMotion for more info. It can also move the wrist up and down (although I didn’t use it much here), and rotate the wrist (which I didn’t use at all here). I made the program in VB6.
EDIT: Since it’s such a small program and people can learn from it, I’m releasing a ZIP of the VB6 project files (source code) for the program. Here’s the link.