Putting robotics at your service™

Free shipping on orders over $200

X-Rover Color Seeking Autonomous Rover Announced!

Print view Share :
Previous topicNext topic

Page 1 of 6 [ 78 posts ]

1, 2, 3, 4, 5, 6
User avatar
Veteran ( offline )
Posts: 111
Posted: 2009-10-21 22:20 
All-
I am pleased to announce that I have completed the initial development of my new autonomous rover called X-Rover. Currently it is using an older Lynxmotion yellow 4WD chassis, Atom Pro 28, BB2, Standard Pan/Tilt, and a CMUcam2+, and 7.2V NiMH RC-car type battery pack.

Here is a link to my youtube video (there are some earlier tests on my youtube page):



Here is where you can buy a CMUcam2+ that I used: http://www.acroname.com/robotics/parts/ ... -PLUS.html

I apologise that this is an older video. I have since got my code working much better and added several new features as well as much better tracking ability. The most important new feature is that X-Rover now scans his head and body when the target object is lost. He can be programmed to track almost any highly saturated color, however pure Red, Green, or Blue colors tend to be the easiest to track. XRover now reliably tracks 3" colored targets at over 6 feet with a slight reduction in tracking reliability under dim lighting.

Lynxmotion and I will be working on a complete tutorial, code, and instructions for you to build your own X-Rover and expand it's capabilities. X-Rover behaves in many ways like a robot dog that you can play ball with. I have invented many fun fetch typed games to play.

Stay tuned here for more information, photos and videos.

Mark


Attachment:
XRover1 - Copy.JPG
XRover1 - Copy.JPG [ 241.68 KiB | Viewed 2749 times ]


Last edited by fedasiuk on 2009-10-24 16:01, edited 1 time in total.
Veteran ( offline )
Posts: 185
Posted: 2009-10-24 07:02 
Very impressive. looking forward to your tutorial. I'm building a tritrack and would love to see how you added the color tracking

_________________
Regards
Apostolos


The road is long but we are getting there


Last edited by tolisn on 2009-10-24 09:02, edited 1 time in total.

User avatar
Guru ( offline )
Posts: 3299
Posted: 2009-10-24 08:55 
very cool project. great video. well done. 8)

_________________
Jonny Poole,
Freelance Concept Art & Animatronics, 3D Art and 3D Modelling, as well as Physical Modelling, Mechanical design, and illustration.
http://www.innerbreed.co.uk
Create, Innovate, Inspire.


User avatar
Veteran ( offline )
Posts: 111
Posted: 2009-10-24 12:58 
I am working on the instructions for the tutorial now! I will also have the new aluminum chassis version built this weekend. Hope to post new pics and video soon. One thing I have not done yet is find a better way to mount the camera. Right now it is just double-stick taped to a multi-purpose sensor bracket.
Mark


User avatar
Veteran ( offline )
Posts: 111
Posted: 2009-10-25 17:26 
All-

I have completed the build of X-Rover on the new chassis. Other changes are that I am now running 12V 30:1 drive motors instead of 7.2V 50:1 motors. The performance of the robot has been greatly increased with significantly more torque at the low end. I am currently re-working the code and plan to post new pics, video and the code today.

stay tuned....

Mark


User avatar
Veteran ( offline )
Posts: 111
Posted: 2009-10-25 18:15 
 Post subject: Current X-Rover Code
All-

Here is the latest version of the code I'm running for X-Rover. This code still has some hard coded values for the pan and tilt servos. I am in the process of re-writing it with constants that will make it easier to tune for your servo offsets.

Enjoy....

Note: Code posted in next post..


Last edited by fedasiuk on 2009-10-25 18:17, edited 1 time in total.

User avatar
Veteran ( offline )
Posts: 111
Posted: 2009-10-25 18:16 
Code:
' X-Rover Autonomous Color Tracking Robot
' Mark Fedasiuk 10/25/09


enablehservo

pinp con p0
pint con p1

speaker   con   p9
leftd   con   p12
rightd   con   p13
atx con p11
arx con p10
baudpc con i9600
baudatom con i9600
bauddisp con i9600

tiltc   con   -3000 'Tilt Servo Offset
tiltd   con   400 ' Tilt Servo Dead Zone
panc   con   0 ' Pan Servo Offset
pand   con   100 ' Pan Servo Deadzone
trackcon   con   2 ' Number of misses allowed while tracking

