基于win+ubuntu双系统的FAST-LIVO2部署流程

基于win+ubuntu双系统的FAST-LIVO2部署流程

Ubuntu 双系统的安装部分,我基本复制了Ubuntu/Windows双系统安装巨详细——全面解决各种问题(疑难杂症),有手就行 。为了防止初学者在两个网页窗口之间来回跳跃跟跑产生困惑,我将核心安装步骤搬运至此。

在进行任何双系统操作前,请务必进入设置将 Windows Hello 的安全认证关闭(即取消人脸识别、指纹、PIN 码,确保系统无密码即可进入桌面)。否则,安装双系统的引导改变极有可能触发安全机制,导致之后无法启动进入 Windows 系统!

一、 Ubuntu 双系统安装流程

1.1 制作Ubuntu启动盘

你需要一个容量大于8GB的空u盘(不是空的也没事,但是制作启动盘会格式化u盘,所有东西都会丢失!),然后才能开始制作。
推荐使用rufus制作启动盘:下载Rufus-4.13.exe
下载完后可以直接打开,我们还需要到ubuntu的官网去下载系统iso镜像:下载Ubuntu桌面系统
目前建议下载Ubuntu 20.04.3 LTS(long-term support),虽然21.04已经推出,但是毕竟没有长期支持版来的稳定,并且20.04会持续提供性能和安全性更新。
镜像下载好之后,打开rufus:

Pasted image 20260421162620.png

有几个需要修改的地方已经用红色圈出。

  1. 设备会自动扫描你插入的u盘,如果你有多个u盘插入,请选择要写入镜像的u盘,别搞错了。
  2. 镜像文件选择下载好的Ubuntu iso系统镜像。
  3. 分区类型务必选择GPT分区表
  4. 目标类型务必选择UEFI(非CSM)
  5. 若你的BIOS只支持NTFS,要改成NTFS,不过一般都是支持FAT32的,先用FAT32,如果不行再回来改
    然后点击开始,这里选择“以iso镜像模式写入”

1.2. 利用 DiskGenius 划分空间

原教程使用的是系统自带的磁盘管理,这里笔者推荐使用 DiskGenius。打开软件,找一个空闲容量较大的盘(比如硬盘的D盘),右键磁盘蓝色条,选择“调整分区大小”。

Pasted image 20260424095002.png

在弹出的窗口中,压缩出一部分空间用于安装 Ubuntu(建议 100GB 以上即可,视个人需求而定)。压缩完成后,你的磁盘列表里会多出一块显示为“空闲”的灰色未分配空间。注意:千万不要去新建分区或者格式化它,留着空白就行。

Pasted image 20260424095057.png

1.3 准备工作(BIOS设置)

1.3.1关闭BitLocker

bitlocker是微软出品的用于保护硬盘的加密系统,按下win+S搜索BitLocker,点击进入后将其关闭,否则它将禁止任何非window的系统或设备对硬盘进行写入操作。

1.3.2 关闭安全启动(secure boot)和快速启动(fast boot)

首先查询你的电脑如何进入BIOSQ,一般是ESC、DEL、F2、F10、F12等。
重启电脑(保持启动盘插入),进入BlOS,找到Secureboot和FastBoot,将他们关闭,记得退出前保存。

1.3.3关闭平台可信模块(TPM)

同样是在BIOS中,关闭TPM(TrustedPlatformQModule),否则可能会禁止外界设备访问硬盘或CPU。若未开启或没有这个选项,则跳过不管。一般来说,此选项和Secure boot一起,在Secure(安全)选项卡下。

1.3.4如果你是dell电脑..

请仔细查看官网的说明:如何启用戴尔设备的安全启动功能|Dell中国,务必将启动模式调整为UEFl,并关闭安全启动。此外,请查看bios选项中的SystemConfigurationQ,若你的硬盘链接协议是SATARAID,请接着看1.3.5。

1.3.5 如果你是机械硬盘+固态硬盘..

一般来说,这时候你的电脑将以SATARAI的方式链接不同的硬盘,然而RAID是一个古老的技术,ubuntu不支持从这种方式启动。首先退出bios正常开机,进入windows之后win+R,输如msconfig回车:

