LIO-SAM算法仿真实现教程(基于ubuntu22.04和ROS2-humble系统+GTSAM4.1.1)

目录

资料包

lio_sam_gazebo_ros2压缩包

RTSAM

LIO-SAM 算法项目参考

1. 背景

  • 传统的激光雷达是通过ICP(Iterative Closest Point)算法去找到两个连续lidar帧(点云)之间的相对变换来实现的。
  • ICP是一种迭代优化算法,输入为两组点云数据(源点云和目标点云),输出为两组点云之间的刚体变换(旋转矩阵 ® 和平移向量 (T))
  • ICP能用来估计相邻雷达帧之间的相对运动,通过点云配准计算出两帧之间的旋转和平移,能有效解决帧间点云的对齐问题,但当帧与帧之间的变换角度过大时,ICP可能难以收敛。
  • 并且由于激光雷达在采集点云时会旋转,点云会发生倾斜,当使用倾斜的点云特征进行配准时,会导致较大的漂移。
  • 因此,激光雷达通常与其它传感器(如IMU、GPS)结合,用于状态估计和地图构建,即传感器融合。其融合方式又分为两种:松耦合融合和紧耦合融合。
    • 松耦合融合:各传感器独立运行,通过其整体的输出(如IMU的位姿估计、GPS的全局位置)进行融合,即先融合各个传感器的最终结果,再用简单加权或滤波方式进行综合计算。
    • 紧耦合融合:各传感器的底层原始数据(如IMU加速度、GPS伪距、激光点云)直接参与联合优化,实时生成整体状态,其融合精度和鲁棒性更高。
LIO-SAM算法内部机理图

2. LIO-SAM算法工作机理

2.1 点云去畸变处理

  • 激光雷达数据的一个重大问题是点云中的时间差引起的畸变,LIO-SAM通过IMU数据来修正扫描点的时间偏移(通常称为点云去畸变)。具体步骤如下:
    • 提供点时间戳:
      使用IMU数据进行点云矫正,需要提供相对扫描点的时间。
    • 提供点环号:
      环号用于将点分配到激光雷达的通道中,组织成矩阵结构。

2.2 因子图优化

  • 因子图主要是用于对多传感器融合后的状态估计问题进行建模,LIO-SAM算法的因子图构建主要使用1种变量类型和4种因子类型。

变量类型:表示机器人在特定时间的状态,并分配给图的节点。

因子:

  • IMU预积分因子:用于使用来自IMU的测量值来推断机器人的运动,主要解决IMU噪声和偏置问题。
  • Lidar里程计因子:用于特征提取、关键帧选择和相对变换。
  • GPS因子:系统在长时间导航任务中会收到漂移的影响,因此需要使用提供绝对测量值的传感器(如GPS)来消除漂移。
  • 回环闭合因子:采用基于欧几里得距离的环路闭合检测方法

3. 仿真操作

3.1 环境准备与配置

  • 所需功能包: 下载资料包链接1并解压特定的 LIO-SAM ROS2 压缩包到ubuntu系统中,src路径中包含算法包、机器人控制包、Gazebo 仿真包和 Velodyne 模拟器包。
  • 配置文件修改:
    • params.yaml:确保点云 (Point Cloud) 和 IMU 的话题名称 (Topic Name) 与仿真模型 SDF 文件中定义的一致。修改 LiDAR 和 Base Link 的坐标系名称。设置 savePCD 为 true 以便仿真结束后保存地图。
    • SDF 文件:确认 Velodyne 传感器的定义,确保话题名称与 params.yaml 中一致。

3.2 安装依赖

3.2.1 手动下载源码包

1. 打开浏览器: 在虚拟机(Ubuntu)里打开 Firefox 浏览器。
2. 访问下载链接: 输入以下地址(这是 GTSAM 4.1.1 的官方下载页面):
https://github.com/borglab/gtsam/archive/refs/tags/4.1.1.zip
3. 下载: 浏览器会弹窗询问,选择“保存文件 (Save File)”。
4. 解压:

  • 下载完成后,打开文件管理器,进入 Downloads (下载) 文件夹。
  • 找到 gtsam-4.1.1.zip。
  • 右键点击它 -> 选择 Extract Here (解压到此处)。
  • 你会得到一个名为 gtsam-4.1.1 的文件夹。

