sensehandler_8c-source.html

来自「仿真人工智能是指用人工的方法和技术」· HTML 代码 · 共 583 行 · 第 1/5 页

HTML
583
字号
00269     <a class="code" href="classSenseHandler.html#o0">WM</a>-&gt;<a class="code" href="classWorldModel.html#a90">processNewObjectInfo</a>( o, time, dDist, iDir, dDistChange,00270            dDirChange, (<a class="code" href="Geometry_8h.html#a2">AngDeg</a>)iBodyFacingDir, (<a class="code" href="Geometry_8h.html#a2">AngDeg</a>)iHeadFacingDir,00271            isGoalie );00272     }00273   <a class="code" href="classSenseHandler.html#o0">WM</a>-&gt;<a class="code" href="classWorldModel.html#a98">mapUnknownPlayers</a>( time );       <font class="comment">// map players with unknown nr</font>00274   <a class="code" href="classSenseHandler.html#o0">WM</a>-&gt;<a class="code" href="classWorldModel.html#a11">setTimeLastSeeMessage</a>( time );   <font class="comment">// set time of last see message</font>00275                                        <font class="comment">// this must be done after mapping since</font>00276                                        <font class="comment">// otherwise mutex in WM is unlocked!</font>00277   <font class="keywordflow">return</font> <font class="keyword">true</font>;00278 }00279 <a name="l00285"></a><a class="code" href="classSenseHandler.html#a4">00285</a> <font class="keywordtype">bool</font> <a class="code" href="classSenseHandler.html#a4">SenseHandler::analyzeSeeGlobalMessage</a>( <font class="keywordtype">char</font> *strMsg )00286 {00287   Log.logWithTime( 2, <font class="stringliteral">" incoming see global message"</font> );00288   strcpy( <a class="code" href="classSenseHandler.html#o0">WM</a>-&gt;<a class="code" href="classWorldModel.html#m3">strLastSeeMessage</a>, strMsg );00289 00290   <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> o;00291   <font class="keywordtype">bool</font>    isGoalie;00292   <font class="keywordtype">double</font>  dX, dY, dVelX, dVelY;00293   <font class="keywordtype">int</font>     iTime;00294   <a class="code" href="Geometry_8h.html#a2">AngDeg</a>  angBody, angNeck;00295   <a class="code" href="classTime.html">Time</a>    time = <a class="code" href="classSenseHandler.html#o0">WM</a>-&gt;<a class="code" href="classWorldModel.html#a4">getCurrentTime</a>();00296 00297   iTime = <a class="code" href="classParse.html#d1">Parse::parseFirstInt</a>( &amp;strMsg );         <font class="comment">// get the time</font>00298   time.<a class="code" href="classTime.html#a1">updateTime</a>( iTime );00299 00300   <font class="keywordflow">while</font>( *strMsg != <font class="charliteral">')'</font> )                          <font class="comment">// " ((objname.." or ")"</font>00301   {00302     dX = dY = dVelX = dVelY = <a class="code" href="SoccerTypes_8h.html#a19">UnknownDoubleValue</a>;00303     angBody = angNeck = <a class="code" href="SoccerTypes_8h.html#a20">UnknownAngleValue</a>;00304     strMsg += 2;          <font class="comment">// go the start of the object name</font>00305 00306     <font class="comment">// get the object type at the current position in the string</font>00307     o = <a class="code" href="classSoccerTypes.html#d1">SoccerTypes::getObjectFromStr</a>( &amp;strMsg, &amp;isGoalie, <a class="code" href="classSenseHandler.html#o0">WM</a>-&gt;<a class="code" href="classWorldModel.html#a18">getTeamName</a>() );00308     <font class="keywordflow">if</font>( o == <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a> )00309     {00310       Log.log( 4, <font class="stringliteral">"Illegal object"</font> );00311       Log.log( 4, <font class="stringliteral">"total messages: %s"</font>, <a class="code" href="classSenseHandler.html#o0">WM</a>-&gt;<a class="code" href="classWorldModel.html#m3">strLastSeeMessage</a> );00312       Log.log( 4, <font class="stringliteral">"rest of message: %s"</font>, strMsg );00313     }00314 00315     dX = <a class="code" href="classParse.html#d0">Parse::parseFirstDouble</a>( &amp;strMsg );        <font class="comment">// parse first value</font>00316     dY = <a class="code" href="classParse.html#d0">Parse::parseFirstDouble</a>( &amp;strMsg );        <font class="comment">// parse second value</font>00317     <font class="keywordflow">if</font> ( *strMsg != <font class="charliteral">')'</font> )                           <font class="comment">// if it was no flag</font>00318     {00319       dVelX = <a class="code" href="classParse.html#d0">Parse::parseFirstDouble</a>( &amp;strMsg );   <font class="comment">// parse delta x</font>00320       dVelY = <a class="code" href="classParse.html#d0">Parse::parseFirstDouble</a>( &amp;strMsg );   <font class="comment">// parse delta y</font>00321       <font class="keywordflow">if</font>( *strMsg != <font class="charliteral">')'</font> )                          <font class="comment">// stil not finished</font>00322       {                                             <font class="comment">// get body and neck angle</font>00323         angBody = <a class="code" href="classParse.html#d0">Parse::parseFirstDouble</a>( &amp;strMsg );00324         angNeck = <a class="code" href="classParse.html#d0">Parse::parseFirstDouble</a>( &amp;strMsg );00325       }00326     }00327     <font class="comment">// skip ending bracket of object information.</font>00328     strMsg++;00329 00330     <font class="comment">// process the parsed information (unread values are Unknown...)</font>00331     <a class="code" href="classSenseHandler.html#o0">WM</a>-&gt;<a class="code" href="classWorldModel.html#a88">processSeeGlobalInfo</a>( o, time, <a class="code" href="classVecPosition.html">VecPosition</a>(dX,dY),00332                     <a class="code" href="classVecPosition.html">VecPosition</a>(dVelX,dVelY), angBody, angNeck );00333     }00334   <a class="code" href="classSenseHandler.html#o0">WM</a>-&gt;<a class="code" href="classWorldModel.html#a9">setTimeLastSeeGlobalMessage</a>( time );  <font class="comment">// set time last see global message</font>00335   <font class="keywordflow">return</font> <font class="keyword">true</font>;00336 }00337 <a name="l00345"></a><a class="code" href="classSenseHandler.html#a6">00345</a> <font class="keywordtype">bool</font> <a class="code" href="classSenseHandler.html#a6">SenseHandler::analyzeSenseMessage</a>( <font class="keywordtype">char</font> *strMsg )00346 {00347 00348   <a class="code" href="classSenseHandler.html#a2">setTimeSignal</a>();                            <font class="comment">// set signal when to send action</font>00349   strcpy( <a class="code" href="classSenseHandler.html#o0">WM</a>-&gt;<a class="code" href="classWorldModel.html#m4">strLastSenseMessage</a>, strMsg );00350 00351   <font class="keywordtype">int</font> iTime = <a class="code" href="classParse.html#d1">Parse::parseFirstInt</a>( &amp;strMsg );<font class="comment">// get time</font>00352   <a class="code" href="classTime.html">Time</a> timeOld = <a class="code" href="classSenseHandler.html#o0">WM</a>-&gt;<a class="code" href="classWorldModel.html#a4">getCurrentTime</a>();00353   <a class="code" href="classTime.html">Time</a> timeNew = timeOld;00354   timeNew.<a class="code" href="classTime.html#a1">updateTime</a>( iTime );00355 00356   <font class="keywordflow">if</font>( timeNew.<a class="code" href="classTime.html#a5">getTimeDifference</a>( timeOld ) &gt; 1 )00357     Log.log( 1, <font class="stringliteral">"Missed a sense!!"</font> );00358 00359   Log.logWithTime ( 2, <font class="stringliteral">"\n\nSENSE (%d)"</font>, timeNew.<a class="code" href="classTime.html#a3">getTime</a>() );00360   Log.restartTimer( );00361   Log.logWithTime ( 2, <font class="stringliteral">" alarm after %d"</font>, <a class="code" href="classSenseHandler.html#o4">iTimeSignal</a> );00362 00363   strMsg++;                                      <font class="comment">// go to ( before view_mode</font>00364 00365   <a class="code" href="classParse.html#d3">Parse::gotoFirstOccurenceOf</a>( <font class="charliteral">' '</font>, &amp;strMsg );   <font class="comment">// skip view_mode</font>00366   strMsg++;                                      <font class="comment">// skip space</font>00367 00368   <a class="code" href="SoccerTypes_8h.html#a245">ViewQualityT</a> vq = <a class="code" href="classSoccerTypes.html#d28">SoccerTypes::getViewQualityFromStr</a>( strMsg ); <font class="comment">// get quality</font>00369   <a class="code" href="classParse.html#d3">Parse::gotoFirstOccurenceOf</a>( <font class="charliteral">' '</font>, &amp;strMsg );00370   strMsg++;                                      <font class="comment">// skip space; get view_angle</font>00371   <a class="code" href="SoccerTypes_8h.html#a244">ViewAngleT</a> va = <a class="code" href="classSoccerTypes.html#d25">SoccerTypes::getViewAngleFromStr</a>( strMsg );00372   <font class="keywordtype">double</font> dStamina = <a class="code" href="classParse.html#d0">Parse::parseFirstDouble</a>( &amp;strMsg );  <font class="comment">// get stamina</font>00373   <font class="keywordtype">double</font> dEffort  = <a class="code" href="classParse.html#d0">Parse::parseFirstDouble</a>( &amp;strMsg );  <font class="comment">// get effort</font>00374 00375   <font class="keywordtype">double</font> dSpeed   = <a class="code" href="classParse.html#d0">Parse::parseFirstDouble</a>( &amp;strMsg );  <font class="comment">// get speed</font>00376   <a class="code" href="Geometry_8h.html#a2">AngDeg</a> angSpeed = <a class="code" href="classParse.html#d0">Parse::parseFirstDouble</a>( &amp;strMsg );  <font class="comment">// get speed ang</font>00377 00378   <font class="comment">// minus sign since we store angle between neck and body and not vice versa</font>00379   <font class="keywordtype">int</font> iHeadAngle = - <a class="code" href="classParse.html#d1">Parse::parseFirstInt</a>( &amp;strMsg );    <font class="comment">// get head_angle</font>00380 00381   <a class="code" href="classSenseHandler.html#o0">WM</a>-&gt;<a class="code" href="classWorldModel.html#a89">processNewAgentInfo</a>( vq, va, dStamina, dEffort, dSpeed,00382         (<a class="code" href="Geometry_8h.html#a2">AngDeg</a>) angSpeed, (<a class="code" href="Geometry_8h.html#a2">AngDeg</a>)iHeadAngle );00383 00384   <font class="comment">// set all number of performed commands</font>00385   <a class="code" href="classSenseHandler.html#o0">WM</a>-&gt;<a class="code" href="classWorldModel.html#a26">setNrOfCommands</a>( <a class="code" href="SoccerTypes_8h.html#a247a186">CMD_KICK</a>       , <a class="code" href="classParse.html#d1">Parse::parseFirstInt</a>( &amp;strMsg ) );00386   <a class="code" href="classSenseHandler.html#o0">WM</a>-&gt;<a class="code" href="classWorldModel.html#a26">setNrOfCommands</a>( <a class="code" href="SoccerTypes_8h.html#a247a181">CMD_DASH</a>       , <a class="code" href="classParse.html#d1">Parse::parseFirstInt</a>( &amp;strMsg ) );00387   <a class="code" href="classSenseHandler.html#o0">WM</a>-&gt;<a class="code" href="classWorldModel.html#a26">setNrOfCommands</a>( <a class="code" href="SoccerTypes_8h.html#a247a182">CMD_TURN</a>       , <a class="code" href="classParse.html#d1">Parse::parseFirstInt</a>( &amp;strMsg ) );00388   <a class="code" href="classSenseHandler.html#o0">WM</a>-&gt;<a class="code" href="classWorldModel.html#a26">setNrOfCommands</a>( <a class="code" href="SoccerTypes_8h.html#a247a189">CMD_SAY</a>        , <a class="code" href="classParse.html#d1">Parse::parseFirstInt</a>( &amp;strMsg ) );00389   <a class="code" href="classSenseHandler.html#o0">WM</a>-&gt;<a class="code" href="classWorldModel.html#a26">setNrOfCommands</a>( <a class="code" href="SoccerTypes_8h.html#a247a183">CMD_TURNNECK</a>   , <a class="code" href="classParse.html#d1">Parse::parseFirstInt</a>( &amp;strMsg ) );00390   <a class="code" href="classSenseHandler.html#o0">WM</a>-&gt;<a class="code" href="classWorldModel.html#a26">setNrOfCommands</a>( <a class="code" href="SoccerTypes_8h.html#a247a185">CMD_CATCH</a>      , <a class="code" href="classParse.html#d1">Parse::parseFirstInt</a>( &amp;strMsg ) );00391   <a class="code" href="classSenseHandler.html#o0">WM</a>-&gt;<a class="code" href="classWorldModel.html#a26">setNrOfCommands</a>( <a class="code" href="SoccerTypes_8h.html#a247a187">CMD_MOVE</a>       , <a class="code" href="classParse.html#d1">Parse::parseFirstInt</a>( &amp;strMsg ) );00392   <a class="code" href="classSenseHandler.html#o0">WM</a>-&gt;<a class="code" href="classWorldModel.html#a26">setNrOfCommands</a>( <a class="code" href="SoccerTypes_8h.html#a247a184">CMD_CHANGEVIEW</a> , <a class="code" href="classParse.html#d1">Parse::parseFirstInt</a>( &amp;strMsg ) );00393 00394   <a class="code" href="classSenseHandler.html#o0">WM</a>-&gt;<a class="code" href="classWorldModel.html#a13">setTimeLastSenseMessage</a>( timeNew );                     <font class="comment">// set the time</font>00395   Log.logWithTime( 2, <font class="stringliteral">" end analyzing sense"</font> );00396   <font class="keywordflow">return</font> <font class="keyword">true</font>;00397 }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?