【非常详细的autoware代码解析:autoware_lanelet2_map_loader程序详解】

文章详细介绍了如何在电脑上部署Autoware相关的ROS依赖库,特别是lanelet2_map_loader的使用,包括设置地图文件路径,加载OSM地图文件,生成并修改车道中心线,以及将lanelet2地图转换为二进制消息并发布。此外,还提供了关键代码片段以供参考。
摘要由CSDN通过智能技术生成

电脑上部署autoware相关的依赖库

在电脑上部署autoware相关的依赖库(这里可以不用安装autoware),根据电脑的ros版本进行安装,使用命令 sudo apt install ros-melodic-autoware-库名。
基于ros1环境的lanelet2_map_loader包含的头文件如下:

#include <ros/ros.h>
#include <lanelet2_projection/UTM.h>
#include <lanelet2_io/Io.h>
#include <lanelet2_core/LaneletMap.h>
#include <lanelet2_extension/utility/message_conversion.h>
#include <lanelet2_extension/projection/mgrs_projector.h>
#include <lanelet2_extension/io/autoware_osm_parser.h>
#include <lanelet2_extension/utility/utilities.h>

#include <autoware_lanelet2_msgs/MapBin.h>

#include <string>
#include <boost/filesystem.hpp>

设置文件路径代码

在cpp里面设置文件路径代码,也可以在launch文件里面写地图路径,然后配置路径参数,在cpp中直接提取para即可。

pnh.param<std::string>("lanelet2_path", lanelet2_path, "/home/alex/ros_learn/catkin_ws/src/mapdata/new_lanelet2_maps3.osm");

把地图文件路径赋值给path,然后进行一系列的路径验证。

boost::filesystem::path path(lanelet2_path);

路径验证无误之后,使用lanelet::load函数读取地图,并存储于map变量中。
得到map之后,开始画车道中心线,如果计算画中心线,则把false改为true,不需要计算则保留false;

lanelet::utils::overwriteLaneletsCenterline(map, false);

生成中心线(参考线)

生成中心线的函数如下:

void overwriteLaneletsCenterline(lanelet::LaneletMapPtr lanelet_map, const bool force_overwrite)
{
for (auto & lanelet_obj : lanelet_map->laneletLayer) {
if (force_overwrite || !lanelet_obj.hasCustomCenterline()) {
const auto fine_center_line = generateFineCenterline(lanelet_obj);
lanelet_obj.setCenterline(fine_center_line);
}
}
}

把lanelet2地图转化成点,然后发布出去

lanelet::utils::conversion::toBinMsg(map, &map_bin_msg);
map_bin_pub.publish(map_bin_msg);

lanelet2地图下载程序到此解析结束。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

埋头苦干的墨小白

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值