差分轮算法-两个轮子计算速度的方法-阿克曼四轮小车计算方法
四轮驱小车的话:
转向角度计算方法:float turning_angle = z_angular / x_linear; // 转向角度,单位为弧度
速度的话直接用线速度
两轮驱动小车:
计算公式:
leftSpeed = x_linear - z_angular * ORIGINBOT_WHEEL_TRACK / 2.0; #左轮速度
rightSpeed = x_linear + z_angular * ORIGINBOT_WHEEL_TRACK / 2.0;#右轮速度
其中x_linear和z_angular是由del_cmd话题发出来的twist数据
void OriginbotBase::cmd_vel_callback(const geometry_msgs::msg::Twist::SharedPtr msg)
{DataFrame cmdFrame;float leftSpeed = 0.0, rightSpeed = 0.0;float x_linear = msg->linear.x; float z_angular = msg->angular.z;//差分轮运动学模型求解leftSpeed = x_linear - z_angular * ORIGINBOT_WHEEL_TRACK / 2.0;rightSpeed = x_linear + z_angular * ORIGINBOT_WHEEL_TRACK / 2.0;// RCLCPP_INFO(this->get_logger(), "leftSpeed = '%f' rightSpeed = '%f'", leftSpeed * 100, rightSpeed * 100);if (leftSpeed < 0)cmdFrame.data[0] = 0x00;elsecmdFrame.data[0] = 0xff;cmdFrame.data[1] = int(abs(leftSpeed) * 1000) & 0xff; //速度值从m/s变为mm/scmdFrame.data[2] = (int(abs(leftSpeed) * 1000) >> 8) & 0xff;if (rightSpeed < 0)cmdFrame.data[3] = 0x00;elsecmdFrame.data[3] = 0xff;cmdFrame.data[4] = int(abs(rightSpeed) * 1000) & 0xff; //速度值从m/s变为mm/scmdFrame.data[5] = (int(abs(rightSpeed) * 1000) >> 8) & 0xff;cmdFrame.check = (cmdFrame.data[0] + cmdFrame.data[1] + cmdFrame.data[2] + cmdFrame.data[3] + cmdFrame.data[4] + cmdFrame.data[5]) & 0xff;// 封装速度命令的数据帧cmdFrame.header = 0x55;cmdFrame.id = 0x01;cmdFrame.length = 0x06;cmdFrame.tail = 0xbb;try{serial_.write(&cmdFrame.header, sizeof(cmdFrame)); //向串口发数据}catch (serial::IOException &e){RCLCPP_ERROR(this->get_logger(), "Unable to send data through serial port"); //如果发送数据失败,打印错误信息}// 考虑平稳停车的计数值if((fabs(x_linear)>0.0001) || (fabs(z_angular)>0.0001))auto_stop_count_ = 0;// printf("Frame raw data: %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x \n", // cmdFrame.header, cmdFrame.id, cmdFrame.length, cmdFrame.data[0], cmdFrame.data[1], cmdFrame.data[2], // cmdFrame.data[3], cmdFrame.data[4], cmdFrame.data[5], cmdFrame.check, cmdFrame.tail);
}
相关文章:
差分轮算法-两个轮子计算速度的方法-阿克曼四轮小车计算方法
四轮驱小车的话: 转向角度计算方法:float turning_angle z_angular / x_linear; // 转向角度,单位为弧度 速度的话直接用线速度 两轮驱动小车: 计算公式: leftSpeed x_linear - z_angular * ORIGINBOT_WHEEL_TRACK /…...
使用.NET 8构建高效的时间日期帮助类
使用.NET 8构建高效的时间日期帮助类 在现代Web应用程序中,处理日期和时间是一个常见的需求。无论是记录日志、生成报告还是进行数据分析,正确处理日期和时间对于确保数据的准确性和一致性至关重要。本文将详细介绍如何使用ASP.NET Core和C#构建一个高效…...
学习std::is_base_of笔记
1、std::is_base_of简介 在现代 C 中,模板元编程(Template Metaprogramming)是一种非常强大的编程技巧,它让我们能够在编译期进行类型推导和约束。而 std::is_base_of 是一个重要的工具,可以用来检查一个类型是否是另…...
第 25 场 蓝桥月赛
3.过年【算法赛】 - 蓝桥云课 问题描述 蓝桥村的村民们正准备迎接新年。他们计划宰杀 N 头猪,以庆祝一整年的辛勤劳作和丰收。每头猪的初始位置位于下标 xi,所有 xi 均为偶数,保证没有两头猪初始位置相同。 当猪意识到人类打算宰杀它们…...
【设计模式-行为型】访问者模式
一、什么是访问者模式 说起来访问者模式,其实很少用。我一直在思考该用什么样的例子把这个设计模式表述清晰,最近突然想到一个例子也许他就是访问者。港片有过很辉煌的年代,小的时候一直在看港片觉得拍的非常好,而且演员的演技也在…...
无人机微波图像传输数据链技术详解
无人机微波图像传输数据链技术是无人机通信系统中的关键组成部分,它确保了无人机与地面站之间高效、可靠的图像数据传输。以下是对该技术的详细解析: 一、技术原理 无人机微波图像传输数据链主要基于微波通信技术实现。在数据链路中,图像数…...
SpringCloud系列教程:微服务的未来(十七)监听Nacos配置变更、更新路由、实现动态路由
前言 在微服务架构中,API 网关是各个服务之间的入口点,承担着路由、负载均衡、安全认证等重要功能。为了实现动态的路由配置管理,通常需要通过中心化的配置管理系统来实现灵活的路由更新,而无需重启网关服务。Nacos 作为一个开源…...
【QT】 控件 -- 显示类
🔥 目录 [TOC]( 🔥 目录) 1. 前言 2. 显示类控件2.1 Label 1、显示不同文本2、显示图片3、文本对齐、自动换行、缩进、边距4、设置伙伴 3.2 LCD Number 3.3 ProgressBar 3.4 Calendar Widget 3. 共勉 🔥 1. 前言 之前我在上一篇文章【QT】…...
反馈驱动、上下文学习、多语言检索增强等 | Big Model Weekly 第55期
点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 01 A Bayesian Approach to Harnessing the Power of LLMs in Authorship Attribution 传统方法严重依赖手动特征,无法捕捉长距离相关性,限制了其有效性。最近的研究利用预训练语言模型的…...
CF 41A.Translation(Java实现)
题目分析 根据示例千言万语一句话,reverse 思路分析 将读取的值分ab,再将b.reverse和a比较,一样就YES 代码 import java.util.*;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);String …...
14【学历和能力哪个更重要】
这是很多学习的人有的一个疑问,并提出想让我发表下看法,前面一直没空,我刚好完结了一个项目,最近又有时间更新图文课程了,就展开来讲讲 主流的说法有2个 1:学历重要,依据是很多公司招聘都有学历…...
Learning Vue 读书笔记 Chapter 2
2. Vue 基本工作原理 2.1 Virtual DOM 概念: DOM: DOM以内存中树状数据结构的形式,代表了网页上的HTML(或XML)文档内容。它充当了一个编程接口,将网页与实际的编程代码(如JavaScript)连接起来…...
SpringBoot支持动态更新配置文件参数
前言 博主介绍:✌目前全网粉丝3W,csdn博客专家、Java领域优质创作者,博客之星、阿里云平台优质作者、专注于Java后端技术领域。 涵盖技术内容:Java后端、大数据、算法、分布式微服务、中间件、前端、运维等。 博主所有博客文件…...
开发技巧,vue 中的动态组件的引用 component + is
在项目中很多时候有切换 tab 的场景,一般来说都是用 v-if 或者 v-show 然后根据各种条件来控制显示隐藏。 其实我们可以使用 vue 中的动态组件,也能实现这个效果 <!-- currentTab 改变时组件也改变 --> <component :is"currentTab"…...
基于SpringBoot+WebSocket的前后端连接,并接入文心一言大模型API
前言: 本片博客只讲述了操作的大致流程,具体实现步骤并不标准,请以参考为准。 本文前提:熟悉使用webSocket 如果大家还不了解什么是WebSocket,可以参考我的这篇博客: rWebSocket 详解:全双工…...
PSD是什么图像格式?如何把PSD转为JPG格式?
在图形设计的世界里,Photoshop 文档(PSD)格式是 Adobe Photoshop 的原生文件格式,它允许设计师保存图像中的图层、蒙版、透明度和不同色彩模式等信息。对于需要进一步编辑的设计作品来说,PSD 文件提供了极大的灵活性。…...
c语言中mysql_query的概念和使用案例
在 C 语言中,使用 MySQL 数据库需要用到 MySQL C API。mysql_query() 函数是 MySQL C API 中的一个函数,用于执行 SQL 语句。 概念 mysql_query() 函数的原型如下: int mysql_query(MYSQL *mysql, const char *stmt_str)mysql:…...
一次端口监听正常,tcpdump无法监听到指定端口报文问题分析
tcpdump命令: sudo tcpdump -i ens2f0 port 6471 -XXnnvvv 下面是各个部分的详细解释: 1.tcpdump: 这是用于捕获和分析网络数据包的命令行工具。 2.-i ens2f0: 指定监听的网络接口。ens2f0 表示本地网卡),即计算机该指定网络接口捕…...
解决InnoDB: Failing assertion: !lock->recursive
背景: 在arm服务器里运行MySQL5.7.22版本 报错信息 : 2024-11-25T08:07:36.24182508:00 856 [Note] Multi-threaded slave statistics for channel : seconds elapsed 126; events assigned 53431297; worker queues filled over overrun level 0; …...
基于微信小程序的外卖点餐系统设计与实现ssm+论文源码调试讲解
4系统概要设计 4.1概述 本系统后台采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示: 图4-1系统工作原…...
网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...
23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
动态 Web 开发技术入门篇
一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...
基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...
uniapp 开发ios, xcode 提交app store connect 和 testflight内测
uniapp 中配置 配置manifest 文档:manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号:4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...
深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向
在人工智能技术呈指数级发展的当下,大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性,吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型,成为释放其巨大潜力的关键所在&…...
面试高频问题
文章目录 🚀 消息队列核心技术揭秘:从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"?性能背后的秘密1.1 顺序写入与零拷贝:性能的双引擎1.2 分区并行:数据的"八车道高速公路"1.3 页缓存与批量处理…...
Java 与 MySQL 性能优化:MySQL 慢 SQL 诊断与分析方法详解
文章目录 一、开启慢查询日志,定位耗时SQL1.1 查看慢查询日志是否开启1.2 临时开启慢查询日志1.3 永久开启慢查询日志1.4 分析慢查询日志 二、使用EXPLAIN分析SQL执行计划2.1 EXPLAIN的基本使用2.2 EXPLAIN分析案例2.3 根据EXPLAIN结果优化SQL 三、使用SHOW PROFILE…...
