ros2 - slam - 直流电机-编码器脉冲测量与校准

news/2024/7/5 6:15:15/文章来源:https://www.cnblogs.com/ai-ldj/p/18279680

这一节我们编写代码来尝试下是否能够读取到电机上编码器的脉冲数,并通过实验测试出小车的输出轴转速和编码器脉冲的比值。

一、新建工程并导入开源库
新建example25_encoder

添加依赖

[env:featheresp32]  ; 这是一个环境配置标签,指定了代码将运行的硬件平台和框架
platform = espressif32  ; 指定了使用的平台为Espressif 32
board = featheresp32  ; 指定使用的硬件板为Feather ESP32
framework = arduino  ; 指定使用的框架为Arduino
lib_deps =  ; 列出所有依赖库的URL,这些库将被下载和安装https://github.com/fishros/Esp32PcntEncoder.git  ; ESP32 编码器驱动库

这里我们使用的是Esp32PcntEncoder开源库,这个库调用了ESP32的脉冲计算外设进行编码器脉冲的计算,使用非常简单。

 二、代码实现
编写代码

#include <Arduino.h>
#include <Esp32PcntEncoder.h>Esp32PcntEncoder encoders[2]; // 创建一个数组用于存储两个编码器void setup()
{// 1.初始化串口Serial.begin(115200); // 初始化串口通信,设置通信速率为115200// 2.设置编码器encoders[0].init(0, 32, 33); // 初始化第一个编码器,使用GPIO 32和33连接encoders[1].init(1, 26, 25); // 初始化第二个编码器,使用GPIO 26和25连接
}void loop()
{delay(10); // 等待10毫秒// 读取并打印两个编码器的计数器数值Serial.printf("tick1=%d,tick2=%d\n", encoders[0].getTicks(), encoders[1].getTicks());
}

上面这段代码使用了ESP32PcntEncoder库来读取两个旋转编码器的计数器数值。其中,函数setup()用于初始化串口和编码器;函数loop()用于读取并打印两个编码器的计数器数值。以下是代码的详细解释:

首先包含了两个头文件Arduino.h和Esp32PcntEncoder.h,用于编写Arduino程序和使用ESP32PcntEncoder库。
在全局变量中创建了一个长度为2的Esp32PcntEncoder数组,用于存储两个编码器。
函数setup()用于初始化串口和编码器。在本代码中,首先通过Serial.begin()函数初始化串口,设置通信速率为115200。然后通过encoders[0].init()和encoders[1].init()函数分别初始化了两个编码器。其中,函数init()需要传入三个参数,分别是编码器的ID、引脚A的GPIO编号和引脚B的GPIO编号。在本代码中,第一个编码器的ID为0,引脚A连接的GPIO为32,引脚B连接的GPIO为33;第二个编码器的ID为1,引脚A连接的GPIO为26,引脚B连接的GPIO为25。
函数loop()用于读取并打印两个编码器的计数器数值。在本代码中,首先通过delay()函数等待10毫秒。然后通过encoders[0].getTicks()和encoders[1].getTicks()函数分别读取了两个编码器的计数器数值。最后通过Serial.printf()函数将这两个数值打印。

三、下载测试
将代码下载进入开发板,打开串口监视器,查看输出。

 四、脉冲/圈计算
为了计算一个脉冲轮子前进的距离,我们可以通过手动将轮子旋转10圈,然后利用前面的公式进行计算。
这里小鱼将轮子转动10圈后得到脉冲数为19419,也就是说当前电机1941.8个脉冲/圈

 根据公式可以算出,一个脉冲轮子前进的距离为:

接着我们可以利用公式计算速度。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/736255.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在开发环境中使用 RawCap 和 Wireshark 排查本地回路地址

如何使用 RawCap 和 Wireshark 排查本地网络请求中的404错误 开发微服务应用时,正确配置网络请求的转发至关重要。本文将通过一个具体示例来展示如何使用 RawCap 和 Wireshark 来监控和分析本地回路请求,并排查导致 HTTP 404 错误的可能原因。 背景 在本例中,用户的浏览器请…

AI冲击创意岗位,OpenAI技术官语出惊人:一些岗位或许本不该存在哈哈,这些段子有意思,太幽默了,篇篇精彩

现在老美在人工智能领域对我们卡脖子了,但人工智能就像一把达摩克利斯之剑,正威胁着越来越多的创意工作岗位。 OpenAI 的首席技术官米拉・穆拉蒂 (Mira Murati) 上个月在达特茅斯大学 Thayer 工程学院的采访中表示:“一些创意岗位可能会消失。但也许它们本来就不应该存在 —…

性能测试:主流压测工具介绍

简介 性能压测工具是用于模拟大量用户访问、负载和压力条件的软件工具,以评估系统、应用程序或服务在高负载条件下的性能表现和稳定性。 这些工具通常用于软件开发、测试、部署前的准备以及生产环境中的性能监测和优化。性能压测工具的主要功能包括模拟用户行为、生成大量的请…

springboot实现异步调用demo

异步操作的简单实现springboot实现异步调用 异步调用特点 异步调用在开发程序中被广泛应用,在异步任务中,主线程不需要阻塞等待异步任务的完成,而是可以继续处理其他请求。 异步调用的特点如下:非阻塞:主线程在调用异步方法后不会等待其完成,而是立即返回。 后台处理:耗…

智慧工地AI行为监控系统

