Autoware实车测试记录(四)--全局及局部路径规划相关功能以及发送控制指令至底盘

article/2025/10/13 9:34:32

经过前面的一系列工作,现在小车在地图中任意位置已经可以实现实时定位以及检测到障碍物以及追踪这些障碍物。下面的内容主要是继续完成下一步-路径规划,这其中包括了全局宏观上的路径规划(全局路径规划)以及在行走过程中对障碍物进行躲避(局部路径规划)。

Autoware关于路径规划的功能需要启动的如下:

其中OpenPlanner - Global Planning下的op_global_planner是全局路径规划。OpenPlanner - Local planning下的五个功能为局部路径规划部分。waypoint follower下的两个功能为向底盘下发控制指令的部分。

首先,在启动前文所讲的所有功能后,检查后台终端是否有检测到障碍物相关信息的输出,有输出的话代表前面的节点在正常工作,然后把前面的障碍物追踪节点(lidar_kf_contour_track)关闭,先进入OpenPlanner - Local planning下的op_common_params中修改避障参数,修改好后启动,再返回去启动障碍物追踪节点。

前期测试时发现后期怎么修改避障参数都没有用,后来看了一下功能包里面的README,发现障碍物参数被前期的障碍物追踪节点订阅,猜想可能先启动障碍物追踪模块会自动载入默认避障参数导致后面进行参数修改时无效。

 接下来首先启动全局路径规划部分,op_global_planner功能设置如下:

 测试时画的矢量地图及其简陋没有绘制车道线,故没有选择Lane Changing。Replanning、Smoothing、Rviz Goals比较好理解,分别对应着目标点重规划、平滑处理、可以通过Rviz给出目标点。

设置完成后启动这个节点,此时进入rviz(没打开的话可以在Autoware界面点击启动),在rviz中选择add,在弹出窗口中选择by topic,添加vector_map_center_ lines_rviz,添加后可以看到rviz中出现了路的中线。

 rviz中出现道路中线后,就可以进行全局路径规划了,在rviz上方,有一个2D Nav Goal,就是在前文定位部分给定初始位姿位置的旁边,使用它给定一个目标点,理论上地图中就会出现一条蓝色的规划路线:

 实际情况下,这一步我经常遇到如下几种情况:

1、大概率后台终端会出现下面的信息,并且没有全局路径生成。

Goal Found,LaneID:X,Distance:X   XXX······
Can‘t Generate Global Path for Start (X:···········

2、部分情况下全局路径规划反向规划,因为我的地图是一个环形。

同时生成全局路径规划并不是起点到给定终点的线段,反而是在制作矢量地图的时候所画的一整根直线一起被规划变为蓝色,且临近转弯处出现规划混乱的错误。

上面的这些情况出错原因暂时没有找到,猜想可能是为测试准备的矢量地图绘制的不严谨或者ndt节点这里有点问题,先挖个坑,有知道的欢迎点拨一二。

遇到的前两个问题,通常先给定目标点,再重新给位姿估计,因为这些报错都是初始点的信息出于某种原因不太正确,所以重新给一个初始位姿估计。虽然重新给位姿估计会使本来定位好的ndt又重新开始匹配,但是没有办法,多尝试几个初始位置,直到出现全局路径规划的蓝色线条出现就可以了。这只是个权宜之计,后期再返工重新研究这里,当前先把小车跑起来比较关键。

出现路径规划之后,可以开启局部路径规划的相关节点了,启动OpenPlanner - Local planning下的所有功能(五个),前期已经启动了参数部分,故只需要启动剩余四个。

其中对里面功能进行简单介绍:

op_common_params:

Horizon:视野范围(暂时不知道用途)

Plan Ditance:设置局部路径的长度,即局部路径从车体沿主路延伸有多长

Path Density:局部路径上相邻的两个轨迹点之间的距离,沿车道方向

Horizontal Density:不同局部路径之间的间距,垂直于车道方向

Rollouts Number:局部路径的数量

Max Velocity:最大速度值

Acceleration:加速度值

Follow Distance:沿轨迹多远开始检测追踪障碍物

Avoiding Distance:距离障碍物多远开始执行绕行

Avoidance LImit:停车距离,障碍物距离小于此值停车

Lateral & Longitudinal Safety:车安全框的尺寸,分别代表横向和纵向。

 op_trakectory_generator:

里面只有两个参数设置,具体含义见下图:

 余下的三个打开一看就好一般情况下参数默认即可。

启动所有局部路径功能后,回到rviz中,依旧是左下角add,弹出菜单选择by topic,依次添加下图中三个,在rviz中便会显示实时的局部路径规划。


 局部路径部分启动好后就可以启动控制节点了,控制功能为waypoint follower下的pure_pursuit和twist_filter两个部分。在这里参数我采用的默认值,启动两个节点后,rviz中会出现一个绿色的小球以及白色的预测轨迹线:

 至此理论上所有必需的功能都已经启动了,此时可以查看一下控制话题是否有数据输出,可以查看/twist_raw以及/twist_cmd是否正确下发数据,这两个话题分别对应着pure_pursuit和twist_filter。

由于我所使用的底盘接受的控制话题为/cmd_vel。所以还需要一个节点将Autoware的控制指令转化为/cmd_vel格式。/twist_raw的消息格式为 geometry_msgs/TwistStamped 。而/cmd_vel 的消息格式式为geometry_msgs/Twist。

转换功能包参考的博客:https://blog.csdn.net/m0_46259216/article/details/124478161

需要代码如下:

创建功能包:

mkdir -p catkin_ws/src
cd catkin_ws/src
catkin_creat_pkg vel_transform roscpp geometry_msgs std_msgs

转换功能源码:

#include <ros/ros.h>
#include <std_msgs/Float32.h>
#include <geometry_msgs/TwistStamped.h>
#include <geometry_msgs/Twist.h>ros::Publisher twist_pub_;
ros::Subscriber  twist_sub_;void twistCmdCallback(const geometry_msgs::TwistStampedConstPtr& msg)
{geometry_msgs::Twist twist = msg->twist;twist_pub_.publish(twist);ROS_INFO("Transform Success !");
}int main(int argc, char **argv)
{ros::init(argc, argv, "twist_transform");ros::NodeHandle nh;twist_pub_ = nh.advertise<geometry_msgs::Twist>("cmd_vel", 1);twist_sub_ = nh.subscribe<geometry_msgs::TwistStamped>("twist_raw", 1, twistCmdCallback);ros::spin();return 0;
}

 Cmakelists.txt:

# add_executable中源码的文件名根据自己命名的cpp修改add_executable(twist_transform src/twist_transform.cpp)target_link_libraries(twist_transform${catkin_LIBRARIES}
)

