首页 > 解决方案 > UP Squared GPIO 引脚无法正确读取

问题描述

我目前正在研究一个自主机器人。开始时,我们使用 Raspberry Pi 从 GPIO 引脚上的旋转编码器收集数据。我们编写了一个 python 文件,当我们将轮子旋转 1 次时,它可以完美地读出 73.736 个脉冲。我们使用轮与编码器的比率和编码器旋转 1 圈的脉冲量来计算这个脉冲量。号码是正确的。

后来,我们注意到我们的相机丢失帧是由于 SDK 在 Raspbian 上不能很好地工作。就在那时,我们决定加入 UP Squared 董事会。我们安装了 Ubuntu 18.04,因为我们使用的是 ROS Melodic,并且 SDK 更适用于这个操作系统。UP Squared 板现在可以完美地与相机配合使用,并且可以很好地接管 Pi 的其他任务。

我们尝试了我们的脚本来读出我们在 UP Squared 上的编码器。起初我们没有得到任何结果,因为内核不支持 GPIO 和不是为 Ubuntu 18.04 制作的 RPi.GPIO 包。我们将内核降级到 5.0.0 通用版本,并制作了三个版本的脚本:原始版本,一个使用 mraa 包,一个使用外围包。我们还设法为 Ubuntu 18.04 安装了一个 RPi.GPIO 包。

我们让他们三个都读出了我们的编码器数据!但不是正确的方式......当我们驱动我们的机器人真的很慢时,它们都倾向于每转 73.736 个脉冲,但是当我们驱动全功率时,它们只能读取 17-24K 脉冲。我们开得越慢,我们通过的脉冲就越多。此外,当我们开得快时,脚本认为我们向前行驶,当我们开得慢时,它认为我们向后行驶。当我们倒车时,情况正好相反。

我们已经进行了一段时间的故障排除......这是我们注意到并试图抓住的一些事情:

我提供了我们的 mraa 脚本来读出带有这个问题的编码器。外围和 RPi.GPIO 变体使用相同的方法。

我们认为这可能是由于脉冲来得太快,但我认为如果 Raspberry 可以处理它,那么 UP Squared 也应该能够做到这一点。也许处理器计数器/时钟或中断有问题影响我们的脚本?有谁知道为什么不是所有的脉冲都通过?

提前非常感谢!净连

在此处输入图像描述

标签: pythonrosgpioupsquared

解决方案


推荐阅读