Robots, Arrows and Functional Reactive Programming - science.uu.nl ...

15 downloads 343 Views 319KB Size Report
In the latter case, an "r" (for "recurring") is prefixed to the name ..... sired position pd and actual position odometryPosition sbi, and the use of ... let r = rfLeft sbi.
               

                        

                        

                                 

                

  !     "    !   # #                   

                            



  

!       ""    " #  ""    $   "   %  %  "%  # %          "  $  &     '   (  ( " # %  "      !"      "% %        "      &

  "  %     )  '     "     "   % " '     ""   * "&    #"      "% %             '        #" '   '                %     "      +    % '   " "% %     "& % " & )       ,  -  # " .       # #       "    (  '  %   (  #       %    #    

    "  ' # '  /       '  "        ' ' #    

!       "" '  ) " #        #     "   %    * # 0   12 34 !5 164 !078 199 94 ! 1934 !0 19: ;4  !  14  )     <    "%     "  '        

    "  +    # #       ""    ,#    %  ' .       

"   ' ' '   !0   !0  '    "   #                          !!""!#$   !$"%$&$'     (    ) *

( ++%,#!!+",+  (-%+"",""".'/       

     0       /

!0   %    "      &   "% %  19 ;4 %     (  '  !0  !% 199 94 =    ' ' '  % "   =  '     ' % %     #    "  '  '    " '  '     %  >9 %   #         "    #    %   !0 "     + "   %  '  ' #           %  "      ' ' "        %   "  +      #  ' '        #  "% ? #          "% '      +   "   #  "%           % ,# "  .        + "   ' "   "% ? %        #  !     % " '     '  "%   @ A +  #  "%     "   '        &  " B       )    "    %       =   ( " ' '  "   "%      )    #'  % '  #        ' '  /     )  #   +  "%   ' '

  @ "  %   A      #    "%   '  % " #&" %    '       #"  "%  >> >>> >>> &&&

v >>> &&& vrSF + vlSF t >>> thetaSF

*

cos

'           &'(

integral

(/2)

           #      #   #        "          ! ( "    #  D '  5"! 

!% )) '  !2! 5"! 

             " '      ""  '  %   @ DA         "  % C "   %  %  %           "     "            # #  &       "       # '  + " '  "%    !% '    %D !% )) '   5"! %  %  '    '  

+ (   ---  6!%6 .   %        )       "  

 '     C     %      %  '      ! ( "      "   % 'C "  ' "  '       - '  %    D  ))   '  !2!   "  % !! " --- !% 6!%6 .  % !! 0

!  & 0      '   - '  %           + )  

               %    

+     # '  "%   !0  #  # '  ' '      + #  '    # '     "   D 9      '    (   " #     ) "   #  =     @A ,# @ A.  )(    " !%       '     #  )       "  #    =      @ A ,# @

A.  )(    " !% +     #  '  '  "   D

"    

!% !% )) '   5"! %  %  '    '  

!%  !% )) '    '  5"! '   

 ( " #   # !% '   % = B  I ' '   ( " #   #  !%  "     "    # '    " % # '      #   % '    ! ( "   (D

! '  !  

  ' --- !% 6!%6 % ! '

  # #  '         =#  )    % !%   "    '    ' % "    # '  "  ?        '    " 

'

     #   '%!     %          %    ! ( " '   "     #    )) 5"!   % '   #  B" " ' C  %      #   '   '   ! 0  D *  ) *    5"!

 

! )) 5"!     5"!   6! 6    % !  

=  #   %      ? # ( "  #"     # '     +  %"    '   '  "      + "   #" # "D  *& ))       5"!   5"!   5"! 

'      '    "      %  #    "%          "     #    #    D 4  )) 5"!   5"!   5"! 

4  )) 5"!   5"!   5"! 

=#    %  # "        "  %  '      #  # '   

  D   )) 5"!   5"!   5"! 

B #  '     &(    B" #  "  " #" (         % " '   ""    % " %   #    )   '   !0     # '     '    " "  %D   )) ' *  5"! 

+ (  '         "    #"  '  #" '    ,  @  A #   . ! ( " # !' )) '  !2!     #      "  D  ' )) '  !2! 5"!   '  !'  

00   

    "  #  "  (  9    #'   #     #  D "

   !

!&

)) )) )) ))

'     

5"!  '  5"!     '  5"!     '  5"! 

            

    "   (     ' " # 

   - , '.  '     " + (  ! ! "   (     ' " # 

   !  '     " B"  !& ! "      !     '     " +     '             '    "  '  '  '   #   %  " #  & "  8 !0       #  #            ' # "D "

  ))   ' 5"!   %% ))   ' 5"!    5"! 

+   #     "        '       " %  "   

 '     ",      , @A.  '    ", +   #   %% "0         "  #"            =#    #  

             #          ½  #  9  '  ¼ F "0 ! ( "  #'   #       "% #  "   #"  ' )  D  + !' )) '  !2! 2!  + !'   '  

