fuel无人机自主探索代码解读2——sdf_map.cpp【占据栅格地图、膨胀占据栅格地图、ESDF】

一、概述

sdf_map.cpp负责map_ros.cpp内部主体函数的具体实现,主要功能包括:

  1. 融合输入的深度或点云图生成全局占据栅格地图
  2. 根据launch参数生成全局膨胀占据栅格地图
  3. 基于膨胀占据栅格地图采用欧式距离传输生成局部的ESDF地图
  4. 采用三线性插值的方式得到某点的esdf值及梯度

备注:map_ros.cpp的主要函数说明:fuel无人机自主探索代码解读1——map_ros.cpp【地图ros接口】

二、主要函数及作用

1、SDFMap::initMap

作用:sdf map初始化
1、地图launch参数读取及相关数据生成
2、膨胀地图参数读取及相关数据生成
3、珊格地图、膨胀珊格地图、esdf等向量初始化
4、探索相关数据赋值
5、地图ros接口类初始化
6、ray-cast参数设置

2、SDFMap::resetBuffer()

作用:缓存重置
1、地图下边界珊格-----》地图上边界珊格:将对应珊格的膨胀占据珊格地图置于0;esdf参数值变更为初始值0.0
2、对当前帧点云AABB包围框的下界变为【0
从你提供的编译错误信息来看,编译失败的主要问题出现在两个地方: --- ### ✅ 第一处错误(次要): ``` make[2]: *** [px4ctrl/CMakeFiles/px4ctrl_node.dir/build.make:76: px4ctrl/CMakeFiles/px4ctrl_node.dir/src/PX4CtrlFSM.cpp.o] 错误 1 ``` 这表示 `PX4CtrlFSM.cpp` 文件在编译过程中出现了问题,但由于你没有提供具体的错误内容,我们暂时无法判断具体原因。 --- ### ⚠️ 第二处错误(主要): ``` error: expected unqualified-id before ‘if’ ``` 这一错误发生在 `sdf_map.cpp` 文件的第 1317 行。你给出的代码行是: ```cpp if (fabs(devi(0)) <0.4 && fabs(devi(1)) < 0.4 &&fabs(devi(2)) <0.4){ ``` 虽然这次你已经将 `%%` 改为 `&&`,但 `&&fabs` 这部分没有空格,这虽然在语法上是合法的,但容易引起误解或隐藏错误。建议格式化为更清晰的形式: ```cpp if (fabs(devi(0)) < 0.4 && fabs(devi(1)) < 0.4 && fabs(devi(2)) < 0.4) { ``` 此外,请检查以下几点: - `devi` 是否是一个有效的向量(如 `Eigen::Vector3d`)? - 是否包含了 `cmath` 或 `math.h` 头文件?因为 `fabs` 函数需要它。 - 括号是否匹配?确保 `if` 后面的括号成对出现。 - 是否在 `if` 语句前有语法错误(例如缺少分号、结构体未闭合等)? --- ### ✅ 建议修复步骤: 1. 修改 `if` 行为标准格式: ```cpp if (fabs(devi(0)) < 0.4 && fabs(devi(1)) < 0.4 && fabs(devi(2)) < 0.4) { ``` 2. 确保所有数学函数的头文件已包含: ```cpp #include <cmath> ``` 3. 清理构建缓存并重新编译: ```bash cd ~/Fast-Planner rm -rf build catkin_make ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值