|
AVM improvements UlliS from Germany [42 posts] |
12 year
|
Hello, I had the following ideas to improve the AVM Navigator:
-> NV_TURRET_RIGHT NV_TURRET_LEFT and are in "Marker Mode" does not return a value (1 or 0). When robots with fixed camera (without pan servos) can thus no automatic localization can be performed.
I used to following VB code:
nvTurretLeft = GetVariable("NV_TURRET_LEFT")
nvTurretRight = GetVariable("NV_TURRET_RIGHT")
If nvTurretLeft=0 And nvTurretRight=1 Then
motor_left=150
motor_right=100
ElseIf nvTurretLeft=1 And nvTurretRight=0 Then
motor_left=100
motor_right=150
End If
the "Navigation by map" it works!
-> The control over NV_FORWARD, NV_BACKWARD etc. and the settings Body-Turn inertia looks for some robots too fidgety (nervous). Here it would be good if the integration speed (eg, 128 to 255/128 to 0) variable could be set. Better here would be a PID or at least one PI control, the jerk to the robot adjusts slowly without.
Here's a pseudo-code from one experiment of mine with finducials:
If RR_CogX > 160 Then err_curr_move = RR_CogX - 160
If RR_CogX < 160 Then err_curr_move = RR_CogX + -160
MoveP = MoveKp * err_curr_move
MoveI = MoveI + (err_curr_move * MoveKi)
If MoveI > 800 Then MoveI = 800
If MoveI < -800 Then MoveI = -800
MoveD = (err_curr_move - err_pre_move) * MoveKd
MovePID = MoveP + MoveI + MoveD
err_pre_move = err_curr_move
pan = pan + xOffset + MovePID
yOffset = 200
tilt = yOffset
' Servos position
If pan > 400 Then pan = 400
If pan < -400 Then pan = -400
If tilt > 600 Then tilt = 600
If tilt < -600 Then tilt = -600
PanPos = (((Behaviors.HeadPanCenter * 10) + pan) / 10)
TiltPos = (((Behaviors.HeadTiltCenter * 10) + tilt) / 10)
-> it would be advantageous if the file would get ordener for AVM File. If a file in its own stores AVM.dat RoboRealm project, should also be used when starting again. As standart, the \ user folder are used.
-> Currently you can only record one track clean without the problems there, it should give the possibility to load different maps. Also set a mark as a waypoint on the map would be a solution. This could also go ahead and continue using the voice command the robot to a target can bestimtes cards. It would be ideal for larger maps, if the map automatically zooms in or out.
okay that would be present all times :-)
Important but would be a smoother control of the robot, the current system is, unfortunately, horrible ... * laugh * The search for gate Ways would be better if the robot simply turns slowly on the spot and sometimes a bit carried away here, so he finds a possibly overlooked gate.
-Ulli
|
|
|
EDV [328 posts] |
12 year
|
Thank you for advices I will think over about it.
Can you please tell more details about your robot’s construction and experiments with AVM Navigator (some description, photos, video etc)?
By the way I have two pretty videos regarding visual navigation.
It is enough difficult route that was passed by robot
with help AVM Navigator (route training and passing):
http://www.youtube.com/watch?v=1-w3lSLTnjM
Autonomous navigation view from outside:
http://www.youtube.com/watch?v=GD_g0q_I6NQ
|
|
|
EDV [328 posts] |
12 year
|
|
|
UlliS from Germany [42 posts] |
12 year
|
Hello EDV,
the two video I already know, are very good! In a 4WD Rover with soft and thick tires, the control always a bit slow and does not look at small steering controls so nervous. When a robot with pure differential drive and the wheel is much more sensitive. I currently use a converted Tomy Omnibot. It is not driven by means of four wheels as original and one wheel at the front, but only about two driven rear wheels and one front wheel. I can do tonight for a few pictures and a video. I currently have the new version of it, with 3D object and target markers :-)
- Ulli
|
|
|
EDV [328 posts] |
12 year
|
As one proverb tells:
It is better to see one time than to hear 100 times.
So I will be looking forward for photos and videos ;-)
|
|
|
UlliS from Germany [42 posts] |
12 year
|
Hello EDV,
here are the videos ... Once with and once with AVM Finducial track and my small software control. The images still show the robot and the operator. The motors I have set the AVM very small, faster is not so good.
AVM:
http://www.youtube.com/watch?v=iAE7NXQgwC0&feature=plcp
http://www.youtube.com/watch?v=4s9bQi8Y828&feature=plcp
Finducial:
http://www.youtube.com/watch?v=Px8UtE1_eXw&feature=plcp
http://www.youtube.com/watch?v=TR345s7DuBw&feature=plcp
Code Finducial:
' Finducial search
buttonTrack = GetVariable("BUTTON_TRACK")
imageWidth = GetVariable("IMAGE_WIDTH")
imageHeight = GetVariable("IMAGE_HEIGHT")
fiducialXCoord = GetVariable("FIDUCIAL_X_COORD")
fiducialYCoord = GetVariable("FIDUCIAL_Y_COORD")
fiducialSize = GetVariable("FIDUCIAL_SIZE")
fiducialConfidence = GetVariable("FIDUCIAL_CONFIDENCE")
err_curr_x_fiducial = 0
If buttonTrack <> 1 Then
FiducialSizeForStop = 40
err_curr_x_fiducial = 0
Else
If fiducialConfidence > 0 Then
If fiducialXCoord > 160 Then err_curr_x_fiducial = ((fiducialXCoord - 160) / 4)
If fiducialXCoord < 160 Then err_curr_x_fiducial = ABS((fiducialXCoord + -160) / 4)
SetVariable "RR_err_curr_x", err_curr_x_fiducial
' Objekt ist rechts
If fiducialXCoord >= 160 And fiducialXCoord < 220 And FiducialSizeForStop < 40 Then
SpeedLeft = 140 + err_curr_x_fiducial
SpeedRight = 140
' Objekt ist links
ElseIf fiducialXCoord < 160 And fiducialXCoord > 100 And FiducialSizeForStop < 40 Then
SpeedLeft = 140
SpeedRight = 140 + err_curr_x_fiducial
' Objekt ist ganz rechts
ElseIf fiducialXCoord >= 220 And fiducialSize < 40 Then
SpeedLeft = 150
SpeedRight = 128
' Objekt ist ganz links
ElseIf fiducialXCoord <= 100 And fiducialSize < FiducialSizeForStop Then
SpeedLeft = 128
SpeedRight = 150
' Rückwärts
ElseIf fiducialSize > (FiducialSizeForStop + 20) Then
SpeedLeft = 100
SpeedRight = 100
' Stopp
ElseIf fiducialSize >= (FiducialSizeForStop) And fiducialSize > 0 Then
SpeedLeft = 128
SpeedRight = 128
' vorwärts
ElseIf fiducialSize < FiducialSizeForStop Then
SpeedLeft = 180
SpeedRight = 180
End If
SetVariable "SpeedLeft", SpeedLeft
SetVariable "SpeedRight", SpeedRight
motor_left = SpeedLeft
motor_right = SpeedRight
End If
End If
- Ulli
|
|
|
UlliS from Germany [42 posts] |
12 year
|
Picture...
|
|
|
EDV [328 posts] |
12 year
|
Thank you for update and it really looks great!
It would be nice if you also could share your robot's control program as robo files ;-)
|
|
|
UlliS from Germany [42 posts] |
12 year
|
Here is the robo file...
- Ulli
|
|
|
UlliS from Germany [42 posts] |
12 year
|
|
|
UlliS from Germany [42 posts] |
12 year
|
Hello EDV,
my old finducial code was to quick and dirty... sorry (horrible)
Her is a final file, that´s work very good... very simple an i think, without bugs ;-)
But the AVM Navigator dosn´t work finde :-(
My idea would be: if the ramp time or a gain factor in AVM Navigator would be adjusted, makes driving look better.
Reards,
Ulli
|
|
|
UlliS from Germany [42 posts] |
12 year
|
The last post I sent a *. Robo file, but that was not attached ... okay again ... program.robo
|
|