Name: Dafydd Walters
Member since: 2003-07-11 20:53:33
Last Login: 2012-04-16 12:33:31
I am a professional software developer, with experience ranging from embedded "bare-metal" programming to multi-tier business enterprise systems.
Robotics is my spare-time hobby. I like to share my experiences so that others may learn from my successes as well as my mistakes. Accordingly, I tend to allow the fruits of my robotic labour, be they source code, circuit schematics, or "how-to" articles, to be freely available on the web. I've contributed robotics-related articles to Encoder, the on-line magazine of the Seattle Robotics Society, and to other robotics-related web sites.
I've created several robots, all of them autonomous, and most of them small. Probably the most notable small robot I have built is Lord Nelson, a mini-sumo robot with vision. The software is based on code from the MotoRobots project, an open-source robotics software library for Motorola processors that I helped to establish.
More recently, I have been working on a much larger PC-based autonomous mobile robot based on the Open Automaton Project. I established the Open Automaton Project to develop a generic design (both hardware and software) for a powerful but affordable PC-based "droid".
I've attended the Seattle Robotics Society Robothon twice, most recently in 2003 when I received the Jugdes' Choice award for my work on the Open Automaton Project.
- Lead Developer on Open Automaton Project
Recent blog entries by dafyddwalters
I recently purchased a Roomba (commercial floor-cleaning robot) from iRobot to take some of the load of doing domestic chores, and so far I'm really impressed with how well this thing does using a fairly simple array of sensors and behaviour-based software. It does a great job of vacuuming the carpet, seemingly covering every square inch before declaring the task complete with its R2D2-like beeps.
I'm particularly impressed with how well the Roomba docks with its charging station. This really puts the charging arrangement on my OAP prototype to shame. To be honest, I've never been satisfied with the performance of the three brass hinges (which act as contacts), each in front of a microswitch. I can see that this part of the OAP design is going to have to be torn up and done again.
Scott Crawford has been doing some work on a custom base design for the OAP robot. You can see the progress he's making on the OAP Community Wiki. As a "mechanically challenged" person, I won't be attempting to build his design myself (I shall stick to the Zagros Robotics ready-made base), but for those that don't mind bending metal, Scott's base design certainly looks the part.
On the software side, I'm experimenting with some ideas from a book called Probabalistic Robotics. The basic idea is that nothing is certain in the robot's view - everything from the robot's pose to its model of the world around it is stored in random variables. So for example, its position is represented as a probability density function covering all possibilities, and although there may be times when the robot makes a working assumption that its true pose is at the highest "peak" in this density function in order to carry out a task, it always continuously updates the position probabilities from new sensor data, allowing its assumed position to be corrected. The end result is (theoretically) more robustness in the face of uncertainty in an unstructured environment. I'm interested in this from the standpoint of the Open Automaton Project because the project is targeting the home environment, which is highly unstructured, of course.
The Open Automaton Project community wiki site is really starting to take shape now. In particular, the Printed Circuit Boards page, Circuit Component List and the Complete Bill of Materials are very comprehensive now, thanks to the tireless efforts of Scott Crawford (you can see Scrott's droid here).
I've recently launched a new Wiki web site for the OAP community. The URL is http://www.openautomaton.org. The new web site is open to anyone interested in the Open Automaton Project who wishes to contribute material that may be of interest to the OAP community.
Material that's already been posted includes:
- A comprehensive bill of materials, including price estimates
- Profiles of some of the most active community members, and their OAP-based mobile robots
- Printed circuit board layouts for the custom modules
"Beingist" Pub Managment?
I had an interesting experience at our Linux User's Group (LUG) meeting a couple of nights ago. It was the first time our LUG had tried out this new venue, and since the turnout was expected to be good, it seemed like a good opportunity for me to bring along my Linux-powered robot, the OAP prototype, for other Linux enthusiasts to see.
The robot was actually quite well received, both by my fellow LUGers, as well as by the ordinary folks in the pub. Most of them just stared in curiosity and amusement as the robot roamed around the pub autonomously, but a couple of people were genuinely interested and wanted to know more.
Unfortunately, one individual who was not amused was the pub manager, who asked me to switch the robot off. I thought he was being rather unfair; the robot was not bothering anybody (it didn't so much as touch a single object or person as it moved around the pub). Perhaps the manager thought it was drunk as it swayed from side to side? I don't think so. I think he discriminated against OAP because it's a robot and not a person. Anyway, as I didn't want to get banned from the pub (and hence future LUG meetings at that venue) myself, I just dutifully switch the robot off and put it away for the rest of the night.
Later, I was thinking about the social implications of what had happened in terms of a future when mobile robots will be a bigger part of our everyday lives. What if the OAP prototype was an "assistance bot" for an elderly person in the pub? I think that perhaps we're going to need to invent a new term that describes discrimination against beings of a different type to humans :-J
Perhaps some day we'll see signs up at pub entrances saying "No dogs except guide dogs, and no robots except assistance bots".
In the interview, Linus was asked what advice he had for people undertaking large open source projects (he should certainly know). I won't quote his entire response (read the interview if you want to see it), but basically his advice can be summed up thus: Don't bite off more than you can chew. Here are a couple of the best quotes from his answer:
- start small, and think about the details
- if it doesn't solve some fairly immediate need, it's almost certainly over-designed
I realize that I've reached a point with the Open Automaton Project where it would be very easy for me to think "too big", and spend the next two years on some fanciful grand design for the software architecture. But I know that if I were to go in that direction, the project might never be finished.
Instead I'm going to tackle a few specific tasks that will make OAP immediately useful.
The first, most pressing task, is to write a simple Player driver for the robot that fits in with Player's existing interfaces. Any OAP functionality that can't be made to fit the Player interfaces will simply be left out of the driver initially. For a while I've been thinking about complicated strategies for trying to shoehorn OAP's capabilities into the Player interfaces, but I now believe that approach was wrong. Player provides a pretty comprehensive set of interfaces for general purpose mobile robotics, but some of OAP's capabilities currently just don't fit the Player model. For example, one of the ultrasonic distance sensors is mounted on the pan & tilt head, and three of them are pointed at an angle towards the floor in front of the robot, and these things cannot be easily modelled in Player. Also, the pan & tilt head-mounted passive infrared human body-heat sensor cannot be easily modelled in Player either.
By getting a Player driver up and running (even without all of OAP's sensors integrated), this will allow the robot to be immediately useful by leveraging some of the Player-compatible applications and algorithms that have already been developed.
Printed circuit boards
I'd like to take this opportunity to publicly thank Scott Crawford for the contributions he has made to the Open Automaton Project in the past year. He has contributed two-sided printed circuit board layouts for the hardware modules, which I am currently integrating into the official project code in readiness for the next official OAP release. His work will certainly lower the bar for folks interested in building their own OAP-based robot.
A home at last!
I've been settled in my new home for nearly three months now. It was exactly a year ago when I stepped back on British soil after living in California for nearly five years prior to that. It has taken three attempts to buy a house here (the sellers unilaterally withdrew from the sale on the first two attempts). After all the chaos of house hunting, abortive house purchases, and finally moving in, which involved organising the transport of our belongings from LA (where they had been in storage since we moved from the States), only now, one year later, do I finally feel that life is back to normal.
Now that there is a semblance of normality in my life, I will be getting back to doing the things I enjoy, which includes robotics of course, so expect to see more from Mr. Davbot soon.
dafyddwalters certified others as follows:
Others have certified dafyddwalters as follows:
- lnxfergy certified dafyddwalters as Journeyer
- rudybrian certified dafyddwalters as Journeyer
- The Swirling Brain certified dafyddwalters as Apprentice
- ROB.T. certified dafyddwalters as Master
- cgates certified dafyddwalters as Master
- Lace certified dafyddwalters as Journeyer
[ Certification disabled because you're not logged in. ]