42 lines
1.2 KiB
Markdown
42 lines
1.2 KiB
Markdown
|
# 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)
|
|||
|
|