【轮式移动机器人课程笔记 5】运动学仿真

L5 运动学仿真

  • 本节重点: 如何理解推导出的运动学模型
    • 回顾:机器人运动学模型
      • 正向(前向)运动学模型
      • 反向运动学模型
    • 基于MatLab运动学仿真
      • 本节重点,如何利用matlab对运动学进行仿真

5.1 回顾运动学模型

[ x ˙ y ˙ ψ ˙ ] = [ u ⋅ c o s ψ − v ⋅ s i n ψ u ⋅ s i n ψ + v ⋅ c o s ψ r ] = [ c o s ψ − s i n ψ 0 s i n ψ c o s ψ 0 0 0 1 ] [ u v r ] \left[ \begin{matrix} \dot{x}\\ \dot{y}\\ \dot{\psi} \end{matrix} \right] =\left[ \begin{matrix} u\cdot cos\psi - v\cdot sin\psi\\ u\cdot sin\psi + v\cdot cos\psi\\ r \end{matrix} \right] = \left[ \begin{matrix} cos\psi & -sin\psi& 0\\ sin\psi & cos\psi& 0\\ 0 & 0 & 1 \end{matrix} \right]\left[ \begin{matrix} u\\ v\\ r \end{matrix} \right] x˙y˙ψ˙ = ucosψvsinψusinψ+vcosψr = cosψsinψ0sinψcosψ0001 uvr

  • 前向运动学模型

η ˙ = J ( ψ ) ξ \dot\eta = J(\psi)\xi η˙=J(ψ)ξ

  • 反向运动学模型

ξ = J − 1 ( ψ ) η ˙ \xi = J^{-1}(\psi)\dot\eta ξ=J1(ψ)η˙

我们已知上述公式,给出初始位置,给出 ( u , v , r ) (u, v, r) (u,v,r) , 计算后续时刻的 ( x , y , ψ ) (x, y, \psi) (x,y,ψ)

5.2 运动学模型 MatLab 仿真

以前向运动学模型为例, η ˙ = J ( ψ ) ξ \dot\eta = J(\psi)\xi η˙=J(ψ)ξ 。我们已知初始位置下的 η \eta η , 已知 ξ \xi ξ ,计算后续时刻的 η \eta η 。 可以将其转化为常微分方程的求解问题,常微分方程求解方法之一为 欧拉法(Euler)。 本节将利用 欧拉法(Euler) 对机器人位置信息进行近似计算。首先简要介绍欧拉法:

  • Euler 法


注*:这里只介绍显示 Euler 法(未按照视频中进行整理)。

① 什么是解微分方程?

我们给出一个微分方程: y ′ = f ( x , y ) y' = f(x,y) y=f(x,y) 。一般的解法是根据给出的微分方程先获得
y = ∫ f ( x , y ) d x + a y = \int f(x,y) dx +a y=f(x,y)dx+a
上式为一般解(通解)。

若给出初始条件,即 y ( x 0 ) = y 0 y(x_0) = y_0 y(x0)=y0, 则可获得微分方程的特殊解(特解)。

② 欧拉法解微分方程

在这里插入图片描述

欧拉法是利用直线近似来求解微分方程。

上图中,因 x x x 是时间 t t t 上的函数, x ′ ( t ) x'(t) x(t) 已知。

在图中曲线上对 t t t t + 1 t+1 t+1 时刻进行采样,分别为 x i x_i xi x i + 1 x_{i+1} xi+1 t i + 1 − t i = δ t t_{i+1}-t_i = \delta_t ti+1ti=δt(此为步长,即取值或采样的间隔是固定的,均为 δ t \delta_t δt)。

欧拉法的思想是将 t i 、 t i + 1 t_i 、t_{i+1} titi+1 区间的线段看作直线,并利用此段的斜率来近似原微分方程中 t i t_i ti处的导数,用公式表示为:
x ′ ( i ) ≈ x i + 1 − x i t i + 1 − t i = x i + 1 − x i δ t 则: x i + 1 − x i = x ′ ( i ) δ t x i + 1 = x i + x ′ ( i ) δ t x'(i) \approx \frac{x_{i+1}-x_i}{t_{i+1}-t_i} = \frac{x_{i+1}-x_i}{\delta_t} \\ 则: x_{i+1} - x_i = x'(i)\delta_t\\ x_{i+1} = x_i+x'(i)\delta_t x(i)ti+1tixi+1xi=δtxi+1xi则:xi+1xi=x(i)δtxi+1=xi+x(i)δt
上式中, x i + 1 = x i + x ′ ( i ) δ t x_{i+1} = x_i+x'(i)\delta_t xi+1=xi+x(i)δt 即为欧拉公式(这里要给出初始条件,即 x ( t 0 ) = x 0 x(t_0) = x_0 x(t0)=x0 ),利用迭代可计算 x t + 1 x_{t+1} xt+1 的值。

  • 利用Euler法对运动学模型进行仿真
