View unanswered posts | View active topics It is currently Wed Apr 23, 2014 10:55 am






Reply to topic  [ 14 posts ] 
Robot navigation - trying not to reinvent the wheel 
Author Message
Rookie

Joined: Tue Jan 17, 2012 5:39 pm
Posts: 4
Post Robot navigation - trying not to reinvent the wheel
I have no robotics training and this is my first non-trivial RobotC project but am trying to create a robot with complex movement behaviors such as: 'explore this classroom without bumping into any chairs', 'go from where you are now to 3m forward without hitting the sofa in your way', 'point yourself directly at the nearest wall', and 'move along this wall, staying 30cm distant from it'.

I know and am comfortable programming:

Code:
PIDs
File I/O
A*
Steering behaviors ( http://www.red3d.com/cwr/steer/gdc99/ )
other things, that I am forgetting


I do not know and am not (but would like to be) comfortable with:

Code:
Kalman filters
practical robot motion planning
other things, that I am forgetting


I am using a LEGO MINDSTORMS NXT. I have an ultrasonic sensor (rangefinder) affixed to the top of the robot that can sweep left/right. I am using a differential drive. My motors are at a 40:12 gear ratio and I am using the large, 'motorcycle' wheels (maybe 3" diameter?). At max power, the robot moves at 'speed-walking' velocities. (the built in RobotC motor synching / PID controller fails to control the robot: my proportional controller seems to manage well, but rigorous tests are yet forthcoming)

I first wrote up a big, long post on what I was planning to do, but I got the feeling I was reinventing the wheel. Would some kind people please point me in the right direction?


Tue Jan 17, 2012 7:17 pm
Profile
Rookie

Joined: Tue Jan 17, 2012 5:39 pm
Posts: 4
Post Re: Robot navigation - trying not to reinvent the wheel
Eh, I figured I might as well post some of the ideas I had.

Currently I have code that allows me to pivot on a wheel, spin on a dime, go straight, and follow any circular arc. I can also follow a line and square off perpendicularly to the line. I few good, customized data logging functions (using file write, not the built-in data log: should I rewrite this to do things the built-in way?). I can give it a list of commands in a file using a formal grammar and have the robot execute those commands.

I can also sweep the rangefinder around to detect (with a little easy math), in X-Y space relative to the robot, the location of obstacles.

For localization I was thinking I could try: start the robot with position (0,0) and direction 0. Each time you enter the control loop, if your rotation sensor's change from prior values is equal, update the position by the relevant amount. If they are unequal, update the position and direction assuming that the robot carried out a circular arc. I know that this accumulates errors rapidly and I know that Kalman filtering helps, but the wikipedia page on it is not targeted for beginners. When not trying to get to a specific location, this could be reset periodically. (along with dropping remembered obstacles?)

When detecting obstacles, treat each obstacle detected each sensor sweep as a circle with radius > robot's footprint (so the robot may be treated as a point for easier pathfinding). During a sensor sweep, ignore all obstacles beyond threshold, or ones sufficiently close to another obstacle. When the number of obstacles becomes to great, drop the obstacle furthest from the robot.

Assuming I have a set of N circles acting as obstacles, a point-like robot, and a target region, I do not know how best to get the robot from its current location to the target region (because the real world is not an A*-ready graph, and trying to make it one seems inefficient).

When aligning to a wall, stop the robot, do a sensor sweep. [BEGIN LOOP] If there are enough points, run an outlier insensitive linear regression. If there are enough points within a certain distance of this line, this line is wall N. Drop all points sufficiently close to wall N. [END LOOP] Determine which wall is closest, then turn in place to face towards it.

---

EDIT:

I read more on the Kalman filter. While I do not feel like I am ready to tackle it just yet, I do feel I understand the mathematical principles at play and its limitations. I think I might focus on expanding my mathematical and theoretical grounding before continuing. Also, purchasing additional sensors (IMU, gyro, compass, etc), while expensive, might be beneficial. Any one know of any good resources I can utilize for this line of pursuit? Perhaps starting with a matrix math library? :)


Tue Jan 17, 2012 7:51 pm
Profile
Expert

Joined: Tue Feb 28, 2012 3:10 pm
Posts: 195
Post Re: Robot navigation - trying not to reinvent the wheel
Ever get anywhere with this? I am also trying to make that step in learning, although I seem to be taking my time.

I'm not currently knowledgeable about all those topics, but I have looked into them and I do not see anything that scares me away.

Anyhow, http://www.spiked3.com/?p=162 describes my current project

I'd be interested in trading learning experiences with you. I've gotten wall recognition working (RANSAC), next I need to turn it into landmark recognition. then kalman filter (as you mentioned, but used differently), then some sort of path planning.

feel free to email me. spiked3 at gmail com.

_________________
Mike aka Spiked3
http://www.spiked3.com


Fri Apr 13, 2012 1:25 pm
Profile
Rookie

Joined: Tue Sep 28, 2010 7:29 am
Posts: 22
Post Re: Robot navigation - trying not to reinvent the wheel
I use "AVM Navigator" for autonomous robot navigation and this module needs only in motorized video camera and works pretty well ;)



