robotc 编程挑战 (7)

任务简介

本文为 virtual world challenge pack 中的基本运动(BASIC MOVEMENT)
中的 “orchard challenge”, 要求从指定地点出发, 沿果园小路一周, 到达指定出口.
如图 1 所示.


图 1
图 1 orchard challenge 界面图

此挑战使用的 robot 为 “Clawbot IQ”, 基本配置如图 2 所示.


图 2
图 2 robot 基本配置

程序

#pragma config(StandardModel, "Clawbot IQ")
//*!!Code automatically generated by 'ROBOTC' configuration wizard               !!*//

task main()
{
    const float distance_long = 130;
    const float distance_long_second = 110 - 20; // car's length is 20
    const float distance_short = 40;
    const float circle = PI * 6.4;
    const float long_rotation_count = distance_long / circle;
    const float short_rotation_count = distance_short / circle;
    const float long_second_rotation_count = distance_long_second / circle;

    // arm up
    //setMotorTarget(armMotor, 800, 50);

    // go forward for long road
    forward(long_rotation_count);

    // turn left 90 degrees
    setMotorSpeed(leftMotor, -50);
    setMotorSpeed(rightMotor, 50);
    sleep(900);
    stopMultipleMotors(rightMotor, leftMotor);

    // fo forward for short road
    forward(short_rotation_count);

    // turn left 90 degrees
    setMotorSpeed(leftMotor, -50);
    setMotorSpeed(rightMotor, 50);
    sleep(900);
    stopMultipleMotors(rightMotor, leftMotor);

    // go forward for long road
    forward(long_second_rotation_count);

    // turn right 120 degrees
    setMotorSpeed(leftMotor, 50);
    setMotorSpeed(rightMotor, -50);
    sleep(1200);
    stopMultipleMotors(rightMotor, leftMotor);

    // forward for long road
    forward(long_rotation_count-1);

    // turn left 85 degrees
    setMotorSpeed(leftMotor, -50);
    setMotorSpeed(rightMotor, 50);
    sleep(850);
    stopMultipleMotors(rightMotor, leftMotor);

    // forward for short road
    forward(short_rotation_count + .2);

        // turn left 90 degrees
    setMotorSpeed(leftMotor, -50);
    setMotorSpeed(rightMotor, 50);
    sleep(900);
    stopMultipleMotors(rightMotor, leftMotor);

    // forward for long road
    forward(long_rotation_count);
}

图 3 为运行中间截图.


图 3
图 3 运行中间截图

运行结果如图 4 所示.


这里写图片描述
图 4 运行结果

最后

因为此挑战为基本运动, 因此转向时不利用陀螺仪传感器.

猜你喜欢

转载自blog.csdn.net/ding_yingzi/article/details/80048010