跳到主要内容
版本:v0.7.0 beta

点对矩形避障

在轨迹规划中, 矩形常用来表示车辆、机器人等移动实体的边界框. 点对矩形的避障功能可以实现点与矩形之间的避障约束, 以确保点不会进入矩形所占据的区域.

建模

下面为点对矩形的避障不等式约束的例子:

point2rect_ineq = point_to_rectangle_inequality(
px, py,
x, y, phi, width, length,
distance_to_avoid
)
prob.inequality(point2rect_ineq)

其中, point_to_rectangle_inequality接口的入参如下:

  • px, py: 需要避障的点的坐标
  • x, y, phi: 矩形的中心坐标和朝向 (逆时针为正)
  • width, length: 矩形的宽度和长度
  • distance_to_avoid: 避障距离

point_to_rect

信息

point_to_rectangle_inequality接口的所有入参 (px, py, x, y, phi, width, length, distance_to_avoid)可以为常数, 关于参数pp的表达式, 或者关于优化变量vv的表达式.

效果

下面为利用点对矩形的避障功能实现的车辆避障轨迹规划的问题设定:

  • 车辆起始位姿为0, 目标为跟踪x轴 (横轴)的参考线并且避开两个人 (通过点描述)
  • 车辆的优化轨迹为100个stage, 每个stage, 即每个时间点处的车辆都与两个点进行避障, 避障距离为1.0 m

注意, 人在不同时间点处的位置可以不同, 即可处理动态避障问题.

下面为不同初始解下的轨迹规划效果图:

初始解: point_to_rect_up_v0 最优轨迹: point_to_rect_up_vopt