3.2.2 准备编译环境

现在我们需要把这个解压出来的文件夹搬到主目录,并准备编译。请在终端中执行:

一. 增加虚拟内存 (Swap) - 防止编译崩溃

#创建4GB Swap文件sudo fallocate -l 4G /swapfile sudochmod600 /swapfile sudomkswap /swapfile sudoswapon /swapfile #验证 (Total 应该显示约 3.8Gi)free -h 
  • 最好再将虚拟机虚拟内存改为8G!(电脑本身运行内存为32G的还可以调大些)

二. 移动并重命名文件夹(方便后续操作):

1. 移动重命名文件夹(方便后续操作):

cd ~/Downloads mv gtsam-4.1.1 ~/gtsam 

(这条命令会把刚才解压的文件夹移动到您的主目录,并改名为 gtsam)

2. 进入文件夹并创建编译目录:

cd ~/gtsam mkdir build &&cd build 

3. 配置编译参数: (4.1.1 版本对新系统兼容较好,不需要复杂的 TBB 参数,但建议加上系统 Eigen 库支持)

cmake -DGTSAM_USE_SYSTEM_EIGEN=ON ..

(如果没有报错,最后会显示 Build files have been written to...

4. 开始编译(这一步可能需要 10 分钟以上,请耐心等待进度走到 100%):

make -j$(nproc)

5. 安装到系统:

sudomakeinstall

6. 验证是否成功:
执行完 sudo make install 后,输入以下命令检查:

ls /usr/local/include/gtsam 

只要屏幕上显示出 base, geometry, inference 等文件夹的名字,就说明安装成功了!

三. 安装通用依赖

1. 安装 curl 工具:

sudoapt update &&sudoaptinstallcurl gnupg lsb-release -y 

2. 添加 ROS 2 授权密钥:

sudocurl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg 

3. 将 ROS 2 仓库添加到您的系统源列表:

echo"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release &&echo $UBUNTU_CODENAME) main"|sudotee /etc/apt/sources.list.d/ros2.list > /dev/null 

4. 刷新软件列表 (关键):

sudoapt update 

观察输出: 在刷新的过程中,请留意屏幕滚动的文字,看到类似 Get:5http://packages.ros.org/ros2/ubuntu jammy InRelease 的字样就说明 ROS 2 仓库连接成功了。

5. 安装其他必要的 ROS2 依赖: 为了防止编译时缺这缺那,我们先把通用的导航包装上:

sudoaptinstall ros-humble-navigation2 ros-humble-nav2-bringup ros-humble-pcl-co 

6. 安装编译所需的通用依赖:

sudoaptinstall ros-humble-navigation2 ros-humble-nav2-bringup ros-humble-pcl-conversions ros-humble-xacro ros-humble-robot-localization ros-humble-tf-transformations -y 
  • 安装缺失的 Gazebo-ROS 接口包
sudoapt update sudoaptinstall ros-humble-gazebo-ros-pkgs ros-humble-gazebo-ros 
  • 安装基础 Gazebo-ROS 插件库
sudoapt update sudoaptinstall ros-humble-gazebo-plugins ros-humble-gazebo-ros2-control 
  • 刷新环境(非常重要)
source /opt/ros/humble/setup.bash cd ~/lio_sam_gazebo_ros2 source install/setup.bash 

安装完新包后,必须让当前的终端“知道”新包的存在。

  • 打开package.xml文件
gedit ~/lio_sam_gazebo_ros2/src/velodyne_simulator/velodyne_description/package.xml 
  • 替换
<?xml version="1.0"?><?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?><packageformat="3"><name>velodyne_description</name><version>2.0.3</version><description>URDF description for Velodyne 3D LIDARs</description><maintaineremail="[email protected]">maintainer</maintainer><license>BSD</license><buildtool_depend>ament_cmake</buildtool_depend><exec_depend>urdf</exec_depend><exec_depend>xacro</exec_depend><export><build_type>ament_cmake</build_type></export></package>

打开文件后,请删除里面的所有内容,然后将上面这段标准的 ROS 2 配置代码复制粘贴进去,保存并关闭。

  • 确保已安装该软件包
sudoapt update sudoaptinstall ros-humble-pcl-conversions 

五. 编译与安装 (针对 4.1.1 版本)

1. 修改代码以适配 GTSAM 4.1.1 (关键):

  • 找到并打开 CMakeLists.txt:
# 假设文件夹名叫 LIO-SAM,如果叫别的名字请自行替换,如果打开为空白可手动点击文件夹打开 gedit ~/lio_sam_gazebo_ros2/src/LIO-SAM/CMakeLists.txt 
  • 修改C++标准:在 project(...) 这一行下面手动添加
set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON)

