Shop OBEX P1 Docs P2 Docs Learn Events
Autonomous Navigation Suggestions? — Parallax Forums

Autonomous Navigation Suggestions?

prof_brainoprof_braino Posts: 4,313
edited 2012-09-14 15:01 in General Discussion
Hi All

In a helicopter thread, Bits has offered to build boards.

http://forums.parallax.com/showthread.php?141004-Program-My-New-Helicopter-to-Fly&p=1108107&viewfull=1#post1108107

So I'm look for what to ask her to build.

I've been interested in autonomous navigation for a a while now, maybe its time to get started?

Although the original thread specified helicopters, I think a good approach might be to start with a sensor module that could be put in a handheld unit and later moved to a ground robot, and only later put in an aerial vehicle when it s shown to do its job, as to not risk destruction of itself or bystanders.

The high level goal is to continuously track the unit's position and orientation in space. I'm thinking Inertial Navigation + GPS. If the unit were placed say on the corner of a table, lifted and tossed around the room, the unit would detect and log positional changes, and detect when the unit is returns to the starting position, or any other specified position. Also, in cases where GPS line of sight is available, the unit would be able to apply its relative positions to the GPS data, for INS correction or mapping to world coordinates.

Any example intended use would be:

Enter a cave or structure at a point where GPS location can be determined. Travel through the interior logging data. Emerge from the cave or structure at different exit(s). Use the data to create a map of the structure in real world coordinates. (Actual map model can be created on an external workstation, at this point we just want to log the data).

Another use would be to fly your quad copter through the house and map all the walls, rooms, furniture people, cats and dogs; then case the cats. This might require a bit more work, but we can still keep it as an eventual goal.

I think parts to supply the basic necessary data include:

- 3-Axis Gyroscope
- 3-Axis Accelerometer
- 3-Axis magnetometer
- Barometric Pressure Sensor
- GPS

I also intend to provide capability to add other sensors down the road, this will not be an issue. Things like range finders, audio, temperature, humidity, etc, can be included after the basic navigation is established.

As a given, we can have as many inputs as we want, and log as much data as we want. Data logging speed is limited by SD card technology, I would guess Class 6 should be a rule of thumb for starters.

So, anybody have input for parts for sensors for autonomous robot?

I'm looking for recommendations on specific parts you have used or would like to use, and any pros or cons used for making a given selection.

Considerations are:

- Ease of interfacing to prop
- Cost
- size
- power requirements

Of course, the target is all the functions at high speed, in a small size, with low power consumption, for low cost. And we can make any adjustments we need. This process will consider the trade offs for each option.

