|
From: <he...@us...> - 2013-06-05 20:03:22
|
Revision: 354
http://sourceforge.net/p/simspark/svn/354
Author: hedayat
Date: 2013-06-05 20:03:19 +0000 (Wed, 05 Jun 2013)
Log Message:
-----------
Added sensing the orientation of the agent by Patrick MacAlpine
Modified Paths:
--------------
trunk/rcssserver3d/ChangeLog
trunk/rcssserver3d/data/rsg/agent/nao/naoneckhead.rsg
trunk/rcssserver3d/plugin/soccer/restrictedvisionperceptor/restrictedvisionperceptor.cpp
trunk/rcssserver3d/plugin/soccer/restrictedvisionperceptor/restrictedvisionperceptor.h
trunk/rcssserver3d/plugin/soccer/restrictedvisionperceptor/restrictedvisionperceptor_c.cpp
Modified: trunk/rcssserver3d/ChangeLog
===================================================================
--- trunk/rcssserver3d/ChangeLog 2013-05-29 05:32:14 UTC (rev 353)
+++ trunk/rcssserver3d/ChangeLog 2013-06-05 20:03:19 UTC (rev 354)
@@ -1,3 +1,11 @@
+2013-06-06 Hedayat Vatankhah <hed...@gm...>
+
+ * plugin/soccer/restrictedvisionperceptor/restrictedvisionperceptor.h:
+ * plugin/soccer/restrictedvisionperceptor/restrictedvisionperceptor.cpp:
+ * plugin/soccer/restrictedvisionperceptor/restrictedvisionperceptor_c.cpp:
+ * data/rsg/agent/nao/naoneckhead.rsg:
+ - Add MyOrientation sensing by Patrick (setSenseMyOrien in rsg file)
+
2013-04-25 Hedayat Vatankhah <hed...@gm...>
* data/rsg/agent/nao/nao_hetero.rsg:
Modified: trunk/rcssserver3d/data/rsg/agent/nao/naoneckhead.rsg
===================================================================
--- trunk/rcssserver3d/data/rsg/agent/nao/naoneckhead.rsg 2013-05-29 05:32:14 UTC (rev 353)
+++ trunk/rcssserver3d/data/rsg/agent/nao/naoneckhead.rsg 2013-06-05 20:03:19 UTC (rev 354)
@@ -98,6 +98,7 @@
(nd RestrictedVisionPerceptor
(setViewCones 120 120)
(setSenseMyPos false)
+ (setSenseMyOrien false)
(setSenseBallPos false)
(setStaticSenseAxis false)
(addNoise true)
Modified: trunk/rcssserver3d/plugin/soccer/restrictedvisionperceptor/restrictedvisionperceptor.cpp
===================================================================
--- trunk/rcssserver3d/plugin/soccer/restrictedvisionperceptor/restrictedvisionperceptor.cpp 2013-05-29 05:32:14 UTC (rev 353)
+++ trunk/rcssserver3d/plugin/soccer/restrictedvisionperceptor/restrictedvisionperceptor.cpp 2013-06-05 20:03:19 UTC (rev 354)
@@ -38,6 +38,7 @@
RestrictedVisionPerceptor::RestrictedVisionPerceptor() : Perceptor(),
mSenseMyPos(false),
+ mSenseMyOrien(false),
mSenseBallPos(false),
mAddNoise(true),
mStaticSenseAxis(true),
@@ -160,7 +161,7 @@
SoccerBase::GetTransformParent(*this,mTransformParent);
// SoccerBase::GetAgentState(*this, mAgentState);
SoccerBase::GetActiveScene(*this,mActiveScene);
-
+
boost::shared_ptr<AgentAspect> agent_aspect =
FindParentSupportingClass<AgentAspect>().lock();
if (agent_aspect == 0)
@@ -176,7 +177,7 @@
{
mAgentAspect = agent_aspect;
}
-
+
mAgentState = static_pointer_cast<AgentState>
(mAgentAspect->GetChildOfClass("AgentState",true));
if (mAgentState == 0)
@@ -272,7 +273,7 @@
}
boost::shared_ptr<Transform> j = od.mObj->GetTransformParent();
-
+
if (j.get() == 0)
{
continue; // this should never happen
@@ -280,7 +281,7 @@
od.mRelPos = j->GetWorldTransform().Pos() - myPos;
od.mDist = od.mRelPos.Length();
-
+
visibleNodes[node].push_back(od);
}
}
@@ -298,14 +299,14 @@
boost::shared_ptr<AgentAspect> agent_aspect =
dynamic_pointer_cast<AgentAspect>(node);
if (agent_aspect != 0)
- {
+ {
boost::shared_ptr<AgentAspect> aspect =
agent_aspect->FindParentSupportingClass<AgentAspect>().lock();
if (aspect != 0)
{
agent_aspect = aspect;
}
-
+
boost::shared_ptr<AgentState> agent_state = static_pointer_cast<AgentState>
(agent_aspect->GetChildOfClass("AgentState",true));
if (agent_state.get() == 0 ||
@@ -314,7 +315,7 @@
{
return;
}
-
+
ParameterList& element = predicate.parameter.AddList();
element.AddValue(std::string("P"));
@@ -461,21 +462,32 @@
element.AddValue(sensedMyPos[2]);
}
+ if (mSenseMyOrien)
+ {
+ // Orientation
+ TTeamIndex ti = mAgentState->GetTeamIndex();
+ Vector3f sensedMyUp = SoccerBase::FlipView(mTransformParent->GetWorldTransform().Up(), ti);
+
+ ParameterList& element = predicate.parameter.AddList();
+ element.AddValue(std::string("myorien"));
+ element.AddValue(gRadToDeg(gArcTan2(sensedMyUp[1], sensedMyUp[0])));
+ }
+
if (mSenseBallPos)
{
TTeamIndex ti = mAgentState->GetTeamIndex();
boost::shared_ptr<Ball> ball;
SoccerBase::GetBall(*this, ball);
Vector3f sensedBallPos = SoccerBase::FlipView(ball->GetWorldTransform().Pos(), ti);
-
+
ParameterList& element = predicate.parameter.AddList();
element.AddValue(std::string("ballpos"));
element.AddValue(sensedBallPos[0]);
element.AddValue(sensedBallPos[1]);
element.AddValue(sensedBallPos[2]);
-
+
}
-
+
if (mSenseLine)
{
SenseLine(predicate);
@@ -578,21 +590,32 @@
element.AddValue(sensedMyPos[2]);
}
+ if (mSenseMyOrien)
+ {
+ // Orientation
+ TTeamIndex ti = mAgentState->GetTeamIndex();
+ Vector3f sensedMyUp = SoccerBase::FlipView(mTransformParent->GetWorldTransform().Up(), ti);
+
+ ParameterList& element = predicate.parameter.AddList();
+ element.AddValue(std::string("myorien"));
+ element.AddValue(gRadToDeg(gArcTan2(sensedMyUp[1], sensedMyUp[0])));
+ }
+
if (mSenseBallPos)
{
TTeamIndex ti = mAgentState->GetTeamIndex();
boost::shared_ptr<Ball> ball;
SoccerBase::GetBall(*this, ball);
Vector3f sensedBallPos = SoccerBase::FlipView(ball->GetWorldTransform().Pos(), ti);
-
+
ParameterList& element = predicate.parameter.AddList();
element.AddValue(std::string("ballpos"));
element.AddValue(sensedBallPos[0]);
element.AddValue(sensedBallPos[1]);
element.AddValue(sensedBallPos[2]);
-
+
}
-
+
if (mSenseLine)
{
SenseLine(predicate);
@@ -665,6 +688,12 @@
}
void
+RestrictedVisionPerceptor::SetSenseMyOrien(bool sense)
+{
+ mSenseMyOrien = sense;
+}
+
+void
RestrictedVisionPerceptor::SetSenseBallPos(bool sense)
{
mSenseBallPos = sense;
@@ -691,7 +720,7 @@
// object is too close
return false;
}
-
+
const int hAngle_2 = mHViewCone >> 1;
if (gAbs(od.mTheta) > hAngle_2)
{
@@ -737,7 +766,7 @@
{
Vector3f bp3 = ld.mBeginPoint.mRelPos;
Vector3f ep3 = ld.mEndPoint.mRelPos;
-
+
if ( bp3.y() < focalLength && ep3.y() >= focalLength )
{
float t = ( focalLength - ep3.y() ) / ( bp3.y() - ep3.y() );
@@ -807,7 +836,7 @@
}
}
}
-
+
if (seeBeginPoint && seeEndPoint)
{
// make some noise
Modified: trunk/rcssserver3d/plugin/soccer/restrictedvisionperceptor/restrictedvisionperceptor.h
===================================================================
--- trunk/rcssserver3d/plugin/soccer/restrictedvisionperceptor/restrictedvisionperceptor.h 2013-05-29 05:32:14 UTC (rev 353)
+++ trunk/rcssserver3d/plugin/soccer/restrictedvisionperceptor/restrictedvisionperceptor.h 2013-06-05 20:03:19 UTC (rev 354)
@@ -105,7 +105,10 @@
//! Turn sensing of agent position on/off
void SetSenseMyPos(bool sense);
- //! Turn sensing of agent position on/off
+ //! Turn sensing of agent orientation on/off
+ void SetSenseMyOrien(bool sense);
+
+ //! Turn sensing of ball position on/off
void SetSenseBallPos(bool sense);
// turn sensing of lines on/off
@@ -211,6 +214,9 @@
//! true, if the absolute position of the agent is sensed.
bool mSenseMyPos;
+
+ //! true, if the absolute orientation of the agent's camera in the x-y plane is sensed.
+ bool mSenseMyOrien;
//! true, if the absolute position of the ball is sensed.
bool mSenseBallPos;
Modified: trunk/rcssserver3d/plugin/soccer/restrictedvisionperceptor/restrictedvisionperceptor_c.cpp
===================================================================
--- trunk/rcssserver3d/plugin/soccer/restrictedvisionperceptor/restrictedvisionperceptor_c.cpp 2013-05-29 05:32:14 UTC (rev 353)
+++ trunk/rcssserver3d/plugin/soccer/restrictedvisionperceptor/restrictedvisionperceptor_c.cpp 2013-06-05 20:03:19 UTC (rev 354)
@@ -80,6 +80,22 @@
return true;
}
+FUNCTION(RestrictedVisionPerceptor,setSenseMyOrien)
+{
+ bool inSenseMyOrien;
+
+ if (
+ (in.GetSize() != 1) ||
+ (! in.GetValue(in.begin(),inSenseMyOrien))
+ )
+ {
+ return false;
+ }
+
+ obj->SetSenseMyOrien(inSenseMyOrien);
+ return true;
+}
+
FUNCTION(RestrictedVisionPerceptor,setSenseBallPos)
{
bool inSenseBallPos;
@@ -188,6 +204,7 @@
DEFINE_FUNCTION(setNoiseParams);
DEFINE_FUNCTION(addNoise);
DEFINE_FUNCTION(setSenseMyPos);
+ DEFINE_FUNCTION(setSenseMyOrien);
DEFINE_FUNCTION(setSenseBallPos);
DEFINE_FUNCTION(setStaticSenseAxis);
DEFINE_FUNCTION(setViewCones);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|