FAST_LIO2 PCD地图实战:从三维点云到二维导航地图的完整转换指南

1. 项目概述:从地图生成到地图应用

如果你刚用FAST_LIO2_ROS2跑完一个数据集,看着屏幕上实时构建出的稠密点云地图,心里肯定挺有成就感。但紧接着问题就来了:终端里那个 .pcd 文件,它静静地躺在你指定的目录里,然后呢?这个地图文件怎么用起来?它和我们在ROS1里熟悉的 .pgm 栅格地图有什么不同?能不能直接用来导航?还是说它只是个“半成品”,需要进一步处理?这些问题,恰恰是从SLAM算法“玩具演示”走向实际机器人应用的关键一步。

我遇到过不少刚接触激光SLAM的朋友,他们花了很多时间调参、跑通算法,成功保存了地图,但到了使用环节却卡住了。一个典型的场景是:在实验室里用小车建好了图,想让它沿着地图里的走廊再跑一遍,却发现根本不知道如何让导航系统加载这个点云地图。这感觉就像你费劲画好了一张非常精细的图纸,却找不到尺子和笔在上面规划路径。实际上,FAST_LIO系列算法生成的PCD地图,是一份高精度的三维环境几何档案,它的使用方式远比二维栅格地图丰富,但也更复杂。

这份地图的核心价值在于其包含的丰富三维信息。每一个点不仅有(x, y, z)坐标,通常还有强度(Intensity)信息,有些数据源还能提供颜色(RGB)。它忠实记录了激光雷达“看到”的一切:墙壁的曲面、桌子的棱角、天花板的吊灯。但机器人导航系统,无论是ROS里的move_base还是其他规划器,传统上更“习惯”处理二维的、被划分为“空闲”和“占用”的栅格地图。这就产生了第一个矛盾:高维数据与低维需求之间的鸿沟。理解如何桥接这个鸿沟,就是掌握PCD地图使用的核心。

2. PCD地图的本质与常见使用场景解析

2.1 PCD文件:不只是点坐标的集合

首先得搞清楚我们手里的 .pcd 文件到底是什么。PCD(Point Cloud Data)是点云库(PCL)定义的一种格式,它比普通的文本点坐标列表更结构化。用 pcl_viewer 打开一个FAST_LIO生成的PCD地图,你可能会看到成千上万个点。但重要的是理解这些点的“上下文”——它们是在世界坐标系下的。这意味着,地图的原点(0,0,0)通常对应着机器人开始建图时的起始位置。

FAST_LIO在保存地图时,默认会将所有累积到当前时刻的、经过运动畸变矫正和去噪后的激光点,转换到同一个全局坐标系下,然后保存。这里有个关键细节: 这些点云通常没有经过严格的闭环检测和全局优化 (除非你额外启用了PGO或HBA模块)。也就是说,如果你在建图过程中走了很长一段路再回到起点,地图在起点处可能会有“重影”,即同一面墙出现了两层略微错开的点云。这是里程计累积误差导致的,在直接使用地图前,心里要对这种可能的误差有数。

一个高质量的、经过全局优化(如使用项目中的PGO或HBA服务)的PCD地图,其点云应该是“紧致”的,重复结构对齐良好。你可以通过肉眼观察重叠区域点云的厚度来初步判断地图质量。这是后续所有应用的基础,一个漂移严重的地图,无论怎么用,效果都不会好。

2.2 五大核心应用场景与工作流

根据我的经验,PCD地图的使用可以归纳为以下几个主流方向,每个方向对应着不同的处理流程和工具链:

2.2.1 场景一:纯可视化与测量分析 这是最直接的用途。你可能需要向客户展示建图效果,或者测量环境中某些结构的尺寸(如门宽、走廊长度、设备间距)。这时,你需要的是强大的点云查看和测量工具。

  • 推荐工具 pcl_viewer (命令行)、CloudCompare (图形化,功能强大)、MeshLab。
  • 操作流程 :直接使用工具打开PCD文件。在CloudCompare中,你可以方便地进行距离测量、截面分析、计算点云密度统计等。
  • 注意事项 :FAST_LIO生成的PCD可能是二进制格式以节省空间,确保你的工具支持 PCD V0.7 格式。对于超大型地图(>500MB), pcl_viewer 可能会卡顿,建议用CloudCompare并启用八叉树加速渲染。

