# Matrix and Robotics toolbox on STM32
## 概述
本工具库基于arm_math优化数学库,通过C++模板实现和封装了矩阵的各种基本运算,在此基础上实现了机器人学的基本功能函数,包括位姿描述、DH建模、运动学和逆向动力学。上海交通大学交龙战队在RoboMaster2023赛季基于本工具库开发了工程机器人的机械臂控制算法。
## 索引
**src**目录下包含了矩阵运算工具库(matrix.cpp/h),机器人学工具库(robotics.cpp/h)和两个工具库使用到的基础数学运算函数。
**demo**目录下包含了一个可在RoboMaster C型开发板(STM32F407)上运行的单片机程序,矩阵运算和机器人学工具库相关代码存放在**demo/toolbox**目录下,**demo/Src/main.cpp**中给出了使用3种不同构型机械臂(PUMA560,UR,SCARA)的例程,**demo/matlab**目录下包含了对应的matlab程序。例程中包括了机械臂的建模方法以及运动学、动力学、雅可比矩阵等计算。
## matrix-矩阵运算库
基于arm_math矩阵运算库实现和封装,对常用的基本运算进行了重载,使用方法类似于Eigen的矩阵运算。
### 为什么要专门编写一个矩阵运算工具库?
目前STM32平台缺少高效且易用的开源矩阵库,直接使用arm_math的库函数会使得代码较为臃肿,对于机械臂控制这样包含大量矩阵运算的程序来说非常影响编程体验和调试效率。而在STM32上直接引入Eigen库的运行速度不能满足需求,且编译后的执行文件体积非常大。
### 性能参考
本工具库直接使用arm_math矩阵运算库函数进行封装,矩阵乘法运算耗时约为纯数组计算的1.6倍,约为Eigen库的1/40。
## robotics-机器人学工具库
参考matlab robotics toolbox (Peter Corke)实现了基础的机器人学功能函数,包含位姿变换,DH建模,运动学,雅可比矩阵,动力学等。使用方法也可大致参考robotics toolbox的说明文档。
### 位姿变换
齐次变换矩阵、旋转矩阵、位移向量、欧拉角、旋转向量、四元数、旋量坐标向量间的互相转换。
### struct DH_t
DH建模参数结构体
### class Link
单刚体连杆建模,包含:
- 运动学参数:DH参数,关节初始偏移,关节限位,关节类型
- 动力学参数:质量,质心,惯量张量
### class Serial_Link<_n>
串联多刚体建模,实现正逆运动学,动力学求解等。
- Serial_Link<_n>::fkine(q) -- 正运动学,返回 $T_n^0(q)$
- Serial_Link<_n>::fkine(q,k) -- 正运动学,返回 $T_k^0(q)$
- Serial_Link<_n>::T(q,k-1) -- 返回刚体k的齐次变换矩阵 $T_k^{k-1}(q)$
- Serial_Link<_n>::jacob(q) -- 雅可比矩阵 $J(q)$
- Serial_Link<_n>::ikine(T, q, tol, max_iter) -- 逆运动学数值求解(牛顿法迭代),返回 $q(T,q_0)$
- *Serial_Link<_n>::ikine_analytic(T) -- 逆运动学解析求解接口,由用户实现,返回 $q(T)$
- Serial_Link<_n>::rne(q,qv,qa,he) -- 逆动力学求解(牛顿-欧拉法),返回关节力/力矩 $\tau_i(q,\dot q,\ddot q,h_e)$,( $h_e=[f_e^T,\mu_e^T]^T$,为末端负载)
### 性能参考
6轴机械臂正运动学计算耗时0.14ms,雅可比矩阵计算耗时0.59ms,逆运动学求解耗时3~20ms。
## 补充说明
1. 本工具库最主要的用途是实现机械臂控制,由于自制的机械臂与产品级的机械臂不同,缺少完善的安全保护功能,因此**在编写程序时要尤其关注安全措施例如紧集停止、断电等,在实际对机械臂进行控制前应确保每个电机在发生意外状况时能通过软件或硬件方式断电**。
2. 要实现机械臂的控制,在此工具库的基础上仍需要实现逆运动学的解析解、奇异位形处理、姿态插值、轨迹规划等功能。不同构型、机构参数的机械臂在这方面的处理不完全相同。如果处理不当可能存在一定危险性(例如奇异位形下电机突然高速运行)。
3. 机器人学工具库中的逆运动学使用迭代求解,求解结果数值不稳定且效率较低,推荐自行实现解析逆解。
4. 工具库作者本人非计算机、软件工程相关专业,代码编写方面没有经过系统的训练,同时用C++在STM32上开发目前也不算特别成熟,程序和代码规范可能有些不完善的地方,欢迎指出和提出修改意见。
## 参考资料
[1] SJTU ME385-2, Robotics, Y.Ding.
[2] SJTU ME391-1, Numerical analysis, Y.Ding.
[3] Bruno Siciliano, et al., Robotics: Modelling, Planning and Control, Springer, 2010.
[4] R.Murry, Z.X.Li, and S.Sastry, A Mathematical Introduction to Robotic Manipulation, CRC Press, 1994.
[5] Timothy Sauer, Numerical analysis (2nd ed.), Pearson Education, 2012.
[6] Peter Corke, MATLAB Robotics Toolbox <http://petercorke.com>.
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
人工智能项目资料- 【探索人工智能的宝藏之地】 无论您是计算机相关专业的在校学生、老师,还是企业界的探索者,这个项目都是为您量身打造的。无论您是初入此领域的小白,还是寻求更高层次进阶的资深人士,这里都有您需要的宝藏。不仅如此,它还可以作为毕设项目、课程设计、作业、甚至项目初期的立项演示。 【人工智能的深度探索】 人工智能——模拟人类智能的技术和理论,使其在计算机上展现出类似人类的思考、判断、决策、学习和交流能力。这不仅是一门技术,更是一种前沿的科学探索。 【实战项目与源码分享】 我们深入探讨了深度学习的基本原理、神经网络的应用、自然语言处理、语言模型、文本分类、信息检索等领域。更有深度学习、机器学习、自然语言处理和计算机视觉的实战项目源码,助您从理论走向实践,如果您已有一定基础,您可以基于这些源码进行修改和扩展,实现更多功能。 【期待与您同行】 我们真诚地邀请您下载并使用这些资源,与我们一起在人工智能的海洋中航行。同时,我们也期待与您的沟通交流,共同学习,共同进步。让我们在这个充满挑战和机遇的领域中共同探索未来!
资源推荐
资源详情
资源评论
收起资源包目录
基于ARM优化数学库arm_math实现的矩阵运算和机器人学工具库,可用于实现机械臂控制及后续功能开发.zip (120个子文件)
stm32f4xx_hal_tim.c 207KB
stm32f4xx_hal_rcc_ex.c 150KB
stm32f4xx_hal_spi.c 118KB
stm32f4xx_hal_uart.c 108KB
stm32f4xx_hal_can.c 79KB
stm32f4xx_hal_adc.c 75KB
stm32f4xx_hal_tim_ex.c 64KB
stm32f4xx_hal_flash_ex.c 49KB
stm32f4xx_hal_dac.c 44KB
stm32f4xx_hal_rcc.c 41KB
stm32f4xx_hal_adc_ex.c 40KB
stm32f4xx_hal_dma.c 39KB
system_stm32f4xx.c 27KB
stm32f4xx_hal_flash.c 24KB
stm32f4xx_hal_pwr_ex.c 22KB
stm32f4xx_hal_pwr.c 19KB
stm32f4xx_hal.c 19KB
stm32f4xx_hal_gpio.c 19KB
stm32f4xx_hal_cortex.c 18KB
stm32f4xx_hal_exti.c 15KB
stm32f4xx_hal_dac_ex.c 15KB
stm32f4xx_hal_dma_ex.c 10KB
stm32f4xx_hal_iwdg.c 8KB
stm32f4xx_hal_flash_ramfunc.c 6KB
stm32f4xx_it.c 5KB
tim.c 4KB
usart.c 3KB
stm32f4xx_hal_msp.c 2KB
gpio.c 2KB
sys.c 1KB
robotics.cpp 11KB
robotics.cpp 11KB
main.cpp 8KB
utils.cpp 1KB
utils.cpp 1KB
matrix.cpp 792B
matrix.cpp 792B
.gitignore 128B
.gitignore 91B
stm32f427xx.h 1.37MB
stm32f407xx.h 1.27MB
stm32f4xx_hal_rcc_ex.h 425KB
arm_math.h 239KB
stm32_hal_legacy.h 204KB
core_cm33.h 169KB
core_armv8mml.h 162KB
core_cm7.h 142KB
core_cm4.h 119KB
stm32f4xx_hal_tim.h 111KB
core_cm3.h 107KB
core_sc300.h 106KB
core_cm23.h 100KB
core_sc300.h 99KB
core_armv8mbl.h 94KB
stm32f4xx_hal_gpio_ex.h 79KB
stm32f4xx_hal_rcc.h 72KB
stm32f4xx_hal_flash_ex.h 63KB
cmsis_gcc.h 59KB
cmsis_armclang.h 53KB
core_cm0plus.h 48KB
core_sc000.h 45KB
stm32f4xx_hal_adc.h 45KB
core_sc000.h 42KB
stm32f4xx_hal_can.h 42KB
core_cm1.h 41KB
stm32f4xx_hal_uart.h 41KB
core_cm0.h 40KB
stm32f4xx_hal_dma.h 37KB
stm32f4xx_hal_spi.h 31KB
cmsis_iccarm.h 27KB
cmsis_armcc.h 27KB
stm32f4xx_hal_adc_ex.h 25KB
stm32f4xx_hal_dac.h 18KB
stm32f4xx_hal_cortex.h 17KB
stm32f4xx_hal_tim_ex.h 16KB
stm32f4xx_hal_pwr_ex.h 16KB
stm32f4xx_hal_conf.h 16KB
stm32f4xx_hal_exti.h 15KB
robotics.h 14KB
robotics.h 14KB
stm32f4xx_hal_flash.h 14KB
stm32f4xx_hal_pwr.h 14KB
stm32f4xx_hal.h 13KB
stm32f4xx_hal_gpio.h 12KB
mpu_armv7.h 11KB
mpu_armv8.h 10KB
stm32f4xx.h 10KB
stm32f4xx_hal_dac_ex.h 10KB
cmsis_compiler.h 9KB
matrix.h 7KB
matrix.h 7KB
arm_common_tables.h 7KB
stm32f4xx_hal_def.h 7KB
stm32f4xx_hal_iwdg.h 7KB
arm_const_structs.h 4KB
system_stm32f4xx.h 4KB
stm32f4xx_hal_dma_ex.h 3KB
tz_context.h 3KB
stm32f4xx_hal_flash_ramfunc.h 2KB
main.h 2KB
共 120 条
- 1
- 2
资源评论
妄北y
- 粉丝: 1w+
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功