Page 254 - The Definitive Guide to Building Java Robots
P. 254

Preston_5564C07.fm  Page 235  Monday, September 26, 2005  5:38 AM



                                                                               CHAPTER 7  ■  NAVIGATION  235



                        ir2b:
                            IF IN5=0 THEN ir2b
                            SHIFTIN din2,dout2,2,[dist2\8]
                            HIGH dout2
                            RETURN
                        sonar1:
                          PULSOUT INIT1,5                      ' 10us init pulse
                          OUTPUT INIT1                         ' (delay)
                          RCTIME ECHO1,1,wDist1                ' measure echo time
                          wDist1=wDist1/convfac                ' convert to inches
                          RETURN
                        sonar2:
                          PULSOUT INIT2,5                      ' 10us init pulse
                          OUTPUT INIT2 ' (delay)
                          RCTIME ECHO2,1,wDist2                ' measure echo time
                          wDist2=wDist2/convfac                ' convert to inches
                          RETURN
                        sonar3:
                          PULSOUT INIT3,5                      ' 10us init pulse
                          OUTPUT INIT3                         ' (delay)
                          RCTIME ECHO3,1,wDist3                ' measure echo time
                          wDist3=wDist3/convfac                ' convert to inches
                          RETURN
                        get_lat:
                           *SERIN GPS,N4800,2000,get_lat,[WAIT("GPRMC,"),SKIP 7,status,SKIP 1,➥
                        STR gpsData1\4,SKIP 1,STR gpsData2\4]
                            *SEROUT 16,N9600,[status,",0",gpsData1(0),gpsData1(1),":",gpsData1(2), ➥
                        gpsData1(3),".",gpsData2(0),gpsData2(1),gpsData2(2),gpsData2(3)]
                            *GOTO main
                        get_lon:
                            *SERIN GPS,N4800,2000,get_lon,[WAIT("GPRMC,"),SKIP 7,status,SKIP 13,➥
                        STR gpsData1\5,SKIP 1,STR gpsData2\4]
                            *SEROUT 16,N9600,[status,",",gpsData1(0),gpsData1(1),gpsData1(2),➥
                        ":",gpsData1(3),➥
                        gpsData1(4),".",gpsData2(0),gpsData2(1),gpsData2(2),gpsData2(3)]
                            *GOTO main
                        get_diag:
                            SEROUT 16,N9600,["1","2","3"]
                            goto main


                        Section Summary
                        Now I am ready to get the robot to navigate. Though the previous section was just an introduction,
                        I covered various foundational topics, such as
                           • Basic Graph Theory: Describing ideal navigation scenarios
                           • Robot Configuration: Describing the components and structure of the robot being used
                             to demonstrate navigation
   249   250   251   252   253   254   255   256   257   258   259