智能驾驶#

初始化智能驱动器类#

使用以下构造函数创建智能传动系统:

smartdrive 构造函数会创建一个智能驱动对象。该对象可以执行传动系统的所有功能,并拥有额外的方法,包括使用惯性传感器或陀螺仪来实现更精准的转向。

范围

描述

lm

左侧 电机电机组 的名称。

rm

右侧 电机电机组 的名称。

guido

用于检测机器人角度或航向的设备名称。可以是任意 惯性传感器陀螺仪传感器

wheelTravel

驱动轮的周长。默认值为 300 毫米。

trackWidth

智能传动系统的轮距。默认值为 320 毫米。

轮距

智能传动系统的轴距。默认值为 320 毫米。

单位

对于 wheelTravel、trackWidth 和 wheelBase 指定的单位,有效的 distanceUnit。默认值为“mm”。

externalGearRatio

如果使用齿轮传动,则使用齿轮比来补偿驱动距离。

必须先创建 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。默认值为“英寸”。

等待完成

确定命令是否阻止后续命令(wait=true)或允许立即执行(wait=false)。如果未指定,则 wait 参数的默认值为 wait=true

**返回:**一个布尔值,表示智能驱动器是否已达到目标距离。

// Drive the Smart Drivetrain for 10 inches.
Smartdrive.driveFor(10, inches);

driveFor(dir, distance, units, waitForCompletion) 方法用于以默认速度沿指定方向驱动智能传动系统行驶指定距离。

参数

描述

目录

有效的 directionType

距离

智能传动系统移动的距离。

单位

有效的 distanceUnit。默认值为“英寸”。

等待完成

确定命令是否阻止后续命令(wait=true)或允许立即执行(wait=false)。如果未指定,则 wait 参数的默认值为 wait=true

**返回:**一个布尔值,表示智能传动系统是否已达到目标距离。

// Drive the Smart Drivetrain forward for 10 inches.
Smartdrive.driveFor(forward, 10, inches);

driveFor(distance, units, speed, units_v, waitForCompletion) 方法用于以默认速度驱动智能传动系统行驶指定距离。

参数

描述

距离

智能传动系统移动的距离。

单位

有效的 distanceUnit。默认值为“英寸”。

速度

智能传动系统的移动速度。如果未提供,则使用 setDriveVelocity() 方法设置的默认速度。

单位

有效的 velocityUnit。默认值为 rpm

等待完成

确定命令是否阻止后续命令(wait=true)或允许立即执行(wait=false)。如果未指定,则 wait 参数的默认值为 wait=true

**返回:**一个布尔值,表示智能传动系统是否已达到目标距离。

// 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。默认值为“英寸”。

速度

智能传动系统的移动速度。如果未提供,则使用 setDriveVelocity() 方法设置的默认速度。

单位

有效的 velocityUnit。默认值为 rpm

等待完成

确定命令是否阻止后续命令(wait=true)或允许立即执行(wait=false)。如果未指定,则 wait 参数的默认值为 wait=true

**返回:**一个布尔值,表示智能传动系统是否已达到目标距离。

// 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

速度

智能传动系统的转弯速度。如果未提供,则使用 setTurnVelocity() 方法设置的默认速度。

单位

有效的 velocityUnit。默认值为 rpm

**返回:**无。

// Turn the Smart Drivetrain right at 100 rpm.
Smartdrive.turn(right, 100, rpm);

turnFor()#

根据是否使用 wait 参数,这可以是 等待非等待 方法。

smartdrive 类中的 turnFor() 方法与 drivetrain 类中的不同,因为使用惯性传感器或陀螺仪传感器(而不是内部电机编码器)来实现更精确的转弯。

该方法通过以下方式调用:

turnFor(angle, units, waitForCompletion) 方法用于以 setTurnVelocity() 方法指定的默认速度将智能传动系统转动特定角度。

参数

描述

角度

智能传动系统转动的角度。

单位

有效的 rotationUnit。默认值为“度”。

等待完成

确定命令是否阻止后续命令(wait=true)或允许立即执行(wait=false)。如果未指定,则 wait 参数的默认值为 wait=true

**返回:**一个布尔值,表示智能传动系统是否已转到目标角度。

// Turn the Smart Drivetrain for 90 degrees.
Smartdrive.turnFor(90, degrees);

turnFor(dir, angle, units, waitForCompletion) 方法用于以 setTurnVelocity() 方法指定的默认速度将智能传动系统转动特定角度。

参数

描述

目录

有效的 directionType

角度

智能传动系统转动的角度。

单位

有效的 rotationUnit。默认值为“度”。

等待完成

确定命令是否阻止后续命令(wait=true)或允许立即执行(wait=false)。如果未指定,则 wait 参数的默认值为 wait=true

**返回:**一个布尔值,表示智能传动系统是否已转到目标角度。

// Turn the Smart Drivetrain right for 90 degrees.
Smartdrive.turnFor(right, 90, degrees);

turnFor(angle, units, speed, units_v, waitForCompletion) 方法用于以指定的速度将智能传动系统转动特定角度。

参数

描述

角度

智能传动系统转动的角度。

单位

有效的 rotationUnit。默认值为“度”。

速度

智能传动系统的转弯速度。如果未提供,则使用 setTurnVelocity() 方法设置的默认速度。

单位

有效的 velocityUnit。默认值为 rpm

等待完成

确定命令是否阻止后续命令(wait=true)或允许立即执行(wait=false)。如果未指定,则 wait 参数的默认值为 wait=true

