Apollo_速度优化

在获取S-L的路径(横向运动)之后,将障碍物对 当前路径 进行S-T投影,在当前路径的S-T图中,进行启发式速度搜索。最后进行平滑处理(速度优化)。

在获取启发式速度规划以后,需要对其进行平滑处理

scenario_type: LANE_FOLLOW
stage_type: LANE_FOLLOW_DEFAULT_STAGE
stage_config: {
  stage_type: LANE_FOLLOW_DEFAULT_STAGE
  enabled: true
  task_type: LANE_CHANGE_DECIDER
  task_type: PATH_REUSE_DECIDER
  task_type: PATH_LANE_BORROW_DECIDER
  task_type: PATH_BOUNDS_DECIDER
  task_type: PIECEWISE_JERK_PATH_OPTIMIZER
  task_type: PATH_ASSESSMENT_DECIDER
  task_type: PATH_DECIDER
  task_type: RULE_BASED_STOP_DECIDER
  task_type: ST_BOUNDS_DECIDER
  task_type: SPEED_BOUNDS_PRIORI_DECIDER
  task_type: SPEED_HEURISTIC_OPTIMIZER
  task_type: SPEED_DECIDER
  task_type: SPEED_BOUNDS_FINAL_DECIDER
  # task_type: PIECEWISE_JERK_SPEED_OPTIMIZER
  task_type: PIECEWISE_JERK_NONLINEAR_SPEED_OPTIMIZER
  task_type: RSS_DECIDER

......

PIECEWISE_JERK_SPEED_OPTIMIZER

分段常加加速度优化 Piecewise jerk Speed optimization

算法理论:

离散t,优化变量为s,\dot{s},\ddot{s} ,建模为QP问题/IPOPT问题

代码解析:

【规划】Apollo QSQP接口详解_lemon_zy的博客-CSDN博客

Apollo 6.0 速度规划算法解析 - 知乎

Planning 基于动态规划的速度规划 - 知乎

Planning 基于二次规划的速度规划 - 知乎

Planning 基于非线性规划的速度规划 - 知乎

Planning-Apollo速度决策规划_Schulz King的博客-CSDN博客_apollo速度规划

Apollo 6.0的EM Planner (3):速度规划的动态规划DP过程 - 知乎

Apollo 6.0的EM Planner (4):速度规划的二次规划QP过程 - 知乎

 Apollo EM Planner(DP决策+QP优化)_牛仔很忙吧的博客-CSDN博客

为了使用OpenCV的GPU加速功能,需要使用OpenCV的cuda模块,并且需要支持CUDA的显卡驱动和CUDA工具包。下面是三种使用OpenCV的GPU加速的方法: 1. 使用OpenCV内置函数进行运算 ```python import cv2 # 读取图像 img = cv2.imread('image.jpg') # 将图像转换为灰度图像 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 创建一个GPU加速的Mat对象 d_gray = cv2.cuda_GpuMat() # 将灰度图像上传到GPU d_gray.upload(gray) # 在GPU上进行高斯模糊 d_blur = cv2.cuda_GpuMat() cv2.cuda.GaussianBlur(d_gray, (5, 5), 0, d_blur) # 将结果从GPU下载到CPU blur = d_blur.download() # 显示结果 cv2.imshow('blur', blur) cv2.waitKey(0) cv2.destroyAllWindows() ``` 2. 使用GPU加速的OpenCV函数 ```python import cv2 # 读取视频 cap = cv2.VideoCapture('video.mp4') # 创建一个GPU加速的BackgroundSubtractorMOG2对象 fgbg = cv2.cuda.createBackgroundSubtractorMOG2() while True: # 读取一帧 ret, frame = cap.read() if ret: # 将帧上传到GPU d_frame = cv2.cuda_GpuMat() d_frame.upload(frame) # 在GPU上进行背景减除 d_fgmask = cv2.cuda_GpuMat() fgbg.apply(d_frame, d_fgmask) # 将结果从GPU下载到CPU fgmask = d_fgmask.download() # 显示结果 cv2.imshow('frame', frame) cv2.imshow('fgmask', fgmask) if cv2.waitKey(1) & 0xFF == ord('q'): break else: break cap.release() cv2.destroyAllWindows() ``` 3. 使用GPU加速的自定义函数 ```python import cv2 # 定义一个GPU加速的函数 @cv2.cuda.host_allocator def my_function(rows, cols, dtype, stream=None): # 在GPU上创建一个Mat对象 d_mat = cv2.cuda_GpuMat(rows, cols, dtype) # 在GPU上进行运算 # ... # 将结果从GPU下载到CPU mat = d_mat.download() # 返回结果 return mat # 调用自定义函数 result = my_function(480, 640, cv2.CV_8UC3) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牛仔很忙^

雪中送炭者,定当铭记在心!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值