最近读crazyflie-firmware的代码,发现它其中的飞行器这边的变量显示在client端很容易,而且是可以动态调整的,感觉很方便,然后就稍微研究了下实现的过程。
(1) 首先看到Stabilizer.c文件中最后对PARAM参数的定义:
// Params for altitude hold
PARAM_GROUP_START(altHold)
PARAM_ADD(PARAM_FLOAT, aslAlpha, &aslAlpha)
PARAM_ADD(PARAM_FLOAT, aslAlphaLong, &aslAlphaLong)
PARAM_ADD(PARAM_FLOAT, errDeadband, &errDeadband)
PARAM_ADD(PARAM_FLOAT, altHoldChangeSens, &altHoldChange_SENS)
PARAM_ADD(PARAM_FLOAT, altHoldErrMax, &altHoldErrMax)
PARAM_ADD(PARAM_FLOAT, kd, &altHoldKd)
PARAM_ADD(PARAM_FLOAT, ki, &altHoldKi)
PARAM_ADD(PARAM_FLOAT, kp, &altHoldKp)
PARAM_ADD(PARAM_FLOAT, pidAlpha, &pidAlp
本文介绍了crazyflie-firmware中PARAM参数和LOG系统的实现原理,通过分析Stabilizer.c文件,揭示了如何动态调整飞行器变量并在客户端显示。文章探讨了PARAM_GROUP_START和PARAM_GROUP_STOP宏的使用,强调了静态变量的重要性,并解释了日志系统的设计,其目的是在运行时记录可用于调试的变量。客户端在连接时获取变量列表,然后配置日志包以定期发送回数据,这种机制用于常规日志操作和GUI应用程序的指示更新。
订阅专栏 解锁全文
5507

被折叠的 条评论
为什么被折叠?