2.2.2 场景二:为后续算法提供先验地图 这是科研和高级应用中非常常见的需求。你建好的高精度地图,可以作为其他算法的输入。例如:

  • 语义SLAM :在已知几何地图的基础上,添加语义标签(这是墙,那是椅子)。
  • 长期定位 :将当前扫描的点云与全局地图进行匹配,实现重定位。FAST_LIO2_ROS2项目中的 localizer 节点就是干这个的。
  • 仿真环境重建 :将真实世界地图导入Gazebo等仿真器,构建高保真的仿真环境。
  • 工作流 :这个场景的关键在于数据接口。你需要将PCD地图转换成目标算法要求的格式,或者直接使用PCL库在代码中读取PCD文件。通常需要编写简单的转换脚本。

2.2.3 场景三:转换为二维栅格地图用于传统导航 这是让PCD地图在现有机器人系统(如使用ROS2 Navigation2)中“干活”的最实用路径。导航规划器(如DWA、TEB)需要一张二维的代价地图(Costmap)。

  • 核心思路 :将三维点云投影到二维水平面(通常是地面),生成一个占据栅格地图(Occupancy Grid Map)。
  • 关键挑战
    1. 地面分割 :必须区分出属于地面的点(不放入障碍物图层)和非地面的点(如桌椅腿、墙面)。直接投影而不做分割,会把地面上的所有点都变成“障碍物”,机器人将寸步难行。
    2. 高度阈值 :对于导航而言,只关心机器人能撞到的高度范围内的障碍物。比如你的机器人高度是0.5米,那么离地0.6米以上的点(如桌面)就可以忽略。这需要设置合适的Z轴范围滤波器。
  • 常用工具/方法
    • pointcloud_to_laserscan + map_server :一个经典但略显过时的ROS1方案。先通过 pointcloud_to_laserscan 节点将点云“压扁”成模拟的激光扫描线,然后用 gmapping hector_slam 的建图模式来生成栅格地图。这个方法对地面分割要求高,且依赖模拟激光的参数调整。
    • octomap_server :更现代和强大的选择。Octomap是一种基于八叉树的三维概率占据地图,它可以自然地生成二维切片。 octomap_server 节点可以订阅点云话题,实时构建并发布三维Octomap和二维的投影地图。你可以配置高度阈值,只将特定高度范围内的障碍物投影到二维地图上。
    • 自定义PCL处理脚本 :最灵活的方式。使用PCL库写一个程序,流程为:读取PCD -> 体素滤波降采样 -> 通过RANSAC或平面拟合分割地面 -> 移除地面点 -> 设置高度阈值过滤 -> 将剩余点云投影到XY平面 -> 根据投影点密度生成二值图像(栅格地图) -> 保存为PGM/PPM文件。这个方法你可以精确控制每一个环节的参数。

2.2.4 场景四:用于三维导航与规划 这是前沿方向,适用于无人机、机械臂操作等需要在三维空间运动的机器人。规划器需要在三维点云或由其重建的网格中寻找路径。

  • 工具链 :可能需要将点云转换为三角网格(使用PCL的贪婪投影三角化或泊松重建),然后使用OMPL(Open Motion Planning Library)等规划库在三维空间进行采样规划。
  • 注意事项 :计算复杂度高,对地图的完整性和噪声更敏感。目前还不是工业界的主流方案,多见于研究。

2.2.5 场景五:地图编辑与修复 建出来的地图可能有你不想要的东西,比如移动的行人、临时摆放的箱子产生的“鬼影”。或者你需要在地图上标注一些语义信息(如充电桩位置、房间号)。

  • 工具 :CloudCompare的 segmentation 和 cleaning 功能非常强大。你可以手动框选并删除 outlier(离群点)。对于添加标注,可以导出点云后,在编辑软件中为特定点添加自定义字段(如标签),再保存为新PCD。

3. 实战:将FAST_LIO的PCD地图转换为ROS2导航可用的地图

让我们聚焦于最实用、需求最广的场景三:转换为二维栅格地图。我将分享一个经过实战检验的、基于PCL和自定义节点的工作流。这个方案比依赖 octomap_server 更轻量,且参数调整更直观。

3.1 环境准备与依赖安装

首先,确保你的ROS2环境已经安装了PCL。对于ROS2 Humble,通常 desktop 版本会自带。如果没有,可以安装:

sudo apt install ros-humble-pcl-ros ros-humble-pcl-conversions ros-humble-pcl-msgs

我们还需要PCL的库文件:

sudo apt install libpcl-dev

接下来,我们创建一个新的ROS2功能包来放置我们的转换工具。假设你的工作空间是 ~/ros2_ws

