Інерційний датчик#
Вступ#
Клас inertial використовується для керування та доступу до даних з інерційного датчика V5, підключеного до смарт-порту.
Інерційний датчик V5 вимірює рух і повороти робота. Гіроскоп вимірює повороти, такі як напрямок, обертання, швидкість гіроскопа та орієнтація. Акселерометр вимірює зміни в русі, такі як прискорення або уповільнення вздовж осей x, y та z.
Конструктори класів#
inertial(
int32_t index,
turnType dir = turnType::right );
Деструктор класів#
Знищує інерційний об’єкт inertial та звільняє пов’язані з ним ресурси.
~inertial();
Параметри#
Параметр |
Тип |
Опис |
|---|---|---|
|
|
Розумний порт, до якого підключено інерціальний датчик, записується як |
|
|
Необов’язково. Напрямок, що повертає позитивні значення:
|
Приклади#
// Create an inertial instance for the V5 Inertial Sensor
inertial myInertial = inertial(
PORT1, // Smart Port 1
right); // dir
Функції-члени#
Клас inertial включає такі функції-члени:
heading— Повертає напрямок, у якому спрямований датчик.rotation— Повертає, на скільки повернувся датчик.setHeading— Встановлює поточний напрямок датчика на нове значення.setRotation— Встановлює поточне обертання датчика на нове значення обертання.calibrate— Калібрує інерціальний датчик.resetHeading— Скидає поточний напрямок датчика до 0 градусів.resetRotation— Скидає поточне обертання датчика до 0 градусів.isCalibrating— Повертає, чи калібрується інерційний датчик.changed— Реєструє функцію зворотного виклику, яка виконується при зміні заголовка.installed— Повертає, чи встановлено інерційний датчик.acceleration— Повертає швидкість прискорення або сповільнення датчика на вибраній осі.gyroRate— Повертає швидкість обертання датчика на вибраній осі.orientation— Повертає кут крену, тангажу або рискання інерціального датчика.collision— Реєструє функцію зворотного виклику, яка виконується при виявленні колізії.setTurnType— Встановлює, який напрямок повороту повертає додатні значення.getTurnType— Повертає, який напрямок повороту дає позитивні значення.
Перед викликом будь-яких функцій-членів inertial необхідно створити екземпляр inertial , як показано нижче:
/* This constructor is required when using VS Code.
Inertial Sensor configuration is generated automatically
in VEXcode using the Device Menu. Replace the values
as needed. */
// Create an inertial instance for the V5 Inertial Sensor connected to Port 1.
inertial myInertial = inertial(PORT1);
heading#
Курс – це напрямок, у якому спрямований датчик, виміряний у градусах від 0 до 359,99. Ця функція повертає поточний курс датчика.
Початковий курс становить 0 градусів. Якщо датчик повертається за межі 359,99 градусів, курс повертається до 0 градусів.
Available Functionsdouble heading( rotationUnits units = degrees );
Параметр |
Тип |
Опис |
|---|---|---|
|
|
Одиниця вимірювання курсу:
|
Повертає значення double , що представляє поточний напрямок датчика у вказаних одиницях вимірювання.
Значення заголовка знаходиться в діапазоні від 0 до 359,99 градусів. Використовуйте
rotation, щоб отримати доступ до значення безперервного обертання.
// Turn, then show the current heading
Drivetrain.turnFor(right, 450, degrees);
Brain.Screen.print("%f", myInertial.heading(degrees));
rotation#
Повертає поточне значення обертання інерційного датчика.
Обертання – це кут повороту датчика. На відміну від напрямку, обертання може збільшуватися понад 359,99 градусів або зменшуватися нижче 0 градусів. Наприклад, два повні повороти праворуч повертають поворот на 720 градусів. Поворот на один повний поворот ліворуч від 0 градусів повертає поворот на -360 градусів.
Available Functionsdouble rotation( rotationUnits units = degrees );
Параметр |
Тип |
Опис |
|---|---|---|
|
|
Одиниця вимірювання обертання:
|
Повертає значення double , що представляє поточне обертання у вказаних одиницях вимірювання.
Значення обертання є безперервним і не переноситься між 0 та 359,99 градусами. Використовуйте
headingдля доступу до значення перенесеного заголовка.
// Turn, then show the current rotation
Drivetrain.turnFor(right, 450, degrees);
Brain.Screen.print("%f", myInertial.rotation(degrees));
setHeading#
Курс – це напрямок, у якому спрямований датчик, виміряний у градусах від 0 до 359,99. Ця функція змінює поточний курс інерціального датчика на нове значення курсу.
Наприклад, якщо датчик повернувся праворуч, встановлення курсу на 0 градусів робить це положення праворуч новим 0 градусами. Тоді датчик може відстежувати інші курси на основі цього нового напрямку.
Available Functionsvoid setHeading( double value, rotationUnits units );
Параметр |
Тип |
Опис |
|---|---|---|
|
|
Значення курсу в градусах, яке потрібно встановити для датчика. Це може бути значення від 0 до 359,99. |
|
|
Блок вимірювання курсу:
|
Ця функція не повертає значення.
Examples// Turn the robot around
myInertial.setHeading(180, degrees);
Drivetrain.turnToHeading(0, degrees);
setRotation#
Обертання – це кут повороту датчика, виміряний у градусах. На відміну від напрямку, обертання може збільшуватися понад 359,99 градусів або зменшуватися нижче 0 градусів. На початку проекту значення обертання встановлюється на 0 градусів. Ця функція змінює поточне обертання інерційного датчика на нове значення.
Наприклад, якщо датчик зробив два повних обертів праворуч, значення його обертання становитиме 720 градусів. Встановлення обертання на 0 градусів скине це обертання з 720 до 0 градусів. Потім датчик зможе відстежувати обертання на основі цього нового значення.
Available Functionsvoid setRotation( double value, rotationUnits units );
Параметр |
Тип |
Опис |
|---|---|---|
|
|
Значення повороту в градусах, яке потрібно встановити для датчика. Це може бути ціле або десяткове число. |
|
|
Одиниця обертання:
|
Ця функція не повертає значення.
Examples// Turn the robot around
myInertial.setRotation(-180, degrees);
Drivetrain.turnToRotation(0, degrees);
calibrate#
Калібрує інерційний датчик.
Калібрування допомагає датчику правильно вимірювати повороти. Тримайте датчик нерухомо під час калібрування. Якщо датчик рухається під час калібрування, значення курсу, обертання, швидкості гіроскопа та орієнтації можуть вимірюватися неправильно.
Available Functionsvoid calibrate( );
Ця функція не приймає жодних параметрів.
Return ValuesЦя функція не повертає значення.
NotesДатчик повинен залишатися нерухомим під час калібрування.
Використайте
isCalibrating, щоб визначити, коли калібрування завершено.
resetHeading#
Скидає поточний напрямок інерціального датчика до 0 градусів.
Після використання цієї функції поточний напрямок датчика стає новим курсом 0 градусів.
Available Functionsvoid resetHeading();
Ця функція не приймає жодних параметрів.
Return ValuesЦя функція не повертає значення.
resetRotation#
Скидає поточне обертання інерційного датчика до 0 градусів.
Після використання цієї функції датчик відстежує майбутні повороти, виходячи з нового значення повороту 0 градусів.
Available Functionsvoid resetRotation();
Ця функція не приймає жодних параметрів.
Return ValuesЦя функція не повертає значення.
isCalibrating#
Повертає, чи виконується наразі калібрування інерційного датчика.
Available Functionsbool isCalibrating();
Ця функція не приймає жодних параметрів.
Return ValuesПовертає логічне значення, яке вказує, чи калібрується інерційний датчик:
-
true— The sensor is currently calibrating. -
false— The sensor is not currently calibrating.
changed#
Реєструє функцію зворотного виклику, яка виконується, коли змінюється значення курсу інерціального датчика.
Available Functionsvoid changed( void (* callback)(void) );
Параметр |
Тип |
Опис |
|---|---|---|
|
|
Вказівник на функцію, яка буде викликана при зміні значення заголовка. Функція не повинна приймати параметрів та повертати |
Ця функція не повертає значення.
ExamplesВизначити функцію зворотного виклику (поза
int main())// Display the heading when the Inertial Sensor's heading value changes. void onHeadingChanged() { Brain.Screen.clearScreen(); Brain.Screen.setCursor(1, 1); Brain.Screen.print("Heading: %.2f", myInertial.heading()); }Зареєструйте зворотний виклик всередині
int main()int main() { // Run onHeadingChanged when the Inertial Sensor's heading value changes. myInertial.changed(onHeadingChanged); }
installed#
Повертає інформацію про те, чи встановлено та підключено інерційний датчик.
Available Functionsbool installed();
Ця функція не приймає жодних параметрів.
Return ValuesПовертає логічне значення, яке вказує, чи встановлено та підключено інерційний датчик:
-
true— The sensor is connected and responding. -
false— The sensor is not connected or not detected.
acceleration#
Прискорення – це швидкість прискорення або сповільнення датчика. Ця функція повертає прискорення інерційного датчика на вибраній осі, від -4,0 G до 4,0 G.
G – це одиниця вимірювання прискорення. 1 G – це прискорення, яке ви відчуваєте від сили тяжіння, сидячи нерухомо. Значення може бути додатним або від’ємним залежно від напрямку прискорення на вибраній осі.
double acceleration( axisType axis );
Параметр |
Тип |
Опис |
|---|---|---|
|
|
Вісь для вимірювання прискорення:
|
Повертає значення double , що представляє прискорення вздовж заданої осі в G (гравітаційних одиницях).
Значення прискорення повідомляються в одиницях
G.
gyroRate#
Швидкість гіроскопа – це швидкість обертання інерційного датчика. Ця функція повертає поточну швидкість обертання інерційного датчика на вибраній осі.
Значення може бути додатним або від’ємним залежно від напрямку обертання датчика на цій осі.
Available Functionsdouble gyroRate( axisType axis, velocityUnits units );
Параметр |
Тип |
Опис |
|---|---|---|
|
|
Вісь, з якої повертається швидкість гіроскопа:
|
|
|
Одиниця вимірювання швидкості гіроскопа:
|
Повертає значення типу double , що представляє поточну швидкість обертання вздовж зазначеної осі у вибраних одиницях вимірювання.
// Display the rate of change of rotation while turning in dps
Drivetrain.turn(right);
wait(1, seconds);
Brain.Screen.print(myInertial.gyroRate(zaxis, dps));
Drivetrain.stop();
orientation#
Орієнтація – це поточний кут інерційного датчика на вибраній осі. Ця функція повертає поточну орієнтацію інерційного датчика для вказаної осі.
Обрана вісь x, y або z відповідає одній з осей орієнтації датчика.
Available Functionsdouble orientation(
axisType axis,
rotationUnits units );
Параметр |
Тип |
Опис |
|---|---|---|
|
|
Вісь, для якої повертається орієнтація:
|
|
|
Одиниця орієнтації:
|
Повертає значення типу double , що представляє вибраний кут орієнтації у вказаних одиницях вимірювання.
while (true) {
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1,1);
// Show the Inertial Sensor's orientation value
// for roll in degrees
double orient = myInertial.orientation(xaxis, deg);
Brain.Screen.print("%f", orient);
wait(0.1, seconds);
}
collision#
Реєструє функцію зворотного виклику, яка виконується, коли інерційний датчик виявляє раптовий удар або зіткнення.
Available Functionsvoid collision( void (* callback)(axisType, double, double, double) );
Параметр |
Тип |
Опис |
|---|---|---|
|
|
Вказівник на функцію, яка буде викликана при виявленні зіткнення. Функція зворотного виклику повинна приймати такі параметри:
void. |
Ця функція не повертає значення.
ExamplesВизначити функцію зворотного виклику (поза
int main())// Display a message when the Inertial Sensor detects a collision. void onCollision(axisType axis, double x, double y, double z) { Brain.Screen.print("Collision detected!"); }Зареєструйте зворотний виклик всередині
int main()int main() { // Run onCollision when the Inertial Sensor detects a collision. myInertial.collision(onCollision); }
setTurnType#
Встановлює напрямок повороту, який повертає додатні значення.
Available Functionsvoid setTurnType( turnType dir );
Параметр |
Тип |
Опис |
|---|---|---|
|
|
Напрямок, що повертає додатні значення:
|
Ця функція не повертає значення.
NotesЦей параметр впливає на те, як
headingтаrotationвідображатимуть додатні та від’ємні значення.Виклик цієї функції перевизначає значення
dirвказане під час побудови інерційного об’єктаinertial.
getTurnType#
Повертає, напрямок повороту якого дає позитивні значення.
Available FunctionsturnType getTurnType();
Ця функція не приймає жодних параметрів.
Return ValuesПовертає значення turnType , що вказує, який напрямок дає позитивні значення:
-
right— Clockwise rotation returns positive values. -
left— Counterclockwise rotation returns positive values.
Це значення встановлюється під час побудови інерційного об’єкта
inertialабо викликомsetTurnType.