diff --git a/.Doc/TODO.md b/.Doc/TODO.md index da8efa7..d7a9a79 100644 --- a/.Doc/TODO.md +++ b/.Doc/TODO.md @@ -48,6 +48,8 @@ ### 待完成 +Unicom + - [ ] 为键鼠/遥控器/ps手柄/视觉上位机等各种控制器提供一套统一的接口,把发来数据转化为标准的控制数据,包括底盘速度云台角度等等 - [ ] 给每个模块增加调试的条件编译,并增加bsp log的输出。或直接在运行时添加log等级,输出不同的信息。 @@ -57,11 +59,14 @@ 舵机模块,需要预先定义90/180/360连续旋转的电机类型,并且能够设定max和min位置。 - [x] 编写舵机模块(待测试和优化) +- [ ] 可能需要串口舵机的支持? #### imu - [ ] 完善bmi088模块和算法的交互,添加异步量测更新的SO3上的IEKF +> 继续使用四元数(S3)也许是一个更好的选择,改动较小且运算开销也较小。后续考虑修改一套ESKF_INS并移植到框架中。 + #### ==master_machine== - [ ] 增加IMU数据的时间戳 @@ -69,6 +74,8 @@ - [ ] 重构seasky protocol的接口 - [ ] 增加数据未更新的处理 +需要一个更简单的协议以加快速度。若有必要,可能需要重新编写一个简单的调试上位机UI。 + ### 待优化 @@ -78,10 +85,20 @@ 当前实现为buzzer是单独的module,若需要蜂鸣器警报的module可以自行包含buzzer.h以创建不同情况下的警报,如电机离线、堵转、遥控器离线等。 +也许还有其他方式提醒离线和异常。 + +目前急需一个无线遥控继电器,防止机器人的急停模式失效。 + #### BMI088 - [ ] 完善和SO3 IEKF的交互,增加异步任务的唤醒和数据传递(IMU中断唤起任务) +根据BMI088的datasheet在初始标定完成后将gyro和acc都设置为中断触发,当数据准备好时传感器会在对应的引脚输出跳变,通过EXTI捕获跳变并触发中断,在回调函数中启动SPI DMA传输。陀螺仪数据来到时进行姿态的预测即propagation,加速度计数据到来时进行量测更新(correct)。 + +也许需要找到一种更好的方式构建INS任务以方便和其他模块、应用的交互。 + +另外,若要进一步提升自瞄效果,在姿态得到更新时(陀螺仪和imu的数据到来时),需要额外的引脚连接到相机上完成硬触发采集,以获得更好的时间对齐效果,防止视觉得到的姿态数据发生漂移。目前视觉端假设姿态更新的频率是1khz(当前每次完成姿态解算都会向上位机发送当前的姿态) + #### remote_control - [ ] 增加长按/短按检测 (是否有必要?) diff --git a/.Doc/VSCode+Ozone使用方法.md b/.Doc/VSCode+Ozone使用方法.md index 2b36cf4..68b37a3 100644 --- a/.Doc/VSCode+Ozone使用方法.md +++ b/.Doc/VSCode+Ozone使用方法.md @@ -4,11 +4,6 @@ [TOC] -> TODO: -> -> 1. 添加一键编译+启用ozone调试脚本,使得整个进一步流程自动化 -> 2. 增加更多的背景知识介绍 - ## 前言 了解过嵌入式开发的你一定接触过Keil,这款20世纪风格UI的IDE伴随很多人度过了学习单片机的岁月。然而由于其缺少代码补全、高亮和静态检查的支持,以及为人诟病的一系列逆天的设置、极慢的编译速度(特别是在开发HAL库时),很多开发者开始转向其他IDE。 @@ -42,31 +37,15 @@ CubeMX进行初始化 --> VSCode编写代/进行编译/简单调试 --> Ozone变 3. C语言基础:[程序设计入门——C语言](https://www.icourse163.org/course/ZJU-199001?from=searchPage&outVendor=zw_mooc_pcssjg_) -***务必学完以上课程再开始本教程的学习。*** +***务必学完以上课程再开始本教程的学习,以及后续的开发。*** + +万丈高楼不可平地而起,地基不牢只会导致递归学习。 > 如果有可能,还应该学习:[哈佛大学公开课:计算机科学cs50](https://open.163.com/newview/movie/courseintro?newurl=%2Fspecial%2Fopencourse%2Fcs50.html)。你将会对单片机和计算机有不同的理解。 ## 预备知识 -1. 软件安装(队伍NAS和资料硬盘内提供了所有必要的依赖,安装包和插件,目录是`/EC/VSCode+Ozone环境配置`),请以公共账号登陆网盘,ip地址为`49.123.113.2:5212`,账号`public@rm.cloud`,密码`public`。 - - 所有安装包也可以在此百度网盘链接下获得:[archive.zip](https://pan.baidu.com/s/1sO_EI4cToyIAcScOQx-JSg?pwd=6666) - - ```shell - # 网盘中的文件: - basic_framework.zip # 本仓库文件,注意,可能不为最新,建议从仓库clone并定时pull - daplink_register_license.rar # daplink license注册机 - gcc-arm-none-eabi-10.3-2021.10-win32.zip # arm-gnu-toolchain - JLinkARM.dll # 修改过的jlink运行链接库 - JLink_Windows_V722b.exe # JLink软件包 - mingw-get-setup.exe # mingw工具链 - OpenOCD.zip # OpenOCD - Ozone_doc.pdf # Ozone使用手册 - Ozone_Windows_V324_x86.exe # Ozone安装包 - VSCodeUserSetup-x64-1.73.1.exe # VSCode安装包 - ``` - -2. C语言从源代码到.bin和.hex等机器代码的编译和链接过程 +1. C语言从源代码到.bin和.hex等机器代码的编译和链接过程 3. C语言的内存模型 @@ -178,6 +157,28 @@ typedef struct > ***所有需要编辑的配置文件都已经在basic_framework的仓库中提供,如果不会写,照猫画虎。*** +- **软件安装** + +队伍NAS和资料硬盘内提供了所有必要的依赖,安装包和插件,目录是`/EC/VSCode+Ozone环境配置`,请以公共账号登陆网盘,ip地址为`49.123.113.2:5212`,账号`public@rm.cloud`,密码`public`。 + +对于非队内的开发者,我们提供了网盘下载方式。所有安装包也可以在此百度网盘链接下获得:[archive.zip](https://pan.baidu.com/s/1sO_EI4cToyIAcScOQx-JSg?pwd=6666) + +```shell +# 网盘中的文件: +basic_framework.zip # 本仓库文件,注意为了保证最新,建议从仓库clone并定时pull(或自动fetch) +daplink_register_license.rar # daplink license注册机 +gcc-arm-none-eabi-10.3-2021.10-win32.zip # arm-gnu-toolchain,注意,这个版本太老,编译最新的框架可能出现一些编译参数不支持的情况。请通过Msys2直接安装或到arm官网下载最新的12.x版本。 +JLinkARM.dll # 修改过的jlink运行链接库 +JLink_Windows_V722b.exe # JLink软件包 +mingw-get-setup.exe # mingw工具链(更推荐的方式是使用msys2安装) +OpenOCD.zip # OpenOCD +Ozone_doc.pdf # Ozone使用手册 +Ozone_Windows_V324_x86.exe # Ozone安装包 +VSCodeUserSetup-x64-1.73.1.exe # VSCode安装包 +# 最佳实践是下载msys2并在mingw64中安装软件包!!! +# 如果你喜欢clang,可以使用clang下的arm工具链。 +``` + > 2022-12-01更新: > > **VSCode上线了一款新的插件:** @@ -197,8 +198,8 @@ typedef struct - **C/C++**:提供C/C++的调试和代码高亮支持 - **Better C++ Syntax**:提供更丰富的代码高亮和智能提示 - **C/C++ Snippets**:提供代码块(关键字)补全 - - **Cortex-Debug**,**Cortex-Debug: Device Support Pack - STM32F4**:提供调试支持。cortex debug还会自动帮助你安装一些调试相关的插件。 - - **IntelliCode**,**Makfile Tools**:提供代码高亮支持 + - **Cortex-Debug**,**Cortex-Debug: Device Support Pack - STM32F4**:提供调试支持。cortex debug还会自动帮助你安装一些调试相关的插件,包括RTOS支持和内存查看等。 + - **IntelliCode**,**Makfile Tools**:提供代码高亮支持。喜欢clang的同学可以使用clangd。 ![image-20221112172157533](../.assets/image-20221112172157533.png) diff --git a/.Doc/架构介绍与开发指南.md b/.Doc/架构介绍与开发指南.md index 25620eb..e37b702 100644 --- a/.Doc/架构介绍与开发指南.md +++ b/.Doc/架构介绍与开发指南.md @@ -16,6 +16,8 @@ 本框架使用stm32cubemx生成,基于makefile编译系统(后期拟修改为cmake+nijna+makefile以提高编译速度,对于目前的版本您可以考虑自行安装ccache以提高编译速度),使用arm gnu工具链开发,利用arm-none-eabi-gcc编译(make命令,命令行为mingw32-make)。 + > 目前已经支持CMakeLists构建。 + > ***==!deprecated==***:若需使用keil5开发,请在stm32cubemx的`project manager`标签页下将工具链改为MDK,然后在keil中自行添加所需包含的.c文件和头文件。关于如何在keil下添加dsplib,请参考文档。在vscode中也有**KEIL assistant**和**Embedded IDE**插件可供使用。 > > ***强烈推荐使用VSCode进行开发,Ozone进行调试。*** @@ -217,7 +219,6 @@ ROOT:. │ STM32F407.svd # F407外设地址映射文件,用于调试 │ STM32F407IGHx_FLASH.ld # F407IGH(C板MCU)目标FLASH地址和链接规则,用于编译(作为链接阶段的链接器) │ task.ps1 # powershell脚本,一键编译并进入ozone调试/reset开发板用 -│ TODO.md # 项目待完成的任务 │ ├─.vscode │ launch.json # 调试的配置文件