' Define Variables
x       var byte(10) ' X Centroid Value from CMUcam2
y      var byte(10) ' Y Centroid Value from CMUcam2
packet    var byte      ' Grab a single packet of data from camera
counter   var   byte
pan      var sword
tilt   var   sword
stepp   var   word ' Pan Servo Step Size
stept   var   word ' Tilt Servo Step Size
stepsp    var   word ' Pan Servo Step Speed
stepst   var   word ' Tilt Servo Step Speed
posp   var   word ' Pan Position
post   var   word ' Tilt Position
rtpwr   var   word ' Right Drive Motor Power ' does this need to be signed? wasn't before
lfpwr   var   word ' Left DRive Motor Power  ' does this need to be signed? wasn't before
dirp   var   sword ' Pan Dirction
dirt    var   sword ' Tilt Direction
val      var   byte  ' Variable for sound routines
tracking var nib ' Number of times to allow non tracked object (filter)


'===================================
'        MAIN
'===================================

main

' Initialize Variables
x      = 0
y      = 0
packet   = 0
pan      = panc
tilt   = tiltc
stepp    = 0
stept    = 0
dirp   = 1
dirt   = 1
tracking = trackcon
counter = 0

hservo [pinp\pan]
hservo [pint\tilt]
hservo [leftd\0,rightd\0]

'Play Boot sound
for val = 2 to 5
sound speaker, [val*30\val*1000]
next
   
pause 1000 'wait for camera to boot


'''''''''''''''''''
'Camera Commands
'''''''''''''''''''

' set delay mode to get comms working
serout atx,baudatom,["DM 4",13] ' delay mode serial comms..DM value is about baud/2500 4,8,16 for 9600,19200, and 38400 baud
gosub ackno
serout atx,baudatom,["OM 0 3",13] ' output masinking for better tracking speed
gosub ackno
serout atx,baudatom,["NF 2",13] ' noise filtering default 2, 2-4 good range
gosub ackno
'serout atx,baudatom,["CR 19 32",13] ' used to turn off auto gain on cam
'gosub ackno

' Play Sounds to let you know that the atom pro is properly talking to the CMUcam2
for val = 5 to 28
sound speaker, [val*5\val*(random tca)]
next


'track the color red with track color command note not using command subroutine
serout atx,baudatom,["tc ",dec 100," ",dec 240," ",dec 0," ",dec 40," ",dec 0," ",dec 40,13]
gosub ackno


loop

gosub Tpacket


if pan > 10000 OR pan < -10000 then
dirp = dirp * -1
endif

if tilt > -1000 OR tilt < -7000 then
dirt = dirt * -1
endif
 
if x(counter) = 0 AND y(counter) = 0 AND tracking > 0 then
tracking = tracking -1
goto loop
elseif x(counter) = 0 AND y(counter) = 0

tracking = 0

   if tilt > -1000 then
   tilt = -1000
   elseif tilt < -7000
   tilt = -7000
   endif
   
pan = pan + dirp * 400
tilt = tilt + dirt * 150

hservo [pinp\pan,pint\tilt,leftd\-4000,rightd\4000] ' scan head and body and wag tail when lost track

goto loop
endif

tracking = trackcon ' Reset Tracking Filter

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'         AUTONOMOUS MODE TRACKING
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
stepp = abs(x(counter)-45)*25
stept = abs(y(counter)-100)*15  ' <<<<<<<============== Hight Adjustment 72 center

'get hservo pan position

   if x(counter) < 44 then
   pan = (pan - stepp) min -10000
   elseif x(counter) > 46
   pan = (pan + stepp) max 10000
   else
   stepp = 0
   endif

posp = abs(pan - panc) max 10000

if pan > (panc ) then ' took out (panc + pand)
rtpwr = -posp
lfpwr = posp
elseif pan < (panc ) ' took out (panc - pand)
rtpwr = posp
lfpwr = -posp
else
rtpwr = 0
lfpwr = 0
endif


   if y(counter) < 95 then ' <<<<<<<============== Hight Adjustment
   tilt = (tilt + stept) min -7000
   elseif y(counter) > 105 ' <<<<<<<============== Hight Adjustment
   tilt = (tilt - stept) max 8000
   else
   stept = 0
   endif

post = abs(tilt - tiltc)*4 max 10000
   
if tilt > (tiltc + tiltd) then
rtpwr = (rtpwr + post) max 10000
lfpwr = (lfpwr + post) max 10000
elseif tilt < (tiltc - tiltd)
rtpwr = (rtpwr - post) min -10000
lfpwr = (lfpwr - post) min -10000
else
rtpwr = 0
lfpwr = 0
endif

