PX4使用手册-自主避障-ObstacleAvoidance

P200的VFH避障是航点避障么?

转载自:https://www.rdplat.com/news/25444.html

PX4使用手册-自主避障-ObstacleAvoidance

2018-12-07

内容详细

自主避障

自主避障 使飞机沿预定路线前进时,能够自动绕开障碍物。

该功能需要运行计算机视觉软件的机载计算机。 该软件对期望路线重新规划,在导航绕开障碍物,并选取最佳路径。

自主避障适用于自动化模式,目前仅支持多旋翼飞行器的 任务Missions 和 Offboard 模式。

本文将阐述怎样在这两种模式中设置自主避障功能。

Offboard模式避障

PX4在 Offboard模式 中支持避障功能。

期望路径来自在配套计算机上运行的一个 ROS 节点。 并传递给自主避障模块(另一个ROS节点)。 避障软件将规划路径通过 SET_POSITION_TARGET_LOCAL_NED 消息流发送给飞行控制栈。

Note 唯一需要PX4这边的设置是将PX4切换到 Offboard 模式 。 PX4飞控并不知道发送SET_POSITION_TARGET_LOCAL_NED 消息的信息源来自哪一个MAVLink系统。

功能测试所使用的软硬件是:运行local_planner 或 global_planner软件的 Intel Aero 。 自主避障功能也支持Gazebo仿真测试。 配置方法详见Intel Aero > Obstacle Avoidance 和PX4/avoidance两个Github代码仓库。

任务模式避障

PX4支持 任务模式 避障,需要使用一台独立的运行避障软件的机载计算机配合。

要启用自主避障功能,只需将PX4的 MPC_OBS_AVOID 设置为1即可。 PX4通过MAVLink的路径规划协议(Trajectory 接口)实现与避障软件的交互,#详见后文。 PX4兼容所有符合此接口的避障系统。

功能测试所使用的软硬件是:运行local_planner 或 global_planner软件的 Intel Aero 。 自主避障功能也支持Gazebo仿真测试。 配置方法详见Intel Aero > Obstacle Avoidance 和PX4/avoidance两个Github代码仓库。

任务模式的变化

开启自主避障功能的任务模式的行为有些许不同

激活避障之后的不同之处有:

  • 飞机距离目标航点小于阈值半径,即判定为抵达,不考虑航向。

  • 在普通任务模式下,飞机必须沿某一航向抵达目标航点(比如从上一航点沿直线靠近)。 开启避障模式后该约束失效,因为避障算法接管了飞机的航向控制,飞机只是根据当前视野进行移动。

一旦判定为到达某航点(即距离航点小于阈值半径),PX4就开始切换新的当前航点与下一个航点。

如果一个航点在某个障碍物之内,有可能无法抵达(任务将被阻塞)。

  • 如果飞机在上一航点与当前航点连线上的投影经过了当前航点,阈值半径将被放大,当前航点将被标记为抵达。

  • 如果载具只能进入x-y方向的阈值半径,高度方向的可接受阈值将被修改,然后任务将继续(即使无法进入高度的可接受半径)。

(由 QGroundControl或PX4)预设的任务模式速度将被忽略。 速度将由避障软件决定:

  • local planner 任务速度约 3m/s。

  • global planner 任务速度约 1~1.5 m/s。

如果PX4接收不到期望点,自主避障功能将被关闭,PX4将恢复普通任务模式。

任务模式避障接口

将MPC_OBS_AVOID 设置为 1 即会在PX4上开启任务模式。

PX4将期望轨迹封装在 TRAJECTORY_REPRESENTATION_WAYPOINTS 消息中,以 5Hz 的频率发送给机载计算机。

各字段定义如下:

  • time_usec: UNIX纪元时间戳

  • valid_points: 3

  • 当前飞机信息:

  • pos_x[0], pos_y[0], pos_z[0]: x-y-z NED坐标系下的载具位置

  • vel_x[0], vel_y[0], vel_z[0]: x-y-z NED 坐标系下速度设定值

  • acc_x[0], acc_y[0], acc_z[0]: x-y-z NED 坐标系下加速度设定值

  • pos_yaw[0]: 当前航向角

  • vel_yaw[0]: NaN