Pasted image 20260421163429.png

进入“引导”选项卡,将引导选项设置成安全引导,选择最小,然后重启电脑,进入bios。
这时候,将bios中的sata operation改成AHCl,再保存退出BIOS,进入系统,这时候会进入安全模式Q,别慌。再次win+R,
msconfig回车,在”引|导“选项卡关闭安全引导,然后重新启动,看看是否正常进入windows。

1.3.6如果你的电脑使用了傲腾内存或开启了intelRST..

在BIOS中可以看到你的电脑是否启用的快速存储技术(找一找)。直接参照这个链接,一把搞定:DisableRSTforInstallingubuntu 20.4 Dual boot-Ask Ubuntu

1.4 开始安装配置

确保以上的步骤完成后,进入bios,把你的启动盘在启动顺序中调整到第一位,保存退出,重启后就会进入grub界面:

Pasted image 20260421163811.png

直接回车,就会进入Ubuntu的安装界面了:

Pasted image 20260421163916.png

选择安装Ubuntu,然后选择简体中文,随后继续选择中文:
Pasted image 20260421163932.png

先不联网,因为还没有换源,这时候下载的话会慢的半死:

Pasted image 20260421163943.png

可以选择最小安装,省空间。如果你空间够大,也可以用正常安装,会装好一些媒体播放工具和邮件之类的,还有办公套件libreoffice(和msoffice差不多),其实也没什么用:

Pasted image 20260421164003.png

1.5 分区设置(重点)

在“安装类型”界面,一定要选择最下面的“其他选项”,这样才可以自己手动分区。

Pasted image 20260421164057.png

此时会列出你的所有磁盘详细信息。找到刚才用 DiskGenius 分出来的那块显示为“空闲”的空间,根据大小判断就可以,笔者分的是70GB。

Pasted image 20260421164134.png

  1. EFI系统分区:大小设为 512 MB,新分区类型选“主分区”或“逻辑分区”均可,空间起始位置,用于:“EFI系统分区”。(这是启动引导所在的地方,非常重要)
    Pasted image 20260421164149.png
  2. 随后是根目录,稍微分大一些,因为很多程序默认安装在根目录下的opt文件夹 里,新手就不要随便乱改安装位置了,这里分配了40GB给/,注意分区类型选择主分区
    Pasted image 20260421164226.png
  3. 最后是home目录,相当于用户自己的空间,和windows下的C盘之外的空间差不多的概念,剩下的空间全部给/home,有些教程会让你分SWAP(虚拟内存),不过现在大家的内存都很大,所以没这个必要。这里注意选择逻辑分区:
    Pasted image 20260421164243.png

分区分完以后,_再次注意!!!_安装启动引导器(bootloader )的设备要选择刚刚新分配的EFI分区,千万别和windows的EFI分区搞错了,不然直接凉凉。可以通过大小来区别两者(我们分配的大小会是511MB):

Pasted image 20260421164318.png

选择现在安装,他会再让你确认一下是不是要把文件系统 写入,确定启动器位置安装无误后继续。where you are这里直接继续就行了:

时区直接在地图上点击中国所在的区域,下方会显示 “Shanghai”,点击继续。

Pasted image 20260424094603.png

在“您是谁?”这个界面,如果您是为了跟跑部署FAST-LIVO2,建议将“您的姓名”和“输入用户名”全部统一设置为 ftlian。密码设置个简单的(例如直接设为123456),建议勾选“自动登录”。
Pasted image 20260424094611.png

开始安装:
Pasted image 20260424094708.png

弹处这个界面就是安装好了,直接重启:
Pasted image 20260424094721.png

拔掉启动盘,按回车:
Pasted image 20260424094757.png

重启之后会进入grub,如果还是windows,就先进入bios调整一下启动顺序,把ubuntu放到windows前面:
Pasted image 20260424094809.png

第一个回车就会进入ubuntu,如果要进入windows,进入第三个就是了。
Pasted image 20260424094820.png