6! 6 #  %% 0    0

=  %% #' %   "   ""    )  !0 D %%7  ))   ' 5"!     %%7  !  %% !    !

!  ' B  " )) '  !2! 8 %!&       &    # "%  =# '        '  "   # ' #   "%     )   "      '    "%     "    "         

+  ) " 

   ! 9    #    "%  =      ) 

&    #   '   (   # )(   + '

 (     #   % ' 

 )   %  ""   '     (      #    "% &  =     "      ' %      # 

 % ! ( " ""  ' '     @  A #    % '   # #   "      #    % '    B          % 85" )) '  !2! 5"!  '     "& "    "       )   #       ""   #'D " )) 8 %!&  '  !2! 8 %!& " "0   %   

%  3 % 85" 3  " 3  !% % !! "0 3   6! 6 % !! "#

! ( 3 "

   "  

 ) + /    #  % '     #   '       

  ' #       

  # '    %  ' '     

          !      # !        #    +  #   '     % "   %    &

 )      " + ) D    ) 

(    )    " #    %  ' #  '    D   

 %   ' #  +    # 9    # #  

 %   #     

 #  +    %   '     "           % ) "  "     ""  '          E #"   !  ( 0) "  !%    #  !%  '    % ' , D ) " 

    # ) " 

. 

     

   , #  - #

N     "   - # E %  "   " "      '  E  # #     , ' ' 

' #  ' "    % " '     M &    "      . + E            #  %  ! ( "      # "   %   "%  '     !2!  '      !9!!  #     # !0 %    % & )    + !% %  '  '   %    %            %      0     

    E  # #       %       # "  % #       #         E ! ( "  !2!  ""% #     '  

  # # ! :   !9!!  ""% #  '  +  8 %!& !% (  : !8 : !(%% ; ! (%% !   7   *    " #    + < !   " # < ! < !  'D ! :' !   < !   < ! = =  " 5>

 '  ( " #   # "  #          ( "  #' 8#   '          % %         ! :   "      '      4:  '       % 4 :%  + '    "   #   @)A #      " "   +  '     " %  D  4  )) 4 :%    4:   4:   4:   '? )) 4 :%    4:   

! ( "  (D  ))  !9!!    '? 8

" " 6 4 6 !% < !4  !  5"!

"       '   "       

+   % ' "  )       '  #   # "%  "    D !&  !+ !    !<  !  '  !2!  !9!!

     )     # "%  +   

 %      !<  !   &    #  7:  !<  !   D

 !<  !

 )  *    +   (     ,+'    -'    -  '  *     )'    -  *      -  '  -',. / -'0 / -'*  1 . 23 '   1  1    -'* .   ,+' -'0  ,+' -'*  ,+' '  ,+'

   

   

 ,45     5  6    6 $ 5  ,  .    ,  .

'( '( '( '(

   

21  21  21  21 

-  '   

 *    *    .

 ,+ . (      + .     .  %  7&+ .    %    1  (   -  0   +. 

 .    ,+ . (   ,+ . (   ,+ . (   ,+ . (  

   

   

   

   

%  %  %  % 

 , 5 4 8     4 +    9+8   . %  : -    9 . %  :  ,8 &*  )     ;    7  * < ; %  ,8 &*  )    7  *  '(  21  * ; %  ,8 &*  )    '(  21  *  4 *    +   (     7 .  +    ,%%1    -  7+   -    = %  =   =   7+       1   = 8+  =   +=   7+     1      7 .  +    ,8 &*  4    6 7 .  21  ' .  7+ 

   7  9  



% 7:  !<  !   

& ))   :  !&

2 ))   :  !2

! ))   ; !

(%%4 ))   (%% ! 

@4 ))   

    

&  ! 2!!&  ! !% !  4 ! !  %% 4  

!& :  !&  !  !& :  !2  2!

+ "   ' % '  #  "%  # '    #       E  + :  !& )     '  #  "%  ' %   A !(A  A !*A + "  )  #&(   +     "   '   #  D

 )) 4& @ !   !+ !    !+ !   29 

' @ !      %       #  "   ' =  %    # "%  '  %   %   '    #    #  D !& @ !  B9C%!!D ! 9C%!!  9* % E !<  G 98@ E !<  G 97@ E !<  G 9* E !<  G 9 !( E !:2 !<  !7 G 9 !* E !:2 !<  !7

)) )) )) )) )) )) )) )) )) ))

< !  < !  < !  < !  :  !2 < !  7 :  !2 < !  7

F F F F  F  F

    

>  !% 8 !%  7 ? !  *  ! (  !

  ! *  !

+     H4  I4  H4   I4   %  #  "   '    "  %  "          &2 &2 2  2   ,  '  9 "  % 9 "  '       % , .. + '  

  )(  - 9 " % 9 "   %   2 " % 2 " +  "  # "%  2 "