本文整理汇总了C++中al::ALValue类的典型用法代码示例。如果您正苦于以下问题:C++ ALValue类的具体用法?C++ ALValue怎么用?C++ ALValue使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了ALValue类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: callback
void NaoMarkServiceDetection::callback(const std::string &key, const AL::ALValue &value, const AL::ALValue &msg)
{
AL::ALValue marks = fMemoryProxy.getData("LandmarkDetected");
if(marks.getSize() > 0 && !_isMarkFound)
{
int TimeStampField = marks[0][1];
if((int)marks[1][0][1][0] == _markToFind)
{
if((float)marks[1][0][0][3] < 0.2f)
{
if(_isAllowedToMove)
motionProxy->moveToward(0.5f,0,marks[1][0][0][1]);
_naoMarkDetected = true;
}
else
{
motionProxy->moveToward(0,0,0);
_isMarkFound = true;
}
}
else
motionProxy->moveToward(0,0,0);
}
}
开发者ID:sion77,项目名称:Nao_PER,代码行数:25,代码来源:NaoMarkServiceDetection.cpp
示例2: initializeSonarValues
void SensorsModule::initializeSonarValues()
{
// Get a proxy to the DCM.
boost::shared_ptr<AL::DCMProxy> dcmProxy = broker_->getDcmProxy();
if(dcmProxy != 0)
{
try
{
// For DCM::set() see:
// http://www.aldebaran-robotics.com/documentation/naoqi/sensors/dcm-api.html#DCMProxy::set__AL::ALValueCR
AL::ALValue dcmSonarCommand;
dcmSonarCommand.arraySetSize(3);
dcmSonarCommand[0] = std::string("Device/SubDeviceList/US/Actuator/Value"); // Device name.
dcmSonarCommand[1] = std::string("ClearAll"); // Delete all timed commands before adding this one.
dcmSonarCommand[2].arraySetSize(1); // A list of (1) timed-commands.
dcmSonarCommand[2][0].arraySetSize(2);
dcmSonarCommand[2][0][0] = 68.0; // The command itself.
dcmSonarCommand[2][0][1] = dcmProxy->getTime(0); // The DCM time for the command to be applied.
// Send the timed command to the sonars.
dcmProxy->set(dcmSonarCommand);
}
catch(AL::ALError& e)
{
std::cout << "SensorsModule : Failed to initialize sonars, "
<< e.toString() << std::endl;
}
}
}
开发者ID:MisterSquishy,项目名称:nbites,代码行数:31,代码来源:SensorsModule.cpp
示例3: ParseWordRecognizedArray
void ParseWordRecognizedArray(std::vector<WordConfidencePair>& results, const AL::ALValue& value, float recognitionThreshold)
{
// unexpected data
if (value.getType() != AL::ALValue::TypeArray)
MODULE_ERROR("invalid array type");
// unexpected data
if (value.getSize() % 2 != 0)
MODULE_ERROR("invalid array size");
for (int i = 0; i < (int)value.getSize(); i += 2)
{
AL::ALValue wordValue = value[i];
AL::ALValue confidenceValue = value[i + 1];
float confidence = confidenceValue.operator float &();
if (confidence >= recognitionThreshold)
{
WordConfidencePair pair = { wordValue.toString(), confidence };
results.push_back(pair);
}
}
std::sort(results.begin(), results.end(), WordConfidencePairComparison());
}
开发者ID:dmerejkowsky,项目名称:nao-gm,代码行数:25,代码来源:main.cpp
示例4: create_actuator_stiffness_aliases
/**
* \brief: Create the aliases for controlling the joint stiffnesses.
**/
void hal_experimental::create_actuator_stiffness_aliases()
{
LOG("[create_actuator_stiffness]", "create actuator stiffness initializing...");
AL::ALValue jointAliases;
try
{
jointAliases.clear();
jointAliases.arraySetSize(2);
jointAliases[0] = std::string("jointStiffness");
jointAliases[1].arraySetSize(25);
int j = 0;
for(int i = NumOfPositionActuatorIds; i <= rAnkleRollStiffnessActuator; ++i)
{
jointAliases[1][j] = actuatorNames[i];
++j;
}
// jointAliases[1][HEAD_PITCH] = std::string("Device/SubDeviceList/HeadPitch/Hardness/Actuator/Value");
// jointAliases[1][HEAD_YAW] = std::string("Device/SubDeviceList/HeadYaw/Hardness/Actuator/Value");
// jointAliases[1][L_ANKLE_PITCH] = std::string("Device/SubDeviceList/LAnklePitch/Hardness/Actuator/Value");
// jointAliases[1][L_ANKLE_ROLL] = std::string("Device/SubDeviceList/LAnkleRoll/Hardness/Actuator/Value");
// jointAliases[1][L_ELBOW_ROLL] = std::string("Device/SubDeviceList/LElbowRoll/Hardness/Actuator/Value");
// jointAliases[1][L_ELBOW_YAW] = std::string("Device/SubDeviceList/LElbowYaw/Hardness/Actuator/Value");
// jointAliases[1][L_HAND] = std::string("Device/SubDeviceList/LHand/Hardness/Actuator/Value");
// jointAliases[1][L_HIP_PITCH] = std::string("Device/SubDeviceList/LHipPitch/Hardness/Actuator/Value");
// jointAliases[1][L_HIP_ROLL] = std::string("Device/SubDeviceList/LHipRoll/Hardness/Actuator/Value");
// jointAliases[1][L_HIP_YAW_PITCH] = std::string("Device/SubDeviceList/LHipYawPitch/Hardness/Actuator/Value");
// jointAliases[1][L_KNEE_PITCH] = std::string("Device/SubDeviceList/LKneePitch/Hardness/Actuator/Value");
// jointAliases[1][L_SHOULDER_PITCH] = std::string("Device/SubDeviceList/LShoulderPitch/Hardness/Actuator/Value");
// jointAliases[1][L_SHOULDER_ROLL] = std::string("Device/SubDeviceList/LShoulderRoll/Hardness/Actuator/Value");
// jointAliases[1][L_WRIST_YAW] = std::string("Device/SubDeviceList/LWristYaw/Hardness/Actuator/Value");
// jointAliases[1][R_ANKLE_PITCH] = std::string("Device/SubDeviceList/RAnklePitch/Hardness/Actuator/Value");
// jointAliases[1][R_ANKLE_ROLL] = std::string("Device/SubDeviceList/RAnkleRoll/Hardness/Actuator/Value");
// jointAliases[1][R_ELBOW_ROLL] = std::string("Device/SubDeviceList/RElbowRoll/Hardness/Actuator/Value");
// jointAliases[1][R_ELBOW_YAW] = std::string("Device/SubDeviceList/RElbowYaw/Hardness/Actuator/Value");
// jointAliases[1][R_HAND] = std::string("Device/SubDeviceList/RHand/Hardness/Actuator/Value");
// jointAliases[1][R_HIP_PITCH] = std::string("Device/SubDeviceList/RHipPitch/Hardness/Actuator/Value");
// jointAliases[1][R_HIP_ROLL] = std::string("Device/SubDeviceList/RHipRoll/Hardness/Actuator/Value");
// jointAliases[1][R_KNEE_PITCH] = std::string("Device/SubDeviceList/RKneePitch/Hardness/Actuator/Value");
// jointAliases[1][R_SHOULDER_PITCH] = std::string("Device/SubDeviceList/RShoulderPitch/Hardness/Actuator/Value");
// jointAliases[1][R_SHOULDER_ROLL] = std::string("Device/SubDeviceList/RShoulderRoll/Hardness/Actuator/Value");
// jointAliases[1][R_WRIST_YAW] = std::string("Device/SubDeviceList/RWristYaw/Hardness/Actuator/Value");
}
catch(const AL::ALError &e)
{
std::cout << "[create_actuator_stiffness][ERROR]: Error setting up the aliase: " << e.toString() << std::endl;
}
try
{
dcm_proxy->createAlias(jointAliases);
log_file << "stiffness alias added to DCM!\n";
}
catch(const AL::ALError &e)
{
LOG("[create_actuator_stiffness]","[ERROR]: An error occured while creating stiffness actuator aliases: " + e.toString());
}
LOG("[create_actuator_stiffness]","create actuator stiffness initialized");
}
开发者ID:DU-RoboCup,项目名称:NAO-engine,代码行数:63,代码来源:hal_experimental.cpp
示例5: CallReturnVariable
gmVariable GMALProxy::CallReturnVariable(const char* function, gmVariable arg)
{
const std::string function_string = std::string(function);
AL::ALValue result = AL::ALValue();
switch (arg.m_type)
{
case GM_INT: result = _proxy.call<AL::ALValue>(function_string, arg.GetInt()); break;
case GM_FLOAT: result = _proxy.call<AL::ALValue>(function_string, arg.GetFloat()); break;
case GM_VEC2: result = _proxy.call<AL::ALValue>(function_string, arg.GetVec2().x, arg.GetVec2().y); break;
case GM_STRING: result = _proxy.call<AL::ALValue>(function_string, std::string(arg.GetCStringSafe())); break;
default: result = _proxy.call<AL::ALValue>(function_string); break;
}
gmVariable result_variable;
result_variable.Nullify();
switch (result.getType())
{
case AL::ALValue::TypeBool: result_variable = gmVariable(int(result.operator bool &() ? 1 : 0)); break;
case AL::ALValue::TypeInt: result_variable = gmVariable(int(result.operator int &())); break;
case AL::ALValue::TypeFloat: result_variable = gmVariable(float(result.operator float &())); break;
case AL::ALValue::TypeString: result_variable = gmVariable(VirtualMachine::Get()->GetVM().AllocStringObject(result.toString().c_str())); break;
default:
break;
}
return result_variable;
}
开发者ID:kalineh,项目名称:nao-gm,代码行数:30,代码来源:gmalproxy.cpp
示例6: call
Variant ALProxy::call(const std::string &method, const Variant &val)
{
AL::ALValue param;
AL::ALValue result;
Variant vResult(0);
param.arrayPush(val.toALValue());
fProxy->genericCall(method, param,result);
vResult.fromALValue(result);
return vResult;
}
开发者ID:Aharobot,项目名称:nao-leap-control,代码行数:10,代码来源:javaproxy.cpp
示例7: create_actuator_position_aliases
/**
* \brief: Creates an alias for all the position actuators.
**/
void hal_experimental::create_actuator_position_aliases()
{
LOG("[create_actuator_pos]","create actuator position initializing...");
AL::ALValue jointAliases;
jointAliases.arraySetSize(2);
jointAliases[0] = std::string("jointActuators");
jointAliases[1].arraySetSize(NumOfPositionActuatorIds);
for(int i = 0; i < NumOfPositionActuatorIds; ++i)
{
jointAliases[1][i] = std::string(actuatorNames[i]);
}
// Joints actuator list
// jointAliases[1].arraySetSize(25);
// jointAliases[1][HEAD_PITCH] = std::string("Device/SubDeviceList/HeadPitch/Position/Actuator/Value");
// jointAliases[1][HEAD_YAW] = std::string("Device/SubDeviceList/HeadYaw/Position/Actuator/Value");
// jointAliases[1][L_ANKLE_PITCH] = std::string("Device/SubDeviceList/LAnklePitch/Position/Actuator/Value");
// jointAliases[1][L_ANKLE_ROLL] = std::string("Device/SubDeviceList/LAnkleRoll/Position/Actuator/Value");
// jointAliases[1][L_ELBOW_ROLL] = std::string("Device/SubDeviceList/LElbowRoll/Position/Actuator/Value");
// jointAliases[1][L_ELBOW_YAW] = std::string("Device/SubDeviceList/LElbowYaw/Position/Actuator/Value");
// jointAliases[1][L_HAND] = std::string("Device/SubDeviceList/LHand/Position/Actuator/Value");
// jointAliases[1][L_HIP_PITCH] = std::string("Device/SubDeviceList/LHipPitch/Position/Actuator/Value");
// jointAliases[1][L_HIP_ROLL] = std::string("Device/SubDeviceList/LHipRoll/Position/Actuator/Value");
// jointAliases[1][L_HIP_YAW_PITCH] = std::string("Device/SubDeviceList/LHipYawPitch/Position/Actuator/Value");
// jointAliases[1][L_KNEE_PITCH] = std::string("Device/SubDeviceList/LKneePitch/Position/Actuator/Value");
// jointAliases[1][L_SHOULDER_PITCH] = std::string("Device/SubDeviceList/LShoulderPitch/Position/Actuator/Value");
// jointAliases[1][L_SHOULDER_ROLL] = std::string("Device/SubDeviceList/LShoulderRoll/Position/Actuator/Value");
// jointAliases[1][L_WRIST_YAW] = std::string("Device/SubDeviceList/LWristYaw/Position/Actuator/Value");
// jointAliases[1][R_ANKLE_PITCH] = std::string("Device/SubDeviceList/RAnklePitch/Position/Actuator/Value");
// jointAliases[1][R_ANKLE_ROLL] = std::string("Device/SubDeviceList/RAnkleRoll/Position/Actuator/Value");
// jointAliases[1][R_ELBOW_ROLL] = std::string("Device/SubDeviceList/RElbowRoll/Position/Actuator/Value");
// jointAliases[1][R_ELBOW_YAW] = std::string("Device/SubDeviceList/RElbowYaw/Position/Actuator/Value");
// jointAliases[1][R_HAND] = std::string("Device/SubDeviceList/RHand/Position/Actuator/Value");
// jointAliases[1][R_HIP_PITCH] = std::string("Device/SubDeviceList/RHipPitch/Position/Actuator/Value");
// jointAliases[1][R_HIP_ROLL] = std::string("Device/SubDeviceList/RHipRoll/Position/Actuator/Value");
// jointAliases[1][R_KNEE_PITCH] = std::string("Device/SubDeviceList/RKneePitch/Position/Actuator/Value");
// jointAliases[1][R_SHOULDER_PITCH] = std::string("Device/SubDeviceList/RShoulderPitch/Position/Actuator/Value");
// jointAliases[1][R_SHOULDER_ROLL] = std::string("Device/SubDeviceList/RShoulderRoll/Position/Actuator/Value");
// jointAliases[1][R_WRIST_YAW] = std::string("Device/SubDeviceList/RWristYaw/Position/Actuator/Value");
try
{
dcm_proxy->createAlias(jointAliases);
log_file << "position alias added to DCM!\n";
}
catch(const AL::ALError &e)
{
LOG("[create_actuaor_pos]","[ERROR]: Error creating actuator position aliases: " + e.toString());
}
LOG("[create_actuator_pos]","create actuator position initialized");
}
开发者ID:DU-RoboCup,项目名称:NAO-engine,代码行数:58,代码来源:hal_experimental.cpp
示例8: ControlSteps
void NaoSim::ControlSteps(const int &num)
{
for(int i=0; i<num; i++)
{
step();
fastMotionCommands->GetValues(commandValues);
//set angles
//rearrange the command
AL::ALValue dummyCommand;
dummyCommand.arraySetSize(26);
dummyCommand[HeadYaw] = commandValues[HEAD_YAW];
dummyCommand[HeadPitch] = commandValues[HEAD_PITCH];
dummyCommand[LShoulderPitch] = commandValues[L_SHOULDER_PITCH];
dummyCommand[LShoulderRoll] = commandValues[L_SHOULDER_ROLL];
dummyCommand[LElbowYaw] = commandValues[L_ELBOW_YAW];
dummyCommand[LElbowRoll] = commandValues[L_ELBOW_ROLL];
dummyCommand[LWristYaw] = commandValues[L_WRIST_YAW];
dummyCommand[LHand] = 0.0f;
dummyCommand[LHipYawPitch] = commandValues[HIP_YAW_PITCH];
dummyCommand[LHipRoll] = commandValues[L_HIP_ROLL];
dummyCommand[LHipPitch] = commandValues[L_HIP_PITCH];
dummyCommand[LKneePitch] = commandValues[L_KNEE_PITCH];
dummyCommand[LAnklePitch] = commandValues[L_ANKLE_PITCH];
dummyCommand[LAnkleRoll] = commandValues[L_ANKLE_ROLL];
dummyCommand[RHipYawPitch] = commandValues[HIP_YAW_PITCH];
dummyCommand[RHipRoll] = commandValues[R_HIP_ROLL];
dummyCommand[RHipPitch] = commandValues[R_HIP_PITCH];
dummyCommand[RKneePitch] = commandValues[R_KNEE_PITCH];
dummyCommand[RAnklePitch] = commandValues[R_ANKLE_PITCH];
dummyCommand[RAnkleRoll] = commandValues[R_ANKLE_ROLL];
dummyCommand[RShoulderPitch] = commandValues[R_SHOULDER_PITCH];
dummyCommand[RShoulderRoll] = commandValues[R_SHOULDER_ROLL];
dummyCommand[RElbowYaw] = commandValues[R_ELBOW_YAW];
dummyCommand[RElbowRoll] = commandValues[R_ELBOW_ROLL];
dummyCommand[RWristYaw] = commandValues[R_WRIST_YAW];
dummyCommand[RHand] = 0.0f;
motionProxy->setAngles("Body",dummyCommand, 1.0f);
}
}
开发者ID:kaihumuc,项目名称:nao_dhri_tum,代码行数:49,代码来源:naosim.cpp
示例9: initDCMAliases
/**
* Creates the appropriate aliases with the DCM
*/
void NaoEnactor::initDCMAliases(){
AL::ALValue positionCommandsAlias;
positionCommandsAlias.arraySetSize(3);
positionCommandsAlias[0] = string("AllActuatorPosition");
positionCommandsAlias[1].arraySetSize(Kinematics::NUM_JOINTS);
AL::ALValue hardCommandsAlias;
hardCommandsAlias.arraySetSize(3);
hardCommandsAlias[0] = string("AllActuatorHardness");
hardCommandsAlias[1].arraySetSize(Kinematics::NUM_JOINTS);
for (unsigned int i = 0; i<Kinematics::NUM_JOINTS; i++){
positionCommandsAlias[1][i] = jointsP[i];
hardCommandsAlias[1][i] = jointsH[i];
}
dcmProxy->createAlias(positionCommandsAlias);
dcmProxy->createAlias(hardCommandsAlias);
}
开发者ID:AmeenaK,项目名称:nbites,代码行数:22,代码来源:NaoEnactor.cpp
示例10: DcmInit
void KmeAction::DcmInit()
{
AL::ALValue jointAliasses;
vector<std::string> PosActuatorStrings = KDeviceLists::getPositionActuatorKeys();
jointAliasses.arraySetSize(2);
jointAliasses[0] = std::string("BodyWithoutHead"); // Alias for Body joint actuators without Head joins
jointAliasses[1].arraySetSize(20);
// Joints actuator list
for (int i = KDeviceLists::L_ARM; i < KDeviceLists::NUMOFJOINTS; i++)
{
jointAliasses[1][i - KDeviceLists::L_ARM] = PosActuatorStrings[i];
}
// Create alias
try
{
dcm->createAlias(jointAliasses);
}
catch (const AL::ALError &e)
{
throw ALERROR("KmeAction", "createKmeActuatorAlias()", "Error when creating Alias : " + e.toString());
}
// Create Commands
commands.arraySetSize(6);
commands[0] = string("BodyWithoutHead");
commands[1] = string("ClearAll"); // Erase all previous commands
commands[2] = string("time-separate");
commands[3] = 0;
commands[5].arraySetSize(20); // For all joints except head
for (unsigned int i = 0; i < commands[5].getSize(); i++)
{
commands[5][i].arraySetSize(actionTimes[0].getSize()); //num of poses
for (unsigned int j = 0; j < commands[5][i].getSize(); j++)
{
commands[5][i][j] = actionAngles[i + 2][j]; // actionAngles[joints][poses], commands[5][joints][poses]
// Logger::Instance().WriteMsg("KmeACTION", "commands " + _toString(commands[5][i][j]) , Logger::ExtraInfo);
}
}
}
开发者ID:kouretes,项目名称:Monas,代码行数:43,代码来源:KmeAction.cpp
示例11: set_all_actuator_stiffnesses
/**
* \brief: Set the stiffness value for every joint on the robot to a single value
**/
void hal_experimental::set_all_actuator_stiffnesses(const float &stiffnessVal)
{
log_file << "[set_all_stiffness]: << Setting All stiffness values to: " << stiffnessVal << std::endl;
AL::ALValue stiffnessCommands;
int DCMTime;
try
{
DCMTime = dcm_proxy->getTime(1000); //Time NAOQi has been running + 1000ms
}
catch(const AL::ALError &e)
{
LOG("[set_all_stiffness]","[ERROR] An error occured while setting stiffness value: " + e.toString());
}
stiffnessCommands.arraySetSize(3);
stiffnessCommands[0] = std::string("jointStiffness");
stiffnessCommands[1] = std::string("Merge");
stiffnessCommands[2].arraySetSize(1);
stiffnessCommands[2][0].arraySetSize(2);
stiffnessCommands[2][0][0] = stiffnessVal;
stiffnessCommands[2][0][1] = DCMTime;
log_file << "[set_all_stiffness] Alias set up..trying to set it now." << std::endl;
std::cout << "[set_all_stiffness] Alias set up..trying to set it now." << std::endl;
try
{
dcm_proxy->set(stiffnessCommands);
LOG("[set_all_stiffness]","Stiffness Values Set!");
}
catch(const AL::ALError &e)
{
LOG("[set_all_stiffness]","[ERROR] An error occured while setting stiffness value: " + e.toString());
}
log_file << "[set_all_stiffness]: Done Setting all stiffness values to: " << stiffnessVal << std::endl;
}
开发者ID:DU-RoboCup,项目名称:NAO-engine,代码行数:41,代码来源:hal_experimental.cpp
示例12: sendLightCommand
void NaoLights::sendLightCommand(AL::ALValue & command){
#ifdef DEBUG_NAOLIGHTS_COMMAND
std::cout << " NaoLights::sendCommand() " <<command.serializeToText()<< std::endl;
#endif
try{
command[4][0] = dcmProxy->getTime(0);
#ifdef LEDS_ENABLED
dcmProxy->setAlias(command);
#endif
} catch(AL::ALError& e) {
std::cout << "dcm value set error in sendLightCommand:"
<< e.toString() << std::endl;
}
}
开发者ID:WangHanbin,项目名称:nbites,代码行数:17,代码来源:NaoLights.cpp
示例13: fromALValue
void Variant::fromALValue(const AL::ALValue &val)
{
if (val.getType() == AL::ALValue::TypeInvalid)
{
// nothing to do
}
else if (val.getType() == AL::ALValue::TypeArray)
{
fType = VARRAY;
fValue = val;
}
else if (val.getType()==AL::ALValue::TypeInt)
{
fType = VINT;
fValue = val;
}
else if (val.getType()== AL::ALValue::TypeString)
{
fType == VSTRING;
fValue = val;
}
else if (val.getType()== AL::ALValue::TypeBinary)
{
fType == VCHARARRAY;
fValue = val;
}
else if (val.getType()== AL::ALValue::TypeBool)
{
fType == VBOOL;
fValue = val;
}
else if (val.getType()== AL::ALValue::TypeFloat)
{
fType == VFLOAT;
fValue = val;
}
else
{
printf("unknow type %d\n",val.getType());
}
}
开发者ID:Aharobot,项目名称:nao-leap-control,代码行数:42,代码来源:javaproxy.cpp
示例14: identifySpeaker
/** This method try to match a localized sound to an identified face, and update
* accordingly the corresponding 'human'.
*
* If none is found, a 'virtual' human called 'unknown_speaker' is created, with an
* approximate position.
*/
void InteractionMonitor::identifySpeaker(const AL::ALValue &sounds, map<string, Human>& humans) {
// according to the doc
// http://www.aldebaran-robotics.com/documentation/naoqi/audio/alaudiosourcelocalization.html
// only one sound may be localized at a given step.
if (sounds.getSize() == 0) return;
map<string, Human>::iterator it;
Human h = makeHuman("unknown_speaker", sounds[0][1][0], sounds[0][1][1]);
for (it=humans.begin(); it!=humans.end(); ++it)
{
if (distance(h, it->second) < MAX_DISTANCE_HUMAN_SOUND) {
it->second.speaking = true;
return;
}
}
humans[h.id] = h;
}
开发者ID:dsapandora,项目名称:nao_hri,代码行数:28,代码来源:interactions.cpp
示例15: GameCtrl
/**
* The constructor sets up the structures required to communicate with NAOqi.
* @param pBroker A NAOqi broker that allows accessing other NAOqi modules.
*/
GameCtrl(boost::shared_ptr<AL::ALBroker> pBroker)
: ALModule(pBroker, "GameCtrl"),
proxy(0),
memory(0),
udp(0),
teamNumber(0)
{
setModuleDescription("A module that provides packets from the GameController.");
assert(numOfButtons == sizeof(buttonNames) / sizeof(*buttonNames));
assert(numOfLEDs == sizeof(ledNames) / sizeof(*ledNames));
init();
try
{
memory = new AL::ALMemoryProxy(pBroker);
proxy = new AL::DCMProxy(pBroker);
AL::ALValue params;
AL::ALValue result;
params.arraySetSize(1);
params.arraySetSize(2);
params[0] = std::string("leds");
params[1].arraySetSize(numOfLEDs);
for(int i = 0; i < numOfLEDs; ++i)
params[1][i] = std::string(ledNames[i]);
result = proxy->createAlias(params);
assert(result == params);
ledRequest.arraySetSize(6);
ledRequest[0] = std::string("leds");
ledRequest[1] = std::string("ClearAll");
ledRequest[2] = std::string("time-separate");
ledRequest[3] = 0;
ledRequest[4].arraySetSize(1);
ledRequest[5].arraySetSize(numOfLEDs);
for(int i = 0; i < numOfLEDs; ++i)
ledRequest[5][i].arraySetSize(1);
for(int i = 0; i < numOfButtons; ++i)
buttons[i] = (float*) memory->getDataPtr(buttonNames[i]);
// If no color was set, set it to black (no LED).
// This actually has a race condition.
if(memory->getDataList("GameCtrl/teamColour").empty())
memory->insertData("GameCtrl/teamColour", TEAM_BLACK);
playerNumber = (int*) memory->getDataPtr("GameCtrl/playerNumber");
teamNumberPtr = (int*) memory->getDataPtr("GameCtrl/teamNumber");
defaultTeamColour = (int*) memory->getDataPtr("GameCtrl/teamColour");
// register "onPreProcess" and "onPostProcess" callbacks
theInstance = this;
proxy->getGenericProxy()->getModule()->atPreProcess(&onPreProcess);
proxy->getGenericProxy()->getModule()->atPostProcess(&onPostProcess);
udp = new UdpComm();
if(!udp->setBlocking(false) ||
!udp->setBroadcast(true) ||
!udp->bind("0.0.0.0", GAMECONTROLLER_DATA_PORT) ||
!udp->setLoopback(false))
{
fprintf(stderr, "libgamectrl: Could not open UDP port\n");
delete udp;
udp = 0;
// continue, because button interface will still work
}
publish();
}
catch(AL::ALError& e)
{
fprintf(stderr, "libgamectrl: %s\n", e.what());
close();
}
}
开发者ID:bhuman,项目名称:GameController,代码行数:82,代码来源:GameCtrl.cpp
示例16: UpdateList
void WifiManager::UpdateList()
{
// reload config
ParamEntry::Reload();
std::string serviceOff;
std::string serviceOn;
#if !WIFI_LOCAL_TEST
GetConnectionProxy().scan();
AL::ALValue serviceList = GetConnectionProxy().services();
// Log() << serviceList << std::endl;
#else // !LOCAL_TEST
AL::ALValue serviceList;
#endif // !LOCAL_TEST
_services.clear();
for (int i = 0; i < serviceList.getSize(); i++)
{
// Log() << "item[" << i << "]: " << serviceList[i] << std::endl;
std::map<std::string, std::string> details;
for (int j = 0; j < serviceList[i].getSize(); j++)
{
//Log() << " -- " << serviceList[i][j] << std::endl;
std::string name = serviceList[i][j][0];
std::string val;
if (serviceList[i][j][1].isString())
val = (std::string) serviceList[i][j][1];
else
val = serviceList[i][j][1].toString();
details[name] = val;
}
/*for (auto& item : details)
{
Log() << item.first << ": " << item.second << std::endl;
}*/
WifiService service;
service._id = details["ServiceId"];
service._name = details["Name"];
service._state = WifiStateUtils::StringToWifiState(details["State"]);
service.FindConfig();
_services.push_back(service);
if (service._knownConfig && service._knownConfig->_default && _selectedSSID.empty())
_selectedSSID = service._name;
}
#if WIFI_LOCAL_TEST
WifiService service;
service._id = "whatever";
service._name = "YETTI";
service._state = WifiStateUtils::StringToWifiState("Idle");
service.FindConfig();
_services.push_back(service);
if (service._knownConfig && service._knownConfig->_default && _selectedSSID.empty())
_selectedSSID = service._name;
#endif // WIFI_LOCAL_TEST
}
开发者ID:filipkofron,项目名称:NAOWifiManager,代码行数:61,代码来源:wifimanager.cpp
示例17: main
//.........这里部分代码省略.........
vpDisplayX d(I);
vpDisplay::setTitle(I, "ViSP viewer");
vpFaceTrackerOkao face_tracker(opt_ip,9559);
double dist = 0.0; // Distance between person detected from peoplePerception and faceDetection
// Set Visual Servoing:
vpServo task;
task.setServo(vpServo::EYEINHAND_L_cVe_eJe) ;
task.setInteractionMatrixType(vpServo::CURRENT, vpServo::PSEUDO_INVERSE);
// vpAdaptiveGain lambda_adapt;
// lambda_adapt.initStandard(1.6, 1.8, 15);
vpAdaptiveGain lambda_base(1.2, 1.0, 10); // 2.3, 0.7, 15
vpAdaptiveGain lambda_nobase(5, 2.9, 15); // 4, 0.5, 15
task.setLambda(lambda_base) ;
double Z = 0.9;
double Zd = 0.9;
bool stop_vxy = false;
bool move_base = true;
bool move_base_prev = true;
// Create the desired visual feature
vpFeaturePoint s;
vpFeaturePoint sd;
vpImagePoint ip(I.getHeight()/2, I.getWidth()/2);
// Create the current x visual feature
vpFeatureBuilder::create(s, cam, ip);
vpFeatureBuilder::create(sd, cam, ip);
// sd.buildFrom( I.getWidth()/2, I.getHeight()/2, Zd);
AL::ALValue limit_yaw = robot.getProxy()->getLimits("HeadYaw");
std::cout << limit_yaw[0][0] << " " << limit_yaw[0][1] << std::endl;
// Add the feature
task.addFeature(s, sd) ;
vpFeatureDepth s_Z, s_Zd;
s_Z.buildFrom(s.get_x(), s.get_y(), Z , 0); // log(Z/Z*) = 0 that's why the last parameter is 0
s_Zd.buildFrom(sd.get_x(), sd.get_y(), Zd , 0); // log(Z/Z*) = 0 that's why the last parameter is 0
// Add the feature
task.addFeature(s_Z, s_Zd);
// Jacobian 6x5 (vx,vy,wz,q_yaq,q_pitch)
vpMatrix tJe(6,5);
tJe[0][0]= 1;
tJe[1][1]= 1;
tJe[5][2]= 1;
vpMatrix eJe(6,5);
double servo_time_init = 0;
vpImagePoint head_cog_cur;
vpImagePoint head_cog_des(I.getHeight()/2, I.getWidth()/2);
vpColVector q_dot;
bool reinit_servo = true;
unsigned long loop_iter = 0;
std::vector<std::string> recognized_names;
std::map<std::string,unsigned int> detected_face_map;
bool detection_phase = true;
unsigned int f_count = 0;
开发者ID:lagadic,项目名称:romeo_tk,代码行数:67,代码来源:servo_face_detection_okao_head_translation_base_pepper.cpp
示例18: if
/**
* The constructor initializes the shared memory for communicating with bhuman.
* It also establishes a communication with NaoQi and prepares all data structures
* required for this communication.
* @param pBroker A NaoQi broker that allows accessing other NaoQi modules.
*/
BHuman(boost::shared_ptr<AL::ALBroker> pBroker) :
ALModule(pBroker, "BHuman"),
data((LBHData*) MAP_FAILED),
sem(SEM_FAILED),
proxy(0),
memory(0),
dcmTime(0),
lastReadingActuators(-1),
actuatorDrops(0),
frameDrops(allowedFrameDrops + 1),
state(sitting),
phase(0.f),
ledIndex(0),
rightEarLEDsChangedTime(0),
startPressedTime(0),
lastBHumanStartTime(0)
{
setModuleDescription("A module that provides basic ipc NaoQi DCM access using shared memory.");
fprintf(stderr, "libbhuman: Starting.\n");
assert(lbhNumOfSensorIds == sizeof(sensorNames) / sizeof(*sensorNames));
assert(lbhNumOfActuatorIds == sizeof(actuatorNames) / sizeof(*actuatorNames));
assert(lbhNumOfTeamInfoIds == sizeof(teamInfoNames) / sizeof(*teamInfoNames));
// create shared memory
memoryHandle = shm_open(LBH_MEM_NAME, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);
if(memoryHandle == -1)
perror("libbhuman: shm_open");
else if(ftruncate(memoryHandle, sizeof(LBHData)) == -1)
perror("libbhuman: ftruncate");
else
{
// map the shared memory
data = (LBHData*) mmap(NULL, sizeof(LBHData), PROT_READ | PROT_WRITE, MAP_SHARED, memoryHandle, 0);
if(data == MAP_FAILED)
perror("libbhuman: mmap");
else
{
memset(data, 0, sizeof(LBHData));
// open semaphore
sem = sem_open(LBH_SEM_NAME, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR, 0);
if(sem == SEM_FAILED)
perror("libbhuman: sem_open");
else
try
{
// get the robot name
memory = new AL::ALMemoryProxy(pBroker);
std::string robotName = (std::string) memory->getData("Device/DeviceList/ChestBoard/BodyNickName", 0);
strncpy(data->robotName, robotName.c_str(), sizeof(data->robotName));
// create "positionRequest" and "hardnessRequest" alias
proxy = new AL::DCMProxy(pBroker);
AL::ALValue params;
AL::ALValue result;
params.arraySetSize(1);
params.arraySetSize(2);
params[0] = std::string("positionActuators");
params[1].arraySetSize(lbhNumOfPositionActuatorIds);
for(int i = 0; i < lbhNumOfPositionActuatorIds; ++i)
params[1][i] = std::string(actuatorNames[i]);
result = proxy->createAlias(params);
params[0] = std::string("hardnessActuators");
params[1].arraySetSize(lbhNumOfHardnessActuatorIds);
for(int i = 0; i < lbhNumOfHardnessActuatorIds; ++i)
params[1][i] = std::string(actuatorNames[headYawHardnessActuator + i]);
result = proxy->createAlias(params);
params[0] = std::string("usRequest");
params[1].arraySetSize(1);
params[1][0] = std::string(actuatorNames[usActuator]);
result = proxy->createAlias(params);
// prepare positionRequest
positionRequest.arraySetSize(6);
positionRequest[0] = std::string("positionActuators");
positionRequest[1] = std::string("ClearAll");
positionRequest[2] = std::string("time-separate");
positionRequest[3] = 0;
positionRequest[4].arraySetSize(1);
positionRequest[5].arraySetSize(lbhNumOfPositionActuatorIds);
for(int i = 0; i < lbhNumOfPositionActuatorIds; ++i)
positionRequest[5][i].arraySetSize(1);
// prepare hardnessRequest
hardnessRequest.arraySetSize(6);
hardnessRequest[0] = std::string("hardnessActuators");
hardnessRequest[1] = std::string("ClearAll");
hardnessRequest[2] = std::string("time-separate");
//.........这里部分代码省略.........
开发者ID:Bigshan,项目名称:BHuman2013,代码行数:101,代码来源:bhuman.cpp
示例19: readSensors
/**
* The method reads all sensors. It also detects if the chest button was pressed
* for at least three seconds. In that case, it shuts down the robot.
*/
void readSensors()
{
// get new sensor values and copy them to the shared memory block
try
{
// copy sensor values into the shared memory block
int writingSensors = 0;
if(writingSensors == data->newestSensors)
++writingSensors;
if(writingSensors == data->readingSensors)
if(++writingSensors == data->newestSensors)
++writingSensors;
assert(writingSensors != data->newestSensors);
assert(writingSensors != data->readingSensors);
float* sensors = data->sensors[writingSensors];
for(int i = 0; i < lbhNumOfSensorIds; ++i)
sensors[i] = *sensorPtrs[i];
AL::ALValue value = memory->getData("GameCtrl/RoboCupGameControlData");
if(value.isBinary() && value.getSize() == sizeof(RoboCup::RoboCupGameControlData))
memcpy(&data->gameControlData[writingSensors], value, sizeof(RoboCup::RoboCupGameControlData));
data->newestSensors = writingSensors;
// detect shutdown request via chest-button
if(*sensorPtrs[chestButtonSensor] == 0.f)
startPressedTime = dcmTime;
else if(state != shuttingDown && startPressedTime && dcmTime - startPressedTime > 3000)
{
if(*sensorPtrs[rBumperRightSensor] != 0.f || *sensorPtrs[rBumperLeftSensor] != 0.f ||
*sensorPtrs[lBumperRightSensor] != 0.f || *sensorPtrs[lBumperLeftSensor] != 0.f)
(void) !system("( /home/nao/bin/bhumand stop && sudo shutdown -r now ) &");
else
(void) !system("( /home/nao/bin/bhumand stop && sudo shutdown -h now ) &");
state = preShuttingDown;
}
}
catch(AL::ALError& e)
{
fprintf(stderr, "libbhuman: %s\n", e.toString().c_str());
}
// raise the semaphore
if(sem != SEM_FAILED)
{
int sval;
if(sem_getvalue(sem, &sval) == 0)
{
if(sval < 1)
{
sem_post(sem);
frameDrops = 0;
}
else
{
if(frameDrops == 0)
fprintf(stderr, "libbhuman: dropped sensor data.\n");
++frameDrops;
}
}
}
}
开发者ID:Bigshan,项目名称:BHuman2013,代码行数:67,代码来源:bhuman.cpp
示例20: processFaces
void InteractionMonitor::processFaces(const AL::ALValue &faces, map<string, Human>& humans) {
try {
/** Check that there are faces effectively detected. */
if (faces.getSize() < 2 ) {
if (facesCount != 0) {
ROS_INFO("No face detected");
humanBuffer = NB_VIEWS_BEFORE_LEARNING;
facesCount = 0;
}
return;
}
/** Check the number of faces from the FaceInfo field, and check that it has
* changed from the last event.*/
if (faces[1].getSize() - 1 != facesCount) {
ROS_INFO("%d face(s) detected.", faces[1].getSize() - 1);
/** Update the current number of detected faces. */
facesCount = faces[1].getSize() - 1;
}
}
catch (const AL::ALError& e) {
ROS_ERROR(e.what());
}
for (int i = 0; i < facesCount; ++i) {
int naoqiFaceId = faces[1][i][1][0];
float confidence = faces[1][i][1][1];
// Face > [FaceInfo] > FaceInfo > ShapeInfo > yaw
float yaw = faces[1][i][0][1];
// Face > [FaceInfo] > FaceInfo > ShapeInfo > pitch
float pitch = faces[1][i][0][2];
ROS_INFO("Face (id: %d) confidence:%.2f yaw: %.2f, pitch: %.2f", nao
|
请发表评论