智能驾驶#
初始化智能驱动器类#
使用以下构造函数创建智能传动系统:
smartdrive
构造函数会创建一个智能驱动对象。该对象可以执行传动系统的所有功能,并拥有额外的方法,包括使用惯性传感器或陀螺仪来实现更精准的转向。
范围 |
描述 |
---|---|
|
|
|
|
|
|
|
驱动轮的周长。默认值为 300 毫米。 |
|
智能传动系统的轮距。默认值为 320 毫米。 |
|
智能传动系统的轴距。默认值为 320 毫米。 |
|
对于 wheelTravel、trackWidth 和 wheelBase 指定的单位,有效的 distanceUnit。默认值为“mm”。 |
|
如果使用齿轮传动,则使用齿轮比来补偿驱动距离。 |
必须先创建 Motors 和/或 Motor Groups,然后才能使用 smartdrive 类构造函数创建对象。
// Create the Motors.
motor left_motor = motor(PORT1,false);
motor right_motor = motor(PORT2, true);
// Create the Inertial Sensor
inertial Inertial = inertial(PORT3);
// Construct a 2-Motor Smart Drivetrain "Smartdrive" with the
// smartdrive class.
smartdrive Smartdrive = smartdrive(left_motor, right_motor, Inertial, 259.34, 320, 40, mm, 1);
如果制作 4 电机智能传动系统,则需要先单独创建 电机,然后再将它们分组到 电机组中。
// Create the left Motors and group them under the
// motor_group "leftMotors".
motor leftMotorA = motor(PORT1, false);
motor leftMotorB = motor(PORT2, false);
motor_group leftMotors = motor_group(leftMotorA, leftMotorB);
// Create the right Motors and group them under the
// MotorGroup "rightMotors".
motor rightMotorA = motor(PORT3, true);
motor rightMotorB = motor(PORT4, true);
motor_group rightMotors = motor_group(rightMotorA, rightMotorB);
// Create the Inertial Sensor
inertial Inertial = inertial(PORT5);
// Construct a 4-Motor smartdrive "Smartdrive" with the
// smartdrive class.
smartdrive Smartdrive = smartdrive(leftMotors, rightMotors, Inertial, 259.34, 320, 40, mm, 1);
当引用 smartdrive 类方法时,此 Smartdrive
对象将在整个 API 文档的所有后续示例中使用。
类方法#
驾驶()#
这是一种非等待方法,允许下一个方法无延迟运行。
该方法通过以下方式调用:
drive(dir)
方法用于以 setDriveVelocity()
方法指定的默认速度永远沿指定方向驱动智能驱动器,直到使用另一种智能传动系统运动方法或项目停止。
参数 |
描述 |
---|---|
目录 |
有效的 directionType。 |
**返回:**无。
// Drive the smartdrive forward.
Smartdrive.drive(forward);
drive(dir, speed, units)
方法用于以指定的速度永远驱动智能传动系统沿指定方向行进,直到使用另一种智能传动系统运动方法或项目停止。
参数 |
描述 |
---|---|
目录 |
有效的 directionType。 |
速度 |
智能驱动器移动的速度。 |
单位 |
有效的 velocityUnit。 |
**返回:**无。
// Drive the smartdrive forward at 100 rpm.
Smartdrive.drive(forward, 100, rpm);
驱动()#
根据是否使用 wait
参数,这可以是 等待 或 非等待 方法。
该方法通过以下方式调用:
driveFor(distance, units, waitForCompletion)
方法用于以默认速度驱动智能传动系统行驶指定距离。
参数 |
描述 |
---|---|
距离 |
智能驱动器移动的距离。 |
单位 |
有效的 distanceUnit。默认值为“英寸”。 |
等待完成 |
确定命令是否阻止后续命令( |
**返回:**一个布尔值,表示智能驱动器是否已达到目标距离。
// Drive the Smart Drivetrain for 10 inches.
Smartdrive.driveFor(10, inches);
driveFor(dir, distance, units, waitForCompletion)
方法用于以默认速度沿指定方向驱动智能传动系统行驶指定距离。
参数 |
描述 |
---|---|
目录 |
有效的 directionType。 |
距离 |
智能传动系统移动的距离。 |
单位 |
有效的 distanceUnit。默认值为“英寸”。 |
等待完成 |
确定命令是否阻止后续命令( |
**返回:**一个布尔值,表示智能传动系统是否已达到目标距离。
// Drive the Smart Drivetrain forward for 10 inches.
Smartdrive.driveFor(forward, 10, inches);
driveFor(distance, units, speed, units_v, waitForCompletion)
方法用于以默认速度驱动智能传动系统行驶指定距离。
参数 |
描述 |
---|---|
距离 |
智能传动系统移动的距离。 |
单位 |
有效的 distanceUnit。默认值为“英寸”。 |
速度 |
智能传动系统的移动速度。如果未提供,则使用 |
单位 |
有效的 velocityUnit。默认值为 |
等待完成 |
确定命令是否阻止后续命令( |
**返回:**一个布尔值,表示智能传动系统是否已达到目标距离。
// Drive the Smart Drivetrain for 10 inches at 100 rpm.
Smartdrive.driveFor(10, inches, 100, rpm);
driveFor(dir, distance, units, speed, units_v, waitForCompletion)
方法用于以默认速度驱动智能传动系统行驶指定距离。
参数 |
描述 |
---|---|
目录 |
有效的 directionType。 |
距离 |
智能传动系统移动的距离。 |
单位 |
有效的 distanceUnit。默认值为“英寸”。 |
速度 |
智能传动系统的移动速度。如果未提供,则使用 |
单位 |
有效的 velocityUnit。默认值为 |
等待完成 |
确定命令是否阻止后续命令( |
**返回:**一个布尔值,表示智能传动系统是否已达到目标距离。
// Drive the Smart Drivetrain forward for 10 inches at 100 rpm.
Smartdrive.driveFor(forward, 10, inches, 100, rpm);
转动()#
这是一种非等待方法,允许下一个方法无延迟运行。
该方法通过以下方式调用:
turn(dir)
方法用于以 setTurnVelocity()
方法指定的默认速度将机器人转向指定方向,直到使用另一种智能传动系统运动方法或项目停止。
参数 |
描述 |
---|---|
目录 |
有效的 directionType。 |
**返回:**无。
// Turn the Smart Drivetrain right.
Smartdrive.turn(right);
turn(dir, speed, units)
方法用于以指定的速度将机器人转向指定的方向,直到使用另一种智能传动系统运动方法,或者项目停止。
参数 |
描述 |
---|---|
目录 |
有效的 directionType。 |
速度 |
智能传动系统的转弯速度。如果未提供,则使用 |
单位 |
有效的 velocityUnit。默认值为 |
**返回:**无。
// Turn the Smart Drivetrain right at 100 rpm.
Smartdrive.turn(right, 100, rpm);
turnFor()#
根据是否使用 wait
参数,这可以是 等待 或 非等待 方法。
smartdrive 类中的 turnFor()
方法与 drivetrain 类中的不同,因为使用惯性传感器或陀螺仪传感器(而不是内部电机编码器)来实现更精确的转弯。
该方法通过以下方式调用:
turnFor(angle, units, waitForCompletion)
方法用于以 setTurnVelocity()
方法指定的默认速度将智能传动系统转动特定角度。
参数 |
描述 |
---|---|
角度 |
智能传动系统转动的角度。 |
单位 |
有效的 rotationUnit。默认值为“度”。 |
等待完成 |
确定命令是否阻止后续命令( |
**返回:**一个布尔值,表示智能传动系统是否已转到目标角度。
// Turn the Smart Drivetrain for 90 degrees.
Smartdrive.turnFor(90, degrees);
turnFor(dir, angle, units, waitForCompletion)
方法用于以 setTurnVelocity()
方法指定的默认速度将智能传动系统转动特定角度。
参数 |
描述 |
---|---|
目录 |
有效的 directionType。 |
角度 |
智能传动系统转动的角度。 |
单位 |
有效的 rotationUnit。默认值为“度”。 |
等待完成 |
确定命令是否阻止后续命令( |
**返回:**一个布尔值,表示智能传动系统是否已转到目标角度。
// Turn the Smart Drivetrain right for 90 degrees.
Smartdrive.turnFor(right, 90, degrees);
turnFor(angle, units, speed, units_v, waitForCompletion)
方法用于以指定的速度将智能传动系统转动特定角度。
参数 |
描述 |
---|---|
角度 |
智能传动系统转动的角度。 |
单位 |
有效的 rotationUnit。默认值为“度”。 |
速度 |
智能传动系统的转弯速度。如果未提供,则使用 |
单位 |
有效的 velocityUnit。默认值为 |
等待完成 |
确定命令是否阻止后续命令( |
**返回:**一个布尔值,表示智能传动系统是否已转到目标角度。
// Turn the Smart Drivetrain for 90 degrees at 100 rpm.
Smartdrive.turnFor(90, degrees, 100, rpm);
turnFor(dir, angle, units, speed, units_v, waitForCompletion)
方法用于以指定的速度将智能传动系统转动特定角度。
参数 |
描述 |
---|---|
目录 |
有效的 directionType。 |
角度 |
智能传动系统转动的角度。 |
单位 |
有效的 rotationUnit。默认值为“度”。 |
速度 |
智能传动系统的转弯速度。如果未提供,则使用 |
单位 |
有效的 velocityUnit。默认值为 |
等待完成 |
确定命令是否阻止后续命令( |
**返回:**一个布尔值,表示智能传动系统是否已转到目标角度。
// Turn the Smart Drivetrain right for 90 degrees at 100 rpm.
Smartdrive.turnFor(right, 90, degrees, 100, rpm);
turnToHeading()#
根据是否使用 wait
参数,这可以是 等待 或 非等待 方法。
该方法通过以下方式调用:
turnToHeading(angle, units, waitForCompletion)
方法将智能传动系统转向特定航向。
参数 |
描述 |
---|---|
角度 |
转向的航向角。 |
单位 |
有效的 rotationUnit。 |
等待完成 |
确定命令是否阻止后续命令( |
**返回:**一个布尔值,表示智能传动系统何时达到目标转弯值。
// Turn to heading 180 degrees.
Smartdrive.turnToHeading(180, degrees);
turnToHeading(angle, units, speed, units_v, waitForCompletion)
方法将智能传动系统转向特定航向。
参数 |
描述 |
---|---|
角度 |
转向的航向角。 |
单位 |
有效的 rotationUnit。 |
速度 |
使用此速度旋转智能传动系统的电机。 |
单位 |
有效的 velocityUnit。 |
等待完成 |
确定命令是否阻止后续命令( |
**返回:**一个布尔值,表示智能传动系统何时达到目标转弯值。
// Turn to heading 180 degrees at 100 rpm.
Smartdrive.turnToHeading(180, degrees, 100, rpm);
旋转()#
根据是否使用 wait
参数,这可以是 等待 或 非等待 方法。
该方法通过以下方式调用:
turnToRotation(angle, units, waitForCompletion)
方法将智能传动系统转到特定的旋转。
参数 |
描述 |
---|---|
角度 |
要旋转的旋转角度。 |
单位 |
有效的 rotationUnit。 |
等待完成 |
确定命令是否阻止后续命令( |
**返回:**一个布尔值,表示智能传动系统何时达到目标转弯值。
// Turn to rotation 180 degrees.
Smartdrive.turnToRotation(180, degrees);
turnToRotation(angle, units, speed, units_v, waitForCompletion)
方法将智能传动系统转到特定的旋转。
参数 |
描述 |
---|---|
角度 |
要旋转的旋转角度。 |
单位 |
有效的 rotationUnit。 |
速度 |
使用此速度旋转智能传动系统的电机。 |
单位 |
有效的 velocityUnit。 |
等待完成 |
确定命令是否阻止后续命令( |
**返回:**一个布尔值,表示智能传动系统何时达到目标转弯值。
// Turn to rotation 180 degrees at 100 rpm.
Smartdrive.turnToRotation(180, degrees, 100, rpm);
停止()#
这是一个非等待命令,允许下一个命令无延迟运行。
该方法通过以下方式调用:
stop()
命令用于停止智能传动系统,将智能传动系统的速度设置为 0,并配置当前的停止模式。默认制动类型为“滑行”,除非之前使用 setStopping()
命令进行了更改。
**返回:**无。
// Spin Smartdrive for 2.5 seconds.
Smartdrive.spin(forward);
wait(2.5 seconds);
// Stop Smartdrive.
Smartdrive.stop();
stop(brakeType mode)
命令用于使用特定制动类型停止智能传动系统。
参数 |
描述 |
---|---|
模式 |
有效的 brakeType。 |
**返回:**无。
// Spin Smartdrive for 2.5 seconds.
Smartdrive.spin(forward);
wait(2.5 seconds);
// Stop Smartdrive using the hold Brake Type.
Smartdrive.stop(hold);
正在移动()#
如果任何智能传动系统电机已开启并旋转至特定目标,则 isMoving()
命令将返回。
**返回:**如果任何智能传动系统电机已打开并旋转至目标,则返回 true
。如果它们已旋转至目标,则返回 false
。
完成()#
如果所有智能传动系统电机都已旋转至特定目标,则 isDone()
命令将返回。
**返回:**如果所有智能传动系统电机都已完成旋转至目标,则返回“true”。如果任何智能传动系统电机已开启并旋转至目标,则返回“false”。
正在转弯()#
如果 turnToHeading()
、turnToRotation()
或 turnFor()
方法当前正在运行,则 isTurning()
方法返回。
**返回:**如果 turnToHeading()
、turnToRotation()
或 turnFor()
方法当前正在运行,则返回 true
。如果没有运行,则返回 false
。
设置驱动速度()#
setDriveVelocity(velocity, units)
方法用于设置智能驱动器的默认速度。此速度设置会影响所有后续驱动方法,除非这些方法中提供了具体的速度。
参数 |
描述 |
---|---|
速度 |
为 Smartdrive 设置的默认新速度。 |
单位 |
有效的 velocityUnit 或 |
**返回:**无。
// Set the Smart Drivetrain to drive at a velocity of 200 rpm.
Smartdrive.setDriveVelocity(200, rpm);
设置转弯速度()#
setTurnVelocity(velocity, units)
方法用于设置智能驱动中转弯操作的默认速度。此设置指定智能驱动系统执行转弯方法的速度,除非该方法中设置了特定速度。
参数 |
描述 |
---|---|
速度 |
设置为转弯操作默认的新速度。 |
单位 |
有效的 velocityUnit 或 |
**返回:**无。
// Set the Smart Drivetrain to turn at a velocity of 200 RPM.
Smartdrive.setTurnVelocity(200, rpm);
设置停止()#
setStopping(mode)
方法用于设置智能驱动器上所有电机的停止模式。此设置决定了电机在收到停止方法或速度设置为零时的行为。
参数 |
描述 |
---|---|
模式 |
有效的 brakeType。 |
**返回:**无。
// Set the stopping mode to BRAKE.
Smartdrive.setStopping(brake);
设置齿轮比()#
setGearRatio(mode)
方法用于设置 Smartdrive 上所有电机的齿轮比。
参数 |
描述 |
---|---|
模式 |
有效的 gearSetting。 |
**返回:**无。
设置转弯阈值()#
setTurnThreshold(t)
方法设置智能驱动器的转弯阈值。该阈值用于判断转弯是否完成。如果阈值过大,转弯将不准确。如果阈值过小,转弯可能无法完成。
参数 |
描述 |
---|---|
吨 |
新的转弯阈值(以“度”为单位)。智能传动系统的默认值为 1 度。 |
**返回:**无。
设置转弯常数()#
setTurnConstant(kp)
方法设置智能驱动的转弯常数。智能驱动系统在转弯时使用一个简单的 P 控制器。这个常数,通常称为 kp,是将角度误差转换为电机速度的方程中使用的增益。
参数 |
描述 |
---|---|
千帕 |
新的转弯常数,范围为 0.1 - 4.0。默认值为 1.0。 |
**返回:**无。
设置反转方向()#
setTurnDirectionReverse(value)
方法设置正航向的预期转弯方向。
参数 |
描述 |
---|---|
价值 |
将反转标志设置为“true”或“false”的布尔值。 |
**返回:**无。
设置标题()#
setHeading(value, units)
方法设置智能传动系统惯性传感器或陀螺仪传感器的航向。
参数 |
描述 |
---|---|
价值 |
用于标题的新值。 |
单位 |
有效的 rotationUnit。 |
**返回:**无。
// set the value of heading to 180 degrees.
Smartdrive.setHeading(180, degrees);
设置旋转()#
setRotation()
方法设置智能传动系统惯性传感器或陀螺仪传感器的旋转。
参数 |
描述 |
---|---|
价值 |
用于旋转的新值。 |
单位 |
有效的 rotationUnit。 |
**返回:**无。
// Set the value of rotation to 180 degrees.
Smartdrive.setRotation(180, degrees);
设置超时()#
Smartdrive.setTimeout(time, units)
方法用于设置智能驱动器上所有电机的超时值。此设置决定了如果电机尚未完成运动,智能传动系统将在超时前尝试执行 driveFor
或 turnFor
方法多长时间。
参数 |
描述 |
---|---|
暂停 |
为智能传动系统操作设置的默认超时时间。 |
单位 |
有效的 timeUnit 类型。默认值为 |
**返回:**无。
// Set the timeout for the Smart Drivetrain to 10 seconds.
Smartdrive.setTimeout(10, seconds);
标题()#
heading(units)
方法返回智能驱动器的当前航向。
参数 |
描述 |
---|---|
单位 |
有效的 rotationUnit 类型。默认值为 |
**返回:**以指定单位表示智能传动系统当前航向的双精度值。
// Get the current heading for the Smartdrive.
double value = Smartdrive.heading();
旋转()#
rotation(units)
方法返回智能驱动器的当前旋转。
参数 |
描述 |
---|---|
单位 |
有效的 rotationUnit。默认值为“度”。 |
**返回:**以指定单位表示智能传动系统的当前旋转的双精度值。
// Get the current rotation for the Smartdrive.
double value = Smartdrive.rotation();
速度()#
velocity(units)
方法返回智能传动系统的平均速度。
参数 |
描述 |
---|---|
单位 |
有效的 velocityUnit 或 |
**返回:**以指定单位表示智能传动系统速度的双精度值。
当前的()#
current()
方法返回智能传动系统的平均电流。
参数 |
描述 |
---|---|
单位 |
电流的唯一有效单位是“安培”或“百分比”。 |
**返回:**以指定单位表示智能传动系统电流的双精度值。
电压()#
volt(units)
方法返回智能传动系统的平均速度。
参数 |
描述 |
---|---|
单位 |
有效的 voltUnit。默认值为 |
**返回:**以指定单位表示智能传动系统电压的双精度值。
力量()#
power(units)
方法返回智能传动系统的平均功率。
参数 |
描述 |
---|---|
单位 |
功率的唯一有效单位是“瓦特”。 |
**返回:**以指定单位表示智能传动系统功率的双精度值。
扭矩()#
torque()
方法返回智能传动系统的平均扭矩。
参数 |
描述 |
---|---|
单位 |
有效的 torqueUnit。默认值为 |
**返回:**以指定单位表示智能传动系统扭矩的双精度值。
效率()#
efficiency()
方法返回智能传动系统的平均效率。
参数 |
描述 |
---|---|
单位 |
效率的唯一有效单位是“百分比”。 |
**返回:**以提供的单位表示智能传动系统效率的双精度值。
温度()#
temp()
方法返回智能传动系统的平均温度。
参数 |
描述 |
---|---|
单位 |
温度的唯一有效单位是“百分比”。 |
**返回:**以提供的单位表示智能传动系统温度的双精度值。