FastLIO2调试记录

复现状态估计与建图

数据集:数据集连接

明确一个能够在DOCKER 中启动RVIZ的宝藏博客以及我的启动sh文件设置

这个sh 文件既实现了能够ssh root@localhost -p8080远程访问docker container同时能够通过rviz2远程调用RVIZ2需要的朋友可以放心使用 本人已经经过测试
xhost local:root;
docker run -it --privileged=true \
        -p 8080:22 \
        --network=bridge \
  --env="DISPLAY" \
  --name=fastlio_ws \
  --env="QT_X11_NO_MITSHM=1" \
  --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \
  --volume="/dev:/dev" \
  -v /home/zhaobojun/DataSet:/home \
  fastlio2:latest \
  /bin/bash
xhost local:root;


参考博客

图形界面:
xhost +local:root;
--env="DISPLAY"
--env="QT_X11_NO_MITSHM=1"
--volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \
--volume="/dev:/dev" \

--net=host 指定容器的网络模式
--gpus:显卡
-v 磁盘挂载 真实环境地址:容器内地址
-p 主机端口:容器端口
 基于镜像lala:1.0生成容器

基于所建地图实现基于地图的定位

调试问题记录

编译器:clion
编译模式:debug

问题

  1. 问题:error while loading shared libraries: librosidl_typesupport_cpp.so: cannot open shared object file: No such file or directory
    解决:设置cmake的environment 的环境变量如下图一所示,拷贝到远程主机运行的clion的lio_node节点的edit configuration的environment 中(图二):
    请添加图片描述
    请添加图片描述
    至此问题1解决。
  2. **问题:**将ros1与ROS2bag相互转换
    答案:参考
pip install rosbags
rosbags-convert your_ros1_bag.bag #ros1->ros2
rosbags-convert your_ros2_bag_folder #ros2->ros1 ros2的bag形式对应的是meta.yaml以及db3形式的文件夹(此处是dir )
  1. **问题3:**为什么IMU的加速度向量对应的value 都乘以10?
    请添加图片描述
    windows 10 远程连接黑屏解决方案_对我没用
    在使用 Windows 远程桌面时,如何关闭 UDP 链接_对我没用

遇到UBUNTU循环重启界面的解决

  1. 通过选择ubuntu 高级选项——>进入recovery模式——>选择root进入命令行
cd /home/zhaobojun
ls -a #看到有.Xauthority的字样的文件
sudo rm -r .Xauthori* #删除
sudo apt-get update 
sudo apt-get upgrade
#确定不了问题出在哪里(可能是将gdm3改成了lightdm)
sudo apt install gdm3
sudo dpkg-reconfigure gdm3
sudo aot-get install ubunutu-desktop
reboot#进入原始的界面 成功登陆

python运行launch.py文件出现的问题

  1. ModuleNotFoundError: No module named ‘yaml’
pip install pyyaml
  1. ModuleNotFoundError: No module named ‘lark’
pip install lark
  1. ImportError: librcl_action.so: cannot open shared object file: No such file or directory参考博客
sudo ln -s /opt/ros/humble/lib/lib* /usr/lib

为librcl_action.so 与本地的python的lib库文件构成软链接

  1. ModuleNotFoundError: No module named ‘packaging’
pip install packaging

问题:GitClone报错:GnuTLS recv error (-110): The TLS connection was non-properly terminated.解决方法
解决博客

在clion中搭建fastlio2环境

