【Autoware】OpenPlanner使用教程--从RuntimeManager面板

OpenPlanner使用教程–从RuntimeManager面板进入

本文操作基于Autoware.ai版本
笔者也是从另外两篇找到的比较好的帖子学习的,分别是

在这两位大佬的教程基础上,进行了总结,以及一些其他的尝试。
比较确定的是,只用第一篇帖子里的方法是不太行的,不够全面。可以标出global 路径,但是选中后面的op_common_params这些参数之后就出错了,有一些该设置的,需要subscribe的topic没有设置到。
关于OpenPlanner的原理,可以参考上一篇帖子中的论文总结【论文阅读】Open Source Integrated Planner for Autonomous Navigation in Highly Dynamic Environments

加载vector map

OpenPlanner是基于vector map的,因此首先要加载vector map,并导入相应的tf关系。
在Runtime Manager的Map页中,加载.autoware文件夹下的vector map文件,并点击该按钮呈现深色,即加载文件。点击TF按钮为深色,即加载tf.launch文件。
在这里插入图片描述
选择右侧OpenPlanner - Global Planning下的op_global_planner

Rviz中的设置

点击Rviz按钮进入可视化界面。
在左下角点击Add,选择By Topic,选择最后一个Topic ``,可以看到原本的vector map上出现了lane的中线。(必须选了op_gloal_planner才可以显示这个中线topic信息)
在这里插入图片描述
点击2D Pose Esitimate按钮,选择靠近道路中线的位置作为起点,再点击2D Nav Goal按钮,选择终点。Rviz中会自动出现一条蓝色的线,这就是Open Global Planner为设置的起点到终点规划的全局路径。
在这里插入图片描述
此时查看各个node和topic之间的关系,点击RQT,可以发现。
在这里插入图片描述

生成多条roll-outs trajectory供local planner选择

要进行这一步,需要回到Runtime Manager面板里面重新做一些设置,但是发现如果没有提前在Runtime Manager里面设置好,而是规划好全局路径后,再回到Runtime Manager中勾选需要的选项时,常常出现rviz中显示不到的问题,以及一些其他的error。所以建议,如果需要做local planner规划,建议在打开rviz之前,一步到位在Runtime Manager页面中选好所有需要的选项,然后再到Rviz里面设置起点终点等。

所有设置

Setup
  • TF (默认值)
  • Vehicle Model (默认值)
Map
  • Vector Map
  • TF
    这两个和上面仅有global planner的一样
Sensing
  • Points Downsampler -> voxel_grid_filter
Computing
  • Localization -> lidar_localizer -> ndt_matching
  • Localization -> autoware_connector ->vel_pose_connect
  • Detection -> lidar_detector -> lidar_euclidean_cluster_detect
  • Mission Planning -> OpenPlanner - Global Planning -> op_global_planner
  • Motion Planning -> waypoint_follower -> pure_pursuit + twist_filter
  • Motion Planing -> OpenPlanner - Local planning -> op_common_params + op_trajectory_generator + op_motion_predictor + op_trajectory_evaluator + op_behavior_selector

经过尝试,上面的这些设置都是缺一不可,而且并没有冗余。—还需要继续试几次看是否如此。

每项设置的分析

针对上面的每项分析,做一些具体的分析。没有直接写在上面的部分是为了阅读的方便,使看操作步骤的时候更清晰简洁。且Setup页和Map页的内容不再赘述。

Sensing
  • Points Downsampler -> voxel_grid_filter

设置相关滤波器

选择 [Sensing] 页面,点击 [Points Downsampler] 下 [voxel_grid_filter] 的
app,设置一些参数,[voxel_grid_filter] 是一种降采样方法,将点云数据用质心近似(用于降采用),如下图:

在这里插入图片描述

这里,[Voxel Leaf Size] 参数值为2,意义是2米的立方体内的全部点近似用1个质心代替。[Measurement Range]的参数值为200,意义是点云的有效的距离为200米。


[Points Downsampler] 下的四个滤波器都可以选,但我只看了 [voxel_grid_filter] 滤波器,其他三个暂时没看,后续会陆续补充。


[ring_filter] 与 [ring_ground_filter] 联合来用,才会过滤掉地面,如果大家去看 [computing] 菜单下的 [astar planner] 下的 [velocity set] 选项下的 [app]


设置会发现这个选项要接收的topic为points_no_ground 只有这两个选项都开启时,这个选项才会生效。 [velocity set] 实际上就是跟斑马线及障碍物相关的速度设置。


这段文字来自文章

在这里插入图片描述

Computing
Localization -> autoware_connector -> ndt_matching (可以不选?)

设置map到base_link的转换,将GNSS设置改为Initial Pos,里面的数值没有改变。

确保 [topic:/config/ndt] 选项处于 [Initial_Pose] 处,勾选 [Initial Pos],x,y,z,roll,pitch,yaw的值表示激光的初始位置,我们这里用默认的0,0,0,0,0,0。如果有GPU(还是一定有),那么[Method Type]可以选择pcl_anh_gpu用GPU帮助运算。其他参数用默认值。


