New web articles on robotics are now available

I have just posted a pair of articles called "Calculations Useful for Robotics" on The Rossum Project web site. They can be found at
http://rossum.sourceforge.net/papers/CalculationsForRobotics /
The articles discuss two elementary approaches to the inverse kinematics problem for a wheeled robot (or vehicle). In other words, they help a robot answer the question "If I am here, how do I get there?"
Also, I would like to thank everyone who responded to my post here a few weeks ago and provided comments and suggestions for the articles. The feedback I received was very useful and I am grateful for it.
Gary
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

Looking forward to it. (I get 404 errors on the "Path ..." links.)
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Thanks. It was operator error. It's fixed now.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Thanks. It was operator error. It's fixed now.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Great articles - if you have a degree in engineering or mathematics. Otherwise, just looks like an elitist academic treatise...

Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Mr. Stewart,
Thank you for your assessment. As you can imagine, it is not at all what I'd hoped to hear. In fact, it is so completely at odds with what I thought I was doing in writing the article that I'm going to have go back through the thing and try to figure out what it was that you found so objectionable. Perhaps, if I clarify what I was trying to do, someone can offer suggestions for improvement.
I find your description of the article as "elitist" particularly troubling since I tried very hard to stay clear of any advanced mathematics. For example, in the first article (which describes a robot's path following an arc of a circle), I stuck strictly to high school trigonmetry. In fact, it's a lot quicker to obtain the same results using calculus, but I wanted to keep the material accessible to high school students. Even then, there were places where I worried that I was giving too much explanation, not too little. If you look at equation 4, you'll see that I actually wrote out most of the steps in the algebra, showing where the cosines cancelled and so forth... these are steps that are almost always left out in textbooks (the assumption being that the teacher or professor can always fill in the details). Since my readers would be mostly on their own, I felt it important for me to show the development in detail, even at the risk of appearing pedantic.
And this was my approach throughout both articles. In the second article, which used calculus, I was careful to stick to first-semester stuff. When I took calculus, I was always losing 5-points per problem when I solved an indefinite integral and forgot to write down the integration constant. At first that annoyed me because I assumed that writing down the constant was just a pro-forma exercise. Later, I realized that it was important because that constant was the key to linking the calc to real-world applications. In writing my article, I wanted to give inexperienced readers a hint about what was going on so that, perhaps, they could avoid my rather clueless experiences in freshman calc. So in the second article, when I talk about applying "initial conditions" (which I put in italics for emphasis), I put a lot of work into supplying a context for the term. To someone who's taken differential equations, of course, the term is a wonderful shorthand for all sorts of ideas that might take a whole semester to sink in. Since I figured that some of my readers would not yet have that experience, I wanted to give them what they needed to use the concepts themselves.
So, I guess I have to ask you what was the basis for you complaint. The tone? The explanations? Awkward mathematics? I'm sure there are ways to improve the math. If there are gaps in the explanations, I'll be happy to try to fill them in. And as far as the tone... well, it is a bit dry, mannered, and plodding, but then again, so am I. We all have our crosses to bear.
The thing that should be clear by now is that I didn't just churn out an academic paper, but thought very hard about what my readers would need to be successful with the techniques I presented. Franky, I do not believe that I failed. Clearly, you feel otherwise. When I wrote the article, my thought was that I was building a bridge from some elementary theory to more advanced applications. Now I find that rather than building bridges, I am burning a few. So, then, what's the problem? Tell me and I'll fix it.
Gary
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
snipped-for-privacy@users.sourceforge.net wrote:

[snip]
Gary:
I would like to provide you with some constructive feedback on your articles.
You are clearly trying to write a couple of useful articles, but I must confess when I read the first article my basic reaction was "why would any beginner do it that way?"
For differential steering, it seems much easier to adjust the robot bearing to point at the destination and go in a straight line. For Ackerman steering, again it seems easier to go in a short circle until the robot is pointed at the destination and then go in a straight line. For holonomic, going in a straight line is again the simple and easy solution.
I simply did not read the second article, since if you want to go through a series of way points, the reorient and straight line method seems much much simpler.
Lastly, in the first article, at around [2] the text text around "From inspection, we see the sum of angles R and phi ..." should probably be phi-sub-G instead of phi.
I stopped reading the first article around [5], since I think most beginners (like me) would prefer use the simpler straight line solutions. I would strongly recommend that you add some text to your articles pointing out that the straight line solution is significantly simpler; otherwise, the very beginners you are trying to help might erroneously conclude that there is no simpler solution.
Again, the feedback above is meant to be constructive.
My $.02,
-Wayne
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Wayne,
Thank you for your excellent suggestions. You are, of course, correct about the typo near equation [2]. I will fix it as soon as possible.

I thought about this question when I was writing the article and it looks like I should revisit it. In the case of the differential steering system, it might make sense to say something like "if you are interested in executing a simple point-and-shoot maneuver, the required information (and then some) is available at http://rossum.sourceforge.net/papers/DiffSteer/ " In the case of the Ackerman steering, it might make sense to write an additional, much shorter, article on how to get a robot pointed in the right direction within certain performance constraints. To do so, I think I'm going to need some real-world testing. Is there anyone out there with an Ackerman equipped robot who would be willing to collect some data for me?
Finally, addressing the question of why anyone would want to do the more sophisticated maneuvers. Well, first off, I strongly encourage anyone to work with the easy maneuvers first. That being said, there are a number of advantages to the more challenging maneuvers and maybe I should write more on the topic. Do you think it would be more effective in the Introduction section or in one of the articles? The main advantage to the advanced maneuvers is that they're smooth. If you are attempting precision dead-reckoning, the worse thing you can do is stop. When you do, the backlash in your drive system and encoder resolution errors contribute to loss of navigation information. Also, even small robots carry some inertia. So starting and stopping is costly in terms of time and energy.
As I worked with the cubic equations (the second article), I liked them better and better. They give a much nicer results than I'd expected (it's the continuity and transitions in speed and acceleration that do the trick). Even so, it's important to keep in mind that the equations presented are just a starting point. For example, they assume perfect knowledge of the robot's environment. When does a robot really know the range and bearing to a target with any kind of accuracy? When does it actually know where it is or its true rate of acceleration? Thick books have been written on the problem. My little articles don't pretend to be anything but a first step toward a real solution. Really ambitious roboticists might want to look at "Introduction to Autonomous Mobile Robots" by Siegwart and Nourbakhsh, or "Computational Principles of Mobile Robotics" by Dudek and Jenkin.
So, any suggestions out there as to what I should write about next?
Gary
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
I'm no expert, but after reading the first article I'd call it textbook-quality. If I had any critique at all, it would be one you've already pegged on: the language is a little dry given your target audience. Also, there's one specific language issue: I think the sentence that starts "For any locomotion system, the centripetal acceleration due to the combination..." could stand revision.
Other than that, keep'em coming!
As for future topics: having skimmed the second article, it occurs to me that a robot which needs to, say, get around a corner in a tight maze would need more than just two control points (at its start and destination around the corner) - it needs a constraint to stop it from hitting the corner on its way! The solution will need to include knowledge of the robot's dimensions, or a "minimum safe distance" to keep from the wall. I guess this might otherwise be stated as how to chose your control points given the constraints imposed by the environment.
Keep up the great work! D
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Don,
Thanks for your comments. You're absolutely right about that particular sentence needing revision. It was a serious klunker.
Your idea about presenting an algorithm for avoiding walls and obstacles is a good one. If the robot knows about its environment ahead of time, then it can pick a path to avoid problem areas. I dealt with some aspects of the problem in the RP1 robot simulator in trying to model collisions. There's also some useful material in Joseph O'Rourke's "Computational Geometry in C". I'll have to give some thought to the scope of the problem and what I can actually do in an article.
Gary
Don wrote:

Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
snipped-for-privacy@users.sourceforge.net wrote:
[snip typo]