cd ~/ros2_ws/src
ros2 pkg create --build-type ament_cmake pcd_to_gridmap --dependencies rclcpp sensor_msgs nav_msgs pcl_ros pcl_conversions tf2_geometry_msgs
cd pcd_to_gridmap

3.2 核心转换节点的设计与实现

src 目录下创建文件 pcd_to_gridmap_node.cpp 。这个节点的核心逻辑如下:

  1. 加载PCD文件 :使用PCL的 pcl::io::loadPCDFile 函数。
  2. 预处理 :体素滤波(VoxelGrid)降低点云密度,加快处理速度,并减少噪声。
  3. 地面分割 :采用基于RANSAC的平面检测方法,分割出地面点云。
  4. 障碍物提取 :移除地面点云,得到代表障碍物的点云。
  5. 高度滤波 :根据机器人底盘高度和最大越障高度,设置一个Z轴范围(例如 [0.05, 0.5] 米),只保留这个范围内的障碍物点。太低的点可能是地面噪声,太高的点机器人撞不到。
  6. 投影与栅格化 :将过滤后的三维点投影到XY平面。定义一个地图的原点、分辨率(如0.05米/像素)和尺寸。遍历所有投影点,将其落入的栅格标记为“占用”(Occupied)。
  7. 膨胀处理 :为了让机器人规划路径时与障碍物保持安全距离,需要对占用的栅格进行膨胀(膨胀半径通常设为机器人半径加上安全余量)。
  8. 保存地图 :将最终的栅格地图保存为PGM(图像)和YAML(元数据)文件,完全兼容ROS的 map_server

关键参数解析

  • 体素滤波叶子大小 :通常设为0.05-0.1米。太小处理慢,太大丢失细节。
  • RANSAC距离阈值 :判断点是否为平面内的距离阈值,0.03-0.05米是个不错的起点。这个值取决于你地面的平整度和点云噪声水平。
  • 高度范围 [z_min, z_max] :这是 最重要的参数之一 z_min 应略高于地面分割的高度(避免残留地面点), z_max 应略高于你的机器人高度。例如,对于TurtleBot3,可以设为 [0.05, 0.3]
  • 地图分辨率 :0.05米是平衡精度和计算开销的常用值。分辨率越高,地图越精细,但规划计算量也越大。
  • 膨胀半径 :单位是像素。如果分辨率是0.05米,希望膨胀0.2米,那么半径就是 0.2 / 0.05 = 4 像素。

由于完整的C++代码较长,这里我给出核心的伪代码逻辑和关键片段:

// 关键片段:地面分割与过滤
pcl::PointCloud<pcl::PointXYZI>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZI>);
pcl::PointCloud<pcl::PointXYZI>::Ptr cloud_filtered(new pcl::PointCloud<pcl::PointXYZI>);
pcl::PointCloud<pcl::PointXYZI>::Ptr ground_plane(new pcl::PointCloud<pcl::PointXYZI>);
pcl::PointCloud<pcl::PointXYZI>::Ptr obstacles(new pcl::PointCloud<pcl::PointXYZI>);

// 1. 体素滤波
pcl::VoxelGrid<pcl::PointXYZI> voxel;
voxel.setInputCloud(cloud);
voxel.setLeafSize(0.05f, 0.05f, 0.05f); // 5cm的体素
voxel.filter(*cloud_filtered);

// 2. 地面分割 (RANSAC)
pcl::ModelCoefficients::Ptr coefficients(new pcl::ModelCoefficients);
pcl::PointIndices::Ptr inliers(new pcl::PointIndices);
pcl::SACSegmentation<pcl::PointXYZI> seg;
seg.setOptimizeCoefficients(true);
seg.setModelType(pcl::SACMODEL_PLANE);
seg.setMethodType(pcl::SAC_RANSAC);
seg.setDistanceThreshold(0.05); // 5cm阈值
seg.setInputCloud(cloud_filtered);
seg.segment(*inliers, *coefficients);

// 提取地面和非地面点云
pcl::ExtractIndices<pcl::PointXYZI> extract;
extract.setInputCloud(cloud_filtered);
extract.setIndices(inliers);
extract.setNegative(false); // 提取地面点
extract.filter(*ground_plane);
extract.setNegative(true); // 提取非地面点(障碍物)
extract.filter(*obstacles);

// 3. 高度滤波
pcl::PassThrough<pcl::PointXYZI> pass;
pass.setInputCloud(obstacles);
pass.setFilterFieldName("z");
pass.setFilterLimits(z_min_, z_max_); // 例如 0.05, 0.5
pass.filter(*obstacles);

