Author: Simon
Date: 2021-03-11
程序库分为ChassisLib
,MotorLib
,SimpleLib
三个功能库,用途分别如下:
-
SimpleLib
- 实现了CAN中断接收回调函数的自动管理
- 实现了DMA方式的串口命令行
- 实现了常用外设的封装
- 实现了常用科学计算、PID算法等工具函数
-
ChassisLib
- ChassisLib高度依赖MotorLib。
- 实现了底盘控制的OOP框架,舵轮全向轮类、横辊子全向轮类、麦克纳姆轮类均继承于基类。基类包含了描述底盘的公有成员变量(例如当前位姿、期望速度等),通用的全向轮底盘状态机、跑点算法、轨迹跟踪算法的实现。
- 实现了舵轮全向轮、横辊子全向轮、麦克纳姆轮底盘的运动学解算及控制。
- 遥控手柄的数据处理等。
- 一些调试工具,例如
/path_record
中实现了PC接收主控通过蓝牙串口发来的底盘坐标,通过matplotlib库绘制底盘实时轨迹与期望轨迹。
-
MotorLib
- 实现了VESC驱动器、大疆驱动板、大疆C610/C620电调、ODrive驱动器的CAN总线收发协议封装。
-
在STM32 CubeMX中新建一个IAR工程,将本程序库整体拷贝在工程的根目录下,并重命名为
BUPT_RobotTeam_Libraries
。使用时最好==删除==程序库中的
.git
文件夹,否则可能会影响工程的git操作。工程目录的结构看起来是这样的:
├── ChassisLib │ └── path_record ├── MotorLib ├── SimpleLib │ ├── can │ ├── cmd │ ├── core │ ├── flash │ ├── module │ ├── nrf │ ├── peripherals │ └── utils ├── Drivers ├── EWARM ├── .mxproject └── ***.ioc
-
打开IAR,选择
Project->Options
(或按下Alt+F7),点击C/C++ Compiler
,在Preprocessor
选项卡的Additional include directories
窗格中添加以下内容:$PROJ_DIR$/../BUPT_RobotTeam_Libraries/SimpleLib $PROJ_DIR$/../BUPT_RobotTeam_Libraries/SimpleLib/can $PROJ_DIR$/../BUPT_RobotTeam_Libraries/SimpleLib/cmd $PROJ_DIR$/../BUPT_RobotTeam_Libraries/SimpleLib/core $PROJ_DIR$/../BUPT_RobotTeam_Libraries/SimpleLib/flash $PROJ_DIR$/../BUPT_RobotTeam_Libraries/SimpleLib/module $PROJ_DIR$/../BUPT_RobotTeam_Libraries/SimpleLib/nrf $PROJ_DIR$/../BUPT_RobotTeam_Libraries/SimpleLib/utils $PROJ_DIR$/../BUPT_RobotTeam_Libraries/SimpleLib/peripherals $PROJ_DIR$/../BUPT_RobotTeam_Libraries/ChassisLib $PROJ_DIR$/../BUPT_RobotTeam_Libraries/MotorLib
-
在左侧Workspace的
/Application/User/
内新建三个Group:ChassisLib
,MotorLib
,SimpleLib
,鼠标右键Group名可以看到Add->Add Files...
,将希望使用的功能库内的==所有程序文件==都添加到相应的Group内。 -
如果功能库内有子文件夹,则最好为每个子文件夹也创建一个group以便于管理。当然,也可以直接添加程序文件。
-
如果只希望单独使用某个库,例如只使用
SimpleLib
,则ChassisLib
和MotorLib
的Group中无需添加程序文件。
查看功能库中的相关文档进行具体配置。