hservo [pinp\pan,pint\tilt,rightd\rtpwr,leftd\lfpwr] ' Drive the Servos while tracking object
   
goto loop

end

'''''''''''''==================================
''''''''''''''======   SUBROUTINES   ==========
''''''''''''''=================================

' wait for ACK back
ackno
serin arx, baudatom, [wait("ACK")]
serin arx, baudatom, [packet] 'grabs the return after the ACK that confused me! this was the big fix
return

'retrieves a T type packet
Tpacket
serin  arx, baudatom, [packet,dec x(counter),dec y(counter)]
'serout s_out,baudpc,[13,"T ",dec3 x(counter)\3," ",dec3 y(counter)\3,13]
return


User avatar
Veteran ( offline )
Posts: 111
Posted: 2009-10-26 16:34 
 Post subject: New Code For X-Rover
All-

Here is the new code for X-Rover. It is nearly complete and only needs a few tweaks now. I'm waiting on the proper batteries and will do a final tuning rev if needed.

Enjoy!

Mark

Code:
'
' X-Rover Autonomous Color Tracking Robot
' Mark Fedasiuk 10/25/09
' Code is nearly complete!
' I have re-coded X-Rover to make it more generalized
' All offsets and tuning paremters now have constants
'
enablehservo

pinp con p0
pint con p1

speaker   con   p9
leftd   con   p12
rightd   con   p13
atx con p11
arx con p10
baudpc con i9600
baudatom con i9600
bauddisp con i9600

tiltc   con   -3000 'Tilt Servo Offset
tiltd   con   0 ' Tilt Servo Dead Zone (dangerous to increase)
tiltr   con   4000   ' Tilt Range
panc   con   0 ' Pan Servo Offset
pand   con   100 ' Pan Servo Deadzone
panr   con   10000   ' Pan Range
height   con   110      ' Height Adjustment (72 centers object vertically, higher numbers lower the object in the frame) (100-120 nominal)
trackcon   con   2 ' Number of misses allowed while tracking (range 1-3)

' Define Variables
x       var byte(3) ' X Centroid Value from CMUcam2
y      var byte(3) ' Y Centroid Value from CMUcam2
packet    var byte      ' Grab a single packet of data from camera
pan      var sword   ' Pan Camera
tilt   var   sword   ' Tilt Camera
stepp   var   word ' Pan Servo Step Size
stept   var   word ' Tilt Servo Step Size
stepsp    var   word ' Pan Servo Step Speed
stepst   var   word ' Tilt Servo Step Speed
posp   var   word ' Pan Position
post   var   word ' Tilt Position
rtpwr   var   word ' Right Drive Motor Power
lfpwr   var   word ' Left DRive Motor Power 
dirp   var   sword ' Pan Dirction
dirt    var   sword ' Tilt Direction
val      var   byte  ' Variable for sound routines
tracking var byte ' Number of times to allow non tracked object (filter)


'===================================
'        MAIN
'===================================

main

' Initialize Variables
x      = 0
y      = 0
packet   = 0
pan      = panc
tilt   = tiltc
stepp    = 0
stept    = 0
dirp   = 1
dirt   = 1
tracking = trackcon

hservo [pinp\pan]
hservo [pint\tilt]
hservo [leftd\0,rightd\0]

'Play Boot sound
for val = 2 to 5
sound speaker, [val*30\val*1000]
next
   
pause 1000 'wait for camera to boot

'''''''''''''''''''
'Camera Commands
'''''''''''''''''''

' set delay mode to get comms working
serout atx,baudatom,["DM 4",13] ' delay mode serial comms..DM value is about baud/2500 4,8,16 for 9600,19200, and 38400 baud
gosub ackno
serout atx,baudatom,["OM 0 3",13] ' output masinking for better tracking speed
gosub ackno
serout atx,baudatom,["NF 2",13] ' noise filtering default 2, 2-4 good range
gosub ackno
'serout atx,baudatom,["CR 19 32",13] ' used to turn off auto gain on cam
'gosub ackno

' Play Sounds to let you know that the atom pro is properly talking to the CMUcam2
for val = 5 to 10 ' 10 was 28
sound speaker, [val*5\val*(random tca)]
next

'''''''''''''''''''
' Color Tracking
'''''''''''''''''''

'track the color red with track color command note not using command subroutine
serout atx,baudatom,["tc ",dec 140," ",dec 240," ",dec 0," ",dec 40," ",dec 0," ",dec 40,13]
gosub ackno


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'         Scanning MODE NOT TRACKING
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

