Robotics: Estimation and Learning.WEEK 3

W E E K 3 {\Large WEEK \qquad 3} WEEK3

3.1 关于建图

\qquad 机器人的地图就是其所处的环境。建立一个地图的过程叫做mapping(地图构建)。根据需要解决的问题建立相应的地图:
\qquad 1.使用何种坐标系表示,需要包含何种信息
\qquad 2.可使用的传感器
\qquad 3.机器人的需求
地图的类型:
\qquad 1.尺度地图,位置表示为坐标值,作为移动机器人在自我定位时使用的坐标系。
\qquad 2.拓扑地图,在图中的位置表示为节点,它们之间的连接表示为弧。弧被用来表述节点间的连接代价或者是限制条件,这种图在轨迹规划测验中很有用。
\qquad 3.语义地图,与之前最重要的不同点是标签以及标注对象间的相对位置,可以描述对象的位置,而不使用具体的坐标。
\qquad 之后将要讨论的地图都是尺度地图(下文中的栅格地图),建图所需解决的技术问题:
\qquad 1.在有噪声的测量中估计目标状态
\qquad 2.测量往往在相对坐标系下进行,需要转化为绝对坐标系
\qquad 3.其他机器人问题如轨迹规划与导航等,地图需要实时更新

3.2 构建栅格地图

3.2.1 定义

\qquad “占据”被定义为一个二进制随机变量,随机变量是对真实事物采样空间的函数。“占据”被定义在有两种可能状态的概率空间中包括空闲和被占据
m x , y : { f r e e , o c c u p i e d } → { 0 , 1 } ( 1 ) m_{x,y}:\{free,occupied\}\rightarrow\{0,1\}\qquad(1) mx,y:{free,occupied}{0,1}(1)即随机变量的取值包括0和1。
\qquad 占据栅格地图就是占据变量组成的数组,其中每格都是随机占据变量。
在这里插入图片描述 图 1   占 据 栅 格 地 图 图1\ 占据栅格地图 1 占据栅格地图使用贝叶斯滤波器生成。贝叶斯滤波器意味着地图递归更新。
\qquad 某个事件(X)发生的概率(p(X))的比例可以记为赢率:
O d d : = ( X   h a p p e n s ) ( X   n o t   h a p p e n s ) = p ( X ) p ( X c ) ( 2 ) Odd:=\frac{(X\ happens)}{(X\ not \ happens)}=\frac{p(X)}{p(X^{c})}\qquad(2) Odd:=(X not happens)(X happens)=p(Xc)p(X)(2) \qquad 使用赢率可以带来许多便利。

3.2.2 测量

