A-A+

模型强化学习用于UAV自主着陆的尝试与仿真

2013年04月25日 Machine Learning 评论 3 条 阅读 54,123 次
摘要:

视景仿真环境V-REP如图1所示,仿真任务设置为一四旋翼UAV的降落至指定区域(为一小车平台)。

1 仿真设置

视景仿真环境V-REP如图1所示,仿真任务设置为一四旋翼UAV的降落至指定区域(为一小车平台)。定义世界坐标系:{X}_{w},{Y}_{w},{Z}_{w}  以小车平台中心为原点,{X}_{w}水平指向正东方向,\mathit{Y}_{w}水平指向正北方向,{Z}_{w}垂直向上;

UAV的传感器有一超声波高度测距仪,测量距离地面高度h,以及一个下视摄像机,摄像机图像如图2右上角,通过机器视觉程序识别得到(\mathit{x}_{w},{y}_{w})h为UAV距离地面高度,d为距离降落区中心点距离,v为水平速度分量,为简化问题且满足现实任务要求,我们令UAV等速下降,UAV航向始终对准降落区。因而只需调整水平速度分量v。最终目标是,让UAV学习控制策略并垂直降落至指定的区域。变量及说明如表1所示。

 UAV仿真环境及着陆示意图

图 1 UAV仿真环境及着陆示意图

回报函数设置的好坏对学习效果有着重要的影响,回报函数的设置不仅要明确的反映出我们所期望达成的目标,而且也应对Agent动作的选取具有一定启发意义,以此加快学习速度。在UAV着陆任务中,最终目的是让UAV降落至指定的降落区,若失败则加以-500的惩罚,如表 1所示;同时为引导UAV进入降落区,每一步的回报与离降落区的距离d成正比、与离地面高度h成反比,回报函数设为\mathit{r=-abs(d/(h+0.1))}。为避免h=0时分母为零,故加入0.1。

表 1 参数说明

参数 名称 取值
h UAV高度 初始值 10 m,减少至0 m时飞行结束
d 距离降落区中心点距离 初始值 0~5 m随机取值,d>0
  UAV机头偏离降落区中心角度 初始值 0~360 随机取值
v 水平速度分量 取值范围-5~5 m/s
a UAV加减速指令 (-1,-0.5,0,0.5,1)
Reward 回报函数  当h>0时
0 h=0,且UAV位于降落区域内(-d<0.5)
当h=0,且UAV位于降落区域外(d>0.5)

目标状态

h=0,v=0,-0.5<d<0.5

2 视觉伺服算法

定义坐标系:

1、世界坐标系:\mathit{X}_{w},{Y}_{w}{Z}_{w}以小车平台中心为原点,\mathit{X}_{w}水平指向正东方向,\mathit{Y}_{w}水平指向正北方向,\mathit{Z}_{w}垂直向上;

2、摄像机坐标系:\mathit{X}_{c},{Y}_{c}{Z}_{c}  光轴为\mathit{Z}_{c}

3、图像坐标系:\begin{bmatrix}u,v\end{bmatrix}为图像像素坐标系,原点为图像左上角\textit{u}水平向右,\textit{v}垂直向下,\begin{bmatrix}x,y\end{bmatrix}为图像物理坐标系,光轴与成像平面交点为原点,可忽略偏差定为图像中心点。\textit{u,v}\textit{x,y}分别与\mathit{X}_{c},{Y}_{c}两轴对应平行。

摄像机坐标系与图像像素坐标系的变换关系:

\begin{equation}\begin{bmatrix}u\\v\\1\end{bmatrix}=C_{c}^{i}\begin{bmatrix}x_c/z_c\\y_c/z_c\\1\end{bmatrix}=\begin{bmatrix}k_x&0&u_0\\ 0&k_y&v_0 \\ 0&0&1\end{bmatrix}\begin{bmatrix}x_c/z_c\\y_c/z_c\\1\end{bmatrix}\end{equation}