1.6 进入ubuntu后的基础设置

  1. 考虑到FAST-LIVO2很多东西需要进行联网部署下载环境,需要进行换源
    1. 在 Ubuntu 桌面空白处右键,选择“在终端中打开”(或者直接同时按住键盘上的 Ctrl + Alt + T 键),调出一个类似于命令行的黑框(终端)。
    2. 先备份一下系统原来默认的软件源列表。将下面这行代码复制粘贴到终端中,然后按回车。(注意: 因为代码前面带了 sudo 提权指令,系统会要求你输入密码。输入刚才设置的登录密码时屏幕依旧没有任何星号提示,盲打完敲回车即可)
      sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
      
    3. 接着,我们将默认的国外源网址直接替换为国内阿里云的镜像网址。直接把下面这两行代码一次性复制进终端,并按回车运行:
      sudo sed -i 's/cn.archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
      sudo sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
      

      Pasted image 20260424102222.png

    4. 网址修改完毕后,我们需要让系统重新联网读取一下最新的软件列表,输入以下代码并回车运行:sudo apt update
      此时屏幕上会开始滚动大量的 Get:1 http://mirrors.aliyun.com... 字样,静候几十秒钟,当代码停止滚动,且末尾没有弹出红色报错提示,换源操作即完成
      Pasted image 20260424102331.png
  2. 将启动项从默认的ubuntu换成windows,通常开机时的那个系统选择界面(GRUB 界面),计算机的排序是从0开始数的:第一行是Ubuntu(设为0),第二行是Ubuntu高级选项(设为1),你的 Windows 系统一般在第三行,也就是对应数字2。具体修改步骤如下:
    1. 在 Ubuntu 桌面空白处右键,选择“在终端中打开”(或者直接同时按住键盘上的 Ctrl + Alt + T 键),调出一个类似于命令行的黑框(终端)。
    2. 输入以下命令并按回车(提示输入密码时盲打回车即可),打开启动项配置文件,可能有些卡,没有报错就耐心等待:
      sudo gedit /etc/default/grub
      
    3. 这个时候屏幕上会弹出一个类似 Windows 记事本的文本编辑窗口。找到: GRUB_DEFAULT=0,将其修改为Windows启动项条目对应行数-1的值,一般为GRUB_DEFAULT=2,点击右上角保存,关闭gedit
      Pasted image 20260424103131.png
    4. 回到命令行,输入sudo update-grub,更新系统设置
      Pasted image 20260424103310.png

二、 Ubuntu 系统设置及 FAST-LIVO2 部署

需要注意的是,本步骤需要一定的英语阅读能力,对于初涉计算机的小白,很容易将所有黑框白字的英文字符全部当成不能理解的报错,将其当成一个工具去使用它,理解他的心态是很重要的。
在使用 Ubuntu 系统时,如不会配置网络代理的规则,请关闭诸如 clash,ssr,easyconnects 等网络代理软件。

