unlevel terrain navigation
jefflaut
Posts: 8
Greetings.
I am working on a project which is a small-scale robot that will create an elevation map of a designated area.
The robot is to drive across a rectangular peice of land, the dimensions of which it is told.· While driving it will note and record the elevation at some number of points.
I figure I can use tilt sensors to measure the angle that the robot is at.· Knowing the distance the robot travelled, and the angle it travelled, I can get the elevation.·
One problem in my head that I can't seem to come up with a solution for is how to keep the robot moving in a straight line.
If the robot is to come in contact with a peice of land at an angle, it will be skewed from a straight path.
I've been looking for a solution to this for a while, and haven't come up with anything practical...so any suggestions are appreciated.
thanks in advance for any help.
I am working on a project which is a small-scale robot that will create an elevation map of a designated area.
The robot is to drive across a rectangular peice of land, the dimensions of which it is told.· While driving it will note and record the elevation at some number of points.
I figure I can use tilt sensors to measure the angle that the robot is at.· Knowing the distance the robot travelled, and the angle it travelled, I can get the elevation.·
One problem in my head that I can't seem to come up with a solution for is how to keep the robot moving in a straight line.
If the robot is to come in contact with a peice of land at an angle, it will be skewed from a straight path.
I've been looking for a solution to this for a while, and haven't come up with anything practical...so any suggestions are appreciated.
thanks in advance for any help.
Comments
Traveling in a straight line can be difficult!
If the robot is a tracked vehicle and has enough power to spin the tracks when under load, then optical encoders on the track motors are not going to help. I have such a robot and it can easily spin a track on any surface. The motors are powerful enough to spin the tracks despite any practical track-width. (There might be a lesson here worth thinking about.) If the tracks did not spin, then the motors on my machine would break something on the robot. But, I use optical encoders on the gearmotors and whenever one track gets ahead of the other I speed the slow one up until it regains "sync." Still, when I make a hard turn, both tracks are going to spin directly dependent on the severity of the turn and I lose "track" (pardon the pun!) of where I am . . . pretty much.
If the robot is a two wheel drive machine--I've never seen one--then much the same problem would exist, however it might be less severe.
If the robot were a tricycle and both drive and steering were incorporated in the single wheel, it looks like the problem would be minimized, but not eliminated.
I have been thinking about this very problem for a LONG time. I have thought of optical encoder-equipped idler wheels that ride on the ground. When the tracks or wheels slipped, the followers wouldn't do a thing and you would have an accurate count. But, what about turns? How do the followers account for that?
I have thought of beacons and even worked a highly accurate system out. However, it would not work on uneven ground. I am not POSITIVE it would work at the hobbyist level, at all. But, NASA uses it (or used it) with the GPS constellation.
Lately, I have been thinking of ways to turn, stop and figure out exactly where the machine is . . . but, that was really your original question, wasn't it? [noparse]:)[/noparse]
Robots are mostly blind and deaf. They can be given limited "sight" and hearing. But, how can we expect them to perform anywhere near as good as a blind, deaf human being with a real BRAIN? Especially with the on-board computing power available? Of course, that is the solution that I want to investigate: I want to place a LOT of computing power in a stationary place and communicate with the robot wirelessly. Given enough disk storage and the ability to depend on the absolute location of certain landmarks (house corners, underground wires, etc.), this might be a workable solution.
You might consider a different approach. Why does it need to travel in a straight line? Especially if it knows the property boundaries? Think of the property as a 3D surface your machine can discover and record. After enough discovery, you should be able to determine your position pretty accurately be examining the highly detailed map previously built and refined every time you go for a drive. Better think about a LOT of disk storage available wirelessly! But, it would certainly be fun and unique.
I don't have an answer. I have done some of these things--the simpler ones--and want to try the rest. Maybe there is something here for you to think about.
--Bill
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
You are what you write.
I guess the real problem is getting the robot to know where it is at all times.· I could let the robot roam randomly, but as it hits imperfections in the terrain, its path is going to differ from that which it thinks it is travelling.
Right now im thinking of some sort of a beacon system for triangulation.· another idea was using the hitachi HM55B compass...but I'm thinking it won't be accurate enough.
I suppose a beacon system on uneven ground would require 3 beacons.·
As far as data storage is concerned...I plan on tackling that obstacle once i figure out this one.
Thanks for the reply.
·
I guess I should have said that traveling in a straight line is IMPOSSIBLE. Not even you and I can do it. What we do is "head that way" and make corrections enroute. This works very well as long as you can continually determine where the end point lies.
We only care about straight lines in math. In reality, a straight line does not exist.
--Bill
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
You are what you write.
I guess travelling in a straight line isn't important...the robot just needs to have a somewhat precise idea as to where it is after moving, so it can say "I am here and the elevation is this."· After travelling to a sufficient number of spots, a map can be made.
This conversation suggests that I should experiment with both laser beacons and an array of photocells (?) and figure out how laser designators work. (Probably the same as a laser beacon.)
I can imagine, say, a 6x6 array of photosensors pointed in the direction of something like a laser bore sight. Some of the photosensors--or maybe just one--will receive more photons than the others and consequently produce more electricity, which can be measured. I seems like a navigation system based on this would be relatively straightforward.
Perhaps you start off with a simple array of photosensors and, if necessary, progress to light blocking tubes of x length around each sensor and then to a lens that focuses the light. The latter seems like it would provide great sensitivity, especially if the laser target were not a direct beacon, but a laser illuminated "target."
If there were a fence around your property you could use one laser mounted somewhere and controlled to illuminate different parts of the fence so the robot could always "see" the destination quite clearly, head that way and correct its path as needed enroute.
Of course, it would be easy to do in the house. (My back yard sits on a cliff above a·golf course, so we have no fences!)
--Bill
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
You are what you write.
Most all Olympic shooting sport targets are provided by a Swiss company-Suis Ascor. The target has a microphone in each corner of the target. The differences in the time, each microphone hears a shot penetrating the target, is used to calculate the shot score.
My 'bot is based on a propeller. There are three US beacons, each with a RF reciever. The 'bot can request a "ping" from each beacon individually. The 'bot has a US receiver, times the length of time to receive the ping. We know know the distance from each beacon. This part of the system is all working.
Now I am working on the trig aspect to reduce the range readings to an x/y coord system. The 'bot has a bluetooth connection to a laptop, and when done you will be able to click on a spot on the map and the 'bot willl do it's best to get there.
The 'bot also has an odometer and a V2Xe compass module for dead reackoning. So far the system is designed for smooth surfaces like found in the classroom. I'm having some trouble with the math, so if anyone is a trig genius feel free to contact me. [noparse]:)[/noparse]
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
www.madlabs.info - Home of the Hydrogen Fuel Cell Robot
I have pretty much the same idea in my head right now.
What would control the beacons? another microcontroller?
I'm thinking of a very similar concept, except the robot doesnt request a ping...the beacons instead emit pings at known time intervals.· The robot knows when to expect a ping, and would compare that to when the ping is actually recieved.· I guess the big problem with this method is getting the robot synchronized with the beacons...perhaps for that reason your method is better.
I must admit I'm not a robotisist, but you're working on an interesting problem and I can't resist! Maybe we can get moved to the Sandbox and continue for a while.
How about a rotating beam of light (laser or focused infrared) on the robot. Probably should be self-leveling. The robot will always know which way the beam is pointed by an encoder or other system. I'm thinking the beam would be very narrow, but tall enough to help with the uneven terrain. Very similar to the previous post based on ultrasonic, but may give a narrower spread at long distances.
In the corners of the field are posts with detecting circuitry. When a post sees the beam go by, it radios the robot that it has been "beamed". After hearing from 2, 3, or 4 posts, the robot can calculate where it is.
Cheers,
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Tom Sisk
http://www.siskconsult.com
·
The beacons use a SX chip. They wait for their beacon request, then pump out the US signal. It is necessary to be able to request a ping. There is no way you are ever going to keep synch otherwise.
Stamptrol,
I did some experiments with light instead of US. I found that it was going to be much more expensive to develop. Part of my goal is to make a cheap system that can be used for classroom navigation. Once I get over the math hump, I think the system I am working on will work pretty well and be not *too* expensive.
I am developing a "mission to mars" class. Students will have control of the bot via a laptop. The bot will be semi-autonomous, like a mars rover. The idea will be to explore "mars", finding an objective and returning to "base". I want to expose students to interpreting data and making decisions.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
www.madlabs.info - Home of the Hydrogen Fuel Cell Robot
your idea seems like it would work, but I'm not sure how well it would work on uneven terrain.· The self-leveling beam of light will take the changes in elevation out of the picture, which is good and bad.· This system would be able to find where the robot is on the x-y plane, but not the elevation.· Using the ultrasonic beacon idea would tell me the location and the elevation, and also I don't think it would require and self leveling sensors.
What kind of US reciever should be on the robot?
I assume you would need something that is close to omnidirectional, or have multiple sensors.· Most of the ones i have looked at have a narrow range in terms of the angle of the US signal.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
www.madlabs.info - Home of the Hydrogen Fuel Cell Robot
This is the same technique that surveyors use when plotting levels with an automated electronic level. The rotating laser light is checked with a leveling rod at multiple places in the field as the laser spins.
Anyway, sounds like there are several ways to proceed; as always, its the limitations of time and money that shape the path.
Cheers,
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Tom Sisk
http://www.siskconsult.com
·
In fact on uneven terrain they would give false distances to some degree based on the difference in vertical height. See sketch below of to exact same distance readings from differrent elevations.
Both times the distance from robot to beacon is 12 feet yet horizontal distance is less. Given that both sound and light spread out as they travel there is no really good way to tell if the beacon is above, below, or at same height as robot.
It would be possible to use beacons with multiple targets that recieve the light beam, perhaps a laser would be better since it can be focused. If you aim at the beacon, and it tells you which height target you are hitting and if you know the robot is setting horizontal you can figure the vertical height, then determine the actually horizontal distance. To know if robot is tilted you could use a sensor like a mecury switch or you could aim at all the beacons. If East is high and west is low, the robot must be tilted East side high. The angle could be found from this.
Yesterday afternoon, after discussing this quite a bit with jefflaut, I continued to think. I couldn't help but get a photoresistor out (I don't have any photocells on hand) and hook it up to a meter. Then, I grabbed one of my bore sights and hit the photoresistor from as far as I could get . . . about 25 feet away.
Whenever I hit it, the resistance immediately dropped to zero. I am sure that indoors, at least, the photoresistor would easily detect a Class III laser. I am going to try a photocell because it seems to me that a navigation "system" designed to use light should use photocells. If my results are as good as yesterday with the photoresistor, I will build a 20x20 array and start experimenting.
My thoughts are similar to stamptrol's. I will mount the array on a dual axis stepper so I can search for the laser beacon. It should be easy to write code that will navigate towards the laser beacon by moving in the direction of the photocell that has detected the laser. (It COULD be adjacent photocells; no problem . . . go that a'way.)
What I REALLY want to do is learn enough to allow me to build something that will detect a laser DOT, rather than the laser itself. This may involve light shielding tubes, but it probably means light magnification. There are jillions of cheap magnifing lens available in every diameter you could name. One glued to the end of a light shielding tube at the len's focal length SOUNDS like it might detect a laser spot.
jefflaut, in my way of thinking, this will allow one to make their robot go "straight" by allowing it to definitely identify the endpoint and use traditional methods to navigate towards it. As it is moving towards it, it could also be sensing the elevation of the terrain, somehow. Ultrasonics are far less precise than a laser beam or hopefully a laser dot. If this works out, dot or beacon, then one could build a laser beacon system rather easily. If the laser dot detection proved feasible, you could use a single laser mounted on a dual axis stepper setup--on a seperate platform from your robot--to form a tri-axis beacon, or even greater.
I know the laser beacon idea will work, because I essentially did it yesterday. You could build beacons out of individual laser modules, if necessary. What I do not know is if ANYTHING would work in outdoor, full daylight. The human eye is most sensitive to green, so it is tempting to use a 532nm green beam laser. But, the human eye and a photocell don't have that much in common.
--Bill
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
You are what you write.
Ok,· stop laughing!!· Geez!
Your idea is actually very good. It is the idea I proposed earlier in this thread with the "idler" wheels equipped with encoders. I have seen this implemented and "heard" reports that it works very well.
--Bill
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
You are what you write.
I wonder if "super bright" light, say at 25 yards,·could compete with the sun in full daylight? I don't know if it could, but I kind of doubt it. I like the laser beacon idea and, if possible, the laser dot idea.
--Bill
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
You are what you write.
Ever tow a boat? [noparse]:)[/noparse]
Unless you are going PERFECTLY straight--forwards or backwards--the boat trailer does not follow your track. However, a big plus for your idea might be if you decided the towed platform was really the key machine. In other words, all the robot would do is pull it around and receive navigation commands from it based on the towed platform's correct encoder readings.
There is an idea in that concept. (I woud hate to watch the robot back it up, though.)
--Bill
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
You are what you write.
I think we are almost on the same wavelength here, but not quite. The fact that the trailer does not follow your tracks unless you are going straight is the whole key. If you set the "truck" and "trailer" in a straight line pointed at your destination the encoder would be at 0 degrees. If the "truck" veered 10 degrees left of the desired straight route, the encoder, incorporated into the hitch, would register that 10 degree error. The error signal could then be used to put the truck back on the straight and narrow path.
Another decent benefit would be making precise turns. Want the 'truck' to turn 90 degrees? Turn it until the encoder tells you it's rotated 90 degrees.
Oh! You would put the encoder--at least one of them--in the HITCH! I think that is a great idea. However, the hitch will be pulled through a smaller percentage of any turns by the truck. (Imagine pulling that boat around a curve. The trailer tracks inside the curve of the pulling vehicle . . . but then it all evens out at the end of the curve.)
I think.
I like your hitch-encoder idea and will think about it some more.
My thought was to design a four wheel wagon to put the logic in and put the batteries in the pulling machine ahead of it. Sensors could go both on the pulling machine and the wagon. The wagon would be equipped with optical encoders on the two rear wheels. The pulling machine would be equipped with optical encoders on two wheels, as well. That way you could easily detect when the pulling machine was spinning.
Ain't the Internet a wunerful thing? [noparse]:)[/noparse]
--Bill
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
You are what you write.