Autoware的MPC源码解析(一)mpc_waypoints_converter解析

版权声明:本文为博主原创文章,未经博主允许不得转载。
源码地址:https://gitlab.com/autowarefoundation/autoware.ai/autoware/wikis/Source-Build
目前在最新的Autoware源码中,包含两种路径跟踪(横向)控制方法:纯跟踪(pure pursuit)和模型预测控制(Model Predict Control,MPC)。本文主要对其中的MPC源码进行解析。
如有错误或建议,欢迎提出。

关于mpc方法的原理可参考此博文:https://blog.csdn.net/u013914471/article/details/83824490

在mpc源码中包含了两个节点,一个是/mpc_waypoints_converter,另一个是/mpc_follower。关系如下图所示。
在这里插入图片描述此图来源于源码

在此篇中先解析mpc_waypoints_converter节点的源码。此节点主要是接收路径信息后,截取最近点前后的若干点生成局部路径发出去。将此节点订阅三个topic,分别是:

    sub_closest_waypoint_ = nh_.subscribe("/closest_waypoint", 1, &MPCWaypointsConverter::callbackClosestWaypoints, this);
    //接受最近路径点的序号
    sub_base_waypoints_ = nh_.subscribe("/base_waypoints", 1, &MPCWaypointsConverter::callbackBaseWaypoints, this);
    //接受原始全局路径信息
    sub_final_waypoints_ = nh_.subscribe("/final_waypoints", 1, &MPCWaypointsConverter::callbackFinalWaypoints, this);
    //接受最近路径点之后的路径点信息

发布一个topic:

pub_waypoints_ = nh_.advertise<autoware_msgs::Lane>("/mpc_waypoints", 1);
//发布局部路径信息(只包含最近路径点前后的若干个点)

接受路径信息后,先找出在/base_waypoints路径上的最近点:

// find closest point index in base_waypoints (topic /closest_waypoints has no consistency with /final_waypoints due to delay)
    int closest_idx = -1;
    for (int i = 0; i < (int)base_waypoints_.waypoints.size(); ++i) {
      const double d = sq_dist(final_waypoints.waypoints[1].pose.pose.position, base_waypoints_.waypoints[i].pose.pose.position);
      if (d < 0.01) {
        closest_idx = i;
        break;
      }
    }

将最近点之前的back_waypoints_num_个路径点(已经跑过的路径点)注入mpc_waypoints中:

int base_start = std::max(closest_idx - back_waypoints_num_, 0);
    for (int i = base_start; i < closest_idx; ++i)
    {
      mpc_waypoints.waypoints.push_back(base_waypoints_.waypoints.at(i));
      mpc_waypoints.waypoints.back().twist = final_waypoints.waypoints[1].twist;
    }

将最近点之后的front_waypoints_num_个路径点(未跑过的路径)注入mpc_waypoints中:

int final_end = std::min(front_waypoints_num_ + 1, (int)final_waypoints.waypoints.size());
    for (int i = 1; i < final_end; ++i)
    {
      mpc_waypoints.waypoints.push_back(final_waypoints.waypoints.at(i));
    }

发布局部路径信息:

pub_waypoints_.publish(mpc_waypoints);
Autoware MPC是一种基于模型预测控制(MPC)的自动驾驶软件。安装Autoware MPC主要需要以下步骤: 1. 硬件要求:首先需要一台可运行Linux操作系统的计算机。建议使用强大的计算机,以确保足够的计算能力和存储空间来运行Autoware MPC。 2. 安装依赖:在安装Autoware MPC之前,需要安装一些依赖项,例如ROS(机器人操作系统),CMake(构建工具)等。可以使用命令行工具来安装这些依赖项,具体命令可以在Autoware MPC的官方文档找到。 3. 下载Autoware MPC:可以从Autoware MPC的官方网站或GitHub页面上下载最新版本的软件包。下载完成后,解压缩软件包到指定的目录。 4. 构建Autoware MPC:使用CMake来构建Autoware MPC。进入解压缩后的软件包目录,运行CMake命令,生成构建文件。之后,使用make命令来编译和构建Autoware MPC。 5. 配置和安装:构建完成后,在Autoware MPC的目录找到安装脚本。运行该脚本来进行配置和安装。根据指示完成配置选项,例如选择硬件平台、传感器设置等。 6. 启动Autoware MPC:安装完成后,通过ROS命令来启动Autoware MPC。运行命令来启动不同模块,例如局部路径规划、障碍物检测等。 7. 测试Autoware MPC:安装完成后,可以使用模拟器或真实的自动驾驶车辆来测试Autoware MPC的性能和功能。根据测试结果,可以对配置进行进一步的调整和优化。 以上是关于Autoware MPC安装的大致步骤,具体的细节和命令可能会有所不同。安装过程,需要仔细阅读官方文档,并按照指示进行操作。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值