I've read that paper as well and it is still more way more complicated than necessary. You briefly mention the easy solution:
... let's consider the problem of getting a robot to make a turn around a corner in hallway or road. A simple approach is to have the robot drive to the intersection, stop, and piviot. Clearly, though, such an approach is inefficient and a bit ungainly. A more elegant approach would be for a robot to *round the corner*, following a gradual circular arc...
and then dismiss it it as being "inefficient" (presumably you mean energy inefficienct) and "ungainly."
Most beginners have a difficult enough time getting the robot to go in a straight line, let alone a gentle curve.
The following critisim is meant to be constructive. I think it is a diservice to your intended audience to skip over the straight line and pivot solution. It is not like it is difficult. If you are at (x1, y1) with a bearing of b1 (0 <= b1 <= 2pi) and want to go to (x2, y2), you compute the new bearing as b2 = atan2(x2 - x1, y2 - y2) and the desired distance as d = qrt((x2-x1)^2 + (y2-y1)^2). The robot is pivoted to the new bearing b2 and the robot is driven forward by a distance d. Actually, the hardest thing for most people is figuring out how to compute atan2 when your trig library does not have an atan2 function.
[ackerman steering snipped]

I request that you actually say that in the article.

I'm not a big fan of overloaded introductions. A small serious of articles that leads the user from simple to hard is a great service. The differential steering article mentioned above is still way too complicated given that simpler solutions exist.