当前航点:

  • pos_x[1], pos_y[1], pos_z[1]: x-y-z NED 坐标系下的 当前 任务航点位置坐标

  • vel_x[1], vel_y[1], vel_z[1]: NaN

  • acc_x[1], acc_y[1], acc_z[1]: NaN

  • pos_yaw[1]: 航向设定值

  • vel_yaw[1]: 偏航速率设定值

下一个航点:

  • pos_x[2], pos_y[2], pos_z[2]: x-y-z NED 坐标系 下一个 任务航点位置坐标

  • vel_x[2], vel_y[2], vel_z[2]: NaN

  • acc_x[2], acc_y[2], acc_z[2]: NaN

  • pos_yaw[2]: 航向设定值

  • vel_yaw[2]: 偏航速率设定值

所有其它字段都是NaN(未定义)。

PX4期望在整个任务期间 (不论障碍物是否存在) 都能接收到由TRAJECTORY_REPRESENTATION_WAYPOINTS 消息发送的目标期望点信息。

来自避障软件的消息各字段定义如下:

  • time_usec: UNIX纪元时间戳

  • valid_points: 1

  • 当前飞机信息:

  • pos_x[0], pos_y[0], pos_z[0]: x-y-z NED坐标系下的载具位置设定值

  • vel_x[0], vel_y[0], vel_z[0]: x-y-z NED 坐标系下速度设定值

  • acc_x[0], acc_y[0], acc_z[0]: NaN

  • pos_yaw[0]: 航向角设定值

  • vel_yaw[0]: 偏航速率设定值

所有其它字段都是NaN(未定义)。

目标期望点的发送频率,由规划软件的能力和用户设置决定。

Note 目前 local planner 发送消息的频率约 30Hz,可以保证载具的移动速度为 3 m/s。 global planner 发送消息的频率约为 10Hz ,任务速度只能达到 1-1.5 m/s。

下文将对避障功能进行更详细的描述,包括PX4飞控和来自ROS的消息流的行为。

任务模式更详细的行为描述

当QGC向飞控上传一个任务并将 MPC_OBS_AVOID 设置为 1,PX4将uORB消息vehicle_trajectory_waypoint_desired 填充如下:

数组 waypoints:

  • index 0 :

  • position: x-y-z NED 坐标系下的位置

  • velocity: x-y-z 由主动飞行控制栈产生的 NED 坐标系下的速度设定值

  • Acceleration: 飞机加速度

  • Yaw: 飞机航向角

  • Yaw_speed: NaN

index 1:

  • position: x-y-z NED 坐标系下当前任务航点位置

  • Velocity: NaN

  • Acceleration: NaN

  • Yaw: 航向设定值

  • Yaw_speed: 偏航速率设定值

Index 2:

  • position: x-y-z NED 坐标系下 下一个任务航点位置

  • Velocity: NaN

  • Acceleration: NaN

  • Yaw: 航向设定值

  • Yaw_speed: 偏航速率设定值

其余index均填充为NaN。

vehicle_trajectory_waypoint_desired 消息被映射到 MAVLink 消息TRAJECTORY_REPRESENTATION_WAYPOINTS(见上避障接口所述)。 消息发送频率为5Hz。

MAVROS 将 MAVLink 消息转换成 ROS 消息 mavros_msgs::trajectory ,并将坐标系从北东地 (NED) 转换到 东北天 (ENU)。 此消息由ROS话题 /mavros/trajectory/desired 发布。

在避障软件这端,算法将规划一条到航点的路径。

经避障算法优化后的位置或速度设定值,可能由以下两个ROS消息发送给飞控固件: mavros_msgs::trajectory(同时包含速度和位置设定值),由ROS 消息 /mavros/trajectory/generated 发布 nav_msgs::Path (只有位置设定值),由 ROS 消息 /mavros/trajectory/path 发布

MAVROS 将设定值的坐标系从 ENU 转换到 NED,并将 ROS 消息转换成 MAVLink 消息TRAJECTORY_REPRESENTATION_WAYPOINTS。

在PX4飞控这端,接收到的 TRAJECTORY_REPRESENTATION_WAYPOINTS 消息被转换成uORB消息vehicle_trajectory_waypoint。 航点队列包含了所有未定义字段,但不包含index 0,消息内容如下:

  • Position: 位置设定值

  • Velocity: 速度设定值

  • acceleration: NaN(飞控固件暂不支持加速度设定值)

  • Yaw: 航向设定值

  • Yaw_speed: 偏航速率设定值

以上设定值将作为飞控位置控制器的跟踪目标。

  • 4
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值