接下来的步骤参考并使用了 B站UP主萝卜头vision的流程及部署脚本(下称脚本),下文参考视频如下:# Windows一键跑通FAST-LIVO2,闭眼跟做就行。笔者亦对脚本做出了较大幅度的修改,如您需要,可在本博客下方留言,笔者在后台看到即会联系你,不要钱。

  1. 将脚本文件整体复制到主文件夹下,推荐目录为 /home/当前用户名/Fast_livo2_env,也就是终端里的 $HOME/Fast_livo2_env。随后在该文件夹下属的环境构建 build_sh 文件夹中打开终端:
    Pasted image 20260518121542.png
  2. $HOME/Fast_livo2_env 提权至任何人可读写,中间有一部分,需要你输入刚才设定的密码。**在输入密码时,屏幕上不会给出任何提示,具体来讲,不会显示常见的“*******”这种密码表现形式,盲打即可!**直接将我打好的命令复制过去即可:
    sudo chmod -R 777 "$HOME/Fast_livo2_env"
    
  3. 安装编译工具链:
    sudo ./1-install_cmake_toolchain.sh
    
  4. 根据界面提示,输入 glxgears,检查是否有正在转动的齿轮,若无需要更换ubuntu版本,检查后关闭齿轮页面。
    glxgears
    
  5. 运行脚本配置 python-pip 镜像,:
    ./2-set-pip-mirror.sh
    
  6. 安装 vscode,在使用 “code .” 命令时,中间可能会有一些提示窗,点击 allow,在进入 vscode 后,trust(信任)父目录的作者,并点击左侧的允许。
    ./3-install_vscode.sh #安装vscode
    code . #该命令作用为运行vscode,以后需要运行vscode都需要使用该命令
    
  7. 构建 sophus、ceres。
    ./5-build_sophus.sh
    ./6-build_ceres.sh
    
  8. 安装 ros1,该步很容易会有网络环境原因导致脚本运行出错的情况,如出现请多尝试几次,根据命令行的提示来观察是否出现错误,包括但不限于 ERROR,time out,Connection failed,Too many requests 等字符,根据脚本提示,依次选择:
    [1]:一键安装(推荐):ROS(支持ROS/ROS2,树莓派Jetson)
    [1]:更换系统源再继续安装
    [2]:更换系统源并清理第三方源
    [1]:自动测速选择最快的源
    [1]:中科大镜像源 (推荐国内用户使用)
    [3]:noetic(ROS1)
    [1]:noetic(ROS1)桌面版
    wget http://fishros.com/install -O fishros && . fishros
    
    • 在命令行提示如下所示的字符时,即代表安装完成,但要仔细核查中间是否有脚本出错
    Add distro "rolling"
    updated cache in /home/ftlian/.ros/rosdep/sources.cache
    
  9. 测试 ros1 安装是否完善,通过第一步的方式,再打开一个新的命令行窗口,并输入:
    gazebo
    

    Pasted image 20260518122339.png

    • 如 gazebo 打开一个新窗口可以运行,关闭其窗口,如上步所示,再打开一个新的命令行窗口,并运行以下命令:
    roscore
    
    #如提示以下类似命令,即为正常运行
    ... logging to /home/ftlian/.ros/log/9fcbd648-e92b-11f0-8892-e76d4afb4d1d/roslaunch-FTLian-laptop-185487.log
    started roslaunch server http://localhost:43107/
    ROS_MASTER_URI=http://localhost:11311/
    started core service [/rosout]
    

    Pasted image 20260518122423.png

    • 保留上面那个窗口,打开第三个命令行窗口运行以下命令,如正常打开 Rviz 监控程序,关闭即可,至此,ros1 测试完毕。
      rosrun rviz rviz
      

      Pasted image 20260518122452.png

  10. 关闭多余的命令行窗口,在第一个命令行窗口安装opencv420依赖库
    ./9-build_opencv420_local.sh
    

    安装ros-cv-bridge插件

    sudo apt update
    sudo apt install ros-noetic-cv-bridge
    
  11. 构建 fast_livo2,运行以下命令,至此,fast_livo2 部署流程完毕。修正后的脚本会自动使用当前用户的 $HOME/Fast_livo2_env/ws_fast_livo2 作为工作空间路径,不再需要手动把脚本中的用户名改成 ftlian
    ./9-build_fast_livo2.sh
    

常见错误

  • 如果在第 12 步出现 command not found 等错误,重新安装 ros1,即第 9 步。
  • 由于网络环境原因,在安装时如出现 “time out”,“Connection failed”,“Too many requests”等提示均为网络错误,有两种解决方式:
    1. 根据运行时的脚本断点,手动输入接下来的脚本
    2. 重运行脚本

三、 物理硬件连接

硬件部署采用简达硬件同步器 Avia 版,海康 MV-CS050-10GC,大疆 Livox Avia。上手较易,基本的接线连接方式及原理图如下:

Pasted image 20260421162545.png

  1. 根据上一章内容,在当前文件夹下构建Livox及摄像头驱动
./10-build-livox-driver.sh
  1. 将 2USB-A、1xRJ45(网线接口)连接到电脑后,在 Ubuntu 桌面右上角的网络设置里,找到“有线连接(Wired)”的设置,转到 IPv4 选项卡。
    Pasted image 20260520114504.png
  2. 将有线网卡配置为手动模式(Manual),IP 为 192.168.1.50,网址掩码 255.255.255.0,应用保存。
    Pasted image 20260520114528.png
  3. 在 Ubuntu 系统的终端中输入 lsusb,如下图所示若出现相机厂商字符则 USB 设备挂载成功。
  4. 随后输入 ping 192.168.1.1xx(其中 xx 为大疆 Livox Avia 雷达设备 SN 码最后两位,SN 码用手机扫描雷达设备后方右下角的小二维码即可获得到。该流程中的雷达设备 ip 为 192.168.1.174)。确定雷达通讯连通后,可输入 Ctrl+C 强制中断 ping 流程。
    lsusb #检查usb设备挂载
    ping 192.168.1.174 #检查雷达通讯
    