I've never seen an authoratative source of where dead reckoning errors come from. Most discussions that I've read claim that the error comes from small errors in bearing being amplified over distances.
> Also, even small robots carry some

Anytime you make a sharp turn you need to bring your speed down. However, I basically agree that starting and stopping do take more time. A beginner cares and more about getting the job done.

If your focus is for beginners, I think a good discucssion on rotational sensors would be interesting. There are now a bunch of articles on PID, but most of them just assume that you know how to get useful information from a quadrature encoder. Anyhow it is a suggestion.
Again, let me repeat, all criticism is meant to be constructive.
-Wayne
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

Indeed! OTOH, stop and pivot is quite intuitive, hardly requiring discussion or much thought. If you gave it any thought at all, it would be: "I'll worry about the niceties later. For now, I'll just stop and pivot."
That aside, I don't know that I would plot a course as all straight segments or all smooth curves, spline-like. Waypoints define both a location and approach vector. It depends on the problem you're solving, of course. I expect a functioning nav system to hold the approach path as closely as it holds waypoint locations.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

My degree is in neuroscience, but I didn't find them elitist nor hard to understand. It's only high-school level math, from what I could see, and the discussion was pretty clear. I don't need the material they present at the moment, but I plan to go back again in the future when I do.
Best, - Joe
,------------------------------------------------------------------. | Joseph J. Strout Check out the Mac Web Directory: | | snipped-for-privacy@strout.net http://www.macwebdir.com | `------------------------------------------------------------------'
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Hi Gary
Sorry if my comment was harsh and made a somewhat unfair generalisation ( wiping egg off my face ).
I guess its been a long time since I did some higher algebra and first-year calculus at university. I only have an undergraduate degree in chemistry and biology and was a high-school chemistry teacher for over 10 years. I used to tell the students " If I was smart, I wouldn't have been a science teacher, that I would have been an engineer or mathematicican"! Even though I used calculus for some of my courses, that was over 15 years ago. I guess my maths isn't as strong as I would like it to be - I guess that's why I didn't do engineering or mathematics degrees. So I guess my maths intellect is not as high as I would like it to be.
Yes your first article was well explained and included high-school trig. Maybe it was just me, but the second article A Path Based on Third-Degree Polynomials lost me -probably because I haven't even looked at calculus for 15 years, and got turned off when I thought I would have to spend a lot of time and energy to understand the mathematics. I guess it is difficult to know how much hand-holding is needed in this article, but from my limited capabilities, more step-wise explanation or perhaps references to the background calculus, algebraic manipulations and derivations would help. My Texas Instruments TI-89 Titanium could probaly do some of the math for me, or Mathematica or Matlab (if I had a copy).
I suppose what annoyed me was the tone that is similar to maths textbooks that assume that because the author has been teaching maths for a living for decades that the reader can fill in all the gaps.
Maybe that's why if I was studying calculus again, I would be the type to buy a "Calculus for Dummies" book. Some people like myself can do the math quite well once it is explained in way the student can understand. I found that university lecturers are not necessarily good teachers in that some cannot explain things from a different angle and lack flexibility in communicating ideas laterally.
So basically, I apologise for an unfair criticism that probably reflects a lack of my maths skills and laziness not re-learning the necessary skills to tackle the concepts involved. It is frustrating if you really want to understand new concepts for robotics, but feel limited in your ability to understand the maths that others find easy.
Keep up the good work.
Cheers
|-]
Dale

Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
By the way, a picture says a thousand words. More diagrams explaining concepts ( not necessarily physical movements, but abstract concepts ) would be great.

Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
snipped-for-privacy@users.sourceforge.net wrote:

Congratulations. The system worked.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

Polytechforum.com is a website by engineers for engineers. It is not affiliated with any of manufacturers or vendors discussed here. All logos and trade names are the property of their respective owners.