tag:blogger.com,1999:blog-79253452018-03-05T19:35:10.077-06:00Pegasus BridgeThis is the blog of the Pegasus Team in DARPA's Grand Challenge (2005-2007). Our Vehicle's name is Pegasus Bridge 1.Igorhttp://www.blogger.com/profile/17474880327699002140noreply@blogger.comBlogger37125tag:blogger.com,1999:blog-7925345.post-62644250873819491682007-08-11T03:37:00.000-06:002007-08-11T03:55:23.895-06:00A bridge too far. It's over.As hinted on <a href="http://nuit-blanche.blogspot.com/2007/06/not-concern-any-more.html">several</a> <a href="http://lemonodor.com/archives/2007/07/darpa_urban_challenge_site_visits.html">blogs</a>, we are not <a href="http://www.darpa.mil/grandchallenge/docs/PR_UC_Semifinalist_Announcement.pdf">semi-finalist to the urban Challenge</a>. We did not make that bridge. Thank you for all the good wishers. At some time, we'll try to write and talk more about our system of ominidirectional cameras using compressed sensing and dimensionality reduction in policies to accomplish what we intended to accomplish during the site visit.Igorhttp://www.blogger.com/profile/17474880327699002140noreply@blogger.comtag:blogger.com,1999:blog-7925345.post-9958674037266774132007-06-12T01:41:00.000-06:002008-11-13T11:07:11.985-06:00hold pattern<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_0ZCyAOBrUtA/Rm5PYGOvx2I/AAAAAAAAAb0/ULp00wShzVQ/s1600-h/IMG_3348.jpg"><img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_0ZCyAOBrUtA/Rm5PYGOvx2I/AAAAAAAAAb0/ULp00wShzVQ/s200/IMG_3348.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5075081105501046626" /></a><br />FYI, We are not reporting much as we are preparing for the site visit and trying to make some innovative use of light bulbs :-)<br />[update June 21: they will be on the <a href="http://nuit-blanche.blogspot.com/2007/06/on-going-concern.html">rooftop</a>]Igorhttp://www.blogger.com/profile/17474880327699002140noreply@blogger.comtag:blogger.com,1999:blog-7925345.post-57627988248311509572007-06-02T14:59:00.000-06:002008-11-13T11:07:12.067-06:00Site visit<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_0ZCyAOBrUtA/RmHesi3nO6I/AAAAAAAAAbY/gn2PgLOqPRA/s1600-h/swri-google-earth.JPG"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_0ZCyAOBrUtA/RmHesi3nO6I/AAAAAAAAAbY/gn2PgLOqPRA/s200/swri-google-earth.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5071579512251562914" /></a><br />Our site visit will take place on the afternoon of June 27th at the the <a href="http://www.swri.edu">Southwest Research Institute</a>. As for the technical report, I am going to hold onto it for a little while since we are still investigating some of the final algorithms/hardware to be implemented for the site visit. I thought we would be done by then but day-jobs and other considerations are making this a little optimistic.Igorhttp://www.blogger.com/profile/17474880327699002140noreply@blogger.comtag:blogger.com,1999:blog-7925345.post-81407392098474429072007-05-11T09:09:00.001-06:002007-05-11T11:19:40.884-06:00We have a site visit.See y'all you in San Antonio. The 53 teams remaining are listed <a href="http://www.darpa.mil/grandchallenge/teamlist.asp">here</a>.Igorhttp://www.blogger.com/profile/17474880327699002140noreply@blogger.comtag:blogger.com,1999:blog-7925345.post-47077040034580668152007-05-11T07:38:00.000-06:002007-05-11T07:45:17.860-06:00Unveiling our algorithmThese entries are our part of our current series on unveiling our algorithm as featured in this <a href="http://robots.net/article/2231.html">robots.net</a> story.<br /><ul><li><a href="http://nuit-blanche.blogspot.com/2007/05/darpa-urban-challenge-obstacle.html">Obstacle avoidance - Isolating important cues</a></li><li><a href="http://nuit-blanche.blogspot.com/2007/05/darpa-urban-challenge-unveiling-our_07.html">DARPA Urban Challenge: Unveiling our algorithm, Part Three, Building the Motor/Perceptual models</a></li><li><a href="http://nuit-blanche.blogspot.com/2007/05/darpa-urban-challenge-unveiling-our.html">DARPA Urban Challenge: Unveiling our algorithm, Part Deux, Sensor and Actuator basics.</a></li><li><a href="http://nuit-blanche.blogspot.com/2007/05/small-summary-of-what-darpas-urban.html">Small summary of what DARPA's Urban Challenge entails</a></li><li><a href="http://nuit-blanche.blogspot.com/2007/04/darpa-urban-challenge-basics.html">DARPA Urban Challenge: The basics</a></li><li><a href="http://nuit-blanche.blogspot.com/2007/04/darpa-urban-challenge-unveiling-our.html">DARPA Urban Challenge: Unveiling our algorithm</a></li></ul>Igorhttp://www.blogger.com/profile/17474880327699002140noreply@blogger.comtag:blogger.com,1999:blog-7925345.post-7132934995155000612007-05-10T14:11:00.000-06:002007-05-10T14:15:33.313-06:00Technical PaperThe <a href="http://www.darpa.mil/grandchallenge/docs/Technical_Paper_Guidelines_010807.pdf">technical paper</a> will be submitted to DARPA before June 1st at 5:00 ET. We will make it available on this site at that time. It consists of 25% of the grade given to the entry for a spot to the semi-finals.Igorhttp://www.blogger.com/profile/17474880327699002140noreply@blogger.comtag:blogger.com,1999:blog-7925345.post-38844176957667789422007-05-10T08:07:00.000-06:002007-05-10T08:09:29.283-06:00Site visit announcement tomorrowWe just received this:<br /><br /><blockquote>An email with the site visit announcement and press release will be emailed on Friday, May 11 at 1100 AM ET.<br /><br />DARPA Urban Challenge</blockquote><br /><br />on a different note, we were featured on <a href="http://robots.net/article/2231.html">robots.net</a>Igorhttp://www.blogger.com/profile/17474880327699002140noreply@blogger.comtag:blogger.com,1999:blog-7925345.post-18205851118184329412007-04-25T15:12:00.000-06:002008-11-13T11:07:12.275-06:00Site visit course RDNF and our algorithm presentation<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_0ZCyAOBrUtA/Ri_EpXIk4YI/AAAAAAAAAYk/l4k2vSSmEfs/s1600-h/version2p2.jpg"><img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_0ZCyAOBrUtA/Ri_EpXIk4YI/AAAAAAAAAYk/l4k2vSSmEfs/s200/version2p2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5057477121424023938" /></a> The folks at <a href="http://www.swri.edu">Southwest Research Institute</a> have done a great job at defining the course for the site visit. CP#6 is where the obstacle (yellow car lies). With respect to <a href="http://nuit-blanche.blogspot.com/2007/04/darpa-urban-challenge-unveiling-our.html">unveiling our algorithm</a>, we are in the middle of devising a lot of things (a lot of us have finals) for the time being but we have given an outline on the basics needed to a implement a <a href="http://nuit-blanche.blogspot.com/2007/04/darpa-urban-challenge-basics.html">GPS waypoint following vehicle</a> by pointing out to the effort of a vehicle prepared by a <a href="http://www.tamu.edu">large University next door</a> (<span style="font-weight:bold;">disclaimer: we have no connection what so ever with this effort)<span style="font-style:italic;"></span></span> which eventually did not enter the Grand Challenge. Most entries on the subject will be at <a href="http://nuit-blanche.blogspot.com/search/label/darpa%20urban%20challenge">http://nuit-blanche.blogspot.com/search/label/darpa%20urban%20challenge<br /></a>.Igorhttp://www.blogger.com/profile/17474880327699002140noreply@blogger.comtag:blogger.com,1999:blog-7925345.post-10572240976376895422007-04-16T06:00:00.000-06:002007-04-16T06:40:36.597-06:00Unveiling our algorithm, trade-offs and implementationIt is still a work in progress for some parts, but we are going to unveil the algorithm driving our vehicle: Pegasus Bridge 1, as we go along. We are still gathering data and evaluating them against different algorithms. We expect to talk about the implementation as well as the general concepts from GPS waypoint following, road following, situational awareness and learning rules. We hope to be able to do this in a timely manner, but as we are under-manned, between reporting on the algorithm and making it better we will always go for the latter. The reporting will take place <a href="http://nuit-blanche.blogspot.com/search/label/darpa%20urban%20challenge">here</a>.Igorhttp://www.blogger.com/profile/17474880327699002140noreply@blogger.comtag:blogger.com,1999:blog-7925345.post-59451163425452667952007-04-14T03:51:00.000-06:002008-11-13T11:07:12.421-06:00Part 4 Video submission completed.<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_0ZCyAOBrUtA/RiCubL02baI/AAAAAAAAAXM/iOurQTn3Im0/s1600-h/SwRI-panorama.jpg"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_0ZCyAOBrUtA/RiCubL02baI/AAAAAAAAAXM/iOurQTn3Im0/s200/SwRI-panorama.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5053230563963858338" /></a><br />We sent our video to DARPA yesterday. Next stop San Antonio at the <a href="http://www.swri.edu">Southwest Research Institute</a>.Igorhttp://www.blogger.com/profile/17474880327699002140noreply@blogger.comtag:blogger.com,1999:blog-7925345.post-61656603414503310782007-04-07T16:28:00.000-06:002007-04-07T16:53:50.635-06:00Visit of the Southwest Research Institute and our StrategyAs usual the visit at Southwest Research Institute went very smoothly. We are working on our video for the part 4 of the application. Because our approach is truely innovative and we expect no other team to go our route, we are unveiling our algorithm/software strategy in several excerpts <a href="http://nuit-blanche.blogspot.com/search/label/darpa%20urban%20challenge">here</a> as we go along.Igorhttp://www.blogger.com/profile/17474880327699002140noreply@blogger.comtag:blogger.com,1999:blog-7925345.post-28983148746500678542007-03-16T09:58:00.000-06:002008-11-13T11:07:12.564-06:00Site visit will take place at Southwest Research Institute<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_0ZCyAOBrUtA/Rfq_Qg88qpI/AAAAAAAAAUQ/Ws8y-5TnlBs/s1600-h/uc_practice_site16feb07_outerlines_centerline.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://3.bp.blogspot.com/_0ZCyAOBrUtA/Rfq_Qg88qpI/AAAAAAAAAUQ/Ws8y-5TnlBs/s200/uc_practice_site16feb07_outerlines_centerline.jpg" alt="" id="BLOGGER_PHOTO_ID_5042553023239072402" border="0" /></a><br />Since we liked it so much last year, we have decided to come back to <a href="http://www.swri.edu">SouthWest Research Institute</a> for the <a href="http://www.darpa.mil/grandchallenge/index.asp">DARPA site visit</a>. Photos of the site can be found <a href="http://picasaweb.google.com/urban.challenge07/">here</a>.Igorhttp://www.blogger.com/profile/17474880327699002140noreply@blogger.comtag:blogger.com,1999:blog-7925345.post-1163115883134186952006-11-09T17:44:00.000-06:002006-11-09T17:44:43.203-06:00We are in the Track B pool of teams<a href="http://www.darpa.mil/grandchallenge/Teams/Track_B_Teams/Pegasus.asp">We're in.</a>Igorhttp://www.blogger.com/profile/17474880327699002140noreply@blogger.comtag:blogger.com,1999:blog-7925345.post-1161089691525984392006-10-17T06:51:00.000-06:002006-10-17T06:54:51.536-06:00Application timeOur application was sent and received by DARPA. They will decide whether or not we are selected for <a href="http://www.darpa.mil/grandchallenge/teamlist.asp">Track B on October 18th</a>.Igorhttp://www.blogger.com/profile/17474880327699002140noreply@blogger.comtag:blogger.com,1999:blog-7925345.post-1146580138748233732006-05-02T08:28:00.000-06:002006-09-23T08:43:53.226-06:00A New RaceWe have decided to enter DARPA's <a href="http://en.wikipedia.org/wiki/DARPA_Grand_Challenge">Urban Grand Challenge race</a> (in <a href="http://fr.wikipedia.org/wiki/DARPA_Grand_Challenge">french</a>)<br /><br />On a totally unrelated note: <a href="http://www.google.com/maps?f=q&amp;hl=en&amp;t=k&amp;om=1&amp;ll=49.242378,-0.274594&amp;spn=0.00165,0.003659">the location of the historical Pegasus Bridge is here.</a>Igorhttp://www.blogger.com/profile/17474880327699002140noreply@blogger.comtag:blogger.com,1999:blog-7925345.post-1128805373412060582005-10-08T15:01:00.000-06:002005-10-09T00:16:43.596-06:00Stanford Racing Team is the winner of the DARPA Grand Challenge<a href="http://photos1.blogger.com/blogger/5955/293/1600/red-team-winner-grand-challenge.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/5955/293/320/red-team-winner-grand-challenge.jpg" border="0" alt="" /></a><br /><br />Outstanding, three contestants arrived within 10 minutes of each other!Igorhttp://www.blogger.com/profile/17474880327699002140noreply@blogger.comtag:blogger.com,1999:blog-7925345.post-1128507526309087742005-10-05T04:11:00.000-06:002005-10-06T10:08:55.813-06:00National Qualification Event<a href="http://photos1.blogger.com/blogger/5955/293/1600/what-a-robot-sees-stanford-stanley-darpa-GC.jpg"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/5955/293/320/what-a-robot-sees-stanford-stanley-darpa-GC.jpg" border="0" alt="" /></a><br />There are interesting videos from the NQE before selection is made on Thursday. They can be found on the CarTV site. In this video, Stanford provides insight in the <a href="http://www.cartv.com/content/research/channels/index.cfm/channel/cartv_video/action/showvideo/vid/e_0148/vscat/NULL/vcat/Event/pagenum/1">vision system</a> of their entry. Stanford has their own stock of <a href="http://cs.stanford.edu/group/roadrunner/">videos</a>.Igorhttp://www.blogger.com/profile/17474880327699002140noreply@blogger.comtag:blogger.com,1999:blog-7925345.post-1128100227565829482005-09-30T10:22:00.000-06:002005-09-30T11:10:27.580-06:00DARPA Grand Challenge NQE underway.<a href="http://photos1.blogger.com/blogger/5955/293/1600/paris-nuit-blanche-google-map1.JPG"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/5955/293/320/paris-nuit-blanche-google-map1.JPG" border="0" alt="" /></a><br />The <a href="http://www.grandchallenge.org/">DARPA Grand Challenge</a> National Qualification Event has taken place for the past several days, more information can be found <a href="http://www.grandchallenge.org/downloads/GC_Brochure_9232005.pdf">on this brochure</a>. A good blog on the event can be found <a href="http://www.indyrobotracing.com/blog">here.</a> Meanwhile, since we have been eliminated for this year's event, we are playing with Google Maps technology and are evaluating how it can be applied to our display of engineering data. <a href="http://lemonodor.com/archives/001178.html">John Wiseman</a> did a great job of displaying last year's <a href="http://gc.heavymeta.org/gc-2004-map.html">DARPA race </a>through <a href="http://maps.google.com/">Google Maps</a>. We just used it to display places on the Paris map for the "<a href="http://www.pegasus-bridge.com/nuitblanche/">Nuit Blanche</a>" event. We feel it has a good potential when applied to the <a href="http://www.pegasus-bridge.com/open_source_data/index1.html">data we are making freely available from our test runs</a>.Igorhttp://www.blogger.com/profile/17474880327699002140noreply@blogger.comtag:blogger.com,1999:blog-7925345.post-1118236475937743642005-06-08T07:10:00.000-06:002005-06-08T07:44:39.940-06:00Result of DARPA selection to NQEOn Monday, June 6th, DARPA announced a list of teams that would participate to the NQE (National Qualifying Event.) Unfortunately, we are currently not on that <a href="http://www.darpa.mil/grandchallenge/NQE_Press_Release.pdf">list</a>.Igorhttp://www.blogger.com/profile/17474880327699002140noreply@blogger.comtag:blogger.com,1999:blog-7925345.post-1117460441988423432005-05-30T06:46:00.000-06:002005-07-01T04:59:44.910-06:00How do you drive-by-wire a car using Python ?In the <a href="http://pegasusbridge.blogspot.com/2005/05/on-being-innovative-part-i.html">previous entry</a>, we made the comment that using Python was very nice because of the small learning curve. Here is an example below that should help anybody who has ever written a program understand our point. To the first time reader, it may even look like pseudo-code.<br /> <br />Our vehicle used to use this program to be driven around through a laptop installed in the car. Someone located in the vehicle would punch keys on the keyboard and would be able to accelerate/brake and turn right/left. The commands would then go through the parallel port of the laptop to a controller which would in the end command several electrical steppers motors doing the manual job. We left the GPS thread in the code so that one can see how to use threads. In effect in the real program, we also use other threads to monitor cameras and other inertial information coming from the IMU but we left them out of this code for the sake of clarity. It runs under Windows and is fast enough for the purpose at hand. The drive-by-wire code enables us to drive the vehicle around and allows the gathering of data on maneuverability and collision avoidance. The sentences said by the program through the TTS module may look like a gimmick, but they are in fact very helpful when only one person drives around and collects data at the same time.<br /><br />The program starts two threads. One is watching the keyboard for instruction. The other one is recording data from the GPS sensor.<br /><br /><FONT SIZE=2><pre><em><blockquote># This code is released <br /># under the General <br /># Public Licence (GPL), <br /># DISCLAIMER : if you do not know<br /># what you are doing <br /># do not use this program on a <br /># motorized vehicle or any machinery <br /># for that matter. Even if you know <br /># what you are doing, we absolutely <br /># cannot be held responsible for your <br /># use of this program under ANY circumstances.<br /># The program is <br /># released for programming education<br /># purposes only i.e. reading <br /># the code will allow students<br /># to understand the flow of the program. <br /># We do not advocate nor condone<br /># the use of this program in <br /># any robotic systems. If you are thinking<br /># about including this software<br /># in a machinery of any sort, please don't do it.<br />#<br /># This program was written by <br /># Pedro Davalos, Shravan Shashikant,<br /># Tejas Shah, Ramon Rivera and Igor Carron<br />#<br /># Light version of the Drive-by-wire program <br /># for Pegasus Bridge 1 - DARPA GC 2005<br />#<br />import sys, traceback, os.path, string<br />import thread, time, serial, parallel<br />import re<br />import struct<br />import msvcrt<br />import pyTTS<br /><br />rootSaveDir = "C:\\PegasusBridgeOne\\"<br />gpsSaveDir = os.path.join(rootSaveDir,"gps")<br />ctlSaveDir = os.path.join(rootSaveDir,"control")<br />stopProcessingFlag = 0<br />printMessagesFlag = 1<br />p = None<br />tts = pyTTS.pyTTS()<br />gps_data = list()<br />imu_data = list()<br /><br />def runnow():<br /> print "Drive-by-wire program running now"<br /> #launch controller thread<br /> t = thread.start_new_thread(control_sensors,())<br /> #launch gps sensor thread<br /> t1 = thread.start_new_thread(read_gps_data,())<br /><br />def control_sensors():<br /> global stopProcessingFlag<br /> global ctlSaveDir<br /> global p<br /> printMessage("Control thread has started")<br /> p=parallel.Parallel()<br /> p.ctrlReg = 9 #x&y axis<br /> p.setDataStrobe(0)<br /> sleep = .01<br /> while (stopProcessingFlag != 1):<br /> key = msvcrt.getch()<br /> length = len(key)<br /> if length != 0:<br /> if key == " ": # check for quit event<br /> stopProcessingFlag = 1<br /> else: <br /> if key == '\x00' or key == '\xe0': <br /> key = msvcrt.getch() <br /> print ord(key)<br /> strsteps = 5<br /> accelsteps=1<br /> if key == 'H':<br /> move_fwd(accelsteps, sleep)<br /> if key == 'M':<br /> move_rte(strsteps, sleep)<br /> if key == 'K':<br /> move_lft(strsteps, sleep)<br /> if key == 'P':<br /> move_bak(accelsteps, sleep)<br /> print "shutting down"<br /> ctl_ofile.close()<br /><br />def read_gps_data():<br /> global gpsSaveDir<br /> global stopProcessingFlag<br /> global gps_data<br /> printMessage("GPS thread starting.")<br /> #Open Serial Port with baud 4800 on port 5 (Com6)<br /> ser = None<br /> try:<br /> gps_ofile = open(''.join( \ <br /> [gpsSaveDir,'\\',time.strftime**<br /> **("%Y%m%d--%H-%M-%S-"),**<br /> ** "-gps_output.txt"]),"w")<br /> ser = serial.Serial(5, 38400, timeout=2)<br /> while (stopProcessingFlag != 1):<br /> resultx = ser.readline() <br /> # if re.search('GPRMC|GPGGA|GPZDA', resultx): <br /> splt = re.compile(',') <br /> ary = splt.split(resultx) <br /> gps_ofile.write(str(get_time() + ', '+resultx))<br /> gps_data.append([get_time(), resultx])<br /> if (len(gps_data)> 100): gps_data.pop(0)<br /> ser.close() <br /> gps_ofile.close()<br /> except:<br /> write_errorlog("GPS Read method " )<br /> if ser != None:<br /> ser.close()<br /><br />def write_errorlog(optional_msg=None,whichlog='master'):<br /> if optional_msg!=None:<br /> writelog(whichlog,"\nERROR : "+ optional_msg)<br /> type_of_error = str(sys.exc_info()[0])<br /> value_of_error = str(sys.exc_info()[1])<br /> tb = traceback.extract_tb(sys.exc_info()[2])<br /> tb_str = ''<br /> # error printing code goes here<br /><br />def get_time(format=0):<br /> stamp = '%1.6f' % (time.clock())<br /> if format == 0:<br /> return time.strftime('%m%d%Y %H:%M:%S-', \ <br /> time.localtime(time.time())) +str(stamp)<br /> elif format == 1:<br /> return time.strftime('%m%d%Y_%H%M', \ <br /> time.localtime(time.time()))<br /><br />def if_none_empty_char(arg):<br /> if arg == None:<br /> return ''<br /> else:<br /> return str(arg)<br /><br />def writelog(whichlog,message):<br /> global rootSaveDir<br /> logfile = open(os.path.join(rootSaveDir, \ <br /> whichlog+".log"),'a')<br /> logfile.write(message)<br /> logfile.close()<br /> printMessage(message)<br /><br />def printMessage(message):<br /> global printMessagesFlag<br /> if printMessagesFlag == 1:<br /> print message<br /><br />def move_fwd(steps, sleep):<br /> global p<br /> for i in range (0,steps):<br /> p.setData(32)<br /> p.setData(0)<br /> time.sleep(sleep)<br /><br />def move_bak(steps, sleep):<br /> global p<br /> for i in range (0,steps):<br /> p.setData(48)<br /> p.setData(0)<br /> time.sleep(sleep)<br /> <br />def move_lft(steps, sleep):<br /> global p<br /> for i in range (0,steps):<br /> p.setData(12)<br /> p.setData(0)<br /> time.sleep(sleep)<br /><br />def move_rte(steps, sleep):<br /> global p<br /> for i in range (0,steps):<br /> p.setData(8)<br /> p.setData(0)<br /> time.sleep(sleep)<br /> <br /><br />print 'Hello'<br />tts.Speak("Hello, I am Starting the control**<br /> **Program for Pegasus Bridge One")<br />time.sleep(4)<br />runnow()<br />while (stopProcessingFlag != 1):<br /> time.sleep(5)<br />print 'Bye now'<br />tts.Speak("Destination reached, Control Program**<br />**Aborting, Good Bye, have a nice day")<br />time.sleep(4)<br /></blockquote></em></pre></font>Igorhttp://www.blogger.com/profile/17474880327699002140noreply@blogger.comtag:blogger.com,1999:blog-7925345.post-1117036037594473322005-05-25T03:22:00.000-06:002005-05-29T14:33:53.830-06:00On being innovative - part IIn <a href="http://www.paulgraham.com/avg.html">Beating the averages</a>, <a href="http://www.paulgraham.com/">Paul Graham</a> described how his start-up was able to get an edge on competitors :<br /><br /><blockquote>The same thing will happen if you're running a startup, of course. If you do everything the way the average startup does it, you should expect average performance. The problem here is, average performance means that you'll go out of business. The survival rate for startups is way less than fifty percent. So if you're running a startup, you had better be doing something odd. If not, you're in trouble.</blockquote><strong></strong><br />While we are not going to talk about eveything on how we approach the vehicle for the Grand Challenge, we can describe how we are doing something odd:<br /><br /><strong>Using the Sensors We Understand</strong><br /><br />Our approach to the <a href="http://www.darpa.mil/grandchallenge">Race</a> is to have no range sensor like Lidars. Why ?<br /><br /><ul><li>first, because everybody seems to be doing it and it does not make sense to differentiate ourselves on how much money we can spend on a specific sensor, we know we can easily be outspent, </li><li>second, because we do not see a good way for the use of the technology developed for this project if we are not making more sense of data that are generally gathered by humans to make decisions. In the end, there are far more possibilities to use research based on sensors for which humans are accustomed to, than if one were to make sense of data from specifically crafted sensors like Lidars. There is a cost associated with devising new sensors in a new range of wavelengths, but the central issue is not having made sense of the data one already had access to. If you have been so unsuccessful at making sense of data from sensors you have been using all your life (at least most of us have had vision) why do you think you are going to be more successful with other types of sensors ? We are not saying it is easy. As the literature shows it is still a big issue in the robotics vision community but we think we have a good strategy on sensing and making sense of data. </li><li>Third, it did not seem to help the competitors last year.<br /></li></ul><p>Eventually our interest converges on fusioning data from inertial and vision sensors in order to provide navigability as well as obstacle avoidance capability as humans can do with their eyes and vestibular system. This is a subject that has only been recently looked into in the <a href="http://paloma.isr.uc.pt/icar/workshop/inervis/INERVIS2003.pdf">academic community</a> even though much has been done of Structure From Motion. A related interest is how gaze following tells us something about learning. </p><p>Besides GPS, IMU and visual data, we are using audio as well. The driving behavior of humans is generally related to the type of noise they hear when driving. We are also looking at fusioning this type of data with the video and the IMU. If you have driven in the Mojave desert, you know that there are stanger sounds than the ones you've heard on a highway. They tell you something about the interference between one of your sensors (the tires) and the landscape. This is by no means data to be thrown out since your cameras tells you see if the same landscape ahead of the vehicle is to be expected.</p><p><strong>Making Data Freely Available and Enabling Potential Collaborative Work with People We presently Do Not Know</strong></p><p>One of the reasons we put some data on our <a href="http://pegasusbridge.blogspot.com/2005/04/web-site-creation-and-free.html">web site</a> that features GPS, IMU (acceleration, heading and rotation rate) is because we want other people who do not have the means nor the interest to take a stab at the problem of setting up a system that can gather data to still be able to use real world data for some initial finding. More data will be coming within the coming months and we are looking for some type of academic/research institution to host these data. We have collected 40 gigabytes of data so far but with a monthly bandwidth allowance of 42 GB per month. We do not expect to survive any interest from the robotics community past the first person who downloads all of them (we have had more than 30 people who downloaded the larger file after making an <a href="http://robots.net/article/1464.html">announcement on robots.net</a> a month and half ago.)<br /><br />Teaming with other researchers that are specifically in this area is of interest but this is not our main strategy. The odd part of this strategy is the statement that data do not matter as much as making sense of them. It doesn't matter if you have driven 100 miles and gathered data with your vehicle if you have not done the most important: postprocessing.</p><p><strong>Using the Right Programming Language</strong></p><p>We are currently using the Python programming language. Why ? for several reasons, </p><ul><li>we do not want to optimize ahead of time the respective challenges occuring in building an autonomous vehicle, hence we are neither using C/C++, Java nor any real time operating systems for development and the final program. Most announcements on other teams web site look for Java, C/C++ programmers.</li><li>Python is close to pseudo-code and the learning curve for newcomers into the team as well as veterans is very smooth especially coming from Matlab. </li><li>Python is providing glue, libraries, modules for all kinds of needs expressed within the project (from linear algebra with <a href="http://www.scipy.org/">Lapack bindings</a> , to <a href="http://www.pythonware.com/products/pil/">Image analysis</a>, to <a href="http://matplotlib.sourceforge.net/">plots</a> to voice activation with <a href="http://www.cs.unc.edu/~parente/tech/tr02.shtml">PyTTS</a>, to <a href="http://starship.python.net/crew/theller/ctypes/">sound recording</a> and others)</li><li>Thanks to Moore's law, Python is fast enough on Windows but we do not feel we would be losing too much sleep having to switch to a different OS or having to create modules that are specifically faster in C. Using the Windows OS helps in debugging the programs since our team is distributed geographically and everyone generally use Windows on their laptops. </li></ul><p><strong>Using the Right Classification Approach</strong></p><p>One of our approach to make classification of images for the purpose of road following as well as obstacle avoidance is based on defining some type of distance between drivable and non-drivable scenes. There are many different projection techniques available in the literature. Let us take the example of the "zipping-classifier" mechanism and how we are using it for obstacle avoidance. This technique uses a compressor like <a href="http://www.winzip.com/">Winzip</a> or <a href="http://www.7-zip.org/">7-zip</a> to produce some type of distance between files (here images.) A very nice description of it can be read <a href="http://pil.phys.uniroma1.it/~loreto/prl_language.pdf">here</a>. The whole theory is based on <a href="http://www.mdl-research.org/">Minimum Description Length</a>. An example of a naive classification made on pictures we took at the site visit in San Antonio are shown below. In the interest of reproducibility, we used <a href="http://complearn.sourceforge.net/">CompLearn</a> to produce this tree. (<a href="http://homepages.cwi.nl/~cilibrar/">Rudi Cilibrasi</a> is the developer <a href="http://complearn.sourceforge.net/">CompLearn</a>.) The tree clearly allows the segmentation between open areas and the ones with trash cans. We did no processing to the pictures. Obviously, our approach is much more specific in defining this distance between a "good" road and a not-so-good one.<br /><br /></p><center><a href="http://photos1.blogger.com/img/6/4043/640/classification-trash-can1.jpg"><img style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; MARGIN: 2px; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid" src="http://photos1.blogger.com/img/6/4043/320/classification-trash-can1.jpg" border="0" /></a><br />classification of trash can obstacle <a href="http://www.hello.com/" target="ext"><img style="BORDER-RIGHT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; PADDING-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-TOP: 0px; BORDER-BOTTOM: 0px" alt="Posted by Hello" src="http://photos1.blogger.com/pbh.gif" align="absMiddle" border="0" /></a></center><br /><br />Using the <a href="http://www.google.com/apis/">API for Google</a> (images), we can build libraries of relevant information for road driving experience purposes and compute their "distance" to the road driven by our vehicle.<br /><br /><p></p><p><em>Let's hope we are doing something odd enough.</em> </p>Igorhttp://www.blogger.com/profile/17474880327699002140noreply@blogger.comtag:blogger.com,1999:blog-7925345.post-1116247065745161462005-05-16T06:37:00.000-06:002005-05-16T06:54:56.140-06:00Gaze following when car racing - Review -[Reviews in this blog are meant to convey some of the issues our team has been facing when trying to implement a vision based system (as opposed to a range based system) to guide Pegasus Bridge 1, our entry in <a href="www.darpa.mil/grandchallenge/">DARPA's Grand Challenge</a>]<br /><br />Anybody who has ever driven in the desert knows that one's reflexes gathered while driving on a highway do not work as well in this new environment. Point in case, the generic driving behavior one can observe in street car driving as shown in these <a href="http://www.eyelinkinfo.com/ELIICarTestClip4.wmv">two</a> <a href="http://www.smi.de/iv/img/iV_Drive_01.avi">videos</a> from gaze tracking vendors (<a href="http://www.eyelinkinfo.com/">1</a> and <a href="http://www.smi.de/iv/">2</a> or <a href="http://www.seeingmachines.com/">3</a>) and the roads being driven in the WRC <a href="http://www.wrc.com/page/LoginOrBuy?target=http%3A//www.wrc.com/page/sub/WRC/RallyRoundUp/0%2C%2C10111%7E665411%2C00.html%3F">(watch the free preview of the Cyprus Rally)</a><a href="http://www.eyelinkinfo.com/ELIICarTestClip4.wmv"></a> which are likely to ressemble more the type of terrain one will observe in the Grand Challenge (ableit not at the same speed.) <br /><br />We have been in talks with one of the vendors, but at 25-35 K$, there has not been a place where each of out interest and theirs have overlapped. Maybe some other time. <br /><br />Why is gaze following important ? because this is the only way to reduce the field of vision to be decomposed for analysis. If one were to have a 640 by 480 camera, and tried to analyze the field of vision given by the camera, it is very likely that the analysis would take too much time for the vehicle to make a relevant decision (please note that I am not even talking about the way the computation is performed and the type of hardware used.) Not only that, but gaze following by a human is a filter for objects and scenes of relevance to the driving experience. If one were to have the same "reflexes" most of the driving experience would eventually be about choice and how one's speed is considered "safe" by the driver considering the terrain. I will talk about terrain some other time, in another review using the data we are making <a href="http://www.pegasus-bridge.com/open_source_data/index1.html">available</a>.Igorhttp://www.blogger.com/profile/17474880327699002140noreply@blogger.comtag:blogger.com,1999:blog-7925345.post-1116249455760886942005-05-12T23:55:00.000-06:002005-05-16T07:17:35.766-06:00Site visit in San AntonioThe site visit went on yesterday. It was not optimal. We think the DARPA folks were very open in as much as the fact that we are advertizing ourselves as being one of the few teams that will not have direct range instruments (Lidar,...) Time will tell. Kudos to the outstanding team at <a href="http://srvtb.appliedphysics.swri.edu/">Southwest Research Institute (JRP/NUSE2)</a> who hosted us (Mike, Carlos, Joe, Dan and Bill), their hosting was flawless.Igorhttp://www.blogger.com/profile/17474880327699002140noreply@blogger.comtag:blogger.com,1999:blog-7925345.post-1114088933680098992005-04-21T06:05:00.000-06:002005-04-21T07:08:53.680-06:00Site Visit ScheduledOur <a href="http://pegasusbridge.blogspot.com/2005/04/selected-for-site-visit.html">Site Visit</a> will take place at the <a href="http://pegasusbridge.blogspot.com/2005/03/darpa-site-visit-location.html">Southwest Research Institute</a> in San Antonio on May 12, 2005. It also looks like two other teams from Austin and the New Zealand folks will be in the same batch. Good luck y'all.Igorhttp://www.blogger.com/profile/17474880327699002140noreply@blogger.comtag:blogger.com,1999:blog-7925345.post-1112646129170138842005-04-04T14:10:00.000-06:002005-04-04T14:22:09.170-06:00Selected for site visit.Along with 118 teams, we have been selected (out of 137 teams) for a <a href="http://www.darpa.mil/grandchallenge/TeamInfo.html">site visit in May</a>. Here we come <a href="http://pegasusbridge.blogspot.com/2005/03/darpa-site-visit-location.html">San Antonio</a>.Igorhttp://www.blogger.com/profile/17474880327699002140noreply@blogger.com