loop

gosub Tpacket


if pan > (panc + panr) OR pan < (panc - panr) then
dirp = dirp * -1
endif

if tilt > (tiltc + tiltr) OR tilt < (tiltc - tiltr) then
dirt = dirt * -1
endif
 
if x(tracking) = 0 AND y(tracking) = 0 AND tracking > 0 then
tracking = tracking -1
goto loop
elseif x(tracking) = 0 AND y(tracking) = 0

'tracking = 0

   if tilt > (tiltc + tiltr) then
   tilt = (tiltc + tiltr)
   elseif tilt < (tiltc -tiltr)
   tilt = (tiltc -tiltr)
   endif
   
pan = pan + dirp * 400
tilt = tilt + dirt * 150

hservo [pinp\pan,pint\tilt,leftd\0,rightd\0] ' scan head and body and wag tail when lost track

goto loop
endif

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'         AUTONOMOUS MODE TRACKING
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

tracking = trackcon ' Reset Tracking Filter

stepp = abs(x(tracking)-45)*30 ' was 25
stept = abs(y(tracking)-height)*10 ' was 10

'get hservo pan position

   if x(tracking) < 44 then
   pan = (pan - stepp) min -panr
   elseif x(tracking) > 46
   pan = (pan + stepp) max panr
   else
   stepp = 0
   endif

posp = abs(pan - panc)*1 max 8000  ' turn acceleration multiplier

'serout s_out,baudpc,[sdec pan,"   ",sdec posp,13]

if pan > (panc + pand) then
rtpwr = -posp
lfpwr = posp
elseif pan < (panc - pand)
rtpwr = posp
lfpwr = -posp
else
rtpwr = 0
lfpwr = 0
endif

   if y(tracking) < (height - 1) then
   tilt = (tilt + stept) max (tiltc + tiltr)
   elseif y(tracking) > (height + 1)
   tilt = (tilt - stept) min (tiltc - tiltr)
   else
   stept = 0
   endif

post = abs(tilt - tiltc)*3 max 8000 ' drive acceleration multiplier
   
'serout s_out,baudpc,[sdec tilt,"   ",sdec post,13]   
   
if tilt > (tiltc + tiltd) then
rtpwr = (rtpwr + post)
lfpwr = (lfpwr + post)
elseif tilt < (tiltc - tiltd)
rtpwr = (rtpwr - post)
lfpwr = (lfpwr - post)
else
rtpwr = 0
lfpwr = 0
endif

'serout s_out,baudpc,[dec posp,"   ",dec post,13]

hservo [pinp\pan,pint\tilt,rightd\rtpwr,leftd\lfpwr] ' Drive the Servos while tracking object
   
goto loop

end

'''''''''''''=================================
'''''''''''''======   SUBROUTINES   ==========
'''''''''''''=================================

' wait for ACK back
ackno
serin arx, baudatom, [wait("ACK")]
serin arx, baudatom, [packet] 'grabs the return after the ACK that confused me! this was the big fix
return

'retrieves a T type packet
Tpacket
serin  arx, baudatom, [packet,dec x(tracking),dec y(tracking)]
'serout s_out,baudpc,[13,"T ",dec3 x(tracking)\3," ",dec3 y(tracking)\3,13]
return


User avatar
Veteran ( offline )
Posts: 111
Posted: 2009-10-26 23:51 
All,

Here is the final base code for X-Rover. The only thing that will change is the pin assignments to match the Lynxmotion Tutorials. Lynxmotion will be posting a tutorial, assembly guide, and code for you to be able to complete this project yourself. I will post new video's in the next day or so to show the behavior of this charming little robot with the new Lynx 4WD Rover Aluminum Chassis.

Also for those of you who are interested I am using a piece of code on this bot that makes very interesting R2D2 type noises by intentionally using out of range numbers in the sound command. I was looking for something like this and was very pleased on how it came out when I wrote it myself! I will post that code snippet on stand alone thread tomorrow.

Mark

Code:
'
' X-Rover Autonomous Color Tracking Robot
' Mark Fedasiuk 10/25/09
' Code is nearly complete!
' I have re-coded X-Rover to make it more generalized
' All offsets and tuning paremters now have constants
'
enablehservo

pinp con p0
pint con p1

speaker   con   p9
leftd   con   p12
rightd   con   p13
atx con p11
arx con p10
baudpc con i9600
baudatom con i9600
bauddisp con i9600

