sensehandler_8c-source.html
来自「仿真人工智能是指用人工的方法和技术」· HTML 代码 · 共 583 行 · 第 1/5 页
HTML
583 行
00269 <a class="code" href="classSenseHandler.html#o0">WM</a>-><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>-><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>-><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>-><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>-><a class="code" href="classWorldModel.html#a4">getCurrentTime</a>();00296 00297 iTime = <a class="code" href="classParse.html#d1">Parse::parseFirstInt</a>( &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>( &strMsg, &isGoalie, <a class="code" href="classSenseHandler.html#o0">WM</a>-><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>-><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>( &strMsg ); <font class="comment">// parse first value</font>00316 dY = <a class="code" href="classParse.html#d0">Parse::parseFirstDouble</a>( &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>( &strMsg ); <font class="comment">// parse delta x</font>00320 dVelY = <a class="code" href="classParse.html#d0">Parse::parseFirstDouble</a>( &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>( &strMsg );00324 angNeck = <a class="code" href="classParse.html#d0">Parse::parseFirstDouble</a>( &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>-><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>-><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>-><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>( &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>-><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 ) > 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>, &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>, &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>( &strMsg ); <font class="comment">// get stamina</font>00373 <font class="keywordtype">double</font> dEffort = <a class="code" href="classParse.html#d0">Parse::parseFirstDouble</a>( &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>( &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>( &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>( &strMsg ); <font class="comment">// get head_angle</font>00380 00381 <a class="code" href="classSenseHandler.html#o0">WM</a>-><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>-><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>( &strMsg ) );00386 <a class="code" href="classSenseHandler.html#o0">WM</a>-><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>( &strMsg ) );00387 <a class="code" href="classSenseHandler.html#o0">WM</a>-><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>( &strMsg ) );00388 <a class="code" href="classSenseHandler.html#o0">WM</a>-><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>( &strMsg ) );00389 <a class="code" href="classSenseHandler.html#o0">WM</a>-><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>( &strMsg ) );00390 <a class="code" href="classSenseHandler.html#o0">WM</a>-><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>( &strMsg ) );00391 <a class="code" href="classSenseHandler.html#o0">WM</a>-><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>( &strMsg ) );00392 <a class="code" href="classSenseHandler.html#o0">WM</a>-><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>( &strMsg ) );00393 00394 <a class="code" href="classSenseHandler.html#o0">WM</a>-><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 + -
显示快捷键?