本文整理汇总了C++中Agent::getName方法的典型用法代码示例。如果您正苦于以下问题:C++ Agent::getName方法的具体用法?C++ Agent::getName怎么用?C++ Agent::getName使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Agent
的用法示例。
在下文中一共展示了Agent::getName方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: remove_dead_agents
void remove_dead_agents(void) {
for(agent_iter iter=agents.begin(); iter != agents.end() ; iter++) {
if(is_dead(*iter)) {
(*iter)->kill(0);
printf("kill %s\n", (*iter)->getName().c_str());
}
}
int status; pid_t dead_pid;
while ((dead_pid = waitpid(-1, &status, WNOHANG))>0) {
agent_iter iter = find_if(agents.begin(), agents.end(), bind2nd(pid_equal<Agent*>(), dead_pid));
if(iter != agents.end()) {
Agent * deadAgent = *iter;
stringstream msg;
msg<<deadAgent->getName();
switch(deadAgent->attr.status) {
case EATEN: msg<<" has been eaten"; break;
default: msg<<" has died"; break;
}
add_announcement(msg.str().c_str(), deadAgent->get_location(), 25);
delete deadAgent;
agents.erase(iter);
}
}
}
示例2: main
int main(int argc, char **argv)
{
qpid::types::Variant::Map options;
qpid::types::Variant::Map callOptions;
qpid::messaging::Connection connection;
string sessionOptions;
ConsoleEvent event;
Agent agent;
mh_log_init("sysconfig-console", LOG_TRACE, TRUE);
mh_add_option('U', required_argument, "uri", "URI of configuration", &options, NULL);
mh_add_option('d', no_argument, "daemon", "run as a daemon", NULL, mh_should_daemonize);
qpid::types::Variant::Map amqp_options = mh_parse_options("sysconfig-console", argc, argv, options);
callOptions["uri"] = options["uri"];
mh_log_init("sysconfig-console", mh_log_level, mh_log_level > LOG_INFO);
connection = mh_connect(options, amqp_options, TRUE);
connection.open();
ConsoleSession session(connection, sessionOptions);
// Only filter connecting agents under matahariproject.org vendor and Config product
session.setAgentFilter("[and, [eq, _vendor, [quote, 'matahariproject.org']], [eq, _product, [quote, 'Sysconfig']]]");
session.open();
while(session.getAgentCount() == 0) {
g_usleep(1000);
}
while (true) {
if(session.nextEvent(event)) {
switch(event.getType()) {
case CONSOLE_AGENT_ADD:
{
agent = event.getAgent();
DataAddr agent_event_addr("Sysconfig", agent.getName(), 0);
ConsoleEvent result(agent.callMethod("run_uri",
callOptions,
agent_event_addr));
}
break;
default:
break;
}
}
}
return 0;
}
示例3: positionsCallback
void SimpleDeploymentDummy::positionsCallback(const turtlebot_deployment::PoseWithName::ConstPtr& posePtr)
{
ROS_DEBUG("SimpleDeployment: Positions received, finding robot in database");
// Search for agent in the catalog using functor that compares the name to an input string
std::vector<Agent>::iterator it = std::find_if(agent_catalog_.begin(), agent_catalog_.end(), MatchString(posePtr->name) );
// If the agent is already in the catalog, update the position and recalculate the distance.
if ( it != agent_catalog_.end() ) {
ROS_DEBUG("SimpleDeployment: Robot found, updating pose and distance");
it->setPose(posePtr->pose);
it->setDistance(distance(this_agent_.getPose(),posePtr->pose));
}
// else (the agent is not yet in the catalog), create an Agent object and push it into the catalog vector
else {
ROS_DEBUG("SimpleDeployment: Robot not found in database");
if ( posePtr->name != this_agent_.getName() ) {
ROS_DEBUG("SimpleDeployment: Robot is not me. Adding it to database");
// This initializes an object called "agent" with id = 1, the pose of the incoming message, and the distance from this agent to the agent that published the message
Agent agent( 1, *posePtr, distance(this_agent_.getPose(), posePtr->pose) );
agent_catalog_.push_back( agent );
}
else {
ROS_ERROR("SimpleDeployment: Robot is me! Updating position and adding to database");
this_agent_.setPose(posePtr->pose);
got_me_ = true;
// This initializes an object called "agent" with id = 0, the pose of the incoming message, and a distance of 0.0;
Agent agent( 0, *posePtr, 0.0 );
agent_catalog_.push_back( agent );
}
}
// Sort agent list on distance (using functor)
std::sort( agent_catalog_.begin(), agent_catalog_.end(), SortAgentsOnDistance() );
ROS_DEBUG("SimpleDeployment: Positions processed");
}
示例4: handleAction
void SelectMenu::handleAction(const int actionId, void *ctx, const int modKeys)
{
if (actionId == teamButId_) {
tab_ = TAB_TEAM;
showItemList();
} else if (actionId == modsButId_) {
tab_ = TAB_MODS;
showItemList();
} else if (actionId == equipButId_) {
tab_ = TAB_EQUIPS;
showItemList();
} else if (actionId == pTeamLBox_->getId()) {
// get the selected agent from the team listbox
std::pair<int, void *> * pPair = static_cast<std::pair<int, void *> *> (ctx);
Agent *pNewAgent = static_cast<Agent *> (pPair->second);
bool found = false;
// check if selected agent is already part of the mission squad
for (size_t j = 0; j < AgentManager::kMaxSlot; j++) {
if (g_Session.agents().squadMember(j) == pNewAgent) {
found = true;
break;
}
}
// Agent was not part of the squad
if (!found) {
// adds him to the squad
g_Session.agents().setSquadMember(cur_agent_, pNewAgent);
// Update current agent name
getStatic(txtAgentId_)->setTextFormated("#SELECT_SUBTITLE", pNewAgent->getName());
pTeamLBox_->setSquadLine(cur_agent_, pPair->first);
updateAcceptEnabled();
// redraw agent display
addDirtyRect(158, 110, 340, 260);
// redraw agent buttons
dirtyAgentSelector();
}
} else if (actionId == pModsLBox_->getId()) {
std::pair<int, void *> * pPair = static_cast<std::pair<int, void *> *> (ctx);
pSelectedMod_ = static_cast<Mod *> (pPair->second);
showModWeaponPanel();
} else if (actionId == pWeaponsLBox_->getId()) {
std::pair<int, void *> * pPair = static_cast<std::pair<int, void *> *> (ctx);
pSelectedWeap_ = static_cast<Weapon *> (pPair->second);
showModWeaponPanel();
} else if (actionId == cancelButId_) {
showItemList();
} else if (actionId == reloadButId_) {
Agent *selected = g_Session.agents().squadMember(cur_agent_);
WeaponInstance *wi = selected->weapon(selectedWInstId_ - 1);
int rldCost = (pSelectedWeap_->ammo()
- wi->ammoRemaining()) * pSelectedWeap_->ammoCost();
if (g_Session.getMoney() >= rldCost) {
g_Session.setMoney(g_Session.getMoney() - rldCost);
wi->setAmmoRemaining(pSelectedWeap_->ammo());
getOption(reloadButId_)->setVisible(false);
getStatic(moneyTxtId_)->setTextFormated("%d", g_Session.getMoney());
}
} else if (actionId == purchaseButId_) {
// Buying weapon
if (pSelectedWeap_) {
if (sel_all_) {
for (int n = 0; n < 4; n++) {
Agent *selected = g_Session.agents().squadMember(n);
if (selected && selected->numWeapons() < 8
&& g_Session.getMoney() >= pSelectedWeap_->cost()) {
g_Session.setMoney(g_Session.getMoney() - pSelectedWeap_->cost());
selected->addWeapon(pSelectedWeap_->createInstance());
getStatic(moneyTxtId_)->setTextFormated("%d", g_Session.getMoney());
}
}
} else {
Agent *selected = g_Session.agents().squadMember(cur_agent_);
if (selected && selected->numWeapons() < 8
&& g_Session.getMoney() >= pSelectedWeap_->cost()) {
g_Session.setMoney(g_Session.getMoney() - pSelectedWeap_->cost());
selected->addWeapon(pSelectedWeap_->createInstance());
getStatic(moneyTxtId_)->setTextFormated("%d", g_Session.getMoney());
}
}
needRendering();
} else if (pSelectedMod_) {
if (sel_all_) {
for (int n = 0; n < 4; n++) {
Agent *selected = g_Session.agents().squadMember(n);
if (selected && selected->canHaveMod(pSelectedMod_)
&& g_Session.getMoney() >= pSelectedMod_->cost()) {
selected->addMod(pSelectedMod_);
g_Session.setMoney(g_Session.getMoney() - pSelectedMod_->cost());
getStatic(moneyTxtId_)->setTextFormated("%d", g_Session.getMoney());
}
}
} else {
Agent *selected = g_Session.agents().squadMember(cur_agent_);
if (selected && selected->canHaveMod(pSelectedMod_)
&& g_Session.getMoney() >= pSelectedMod_->cost()) {
//.........这里部分代码省略.........
示例5: operator
bool operator()(const Agent& obj) const
{
return obj.getName() == s_;
}
示例6: publish
// In this function, the Voronoi cell is calculated, integrated. A new goal IS NOT published, as this node should only be used with integration of teleop.
void SimpleDeploymentDummy::publish()
{
if ( got_map_ && got_me_ ) {
double factor = map_.info.resolution / resolution_; // zoom factor for openCV visualization
ROS_DEBUG("SimpleDeployment: Map received, determining Voronoi cells");
removeOldAgents();
// Create variables for x-values, y-values and the maximum and minimum of these, needed for VoronoiDiagramGenerator
float xvalues[agent_catalog_.size()];
float yvalues[agent_catalog_.size()];
double xmin = 0.0, xmax = 0.0, ymin = 0.0, ymax = 0.0;
cv::Point seedPt = cv::Point(1,1);
// Create empty image with the size of the map to draw points and voronoi diagram in
cv::Mat vorImg = cv::Mat::zeros(map_.info.height*factor,map_.info.width*factor,CV_8UC1);
for ( uint i = 0; i < agent_catalog_.size(); i++ ) {
geometry_msgs::Pose pose = agent_catalog_[i].getPose();
// Keep track of x and y values
xvalues[i] = pose.position.x;
yvalues[i] = pose.position.y;
// Keep track of min and max x
if ( pose.position.x < xmin ) {
xmin = pose.position.x;
} else if ( pose.position.x > xmax ) {
xmax = pose.position.x;
}
// Keep track of min and max y
if ( pose.position.y < ymin ) {
ymin = pose.position.y;
} else if ( pose.position.y > ymax ) {
ymax = pose.position.y;
}
// Store point as seed point if it represents this agent
if ( agent_catalog_[i].getName() == this_agent_.getName() ){
// Scale positions in metric system column and row numbers in image
int c = ( pose.position.x - map_.info.origin.position.x ) * factor / map_.info.resolution;
int r = map_.info.height * factor - ( pose.position.y - map_.info.origin.position.y ) * factor / map_.info.resolution;
cv::Point pt = cv::Point(c,r);
seedPt = pt;
}
// Draw point on image
// cv::circle( vorImg, pt, 3, WHITE, -1, 8);
}
ROS_DEBUG("SimpleDeployment: creating a VDG object and generating Voronoi diagram");
// Construct a VoronoiDiagramGenerator (VoronoiDiagramGenerator.h)
VoronoiDiagramGenerator VDG;
xmin = map_.info.origin.position.x; xmax = map_.info.width * map_.info.resolution + map_.info.origin.position.x;
ymin = map_.info.origin.position.y; ymax = map_.info.height * map_.info.resolution + map_.info.origin.position.y;
// Generate the Voronoi diagram using the collected x and y values, the number of points, and the min and max x and y values
VDG.generateVoronoi(xvalues,yvalues,agent_catalog_.size(),float(xmin),float(xmax),float(ymin),float(ymax));
float x1,y1,x2,y2;
ROS_DEBUG("SimpleDeployment: collecting line segments from the VDG object");
// Collect the generated line segments from the VDG object
while(VDG.getNext(x1,y1,x2,y2))
{
// Scale the line segment end-point coordinates to column and row numbers in image
int c1 = ( x1 - map_.info.origin.position.x ) * factor / map_.info.resolution;
int r1 = vorImg.rows - ( y1 - map_.info.origin.position.y ) * factor / map_.info.resolution;
int c2 = ( x2 - map_.info.origin.position.x ) * factor / map_.info.resolution;
int r2 = vorImg.rows - ( y2 - map_.info.origin.position.y ) * factor / map_.info.resolution;
// Draw line segment
cv::Point pt1 = cv::Point(c1,r1),
pt2 = cv::Point(c2,r2);
cv::line(vorImg,pt1,pt2,WHITE);
}
ROS_DEBUG("SimpleDeployment: drawing map occupancygrid and resizing to voronoi image size");
// Create cv image from map data and resize it to the same size as voronoi image
cv::Mat mapImg = drawMap();
cv::Mat viewImg(vorImg.size(),CV_8UC1);
cv::resize(mapImg, viewImg, vorImg.size(), 0.0, 0.0, cv::INTER_NEAREST );
// Add images together to make the total image
cv::Mat totalImg(vorImg.size(),CV_8UC1);
cv::bitwise_or(viewImg,vorImg,totalImg);
cv::Mat celImg = cv::Mat::zeros(vorImg.rows+2, vorImg.cols+2, CV_8UC1);
cv::Scalar newVal = cv::Scalar(1), upDiff = cv::Scalar(100), loDiff = cv::Scalar(256);
cv::Rect rect;
cv::floodFill(totalImg,celImg,seedPt,newVal,&rect,loDiff,upDiff,4 + (255 << 8) + cv::FLOODFILL_MASK_ONLY);
// Compute the center of mass of the Voronoi cell
cv::Moments m = moments(celImg, false);
cv::Point centroid(m.m10/m.m00, m.m01/m.m00);
//.........这里部分代码省略.........