基于WSL2的FAST-LIVO2部署全流程(仅限软件及数据集部分)

WSL2安装

必须运行 Win 11 22H2 以上版本的Windows系统,才能参考该流程。

  1. 需按住win+x,打开高级启动菜单,选择其中的“终端管理员”,启动终端

  2. 输入命令,安装wsl

    wsl --install
  3. 将新安装的Linux发行版默认版本设置为WSL2,使用以下命令

    wsl.exe --set-default-version 2
  4. 在win开始页面搜索Microsoft store。在商店页面搜索Ubuntu20.04,安装Ubuntu 20.04.6 LTS(长期支持版)

  5. 重启电脑,在开始菜单中搜索WSL2 Settings,在网络——网络模式中修改为mirrored

具体的WSL的常用指令可参考“https://learn.microsoft.com/zh-cn/windows/wsl/install

错误处理

  • 重启后,运行Ubuntu子系统,如在弹出的PowerShell中,出现以下提示,一般为电脑CPU没有开启虚拟化功能导致的,可在任务管理器——性能——CPU中检查是否开启了虚拟化,如无需自行参考各主板(笔记本)的BIOS中的虚拟化开启方法(如果你能玩三角洲,虚拟化一定是开启的)
    Installing, this may take a few minutes...
    WslRegisterDistribution failed with error: 0x80370114
    Error: 0x80370114 ??????????????????
    Press any key to continue...

  1. win+r快捷键打开运行窗口,输入“optionalfeatures”,运行
  2. 如下图所示,选中“Hyper-V、Windows虚拟机监控程序平台、适用于Linux的Windows子系统、虚拟机平台”,如功能菜单中不存在Hyper-V,可忽略确定,等待安装完成后重启电脑。

    如果发现按照上述步骤操作后还有该问题,可在optionalfeatures中将上述四个(三个)功能关闭——重启——再打开——再重启,一般就会好

Ubuntu系统设置及FAST-LIVO2部署

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

  1. 在第一次启动Ubuntu后,会提示需要创建一个默认的UNIX账户,输入livo2
  2. 在输入密码时,屏幕上不会给出任何提示,具体来讲,就是不会显示常见的“***”这种密码表现形式,盲打即可

