CHRobotics(chr6d)数字惯性测量单元用户指南:6轴IMU设计与应用

需积分: 0 0 下载量 99 浏览量 更新于2024-07-26 收藏 402KB PDF 举报
CHRobotics的CHR-6d Digital Inertial Measurement Unit (IMU) 是一款专为各种应用设计的高度集成的六自由度传感器设备,具有先进的功能和卓越的性能。这款小巧轻便的产品(尺寸仅为0.8"x0.7"x0.1英寸,重量仅1.5克),旨在简化与计算机和单片机的连接过程,支持用户进行精确的编程操作。 该产品的主要特点包括: 1. **内置卡尔曼滤波器(EKF)**:对于姿态估计,如俯仰角和翻滚角,内置的扩展卡尔曼滤波器提供高效且准确的数据处理,确保了在动态环境中的可靠性能。 2. **单电源工作**:工作电压为+3.3V,这使得CHR-6d能够在多种供电条件下轻松运行。 3. **多轴测量**:包含三个旋转速率(角速度)和三个加速度传感器,为用户提供全方位的运动感知能力。 4. **高性能处理器**:内置32位ARM Cortex处理器,运行速度高达64MHz,处理能力强,能支持复杂的算法实现。 5. **串行通信**:采用TTL UART接口,便于与外部设备通过简单易用的串行方式进行数据交换。 6. **可配置滤波器**:配备窗口化Parks-McClellan有限 impulse response (FIR)滤波器,允许用户根据具体应用调整滤波特性,提高数据的稳定性和精度。 7. **高分辨率**:所有传感器通道经过过采样和下采样处理,提供16位的有效测量分辨率,确保了极高的精度。 8. **温度稳定性**:在宽温范围内保持高精度,适用于严苛的工作环境。 9. **全量程范围**:陀螺仪和加速度计具有±400°/s和±3g的全量程,适应不同运动场景的需求。 10. **广泛的应用领域**:由于其出色性能,CHR-6d广泛应用于机器人技术、平台稳定、运动跟踪、增强GPS导航、通用运动感应以及图像稳定系统等多个领域。 CHR-6d Digital IMU凭借其高性能、小型化设计、灵活的通信方式和精确的测量能力,成为现代物联网和机器人技术中不可或缺的组件,为开发者提供了强大而便捷的运动感知解决方案。

对以下代码进行注释并给出可复制代码static void ble_tp_notify_task(void *pvParameters) { int err = -1; char data[244] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09}; while(1) { err = bt_gatt_notify(ble_tp_conn, get_attr(BT_CHAR_BLE_TP_NOT_ATTR_VAL_INDEX), data, (tx_mtu_size - 3)); BT_WARN("ble tp send notify : %d", err); } } static void ble_tp_not_ccc_changed(const struct bt_gatt_attr attr, u16_t value) { int err; BT_WARN("ccc:value=[%d]",value); if(tp_start) { if(value == BT_GATT_CCC_NOTIFY) { if(xTaskCreate(ble_tp_notify_task, (char)"bletp", 256, NULL, TP_PRIO, &ble_tp_task_h) == pdPASS) { created_tp_task = 1; BT_WARN("Create throughput tx task success."); } else { created_tp_task = 0; BT_WARN("Create throughput tx task fail."); } } else { if(created_tp_task) { BT_WARN("Delete throughput tx task."); vTaskDelete(ble_tp_task_h); created_tp_task = 0; } } } else { if(created_tp_task) { BT_WARN("Delete throughput tx task."); vTaskDelete(ble_tp_task_h); created_tp_task = 0; } if(value == BT_GATT_CCC_NOTIFY) { err = bt_gatt_notify(ble_tp_conn, get_attr(BT_CHAR_BLE_TP_NOT_ATTR_VAL_INDEX), "notify", strlen("notify")); BT_WARN("ble tp send indatcate: %d", err); } } } static struct bt_gatt_attr attrs[]= { BT_GATT_PRIMARY_SERVICE(BT_UUID_SVC_BLE_TP), BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_TP_RD, BT_GATT_CHRC_READ, BT_GATT_PERM_READ, ble_tp_recv_rd, NULL, NULL), BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_TP_WR, BT_GATT_CHRC_WRITE |BT_GATT_CHRC_WRITE_WITHOUT_RESP, BT_GATT_PERM_WRITE|BT_GATT_PERM_PREPARE_WRITE, NULL, ble_tp_recv_wr, NULL), BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_TP_IND, BT_GATT_CHRC_INDICATE, 0, NULL, NULL, NULL), BT_GATT_CCC(ble_tp_ind_ccc_changed, BT_GATT_PERM_READ | BT_GATT_PERM_WRITE), BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_TP_NOT, BT_GATT_CHRC_NOTIFY, 0, NULL, NULL, NULL), BT_GATT_CCC(ble_tp_not_ccc_changed, BT_GATT_PERM_READ | BT_GATT_PERM_WRITE) };

2023-05-19 上传