New Book and Online Robot Simulator

In my experience, the most effective way to program a mobile robot is to use a behavior-based approach. Uncomplicated behavior-based methods enable robots that are at once robust, sophisticated, and inexpensive. Thus it always bothers me that few amateurs, hobbyists, and educators seem to take full advantage of this powerful approach to robot programming.

So I wrote another book. McGraw-Hill has just published, ³Robot Programming A Practical Guide to Behavior-Based Robotics.² The new book seeks to present behavior-based robotics in a way that makes it accessible to a wide audience and shows how behavior-based techniques can be implemented on low-end microprocessors. In an attempt to make learning the skills as painless as possible the book is integrated with an online robot simulator created by my colleague, Dan Roth, of MIT. You can find the simulator and information about the book at:

formatting link

Joe Jones

Reply to
Joseph Jones
Loading thread data ...

Hi Joe, fantastic. I have long been a fan of your other book, Mobile Robots: Inspiration to Implementation, as it is about the only previous book that went into detail on subsumption/behavior-based programming techniques [not counting Arkin's, which is more academic in nature]. And I have suggested to several authors that a book with more practical examples of this type of programming was needed. Long overdue, say what.

- dan michaels

formatting link
===============================

Reply to
dan michaels

Joseph Jones wrote: Joe,

Cool. I was trying to get MH to let me write one on that topic, but they said they had one in hand already. Now I know which one! I'll be there to get it. I got a great deal out of your last one, and some of the other Brooks papers (which always lacked some directly useful element sadly, but tantalized nonetheless.) I've been doing nothing but behavioral robotics since I read "Cambrian Intelligence" several years ago and have a nice toolbox of algorithms for state machines in my own 'bots.

Thanks for the heads up! DLC

: In my experience, the most effective way to program a mobile robot is to use : a behavior-based approach. Uncomplicated behavior-based methods enable : robots that are at once robust, sophisticated, and inexpensive. Thus it : always bothers me that few amateurs, hobbyists, and educators seem to take : full advantage of this powerful approach to robot programming.

: So I wrote another book. McGraw-Hill has just published, ?Robot Programming : A Practical Guide to Behavior-Based Robotics.? The new book seeks to : present behavior-based robotics in a way that makes it accessible to a wide : audience and shows how behavior-based techniques can be implemented on : low-end microprocessors. In an attempt to make learning the skills as : painless as possible the book is integrated with an online robot simulator : created by my colleague, Dan Roth, of MIT. You can find the simulator and : information about the book at:

formatting link

: Joe Jones

Reply to
Dennis Clark

Ha, it comes full circle. Dennis is the guy I was trying to get to write a practical book about subsumption and FSM techniques. Hardware is widely addressed now, but offerings on the software side of the personal robotics book market are definitely slim. Hmmm, next step .... "Practical Applications of Artificial Intelligence Techniques in Small Robots" ??? ... if that's not an oxymoron ;-).

Reply to
dan michaels

So I ordered the book. So they shipped the book. So I'll comment on the book when it comes in.

Reply to
Randy M. Dumse

It's hard to imagine at the state of the art today, any book software could be written which wasn't specific to someones hardware.

For instance, I ordered a book by Predko, "Programming Robot Controllers" hoping for a book of algorythms, but was very disappointed to find it to be very much a PIC book. Pretty hard to get even one step away from the hardware at this time.

Reply to
Randy M. Dumse

Yes. Unfortunately this is true. When I bought the book I was hoping for something more general. I think that this is the weakest book in the Robot DNA series.

Myke is good, but he seems to be very much PIC oriented. Don't get me wrong, I *like* PICs, but this should have been a more controller-neutral book.

-- D. Jay Newman

Reply to
D. Jay Newman

As did/will I. It should come into work tomorrow; if I'm well enough to go, I'll pick it up.

-- D. Jay Newman

formatting link

Reply to
D. Jay Newman

This is true, but what I liked about the software presented in the original Jones et al Mobile Robots book was the design more than worry about low-level implementations. How do you actually "do" subsumption

- which was the point.

It was written in C, which is very easy to read [not being so verbose as basic or pascal], and is easily translated into assembler or another language [like basic, which is of course very popular in the microcontroller world]. That's really how this sort of thing should be done, IMO. For generality, it could be done in pseudocode, but nawwww .... that's just another overly verbose language for freshmen in CS101. Much better to use C.

- dan michaels

formatting link
============================

Reply to
dan michaels

Did the first edition have more on subsumption? The second edition barely mentiones it, and the software shows basically how to do dispatch loops, which aren't the same thing.

When we were setting up the Robot DNA series, I had asked Myke to cover other popular processors. While the software examples would still be specific to certain hardware, the variations would allow for people to see how things were done under different architectures. But Myke is a PIC guy, and doesn't like AVRs. He also made a good point that adding examples for other parts like the OOPic and the Stamp would balloon the book. These books had to maintain a $25 pricepoint.

Still, I think a book could be written that could detail 80% or more of the core programming techniques for the half dozen popular processors -- and by extension, cover the others becauses examples would be in assembler, C, Basic, etc. For those who don't want or can't extrapolate the code there's plenty of co-processors now on the market to handle the toughest tasks.

-- Gordon Author: Constructing Robot Bases, Robot Builder's Sourcebook, Robot Builder's Bonanza

Reply to
Gordon McComb

Hello,

It would be nice is if the algorithms were written against a Hardware Abstraction Layer ("HAL") that would hide/abstract/modularize the hardware, leaving the algorithm fundamtentals unobscurred. If just two processors were well-defined behind the HAL layer, the infrastructure would be there with examples to guide others to implement the same for other processors.

There are reasons why there is no HAL layer for small processors...

-Jeff

Gord>dan michaels wrote:

Reply to
Jeffrey Graham

Well, I think this is being done, but not in the traditional sense seen in the PC or large-form-factor embedded worlds. Microcontrollers were designed to be compact and do very specific jobs -- control the fuel injectors in a car or monitor and adjust the temperature in a digital thermostat. I don't see much impetus for MCU makers to offer software or SDKs for hardware drivers, especially as there are no standards in the hardware. Every OEM designs their hardware differently, and this is what drives the market and fuels progress.

There are, however, plenty of people doing "co-processors," which are like hardware drivers, and they provide a type of abstraction layer. They are independent MCUs with a simple serial interface. RoboBRiX is a good (and current) example. And a few MCU developers, like Kronos, offer ready-made code libraries that you include in your programs, and the libraries have much of the underlying interface code. For that matter, programming environments like Bascom AVR are composed of ASM segments that are effectively stitched together at compile time. Stuff like this makes quick work interfacing to LCDs and servos and such. You don't even have to know how the hardware works to use them.

-- Gord> It would be nice is if the algorithms were written against a Hardware

Reply to
Gordon McComb

Mine is in courtesy of Amazon.

Pretty good book. Probably just about what Dan Michaels was hoping for I'd say.

DPRG guys are going to love it for its description of a CanCan robot.

Statemachines are done in C code with "switch()"es on the state variable and "break;". Some psuedo code. Very little over all.

You really get the sense Joe has learned from the Roomba experience without belaboring the point.

The book is all about the subjects expected for the book. The back cover is all about the web site. Anybody used the BSim yet?

I think Joe may have another winner here, guys.

Reply to
Randy M. Dumse

Randy M. Dumse wrote: : Mine is in courtesy of Amazon. : Pretty good book. Probably just about what Dan Michaels was hoping for : I'd say. : DPRG guys are going to love it for its description of a CanCan robot.

: Statemachines are done in C code with "switch()"es on the state variable : and "break;". Some psuedo code. Very little over all.

: You really get the sense Joe has learned from the Roomba experience : without belaboring the point.

: The book is all about the subjects expected for the book. The back cover : is all about the web site. Anybody used the BSim yet?

: I think Joe may have another winner here, guys.

Now I'll have to get it. This was exactly what I was going to write about using a variety of processors, but MH said they had someone doing it already (now I know who :). My curiousity will force me to see if what Joe writes about is what I have been doing for a few years now too.

DLC .... Now where is that credit card....

Reply to
Dennis Clark

Sounds good - just bought my copy from Amazon also. Thanks for the review!

-Brian

Reply to
Brian Dean

Thank Joe for writing it.

I'm still finding my way around the book, but a couple items of interest from the Appendix C should give you some flavor of how Joe is writing these days.

"C Frequently Used Functions

" In the code for the various robotic systems I have developed over the years, a small number of simple functions tend to appear again and again. Although far from profound, the functions below are often useful."

Then he has Clip, Leaky Integrator, Running Average and Angle Computation.

Got the BSim going. Had to download the latest Java pluggin, although I thought my browser was already Java enabled. Anyway...

Not sure about the utility of the sim yet. Still playing with it. Have managed to crash it a few times, or at least get errors and lock ups.

Reply to
Randy M. Dumse

[in your wife's purse on the dining room table, dennis]

I'll be happy to hear reports on the book, and hopefully it will be hitting barnes+noble soon.

Reply to
dan michaels

Hi Gordon, I have the 2nd edition too. There is 30-page chapter 9 which covers subsumption, BBR, and FSMs. Then chapter 10 shows some examples, and there are 9 more sample programs in appendix B. I thought this was a nice coverage showing how straightforward subsumption programming really is, plus it nicely rounded out the hardware aspects of the rest of the book. All in all, I liked this book because of its overall systems approach. =======================

I haven't seen JJ's new book as yet, but I imagine it doesn't cover specific uC implementations, so there would appear to be a place for such a book. Also, I don't know how much of more traditional AI techniques might be covered in JJ's book, and I imagine there might be room for such a book - if it could be written so as to be applicable to "small" robotics - as opposed to academic robots with wideband-link-to-mainframe control. Also, when I looked at Myke's book, I was a little disappointed in that it seemed to be more of a PIC programming book than a robotics programming book - but I might be wrong on this account.

- dan michaels ========================

Reply to
dan michaels

Ah, of course you are correct. I had looked at the book some time ago and have since lent my copy out, and was going off the rather paltry index. I just looked at the index and TOC on Amazon, and it appears very little beyond chapter 8 is even indexed! (only a couple references here and there). Maybe they improved the index in subsequent printings.

-- Gordon Author: Constructing Robot Bases, Robot Builder's Sourcebook, Robot Builder's Bonanza

Reply to
Gordon McComb

:> Now I'll have to get it. This was exactly what I was going to write :> about using a variety of processors, but MH said they had someone doing :> it already (now I know who :). My curiousity will force me to see if what :> Joe writes about is what I have been doing for a few years now too. :> :> DLC :> .... Now where is that credit card....

: [in your wife's purse on the dining room table, dennis]

: I'll be happy to hear reports on the book, and hopefully it will be : hitting barnes+noble soon.

It is at B&N now, I leafed through it today, but declined to get it and got Karl Williams's "Amphibionics" instead. Joe's book is a good intro to state machines and subsumption (mostly state machines) for robotics, and has little in there that I haven't already discovered. He does some nice gentle breakdowns of the why's and wherefores however and for all the guys that give me blank stares when I try to explain FSM's with timers, this book will definately help them! Especially the priority arbitration schemes that are so essential to behavioral programming using this programming style. I didn't like the coding style of some of the examples, I prefer to use "switch" or "case" rather than lists of "if/thens" in my coding, it scans better for state machine usage and sensor evaluations and for embedded micros, the if/thens can be expensive on memory space in a small processor. It is a good book, but there is not much in there for me, but the last chapter on the "common" programming blocks, like angle computes and such. It was a long overdue book, I'm just jealous that I didn't get to write it! Maybe I'll ask my publisher again...

have fun, DLC

Reply to
Dennis Clark

PolyTech Forum website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.