new file: Legs_controller.py modified: README.md new file: __pycache__/Legs_controller.cpython-310.pyc new file: __pycache__/Legs_controller.cpython-313.pyc new file: __pycache__/balance.cpython-310.pyc new file: __pycache__/gradio.cpython-310.pyc new file: __pycache__/gradio.cpython-313.pyc new file: app_ui.py new file: balance.py new file: build/.cmake/api/v1/query/client-vscode/query.json new file: build/.cmake/api/v1/reply/cache-v2-ae4a9db768b4bbb36baa.json new file: build/.cmake/api/v1/reply/cmakeFiles-v1-389eb8769a8295e7571d.json new file: build/.cmake/api/v1/reply/codemodel-v2-5ea8cfc0b9263cbe5ae5.json new file: build/.cmake/api/v1/reply/directory-.-Debug-f5ebdc15457944623624.json new file: build/.cmake/api/v1/reply/index-2025-09-11T04-53-20-0515.json new file: build/.cmake/api/v1/reply/target-imu_py-Debug-3913d741f2156d7faae9.json new file: build/.cmake/api/v1/reply/toolchains-v1-3105704d088db7adbfb5.json new file: build/CMakeCache.txt new file: build/CMakeFiles/3.22.1/CMakeCXXCompiler.cmake new file: build/CMakeFiles/3.22.1/CMakeDetermineCompilerABI_CXX.bin new file: build/CMakeFiles/3.22.1/CMakeSystem.cmake new file: build/CMakeFiles/3.22.1/CompilerIdCXX/CMakeCXXCompilerId.cpp new file: build/CMakeFiles/3.22.1/CompilerIdCXX/a.out new file: build/CMakeFiles/CMakeDirectoryInformation.cmake new file: build/CMakeFiles/CMakeOutput.log new file: build/CMakeFiles/Makefile.cmake new file: build/CMakeFiles/Makefile2 new file: build/CMakeFiles/TargetDirectories.txt new file: build/CMakeFiles/cmake.check_cache new file: build/CMakeFiles/imu_py.dir/DependInfo.cmake new file: build/CMakeFiles/imu_py.dir/build.make new file: build/CMakeFiles/imu_py.dir/cmake_clean.cmake new file: build/CMakeFiles/imu_py.dir/compiler_depend.make new file: build/CMakeFiles/imu_py.dir/compiler_depend.ts new file: build/CMakeFiles/imu_py.dir/depend.make new file: build/CMakeFiles/imu_py.dir/flags.make new file: build/CMakeFiles/imu_py.dir/link.txt new file: build/CMakeFiles/imu_py.dir/progress.make new file: build/CMakeFiles/progress.marks new file: build/Makefile new file: build/cmake_install.cmake new file: build/compile_commands.json new file: dm_imu/bsp_crc.cpp new file: dm_imu/bsp_crc.h new file: dm_imu/imu_data.csv new file: dm_imu/imu_driver.cpp new file: dm_imu/imu_driver.h new file: dm_imu/imu_plot.png new file: dm_imu/plot_imu.py new file: dm_imu/test_imu.cpp new file: imu_data.csv new file: pybind_imu/CMakeLists.txt new file: pybind_imu/README.md new file: pybind_imu/build/CMakeCache.txt new file: pybind_imu/build/CMakeFiles/3.22.1/CMakeCXXCompiler.cmake new file: pybind_imu/build/CMakeFiles/3.22.1/CMakeDetermineCompilerABI_CXX.bin new file: pybind_imu/build/CMakeFiles/3.22.1/CMakeSystem.cmake new file: pybind_imu/build/CMakeFiles/3.22.1/CompilerIdCXX/CMakeCXXCompilerId.cpp new file: pybind_imu/build/CMakeFiles/3.22.1/CompilerIdCXX/a.out new file: pybind_imu/build/CMakeFiles/CMakeDirectoryInformation.cmake new file: pybind_imu/build/CMakeFiles/CMakeOutput.log new file: pybind_imu/build/CMakeFiles/Makefile.cmake new file: pybind_imu/build/CMakeFiles/Makefile2 new file: pybind_imu/build/CMakeFiles/TargetDirectories.txt new file: pybind_imu/build/CMakeFiles/cmake.check_cache new file: pybind_imu/build/CMakeFiles/imu_py.dir/DependInfo.cmake new file: pybind_imu/build/CMakeFiles/imu_py.dir/build.make new file: pybind_imu/build/CMakeFiles/imu_py.dir/cmake_clean.cmake new file: pybind_imu/build/CMakeFiles/imu_py.dir/compiler_depend.make new file: pybind_imu/build/CMakeFiles/imu_py.dir/compiler_depend.ts new file: pybind_imu/build/CMakeFiles/imu_py.dir/depend.make new file: pybind_imu/build/CMakeFiles/imu_py.dir/flags.make new file: pybind_imu/build/CMakeFiles/imu_py.dir/home/allenyuan/balance/dm_imu/bsp_crc.cpp.o new file: pybind_imu/build/CMakeFiles/imu_py.dir/home/allenyuan/balance/dm_imu/bsp_crc.cpp.o.d new file: pybind_imu/build/CMakeFiles/imu_py.dir/home/allenyuan/balance/dm_imu/imu_driver.cpp.o new file: pybind_imu/build/CMakeFiles/imu_py.dir/home/allenyuan/balance/dm_imu/imu_driver.cpp.o.d new file: pybind_imu/build/CMakeFiles/imu_py.dir/link.txt new file: pybind_imu/build/CMakeFiles/imu_py.dir/progress.make new file: pybind_imu/build/CMakeFiles/imu_py.dir/pybind_imu.cpp.o new file: pybind_imu/build/CMakeFiles/imu_py.dir/pybind_imu.cpp.o.d new file: pybind_imu/build/CMakeFiles/progress.marks new file: pybind_imu/build/Makefile new file: pybind_imu/build/cmake_install.cmake new file: pybind_imu/build/imu_py.cpython-310-aarch64-linux-gnu.so new file: pybind_imu/example.py new file: pybind_imu/pybind_imu.cpp new file: src/example.py new file: test_imu new file: u2can/DM_CAN.py new file: u2can/DM_Motor_Test.py new file: u2can/LICENSE new file: u2can/README.md new file: u2can/__pycache__/DM_CAN.cpython-310.pyc new file: u2can/__pycache__/DM_CAN.cpython-312.pyc new file: u2can/__pycache__/DM_CAN.cpython-313.pyc new file: u2can/__pycache__/gradio.cpython-313.pyc new file: u2can/__pycache__/motor_interface.cpython-313.pyc new file: u2can/motor_interface.py new file: u2can/requirements.txt new file: ui.log
104 lines
2.0 KiB
C++
104 lines
2.0 KiB
C++
#ifndef _IMU_DRIVER_H_
|
||
#define _IMU_DRIVER_H_
|
||
#include <iostream>
|
||
#include <thread>
|
||
#include <initializer_list>
|
||
#include <fstream>
|
||
#include <array>
|
||
#include <mutex>
|
||
#include <atomic>
|
||
#include <math.h>
|
||
#include "bsp_crc.h"
|
||
|
||
namespace dmbot_serial
|
||
{
|
||
#pragma pack(1)
|
||
typedef struct
|
||
{
|
||
uint8_t FrameHeader1;
|
||
uint8_t flag1;
|
||
uint8_t slave_id1;
|
||
uint8_t reg_acc;
|
||
uint32_t accx_u32;
|
||
uint32_t accy_u32;
|
||
uint32_t accz_u32;
|
||
uint16_t crc1;
|
||
uint8_t FrameEnd1;
|
||
|
||
uint8_t FrameHeader2;
|
||
uint8_t flag2;
|
||
uint8_t slave_id2;
|
||
uint8_t reg_gyro;
|
||
uint32_t gyrox_u32;
|
||
uint32_t gyroy_u32;
|
||
uint32_t gyroz_u32;
|
||
uint16_t crc2;
|
||
uint8_t FrameEnd2;
|
||
|
||
uint8_t FrameHeader3;
|
||
uint8_t flag3;
|
||
uint8_t slave_id3;
|
||
uint8_t reg_euler; // r-p-y
|
||
uint32_t roll_u32;
|
||
uint32_t pitch_u32;
|
||
uint32_t yaw_u32;
|
||
uint16_t crc3;
|
||
uint8_t FrameEnd3;
|
||
} IMU_Receive_Frame;
|
||
#pragma pack()
|
||
|
||
typedef struct
|
||
{
|
||
float accx;
|
||
float accy;
|
||
float accz;
|
||
float gyrox;
|
||
float gyroy;
|
||
float gyroz;
|
||
float roll;
|
||
float pitch;
|
||
float yaw;
|
||
} IMU_Data;
|
||
|
||
class DmImu
|
||
{
|
||
public:
|
||
DmImu(const std::string& port = "/dev/ttyACM1", int baud = 921600);
|
||
~DmImu();
|
||
|
||
// Start data acquisition thread; returns true on success
|
||
bool start();
|
||
// Stop acquisition and close serial port
|
||
void stop();
|
||
|
||
// Get latest IMU data (thread‑safe copy)
|
||
IMU_Data getData() const;
|
||
|
||
private:
|
||
void init_imu_serial();
|
||
void get_imu_data_thread();
|
||
|
||
void enter_setting_mode();
|
||
void turn_on_accel();
|
||
void turn_on_gyro();
|
||
void turn_on_euler();
|
||
void turn_off_quat();
|
||
void set_output_1000HZ();
|
||
void save_imu_para();
|
||
void exit_setting_mode();
|
||
void restart_imu();
|
||
|
||
int imu_seial_baud;
|
||
std::string imu_serial_port;
|
||
int serial_fd = -1;
|
||
std::thread rec_thread;
|
||
mutable std::mutex data_mutex;
|
||
bool stop_thread_ = false;
|
||
|
||
IMU_Receive_Frame receive_data{};
|
||
IMU_Data data{};
|
||
};
|
||
|
||
}
|
||
#endif
|