**返回:**一个布尔值,表示智能传动系统是否已转到目标角度。

// 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。默认值为“度”。

速度

智能传动系统的转弯速度。如果未提供,则使用 setTurnVelocity() 方法设置的默认速度。

单位

有效的 velocityUnit。默认值为 rpm

等待完成

确定命令是否阻止后续命令(wait=true)或允许立即执行(wait=false)。如果未指定,则 wait 参数的默认值为 wait=true

**返回:**一个布尔值,表示智能传动系统是否已转到目标角度。

// 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

等待完成

确定命令是否阻止后续命令(wait=true)或允许立即执行(wait=false)。如果未指定,则 wait 参数的默认值为 wait=true

**返回:**一个布尔值,表示智能传动系统何时达到目标转弯值。

// Turn to heading 180 degrees.
Smartdrive.turnToHeading(180, degrees);

turnToHeading(angle, units, speed, units_v, waitForCompletion) 方法将智能传动系统转向特定航向。

参数

描述

角度

转向的航向角。

单位

有效的 rotationUnit

速度

使用此速度旋转智能传动系统的电机。

单位

有效的 velocityUnit

等待完成

确定命令是否阻止后续命令(wait=true)或允许立即执行(wait=false)。如果未指定,则 wait 参数的默认值为 wait=true

**返回:**一个布尔值,表示智能传动系统何时达到目标转弯值。

// Turn to heading 180 degrees at 100 rpm.
Smartdrive.turnToHeading(180, degrees, 100, rpm);

旋转()#

根据是否使用 wait 参数,这可以是 等待非等待 方法。

该方法通过以下方式调用:

turnToRotation(angle, units, waitForCompletion) 方法将智能传动系统转到特定的旋转。

参数

描述

角度

要旋转的旋转角度。

单位

有效的 rotationUnit

等待完成

确定命令是否阻止后续命令(wait=true)或允许立即执行(wait=false)。如果未指定,则 wait 参数的默认值为 wait=true

**返回:**一个布尔值,表示智能传动系统何时达到目标转弯值。

// Turn to rotation 180 degrees.
Smartdrive.turnToRotation(180, degrees);

turnToRotation(angle, units, speed, units_v, waitForCompletion) 方法将智能传动系统转到特定的旋转。

参数

描述

角度

要旋转的旋转角度。

单位

有效的 rotationUnit

速度

使用此速度旋转智能传动系统的电机。

单位

有效的 velocityUnit

等待完成

确定命令是否阻止后续命令(wait=true)或允许立即执行(wait=false)。如果未指定,则 wait 参数的默认值为 wait=true

**返回:**一个布尔值,表示智能传动系统何时达到目标转弯值。

// 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 设置的默认新速度。

单位

有效的 velocityUnitpercent。默认值为 rpm

**返回:**无。

// Set the Smart Drivetrain to drive at a velocity of 200 rpm.
Smartdrive.setDriveVelocity(200, rpm);

设置转弯速度()#

setTurnVelocity(velocity, units) 方法用于设置智能驱动中转弯操作的默认速度。此设置指定智能驱动系统执行转弯方法的速度,除非该方法中设置了特定速度。

参数

描述

速度

设置为转弯操作默认的新速度。

单位

有效的 velocityUnitpercent。默认值为 rpm

**返回:**无。

// 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) 方法用于设置智能驱动器上所有电机的超时值。此设置决定了如果电机尚未完成运动,智能传动系统将在超时前尝试执行 driveForturnFor 方法多长时间。

参数

描述

暂停

为智能传动系统操作设置的默认超时时间。

单位

有效的 timeUnit 类型。默认值为 msec

**返回:**无。

// Set the timeout for the Smart Drivetrain to 10 seconds.
Smartdrive.setTimeout(10, seconds);

标题()#

heading(units) 方法返回智能驱动器的当前航向。

参数

描述

单位

有效的 rotationUnit 类型。默认值为 degrees

**返回:**以指定单位表示智能传动系统当前航向的双精度值。

// 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) 方法返回智能传动系统的平均速度。

参数

描述

单位

有效的 velocityUnitpercent。默认值为 rpm

**返回:**以指定单位表示智能传动系统速度的双精度值。

当前的()#

current() 方法返回智能传动系统的平均电流。

参数

描述

单位

电流的唯一有效单位是“安培”或“百分比”。

**返回:**以指定单位表示智能传动系统电流的双精度值。

电压()#

volt(units) 方法返回智能传动系统的平均速度。

参数

描述

单位

有效的 voltUnit。默认值为 volt

**返回:**以指定单位表示智能传动系统电压的双精度值。

力量()#

power(units) 方法返回智能传动系统的平均功率。

参数

描述

单位

功率的唯一有效单位是“瓦特”。

**返回:**以指定单位表示智能传动系统功率的双精度值。

扭矩()#

torque() 方法返回智能传动系统的平均扭矩。

参数

描述

单位

有效的 torqueUnit。默认值为 Nm

**返回:**以指定单位表示智能传动系统扭矩的双精度值。

效率()#

efficiency() 方法返回智能传动系统的平均效率。

参数

描述

单位

效率的唯一有效单位是“百分比”。

**返回:**以提供的单位表示智能传动系统效率的双精度值。

温度()#

temp() 方法返回智能传动系统的平均温度。

参数

描述

单位

温度的唯一有效单位是“百分比”。

**返回:**以提供的单位表示智能传动系统温度的双精度值。