任务简介
本文为 virtual world challenge pack 中的基本运动(BASIC MOVEMENT)
中的 “orchard challenge”, 要求从指定地点出发, 沿果园小路一周, 到达指定出口.
如图 1 所示.
图 1 orchard challenge 界面图
此挑战使用的 robot 为 “Clawbot IQ”, 基本配置如图 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 运行中间截图
扫描二维码关注公众号,回复:
67908 查看本文章
运行结果如图 4 所示.
图 4 运行结果
最后
因为此挑战为基本运动, 因此转向时不利用陀螺仪传感器.