智慧工地AI行为监控系统主要体现在在工地原有的监控系统上面利用智慧工地AI行为监控系统,对分布在工地各处的监控画面传回的视频流进行实时检测。AI行为监控系统可以保障工地施工人员安全,确保工人施工过程及行为符合工地要求规范。这样既保障了工地人员的安全,也同时保证施…

视频监控智能分析技术

视频监控智能分析技术又叫智能视频分析技术,该技术诞生于机器视觉及边缘计算。视频监控智能分析技术是当下在人们生活中应用范围很广的技术之一。智能视频分析技术能够现场监控传回的视频流中抓取图片及人体状态动作信息,建立图片与规则建立映射关系。SuiJi视频监控智能分析技…

TypeScript中,如何利用数组生成一个联合类型

本文由 ChatMoney团队出品 在开发中我们常常会遇到这样一个问题,代码如下: const arr = ["a","b","c","d","e","f","g","h","i","j","k","l",&qu…

图神经网络版本的Kolmogorov Arnold(KAN)代码实现和效果对比

Kolmogorov Arnold Networks (KAN)最近作为MLP的替代而流行起来,KANs使用Kolmogorov-Arnold表示定理的属性,该定理允许神经网络的激活函数在边缘上执行,这使得激活函数“可学习”并改进它们。 目前我们看到有很多使用KAN替代MLP的实验,但是目前来说对于图神经网络来说还没有…

修改yum安装的php的启动用户

在使用yum安装php时,默认情况下,安装完成后php的启动用户是apache 1、编辑php-fpm的配置文件。在大多数Linux系统中,php-fpm的配置文件路径为/etc/php-fpm.d/www.conf。 2、找到配置文件中的`user`和`group`项。默认情况下,`user`的值是apache,`group`的值是apache,即php…

Vue预渲染prerender-spa-plugin+vue-meta-info

前言: 公司现有一个新需求需要在原有的vue2项目上面进行预渲染,进行SEO的优化,在网上进行了一系列的搜索,发现两种简单易上手的方案(1.使用prerender-spa-plugin+vue-meta-info进行打包构建;2.使用nuxt.js在开发过程中就渲染呈现出来) 因是在原有项目基础上进行,所以采…

禅道的使用:如何搭建Ubuntu环境安装禅道

一、禅道安装部署的环境要求 1.禅道安装部署环境推荐使用 Linux + Apache + PHP7.0以上版本+ MySQL5.5以上版本/MariaDB的组合。Nginx其次,不推荐IIS + PHP组合。 2.禅道需要使用PHP的这些扩展:pdo、pdo_mysql、json、filte、openssl、mbstring、zlib、curl、gd、iconv,企业…

vue3.4+最新属性变化

Attribute绑定 新增简写方法 <!-- 与 :id="id" 相同 --> <div :id></div><!-- 这也同样有效 --> <div v-bind:id></div>动态参数 <a v-bind:[demoName]="url"></a>//简写 <a :[demoName]="url&qu…

【Modelsim常见问题】Error: (vsim-3170) Could not find

这个错误发生的原因通常是测试的tb文件模块名和文件名不一致导致,参考如下:

易基因:番茄果实采后处理成熟诱导的DNA甲基化和转录组综合分析 | 作物研究

番茄果实成熟是一个复杂的生理过程,涉及关键基因的去甲基化,改变其转录水平,从而触发一系列生理事件。然而果实采摘后的处理方法,如冷藏、化学处理等,虽然能延长番茄的货架寿命,但通常可能会降低果实品质,目前尚不清楚这些过程是如何改变的。因此,研究采后处理诱导的番…

BPI-M4 Berry USB测试

连接USB鼠标或键盘测试 1、将USB接口的键盘和鼠标插入开发板的USB接口中 2、开发板连接HDMI显示器,并通电启动 3、如果鼠标或键盘能正常操作系统说明USB接口使用正常(鼠标只有在桌面版的系统中才能使用) 连接USB存储设备测试 1、首先将U盘或者USB移动硬盘插入开发板的USB接口…

mac M1 安装miniconda3

进入国内大学镜像库下载安装包https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda 下载包打开终端,开始安装 1、执行命令: bash Miniconda3-latest-MacOSX-arm64.sh 2、输入回车后,阅读文件,输入:q 退出文件 3、输入yes开始安装 4、输入回车选择安装路径- 默认路径…

BPI-M4 Berry 蓝牙调试

通过命令行连接蓝牙 1、首先,确定设备是否有蓝牙设备。输入hciconfig 如果镜像没有则使用下面命令进行安装sudo apt install bluez 2、可以看到有一个hci0的蓝牙设备,接下来就开始连接其他蓝牙设备sudo bluetoothctlpower on #打开蓝牙网卡 devices #列出蓝牙网卡已经配…

win10 php_imagick 扩展的安装

http://www.hzhcontrols.com/new-1729990.html本篇文章介绍的内容是关于win10_php_imagick 扩展的安装,现在分享给大家,有需要的朋友可以参考一下 PHP_imagick 这个扩展是我迄今为止遇到最难安装的扩展主要问题在于正确的文档太少, 今天终于是把这个扩展安装好了. 下面分享一…

BPI-M4 Berry以太网口和WiFi测试

以太网口测试 1、首先将网线的一端插入M4Berry的以太网接口,另一端接入路由器,并确保网络是畅通的。 2、系统启动后会通过DHCP自动给以太网卡分配IP地址。可以输入以下命令查看ip:ifconfig或者ip a 可以看到eth0获取到了10.1.1.207的ip地址 接下来,ping一下百度测试网络是否…