\qquad 占据栅格算法往往利用一个距离传感器提供距离信息,在地图中每个栅格都只有两种可能的测量结果开放(0)或者被占据(1)。
在这里插入图片描述 图 2   距 离 传 感 器 图2\ 距离传感器 2  \qquad 测量结果中浅蓝色的栅格表示光线可以通过,即为开放栅格。黄色的栅格表示光线不能通过,即为被占据栅格
z → { 0 , 1 } ( 3 ) z\rightarrow\{0,1\}\qquad(3) z{0,1}(3)测量模型
p ( z ∣ m x , y ) ( 4 ) p(z|m_{x,y})\qquad(4) p(zmx,y)(4)测量中仅有的四种条件概率
p ( z = 1 ∣ m x , y = 1 ) : 正 确 占 据 测 量 p ( z = 0 ∣ m x , y = 1 ) : 错 误 开 放 测 量 p ( z = 1 ∣ m x , y = 0 ) : 错 误 占 据 测 量 p ( z = 0 ∣ m x , y = 0 ) : 正 确 开 放 测 量 p(z=1|m_{x,y}=1):正确占据测量\\ p(z=0|m_{x,y}=1):错误开放测量\\ p(z=1|m_{x,y}=0):错误占据测量\\ p(z=0|m_{x,y}=0):正确开放测量 p(z=1mx,y=1)p(z=0mx,y=1)p(z=1mx,y=0)p(z=0mx,y=0) \qquad 依据贝叶斯法则,通过先验、测量模型(似然估计)和归一化参数( η \eta η)推算后验。 p ( m x , y ∣ z ) 后 验 概 率 = p ( z ∣ m x , y ) 似 然 估 计 p ( m x , y ) 先 验 概 率 p ( z ) ( 5 ) \mathop{p(m_{x,y}|z)}\limits^{后验概率}=\frac{ \mathop{p(z|m_{x,y})}\limits^{似然估计} \mathop{p(m_{x,y})}\limits^{先验概率}}{p(z)}\qquad(5) p(mx,yz)=p(z)p(zmx,y)p(mx,y)(5) \qquad 设当实际的状态为被占据状态时,其赢率形式为: O d d ( ( m x , y = 1 ) g i v e n   z ) = p ( m x , y = 1 ∣ z ) p ( m x , y = 0 ∣ z ) ( 6 ) Odd((m_{x,y}=1)given\ z)=\frac{p(m_{x,y}=1|z)}{p(m_{x,y}=0|z)}\qquad(6) Odd((mx,y=1)given z)=p(mx,y=0z)p(mx,y=1z)(6) \qquad 应用条件概率,可以包含进传感器概率模型。
p ( m x , y = 1 ∣ z ) = p ( z ∣ m x , y = 1 ) p ( m x , y = 1 ) p ( z ) ( 7 ) p(m_{x,y}=1|z)=\frac{p(z|m_{x,y}=1)p(m_{x,y}=1)}{p(z)}\qquad(7) p(mx,y=1z)=p(z)p(zmx,y=1)p(mx,y=1)(7)写成赢率形式: O d d : p ( m x , y = 1 ∣ z ) p ( m x , y = 0 ∣ z ) = p ( z ∣ m x , y = 1 ) p ( m x , y = 1 ) / p ( z ) p ( m x , y = 0 ∣ z ) = p ( z ∣ m x , y = 1 ) p ( m x , y = 1 ) p ( z ∣ m x , y = 0 ) p ( m x , y = 0 ) ( 8 ) Odd:\frac{p(m_{x,y}=1|z)}{p(m_{x,y}=0|z)}=\frac{p(z|m_{x,y}=1)p(m_{x,y}=1) /p(z)}{p(m_{x,y}=0|z)}=\frac{p(z|m_{x,y}=1)p(m_{x,y}=1) }{p(z|m_{x,y}=0)p(m_{x,y}=0) }\qquad(8) Oddp(mx,y=0z)p(mx,y=1z)=p(mx,y=0z)p(zmx,y=1)p(mx,y=1)/p(z)=p(zmx,y=0)p(mx,y=0)p(zmx,y=1)p(mx,y=1)(8)取对数形式 L o g − O d d : l o g p ( m x , y = 1 ∣ z ) p ( m x , y = 0 ∣ z ) = l o g p ( z ∣ m x , y = 1 ) p ( m x , y = 1 ) p ( z ∣ m x , y = 0 ) p ( m x , y = 0 ) = l o g p ( z ∣ m x , y = 1 ) p ( z ∣ m x , y = 0 ) + l o g p ( m x , y = 1 ) p ( m x , y = 0 ) ( 9 ) Log-Odd:log\frac{p(m_{x,y}=1|z)}{p(m_{x,y}=0|z)}=log\frac{p(z|m_{x,y}=1)p(m_{x,y}=1) }{p(z|m_{x,y}=0)p(m_{x,y}=0) }=log\frac{p(z|m_{x,y}=1)}{p(z|m_{x,y}=0)}+log\frac{p(m_{x,y}=1)}{p(m_{x,y}=0) }\qquad(9) LogOdd:logp(mx,y=0z)p(mx,y=1z)=logp(zmx,y=0)p(mx,y=0)p(zmx,y=1)p(mx,y=1)=logp(zmx,y=0)p(zmx,y=1)+logp(mx,y=0)p(mx,y=1)(9)
l o g   o d d + = l o g   o d d   m e a s + l o g   o d d − ( 10 ) log\ odd^{+}=log\ odd\ meas+log\ odd^{-}\qquad(10) log odd+=log odd meas+log odd(10)由对数特性右边相乘的两项变成相加在这里插入图片描述 图 3   栅 格 地 图 对 数 赢 率 变 化 图3\ 栅格地图对数赢率变化 3  \qquad 栅格地图存储了每一个栅格的对数赢率,测量模型也变成对数赢率。地图的更新计算变成了求和对数赢率。使用更新法则是需注意两点,第一,只更新观察到的栅格。第二,更新后的值变成了先验信息,整个更新法则是递归的。
\qquad 测量模型为:
l o g p ( z ∣ m x , y = 1 ) p ( z ∣ m x , y = 0 ) ( 11 ) log\frac{p(z|m_{x,y}=1)}{p(z|m_{x,y}=0)}\qquad(11) logp(zmx,y=0)p(zmx,y=1)(11) \qquad 考虑两种情况:
c e l l s   w i t h   z = 1 l o g   o d d ↓ o c c : = l o g p ( z = 1 ∣ m x , y = 1 ) p ( z = 1 ∣ m x , y = 0 ) ( 12 ) c e l l s   w i t h   z = 0 l o g   o d d ↓ f r e e : = l o g p ( z = 0 ∣ m x , y = 1 ) p ( z = 0 ∣ m x , y = 0 ) = − l o g p ( z = 0 ∣ m x , y = 0 ) p ( z = 0 ∣ m x , y = 1 ) ( 13 ) cells\ with\ z=1\quad log\ odd\downarrow occ:=log\frac{p(z=1|m_{x,y}=1)}{p(z=1|m_{x,y}=0)}\qquad(12)\\ cells\ with\ z=0\quad log\ odd\downarrow free:=log\frac{p(z=0|m_{x,y}=1)}{p(z=0|m_{x,y}=0)}=-log\frac{p(z=0|m_{x,y}=0)}{p(z=0|m_{x,y}=1)}\qquad(13)\\ cells with z=1log oddocc:=logp(z=1mx,y=0)p(z=1mx,y=1)(12)cells with z=0log oddfree:=logp(z=0mx,y=0)p(z=0mx,y=1)=logp(z=0mx,y=1)p(z=0mx,y=0)(13)设测量模型为:
l o g   o d d ↓ o c c : = 0.9 log\ odd\downarrow occ:=0.9 log oddocc:=0.9
l o g   o d d ↓ f r e e : = − 0.7 log\ odd\downarrow free:=-0.7 log oddfree:=0.7
在这里插入图片描述 图 4   地 图 栅 格 对 数 赢 率 初 始 化 为 0 图4\ 地图栅格对数赢率初始化为0 4 0 \qquad t 0 t_{0} t0时刻 l o g   o d d = 0   f o r   a l l ( x , y ) log\ odd=0\ for\ all(x,y) log odd=0 for all(x,y)这种初始化等价于栅格被占据和开放的概率是一样的
在这里插入图片描述 图 5   测 量 之 后 地 图 栅 格 对 数 赢 率 由 t 0 到 t 1 变 化 图5\ 测量之后地图栅格对数赢率由t_{0}到t_{1}变化 5 t0t1 \qquad 栅格对数赢率更新为:
c e l l s   w i t h   z = 1 l o g   o d d = 0 + 0.9 c e l l s   w i t h   z = 0 l o g   o d d = 0 − 0.7 cells\ with\ z=1\quad log\ odd=0+0.9\\ cells\ with\ z=0\quad log\ odd=0-0.7 cells with z=1log odd=0+0.9cells with z=0log odd=00.7在这里插入图片描述 图 6   测 量 之 后 地 图 栅 格 对 数 赢 率 由 t 1 到 t 2 变 化 图6\ 测量之后地图栅格对数赢率由t_{1}到t_{2}变化 6 t1t2 \qquad 栅格对数赢率更新为: c e l l s   w i t h   z = 1 l o g   o d d = 0 + 0.9 c e l l s   w i t h   z = 0 l o g   o d d = − 0.7 − 0.7 ( 两 次 都 测 量 到 ) c e l l s   w i t h   z = 0 l o g   o d d = 0 − 0.7 ( 只 有 一 次 测 量 到 ) cells\ with\ z=1\quad log\ odd=0+0.9\\ cells\ with\ z=0\quad log\ odd=-0.7-0.7 (两次都测量到)\\ cells\ with\ z=0\quad log\ odd=0-0.7 (只有一次测量到)\\ cells with z=1log odd=0+0.9cells with z=0log odd=0.70.7()cells with z=0log odd=00.7() \qquad 假设机器人姿态已知,并在地图中将它定位,然后就要讨论如何将机器人坐标系下的传感器数据变换到全局地图坐标下。
在这里插入图片描述 图 7   建 立 坐 标 系 图7\ 建立坐标系 7  \qquad 已知机器人在全局坐标系中的位置为 ( x 1 , x 2 ) (x_{1},x_{2}) (x1,x2)传感器方向与 x 1 x_{1} x1之间的角度为 θ \theta θ,传感器探测距离为的d。
在这里插入图片描述 图 8   将 机 器 人 置 于 坐 标 系 图8\ 将机器人置于坐标系 8  \qquad ( x 1 , o c c , x 2 , o c c ) (x_{1,occ},x_{2,occ}) (x1,occ,x2,occ):
[ x 1 , o c c x 2 , o c c ] = [ c o s θ s i n θ − s i n θ c o s θ ] [ d 0 ] + [ x 1 x 2 ] ( 14 ) \begin{bmatrix} x_{1,occ} \\ x_{2,occ} \end{bmatrix}=\begin{bmatrix} cos\theta & sin\theta\\ -sin\theta & cos\theta \end{bmatrix}\begin{bmatrix} d\\ 0 \end{bmatrix}+\begin{bmatrix} x_{1}\\ x_{2} \end{bmatrix}\quad(14) [x1,occx2,occ]=[cosθsinθsinθcosθ][d0]+[x1x2](14)求出目标点的在全局坐标系的位置。
在这里插入图片描述 图 9   连 续 地 图 转 化 为 栅 格 地 图 图9\ 连续地图转化为栅格地图 9  \qquad 连续坐标除以单位栅格长度后取整。
i = c e i l ( x / r ) ( 15 ) i=ceil(x/r)\qquad(15) i=ceil(x/r)(15)
在这里插入图片描述 图 10   坐 标 转 化 为 栅 格 坐 标 图10\ 坐标转化为栅格坐标 10  [ i 1 , o c c i 2 , o c c ] = c e i l ( 1 r [ x 1 , o c c x 2 , o c c ] ) ( 16 ) \begin{bmatrix} i_{1,occ} \\ i_{2,occ} \end{bmatrix}=ceil(\frac{1}{r}\begin{bmatrix} x_{1,occ} \\ x_{2,occ} \end{bmatrix})\qquad(16) [i1,occi2,occ]=ceil(r1[x1,occx2,occ])(16) \qquad 得出目标点栅格坐标。