其中k_x=a_xf,k_y=a_yf为X,Y轴放大系数,为摄像机内参数。

写成齐次坐标形式为

图像物理坐标系原点o_{xy}[u,v]中的坐标为(u_0,v_0)

可得:

\begin{equation}\begin{bmatrix}x_c\\y_c\\1\end{bmatrix}=z_cC_{c}^{i}\begin{bmatrix}u\\v\\1\end{bmatrix}\end{equation}

其中C_{i}^{c}C_{c}^{i}逆阵

摄像机坐标系与世界坐标系的变换关系:

\begin{equation}\begin{bmatrix}x_c\\y_c\\z_c\\1\end{bmatrix}=C_{c}^{w}\begin{bmatrix}x_w\\y_w\\z_w\\1\end{bmatrix}=\begin{bmatrix}R&t \\ 0^{\tau}&1\end{bmatrix}\begin{bmatrix}x_w\\y_w\\z_w\\1\end{bmatrix}\end{equation}

其中\mathbf{R}为旋转矩阵\mathbf{t}为平移向量,则:

\begin{equation}\begin{bmatrix}x_w\\y_w\\z_w\\1\end{bmatrix}=C_{w}^{c}\begin{bmatrix}x_c\\y_c\\z_c\\1\end{bmatrix}\end{equation}

其中C_{c}^{w}C_{w}^{c}逆阵。

设定摄像机的象素为m\times n,飞机水平飞行,飞行高度为h;(近似认为此高度为摄像机中心距地面距离,不计小车高度),飞机与降落点中心的直线距离为d,飞机航向角为\varphi(u_0,v_0)\begin{pmatrix}\frac{m}{2},\frac{n}{2}\end{pmatrix},z_c=h,且根据坐标轴的定义,不难得出:

\begin{equation}\mathbf{R}=\begin{bmatrix}cos\varphi  &sin\varphi  &0 \\ sin\varphi  &-cos\varphi  &0 \\ 0 &0  &-1 \end{bmatrix}\end{equation}
\begin{equation}\mathbf{t}=\begin{bmatrix}-\sqrt{d^2-h^2}sin\varphi \\-\sqrt{d^2-h^2}cos\varphi \\-h \end{bmatrix}\end{equation}

3 ROS程序

 ROS消息传递

图2 ROS消息传递

算法开发使用了ROS机器人操作系统,将环境模型(rl_env)和学习算法(rl_agent)分开编写、运行,rl_agent 与rl_env使用ROS的基于topic的消息传递机制进行交互,如图 2。ROS中的topic框架是各种不同功能的node之间实现通信的手段,使得node通过发布(publish)或订阅(subscribe)topic实现发送或获取。而真实实现数据传输的是message机制,它是node与topic之间的信息流,所以message的数据类型决定了topic的数据类型。在此仿真中,rl_agent发布rl_experiment_info、rl_action两个topic以供rl_env订阅,分别包含agent最近阶段的经验结果和选择的动作信息;rl_env发布rl_seed、rl_state_reward、rl_env_description三个topic向agent提供当前环境、动作数、特征数、用于学习的种子值、agent的最新状态和接收到的回报值。

4仿真结果

Agent经过约1000次尝试后,找到了准确、稳定的降落的策略,如图 3所示,降落轨迹如图 4,每步对应的控制指令如图 5。

 学习次数与回报值

图 3 学习次数与回报值

 飞行轨迹

图4 飞行轨迹

 单步控制指令及回报值

图 5 单步控制指令及回报值

 

3 条留言  访客:3 条  博主:0 条

  1. 云飞

    您好!博文内容很好,有一个疑问:
    回报函数的大小是如何影响水平速度的?即v(r)

  2. leoaisdd

    不错,学习了! 😛

  3. 毛巾厂

    主题不错啊,支持博主

给我留言

Copyright © ExBot易科机器人实验室 保留所有权利.   Theme   Robin modified by poyoten

用户登录

分享到: