无人驾驶小车调试笔记(六)-- 车轮校准

2023-05-16

        简介:小车的动力完全来自于两个电机带动的车轮,在理想状态下,给两个电机同样的驱动参数,两个车轮会以同样的转速带动小车直线行驶,而实际情况是每个电机可能都会有个体差异,也就是说给予同样的驱动参数,表现出的转动速度会有些许不同,两个轮子的差速会导致车辆拐弯,后果就是给了直线行驶的控制命令,但是车走着走着就偏离了原本的方向,所以在开始控制之前,我们需要先平衡两个车轮的转速,保证在同样驱动参数下,两个车轮转速大致相同,也就是可以走直线。

        车轮校准分为3步,测试、调整后再测试、保存参数,第二步循环执行若干次,直到小车大致可以走直线。具体过程如下:

首先参考上一节内容,可以通过键盘控制小车行走:

在虚拟机内打开终端,输入命令:

$ dts duckiebot keyboard_control duckiebot1

等待系统开启一个带方向按钮的控制窗口,激活窗口,通过键盘上的↑↓←→键即可控制小车移动。

然后在地面上贴一条直线做参考,可以用胶带,也可以找原本就存在的直线参考(地面不能太滑),将小车放到直线的起点,方向与直线平行,然后控制小车向前行驶2米左右,观察小车位置:

如果小车位置在直线上偏差不大(10cm以内),说明当前配置合适,不需要调整,如果偏差比较大,观察小车偏离方向,根据偏离方向执行以下命令:

偏左的情况下

$ rosparam set /duckiebot1/kinematics_node/trim -0.1

或者偏右的情况下

$ rosparam set /duckiebot1/kinematics_node/trim 0.1

规则为左负右正,设置完以后再次测试,如果依然偏差较大,则增加调整参数的绝对值,直到小车直线行驶偏差不大为止。

然后还有一个参数需要适当调整 /duckiebot1/kinematics_node/gain,该参数整体控制车轮转速,取值为0~1,默认为1,值越大小车速度越快,越小小车速度越慢,如果车辆行驶车轮打滑严重,则需要适当缩小gain的值,调整命令如下:

$ rosparam set /duckiebot1/kinematics_node/gain 0.9

最后保存设置后的参数:

$ rosservice call /duckiebot1/kinematics_node/save_calibration

注:rosparam set paramName paramValue 是修改系统参数的命令,对应有rosparam get paramName,可以查看参数值

附kinematics_node节点其他参数说明:

gain:应用于所需速度的缩放因子,默认是1.0

trim:修剪因子,通常用于抵消左右电机的行为差异,建议使用一个值,当给出forward命令时,该值将导致机器人沿直线移动,默认值为0.0

baseline:机器人的两个轮子之间的距离,默认为0.1

radius:轮子的半径,默认为0.0318

k:电机常数,假设两个电机相等,默认为27.0

limit:限制发送给电机的最终命令,默认为1.0

v_max:限制输入速度,默认为1.0

omega_max :限制输入转向角度,默认为8.0

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无人驾驶小车调试笔记(六)-- 车轮校准 的相关文章

  • python3安装以及安装pip之后出现的问题

    python3在windows10上的安装 xff0c 为了省事 xff0c 直接下载的是python 3 7 4 embed adm64 zip免安装版本 xff0c 下载解压 xff0c 然后将python目录加入环境变量的path中
  • eclipse安装pydev插件开发python程序

    做Java开发的 xff0c 想学习python xff0c 可以不用安装别的pycharm IDE xff0c 我们直接通过在eclipse中安装一个python插件pydev即可 xff0c 前提是你的机器上已经安装了python xf
  • docker私有镜像服务搭建

    docker容器技术已经在部署服务上使用的非常普遍 xff0c 主要是它的隔离性以及快速启动的特性 xff0c 一般启动一个容器 xff0c 如果镜像不存在会先去dockerhub仓库下载 xff0c 然后存储在本地 xff0c 后续可以继
  • vs2017开发第一个desktop应用程序

    desktop应用程序也叫窗口程序 xff0c 我们平时在电脑上安装的APP xff0c 都是桌面程序 xff0c 比如QQ xff0c 各种播放器 xff0c 包括浏览器 桌面程序最主要的特点 xff0c 就是点击运行之后 xff0c 会
  • 量子编程入门第一篇环境搭建dotnet-sdk+Microsoft.Quantum.IQSharp+python3.6+qsharp

    量子编程已经提上日程 xff0c 微软提供了quantum开发工具包 Microsoft Quantum Development Kit简称QDK xff0c 在visual studio 2019环境下 xff0c 可以安装quantum
  • ROS2学习笔记(十)-- ROS2 launch启动文件

    简介 xff1a 接触过ROS1的同学对launch肯定不陌生 xff0c 在ROS1中 xff0c 我们常用launch实现node和master同时启动 多节点同时启动配置等功能 xff0c ROS2中的launch也是用于多节点启动
  • 记录一次解决TypeError: 'NoneType' object is not callable的办法

    如题所示 xff0c 这是python运行时报错 xff0c 关键信息就是 xff1a TypeError 39 NoneType 39 object is not callable xff0c 错误栈信息如下 xff1a 有的文章提示 x
  • windows下VC++6.0编写c++程序连接mysql示例

    windows下通过c 43 43 编码连接mysql数据库 xff0c 需要做一些设置 xff0c 因为我们需要连接mysql并执行相关操作 xff0c 需要使用mysql提供的api xff0c 这api在mysql h头文件中定义了
  • windows修改cmd命令行字体

    默认情况下 xff0c windows命令行字体只有两种 xff0c 点阵字体和新宋体 如果你想使用系统自带的其他字体 xff0c 需要更改注册表 这里介绍如何修改 windows系统字体在目录C Windows Fonts 下 xff0c
  • centos7安装与配置DNS服务器

    centos7上安装DNS服务器可以实现域名与IP的双向解析 xff0c 即通过域名可以找到主机IP xff0c 也可以通过IP找到域名 在postfix搭建邮件服务器中 xff0c 需要用到DNS正向解析与反向解析 xff0c 因此DNS
  • springboot项目单元测试

    springboot项目和普通的spring项目一样也可以做单元测试 xff0c 一般是测试service层的方法 xff0c 在进行项目构建的时候 xff0c 需要在springboot默认依赖的基础上 xff0c 再加上spring b
  • ipfs星际文件系统初体验

    ipfs是InterPlanetary File System的简称 xff0c 即星际文件系统 xff0c 他不同于一般的操作系统文件系统 xff0c 也不同于分布式文件系统 xff0c 因为分布式文件系统最终访问文件还是采用的http协
  • truffle构建以太坊应用并测试第一个helloworld智能合约

    最近因为国家对区块链又重视起来了 xff0c 相信今年年底到明年年初会是一个区块链的新的爆发点 xff0c 也是碰巧学习了一下以太坊构建区块链应用 xff0c 以前都是简单的了解 xff0c 并没有实际动手演练 今天趁机会也学习一下区块链
  • docker启动报错:standard_init_linux.go:211: exec user process caused "no such file or directory"

    如题所示 xff0c 根据自己构建的镜像启动docker容器 xff0c 直接退出 xff0c 查看容器日志报错信息 xff0c 没有任何别的信息 网上搜索这个问题 xff0c 发现很多人都遇到过 xff0c 解决办法也各不相同 xff0c
  • windows下telnet回显解决办法

    telnet相信大家都用过 xff0c 在tcp连接中 xff0c 我们可以用来模拟发送客户端请求 xff0c 当我们输入telnet 127 0 0 1 8888连接本机的tcp 8888端口时 xff0c 连接成功后 xff0c 会进入
  • springboot与flyway集成做数据迁移

    flyway是一种用来做数据迁移的框架 xff0c 如果你的项目不是jpa 43 hibenate xff0c 比如使用的mybatis xff0c 那么你需要在实体创建之前 xff0c 在数据库中生成表结构 xff0c 然后逆向工程 xf
  • ROS2学习笔记(十一)-- ROS2 bag数据记录与回放

    简介 xff1a ROS2提供了ros2 bag命令 xff0c 可以记录指定主题的数据到文件中 xff0c 也可以将记录下的内容再发布出来 xff0c 相当于是数据的回放 xff0c 除了通过命令行的方式实现数据记录以外 xff0c 也可
  • C++实现简单链表

    链表是最常用的一种数据结构 xff0c 无论什么语言 xff0c 学习数据结构 xff0c 都绕不开链表 xff0c 下面通过c 43 43 来实现简单链表 xff0c 所谓简单链表 xff0c 就是构建链表 xff0c 然后遍历打印链表

随机推荐

  • 二分查找算法介绍

    二分查找算法的实现过程如下 xff1a 在排序数组中查找某一个数据项 xff0c 首先让待查数据与中间下标元素开始比较 xff0c 如果相等则返回 xff0c 如果小于中间下标元素 xff0c 重新开始从低位开始 xff0c 中间下标 1
  • centos7下安装gitlab-ci持续集成实战

    gitlab提供了ci cd持续集成 持续部署的功能 xff0c 当我们安装了gitlab之后 xff0c 需要单独再安装gitlab ci multi runner xff0c 其实就是gitlab runner xff0c 为了试验 x
  • centos7下安装单机版kubernetes实战

    kubernetes是docker分布式解决方案 xff0c 是当前最火的docker解决方案 xff0c 一般初学者适合玩单机安装 kubernetes安装很简单 xff0c 只需要通过yum安装etcd kubernetes即可 默认k
  • c++使用malloc来做内存分配创建链表

    c 43 43 中创建链表可以直接通过new对象的方式创建节点 xff0c 然后将节点之间的关系通过next指针来关联起来 xff0c 另外 xff0c 也可以通过malloc来分配内存 xff0c 创建节点 这里介绍如何通过malloc来
  • javascript模块化编程commonjs,cmd,amd规范之间的区别

    模块化编程是javascript语言的一个特性 xff0c 其实不光javascript语言有模块化思想 xff0c java9也支持模块化 xff0c 所以说模块化是一种编程的趋势 xff0c 也是一种新的解决方案 模块化编程将我们以前单
  • postgresql开启类似mysql查询语句后面跟\G一样按行展示列数据选项

    通常 xff0c 我们在使用数据库的时候 xff0c 为了让单条记录看着更清晰 xff0c 不会被控制台长度折断 xff0c 会将记录按行来展示 xff0c 在mysql数据库中 xff0c 查询语句后面跟上 G就可以实现这个效果 xff0
  • linuxmint下通过eclipse安装android开发环境sdk,adt并新建与启动项目各种踩坑

    最近安装了linuxmint19 2系统 xff0c 这个系统是ubuntu系列 xff0c 适合桌面操作系统 xff0c 据说比ubuntu好 可以先看看系统的一些特征 xff1a 这里的系统设置 xff0c 很像mac系统 xff0c
  • 安卓手机开启开发者选项

    一般我们将安卓手机通过数据线连接到电脑 xff0c 会提示将手机用于干什么 xff0c 有传输文件选项 xff0c 充电选项 xff0c 开发者调试选项 我们选择充电之后 xff0c 再不会出现这个提示 有的手机开发者选项不会显示在设置界面
  • webpack前端项目构建框架

    前端项目构建框架有很多 xff0c 常见的有grunt xff0c gulp xff0c 为什么还有webpack呢 xff1f 前端构建工具一般都是将js合并压缩 xff0c css合并压缩 xff0c 以达到减少体积 xff0c 提高加
  • 两轮差速小车循线控制原理分析

    硬件资料设定 xff1a 小车驱动来自于两个相同的电机 xff0c 转向依靠两轮差速实现 xff0c 小车前后左右安装超声波传感器 xff0c 前后各一个 xff0c 左右各两个 xff1b 功能目标 xff1a 假设小车左侧有墙壁 xff
  • webpack前端项目构建框架续

    在前一篇文章中 xff0c 介绍webpack构建普通web项目 xff0c 一般而言没有太大的意义 xff0c 我们需要使用webpack构建es6 xff0c react等这些新的语法或者特性的项目 xff0c 因为涉及了很多语法的转换
  • html页面报错Uncaught SyntaxError: Cannot use import statement outside a module

    如题所示 xff0c 在我们学习es6的时候 xff0c 使用export导出模块 xff0c 使用import导入模块的语法时 xff0c 我们需要将我们在html中声明的标签 lt script gt lt script gt 类型ty
  • redux入门示例

    redux是一个将ui与数据操作分离的框架 xff0c 可以与vue或者react配合使用 保证了数据集中修改 xff0c 然后渲染 xff0c 可以防止用户在外部随意修改state状态树 redux利用store来统一管理state xf
  • redux入门示例续

    前面一篇介绍了利用redux框架来实现计数器的例子 xff0c 了解了redux设计思想 xff0c 他将ui响应与数据更改分离 xff0c 集中处理状态变更 xff0c 然后渲染到页面 xff0c 当有用户操作的时候 xff0c ui响应
  • react项目启动报错:Error: ENOSPC: System limit for number of file watchers reached

    如题所示 xff0c 最近在使用npm start启动react项目的时候 xff0c 经常会报这个错误 xff0c 出错原因大致意思是文件监控数量超过了系统限制 其实就是打开的文件过多导致的 xff0c 不管是什么文件 xff0c 只要有
  • Support for the experimental syntax 'decorators-legacy' isn't currently enabled

    如题 xff0c 出现这个错误 xff0c 是因为react项目中使用了 64 语法的装饰器 xff0c 而我们项目的一些配置没有设置正确导致的 为了使用装饰器 xff0c 需要修改如下三处配置 xff1a 1 运行依赖 npm insta
  • react hooks useEffect副作用钩子使用

    react框架开发作为入门 xff0c 我们首先学到的是自定义组件 xff0c 然后编写相关处理逻辑 xff0c 绑定事件等等 一般自定义组件 xff0c 我们是通过编写一个class继承React Component xff0c 然后编写
  • 使用mocha与should库做nodejs单元测试

    nodejs是服务端开发 xff0c 他也可以做单元测试 xff0c 只不过 xff0c 这个单元测试一般是针对某一个文件或者一个模块而言 xff0c 我们经常看到github上的很多项目各自的文件夹中都有很多xxx test js这样的文
  • javascript reduce()方法示例

    reduce在大数据框架mapreduce中是一个合并的过程 xff0c 将所有的数据 xff0c 按照一定的规则合并 xff0c 一步步缩小范围 xff0c 最后合并为一个最大的集合或者对象 在javascript中 xff0c redu
  • 无人驾驶小车调试笔记(六)-- 车轮校准

    简介 xff1a 小车的动力完全来自于两个电机带动的车轮 xff0c 在理想状态下 xff0c 给两个电机同样的驱动参数 xff0c 两个车轮会以同样的转速带动小车直线行驶 xff0c 而实际情况是每个电机可能都会有个体差异 xff0c 也