Pasted image 20260421162551.png

6. 检查 /dev/ttyUSB0 是否存在。该串口通常用于简达同步器的时间同步;若设备不存在,需要重新插拔同步器 USB,并用 dmesg -w 观察系统实际分配的是 /dev/ttyUSB0/dev/ttyUSB1 还是其他串口。若存在但驱动提示无权限,可临时放开权限:

ls /dev/ttyUSB*
sudo chmod 666 /dev/ttyUSB0

至此,雷达及相机已连接至 Ubuntu 系统!

四、运行雷达扫描一键脚本

Fast_livo2_env目录下,在终端中打开,在bash里运行

./run_fastlivo2.sh

选择1,即可开启全部脚本。

五、常用配置文件与结果保存位置

FAST-LIVO2 跑通后,最常需要检查的是两个配置文件:

/home/ftlian/Fast_livo2_env/ws_fast_livo2/src/FAST-LIVO2/config/avia.yaml
/home/ftlian/Fast_livo2_env/ws_fast_livo2/src/FAST-LIVO2/config/camera_pinhole.yaml

如果前面使用并非是推荐用户名 ftlian,则把路径中的ftlian 替换为 当前用户名

5.1 avia.yaml

avia.yaml 是 FAST-LIVO2 的主运行配置文件,决定订阅哪些 ROS 话题、使用哪些外参、是否启用 IMU/VIO/LIO,以及是否保存点云。

common

common:
  img_topic: "/left_camera/image"
  lid_topic: "/livox/lidar"
  imu_topic: "/livox/imu"
  img_en: 1
  lidar_en: 1
  ros_driver_bug_fix: false
  • img_topic:相机图像话题。海康相机驱动默认发布到 /left_camera/image
  • lid_topic:Livox 雷达点云话题。使用 livox_lidar_msg.launch 时通常为 /livox/lidar
  • imu_topic:Livox IMU 话题,通常为 /livox/imu
  • img_en:是否启用图像。1 为启用,0 为关闭视觉,仅跑 LiDAR/IMU。
  • lidar_en:是否启用雷达。正常运行应为 1
  • ros_driver_bug_fix:针对部分 ROS 驱动时间戳跳变的兼容开关。默认保持 false

pcd_save

pcd_save:
  pcd_save_en: false
  colmap_output_en: false
  filter_size_pcd: 0.15
  interval: -1
  • pcd_save_en:是否保存 PCD 点云。默认关闭。
  • colmap_output_en:是否额外导出 COLMAP 格式的图像和位姿文件。
  • filter_size_pcd:保存点云时的降采样体素大小。
  • interval:PCD 保存间隔。-1 表示运行结束时保存为一个总点云;大于 0 表示每隔指定数量的雷达帧保存一个 PCD。

evo

evo:
  seq_name: "CBD_Building_01"
  pose_output_en: false
  • seq_name:轨迹输出文件名的一部分。
  • pose_output_en:是否输出轨迹文件。启用后保存到 FAST-LIVO2/Log/result/<seq_name>.txt

extrin_calib

extrin_calib:
  extrinsic_T: [0.04165, 0.02326, -0.0284]
  extrinsic_R: [1, 0, 0, 0, 1, 0, 0, 0, 1]
  Rcl: [...]
  Pcl: [...]
  • extrinsic_T:IMU 与 LiDAR 之间的平移外参。该值应来自标定结果,不建议随意修改。
  • extrinsic_R:IMU 与 LiDAR 之间的旋转外参,按 3×3 矩阵逐行展开。
  • Rcl:LiDAR 到相机的旋转外参,按 3×3 矩阵逐行展开。
  • Pcl:LiDAR 到相机的平移外参。

time_offset

