实施无人机调查脚本#
您是否曾经想过拍摄一组特定地点的俯视图照片?AirSimClient
Python API 让这一切变得非常简单。代码请点击此处 查看。
假设我们需要以下变量:
变量 | 描述 |
---|---|
boxsize |
待测量方箱的整体尺寸 |
stripewidth |
例如,泳道之间的间隔有多远,这取决于相机镜头的类型。 |
altitude |
飞行调查的高度。 |
speed |
调查的速度取决于相机拍摄照片的速度。 |
因此,我们可以使用以下代码计算方形路径框:
path = []
distance = 0
while x < self.boxsize:
distance += self.boxsize
path.append(Vector3r(x, self.boxsize, z))
x += self.stripewidth
distance += self.stripewidth
path.append(Vector3r(x, self.boxsize, z))
distance += self.boxsize
path.append(Vector3r(x, -self.boxsize, z))
x += self.stripewidth
distance += self.stripewidth
path.append(Vector3r(x, -self.boxsize, z))
distance += self.boxsize
假设我们从盒子的角落开始,将 x 增加条纹宽度,然后将 -boxsize 的整个 y 维度飞到 +boxsize,因此在这种情况下 boxsize 是我们将要覆盖的实际盒子大小的一半。
一旦我们有了 Vector3r 对象列表,我们就可以通过以下调用非常简单地执行此路径:
result = self.client.moveOnPath(path, self.velocity, trip_time, DrivetrainType.ForwardOnly,
YawMode(False,0), lookahead, 1)
我们可以通过将路径距离除以飞行速度来计算合适的 trip_time 超时时间。
这里平滑路径插值所需的前瞻 lookahead
可以通过使用 self.velocity + (self.velocity/2)
根据速度计算得出。前瞻次数越多,转弯越平滑。这就是为什么您在屏幕截图中看到每个泳道的末端都是平滑的转弯,而不是方框图案。这也可以使您的相机拍摄的视频更加流畅。
就是这样,很简单吧?
现在,您当然可以为其添加更多智能功能,使其避开地图上已知的障碍物,使其在山坡上爬上爬下,以便您勘察斜坡等等。乐趣无穷。