// 4. 投影与栅格化 (伪代码)
nav_msgs::msg::OccupancyGrid map;
map.info.resolution = resolution_; // 0.05
map.info.width = ceil((x_max - x_min) / resolution_);
map.info.height = ceil((y_max - y_min) / resolution_);
map.info.origin.position.x = x_min;
map.info.origin.position.y = y_min;
map.info.origin.position.z = 0.0;
map.info.origin.orientation.w = 1.0; // 无旋转
map.data.resize(map.info.width * map.info.height, 0); // 初始化为0(空闲)

for (const auto& point : obstacles->points) {
    int grid_x = static_cast<int>((point.x - x_min) / resolution_);
    int grid_y = static_cast<int>((point.y - y_min) / resolution_);
    if (grid_x >=0 && grid_x < map.info.width && grid_y >=0 && grid_y < map.info.height) {
        int index = grid_y * map.info.width + grid_x;
        map.data[index] = 100; // 标记为占用
    }
}

// 5. 膨胀处理 (可以使用OpenCV的dilate函数)
cv::Mat mat(map.info.height, map.info.width, CV_8SC1, &map.data[0]);
cv::Mat kernel = cv::getStructuringElement(cv::MORPH_ELLIPSE,
                                            cv::Size(2*inflation_radius_+1, 2*inflation_radius_+1));
cv::dilate(mat, mat, kernel);

// 6. 保存地图
// ... 调用 map_server 的 map_saver 工具或自己写文件IO

你需要编写完整的节点,添加参数服务器来动态调整 z_min_ , z_max_ , resolution_ , inflation_radius_ 等参数,并编译这个功能包。

3.3 启动与参数调试

编译后,你可以通过启动文件或命令行运行这个节点,并指定PCD文件路径:

ros2 run pcd_to_gridmap pcd_to_gridmap_node --ros-args -p pcd_file:=/path/to/your_map.pcd -p z_min:=0.05 -p z_max:=0.3

调试技巧

  1. 可视化中间结果 :在代码中,将处理后的点云(如地面点、障碍物点)发布为ROS2的 sensor_msgs/msg/PointCloud2 话题,用 rviz2 PointCloud2 插件查看。这是调试地面分割和高度滤波参数最有效的方法。如果发现桌子腿被切掉了,说明 z_max 太低;如果地面残留太多点,说明RANSAC的 距离阈值 太小或 z_min 太低。
  2. 分步验证 :先调好地面分割,确保地面被干净地移除。再调高度滤波,确保机器人活动范围内的障碍物都被保留。最后调整膨胀半径,在 rviz2 中观察膨胀后的地图是否给机器人留出了合理的通道。
  3. 使用 map_server 加载测试 :生成PGM和YAML后,用 ros2 run nav2_map_server map_server --ros-args -p yaml_filename:=/path/to/your_map.yaml 启动地图服务器,然后在 rviz2 中添加 OccupancyGrid 显示,检查地图是否有扭曲、错位或不该有的障碍物。

4. 进阶应用:在ROS2中直接使用PCD地图进行定位

除了转换成二维地图,FAST_LIO2_ROS2项目本身也提供了直接使用PCD地图进行重定位(Re-localization)的功能。这在一些需要三维先验信息的场景下非常有用,比如在多层建筑中,或者有大量悬空障碍物的仓库。

4.1 使用内置的Localizer节点

根据项目README,重定位流程如下:

  1. 启动重定位节点

    ros2 launch localizer localizer_launch.py
    

    这个节点会订阅当前的激光雷达点云(或FAST_LIO发布的特征点云)。

  2. 提供先验地图和初始猜测

    ros2 service call /localizer/relocalize interface/srv/Relocalize "{pcd_path: '/full/path/to/your_map.pcd', x: 0.0, y: 0.0, z: 0.0, yaw: 0.0, pitch: 0.0, roll: 0.0}"
    

    你需要提供之前建好的PCD地图的完整路径,以及一个粗略的初始位姿猜测( x, y, z, yaw, pitch, roll )。这个初始猜测非常重要,它告诉算法从地图的哪个位置附近开始匹配。如果初始偏差太大,ICP匹配很可能失败。

  3. 检查重定位结果

    ros2 service call /localizer/relocalize_check interface/srv/IsValid "{code: 0}"
    

    这个服务会返回重定位是否成功。成功的话,节点应该会开始发布基于地图匹配优化后的、全局一致的位姿估计。