time_offset:
  imu_time_offset: 0.0
  img_time_offset: 0.1
  exposure_time_init: 0.0
  • imu_time_offset:IMU 时间偏移补偿。若日志长期提示 IMU and LiDAR not synced,可结合实际时间差检查该项。
  • img_time_offset:图像时间偏移补偿。硬件同步正常时通常保持教程给定值。
  • exposure_time_init:曝光时间初值,用于视觉曝光估计。

preprocess

preprocess:
  point_filter_num: 1
  filter_size_surf: 0.1
  lidar_type: 1
  scan_line: 6
  blind: 0.8
  • point_filter_num:点云抽样间隔,1 表示不过滤抽样。
  • filter_size_surf:面特征/地图点云降采样体素大小,数值越大点云越稀疏。
  • lidar_type:雷达类型,1 对应 Livox Avia。
  • scan_line:雷达线数,Avia 默认使用 6
  • blind:近距离盲区过滤阈值,单位为米。小于该距离的点会被过滤。

vio

vio:
  max_iterations: 5
  outlier_threshold: 1000
  img_point_cov: 100
  patch_size: 8
  patch_pyrimid_level: 4
  normal_en: true
  raycast_en: false
  inverse_composition_en: false
  exposure_estimate_en: true
  inv_expo_cov: 0.1
  • max_iterations:视觉优化最大迭代次数。
  • outlier_threshold:视觉残差外点阈值。
  • img_point_cov:图像点观测协方差,数值越大代表对视觉约束越不自信。
  • patch_size:直接法匹配图像块大小。
  • patch_pyrimid_level:图像金字塔层数。
  • normal_en:是否使用法向量信息。
  • raycast_en:是否启用 raycast。
  • inverse_composition_en:是否启用 inverse compositional 优化形式。
  • exposure_estimate_en:是否估计曝光变化。
  • inv_expo_cov:曝光估计协方差。

imu

imu:
  imu_en: true
  imu_int_frame: 30
  acc_cov: 0.5
  gyr_cov: 0.3
  b_acc_cov: 0.0001
  b_gyr_cov: 0.0001
  • imu_en:是否启用 IMU。
  • imu_int_frame:IMU 初始化/积分使用的帧数参数。
  • acc_cov:加速度计噪声协方差。
  • gyr_cov:陀螺仪噪声协方差。
  • b_acc_cov:加速度计零偏协方差。
  • b_gyr_cov:陀螺仪零偏协方差。

lio

lio:
  max_iterations: 5
  dept_err: 0.02
  beam_err: 0.05
  min_eigen_value: 0.0025
  voxel_size: 0.5
  max_layer: 2
  max_points_num: 50
  layer_init_num: [5, 5, 5, 5, 5]
  • max_iterations:LIO 优化最大迭代次数。
  • dept_err:深度误差参数。
  • beam_err:激光束误差参数。
  • min_eigen_value:平面特征最小特征值阈值。
  • voxel_size:体素地图分辨率。
  • max_layer:体素地图最大层级。
  • max_points_num:每个体素内保留的最大点数。
  • layer_init_num:各层体素初始化点数。

local_map

local_map:
  map_sliding_en: false
  half_map_size: 100
  sliding_thresh: 8
  • map_sliding_en:是否启用局部地图滑窗。
  • half_map_size:局部地图半边长。
  • sliding_thresh:触发地图滑动的阈值。

uav

uav:
  imu_rate_odom: false
  gravity_align_en: false
  • imu_rate_odom:是否以 IMU 频率输出里程计。
  • gravity_align_en:是否启用重力对齐。

publish

publish:
  dense_map_en: true
  pub_effect_point_en: false
  pub_plane_en: false
  pub_scan_num: 1
  blind_rgb_points: 0.0
  • dense_map_en:是否发布稠密地图。
  • pub_effect_point_en:是否发布参与优化的有效点。
  • pub_plane_en:是否发布平面特征。
  • pub_scan_num:发布点云帧间隔。
  • blind_rgb_points:RGB 点云发布时的近距离过滤阈值。

5.2 camera_pinhole.yaml

camera_pinhole.yaml 是相机模型配置。FAST-LIVO2 对图像尺寸要求非常严格:实际收到的 /left_camera/image 尺寸必须等于 cam_width * scalecam_height * scale