这里建议雷达驱动、消息格式转换等功能包不要放在autoware工作空间下,单独创立一个工作空间集中存放管理,也方便修改调试。

到这里如果一切顺利小车应该会按照设定的程序开始运行了!

关于实测遇到的其他预料之外的错误将在下篇博客中展开叙述。


http://chatgpt.dhexx.cn/article/fQVcOCAh.shtml

相关文章

ROS-使用命令发布导航目标点(publish point)

目录 手动发布rviz中的publish point思路方法实现publish point的发布的话题“/clicked_point”发布“/clicked_point”内容 使用脚本发布一系列的点疑惑补充 手动发布rviz中的publish point 我在利用move—base跑仿真时&#xff0c;是使用的rviz中的publish point按钮&#x…

大疆无人机安卓Mobile Sdk开发(三)制定航点任务WaypointMission

大疆无人机安卓Mobile Sdk开发&#xff08;一&#xff09;简单介绍 大疆无人机安卓Mobile Sdk开发&#xff08;二&#xff09;连接无人机&#xff0c;获取无人机信息 大疆无人机安卓Mobile Sdk开发&#xff08;三&#xff09;制定航点任务WaypointMission 大疆无人机安卓Mob…

ROS学习记录(四)基于ROS的A*算法仿真

代码来源:https://github.com/KailinTong/Motion-Planning-for-Mobile-Robots/tree/master/hw_2. 文章目录 前言一、获取代码二、过程演示1.启动roscore2.打开rviz3.打开rviz文件4.新建终端加载地图5.进行路径搜索 三、ROS包node.hAstar_searcher.hAstar_searcher.cppdemo_node…

利用Random Waypoint Model生成室内轨迹数据

利用Random Waypoint Model生成室内轨迹数据 1 模型简介1.1 Random Waypoint Model1.2 Random Walk Model1.3 Random Direction Model 2 生成轨迹数据链接 在做室内定位方面的实验时&#xff0c;打算利用RNN进行室内定位&#xff0c;而利用RNN做定位则需要室内行人的轨迹数据做…

pinpoint和skyWalking

首先&#xff0c;上个别人的研究成果&#xff0c;我也是踩着巨人的肩膀继续前进的。 随着pinpoint版本的迭代更新&#xff0c;这图上的结论有些已经过时了&#xff0c;比如pinpoint方面&#xff1a; 1.协议&#xff0c;最新2.1.0版本也是默认使用gRPC的&#xff1b; 2.TraceI…

航迹大师(Waypoint Master)怎么样

WayPoint Master(航迹大师)是一款针对大疆无人机倾斜摄影测量的专业级航线定制软件。 主要可分为&#xff1a;环绕航线、仿地航线、仿面航线、Lidar航线、电力航线。 1.区域环绕&#xff1a;生成区域交叉环绕航线&#xff0c;可以增强模型细节并有效减少外业照 片数量&#xff…

Autoware学习笔记waypoint_follower之pure_pursuit

1.pure_pursuit的launch文件如下。 <!-- --> <launch><arg name"is_linear_interpolation" default"True"/> <arg name"publishes_for_steering_robot" default"False"/> <!-- rosrun waypoint_fol…

寻路 Waypoint 与 NavMesh 比较

正文 1. WayPoint寻路 下图是一个典型的路点寻路 另一种方法是使用多边形来记录路径信息&#xff0c;它可以提供更多的信息给ai角色使用。下图就是一个navigation mesh。 以下列出几个WayPoint的不足之处&#xff1a; 一些复杂的游戏地图需要的WayPoint数量过于庞大有时会使角色…