接下来的步骤使用并参考了B站UP主萝卜头vision的流程及部署脚本(下称脚本),具体的部署脚本未见可二次分发的协议,因此,请需要参考此教程下部分的,请联系B站UP主萝卜头vision获取运行脚本(Free)
下文参考视频如下https://www.bilibili.com/video/BV1B729BYEhM/

  1. 将/home/livo2提权至任何人可读写,中间有一部分,需要你输入刚才设定的密码,直接将我打好的命令复制过去即可,自己输入也可
    sudo chmod -R 777 /home/livo2/
  2. 将脚本文件复制到该文件夹,该文件夹在win资源管理器中左侧栏最下方Linux/ubuntu-20.04/home/livo2,并在命令行中进入该文件夹

    cd /home/livo2
  3. 再运行一遍,将/home/livo2目录下的所有文件递归提权。运行两遍初始化脚本,将命令行前缀简洁化、以后使用sudo(提权)不需要输入密码。
    sudo chmod -R 777 /home/livo2/
    sudo ./system_init_config.sh
    exit
  4. 安装编译工具链
    sudo ./install_cmake_toolchain.sh
  5. 根据界面提示,输入glxgears,检查是否有正在转动的齿轮,若无需要更换ubuntu版本,检查后关闭齿轮页面
    glxgears
  6. 运行脚本配置python-pip
    ./set-pip-mirror.sh
  7. 安装vscode,在使用“code .”命令时,中间可能会有一些提示窗,点击allow,在进入vscode后,trust(信任)父目录的作者,并点击左侧的允许
    ./install_vscode.sh #安装vscode
    code . #该命令作用为运行vscode,以后需要运行vscode都需要使用该命令
  8. 对于拥有NVIDIA独立显卡的,该步骤为安装CUDA,否则跳过,本教程无此步骤,因此不设命令行提示
  9. 构建sophus、ceres
    ./build_sophus.sh
    ./build_ceres.sh
  10. 安装ros1,该步很容易会有在该章节常见错误中论述的网络环境原因导致脚本运行出错的情况,如出现请多尝试几次,根据命令行的提示来观察是否出现错误,包括但不限于ERROR,time out,Connection failed,Too many requests等字符。

    ./install_ros1.sh #如果在中间发现有Connection failed,Too many requests等字符时,应重新运行该脚本一次
    #如果发生了上述的错误,最常见的解决方式有如下两条命令,我的建议是在明确是那步出错出现断点后进行尝试
    sudo rosdep init || true
    rosdep update
    • 在命令行提示如下所示的字符时,即代表安装完成,但要仔细核查中间是否有脚本出错
      Add distro "rolling"
      updated cache in /home/ftlian/.ros/rosdep/sources.cache”
    • 测试ros1安装是否完善,如下图所示,打开一个新的命令行窗口,并输入
      gazebo

    • 如gazebo打开一个新窗口可以运行,关闭其窗口,如上步所示,再打开一个新的命令行窗口,并运行以下命令
      roscore
    #如提示以下命令,即为正常运行
    ... logging to /home/ftlian/.ros/log/9fcbd648-e92b-11f0-8892-e76d4afb4d1d/roslaunch-FTLian-laptop-185487.log
    Checking log directory for disk usage. This may take a while.
    Press Ctrl-C to interrupt
    Done checking log file disk usage. Usage is <1GB.
    started roslaunch server http://localhost:43107/
    ros_comm version 1.17.4
    SUMMARY
    ========
    PARAMETERS
    * /rosdistro: noetic
    * /rosversion: 1.17.4
    NODES
    auto-starting new master
    process[master]: started with pid [185510]
    ROS_MASTER_URI=http://localhost:11311/
    setting /run_id to 9fcbd648-e92b-11f0-8892-e76d4afb4d1d
    process[rosout-1]: started with pid [185535]
    started core service [/rosout]
    • 返回第二个(运行gazebo命令那个窗口)运行以下命令,如正常启动程序,关闭,至此,rose测试完毕
      rosrun rviz rviz
  11. 关闭第二,第三个命令行窗口,在第一个命令行窗口构建fast_livo2,运行以下命令,至此,fast_livo2的wsl2部署流程完毕
    ./build_fast_livo2.sh

    常见错误

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

物理硬件连接

已证实,在如下硬件配置下,不能正常物理连接到硬件,故下部分没有参考意义,仅作留档

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

  1. 将2USB-A、1xRJ45(网线接口)连接到电脑后,在控制面板-网络和共享中心-更改适配器设置-找到类似以太网等有线连接的物理网口,右键属性,找到Internet协议版本4,双击打开,将有线网卡的地址配置为手动模式,IP为192.168.1.50,网址掩码255.255.255.0,如下图所示

  2. 打开windows命令提示行(win+x 终端管理员),输入如下指令,安装usbipd-win

    winget install usbipd-win
  3. 输入usbipd list,找到摄像头"USB3 Vision Device"对应的BUSID,输入usbipd bind --busid 《所对应的BUSID》 --force,将usb设备分享

    usbipd list
    usbipd bind --busid 8-2 --force #8-2是一个示例,要具体看硬件连接的BUSID是多少,不要照抄

  4. 将usb设备挂载到WSL里,其中的BUSID和上述步骤的是继承的,因此,在我这里的示意代码为,需要注意的是,每次USB设备有变动、重启windows、重启WSL,都需要重进行此步进行挂载

    usbipd attach --wsl --busid 8-2 
  5. 在Ubuntu系统的命令提示行中输入lsusb,如下图所示则USB设备挂载成功,ping 192.168.1.1xx(其中xx为大疆Livox Avia雷达设备SN码最后两位,SN码用手机扫描雷达设备后方右下角的小二维码即可获得到,该流程中的雷达设备ip为192.168.1.174,确定雷达通讯后,可输入Ctrl+C强制中断ping流程,至此雷达及相机以连接至WSL2中的Ubuntu系统

    lsusb #检查usb设备挂载
    ping 192.168.1.174 #检查雷达通讯

暂无评论

发送评论 编辑评论


				
上一篇