本文整理汇总了C++中Motion::drive方法的典型用法代码示例。如果您正苦于以下问题:C++ Motion::drive方法的具体用法?C++ Motion::drive怎么用?C++ Motion::drive使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Motion
的用法示例。
在下文中一共展示了Motion::drive方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main() {
Debug *debug;
debug = new Debug("TACTIC_GOAL");
debug->send("Tactic for Goal starting...");
IRSensor *ir[4];
ir[0] = new IRSensor("BALL_SENSOR4", "BALL_SENSORS", 4);
ir[1] = new IRSensor("BALL_SENSOR5", "BALL_SENSORS", 5);
ir[2] = new IRSensor("BALL_SENSOR6", "BALL_SENSORS", 6);
ir[3] = new IRSensor("BALL_SENSOR7", "BALL_SENSORS", 7);
Motion* motion;
motion = new Motion;
//Main Loop
while(true) {
if (ir[0]->getValue()) motion->drive(Vector(60,0), 0);
else motion->drive(Vector(0,0), 5);
}
// // position
// navi.calculate();
// Vector position = navi.getPosition();
// debug->send("X: %f|Y: %f", position.getX(), position.getY());
//
//
// // correct angle to zero degree
// turnto_count ++;
// if (turnto_count > TURNTO_COUNT_TRESHOLD && abs(gyro.getVector().getAngle(true, false)) > ANGLE_TRESHOLD) {
// motion->turnto(Vector(0,1), 30, Motion::automatic);
// turnto_count = 0;
// }
// //else {
// Vector drive(0, 0);
// if(ir[0]->getValue() < 30 && ir[1]->getValue() < 30 && ir[2]->getValue() < 30 && ir[3]->getValue() < 30) { // no ball --> adjustment
// //motion->pbreak();
// motion->drive(Vector(0,0), 0);
// ///debug->send("Ball not available - adjustment");
//
// /** adjustment **/
// if (position.getX() < X_TARGET - X_TOLLERANCE) drive.setX(1);
// else if (position.getX() > X_MAX + X_TOLLERANCE) drive.setX(-1);
//
// if (position.getY() < Y_TARGET - Y_TOLLERANCE) drive.setY(1);
// else if (position.getY() > Y_TARGET + Y_TOLLERANCE) drive.setY(-1);
//
// /// if already adjusted and no ball -> drive left - right to seek the ball
//
//
// drive.setLength(ADJUST_SPEED);
// motion->drive(drive, 0);
// }
// else {
// if(position.getY() > Y_MIN && (ir[3]->getValue() > (ir[0]->getValue() + ir[1]->getValue() + ir[2]->getValue())/3)) { // schraeg nach hinten
// debug->send("Ball is behind");
// drive.setY(-1);
//
// // schraeg, jenachdem wo mehr platz
// if (position.getX() > FIELD_WIDTH / 2) drive.setX(-1);
// else drive.setX(1);
//
// drive.setLength(BALL_SPEED);
// }
// else if(position.getY() < Y_MAX && (ir[0]->getValue() <= ir[1]->getValue() && ir[2]->getValue() <= ir[1]->getValue())) {
// debug->send("Ball is in front");
// drive.set(0, 1);
// drive.setLength(BALL_SPEED);
// }
// else if(position.getX() < X_MAX && (ir[0]->getValue() > ir[1]->getValue())) { // drive right
// debug->send("Ball is front right");
// //drive.set(1.5, 1);
// drive.set(1, 0);
// drive.setLength(BALL_SPEED);
// }
// else if(position.getX() > X_MIN && (ir[2]->getValue() > ir[1]->getValue())) { // drive left
// debug->send("Ball is front left");
// //drive.set(-1.5, 1);
// drive.set(-1, 0);
// drive.setLength(BALL_SPEED);
// }
//
// //debug->send("Drive vector: %f | %f %d", drive.getX(), drive.getY(), ir[1]->getValue());
//
// ///debug->send("%d\t%d\t%d\t%d", ir[0]->getValue(), ir[1]->getValue(), ir[2]->getValue(), ir[3]->getValue());
//
// motion->drive(drive, 0);
//
// }
// //}
//
// usleep(30000);
// }
//
}