【轮式移动机器人课程笔记 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.hqwc.cn/news/333997.html

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

相关文章

机器学习原理到Python代码实现之NaiveBayes【朴素贝叶斯】

Naive Bayes 朴素贝叶斯算法 该文章作为机器学习的第二篇文章,主要介绍的是朴素贝叶斯算法的原理和应用。学习本章内容建议对概率论中的联合概率以及先验概率、后验概率有初步的学习和掌握。 难度系数:⭐⭐⭐ 更多相关工作请参考:Github 算法…

LeetCode-棒球比赛(682)

题目描述: 你现在是一场采用特殊赛制棒球比赛的记录员。这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分。 比赛开始时,记录是空白的。你会得到一个记录操作的字符串列表 ops,其中 ops[i] 是你需要记录的第…

基于JavaWeb+BS架构+SpringBoot+Vue+Spark的共享单车数据存储系统的设计和实现

基于JavaWebBS架构SpringBootVueSpark的共享单车数据存储系统的设计和实现 文末获取源码Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 文末获取源码 Lun文目录 第一章 概述 2 1.1课题研究背景 2 1.2 课题研究意义 2 1.3国内…

MSB20M-ASEMI迷你贴片整流桥MSB20M

编辑:ll MSB20M-ASEMI迷你贴片整流桥MSB20M 型号:MSB20M 品牌:ASEMI 封装:UMSB-4 特性:贴片、整流桥 最大平均正向电流:2A 最大重复峰值反向电压:1000V 恢复时间:&#xff1…

一条SQL查询语句是如何执行的?

前言 MySQL 的逻辑架构图 大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。 server层: 主要包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间…

代码随想录算法训练营第二十二天| 回溯 93.复原IP地址 78.子集 90.子集II

93. 复原 IP 地址 递归参数:index一定是需要的,记录下一层递归分割的起始位置。还需要一个变量pointNum,记录添加逗点的数量。 递归终止条件:明确要求只会分成4段,所以不能用切割线切到最后作为终止条件,…

以unity技术开发视角对android权限的讲解

目录 前言 Android权限分类 普通权限 普通权限定义 普通权限有哪些 危险权限 危险权限的定义 危险权限有哪些 动态申请权限实例 申请单个权限实例 第一步:在清单文件中声明权限 第二步:在代码中进行动态申请权限 申请多个权限实例 第一步&am…

嵌入式-C语言-江科大-指针的详解与应用

文章目录 一:计算机存储机制二:定义指针三:指针的操作四:数组与指针五:指针的应用道友:最清晰的脚印,踩在最泥泞的道路上。 推荐视频配合我的笔记使用 [C语言] 指针的详解与应用-理论结合实践&a…

视频AI智剪方法:快速批量处理视频,批量剪辑视频的操作

随着科技的飞速发展,视频内容已是获取信息和娱乐的主要方式之一。对于视频创作者和内容生产者来说,如何快速、高效地处理和剪辑大量视频已成为一项重要的需求。现在借助AI技术的不断发展,可以更加智能、高效的处理视频。下面来看云炫AI智剪如…

GC2003七通道NPN 达林顿管,专为符合标准 TTL 而制造

GC2003 内部集成了 7 个 NPN 达林顿晶体管,连接的阵列,非常适合逻辑接口电平数字电路(例 如 TTL,CMOS 或PMOS 上/NMOS)和较高的电流/电压,如电灯电磁阀,继电器,打印机或其他类似的负…

密集架货架厂家|海格里斯HEGERLS智能托盘四向穿梭车系统是如何降本增效的?

随着智能物流需求的不断深入,托盘四向穿梭式立体库因其在流通仓储体系中所具有的高效密集存储功能优势、运作成本优势与系统化智能化管理优势,已发展为仓储物流的主流形式之一。 海格里斯HEGERLS技术 河北沃克截止目前为止已发展有20多年的历史&#xf…

uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -用户信息修改实现

锋哥原创的uniapp微信小程序投票系统实战: uniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )_哔哩哔哩_bilibiliuniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )共计21条视频…