Tue May 08, 2012 6:13 am
Profile
Expert

Joined: Tue Feb 28, 2012 3:10 pm
Posts: 195
Post Re: Robot navigation - trying not to reinvent the wheel
EDV wrote:
I use "[url=http://xxx[/url]" for autonomous robot navigation and this module needs only in motorized video camera and works pretty well ;)



SPAM

_________________
Mike aka Spiked3
http://www.spiked3.com


Tue May 08, 2012 8:54 am
Profile
Site Admin
Site Admin

Joined: Wed Jan 24, 2007 10:44 am
Posts: 438
Location: Pittsburgh, PA
Post Re: Robot navigation - trying not to reinvent the wheel
I honestly can't tell if it's spam or not. If you look back he has some "legitimate"-looking posts.

_________________
Vu Nguyen
Software Training Development Team | Webmaster
Need more support? Use the ROBOTC Ticketing system

Robotc.net| Robomatter Store | Robotics Academy | CS2N


Tue May 08, 2012 10:18 am
Profile
Senior Roboticist
User avatar

Joined: Wed Sep 28, 2011 10:13 pm
Posts: 630
Location: If I told you, I'd have to kill you.
Post Re: Robot navigation - trying not to reinvent the wheel
If all that stuff is spam, then EDV's the subtlest spammer I've ever seen :bow: . Also, it means he's been faking you guys out for years!!! :eek:

_________________
A.K.A. inxt-generation
Self-proclaimed genius, and future world dominator.
My Brickshelf Folder
"Don't they teach recreational mathematics anymore?" - The Tenth Doctor
Bow down to Nikola Tesla, King of the Geek Gods.


Tue May 08, 2012 10:29 am
Profile WWW
Rookie

Joined: Tue Sep 28, 2010 7:29 am
Posts: 22
Post Re: Robot navigation - trying not to reinvent the wheel
NeXT-Generation wrote:
If all that stuff is spam, then EDV's the subtlest spammer I've ever seen :bow: . Also, it means he's been faking you guys out for years!!! :eek:

I am working over developing of AVM algorithm more than 7 years.

I created the topic "Autonomous robot's navigation" since August 2009 on trossenrobotics.com.

AVM Navigator is my work!

Where is spam?

Do you have more advanced robot navigation solution that is based on the visual landmarks?

Can you show me such solution?

Why are you thinking that is spam?
:twisted:


Tue May 08, 2012 11:26 am
Profile
Senior Roboticist
User avatar

Joined: Wed Sep 28, 2011 10:13 pm
Posts: 630
Location: If I told you, I'd have to kill you.
Post Re: Robot navigation - trying not to reinvent the wheel
We're not saying the program is fake, but your latest message seemed kinda spamm-y. You didn't post much info, didn't mention your own work, it linked to a site where you get a paid for program, but it related to the threads content, so nobody was sure.

Some of the spam we've been seeing here lately was similar to your latest message, so naturally suspicions arise.

I'm sorry if I have offended you.

_________________
A.K.A. inxt-generation
Self-proclaimed genius, and future world dominator.
My Brickshelf Folder
"Don't they teach recreational mathematics anymore?" - The Tenth Doctor
Bow down to Nikola Tesla, King of the Geek Gods.


Tue May 08, 2012 12:26 pm
Profile WWW
Expert

Joined: Tue Feb 28, 2012 3:10 pm
Posts: 195
Post Re: Robot navigation - trying not to reinvent the wheel
It's SPAM. No where was anyone looking for a commercial product, that has nothing to do with RobotC. He just wants the link he posted to up his link count in google. He went from here to my web site, where after saying I was doing SLAM on a LEGO he suggesting his product that requires a video camera. And again he spams his link more in his replies. If it has anything to do with robotC, then fine. Does he tell you what his algorithm is? I'm not saying he doesn't have something, I'm not saying it is not useful to tell people about it in some context. But posting it here like that, on a 4 month old thread had 1 and only 1 purpose.

_________________
Mike aka Spiked3
http://www.spiked3.com


Tue May 08, 2012 12:28 pm
Profile
Rookie

Joined: Tue Sep 28, 2010 7:29 am
Posts: 22
Post Re: Robot navigation - trying not to reinvent the wheel
If you (or anybody else) don't want to use the commercial version of AVM Navigator (price $9) then you can use NON commercial version of Library AVM SDK simple.NET.

And many people use it (see this topic).

So what is problem?

