楼主

[嵌入式] 【求助帖】步兵源码 请教问题

[复制链接]
正式队员pans0ul
2018-3-19 16:01:42 只看该作者

马上注册,玩转Robomaster!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
if((GetWorkState() == STOP_STATE) ||Is_Serious_Error() || GetWorkState() == CALI_STATE || GetWorkState() == PREPARE_STATE)  
         {
                 Set_CM_Speed(CAN2, 0,0,0,0);
         }
         else
         {
                 Set_CM_Speed(CAN2, CHASSIS_SPEED_ATTENUATION * CM1SpeedPID.output, CHASSIS_SPEED_ATTENUATION * CM2SpeedPID.output, CHASSIS_SPEED_ATTENUATION * CM3SpeedPID.output, CHASSIS_SPEED_ATTENUATION * CM4SpeedPID.output);                 
         }
}


CM1SpeedPID.output, 这里的OUTPUT 值是多少?从h文件上看是0,但是不可能是0呀。应该有通过函数计算。

但是我我找不到是哪个函数,或者如何计算的?请大神告知。谢谢

跳转到指定楼层
推荐

[嵌入式] 【求助帖】步兵源码 请教问题

[复制链接]
顾问下午茶
2018-3-23 08:36:23 只看该作者
pans0ul 发表于 2018-3-22 16:53
后来发现,指针指向 PID_calc函数。但是没有找到 PID_calc函数的 定义

官方车的程序部分被封装了 看不到源代码
沙发

[嵌入式] 【求助帖】步兵源码 请教问题

[复制链接]
梯队队员buli
2018-3-19 17:32:06 只看该作者
这个output是对应的PID计算后的输出,h文件中的0是对它赋的初值,具体的计算在每个pid运行的地方
板凳

[嵌入式] 【求助帖】步兵源码 请教问题

[复制链接]
正式队员一顿瞎几把操作
2018-3-19 18:58:24 只看该作者
楼上正解
回复

使用道具 举报

地板

[嵌入式] 【求助帖】步兵源码 请教问题

[复制链接]
正式队员pans0ul
 楼主| 2018-3-20 15:45:03 只看该作者
buli 发表于 2018-3-19 17:32
这个output是对应的PID计算后的输出,h文件中的0是对它赋的初值,具体的计算在每个pid运行的地方 ...

请问,OUTPUT 实在哪个函数计算的?PID.C?
5#

[嵌入式] 【求助帖】步兵源码 请教问题

[复制链接]
顾问下午茶
2018-3-22 10:38:10 只看该作者
pans0ul 发表于 2018-3-20 15:45
请问,OUTPUT 实在哪个函数计算的?PID.C?

在此之前会有个类似CM1SpeedPID.Calc的调用,查查看应该能找到
6#

[嵌入式] 【求助帖】步兵源码 请教问题

[复制链接]
正式队员pans0ul
 楼主| 2018-3-22 16:01:44 只看该作者
下午茶 发表于 2018-3-22 10:38
在此之前会有个类似CM1SpeedPID.Calc的调用,查查看应该能找到
  1.         void (*Calc)(struct PID_Regulator_t *pid);//º¯ÊýÖ¸Õë
  2.         void (*Reset)(struct PID_Regulator_t *pid);
  3. }PID_Regulator_t;
  4. void PID_Reset(PID_Regulator_t *pid);
  5. void PID_Calc(PID_Regulator_t *pid);
  6. #endif
复制代码
  1. CM1SpeedPID.Calc(&CM1SpeedPID);
  2.         CM2SpeedPID.Calc(&CM2SpeedPID);
  3.         CM3SpeedPID.Calc(&CM3SpeedPID);
  4.         CM4SpeedPID.Calc(&CM4SpeedPID);
复制代码
7#

[嵌入式] 【求助帖】步兵源码 请教问题

[复制链接]
正式队员pans0ul
 楼主| 2018-3-22 16:02:47 只看该作者
下午茶 发表于 2018-3-22 10:38
在此之前会有个类似CM1SpeedPID.Calc的调用,查查看应该能找到

他这里声明的函数指针,但是好像没有哪个函数地址给这个指针。
8#

[嵌入式] 【求助帖】步兵源码 请教问题

[复制链接]
正式队员pans0ul
 楼主| 2018-3-22 16:03:34 只看该作者
下午茶 发表于 2018-3-22 10:38
在此之前会有个类似CM1SpeedPID.Calc的调用,查查看应该能找到

CM4SpeedPID.Calc(&CM4SpeedPID); //这句话有什么意义吗?
9#

[嵌入式] 【求助帖】步兵源码 请教问题

[复制链接]
正式队员pans0ul
 楼主| 2018-3-22 16:53:16 只看该作者
pans0ul 发表于 2018-3-22 16:03
CM4SpeedPID.Calc(&CM4SpeedPID); //这句话有什么意义吗?
  1. #define CHASSIS_MOTOR_SPEED_PID_DEFAULT \
  2. {\
  3.         0,\
  4.         0,\
  5.         {0,0},\
  6.         220.f,\
  7.         0.0f,\
  8.         0.0f,\
  9.         0,\
  10.         0,\
  11.         0,\
  12.         4900,\
  13.         3500,\
  14.         1500,\
  15.         0,\
  16.         4950,\
  17.         0,\
  18.         0,\
  19.         0,\
  20.         &PID_Calc,\
  21.         &PID_Reset,\
  22. }\
复制代码


后来发现,指针指向 PID_calc函数。但是没有找到 PID_calc函数的 定义
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

触屏版 | 电脑版

Copyright © 2024 RoboMasters 版权所有 备案号 粤ICP备2022092332号

快速回复 返回顶部 返回列表