手机屏幕表面缺陷检测是一个计算机视觉任务,通常涉及到图像处理和模式识别技术。在你提供的数据集上进行分类,需要对图像进行预处理,提取特征,然后训练分类器。以下是一个简单的Python代码示例,使用了scikit-learn库来实现一个基本的分类流程。 ```python import os import numpy as np from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import classification_report from skimage.io import imread from skimage.transform import resize # 数据集路径 dataset_path = 'path/to/dataset' # 加载数据集 def load_dataset(data_dir): images, labels = [], [] for label in os.listdir(data_dir): label_dir = os.path.join(data_dir, label) if not os.path.isdir(label_dir): continue for image_name in os.listdir(label_dir): image_path = os.path.join(label_dir, image_name) image = imread(image_path) image = resize(image, (128, 128)) # 调整图像大小 images.append(image) labels.append(label) return np.array(images), np.array(labels) images, labels = load_dataset(dataset_path) # 将标签转换为数字 unique_labels = np.unique(labels) label_mapping = {label: idx for idx, label in enumerate(unique_labels)} labels = np.array([label_mapping[label] for label in labels]) # 划分数据集为训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(images, labels, test_size=0.2, random_state=42) # 创建随机森林分类器 clf = RandomForestClassifier(n_estimators=100, random_state=42) # 训练分类器 clf.fit(X_train, y_train) # 预测测试集结果 y_pred = clf.predict(X_test) # 打印分类结果报告 print(classification_report(y_test, y_pred, target_names=unique_labels)) # 保存模型(可选) # from joblib import dump # dump(clf, 'phone_screen_defect_classifier.joblib') ``` 请注意,这个代码只是一个简单的例子,实际应用中可能需要进行更复杂的图像预处理,特征提取,以及使用更高级的模型来提升分类的准确率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值