新增了教程和注释以及文档,增加了一键编译并打开ozone调试的脚本

This commit is contained in:
NeoZng
2023-02-14 11:13:32 +08:00
parent 8fa03012cf
commit 7c76852041
41 changed files with 201 additions and 45 deletions

View File

@@ -11,18 +11,33 @@
> 更多关于发布-订阅的实现,请参考`modules/message_center`下的文档。
## robot_def.h
这是机器人的参数配置文件,必须要针对每个机器人进行修改。包括机器人的尺寸参数和性能参数等。你还需要在这里设定软硬件配置:云台板/底盘板/单板等。这里定义的宏会作为条件编译的决断。
app层共用的状态变量和结构体等也应该定义在这里例如用于应用之间通信的数据。记得通信变量要用:
```c
#pragma pack(1)
typedef struct
{
// your struct
} your_struct;
#pragma pack()
```
包裹起来取消字节对齐以防止出现访问8byte地址而出现错误。
## robot_cmd
机器人命令模块是对整个机器人的抽象,对于单板控制整车的情况,该应用应该包含接收控制指令的模块,例如遥控器、视觉通信模块。该模块会处理接收到的控制数据,并将其转化为**具体的、定量的**控制信息,发送给其他模块。
机器人命令模块是对整个机器人的抽象,对于单板控制整车的情况,该应用应该包含接收控制指令的模块,例如遥控器、视觉通信模块。该模块会处理接收到的控制数据,并将其转化为**具体的、定量的**控制信息,发送给其他模块。同时cmd应用会处理模块和应用离线的情况出现紧急状况时停止所有执行机构的运行。
如从遥控器获知当前右侧摇杆拨向上方则将遥控器发来的数值转化为底盘前进的速度值然后发送给其他应用。同时robot_cmd还要从其他应用获取反馈信息做出其他决策。可以将其视为整个机器人的**大脑**。
robot_cmd工作起来就像一个遥控数据的兼容层不论数据的来源是视觉上位机/遥控器/键鼠/图传通信链路/ps手柄最后都会被转化成真实参考输入提供给其他的app。它的任务是将其他来源的数据映射到控制输入上。
## gimbal
以步兵为例云台应用应当包含两个电机分别用于驱动yaw和pitch轴还有一个imu开发板一般放在云台上。gimbal模块会接收robot_cmd发来的控制信息云台的角度、转速等并通过电机提供的接口完成电机的参考值设定。gimbal还要把imu的数据反馈给cmd用于和视觉的通信以及云台状态的判断。
以步兵为例云台应用应当包含两个电机分别用于驱动yaw和pitch轴(除非你是一个三轴的云台)还有一个imu开发板一般放在云台上。gimbal模块会接收robot_cmd发来的控制信息云台的角度、转速等并通过电机提供的接口完成电机的参考值设定。gimbal还要把imu的数据反馈给cmd用于和视觉的通信以及云台状态的判断。
@@ -46,5 +61,5 @@
## 双板兼容
此框架对单开发板/双开发板/多开发板的情况都提供了支持(多板一般只在工程机器人上出现,需要自己编写),目前通过条件编译实现了对单双板的切换。使用双板时,主控板在云台上,连接遥控器和上位机;副板在底盘上,负责底盘的运动控制和与裁判系统的通信。
此框架对单开发板/双开发板/多开发板的情况都提供了支持(多板一般只在工程机器人上出现,需要自己在robot_cmd和robot_def增加相应的条件编译选项robot.c中也不要忘记增加初始化和任务运行函数),目前通过条件编译实现了对单双板的切换。使用双板时,主控板在云台上,连接遥控器和上位机;副板在底盘上,负责底盘的运动控制和与裁判系统的通信。