tiltc   con   -3500 'Tilt Servo Offset
tiltd   con   0 ' Tilt Servo Dead Zone (dangerous to increase)
tiltr   con   4000   ' Tilt Range
panc   con   0 ' Pan Servo Offset
pand   con   100 ' Pan Servo Deadzone
panr   con   10000   ' Pan Range
height   con   100      ' Height Adjustment (72 centers object vertically, higher numbers lower the object in the frame) (100-120 nominal)
trackcon   con   3 ' Number of misses allowed while tracking (range 1-3)

' Define Variables
x       var byte(3) ' X Centroid Value from CMUcam2
y      var byte(3) ' Y Centroid Value from CMUcam2
packet    var byte      ' Grab a single packet of data from camera
pan      var sword   ' Pan Camera
tilt   var   sword   ' Tilt Camera
stepp   var   word ' Pan Servo Step Size
stept   var   word ' Tilt Servo Step Size
stepsp    var   word ' Pan Servo Step Speed
stepst   var   word ' Tilt Servo Step Speed
posp   var   word ' Pan Position
post   var   word ' Tilt Position
rtpwr   var   word ' Right Drive Motor Power
lfpwr   var   word ' Left DRive Motor Power 
dirp   var   sword ' Pan Dirction
dirt    var   sword ' Tilt Direction
val      var   byte  ' Variable for sound routines
tracking var byte ' Number of times to allow non tracked object (filter)


'===================================
'        MAIN
'===================================

main

' Initialize Variables
x      = 0
y      = 0
packet   = 0
pan      = panc
tilt   = tiltc
stepp    = 0
stept    = 0
dirp   = 1
dirt   = 1
tracking = trackcon

hservo [pinp\pan]
hservo [pint\tilt]
hservo [leftd\0,rightd\0]

'Play Boot sound
for val = 2 to 5
sound speaker, [val*30\val*1000]
next
   
pause 1000 'wait for camera to boot

'''''''''''''''''''
'Camera Commands
'''''''''''''''''''

' set delay mode to get comms working
serout atx,baudatom,["DM 4",13] ' delay mode serial comms..DM value is about baud/2500 4,8,16 for 9600,19200, and 38400 baud
gosub ackno
serout atx,baudatom,["OM 0 3",13] ' output masinking for better tracking speed
gosub ackno
serout atx,baudatom,["NF 2",13] ' noise filtering default 2, 2-4 good range
gosub ackno
'serout atx,baudatom,["CR 19 32",13] ' used to turn off auto gain on cam
'gosub ackno

' Play Sounds to let you know that the atom pro is properly talking to the CMUcam2
for val = 5 to 12 ' 10 was 28
sound speaker, [val*5\val*(random tca)]
next

'''''''''''''''''''
' Color Tracking
'''''''''''''''''''

'track the color red with track color command note not using command subroutine
serout atx,baudatom,["tc ",dec 120," ",dec 240," ",dec 0," ",dec 40," ",dec 0," ",dec 40,13]
gosub ackno


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'         Scanning MODE NOT TRACKING
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

loop

gosub Tpacket


if pan > (panc + panr) OR pan < (panc - panr) then
dirp = dirp * -1
endif

if tilt > (tiltc + tiltr) OR tilt < (tiltc - tiltr) then
dirt = dirt * -1
endif
 
if x(tracking) = 0 AND y(tracking) = 0 AND tracking > 0 then
tracking = tracking -1
goto loop
elseif x(tracking) = 0 AND y(tracking) = 0

'tracking = 0

   if tilt > (tiltc + tiltr) then
   tilt = (tiltc + tiltr)
   elseif tilt < (tiltc -tiltr)
   tilt = (tiltc -tiltr)
   endif
   
pan = pan + dirp * 400
tilt = tilt + dirt * 150

hservo [pinp\pan,pint\tilt,leftd\4000,rightd\-4000] ' scan head and body and wag tail when lost track

goto loop
endif

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'         AUTONOMOUS MODE TRACKING
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

tracking = trackcon ' Reset Tracking Filter

stepp = abs(x(tracking)-45)*30 ' was 25 Pan Speed
stept = abs(y(tracking)-height)*10 ' was 10 Tilt Speed

'get hservo pan position

   if x(tracking) < 44 then
   pan = (pan - stepp) min -panr
   elseif x(tracking) > 46
   pan = (pan + stepp) max panr
   else
   stepp = 0
   endif

posp = abs(pan - panc)*1 max 8000  ' turn acceleration multiplier