%% Kinematic simulation of a land-based mobile robot
clear all; clc; close all;%% Simulation parameters
dt = 0.1; % Step size 步长
ts = 10; % Simulation time 模拟时间
t = 0:dt:ts;% Time span 时间从0开始,按步长0.1 变化到10%% Initial conditions
x0 = 0; % x初始位置
y0 = 0; % y初始位置
psi0 = 0; %\psi的初始位置eta0 = [x0;y0;psi0]; % 对应[x y \psi]eta(:,1) = eta0 % 将eta0赋值给eta矩阵的第一列%% Loop starts here
for i = 1:length(t)psi = eta(3,i); % current orientation in rad%fprintf("psi is %f\n", psi)%Jacobian matrixJ_psi = [cos(psi),-sin(psi),0;sin(psi), cos(psi),0;0,0,1];u = 0.1; % x-axis velocity W.r.t B framev = 0.05; % y-axis velocity W.r.t B framer = 0.0;% angular velocity W.r.t B framezeta(:,i)=[u;v;r];eta_dot(:,i) = J_psi * zeta(:,i);eta(:,i+1)=eta(:,i)+dt*eta_dot(:,i); %Euler method
end%% Plotting functions
figure
plot(t, eta(1,1:i), 'r-');
set(gca, 'fontsize',24);
xlabel('t,[s]');
ylabel('x,[m]');

下图为 t = 0 t= 0 t=0时,机器人位置 为 (0, 0, 0), 初始速度信息为 (0.1, 0.05, 0.1), t = 10 t=10 t=10 内,机器人的位置变化。

在这里插入图片描述


本节完

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

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

相关文章

离线AI聊天清华大模型(ChatGLM3)本地搭建

在特定的情况下,要保证信息安全的同时还能享受到AIGC大模型带来的乐趣和功能,那么,离线部署就能帮助到你,最起码,它是一个真正可用的方案。 大模型本身清华的 (ChatGLM3),为的是对中文支持友好&#xff0c…

Unity Editor实用功能:Hierarchy面板的对象上绘制按按钮并响应

目录 需求描述上代码打个赏吧 需求描述 现在有这样一个需求: 在Hierarchy面板的对象上绘制按钮点击按钮,弹出菜单再点击菜单项目响应自定义操作在这里的响应主要是复制对象层级路路径 看具体效果请看动图: 注: 核心是对Edito…

霹雳吧啦Wz《pytorch图像分类》-p6MobileNet网络

《pytorch图像分类》p6MobileNet网络结构详解 1 MobileNet v1网络1.1 Depthwise convolution(DW卷积)1.1.1Depthwise separable convolution(深度可分的卷积操作) 1.2 增加超参数α和β 2 MobileNet v2网络2.1 Inverted Residuals…

传统 VC 机构,是否还能在 Fair launch 的散户牛市中胜出?

LaunchPad 是代币面向市场的重要一环,将代币推向市场,加密项目将能够通过代币的销售从市场上募集资金,同时生态也开始进入全新的发展阶段。而对于投资者来说,早期打新市场同样充满着机会,参与 LaunchPad 对于每一个投资…

ubuntu 18.04网络问题

ubuntu 18.04网络问题汇总 准备工作一、有线网卡不可用二、无法访问外网 准备工作 安装好系统之后,检查gcc和make是否已经安装 $ which gcc /usr/bin/gcc $ which make /usr/bin/make如果未安装,则安装gcc和make $ apt install gcc $ apt install mak…

基于ssm个性化旅游攻略定制系统设计与实现+jsp论文

摘 要 在如今社会上,关于信息上面的处理,没有任何一个企业或者个人会忽视,如何让信息急速传递,并且归档储存查询,采用之前的纸张记录模式已经不符合当前使用要求了。所以,对个性化旅游攻略信息管理的提升&…

GO语言笔记2-变量与基本数据类型

