跳到主要内容

docs 07 IMU 数据读取例程

IMU 数据读取

General Driver for Robots 板载 9 轴 IMU,可读取驱动板自身位置数据,以下提供 IMU 数据读取程序。

上传程序

点击 例程下载 打开 9DOF_Demo.ino,用 USB 线将多功能驱动板和计算机连接起来(此处插入的是多功能驱动板 USB 的 Type-C 接口),点击“工具”→“端口”,再点击新出现的 COM(这里新出现的 COM 为 COM26)。

Arduino IDE 端口选择

在 Arduino IDE 中,点击“工具”→“开发板”→“ESP32”→“ESP32 Dev Module”。开发板以及端口都选择好后上传程序。上传程序后,再打开 Arduino IDE 的串口监视器即可读取 IMU 数据,转动驱动板时数据会改变。

Arduino IDE 端口选择

Arduino IDE 端口选择

程序解析


#include"IMU.h"

//设置 Roll、Pitch、Yaw 三个角的值,以及 Temp 温度的值
//Roll 表示的是绕 X 轴旋转的横滚角度,Pitch 表示的是绕 Y 轴旋转的俯仰角度,Yaw 表示的是绕 Z 轴旋转的偏航角度
int IMU_Roll = 100;
int IMU_Pitch = 100;
int IMU_Yaw = 100;
int IMU_Temp = 100;

IMU_ST_ANGLES_DATA stAngles; //创建结构体变量 stAngles,用于存储三个角度数据
IMU_ST_SENSOR_DATA stGyroRawData; //用于存储陀螺仪原始数据
IMU_ST_SENSOR_DATA stAccelRawData; //存储加速度计原始数据
IMU_ST_SENSOR_DATA stMagnRawData; //存储磁力计原始数据

void getIMU(){
//获取 IMU 数据
imuDataGet( &stAngles, &stGyroRawData, &stAccelRawData, &stMagnRawData);
IMU_Temp = QMI8658_readTemp();
IMU_Roll = stAngles.fRoll;
IMU_Pitch = stAngles.fPitch;
IMU_Yaw = stAngles.fYaw;
}

void DOF(){
Serial.print("R:");
Serial.println(IMU_Roll);
Serial.print("P:");
Serial.println(IMU_Pitch);
Serial.print("Y:");
Serial.println(IMU_Yaw);
Serial.print("T:");
Serial.println(IMU_Temp);

}

void setup() {

Serial.begin(115200); //初始化串口通信
while(!Serial){} //等待串口连接
imuInit(); //初始化 IMU
}

void loop() {
getIMU(); //获取 IMU 数据
DOF(); //输出 IMU 数据
delay(1000);
}