It seems that is just envy :-(


Tue May 08, 2012 1:00 pm
Profile
Rookie

Joined: Tue Sep 28, 2010 7:29 am
Posts: 22
Post Re: Robot navigation - trying not to reinvent the wheel
Spiked3 leave a comment at RoboRealm forum:

Mike Partain wrote:
Do not SPAM my web site again.

Steven Gentner wrote:
We didn't. Most likely it is someone else pretending to be us for whatever reason. If you'd like you can contact us using our site contact form and we will help track down the person and communicate this desire.

Thanks,
STeven.

But if you looked into AVM Navigator documentation then you would know that AVM Navigator module is a third party module and RoboRealm Team do not have any relations to the comment in which I advised you could try to use AVM Navigator in your navigation task on your web site in this topic.

I am developer of this module and if you have some questions or pretensions then you can ask me for clearing up of this situation.

And can you manage without affront like a “Look losers” in your posts?

As I mentioned if you have a more advanced robot navigation solution that is based on the visual landmarks then just show me it.

Spiked3 wrote:
Your product has nothing to do with what either of us were talking about, AND you do not educate us as to your wonderful algorithm, instead its buried in a compiled DLL file, that costs more than RobotC to obtain.

>> Your product has nothing to do with what either of us were talking about

AVM Navigator provide an autonomous robot navigation and this purpose is correspond to topic name where we are talking about.

>> AND you do not educate us as to your wonderful algorithm
Just look in to documentation:

*How it works?

In our case the visual navigation for robot is just sequence of images with associated coordinates that was memorized inside AVM tree. The navigation map is presented at all as the set of data (such as X, Y coordinates and azimuth) that has associated with images inside AVM tree. We can imagine navigation map as array of pairs: [image -> X,Y and azimuth] because tree data structure needed only for fast image searching. The AVM algorithm can recognize image that was scaled and this image's scaling also is taking into consideration when actual location coordinates is calculating.

Let's call pair: [image -> X,Y and azimuth] as location association.

So, each of location association is indicated at navigation map of AVM Navigator dialog window as the yellow strip with a small red point in the middle. You also can see location association marks in camera view as thin red rectangles in the center of screen.

And so, when you point to target position in "Navigation by map" mode then navigator just builds route from current position to target point as chain of waypoints. Further the navigator chooses nearest waypoints and then starts moving to direction where point is placed. If the current robot direction does not correspond to direction to the actual waypoint then navigator tries to turn robot body to correct direction. When actual waypoint is achieved then navigator take direction to other nearest waypoint and so further until the target position will be achieved.

>> instead its buried in a compiled DLL file, that costs more than RobotC to obtain
1. You can use NON commercial Library AVM SDK simple.NET for purpose of object recognition and robot navigation for free.

2. You can get FREE 30 day trial of RoboRealm package with AVM Navigator and try it in your task.

Spiked3 wrote:
So unless you can show me the algorithm of Roborealm AVM Navigator, that works on a LEGO Nxt with a Range finder, shut the F up.

There is control module “Lego NXT” within RoboRealm package.

So you can connect your robot to AVM Navigator with helping of variables that described below:

Use variable NV_TURRET_BALANCE for camera turning:

NV_TURRET_BALANCE - indicates the turn degree amount.
This value range from -100 to 100 with forward being zero.

Use for motor control NV_L_MOTOR and NV_R_MOTOR variables that have range
from -100 to 100 for motion control ("-100 " - full power backwards,
"100" - full power forwards, "0" - motor off).

You also can used alternative control variables
(motors range from 0 to 255 with 128 being neutral):

NV_L_MOTOR_128, NV_R_MOTOR_128 - motors control
NV_TURRET_128 - control of camera turning
NV_TURRET_INV_128 - inversed control of camera turning


So where is problem in my actions when I advised that you could try to use AVM Navigator in your navigation task on your web site?


Wed May 09, 2012 2:15 am
Profile
Moderator
Moderator
User avatar

Joined: Wed Mar 05, 2008 8:14 am
Posts: 3112
Location: Rotterdam, The Netherlands
Post Re: Robot navigation - trying not to reinvent the wheel
Spiked3, sounds a bit to me like you overreacted a little to his suggestion of using this piece of software. In any case, take it off the forums to where ever, just not here.

EDV has been a user on these forums for quite some time, quite a bit longer than you, in fact.

As for commercial software, I think you'll find ROBOTC to be quite non-free as well.

Regards,
Xander

_________________
| Professional Conduit of Reasonableness
| (Title bestowed upon on the 8th day of November, 2013)
| My Blog: I'd Rather Be Building Robots
| ROBOTC 3rd Party Driver Suite: [Project Page]


Wed May 09, 2012 2:27 am
Profile WWW
Expert

Joined: Tue Feb 28, 2012 3:10 pm
Posts: 195
Post Re: Robot navigation - trying not to reinvent the wheel
mightor wrote:
Spiked3, sounds a bit to me like you overreacted a little to his suggestion of using this piece of software. In any case, take it off the forums to where ever, just not here.

EDV has been a user on these forums for quite some time, quite a bit longer than you, in fact.

As for commercial software, I think you'll find ROBOTC to be quite non-free as well.

Regards,
Xander


I did take it elsewhere. Someone else has decided to continue it here.

_________________
Mike aka Spiked3
http://www.spiked3.com


Wed May 09, 2012 2:43 am
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 14 posts ] 

Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  



Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.