解释:这两行命令强制告诉编译器:“不管你默认是什么,我必须用 C++17 标准来编译,否则就报错”

  • 添加find_package: 找到文件前面的一堆 find_package,在其中找个空行,插入下面这行:
find_package(pcl_conversions REQUIRED)
  • 添加头文件路径:find_package 后面找到 include_directories, 把它修改为包含 pcl_conversions 的路径。 如果找不到,可以直接在 include_directories(include) 的下一行添加:
include_directories( include ${pcl_conversions_INCLUDE_DIRS})
  • 添加依赖: 搜索 ament_target_dependencies,然后在括号里的最后加上 pcl_conversions,例如:
ament_target_dependencies(lio_sam_imageProjection ${dependencies} pcl_conversions # <--- 手动加上这一行)

(注意:文件里会有 4-5 个 ament_target_dependencies,建议每一个都检查一下)

  • 保存并关闭。

2. 修改配置文件 (Params.yaml):

  • 打开配置文件
gedit ~/lio_sam_gazebo_ros2/src/LIO-SAM/config/params.yaml 
  • 修改保存路径:找到 savePCDDirectory,将其修改为您当前用户下的路径:
savePCD: true savePCDDirectory: "/Downloads/LOAM/"

(提示:如果您还没创建这个文件夹,记得去终端运行 mkdir -p ~/Downloads/LOAM)

  • 添加依赖:在 <depend>... 的区域,找个空行添加:
<depend>pcl_conversions</depend>
  • 保存并关闭。

3. 开始编译:

  • 回到工作空间根目录:
cd ~/lio-sam-gazebo-ros2 
  • 清理旧的编译缓存 (为了防止之前的错误干扰,建议先清理一下):
rm -rf build install log rm -rf build/lio_sam install/lio_sam 
  • 编译
colcon build --symlink-install # 如果仍不行,尝试单线程编译,可能需要更久时间(10-20分钟) colcon build --symlink-install --parallel-workers 1

3.3 运行仿真

3.3.1 启动 Gazebo 仿真环境 (终端1)

  1. 模型准备
  • 创建模型目录
mkdir -p ~/.gazebo/models 
  • lio_sam_gazebo_ros2/models下的三个文件夹(brick_boxconstruction_barrelrtab_map_stage)移入到.gazebo/models文件夹中
  • 若在home中没有看见.gazebo文件夹,可能是被隐藏了,按下Ctrl + H即可
  • 覆盖雷达配置文件
# 1. 切换到目标目录cd ~/lio_sam_gazebo_ros2/src/velodyne_simulator/velodyne_description/urdf # 2. 删除旧文件(防止权限或损坏问题)rm -f VLP-16.urdf.xacro # 3. 创建新文件并打开编辑器 gedit VLP-16.urdf.xacro 
  • 粘贴标准修复代码
    将以下代码完整复制,粘贴到刚才打开的 gedit 编辑器中,然后保存并关闭。
<?xml version="1.0"?><robotxmlns:xacro="http://www.ros.org/wiki/xacro"name="VLP-16"><xacro:propertyname="M_PI"value="3.1415926535897931"/><xacro:macroname="VLP-16"params="*origin parent:=base_link name:=velodyne topic:=/velodyne_points hz:=10 lasers:=16 samples:=1875 collision_range:=0.3 min_range:=0.9 max_range:=130.0 noise:=0.008 min_angle:=-${M_PI} max_angle:=${M_PI} gpu:=false"><jointname="${name}_base_mount_joint"type="fixed"><xacro:insert_blockname="origin"/><parentlink="${parent}"/><childlink="${name}_base_link"/></joint><linkname="${name}_base_link"><inertial><massvalue="0.83"/><originxyz="0 0 0.03585"/><inertiaixx="${(0.83 * (3.0*0.0516*0.0516 + 0.0717*0.0717)) / 12.0}"ixy="0"ixz="0"iyy="${(0.83 * (3.0*0.0516*0.0516 + 0.0717*0.0717)) / 12.0}"iyz="0"izz="${0.5 * 0.83 * (0.0516*0.0516)}"/></inertial><visual><geometry><meshfilename="package://velodyne_description/meshes/VLP16_base_1.dae"/></geometry></visual><visual><geometry><meshfilename="package://velodyne_description/meshes/VLP16_base_2.dae"/></geometry></visual><collision><originrpy="0 0 0"xyz="0 0 0.03585"/><geometry><cylinderradius="0.0516"length="0.0717"/></geometry></collision></link><jointname="${name}_base_scan_joint"type="fixed"><originxyz="0 0 0.0377"rpy="0 0 0"/><parentlink="${name}_base_link"/><childlink="${name}"/></joint><linkname="${name}"><inertial><massvalue="0.01"/><originxyz="0 0 0"/><inertiaixx="1e-7"ixy="0"ixz="0"iyy="1e-7"iyz="0"izz="1e-7"/></inertial><visual><originxyz="0 0 -0.0377"/><geometry><meshfilename="package://velodyne_description/meshes/VLP16_scan.dae"/></geometry></visual></link><!-- Gazebo requires the velodyne_gazebo_plugins package --><gazeboreference="${name}"><!-- 关键修改:将 gpu_ray 改为 ray,强制使用 CPU 计算 --><sensortype="ray"name="${name}-VLP16"><pose>0 0 0 0 0 0</pose><visualize>false</visualize><update_rate>${hz}</update_rate><ray><scan><horizontal><samples>${samples}</samples><resolution>1</resolution><min_angle>${min_angle}</min_angle><max_angle>${max_angle}</max_angle></horizontal><vertical><samples>${lasers}</samples><resolution>1</resolution><min_angle>-${15.0*M_PI/180.0}</min_angle><max_angle> ${15.0*M_PI/180.0}</max_angle></vertical></scan><range><min>${collision_range}</min><max>${max_range}</max><resolution>0.001</resolution></range><noise><type>gaussian</type><mean>0.0</mean><stddev>${noise}</stddev></noise></ray><!-- 关键修改:插件名称去掉 gpu_ --><pluginname="gazebo_ros_laser_controller"filename="libgazebo_ros_velodyne_laser.so"><topicName>${topic}</topicName><frameName>${name}</frameName><min_range>${min_range}</min_range><max_range>${max_range}</max_range><gaussianNoise>${noise}</gaussianNoise></plugin></sensor></gazebo></xacro:macro></robot>
  • 编译并重启
# 确保插件库存在 (保险措施)sudoapt update sudoaptinstall ros-humble-velodyne-simulator # 清理旧的编译文件(非常重要)cd ~/lio_sam_gazebo_ros2 rm -rf build/velodyne_description install/velodyne_description # 重新编译 colcon build --symlink-install --packages-select velodyne_description # 启动仿真source install/setup.bash # 加上环境变量exportGAZEBO_MODEL_DATABASE_URI=""exportSVGA_VGPU10=0exportLIBGL_ALWAYS_SOFTWARE=1 ros2 launch robot_gazebo robot_sim.launch.py 
  • 最终检查:打开新终端
ros2 topic list 
  1. 进入工作空间并刷新环境:
cd ~/lio_sam_gazebo_ros2 source install/setup.bash 
  1. 启动仿真:
# 这一步通过修改环境变量,禁止 Gazebo 去连接模型库exportGAZEBO_MODEL_DATABASE_URI=""# 这是 VMware 的专用修复补丁exportSVGA_VGPU10=0exportLIBGL_ALWAYS_SOFTWARE=1# 启动仿真 ros2 launch robot_gazebo robot_sim.launch.py 

如果报错找不到包:请输入 ros2 launch 然后按两下 Tab 键,看看有哪些包是以 robot_ 或 neo_ 开头的,替换上面的命令。

  1. 列出话题:打开终端1没有gazebo窗口弹出的话,打开终端4,输入以下命令
ros2 topic list 

(确认有没有 /velodyne_points 或类似名字)

  • 强制重新编译雷达插件:
  1. 清理旧文件:
cd ~/lio_sam_gazebo_ros2 rm -rf build/velodyne* install/velodyne* 
  1. 重新编译: (这次我们只编译雷达相关包,速度会很快)
colcon build --symlink-install --packages-select velodyne_description velodyne_gazebo_plugins velodyne_simulator 

检查点:观察编译输出。如果在编译 velodyne_gazebo_plugins 时没有报错,且显示 Finished,说明插件生成成功了。

  1. 再次刷新环境:
source install/setup.bash 
  1. 再次启动仿真 (终端 1):
# 这一步通过修改环境变量,禁止 Gazebo 去连接模型库exportGAZEBO_MODEL_DATABASE_URI=""# 这是 VMware 的专用修复补丁exportSVGA_VGPU10=0exportLIBGL_ALWAYS_SOFTWARE=1# 启动仿真 ros2 launch robot_gazebo robot_sim.launch.py 
  1. 再次检查话题 (终端 4):
ros2 topic list 

重要:检查有没有类似/velodyne_points的输出,或者出现/gazebo_ros_laser_controller/out……

  1. 确定雷达点云名称
ros2 topic info /gazebo_ros_laser_controller/out 

在终端4中输入以上命令,观察结果中Type这一行:
如果显示 Type: sensor_msgs/msg/PointCloud2

  • 操作:直接去修改 LIO-SAM 的 params.yaml,把 pointCloudTopic 改成 /gazebo_ros_laser_controller/out,然后直接运行!

否则如果显示 Type: sensor_msgs/msg/LaserScan 或者其他
可在评论区询问(看见就会解答)。

7.重新编译与验证

  • 编译
cd ~/lio_sam_gazebo_ros2 colcon build --packages-select robot_gazebo --symlink-install 
  • 启动仿真
# 环境变量三件套exportGAZEBO_MODEL_DATABASE_URI=""exportSVGA_VGPU10=0exportLIBGL_ALWAYS_SOFTWARE=1# 刷新环境source install/setup.bash # 启动 ros2 launch robot_gazebo robot_sim.launch.py 

等待 Gazebo 窗口弹出,看到小车和环境。

gazebo

3.3.2 启动 LIO-SAM 建图算法 (终端 2)

  1. 进入工作空间并刷新环境:
cd ~/lio_sam_gazebo_ros2 source install/setup.bash 
  1. 启动算法:
ros2 launch lio_sam run.launch.py 

成功标志:Rviz (可视化界面) 会自动弹出来(如下图)。

在这里插入图片描述

3.3.3 控制机器人移动 (终端 3)

  1. 运行键盘控制节点 (这是一个通用的 ROS 工具):
ros2 run teleop_twist_keyboard teleop_twist_keyboard 

(如果没有安装,运行 sudo apt install ros-humble-teleop-twist-keyboard 安装)

  1. 操作方法:
    确保鼠标点击在这个终端窗口上(终端3)。
    按 i 前进,, 后退。
    按 j 左转,l 右转。
    按 k 停止。

注意: 速度不要太快(1左右就差不多了),否则雷达匹配可能会跟丢。
终端没有输出显示是正常的,长按上述按键即可。

可以看见随机器人(小车)移动,Rviz窗口点云图越来越完善。

在这里插入图片描述

3.3.4 点云图保存

  • 保存地图:
    • 回到 终端 2 (LIO-SAM)。
    • 按下 Ctrl + C。
    • 地图会自动保存到 /home/hhh/Downloads/LOAM/ (之前设置的路径)。
  • 使用 CloudCompare 查看 :
    • 在终端输入 cloudcompare 打开软件。
    • VMware 显卡警告:如果弹出 “Color ramp shader…” 警告,直接点击 OK 或忽略,这不影响使用。
    • 点击 Apply,即可看到 3D 点云地图。

左键旋转,右键平移,滚轮缩放

在这里插入图片描述

4. 利用已有数据集进行仿真(无需启动Gazebo)

4.1 安装转换

  1. 安装转换工具 (我们需要一个 Python 小工具):
pip install rosbags 

(如果没有安装 pip,请先运行 sudo apt install python3-pip)

  1. 执行转换:(假设您的文件名叫 campus_small_dataset.bag,请替换为您真实的文件名)
# 语法:--src <源文件名> --dst <输出文件夹名> python3 -m rosbags.convert --src campus_small_dateset.bag --dst campus_small_dataset_ros2 

注意:需要在文件所在目录下运行

  1. 等待完成:转换完成后,当前目录下会多出一个新的文件夹,名字为上述输出文件夹名

4.2 文件修复

  1. 修复metadata.yaml 文件并查找话题名:
  • 打开 metadata.yaml 文件:
# 进入文件夹查看 (请确保路径正确) gedit ~/campus_small_dataset_ros2/metadata.yaml 

(如果 gedit 打开是空白或者报错,您也可以直接在文件管理器里找到这个文件夹,双击里面的 metadata.yaml 文件打开)

  • 修复 metadata.yaml 格式错误 (解决 bad conversion 报错)
#进入目录cd ~/campus_small_dataset_ros2 #使用 sed 命令将所有的 [] 替换为空字符串 ""sed -i 's/offered_qos_profiles: \[\]/offered_qos_profiles: ""/g' metadata.yaml 
  1. 寻找 topics_with_message_count 或者 topics 这一段。
  • 点云话题 (Lidar):
    • 寻找包含 points 或 velodyne 字样的名字。
    • 通常是:/velodyne_points 或 /points_raw。
  • IMU 话题:
    • 寻找包含 imu 字样的名字。
    • 通常是:/imu/data 或 /imu_raw。

示例(您的文件长得可能像这样):

...topics_with_message_count:-topic_metadata:name: /velodyne_points <--- 这就是点云话题名! type: sensor_msgs/msg/PointCloud2 ...-topic_metadata:name: /imu/data <--- 这就是IMU话题名! type: sensor_msgs/msg/Imu ...
  1. 修改 LIO-SAM 配置

拿到上面两个名字后,修改 LIO-SAM 的配置文件:

gedit ~/lio_sam_gazebo_ros2/src/LIO-SAM-ros2/config/params.yaml 
  • 把 pointCloudTopic 改成您在文件里看到的点云名字。
  • 把 imuTopic 改成您在文件里看到的 IMU 名字。
  • 保存并关闭。

4.3 运行仿真(运行LIO-SAM)

  1. 编译(确保配置生效):
cd ~/lio_sam_gazebo_ros2 colcon build --packages-select lio_sam --symlink-install 
  1. 运行(终端 1):
source install/setup.bash ros2 launch lio_sam run.launch.py 
  1. 终端2:
ros2 bag play campus_small_dataset_ros2 

运行结果如图:

数据集点云图

5. 方法一与方法二之间的转换

5.1 方法1:

5.1.1 获取点云及IMU话题名

  1. 启动仿真 (终端 1):
# 这一步通过修改环境变量,禁止 Gazebo 去连接模型库exportGAZEBO_MODEL_DATABASE_URI=""# 这是 VMware 的专用修复补丁exportSVGA_VGPU10=0exportLIBGL_ALWAYS_SOFTWARE=1# 启动仿真 ros2 launch robot_gazebo robot_sim.launch.py 
  1. 再次检查话题 (终端 4):
ros2 topic list 

重要:检查有没有类似/velodyne_points的输出,或者出现/gazebo_ros_laser_controller/out……

  1. 确定雷达点云名称
ros2 topic info /gazebo_ros_laser_controller/out 

通过上述操作我确定的雷达点云名称为/gazebo_ros_laser_controller/out,imu名称为/imu_plugin/out
params.yaml文件中修改如下:

 pointCloudTopic: "/gazebo_ros_laser_controller/out"# Point cloud data  imuTopic: "/imu_plugin/out"# IMU data 

5.1.2 编译运行

  1. 重新编译
# 编译cd ~/lio_sam_gazebo_ros2 colcon build --symlink-install 
  1. 启动仿真(终端1)
# 环境变量三件套exportGAZEBO_MODEL_DATABASE_URI=""exportSVGA_VGPU10=0exportLIBGL_ALWAYS_SOFTWARE=1# 刷新环境source install/setup.bash # 启动 ros2 launch robot_gazebo robot_sim.launch.py 
  1. 启动Rviz(终端2):
cd ~/lio_sam_gazebo_ros2 source install/setup.bash # 启动算法 ros2 launch lio_sam run.launch.py 
  1. 运行键盘控制节点 (终端3):
ros2 run teleop_twist_keyboard teleop_twist_keyboard 

5.2 方法2:

5.2.1 获取点云及IMU话题名

  1. 打开metadata.yaml文件查找话题名
gedit ~/campus_small_dataset_ros2/metadata.yaml 

我查找到的雷达点云名称为/points_raw,imu名称为/imu_correct
params.yaml文件中修改如下:

 pointCloudTopic: "/points_raw"# Point cloud data  imuTopic: "/imu_correct"# IMU data 

5.2.2 编译运行

  1. 重新编译 (因为改了 yaml)
cd ~/lio_sam_gazebo_ros2 colcon build --packages-select lio_sam --symlink-install 
  1. 启动 LIO-SAM(终端1)
source install/setup.bash ros2 launch lio_sam run.launch.py 
  1. 播放数据(终端 2:)
ros2 bag play campus_small_dataset_ros2 

Read more

最新电子电气架构(EEA)调研-3

而新一代的强实时性、高确定性,以及满足CAP定理的同步分布式协同技术(SDCT),可以实现替代TSN、DDS的应用,且此技术已经在无人车辆得到验证,同时其低成本学习曲线、无复杂二次开发工作,将开发人员的劳动强度、学习曲线极大降低,使开发人员更多的去完成算法、执行器功能完善。 五、各大车厂的EEA 我们调研策略是从公开信息中获得各大车厂的EEA信息,并在如下中进行展示。 我们集中了华为、特斯拉、大众、蔚来、小鹏、理想、东风(岚图)等有代表领先性的车辆电子电气架构厂商。        1、华为 图12 华为的CCA电子电气架构              (1)华为“计算+通信”CC架构的三个平台                         1)MDC智能驾驶平台;                         2)CDC智能座舱平台                         3)VDC整车控制平台。        联接指的是华为智能网联解决方案,解决车内、车外网络高速连接问题,云服务则是基于云计算提供的服务,如在线车主服务、娱乐和OTA等。 华

