更新了大量文档

This commit is contained in:
NeoZng
2023-06-03 21:58:21 +08:00
parent ff5028036a
commit 253f391cd5
17 changed files with 141 additions and 74 deletions

View File

@@ -10,7 +10,7 @@
在main函数中包含`robot.h`头文件,这是对整车的抽象。将`INStask``motortask``ledtask``monitortask`这四个task加入`freertos.c`中,创建对应的任务,设置合适的任务运行间隔;然后将`robottask`放入freertos.c中同样以一定的频率运行。 在初始化实时系统之前,在`main()`中调用`RobotInit()`进行整车的初始化。
**关于运行的任务**INStask的运行频率必须为1kHzmotortask推荐的运行频率为200Hz\~500Hz详情见module/motor/motor_task.c在MotorTask内部对于高实时性要求的电机可以提升到1kHz不过要注意CAN总线的负载。ledtask的运行频率推荐为1kHzmonitortask的运行频率为1kHzrobottask的运行频率推荐为150Hz以上应当高于视觉发送的频率若后续使用插帧同样应该保证不低过motortask太多。
**关于运行的任务**INStask的运行频率必须为1kHzmotortask推荐的运行频率为200Hz\~1000Hz详情见module/motor/motor_task.c在MotorTask内部对于高实时性要求的电机可以提升到1kHz不过要注意CAN总线的负载。monitortask的运行频率为100Hzrobottask的运行频率推荐为150Hz以上应当高于视觉发送的频率若后续使用插帧同样应该保证不低过motortask太多。
若使用双板,则在`robot_def.h`中给对应的开发板设定宏定义,如底盘板使用`#define CHASSIS_BOARD`,云台板使用`#define GIMBAL_BOARD`;单个开发板控制整车,则定义`#define ONE_BOARD`。在每个应用中都已经使用编译预处理指令完成条件编译会自动根据设定的宏切换功能。使用双板的时候目前板间通信通过CAN完成因此两个开发板会挂载在一条总线上在两个开发板对这条总线的其他使用CAN的设备进行配置时注意**不要发生ID冲突**,还要注意**防止负载过大**。
@@ -24,7 +24,7 @@ Robot.c是整个机器人的抽象其下有4个应用robot_cmdgimbal
为了进一步解耦应用之间的关系,这里并没有采用层级结构(或设计模式中所谓的**工厂模式**即robot_cmd包含其他三个模块而采用了应用并列的**发布-订阅**机制四个应用之间没有任何相互包含关系他们之间的通信通过module层提供的`message_center`实现。每个应用会通过该模块向一些话题事件发布一些消息同时从一些话题订阅消息。如robot_cmd应用会发布其他三个模块的控制信息同时订阅其他三个模块的反馈信息。其他三个模块会订阅robot_cmd发布的控制信息同时发布反馈给robot_cmd的信息他们不需要知道彼此的存在只是从`message_center`处获取其他应用发布的消息或向自己发布的话题推送消息。
application在初始化module的时候初始化参数会包含部分bsp的内容但仅仅是外设和引脚的选择以及id设置用于通信的外设需要id设置。实际上当前框架的app层和cubemx初始化部分耦合在配置的时候就必须确定每个外设的作用和归属权一旦cubemx完成设置app层必须按照对应参数设置引脚和并分配module的外设.后续考虑将cubemx和bsp耦合去除顶层代码和底层的关系
application在初始化module的时候初始化参数会包含部分bsp的内容但仅仅是外设和引脚的选择以及id设置用于通信的外设需要id设置。实际上当前框架的app层和cubemx初始化部分耦合在配置的时候就必须确定每个外设的作用和归属权一旦cubemx完成设置app层必须按照对应参数设置引脚和并分配module的外设后续考虑将cubemx和bsp耦合去除顶层代码和底层的关系