本文整理汇总了C++中ArRobot::moveTo方法的典型用法代码示例。如果您正苦于以下问题:C++ ArRobot::moveTo方法的具体用法?C++ ArRobot::moveTo怎么用?C++ ArRobot::moveTo使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ArRobot
的用法示例。
在下文中一共展示了ArRobot::moveTo方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main (int argc, char** argv) {
Aria::init();
Arnl::init();
ArRobot robot;
ArArgumentParser parser(&argc, argv);
parser.loadDefaultArguments();
ArRobotConnector robotConnector(&parser, &robot);
//ArAnalogGyro gyro = new
ArAnalogGyro gyro(&robot);
if (!robotConnector.connectRobot()) {
ArLog::log(ArLog::Terse, "Could not connect to the robot.");
if(parser.checkHelpAndWarnUnparsed())
{
// -help not given, just exit.
Aria::logOptions();
Aria::exit(1);
return 1;
}
}
ArSonarDevice sonarDev;
// robot.runAsync(true);
// ArMap map("office.map");
// set it up to ignore empty file names (otherwise if a configuration omits
// the map file, the whole configuration change will fail)
// map.setIgnoreEmptyFileName(true);
// ignore the case, so that if someone is using MobileEyes or
// MobilePlanner from Windows and changes the case on a map name,
// it will still work.
// map.setIgnoreCase(true);
robot.runAsync(true);
robot.enableMotors();
robot.moveTo(ArPose(0,0,0));
//robot.lock();
robot.comInt(ArCommands::ENABLE, 1);
robot.addRangeDevice(&sonarDev);
//robot.unlock();
// ArSonarLocalizationTask locTask(&robot, &sonarDev, &map);
<<<<<<< HEAD
示例2: main
//.........这里部分代码省略.........
// ArLog::addToConfig(Aria::getConfig());
// First open the server
if (!simpleOpener.open(&server, fileDir, 240))
{
if (simpleOpener.wasUserFileBad())
ArLog::log(ArLog::Normal, "Bad user file");
else
ArLog::log(ArLog::Normal, "Could not open server port");
exit(2);
}
// Connect the robot
if (!simpleConnector.connectRobot(&robot))
{
ArLog::log(ArLog::Normal, "Could not connect to robot... exiting");
Aria::exit(3);
}
//-----------------------------------------------
//**************************
// Set up a class that'll put the movement and gyro parameters into ArConfig
ArRobotConfig robotConfig(&robot);
robotConfig.addAnalogGyro(&gyro);
//*****************************
robot.enableMotors();
robot.clearDirectMotion();
// if we are connected to a simulator, reset it to its start position
robot.comInt(ArCommands::RESETSIMTOORIGIN, 1);
robot.moveTo(ArPose(0,0,0));
// Set up laser using connector (command line arguments, etc.)
simpleConnector.setupLaser(&sick);
// Start the robot thread.
robot.runAsync(true);
// Start the laser thread.
sick.runAsync();
// Try to connect the laser
if (!sick.blockingConnect())
ArLog::log(ArLog::Normal, "Warning: Couldn't connect to SICK laser, it won't be used");
else
ArLog::log(ArLog::Normal, "Connected to laser.");
//***************************************
// Add additional range devices to the robot and path planning task.
// IRs if the robot has them.
robot.lock();
// ArIRs irs;
// robot.addRangeDevice(&irs);
// pathTask.addRangeDevice(&irs, ArPathPlanningTask::CURRENT);
//******************************************
// Forbidden regions from the map
ArForbiddenRangeDevice forbidden(&arMap);
robot.addRangeDevice(&forbidden);
// This is the place to add a range device which will hold sensor data
示例3: main
int main (int argc, char** argv) {
Aria::init();
ArRobot robot;
ArSonarDevice sonar;
ArArgumentParser parser(&argc, argv);
parser.loadDefaultArguments();
ArRobotConnector robotConnector(&parser, &robot);
if (!robotConnector.connectRobot()) {
ArLog::log(ArLog::Terse, "Could not connect to the robot.");
if(parser.checkHelpAndWarnUnparsed())
{
Aria::logOptions();
Aria::exit(1);
return 1;
}
}
ArSonarDevice sonarDev;
ArPose* poseList = readPostitions("positions.txt");
robot.runAsync(true);
robot.enableMotors();
robot.moveTo(ArPose(0,0,0));
robot.comInt(ArCommands::ENABLE, 1);
robot.addRangeDevice(&sonarDev);
ArActionGoto gotoPoseAction("goto", ArPose(0, 0, 0), 200);
ArActionAvoidFront avoidFront("avoid front");
ArActionStallRecover stallRecover("stall recover");
robot.addAction(&gotoPoseAction, 50);
robot.addAction(&avoidFront, 60);
robot.moveTo(ArPose(0,0,0));
int length = ARRAY_SIZE(poseList);
cout<<"do dai"<<length;
ArServerBase server;
ArServerSimpleOpener simpleOpener(&parser);
char fileDir[1024];
ArUtil::addDirectories(fileDir, sizeof(fileDir), Aria::getDirectory(),
"ArNetworking/examples");
// first open the server up
if (!simpleOpener.open(&server, fileDir, 240))
{
if (simpleOpener.wasUserFileBad())
printf("Bad user/password/permissions file\n");
else
printf("Could not open server port\n");
exit(1);
}
ArServerInfoRobot serverInfo(&server, &robot);
GotoGoal gotoGoal(&robot, &sonar, &server, &serverInfo);
gotoGoal.init(argc, argv);
float angle = 0;
VideoCapture cap;
cap.open(0);
Rect trackWindow;
//var check find ball
bool checkObject = false;
int hsize = 16;
namedWindow( "threshold", 0 );
namedWindow( "trackbar", 0 );
namedWindow( "Histogram", 0 );
namedWindow( "main", 0 );
createTrackbar( "Vmin", "trackbar", &vmin, 256, 0 );
createTrackbar( "Vmax", "trackbar", &vmax, 256, 0 );
createTrackbar( "Smin", "trackbar", &smin, 256, 0 );
CascadeClassifier c;
c.load("cascade.xml");
Mat frame, hsv, hue, mask, hist, histimg = Mat::zeros(200, 320, CV_8UC3), backproj;
float vel = 0;
int i = 0;
while(1)
{
cap >> frame;
if( frame.empty() ){
cout<<"error camera"<<endl;
break;
}
frame.copyTo(image);
cvtColor(image, hsv, COLOR_BGR2HSV);
int _vmin = vmin, _vmax = vmax;
inRange(hsv, Scalar(0, smin, MIN(_vmin,_vmax)), Scalar(180, 256, MAX(_vmin, _vmax)), mask);
gotoPoseAction.setGoal(poseList[i]);
while (!gotoPoseAction.haveAchievedGoal())
{
ArLog::log(ArLog::Normal, "goal(%.2f, %0.2f) x = %.2f, y = %.2f", poseList[i].getX(), poseList[i].getY(), robot.getX(), robot.getY());
// if (!checkObject)
checkObject = detect(frame, c);
if (checkObject)
cout <<"Phat hien doi tuong"<<endl;
else
cout <<"Khong phat hien doi tuong"<<endl;
if (checkObject) {
if(trackObject(hsv, mask)) {
float d = distance();
if (d < 250) {
gotoGoal.move(-200);
} else if ( d >= 250 && d <= 300) {
gotoGoal.stop();
}
//.........这里部分代码省略.........
示例4: main
int main (int argc, char** argv) {
Aria::init();
Arnl::init();
ArRobot robot;
ArArgumentParser parser(&argc, argv);
parser.loadDefaultArguments();
ArRobotConnector robotConnector(&parser, &robot);
if (!robotConnector.connectRobot()) {
ArLog::log(ArLog::Terse, "Could not connect to the robot.");
if(parser.checkHelpAndWarnUnparsed())
{
// -help not given, just exit.
Aria::logOptions();
Aria::exit(1);
return 1;
}
}
ArSonarDevice sonarDev;
ArLog::log(ArLog::Normal, "OK");
char fileDir[1024];
ArUtil::addDirectories(fileDir, sizeof(fileDir), Aria::getDirectory(), "examples");
ArLog::log(ArLog::Normal, "Installation directory is: %s\nMaps directory is: %s\n", Aria::getDirectory(), fileDir);
// strcpy(fileDir, "columbia.map");
ArLog::log(ArLog::Normal, "file Maps directory is: %s\n",fileDir);
ArMap map(fileDir);
map.readFile("columbia.map");
// set it up to ignore empty file names (otherwise the parseFile
// on the config will fail)
map.setIgnoreEmptyFileName(true);
robot.addRangeDevice(&sonarDev);
// set home pose
robot.moveTo(ArPose(0,0,0));
ArPathPlanningTask pathPlan(&robot, &sonarDev, &map);
ArActionGoto gotoPoseAction("goto");
// gotoPoseAction.activate();
// pathPlan.getPathPlanActionGroup()->addAction(&gotoPoseAction, 50);
// pathPlan.getPathPlanAction()->activate();
ArForbiddenRangeDevice forbidden(&map);
robot.addRangeDevice(&forbidden);
pathPlan.addRangeDevice(&forbidden, ArPathPlanningTask::CURRENT);
// pathPlan.planAndSetupAction(ArPose(0, 0, 0));
// pathPlan.
/*
if (pathPlan.pathPlanToPose(ArPose(1000, 1000, 0), true, true))
ArLog::log(ArLog::Normal, "OK");
else
ArLog::log(ArLog::Normal, "FAILED");
*/
// create functor
ArGlobalFunctor1<ArPose> goalDone(&addGoalDone);// = new ArGlobalFunctor1(&addGoalDone);
ArGlobalFunctor1<ArPose> goalFail(&addGoalFailed);
ArGlobalFunctor1<ArPose> goalFinished(&addGoalFinished);
ArGlobalFunctor1<ArPose> goalInterrupted(&addGoalInterrupted);
// add functor
pathPlan.addGoalDoneCB(&goalDone);
pathPlan.addGoalFailedCB(&goalFail);
pathPlan.addGoalFinishedCB(&goalFinished);
pathPlan.addGoalInterruptedCB(&goalInterrupted);
robot.runAsync(true);
robot.enableMotors();
pathPlan.runAsync();
// ArPathPlanningTask::PathPlanningState state = pathPlan.getState();
// while(!pathPlan.pathPlanToPose(ArPose(1000, 1000, 0), true, true));
pathPlan.pathPlanToPose(ArPose(1000, 1000, 0), true, true);
ArPathPlanningTask::PathPlanningState state = pathPlan.getState();
char* s = "";
switch(state)
{
case ArPathPlanningTask::NOT_INITIALIZED: {s = "NOT_INITIALIZED"; break;}
case ArPathPlanningTask::PLANNING_PATH: { s = "PLANNING_PATH";break;}
case ArPathPlanningTask::MOVING_TO_GOAL:{s = "MOVING_TO_GOAL";break;}
case ArPathPlanningTask::REACHED_GOAL: {s = "REACHED_GOAL";break;}
case ArPathPlanningTask::FAILED_PLAN: { s = "FAILED_PLAN";break;}
case ArPathPlanningTask::FAILED_MOVE: { s="FAILED_MOVE";break;}
case ArPathPlanningTask::ABORTED_PATHPLAN:{s = "ABORTED_PATHPLAN";break;}
// case ArPathPlanningTask::INVALID:
// default:
// return "UNKNOWN";
}
ArLog::log(ArLog::Normal,s);
robot.waitForRunExit();
// pathPlan.
// char* text = new char[512];
// pathPlan.getStatusString(text, sizeof(text));
// printf("Planning status: %s.\n", text);
// while(pathPlan.pathPlanToPose(ArPose(1000, 1000, 0), true, true));
Aria::shutdown();
// Arnl::s;
Aria::exit(0);
}
示例5: drive
void Joydrive::drive(void)
{
int trans, rot;
ArPose pose;
ArPose rpose;
ArTransform transform;
ArRangeDevice *dev;
ArSensorReading *son;
if (!myRobot->isConnected())
{
printf("Lost connection to the robot, exiting\n");
exit(0);
}
printf("\rx %6.1f y %6.1f th %6.1f",
myRobot->getX(), myRobot->getY(), myRobot->getTh());
fflush(stdout);
if (myJoyHandler.haveJoystick() && myJoyHandler.getButton(1))
{
if (ArMath::fabs(myRobot->getVel()) < 10.0)
myRobot->comInt(ArCommands::ENABLE, 1);
myJoyHandler.getAdjusted(&rot, &trans);
myRobot->setVel(trans);
myRobot->setRotVel(-rot);
}
else
{
myRobot->setVel(0);
myRobot->setRotVel(0);
}
if (myJoyHandler.haveJoystick() && myJoyHandler.getButton(2) &&
time(NULL) - myLastPress > 1)
{
myLastPress = time(NULL);
printf("\n");
switch (myTest)
{
case 1:
printf("Moving back to the origin.\n");
pose.setPose(0, 0, 0);
myRobot->moveTo(pose);
break;
case 2:
printf("Moving over a meter.\n");
pose.setPose(myRobot->getX() + 1000, myRobot->getY(), 0);
myRobot->moveTo(pose);
break;
case 3:
printf("Doing a transform test....\n");
printf("\nOrigin should be transformed to the robots coords.\n");
transform = myRobot->getToGlobalTransform();
pose.setPose(0, 0, 0);
pose = transform.doTransform(pose);
rpose = myRobot->getPose();
printf("Pos: ");
pose.log();
printf("Robot: ");
rpose.log();
if (pose.findDistanceTo(rpose) < .1)
printf("Success\n");
else
printf("#### FAILURE\n");
printf("\nRobot coords should be transformed to the origin.\n");
transform = myRobot->getToLocalTransform();
pose = myRobot->getPose();
pose = transform.doTransform(pose);
rpose.setPose(0, 0, 0);
printf("Pos: ");
pose.log();
printf("Robot: ");
rpose.log();
if (pose.findDistanceTo(rpose) < .1)
printf("Success\n");
else
printf("#### FAILURE\n");
break;
case 4:
printf("Doing a tranform test...\n");
printf("A point 1 meter to the -x from the robot (in local coords) should be transformed into global coordinates.\n");
transform = myRobot->getToGlobalTransform();
pose.setPose(-1000, 0, 0);
pose = transform.doTransform(pose);
rpose = myRobot->getPose();
printf("Pos: ");
pose.log();
printf("Robot: ");
rpose.log();
if (ArMath::fabs(pose.findDistanceTo(rpose) - 1000.0) < .1)
printf("Probable Success\n");
else
printf("#### FAILURE\n");
break;
case 5:
printf("Doing a transform test on range devices..\n");
printf("Moving the robot +4 meters x and +4 meters y and seeing if the moveTo will move the sonar readings along with it.\n");
dev = myRobot->findRangeDevice("sonar");
if (dev == NULL)
//.........这里部分代码省略.........
示例6: main
int main( int argc, char **argv ){
// parse our args and make sure they were all accounted for
ArSimpleConnector connector(&argc, argv);
ArRobot robot;
ArSick sick;
double dist, angle = 0;
// Allow for esc to release robot
ArKeyHandler keyHandler;
Aria::setKeyHandler(&keyHandler);
robot.attachKeyHandler(&keyHandler);
printf("You may press escape to exit\n");
if( !connector.parseArgs() || argc > 1 ){
connector.logOptions();
exit(1);
}
// add the laser to the robot
robot.addRangeDevice(&sick);
// try to connect, if we fail exit
if( !connector.connectRobot(&robot) ){
printf("Could not connect to robot... exiting\n");
Aria::shutdown();
return 1;
}
// start the robot running, true so that if we lose connection the run stops
robot.runAsync(true);
// now set up the laser
connector.setupLaser(&sick);
sick.runAsync();
if( !sick.blockingConnect() ){
printf("Could not connect to SICK laser... exiting\n");
Aria::shutdown();
return 1;
}
robot.comInt(ArCommands::ENABLE, 1);
ArPose pose(0, -1000, 0);
robot.moveTo(pose);
ArPose prev_pose = robot.getPose();
double total_distance = 0;
printf("Connected\n");
ArUtil::sleep(1000);
PathLog log("../Data/reactive.dat");
int iterations_wo_movement = 0;
while( iterations_wo_movement < CONSECUTIVE_NON_MOTIONS ){
// Get updated measurement
sick.lockDevice();
dist = sick.currentReadingPolar(-90, 90, &angle);
sick.unlockDevice();
dist = (dist > 30000) ? 0 : dist - IDEAL_DISTANCE;
trackRobot(&robot, dist, angle);
ArUtil::sleep(500);
pose = robot.getPose();
log.write(pose);
total_distance += getDistance(prev_pose, pose);
prev_pose = pose;
// Determine if the robot is done tracking
isRobotTracking(&iterations_wo_movement, dist, angle);
}
ArUtil::sleep(1000);
log.close();
ofstream output;
output.open("../Data/reactive_dist.dat", ios::out | ios::trunc);
output << "Reactive 1 " << total_distance << endl;
output.close();
Aria::exit(0);
return 0;
}