cam_model: Pinhole
cam_width: 1024
cam_height: 768
scale: 1
cam_fx: 1293.56944
cam_fy: 1293.3155
cam_cx: 498.91359
cam_cy: 394.799224
cam_d0: -0.076160
cam_d1: 0.123001
cam_d2: -0.00113
cam_d3: 0.000251
  • cam_model:相机模型类型。这里使用针孔模型 Pinhole
  • cam_width:相机标定时的原始图像宽度。
  • cam_height:相机标定时的原始图像高度。
  • scale:图像缩放比例,同时会缩放相机模型尺寸和内参。默认 1280x1024 配合 scale: 0.5,FAST-LIVO2 实际期望输入图像为 640x512
  • cam_fx:相机 x 方向焦距。
  • cam_fy:相机 y 方向焦距。
  • cam_cx:主点 x 坐标。
  • cam_cy:主点 y 坐标。
  • cam_d0:径向畸变参数 k1
  • cam_d1:径向畸变参数 k2
  • cam_d2:切向畸变参数 p1
  • cam_d3:切向畸变参数 p2

运行时可用下面命令检查实际图像尺寸:

rostopic echo -n 1 /left_camera/image | grep -E "height:|width:|encoding:"

若输出为:

height: 512
width: 640

则匹配默认 camera_pinhole.yaml。若输出为 height: 384width: 512,说明相机实际发布的是 512x384,需要调整海康相机输出尺寸,或重新换算并修改 camera_pinhole.yaml 中的 cam_widthcam_heightcam_fxcam_fycam_cxcam_cy

海康相机驱动自身的配置文件通常在:

/home/当前用户名/Fast_livo2_env/ws_mov_driver/src/mvs_ros_driver/config/left_camera_trigger.yaml

其中 image_scale 会影响最终发布图像的缩放比例。若当前驱动源码没有调用海康 SDK 的 WidthHeightOffsetXOffsetY 设置接口,则 left_camera_trigger.yaml 里的 widthheightOffset_xOffset_y 可能不会真正改变相机 ROI,最终尺寸仍以 rostopic echo -n 1 /left_camera/image 看到的结果为准。

5.3 PCD 与图像保存位置

FAST-LIVO2 的保存目录不是运行脚本所在目录,而是源码目录下的 Log 文件夹:

/home/当前用户名/Fast_livo2_env/ws_fast_livo2/src/FAST-LIVO2/Log/

PCD 点云

只有当 avia.yaml 中设置:

pcd_save:
  pcd_save_en: true

才会保存 PCD 点云。

interval: -1 时,程序会在退出时保存总点云:

FAST-LIVO2/Log/PCD/all_raw_points.pcd
FAST-LIVO2/Log/PCD/all_downsampled_points.pcd

interval 大于 0 时,程序会按间隔分段保存:

FAST-LIVO2/Log/PCD/1.pcd
FAST-LIVO2/Log/PCD/2.pcd
FAST-LIVO2/Log/PCD/3.pcd
FAST-LIVO2/Log/PCD/scans_pos.json

COLMAP 图像与位姿

只有当 avia.yaml 中设置:

pcd_save:
  pcd_save_en: true
  colmap_output_en: true

才会导出 COLMAP 相关文件。输出位置为:

FAST-LIVO2/Log/Colmap/images/00001.png
FAST-LIVO2/Log/Colmap/images/00002.png
FAST-LIVO2/Log/Colmap/sparse/0/cameras.txt
FAST-LIVO2/Log/Colmap/sparse/0/images.txt
FAST-LIVO2/Log/Colmap/sparse/0/points3D.txt

注意:启用 colmap_output_en 时,程序会调用 scripts/colmap_output.sh 清理并重建 Log/Colmap/imagesLog/Colmap/sparse/0,因此旧的 COLMAP 输出会被删除。

轨迹与调试文件

evo/pose_output_en: true,轨迹保存到:

FAST-LIVO2/Log/result/<seq_name>.txt

程序还会在 Log 目录下写入调试文件:

FAST-LIVO2/Log/mat_pre.txt
FAST-LIVO2/Log/mat_out.txt

暂无评论

发送评论 编辑评论


				
上一篇
下一篇