实操心得

  • 初始位姿的获取 :如果你是从上次建图结束的地方开始重定位,那么初始位姿可以用建图结束时的机器人位姿。如果是全新的启动,你可能需要借助其他传感器(如UWB、二维码)提供一个粗略定位,或者手动指定一个大概的位置。
  • 地图质量是关键 :用于重定位的地图,其质量要求比用于导航的二维地图更高。闭环误差要小,点云要清晰。建议使用开启了PGO(位姿图优化)或HBA(一致性地图优化)后保存的地图。
  • 性能考虑 :直接进行全局点云匹配(ICP)计算量很大。项目采用了由粗到细的两阶段ICP,但对于非常大的地图,实时性依然是个挑战。确保你的地图经过了体素滤波降采样,并且 localizer 节点有足够的计算资源。

4.2 与Navigation2框架的集成思路

目前ROS2的Navigation2栈默认期望的是二维的 OccupancyGrid 。要让Navigation2直接利用三维定位结果,需要一些定制化工作:

  1. 位姿输入 :你可以将 localizer 节点发布的优化后的位姿(通常是 geometry_msgs/msg/PoseWithCovarianceStamped 类型,话题可能是 /localized_pose ),通过 remap 或者写一个简单的转换节点,提供给Navigation2的 amcl (用于定位)或直接提供给 robot_localization 滤波器。
  2. 代价地图 :虽然定位用了三维地图,但规划可能还是需要二维代价地图。你可以运行我们之前写的 pcd_to_gridmap 节点,实时接收 localizer 发布的全局位姿和原始的传感器点云(局部),生成一个局部的、实时更新的二维代价地图,提供给Navigation2的 costmap_2d 。这比使用一个静态的全局栅格地图更能适应环境的动态变化。

这是一种“混合”架构: 用三维地图实现高精度、全局一致的定位,用二维/2.5D代价地图实现高效的路径规划 。这是目前将FAST_LIO这类激光惯性里程计与成熟导航框架结合的比较现实的路径。

5. 常见问题、故障排查与经验总结

5.1 地图转换与使用中的典型问题

问题1:转换后的栅格地图出现大量“雪花点”或噪声。

  • 原因 :原始PCD地图中存在大量动态物体(如人、车)的点,或者FAST_LIO前端去噪不彻底,留下了许多孤立的离群点。
  • 解决方案
    1. 预处理PCD :在转换前,用CloudCompare或PCL的 StatisticalOutlierRemoval 滤波器对原始PCD文件进行离群点去除。这个滤波器会计算每个点到其邻居的平均距离,并移除那些距离超过标准偏差一定倍数的点。
    2. 调整转换参数 :增大体素滤波的叶子大小,可以在保留主要结构的同时过滤掉小噪声。但注意不要太大,否则会模糊边缘。
    3. 检查建图过程 :回看建图时的bag文件,是否在非常动态的环境中运行?考虑在更静态的时间段(如夜间)重新建图。

问题2:机器人在地图上定位时,感觉地图“漂移”或“对不上”。

  • 原因 :用于定位的地图(二维或三维)本身存在累积误差,即建图时没有完全闭环,或者闭环优化不够充分。
  • 解决方案
    1. 使用优化后的地图 :务必使用FAST_LIO2_ROS2中通过PGO或HBA服务优化后保存的地图。在启动建图时,就同时启动回环节点( pgo_launch.py ),并在建图结束后调用优化服务。
    2. 检查地图原点 :确保你加载地图时,指定的原点( origin )与建图时世界坐标系的原点一致。在转换二维地图时,YAML文件里的 origin 参数很重要。
    3. 重定位提供更好的初始值 :如果使用三维重定位,尽量提供更准确的初始位姿猜测。

问题3:二维栅格地图中,走廊或门口变得很窄,机器人过不去。

  • 原因 :膨胀半径设置过大,或者高度滤波的 z_min 设置过低,将地面噪声也当成了障碍物进行膨胀。
  • 解决方案
    1. 精细化高度滤波 :仔细调整 z_min 。在 rviz2 中观察过滤后的障碍物点云,确保只包含机器人实际可能碰撞的物体(桌腿、墙裙等),地面应该是干净的。
    2. 调整膨胀半径 :膨胀半径应为 机器人轮廓半径 + 安全余量 。安全余量不要设置得过于保守。可以先设小一点,在仿真或安全环境中测试机器人是否能顺利通过狭窄区域。
    3. 考虑机器人轮廓 :对于非圆形机器人,Navigation2支持设置机器人的足迹(Footprint),这是一个多边形。更精确的足迹配合适当的膨胀,比单纯增大圆形膨胀半径更有效。

