星球大战里面有2个非常出色的机器人一个是3PO,一个是R2。我的机器人呢就叫小豆包啦,代号FR2,不许侵犯它的署名哦。
常见的机器人运动模型包括:速度计运动模型,里程计运动模型和惯导运动模型。概率运动模型是对机器人运动的一种概率描述。
里程计是比较常见的一种类型。严格来说,里程计是一种传感器测量信息而非控制信息。如果将里程计视为测量信息,贝叶斯滤波需要包含速度作为状态变量,将增加状态空间的维度。因此,为了减少状态空间,通常将里程计数据视为控制信号。
首先是定义:
小豆包在t−1时刻的位姿xt−1=(x,y,θ)T,t时刻的位姿xt=(x′,y′,θ′)T运动控制信息ut,概率运动模型为P{xt|ut,xt−1}。
其中,运动控制信息ut={¯¯¯xt−1,¯¯¯xt}。¯¯¯xt−1=(¯¯¯x,¯¯¯y,¯¯¯θ)T,¯¯¯xt=(¯¯¯x′,¯¯¯y′,¯¯¯θ′)T。
将小豆包在(t−1,t]时间间隔内的运动分解为三个阶段:旋转δrot1,平移δtrans,旋转δrot2.
转向和平移都存在不确定性,则存在三个阶段的误差,认为三个阶段的误差相互独立,采用高斯分布表达这种不确定性。

运用高斯分布表达噪声模型,则运动模型算法流程如下:
1: Algorithm motion_model_odometry (xt,ut,xt−1):
2: δrot1=atan2(¯¯¯y′−¯¯¯y,¯¯¯x′−¯¯¯x)−¯¯¯θ
3: δtrans=(¯¯¯x−¯¯¯x′)2+(¯¯¯y−¯¯¯y′)2
4: δrot2=¯¯¯θ′−¯¯¯θ−δrot1 //里程计读数,运动控制信息ut
5: δrot1=atan2(y′−y,x′−x)−θ
6: δtrans=(x−x′)2+(y−y′)2
7: δrot2=θ′−θ−δrot1
8: p1=prob(δrot1−ˆδrot1,α1ˆδ2rot1+α2ˆδ2rot1)
9: p2=prob(δtrans−ˆδtrans,α3ˆδ2trans+α4ˆδ2rot1+α4ˆδ2rot2)
10: p3=prob(δrot2−ˆδrot2,α1ˆδ2rot2+α2ˆδ2trans)
11: return p1⋅p2⋅p3
|
采用采样方式表达运动模型,主要运用于粒子滤波算法中:
1: Algorithm Sample_motion_model_odometry (ut,xt−1):
2: δrot1=atan2(¯¯¯y′−¯¯¯y,¯¯¯x′−¯¯¯x)−¯¯¯θ
3: δtrans=(¯¯¯x−¯¯¯x′)2+(¯¯¯y−¯¯¯y′)2
4: δrot2=¯¯¯θ′−¯¯¯θ−δrot1 //里程计读数,运动控制信息ut
5: ˆδrot1=δrot1−sample(α1ˆδ2rot1+α2ˆδ2rot1)
6: ˆδtrans=δtrans−sample(α3ˆδ2trans+α4ˆδ2rot1+α4ˆδ2rot2)
7: ˆδrot2=δrot2−sample(α1ˆδ2rot2+α2ˆδ2trans) //为运动控制的变化量增加误差项
8: x′=x+ˆδtranscos(θ+ˆδrot1)
9: y′=y+ˆδtranscos(θ+ˆδrot1)
10: θ′=θ+ˆδrot1+ˆδrot2 //加在t−1时刻的位姿上,计算出t时刻的位姿
11: return xt=(x′,y′,θ′)T
|
里程计数据通过轮编码器获取,随着时间的推移,误差会不断累积,而且角度误差累积的更厉害。IMU对角度的误差累积比距离累积要小。另外,机器人也可能存在机器人“绑架”之类的机械问题。这些都是运动模型的局限性,需要对运动观测数据进行优化校正,提高机器人的位姿精度。
机器人“绑架”指的是机器人在运动过程中发生了滑动,机器人传感器观测并不知道此情况的发生。
其他的运动模型:Probabilistic Motion Models
实例:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
2013-04-03 [GL]三维场景的组织
2012-04-03 ArcEngine编辑功能(五)
2012-04-03 委托和事件的一点思考