By Ne0inhk
Apache IoTDB 架构特性与 Prometheus+Grafana 监控体系部署实践

Apache IoTDB 架构特性与 Prometheus+Grafana 监控体系部署实践

Apache IoTDB 架构特性与 Prometheus+Grafana 监控体系部署实践 文章目录 * Apache IoTDB 架构特性与 Prometheus+Grafana 监控体系部署实践 * Apache IoTDB 核心特性与价值 * Apache IoTDB 监控面板完整部署方案 * 安装步骤 * 步骤一:IoTDB开启监控指标采集 * 步骤二:安装、配置Prometheus * 步骤三:安装grafana并配置数据源 * 步骤四:导入IoTDB Grafana看板 * TimechoDB(基于 Apache IoTDB)增强特性 * 总结与应用场景建议 Apache IoTDB 核心特性与价值 Apache IoTDB 专为物联网场景打造的高性能轻量级时序数据库,以 “设备 - 测点” 原生数据模型贴合物理设备与传感器关系,通过高压缩算法、百万级并发写入能力和毫秒级查询响应优化海量时序数据存储成本与处理效率,同时支持边缘轻量部署、

By Ne0inhk
SQL Server 2019安装教程(超详细图文)

SQL Server 2019安装教程(超详细图文)

SQL Server 介绍) SQL Server 是由 微软(Microsoft) 开发的一款 关系型数据库管理系统(RDBMS),支持结构化查询语言(SQL)进行数据存储、管理和分析。自1989年首次发布以来,SQL Server 已成为企业级数据管理的核心解决方案,广泛应用于金融、电商、ERP、CRM 等业务系统。它提供高可用性、安全性、事务处理(ACID)和商业智能(BI)支持,并支持 Windows 和 Linux 跨平台部署。 一、获取 SQL Server 2019 安装包 1. 官方下载方式 前往微软官网注册账号后,即可下载 SQL Server Developer 版本(

By Ne0inhk