我们用的车只有16线激光雷达与摄像头,所以没有勾选Odom与IMU等选项。


如果有GNSS设备可以选择GNSS(后面会讲,先挖个坑)。


这段文字来自文章

在这里插入图片描述

Localization -> autoware_connector -> vel_pose_connect

找到 [Computing] 左菜单栏下的 [vel_pose_connect] ,打开 [app] 并确保选项 [Simulation_Mode] 没有被勾选(默认不勾选),退出并勾选 [vel_pose_connect]。
在这里插入图片描述
Vector Map Filter Distance用于检测障碍物到路径的距离,如下图所示,黑色的粗线为航迹,那么障碍物在轨迹前或后方时,小于两倍的设置距离会被跟踪,而在轨迹范围内时,小于1倍的设置距离会被跟踪。
在这里插入图片描述

Detection -> lidar_detector -> lidar_euclidean_cluster_detect

障碍物检测,笛卡尔聚类方法

Detection -> lidar_tracker -> lidar_kf_coutour_track(可以不选?)

lidar_tracker项目需要勾选lidar_kf_contour_track(跟踪障碍物),相应的app配置为默认

lidar_kf_contour_track障碍物通过消息 ClouldCluster发出的,所以对应lidar_kf_contour_track接收

这里引用中的这句不太懂

Mission Planning -> OpenPlanner - Global Planning -> op_global_planner

具体设置如下
在这里插入图片描述

Replanning用于到达目标点后,可以重新规划到下一个目标点。如果有了两个目标点,那么会循环,下方修改代码后,可以不循环。

Smooth用于平滑全局路径。

Motion Planning -> waypoint_follower -> pure_pursuit

这里使用寻迹模式,需要采用Waypoint模式,而Waypoint采用航继点的速度,也可以改代码相关的内容。这里还没有研究到那一步。

在这里插入图片描述

Motion Planning -> waypoint_follower -> twist_filter
Motion Planing -> OpenPlanner - Local planning -> op_common_params

p_common_params的app设置

在这里插入图片描述

Plan Ditance用于设置朱路径两侧的衍生出的局部轨迹的长度;

Path Density用于局部轨迹上两个轨迹点的距;

Horizontal Density用于设置两个局部轨迹的间距;

Rollouts Number用于设置局部轨迹的数量;

Max Velocity轨迹上的执行速度,避障时局部轨迹速度减半,单位m/s;

Follow DIstance关键参数,沿着轨迹设置从多远检测障碍物;

Avoid Distance感知到路径上的障碍物,判断多远开始绕行;

Avoidance Limit停车是,障碍物距离多远可以开车;

Lateral SafetyLongitudinal Safty设置安全框尺寸,分别代表车辆安全框宽与长。

Motion Planing -> OpenPlanner - Local planning -> op_trajectory_generator

在这里插入图片描述
Tip Margin用于设置车身到路径分叉点的距离;

Roll In Margin用于设置局部轨迹弯折的距离;

Motion Planing -> OpenPlanner - Local planning -> op_motion_predictor

在这里插入图片描述
Detect curbs from map用于将路沿判定为障碍物。

Motion Planing -> OpenPlanner - Local planning -> op_trajectory_evaluator
Motion Planing -> OpenPlanner - Local planning -> op_behavior_selector

Rviz中的设置

添加一个Topic /vector_map_center_lines_rviz,原因和上一部分一样,不再赘述。
同样的方法选择起点和终点,看到蓝色的global path。
再添加一个Topic /local_trajectories_gen_rviz,即可以看到绿色的线,这就是规划出来的roll-outs,每条线是一个local trajectory。
在这里插入图片描述

使用Simulator

Computing
  • Motion Planning -> OpenPlanner - Simulator -> op_percetion_simulator+op_car_simulator
    在这里插入图片描述
    重新在rviz里面设置一次起点和终点,可以看到一个仿真小车沿着设置的路线行驶。

此时的rqt关系图如下:
在这里插入图片描述
其中需要重点关注的是下面的图中/op_behavior_selector node的输入topic,/local_weighted_trajectories/current_behavior
在这里插入图片描述

以及下图中node /op_behavior_selector相关的输入输出流
在这里插入图片描述

至此,我们可以使用Autoware中RuntimeManager面板上提供的OpenPlanner功能,进行一个全局和局部的路径规划。但是还有很多其他的设置细节,使用方法等需要继续学习。

历史error记录

  • [/rviz] wants topic /visualization_markers to have datatype/md5sum
  • default rviz file wants wants topic op_trajectory_generator to have message type visualization_msgs/MarkerArray instead of autoware_msgs/LaneArray
  • assertion ‘_gtk_widget_get_visible (widget) || _gtk_widget_is_toplevel (widget)’ failed
  • Reopen window throws Gtk-CRITICAL **: gtk_widget_get_window: assertion ‘GTK_IS_WIDGET (widget)’ failed
  • 8
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 18
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值