CARLA 笔记(07)— 地图和导航(Landmarks、Waypoints、Lanes、Junctions、Environment Objects、路径点导航、地图导航、分层和非分层地图)

1. 地图 地图包括城镇的 3D 模型和道路定义。地图的道路定义基于 OpenDRIVE 文件&#xff0c;这是一种标准化的带注释的道路定义格式。 OpenDRIVE 定义道路、车道、路口等的方式决定了 Python API 的功能以及做出决策背后的原因。 1.1 更换地图 要改变地图&#xff0c;世界…

【Autoware】三、ROSBAG生成waypoint

1.启动Autoware cd ~/autoware.ai/ source install/setup.bash roslaunch runtime_manager runtime_manager.launch2.切换到Simulation模块 点击右侧的Ref&#xff0c;选择文件&#xff1a; /.autoware/sample_moriyama_150324.bag点击Play按钮以后&#xff0c;立马点击Paus…

第五篇:AWS deepracer student 赛道分析(Ace speedway)最佳路径,数据分析,waypoint分析(初步

文章目录 前言一,为什么需要分析赛道二&#xff0c;分析赛道需要的东西三&#xff0c;如何获得waypoint数据四&#xff0c;正式开始1.获取waypoint的数据2.处理数据 三&#xff0c;导入excel表绘图1.将txt文件导入excel表2.插入散点图3.成品图带有标识的版本最佳路径图&#xf…

unity3d WayPoint路点寻路,AI

前言 一个简单的人工智能WayPoint WayPoint: 游戏中敌人根据几个巡逻点自动巡逻&#xff0c;在巡逻过程中&#xff0c;时刻监听英雄&#xff08;敌人&#xff09;和自己距离是否达到追击范围&#xff08;不巡逻&#xff0c;追击英雄&#xff09;&#xff0c;在追击过程中&…

Unity中的AI算法和实现1-Waypoint

本文分享Unity中的AI算法和实现1-Waypoint 在Unity中, 我们有一些有趣且常见的AI算法可以研究和使用, 其中最常见的就是怪物的简单AI, 比如在RPG游戏里, 怪物在某些点定点巡逻, 当玩家进入检测区域时, 怪物会主动追击玩家, 追击到玩家后对玩家进行伤害, 或者在超过最大距离后脱…

统计中的“不相关”与“线性无关”

以上思维导图&#xff0c;看完即可理解。下述是文字介绍。 这二者是统计新手与老手都很容易混淆的两个概念&#xff0c;以下辨明一下&#xff1a; 两变量“不相关” 不相关是指二者互相独立&#xff0c;没有相关关系。注如森林里每棵树的树叶个数与村子里每个村民的体重...二…

辨析“正交”与“不相关”。

①不相关的定义是&#xff1a; ②正交的定义是&#xff1a; 若两个向量的点积为零&#xff08;即对应元素相乘之后求和为零&#xff09;&#xff0c;则称两个向量正交。 ③一对正交向量一定是不相关的&#xff0c;即正交的两个向量中&#xff0c;一个向量绝不可能用另一个向量…

【数理统计】随机变量X和Y独立一定不相关,不相关不一定独立

假设(X,Y) 均匀分布在单位元 x 2 y 2 1 x^2 y^2 1 x2y21上&#xff1a; X和Y的&#xff08;线性&#xff09;相关系数是0。为什么呢&#xff1f;直观来说&#xff0c;因为是个圆&#xff0c;如果你画一条线性回归的线&#xff0c;线的斜率是正的还是负的都不合适&#xf…

mysql的相关子查询和不相关子查询

概念介绍 嵌套在其他查询中的查询即子查询&#xff0c;子查询也叫内部查询。子查询中有相关子查询和不相关子查询&#xff1a;相关子查询是指查询结果依赖于外部查询的子查询&#xff0c;外部查询每执行一次&#xff0c;内部子查询也会执行一次&#xff1b;而不相关子查询是指…

MySQL中不相关子查询和相关子查询

嵌套在其它查询中的查询称之为子查询或内部查询。 包含子查询的查询称之为主查询或外部查询 student表 course表 score表 不相关子查询 内部查询的执行独立于外部查询&#xff0c;内部查询仅执行一次&#xff0c;执行完毕后将结果作为外部查询的条件使用 select * from sco…

《数据库系统概论》之相关子查询与不相关子查询

文章目录 前言数据表一、子查询&#xff08;subquery&#xff09;二、不相关子查询&#xff08;unrelated subqueries&#xff09;1.概念2.查询逻辑 三、相关子查询&#xff08;related subqueries&#xff09;1.概念2.查询逻辑3.带有EXISTS谓词的子查询 总结 前言 开篇感言 …

变量之间的相关性研究

目录 1 什么是相关性&#xff1f;协方差及协方差矩阵相关系数&#xff08;1&#xff09;简单相关分析&#xff08;2&#xff09;偏相关分析&#xff08;3&#xff09;复相关分析&#xff08;4&#xff09;典型相关分析 2 对已有数据的预分析2.1 绘制变量相关的热力图2.2 对热力…