I am open to any existing units, if such a unit exists (I haven't seen such a sensor yet, beyond those only available to the military). These could be a full solution; or a parrtial solution to which we add the missing parts. In liue of existing solutions, I want to come up with a list of parts the can be built into a board and interfaced to a micro controller.

Your input, comments, suggestions?
«1

Comments

  • SRLMSRLM Posts: 5,045
    edited 2012-07-12 06:53
    I think you'll be hard pressed to beat the cost and effectiveness of this module: http://www.ryanmechatronics.com/XMonkey.htm

    In any case, the hard part of an IMU setup is the filtering. I know of three algorithms: Kalman filtering, directional cosine filtering, and the QUEST algorithm. Eventually I'd like to implement one (or more) of these on the Propeller, but I'm still learning them (after years of on and off study). I'm partially through the QUEST algorithm right now, but Kalman filtering is really the way to go (it's possible to prove that it is optimal).

    Edit: And of course, there is the MPU-6050: http://www.sparkfun.com/products/10937 Unfortunately, the interface to the motion processing system is not released (and they've been withholding that for years now...).
  • ercoerco Posts: 20,259
    edited 2012-07-12 08:39
    That's a huge job, prof_braino! I admire your enthusiasm.
  • prof_brainoprof_braino Posts: 4,313
    edited 2012-07-12 09:10
    erco wrote: »
    That's a huge job, prof_braino! I admire your enthusiasm.

    If it was a small job, what fun would it be? :)

    Actually, its a huge but easy job. It just takes time to gather input from the proper sources, and do a proper analysis. Which is clearly beyond my expertise, but the forums contain ample intelligence and experience, it should only be a matter of bring the parts and people together. And so it begins....

    The Xmonkey looks cool. The question is can we make one from parts, that does the same or better, for less?
    Xmonkey already has cortex built in, cool but we might not need since we have the prop. Also, the Xmonkey already has all the software set up, part of this project is to look into using the prop from the drivers up. And it attempts to handle servos, etc, which we don't need per se, as we can do all that on the prop. So this might do the job, but has a lot of redundancy in this situation, which might indicate unnecessary cost. It certainly is an option, but might not not fit our prop project, nor does it make a case for against doing the prop project.

    The MPU-6050 is an interesting suggestion. I started looking at this before I began asking for help. Anyone with experience integrating a 3 axis magnetometer to this part?

    Now we have our first two data points. Off to a good start!
  • BitsBits Posts: 414
    edited 2012-07-12 09:10
    erco,

    Its all relative! In fact I think this board would be trivial compared to what I do most of the time.

    :smile:
  • ercoerco Posts: 20,259
    edited 2012-07-12 09:27
    @prof & bits: I choose more easily achieveable goals than you two. You know, the low-hanging fruit.

    Heck, many people were surprised how hard it was to make a robot do a simple figure 8. Where were you whiz kidz for THAT challenge? :)

    http://forums.parallax.com/showthread.php?138125-Erco-s-Figure-Eight-Challenge

    It's never too late to get in on it!
  • Duane DegnDuane Degn Posts: 10,588
    edited 2012-07-12 10:31
    I think the board would be the easy part.

    As SRLM said, it's the software that's a killer. (I keep waiting to see the stuff SRLM is working on (I bet it is very very cool).)

    As I often hear "Hardware is easy, software is hard."

    I do agree with prof about this being fun though.

    One possible navigation aid I hope to try is to add IR LEDs to my robot and use a Wii Mote to monitor its position. Of course your limited to the area seen by the Wii Mote, but maybe I can at least clean our carpet better by giving our Roomba a set of eyes.
  • BitsBits Posts: 414
    edited 2012-07-12 13:19
    Duane Degn wrote: »
    I think the board would be the easy part.

    As SRLM said, it's the software that's a killer. (I keep waiting to see the stuff SRLM is working on (I bet it is very very cool).)

    As I often hear "Hardware is easy, software is hard."

    I do agree with prof about this being fun though.

    One possible navigation aid I hope to try is to add IR LEDs to my robot and use a Wii Mote to monitor its position. Of course your limited to the area seen by the Wii Mote, but maybe I can at least clean our carpet better by giving our Roomba a set of eyes.

    So true, that is why to me the board is child's play.
  • PublisonPublison Posts: 12,366
    edited 2012-07-12 13:41
    Why not keep it in the Quad Copter Thread. That's where all the Propeller hardware/software is being developed.

    http://forums.parallax.com/showthread.php?133372-Ken-Cluso99-W9GFO-JasonD-s-QuadCopter-Build-Log-(updated-info-ELEV-8-availability)

    And Jason is doing some more in this thread:

    http://forums.parallax.com/showthread.php?136787-QuadX-my-latest-Propeller-with-Propellers&highlight=Propeller


    It just seems it would be better to keep it all together.
  • prof_brainoprof_braino Posts: 4,313
    edited 2012-07-14 07:56
    @erco "make a robot do a simple figure 8." INS would allow making any figure of any size on any surface. Experience with the issue of wheel slip when counting rotations is one of the factors that lead to this project.

    @Duane: "Hardware is easy, software is hard". This is the trick. If we can start with the right hardware, the software should be a bit easier. I'm specifically looking for an application with a lot of data in multiple streams, a lot of logging, a lot of processing, interesting realtime constraints, and a fairly dramatic result. This is the show off that abilities of the next release(s) of propforth with the high-speed-multi-etc, but the hardware would be applicable to any development environment/language. After the demo is done (if ever) I would expect somebody would want to show how its done better in another method. (if there isn't already an example on similar hardware).

    @publishson: I have been avoiding the quad copter thread until I finish at least one of the zillion projects I have not completed, I guess its time to start reading. I see its 50 pages long already, it might take some time to catch up. I was not aware they were tackling INS per se. In any case, INS is NOT limited to quad copters, I should think it would need to be pretty much perfect before even starting a quad copter. This being due to the issue is the autonomous bot falling out of the sky and crashing into some kid's head. I plan to start with a hand-held, move to a tiny RC-car or hex bug, and hold off on the flying autonomous platform with mounted paint ball guns until ... later. :)

    @bits: So far we have the accelerometer and gyroscope for $20 in the MPU-6050. http://www.sparkfun.com/products/10937 How does that look to you? If we went with just this and a prop chip on one board, what would it look like and how much would it take to get some made? (I'm assuming we can add or subtract pats as we wish while its still only on paper). Would you do this with a single board for prop and peripherals, or would you make it a daughter board for a quick start or protoboard?

    We still need magnetometer, GPS, and barometric pressure. Any more suggestions, or alternatives to the MPU-6050?
  • ercoerco Posts: 20,259
    edited 2012-07-14 11:25
    prof: It always seems easier than it is. It's all academic until you have to deliver. There's a lot of great hardware and software out there. Yet "stuff happens", usually at the worst possible times, at a contest or other public demonstration. Airliners crash. Hubble telescopes need eyeglasses. Magellan robots go off course. Segways go out of control. Quadrotors fall from the sky (even at Parallax Expo!). I'll never forget seeing Tandy Trower of Microsoft Robotics Studio presenting a robot at CES. Despite unlimited resources, his robot wouldn't do anything onstage. It can all be quite maddening.

    Again, I admire your enthusiasm and look forward to seeing your progress.
  • John AbshierJohn Abshier Posts: 1,116
    edited 2012-07-14 12:18
    For a wheeled robot, don't forget odometer/encoders. Also use what was commanded. For example, if cmdSpeed == 0 and encoderVel == 0 then position = last position.

    Lots of redundant sensors would be good. Magnetic compass will be influenced by buried pipes; gyros drift, GPS course over ground probably requires a minimum speed and does not necessarily equal vehicle heading, wheel slip affects odometry calculation of direction. The hard part is how to fuse all the possibly conflicting sensor values.

    Part of you stated goal sounded like simultaneous localization and mapping. Laser range finders are often used for this.

    I don't remember reading of anyone attacking this problem for both indoor and outdoor, but I am sure that someone has.

    John Abshier
  • prof_brainoprof_braino Posts: 4,313
    edited 2012-07-14 13:33
    So, just to review, this thread is looking for recommendations for hardware sensors for an autonomous navigation. JUST the SENSORS for now. All the software will be addressed AFTER the hardware is selected. Yes, there is a lot of great hardware out there, this goal here is to narrow it down to the specific components we want to build into a board. Each individual sensor type will have its drawbacks, typically several types are used to compensate for the issues of any one sensor. The goal is a set of sensor that can track the units position, orientation, and speed in space, without the drawbacks of any single sensor type.

    So far, I have begun to make some assumptions, how to these sound?

    1) The initial design is asks for a prototype board with just the sensors, and the ability to interface each to a core on a prop chip. The prop chip may or may not be on the same board as the sensors. The prop cores need not be on the same prop chip.
    2) The initial design is for a stand alone unit, and is not assumed to be built into a helicopter or any other vehicle. Maybe it will be put in a bot if things work out, but not yet. So things like wheel encoders are not within the scope of this effort as wheels are not assumed to be present.
    3) the goal of the HARDWARE portion of the project is to get a suitable set of sensors, and have them send their raw data to the prop for logging.
    4) All processing, filtering, analysis, etc is for the NEXT phase of the project.
    5) the first goal of the software phase will be to have the unit track its position in space, and determine when the unit arrives at an arbitrary point and/or orientation in space. For example, place it on a table, set that as the target point, wave the unit around in the room, and have it "ding" when its place in the original spot. The measure of success will be the accuracy of difference between the "ding" coordinates and the actual coordinates of the target.
    6) fancy things like controlling robots and autonomous vehicles are left to later effort (should this succeed) and are not in the scope of today's tasks.

    Does this seem clear and reasonable?
  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2012-07-14 14:10
    Oh: "autonomous", not "anonymous." I was just curious to see where on the web you were wanting to go so covertly. :) Never mind. I need new glasses.

    -Phil
  • John AbshierJohn Abshier Posts: 1,116
    edited 2012-07-14 14:17
    Before we build a board we may do some analysis. Here is hoping I haven't completely forgotten everything I learned in college in the late 1960's.

    MMA7455 3-Axis Accelerometer Module: Sensitivity is 64 LSB/g or 0.5 feet/second^2. I assume we could be off by this amount. Two mph (my walking speed) is approximately 3 ft/sec. Just considering the constant velocity portion of movement, across the room and back would take 6 seconds. s = 1/2 at^2. 0.5 * 0.5 feet/sec^2 * 6 sec * 6 sec = 9 ft. Perhaps the error should only be half the sensitivity. That still leaves us off by 4.5 feet. If this analysis is correct, I wouldn't build a board that relied on integrating accelerations to get position.

    John Abshier
  • prof_brainoprof_braino Posts: 4,313
    edited 2012-07-14 15:32
    Before we build a board we may do some analysis. Here is hoping I haven't completely forgotten everything I learned in college in the late 1960's.
    MMA7455 3-Axis Accelerometer Module: ... That still leaves us off by 4.5 feet. If this analysis is correct, I wouldn't build a board that relied on integrating accelerations to get position.

    Excellent start. Now we know that the MMA7455 alone is not sufficient for our needs, as was suspected. So the next question is, is there a better unit that fills the need? Alternatively, when the MMA7455 data is combined with the other sensor data (and run through the Kalman filter in the next phase) will that be sufficient?

    As I understand it the data from the accelerometer with data from the gyro (and others) are combined to get a running position by dead reckoning, and this is re-calibrate on the fly using GPS. Also, the drift is a more of a function of time rather than distance (have I got this right?), and with the proper algorithm, the drift can be small until the time is large (compared to the drift of the accelerometer alone as described by JA). Without an initial GPS point, the delta from start can be tracked (until GPS becomes available). This is the premise for the project. Clearly more analysis must be done, be we still might be in the ball park. Unless we can disprove feasibility, we can still have a go.

    So, I'm starting to make the big ol' list o' parts available from parallax, sparkfun, etc, to look for selection criterion. There's a bunch, this isn't going to be quick, even with cheating off the other threads. Recommendations for specific parts are still welcome.
  • Duane DegnDuane Degn Posts: 10,588
    edited 2012-07-14 15:47
    3) the goal of the HARDWARE portion of the project is to get a suitable set of sensors, and have them send their raw data to the prop for logging.

    I don't think you can decide what hardware to use without some understanding of the software you plan to use with it. How fast do you need updates from the sensor? What resolution do you need? How fast is the robot going to be moving and turning? There are often trade off between the various parameters and it would be hard to know what you'll need without knowing the algorithms the data will be used in.

    I'm not sure if putting all the sensors on one PCB is the best place to start. It might not be clear what kind of precision or speed will be required from a sensor until you actually try to use it. If you had your sensors on small breakout boards instead all mounted on a single PCB, it would be easier to replace one sensor with a different version as you try to figure out the best combination of sensors.
  • Duane DegnDuane Degn Posts: 10,588
    edited 2012-07-14 15:55
    So, I'm starting to make the big ol' list o' parts available from parallax, sparkfun, etc, to look for selection criterion. There's a bunch, this isn't going to be quick, even with cheating off the other threads. Recommendations for specific parts are still welcome.

    I know I have lots of these sensors myself. If you can think of some simple test I could perform with a sensor that would aid in your selection process, let me know and I'll try to perform the test.

    I'll look through my parts and try to make list of the applicable sensors if you'd like. Then you could let me know if there's some test you'd like me to try with them.

    As I think about this, I'm not so sure what tests I'd be able to perform that would give more information than the sensors datasheet, but sometimes it's useful to get some real world feedback from a sensor.

    I've been interested in this stuff for a long time but I haven't spent the time necessary to use these sensors for anything interesting.
  • SRLMSRLM Posts: 5,045
    edited 2012-07-14 16:45
    I don't think the waterfall method of designing here is really going to work, so I'm going to go ahead and mention some software before the hardware is done.

    I think the first goal of the unit should be to be able to reliably track the orientation of the sensor, no the position. Why? Because the calculation of position is, in part, based off of the calculation of orientation. And calculating orientation is hard.

    I'm interested in making a nice Propeller based IMU. To that end, I'll make my promise of possible contribution for sometime in the future: I'll code up the QUEST algorithm (orientation estimation) to start, and we can see how it performs. I already have most of the components (floating point compiler/interpreter namely, along with most of the math in my head). What I would need from others is the low level driver to interface to the sensors, a core of the Propeller (yes, I can do it 500Hz+ with just one core, and in FP), and the lists of appropriate hardware. Once the QUEST algorithm is in development (or maybe before too...), I might be able to help or start working on Kalman filtering. But that's much more difficult.

    In any case, my rough requirements would be sensors that are 500Hz plus, and as sensitive (ie, largest ADC) and wide ranging as possible.
  • SRLMSRLM Posts: 5,045
    edited 2012-07-14 16:47
    Oh: "autonomous", not "anonymous." I was just curious to see where on the web you were wanting to go so covertly. :) Never mind. I need new glasses.

    -Phil

    Use Tor to browse (more) anonymously :)
  • prof_brainoprof_braino Posts: 4,313
    edited 2012-07-14 18:10
    Maybe I'm going about this all wrong (which is good the figure out sooner than later, which is the whole point of the exercise :) ).

    My thought was to find the best currently available components (cost/performance, etc) for each group of functions. (I was hoping for comments like "i used X and is was great, I used Y and it was hard"). Next would be verify collecting raw data from each component. Then build a board, then write the code.

    We already have seen a successful unit done with existing equipment. I have in mind the guy that started the quad copter at hover, sent it off accelerating up and away out of sight, and turned off the radio. When the radio was switched off, the copter returned to the (exact?) start point hover. The assumption is that if it can be done with parts already available, it can be done with NEW parts currently available. This might not be a valid assumption.

    Exactly how I want to use it is already fully described, as in the cave paragraph in post #1, and post #13 (5). This is not intended to be waterfall or any design methodology in particular. This is the high level requirements as we understand them at this moment, and refine them as we gain new information.

    I might be already mistaken, I thought orientation was the easy part. 'Scuze me whilst I go reads up a bit more.....
  • frank freedmanfrank freedman Posts: 1,983
    edited 2012-07-14 18:11
    Hi All

    In a helicopter thread, Bits has offered to build boards.

    http://forums.parallax.com/showthread.php?141004-Program-My-New-Helicopter-to-Fly&p=1108107&viewfull=1#post1108107

    So I'm look for what to ask her to build.

    I've been interested in autonomous navigation for a a while now, maybe its time to get started?

    Although the original thread specified helicopters, I think a good approach might be to start with a sensor module that could be put in a handheld unit and later moved to a ground robot, and only later put in an aerial vehicle when it s shown to do its job, as to not risk destruction of itself or bystanders.

    The high level goal is to continuously track the unit's position and orientation in space. I'm thinking Inertial Navigation + GPS. If the unit were placed say on the corner of a table, lifted and tossed around the room, the unit would detect and log positional changes, and detect when the unit is returns to the starting position, or any other specified position. Also, in cases where GPS line of sight is available, the unit would be able to apply its relative positions to the GPS data, for INS correction or mapping to world coordinates.

    Any example intended use would be:

    Enter a cave or structure at a point where GPS location can be determined. Travel through the interior logging data. Emerge from the cave or structure at different exit(s). Use the data to create a map of the structure in real world coordinates. (Actual map model can be created on an external workstation, at this point we just want to log the data).

    Another use would be to fly your quad copter through the house and map all the walls, rooms, furniture people, cats and dogs; then case the cats. This might require a bit more work, but we can still keep it as an eventual goal.

    I think parts to supply the basic necessary data include:

    - 3-Axis Gyroscope
    - 3-Axis Accelerometer
    - 3-Axis magnetometer
    - Barometric Pressure Sensor
    - GPS

    I also intend to provide capability to add other sensors down the road, this will not be an issue. Things like range finders, audio, temperature, humidity, etc, can be included after the basic navigation is established.

    As a given, we can have as many inputs as we want, and log as much data as we want. Data logging speed is limited by SD card technology, I would guess Class 6 should be a rule of thumb for starters.

    So, anybody have input for parts for sensors for autonomous robot?

    I'm looking for recommendations on specific parts you have used or would like to use, and any pros or cons used for making a given selection.

    Considerations are:

    - Ease of interfacing to prop
    - Cost
    - size
    - power requirements

    Of course, the target is all the functions at high speed, in a small size, with low power consumption, for low cost. And we can make any adjustments we need. This process will consider the trade offs for each option.

    I am open to any existing units, if such a unit exists (I haven't seen such a sensor yet, beyond those only available to the military). These could be a full solution; or a parrtial solution to which we add the missing parts. In liue of existing solutions, I want to come up with a list of parts the can be built into a board and interfaced to a micro controller.

    Your input, comments, suggestions?

    One suggestion would be to become far better friends with Mr. Volder et.al. than I currently am. It has been a slog fest of trig review and much more and I am still working on understanding the algorithm in the limited an d fractured time I have available. That may make a very big difference in just how autonomous you may be able to achieve.

    Google Jack Volder, cordic II etc.


    Frank

    P.s.

    If you really want to get a handle on the scope of the work involved, google for an autonomous vehicle challenge that was finally won not to long ago. May get a few ideas as well.
    DARPA grand challenge. Source code from one of the entries is also linked from the wikipedia pages.
  • SRLMSRLM Posts: 5,045
    edited 2012-07-15 19:44
    We already have seen a successful unit done with existing equipment. I have in mind the guy that started the quad copter at hover, sent it off accelerating up and away out of sight, and turned off the radio. When the radio was switched off, the copter returned to the (exact?) start point hover. The assumption is that if it can be done with parts already available, it can be done with NEW parts currently available. This might not be a valid assumption.

    Do you have a source for this?
  • prof_brainoprof_braino Posts: 4,313
    edited 2012-07-18 19:02
    No, I can't find the link, and I have no proof that it was real, and now that I think about it could have been easily faked.

    Even so, that is what I plan to do. :) Maybe don't hold your breath just yet waiting on my results. Its a long way from high level requirements to working prototype.
  • ercoerco Posts: 20,259
    edited 2012-07-18 19:16
    I thought you were talking Hexacopter... http://www.youtube.com/watch?v=fyYujjP5J-k
  • prof_brainoprof_braino Posts: 4,313
    edited 2012-07-18 19:29
    Yes! That might be the one.
  • prof_brainoprof_braino Posts: 4,313
    edited 2012-07-23 09:16
    Here's a "low power high precision" 9 axis unit

    http://www.invensense.com/mems/gyro/mpu9150.html

    combines MPU-6050 (3 axis accelerometer + 3 axis gyro scope) and AK8975 (3 axis compass)

    Anybody use either of these?
  • Kevin BrownKevin Brown Posts: 44
    edited 2012-09-14 13:49
    This has just got a lot easier. I have several autopilots,DIY Drones's apm2's and Paparazzi
    l
    look at the chips they they are using I would love to have an propeller version........ 3D Robotics is at 7 million in sales this year up from 5 million just a couple of months ago
  • Chris SavageChris Savage Parallax Engineering Posts: 14,406
    edited 2012-09-14 14:18
    I have done autonomous navigation with ground-based robots such as the Stingray. If I ever get my hands on an ELEV-8 my first goal will be to make it navigate way-points like a ground-based robot, however with the addition of a z-axis.
  • Duane DegnDuane Degn Posts: 10,588
    edited 2012-09-14 15:01
    I just received one of these:

    27033(1).jpg


    From HobbyKing. It has all sorts of sensors built into it.

    It includes:
    ITG3205 Triple Axis Gyro
    BMA180 Accelerometer
    BMP085 Barometer
    HMC5883L Magnetometer

    I can't figure out how they can sell these for less the $28.

    I'm planning on trying it out with my ELEV-8 (since the shipment also included the parts needed to repair the ELEV-8 after it's last "hard landing").
    565 x 414 - 214K
Sign In or Register to comment.