我正在尝试基于Raspberry Pi 3构建机器人/流浪者。
目前,我正在直线上进行基本驾驶。调整我的PID代码,我不确定应该选择什么采样率。

这些是电机的规格:


电压:DC 6V
速度:210 rpm
编码器电机端:11个信号
额定电压:DC 6V
空载速度:210RPM 0.13A
最大效率:2.0kg.cm/170rpm /2.0W/0.60A
最大功率:5.2kg.cm/110rpm/3.1W/1.10A减速器减速比:1:34
霍尔分辨率:霍尔x比率34.02 = 341.2PPR


当机器人以所需速度移动时,如果每100ms采样一次,我会得到20个编码器信号;如果我每100ms采样一次,我将得到10个编码器信号。每50毫秒采样一次。

我的问题是,收集编码器计数的合理频率是多少?
在50毫秒时,我会获得更高的频率,因此我的PID调整可以更频繁地进行,但是信号只有10个,所以分辨率似乎有点低。
在100ms时,我得到20个滴答声,这应该提供更一致的统计信息,但是可能调整速度不够快。

在驾驶机器人漫游车时,是否有一些经验法则可以为PID选择采样率?

评论

您是否正在RPi上运行电机控制器?编码器是否直接连接到其输入?那里有实时系统吗?

我是。编码器直接连接到GPIO引脚,并使用中断检测编码器滴答声。它运行的是Raspbian系统,而不是实时系统。

#1 楼

关于控制系统所需的采样频率,可能会有一些非常强有力的理论结果。在没有更好答案的情况下,我有:


从科学或数学的角度考虑采样率时,指南会涉及更多内容,超出了本博客的范围。尽管如此,还是普遍接受的最佳做法是将采样率基于过程数据的频率或基于时间的成分。基本公式建议使用比处理时间常数快5-10倍或比处理死时间快3-5倍的数据。


有几个链接在报价单中定义过程时间常数和过程停滞时间。

通常,更快可能更好。如果您声明毫秒级的显着变化,则应提供比此更快的控件更新。根据我的经验(地面和海上机器人技术),10Hz通常就足够了。