变量使用步骤 声明赋值使用 package main import "fmt" func main(){var age int //声明一个 int类型的变量叫ageage 18 //给变量用 赋值fmt.Println(age) //使用变量 输出变量的值 } 编译运行输出变量值 变量的四种使用方式 package main import "fmt&q…

InnoDB引擎

一、逻辑存储结构 ① 表空间(ibd文件),一个mysql实例可以对应多个表空间,用于存储记录、索引等数据。 ② 段,分为数据段(Leaf node segment)、索引段(Non-leaf node segment&#x…

特征工程(二)

特征工程(二) 特征理解 理解手上的数据,就可以更好的明确下一步的方向。从繁杂的切入点中,主要着眼于一下几个方面: 结构化数据与非结构化数据;数据的4个等级;识别数据中存在的缺失值&#xf…

古典吉他教师阿木:来自新疆的音乐才子

阿木,全名木合汤夏甫依克,于 1990 年 10 月 8 日出生在新疆这片美丽的土地上,是一位哈萨克族人。他是英皇认证古典吉他教师、中国社会艺术吉他考级考官、中国智慧工程研究会艺术教育委员会执行委员、新疆吉他艺术节发起人之一兼评审组组长。 阿木自幼受到哥哥的影响,对吉他产生…

强化学习第1天:马尔可夫过程

☁️主页 Nowl 🔥专栏 《强化学习》 📑君子坐而论道,少年起而行之 ​​ 一、介绍 什么是马尔可夫过程?马尔可夫过程是马尔可夫决策过程的基础,而马尔可夫决策过程便是大部分强化学习任务的抽象过程,本文…

206. 反转链表(Java)

题目描述: 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 输入: head [1,2,3,4,5] 输出: [5,4,3,2,1] 代码实现: 1.根据题意创建一个结点类: public class ListNode {int val…

Python pip 常用指令

前言 Python的pip是一个强大的包管理工具,它可以帮助我们安装、升级和管理Python的第三方库。以下是一些常用的pip指令。 1. 安装第三方库 使用pip安装Python库非常简单,只需要使用pip install命令,后面跟上库的名字即可。 # 安装virtuale…

苍穹外卖Day01——解决总结1中存在的问题

前序章节: 苍穹外卖Day01——总结1 解决总结1中存在的问题 1. 什么是JWT2. POJO、Entity、VO、DTO3. Nginx(反向代理)4. Data注解 1. 什么是JWT JWT(JSON Web Token)是一种用于在网络应用间传递信息的开放标准&#…

MongoDB多文档事务详解

事务简介 事务(transaction)是传统数据库所具备的一项基本能力,其根本目的是为数据的可靠性与一致性提供保障。而在通常的实现中,事务包含了一个系列的数据库读写操作,这些操作要么全部完成,要么全部撤销。…

Mysql是怎么运行的(上)

文章目录 Mysql是怎么运行的Mysql处理一条语句的流程连接管理解析与优化存储引擎 基本配置配置文件系统变量状态变量字符集四种重要的字符集MySQL中的utf8和utf8mb4各级别的字符集和比较规则MySQL中字符集的转换排序规则产生的不同的排序结果 InnoDB存储引擎介绍COMPACT行格式介…

LLM大模型和数据标注

对于那些不精通机器学习的人来说,像 ChatGPT 所基于的 GPT-3.5 这样的大型语言模型似乎是自给自足的。这些模型通过无监督或自我监督学习进行训练。简而言之,只需极少的人工干预,就能生成一个能像人类一样对话的模型。 这就引出了一个问题--…

性能分析与调优: Linux 文件系统观测工具

目录 一、实验 1.环境 2.mount 3.free 4.top 5.vmstat 6.sar 7.slabtop 8.strace 9.opensnoop 10.filetop 11.cachestat 二、问题 1.Ftrace实例如何实现 2.Function trace 如何跟踪实例 3.function_graph Trace 如何跟踪实例 4.trace event 如何跟踪实例 5.未…

ESP32-S3 使用内置USB下载程序、调试、LOG相关问题总结

目录 Preface: (一)为电脑安装USB驱动 (二)Platformio工程 (三)相关文章 (四)总结 Preface: esp32-s3有一个built-in的usb-jtag,可以用来下载…

Linux环境vscode clang-format格式化:vscode clang format command is not available亲测有效!

问题现象 vscode安装了clang-format插件,但是使用就报错 问题原因 设置中配置的clang-format插件工具路径不正确。 解决方案-亲测有效! 确认本地安装了clang-format工具:终端输入clang-format(也可能是clang-format-13等版本…