# 24赛季工程机器人代码笔记 24赛季工程机器人代码为`basic_framework`框架下,C/C++混编,主要目的为使用上海交通大学开源的嵌入式机器人学运算库 [SJTU-RoboMaster-Team/Matrix_and_Robotics_on_STM32](https://github.com/SJTU-RoboMaster-Team/Matrix_and_Robotics_on_STM32) ## 混合编译注意事项 机械臂解算相关代码放在了`gimbal.cpp`中,代码中使用了C++特性的源文件都需要以`.cpp`结尾 如果希望`.c`文件能够调用`.cpp`文件提供的函数,则需要在`.cpp`文件对应的头文件中加入`extern "C" {}`关键字 如`gimbal.h` ``` C #ifndef GIMBAL_H #define GIMBAL_H #ifdef __cplusplus extern "C" { #endif /** * @brief 初始化云台,会被RobotInit()调用 * */ void GimbalInit(); /** * @brief 云台任务 * */ void GimbalTask(); #ifdef __cplusplus } #endif #endif // GIMBAL_H ``` ## 达妙电机相关 湖大开源`basic_framework`框架的达妙驱动为每个达妙电机单独创建了一个任务,但赛场测试发现这会经常导致某些电机离线,因此新版代码中将所有达妙电机像DJI电机一样在一个任务中控制 ### ID设置规范 ![alt text](figure/CANid.jpg) ![alt text](figure/CANid设置.jpg)