Arduino Nano IOT LSM6DS3 получить угол гироскопа в градусах
У меня есть Arduino Nano IOT, и я хочу получить угол наклона, используя встроенный гироскоп, но я не могу найти пример кода, который делает это. Пример кода гироскопа и акселерометра по умолчанию не помогает. Возможно ли это вообще сделать?
@DragonflyRobotics, 👍-1
Обсуждение2 ответа
Лучший ответ:
Вам придется вычислить углы; потребуется некоторая тригонометрия, а для гироскопов - еще и некоторая интеграция. Вы можете прочитать об этом здесьи во многих других местах.
Вы получите наилучшие результаты, если объедините данные гироскопов и акселерометров, используя дополнительный фильтр, фильтр Калманаили другой алгоритм. Они также легко гуглятся.
Здесь, на Github, есть пример кода для LSM6DS3 на Nano 33 IoT.
Это лучшее решение. Этот фильтр намного быстрее, чем MadgwickAHRS! Потрясающе!, @DragonflyRobotics
Вы должны использовать библиотеку фильтров поверх выходных данных гироскопа, а также данные акселерометра (оба используются!), Чтобы получить углы ... https://www.arduinolibraries.info/libraries/madgwick
Вот рабочий пример, который печатает шаг датчика от +90 до -90 градусов:
//#include <SPI.h>
//#include <Wire.h>
#include <Arduino_LSM6DS3.h>
#include <MadgwickAHRS.h>
#include <Math.h>
float pitchFilteredOld;
Madgwick filter;
const float sensorRate = 104.00;
void setup() {
Serial.begin(9600);
while (!Serial);
if(!IMU.begin()) {
Serial.println("Failed to initialize IMU!");
while (1);
}
filter.begin(sensorRate);
Serial.println("Setup complete!");
}
void loop() {
float xAcc, yAcc, zAcc;
float xGyro, yGyro, zGyro;
float roll, pitch, heading;
if(IMU.accelerationAvailable() && IMU.gyroscopeAvailable()){
IMU.readAcceleration(xAcc, yAcc, zAcc);
IMU.readGyroscope(xGyro, yGyro, zGyro);
filter.updateIMU(xGyro, yGyro, zGyro, xAcc, yAcc, zAcc);
pitch = filter.getPitch();
float pitchFiltered = 0.1 * pitch + 0.9 * pitchFilteredOld; // low pass filter
Serial.println("pitch: " + String(pitchFiltered));
pitchFilteredOld = pitchFiltered;
}
}
- Правильный способ получить значения крена, тангажа и перемещения
- Относительное положение с помощью акселерометра
- В чем разница между акселерометром, гироскопом и датчиком магнитометра?
- Линейное ускорение от MPU 6050
- Снять гравитацию с акселерометра MPU-6050
- Помощь с MPU-6050
- Самый точный способ измерения линейного расстояния, пройденного колесом
- Как прочитать необработанные данные с модуля GY-85?
гироскоп определяет скорость изменения угла, а не абсолютный угол... акселерометр может измерять угол относительно силы тяжести, @jsotola
Я попытался найти и то, и другое, но нет кода, который это делает. Не могли бы вы помочь мне найти его?, @DragonflyRobotics
Все, что я могу найти, - это изменение чисел, но никаких углов., @DragonflyRobotics