问题4:PCD文件太大,加载或处理非常慢。

  • 原因 :FAST_LIO生成的是稠密点云,长时间、大范围建图会产生数GB的PCD文件。
  • 解决方案
    1. 强制降采样保存 :修改FAST_LIO的保存地图代码,在保存前加入体素滤波。这是最根本的方法。
    2. 后处理降采样 :使用PCL命令行工具或CloudCompare对保存好的PCD进行降采样。
      # 使用PCL工具 pcl_voxel_grid (需要先编译PCL工具)
      pcl_voxel_grid -input input_map.pcd -output output_map_downsampled.pcd -leaf 0.1 0.1 0.1
      
    3. 按需加载 :对于重定位等应用,可以研究八叉树地图(如Octomap)格式,它支持多分辨率管理和高效的碰撞检测。

5.2 性能优化与高级技巧

  1. 地图管理策略 :对于超大场景(如整个仓库、多层楼),不要试图用一个巨大的PCD文件。可以考虑按区域建图,保存多个子地图。在使用时,根据机器人的粗略位置动态加载附近的子地图。这需要上层应用进行管理。
  2. 利用强度信息 :FAST_LIO保存的点通常带有强度(Intensity)信息。在转换为栅格地图时,可以设置一个强度阈值,过滤掉那些强度过低(可能是玻璃、远处噪声)的点,让地图更干净。
  3. 多分辨率地图 :对于导航,机器人近处需要高分辨率地图进行精确避障,远处只需要低分辨率地图进行全局规划。可以尝试生成两张不同分辨率的栅格地图,在 costmap_2d 中配置不同的图层。
  4. 关于FAST_LIO2_ROS2项目的线程阻塞提醒 :项目README中特别提到了,由于ROS2回调的特性,在性能不足的硬件上可能出现阻塞。如果你在运行 localizer hba 节点时感觉卡顿,可以尝试按照建议,将耗时的计算(如ICP匹配)放到独立的线程中执行。这对于实时性要求高的应用至关重要。

从生成PCD到真正用起来,这个过程充满了细节和“坑”。但一旦走通,你就打通了从感知到导航的完整链条。我的建议是,从一个简单、小规模的环境开始实验,把整个流程跑通,记录下每一步的参数和效果。然后逐步增加环境的复杂度。记住,没有“万能参数”,所有参数都需要根据你的传感器、机器人和具体环境进行微调。可视化工具( rviz2 , pcl_viewer , CloudCompare)是你最好的朋友,多观察、多对比,你就能越来越深刻地理解手中这份三维地图所蕴含的信息,并让它真正为你的机器人服务。

2024年4月-2025年9月期间,研究团队在贵州习水国家级自然保护区制定39条样线,涵盖灌木林、常绿阔叶林、针叶林、常绿落叶阔叶混交林、针阔混交林等不同植被类型,每条样线分春夏秋冬4个季节采集样品,用真菌采集软件记录经纬度、海拔、采集地点、时间、生境等信息,使用佳能相机(R6 mark Ⅱ)对大型真菌进行拍照,并采集标本,标本存放于贵州省生物研究所大型真菌标本馆(HGAMF)。 通过形态学初步鉴定,结合分子生物学最终鉴定,参考已]报道的中国毒蘑菇名录开展毒蘑菇的认定。 调查到保护区内有毒真菌7目25科64种,导致中毒的主要类型有急性肾衰竭型、神经精神型和胃肠炎型。最终形成贵州习水国家级自然保护区大型有毒真菌图片数据集,它由以下2个部分组成。 (1)附件1包含78张原始照片(.JPG),照片名字包括了大型有毒真菌的拉丁名和中文名,若无中文名的直接用拉丁名。 (2)附件2是一个压缩文件,包含了2张工作表,其中一张表是大型有毒真菌39条样线的信息,另一张表是大型有毒真菌的中毒类型。 照片采用佳能相机R6 mark Ⅱ拍摄,物种鉴定通过多种文献核实,并经两位以上专家鉴定确认。该数据集可为研究地及周边的普通人识别有毒大型真菌提供参考,通过及时的图片对比,能有效避免误采误食大型有毒真菌,同时为因误食大型真菌可能引发的身体损伤进行了总结,能为患者及时治疗提供参考。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值