话题:线性代数,运动和感知
坐标系之间的转换在机器人技术中起着重要的作用。作为本节中练习1和3的背景,请参考仿射变换和组合变换的ppt。
Github地址
练习1: 2D转换作为仿射矩阵
机器人的二维姿态关于全局坐标系通常写为 X=(x,y,Θ)T,其中(x,y)表示其在xy平面的位置,Θ表示其取向。表示姿态的齐次变换矩阵 X=(x,y,θ)T关于到全局坐标系的原点 (0,0,0)T由以下给出:
- 当机器人在位置 X1 = (x1,y1,θ1)T,机器人就位置(lx,ly)来检测相对于其局部帧的地标。使用矩阵T1来计算关于全局帧的地标坐标。
- 现在想象一下,在全局帧中,您将获得地标的坐标。如何计算机器人在本地帧中感知的坐标?
- 机器人在全局帧中移动到新的位置 X2=(x2,y2,θ2)T。找到代表关于X1的新位置变换矩阵T12。提示:将T12写成齐次变换矩阵的乘积。
- 机器人再次测量地标l的位置。考虑到x1的坐标(lx,ly),结果如何。
解答:
3 :其中θ=θ2-θ1 ;Δx=x2-x1;Δy=y2-y1
练习2:运动
一个配备差速器的机器人从位置 x=1m,y=2m,方向θ=π/2。它必须移动到位置 x=1.5m,y=2.0m ,θ=π/2(所有角度都是弧度)。车(机器人)的运动由转向指令描述(Vl=左轮速度,Vr=右轮速度,t=行驶时间)。
- 将机器人引导到所需目标位置所需的最小转向指令数(Vl,Vr,t)是多少。
- 在上面约束下的最短轨迹的长度是多少?
- 如果可以使用任意数量的转向指令,哪个顺序的转向指令将机器人的最短轨迹引导到所需的位置?
- 这个轨迹的长度是多少?
注意:轨迹的长度是指轨迹上行进的距离。
解答:
1:两个。
2:0.25πM。
3:转向->平移->转向
4:0.5M
练习3:感知
一个机器人位于 x=1.0m,y=0.5m,θ=π/4。其激光测距仪安装在x=0.2m,y=0.0m,θ=π(相对于机器人的参考框架)。
一次激光扫描的距离测量存放在在本讲座的网站上提供的文件laserscan.dat上。第一次距离测量以角度a=-π/2进行(在激光测距仪的参考系中),最后一次测量在a=π/2(传感器视场为π)。所有相邻测量的角度距离相等(所有角度以弧度表示)。
注意:您可以加载数据文件,并使用以下提示的代码在python中计算相应角度。
- 使用python绘制激光测距仪参考系中的所有激光的端点。
- 所提供的扫描显示出意外的属性。确定一个建议的解释。
- 在python中使用均匀变换矩阵来计算和绘制机器人的中心,激光测距仪的中心以及世界坐标中的所有激光终点。
解答:
1:绘制图形效果
#! -*- coding:utf-8 -*-
import math
import numpy as np
import matplotlib.pyplot as plt
scan = np.loadtxt('laserscan.dat')
angle = np.linspace(-math.pi/2,math.pi/2,np.shape(scan)[0],endpoint='true')
ax = plt.subplot(111,projection='polar')
ax.plot(angle,scan,color='r')
ax.grid(True)
plt.show()
后面两个问题以后学多了再回答。