首先需要在当前工作文件目录中,通过ssh构建remote development 部署,然后将环境植入到src同行的目录工程下,然后进入idea,点击设置|构建,执行,部署|cmake,创建debug调试,然后在环境environment中插入当前build需要构建的环境:
请添加图片描述AMENT_PREFIX_PATH=/FastLIO2_ws/install/pgo:/FastLIO2_ws/install/localizer:/FastLIO2_ws/install/hba:/FastLIO2_ws/install/interface:/FastLIO2_ws/install/fastlio2:/opt/ros/humble;CMAKE_PREFIX_PATH=/FastLIO2_ws/install/pgo:/FastLIO2_ws/install/localizer:/FastLIO2_ws/install/hba:/FastLIO2_ws/install/interface:/FastLIO2_ws/install/fastlio2;COLCON_PREFIX_PATH=/FastLIO2_ws/install;PKG_CONFIG_PATH=;PYTHONPATH=/FastLIO2_ws/install/interface/local/lib/python3.10/dist-packages:/opt/ros/humble/lib/python3.10/site-packages:/opt/ros/humble/local/lib/python3.10/dist-packages;LD_LIBRARY_PATH=/FastLIO2_ws/install/interface/lib:/opt/ros/humble/opt/rviz_ogre_vendor/lib:/opt/ros/humble/lib/x86_64-linux-gnu:/opt/ros/humble/lib;PATH=/opt/ros/humble/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin;ROS_DISTRO=humble;ROS_PYTHON_VERSION=3
至此 ,能够成功build文件工程:显示如下:

构建python interpreter环境

选择:设置|构建,执行,部署|python解释器|选择python3.10,然后进入全部显示|添加两个python路径

/opt/ros/humble/lib/python3.10/sit-packages
/opt/ros/humble/local/lib/python3.10/dist-package

至此成功构建,运行lio_launch.py,然后出现问题====>转到python运行launch.py文件出现的问题模块参考具体问题。
请添加图片描述

改写程序的语法问题

  1. \ 表示 #define语句拆成多行
#define PCL_ADD_POINT4D \
  PCL_ADD_UNION_POINT4D \
  PCL_ADD_EIGEN_MAPS_POINT4D
# 那就等于把:PCL_ADD_POINT4D  替换为:PCL_ADD_UNION_POINT4D  PCL_ADD_EIGEN_MAPS_POINT4D
 其中PCL_ADD_UNION_NORMAL4D的定义如下:
#define PCL_ADD_UNION_NORMAL4D \
  union EIGEN_ALIGN16 { \
    float data_n[4]; \
    float normal[3]; \
    struct { \
      float normal_x; \
      float normal_y; \
      float normal_z; \
    }; \
  };
  而  PCL_ADD_EIGEN_MAPS_POINT4D 的宏定义为一帮内敛函数
  inline pcl::Vector3fMap getVector3fMap () { return (pcl::Vector3fMap (data)); } \
  inline pcl::Vector3fMapConst getVector3fMap () const { return (pcl::Vector3fMapConst (data)); } \
  inline pcl::Vector4fMap getVector4fMap () { return (pcl::Vector4fMap (data)); } \
  inline pcl::Vector4fMapConst getVector4fMap () const { return (pcl::Vector4fMapConst (data)); } \
  inline pcl::Array3fMap getArray3fMap () { return (pcl::Array3fMap (data)); } \
  inline pcl::Array3fMapConst getArray3fMap () const { return (pcl::Array3fMapConst (data)); } \
  inline pcl::Array4fMap getArray4fMap () { return (pcl::Array4fMap (data)); } \
  inline pcl::Array4fMapConst getArray4fMap () const { return (pcl::Array4fMapConst (data)); }

PCL_ADD_POINT4D被扩展为后续两个宏定义PCL_ADD_UNION_POINT4D 与 PCL_ADD_EIGEN_MAPS_POINT4D 将一个宏扩展为两个宏定义,PCL_ADD_UNION_POINT4D 和 PCL_ADD_EIGEN_MAPS_POINT4D 也是宏,那么预处理器将继续递归地替换这些宏,直到所有的宏都被替换为实际的代码为止。大致的意思是:你在PCL中定义一个新的点类型,并希望它具备这些函数的特性时,就可以使用这个宏定义。实际上(明确点的类型,同时 了解这些点具备的函数的特性)

CMAKELIST中添加宏定义的作用与用法

参考博客,一目了然

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值