DBAA 发表于 2023-2-8 15:08:49

体验版-球平衡机器人的APP遥控实现可行性与代码逻辑问题求助

求大神解答!
我观察到的现象是:
体验版的control.c里面的代码中,Motor_A B C三个变量在进入外部中断函数(主函数)的时候都没有赋初始值,然后都先利用了这三个量做了正运动学分析,接着通过逆运动学分析才第一次正式赋值了电机转速Motor_A B C这三个变量。在讲解视频中其实提到了这一块,似乎是因为没有足够的引脚所以没办法配置编码器实时读取轮子的转速。
但是在标准版的control.c里面的代码中,先用Encoder_A B C读取了编码器的值,相当于体验版的Motor_A B C在这里获得了第一次的赋值。
我想问:
1.是不是体验版就算代码做出了的遥控功能,但是由于缺乏编码器的读数赋初值会导致app遥控的效果很差(平衡效果不好)?
2.在体验版这样的代码下,第一次没有赋初值会生成一个随机值是吗?然后用这个随机值去做第一个5ms中断内的逆运动学,把这个第一次主函数运行的结果当作赋初值了?



Clips 发表于 2023-2-8 15:29:08

首先,关于您的第一个问题,是的,缺少编码器的读数赋初值可能会导致遥控效果不佳,因为没有准确的轮子转速值来帮助平衡。关于您的第二个问题,C语言中的变量如果没有被明确地赋值,它们可能包含任意值。所以,在体验版代码中,在未初始化的情况下使用Motor_A、B、C这三个变量是不可靠的。使用未初始化的变量可能会导致代码中的错误或意外的行为。因此,建议在使用这些变量之前始终将它们初始化为合适的值。这可以通过直接在代码中赋值或通过在函数的参数列表中传递值来实现。

DBAA 发表于 2023-2-8 15:35:05

Clips 发表于 2023-2-8 15:29
首先,关于您的第一个问题,是的,缺少编码器的读数赋初值可能会导致遥控效果不佳,因为没有准确的轮子转速 ...

对于第二个问题,原来Motor_A、B、C是long int的全局变量,在C语言中,全局变量值默认为0,所以应该还是不用改啦

DBAA 发表于 2023-2-8 15:35:31

Clips 发表于 2023-2-8 15:29
首先,关于您的第一个问题,是的,缺少编码器的读数赋初值可能会导致遥控效果不佳,因为没有准确的轮子转速 ...

谢谢您拨冗解答!
页: [1]
查看完整版本: 体验版-球平衡机器人的APP遥控实现可行性与代码逻辑问题求助