'serout s_out,baudpc,[sdec pan,"   ",sdec posp,13]

if pan > (panc + pand) then
rtpwr = -posp
lfpwr = posp
elseif pan < (panc - pand)
rtpwr = posp
lfpwr = -posp
else
rtpwr = 0
lfpwr = 0
endif

   if y(tracking) < (height - 1) then
   tilt = (tilt + stept) max (tiltc + tiltr)
   elseif y(tracking) > (height + 1)
   tilt = (tilt - stept) min (tiltc - tiltr)
   else
   stept = 0
   endif

post = abs(tilt - tiltc)*3 max 8000 ' drive acceleration multiplier
   
'serout s_out,baudpc,[sdec tilt,"   ",sdec post,13]   
   
if tilt > (tiltc + tiltd) then
rtpwr = (rtpwr + post)
lfpwr = (lfpwr + post)
elseif tilt < (tiltc - tiltd)
rtpwr = (rtpwr - post)
lfpwr = (lfpwr - post)
else
rtpwr = 0
lfpwr = 0
endif

'serout s_out,baudpc,[dec posp,"   ",dec post,13]

hservo [pinp\pan,pint\tilt,rightd\rtpwr,leftd\lfpwr] ' Drive the Servos while tracking object
   
goto loop

end

'''''''''''''=================================
'''''''''''''======   SUBROUTINES   ==========
'''''''''''''=================================

' wait for ACK back
ackno
serin arx, baudatom, [wait("ACK")]
serin arx, baudatom, [packet] 'grabs the return after the ACK that confused me! this was the big fix
return

'retrieves a T type packet
Tpacket
serin  arx, baudatom, [packet,dec x(tracking),dec y(tracking)]
'serout s_out,baudpc,[13,"T ",dec3 x(tracking)\3," ",dec3 y(tracking)\3,13]
return


User avatar
Veteran ( offline )
Posts: 111
Posted: 2009-10-27 00:09 
Here are a few pictures of X-Rover with the new lynxmotion aluminum chassis:


Attachment:
X-Rover3.jpg
X-Rover3.jpg [ 214.37 KiB | Viewed 2635 times ]
User avatar
Veteran ( offline )
Posts: 111
Posted: 2009-10-27 00:13 
Attachment:
X-Rover4.jpg
X-Rover4.jpg [ 212.82 KiB | Viewed 2634 times ]

X-Rover and some of his toys....


Attachment:
X-Rover5.jpg
X-Rover5.jpg [ 233.95 KiB | Viewed 2634 times ]

X-Rover Initial Build


User avatar
Guru ( offline )
Posts: 1130
Posted: 2009-10-27 08:33 
Awesome work Mark!

The rover reacts pretty quick. I would love to see the tutorial. I never had the time to check out the CMU cams so I wonder where you place the logic for the cam. (the logic for object tracking). I didn't had the time to check the full topic so it might be in the code already ;)

I'm gonna keep track of this project for sure!

Thanks for sharing,

Xan

_________________
[b]Share, Use and Improve![/b]
Digging trough: [i]Theory of Applied Robotics: Kinematics, Dynamics, and Control[/i]
Xan's YouTube Channel
http://www.youtube.com/xanore


User avatar
Veteran ( offline )
Posts: 111
Posted: 2009-10-27 09:47 
Thanks for the feedback. It's all in the code I posted! :wink:
Mark


Veteran ( offline )
Posts: 185
Posted: 2009-10-30 01:34 
Hi.
As I mentioned earlier, great job on the tracking code.
I have one request though, maybe you can include more comments in your code for people like me that are not so good in programming. It might be easier for us to undestand what you are doing in the code.
:)

_________________
Regards
Apostolos


The road is long but we are getting there


User avatar
Guru ( offline )
Posts: 1130
Posted: 2009-10-30 08:04 
Hi Mark,

I had some time to overview your code. Great work! I was unaware that the CMU cam can do the tracking of a certain color. I was/am looking for a good cam to do some tracking but most cams need a powerfull processor (read PC) to do the tracking. This is a need onboard solution.

Again great work! I love how quick the rover reacts to the toycar.

Xan

_________________
[b]Share, Use and Improve![/b]
Digging trough: [i]Theory of Applied Robotics: Kinematics, Dynamics, and Control[/i]
Xan's YouTube Channel
http://www.youtube.com/xanore


1, 2, 3, 4, 5, 6

All times are UTC - 5 hours [ DST ]. It is currently 2014-10-31 23:37
Feedback Form
Feedback Form