当前位置: 首页 > news >正文

如何Ubuntu 22.04.5 LTS 64 位 操作系统部署运行SLAM3! 详细流程

以下是在本地部署运行 ORB-SLAM3 的详细步骤,基于官方 README.md 和最佳实践整理,适用于 Ubuntu 16.04/18.04/20.04/22.04 系统:

一、系统要求与依赖项安装

1. 基础系统要求
  • 操作系统:Ubuntu 16.04/18.04/20.04/22.04(64 位)
  • 硬件:推荐 i7 及以上处理器(确保实时性能),支持 OpenGL 的显卡(用于 Pangolin 可视化)
2. 安装依赖项
# 安装基础工具
sudo apt update && sudo apt upgrade -y
sudo apt install -y build-essential cmake git libgl1-mesa-glx# 安装Eigen3(线性代数库)
sudo apt install libeigen3-dev# 安装Python(用于轨迹评估,需numpy)
sudo apt install python3-numpy libpython3-dev# 安装OpenCV(3.2+,推荐4.x,22.04默认4.6.0+)
sudo apt install libopencv-dev python3-opencv# 安装Pangolin(可视化库)
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)
sudo make install
cd .. && rm -rf Pangolin  # 清理临时文件

 3. 可选:安装 ROS(如需运行 ROS 节点)

Ubuntu 18.04 (Melodic)

sudo apt install ros-melodic-desktop-full
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc

Ubuntu 22.04 (Humble)

sudo apt install ros-humble-desktop
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc

这里因为考虑到很多安装SLAM3的朋友在本地都没有安装ROS2,所以这里更新一篇ROS2的安装教学。

报错解决:

这里我在运行:cmake .. -DCMAKE_BUILD_TYPE=Release的时候出现问题:

ZERO:/media/chengq/soft/Dev_soft/Slam3/Pangolin/build$ cmake .. -DCMAKE_BUILD_TYPE=Release
-- The C compiler identification is GNU 11.4.0
-- The CXX compiler identification is GNU 11.4.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- libpng Found and Enabled
-- libjpeg Found and Enabled
-- libtiff Found and Enabled
-- libopenexr Found and Enabled
-- Found Eigen: '/usr/include/eigen3'
CMake Error at /usr/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:230 (message):Could NOT find OpenGL (missing: OPENGL_opengl_LIBRARY OPENGL_egl_LIBRARYOPENGL_INCLUDE_DIR OpenGL EGL)
Call Stack (most recent call first):/usr/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)/usr/share/cmake-3.22/Modules/FindOpenGL.cmake:443 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)components/pango_opengl/CMakeLists.txt:49 (find_package)CMakeLists.txt:124 (include)-- Configuring incomplete, errors occurred!
See also "/media/chengq/soft/Dev_soft/Slam3/Pangolin/build/CMakeFiles/CMakeOutput.log".
chengq@chengq-ZERO:/media/chengq/soft/Dev_soft/Slam3/Pangolin/build$ cmake .. -DCMAKE_BUILD_TYPE=Release
-- libpng Found and Enabled
-- libjpeg Found and Enabled
-- libtiff Found and Enabled
-- libopenexr Found and Enabled
-- Found Eigen: '/usr/include/eigen3'
CMake Error at /usr/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:230 (message):Could NOT find OpenGL (missing: OPENGL_opengl_LIBRARY OPENGL_egl_LIBRARYOPENGL_INCLUDE_DIR OpenGL EGL)
Call Stack (most recent call first):/usr/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)/usr/share/cmake-3.22/Modules/FindOpenGL.cmake:443 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)components/pango_opengl/CMakeLists.txt:49 (find_package)CMakeLists.txt:124 (include)-- Configuring incomplete, errors occurred!
See also "/media/chengq/soft/Dev_soft/Slam3/Pangolin/build/CMakeFiles/CMakeOutput.log".

这个问题是由于缺少 OpenGL 开发库 导致的编译错误。以下是针对 Ubuntu 22.04 的解决步骤:

一、安装 OpenGL 开发库

sudo apt install -y libgl1-mesa-dev libglu1-mesa-dev libegl1-mesa-dev
  • libgl1-mesa-dev:提供 OpenGL 核心开发库(必装)。
  • libglu1-mesa-dev:提供 OpenGL 实用库(GLU)。
  • libegl1-mesa-dev:提供 EGL(Embedded Systems Graphics Library)开发库(Pangolin 可能依赖)。

二、安装 epoxy 开发库

sudo apt install -y libepoxy-dev
  • libepoxy-dev 包含 epoxy 的头文件和库文件,是 Pangolin 可视化模块的依赖项。

三、重新编译 Pangolin

# 清理之前的构建文件(可选)
cd .. && rm -rf build
mkdir build && cd build# 重新执行 CMake 配置
cmake .. -DCMAKE_BUILD_TYPE=Release

四、继续编译并安装

make -j$(nproc)  # 使用多核编译(加快速度)
sudo make install  # 安装到系统路径

二、克隆项目与构建

1. 克隆代码仓库
git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git ORB_SLAM3
cd ORB_SLAM3
2. 编译项目
chmod +x build.sh
./build.sh  # 自动编译第三方库(DBoW2、g2o、Sophus)和ORB-SLAM3
  • 编译完成后,生成动态库 libORB_SLAM3.so 和可执行文件(位于 Examples 目录)。
3. 编译 ROS 节点(可选)
chmod +x build_ros.sh
./build_ros.sh  # 生成ROS节点,需已安装ROS

报错解决:

在执行 ./build.sh  # 自动编译第三方库(DBoW2、g2o、Sophus)和ORB-SLAM3 
编译的时候又出现错误: 执行到30% 左右无法编译。
报错:

/media/chengq/soft/Dev_soft/Slam3/ORB_SLAM3/src/LoopClosing.cc: In member function ‘void ORB_SLAM3::LoopClosing::SearchAndFuse(const std::vector<ORB_SLAM3::KeyFrame*>&, std::vector<ORB_SLAM3::MapPoint*>&)’:/media/chengq/soft/Dev_soft/Slam3/ORB_SLAM3/src/LoopClosing.cc:2161:9: warning: unused variable ‘total_replaces’ [-Wunused-variable]2161 |     int total_replaces = 0;|         ^~~~~~~~~~~~~~/media/chengq/soft/Dev_soft/Slam3/ORB_SLAM3/src/Tracking.cc: In member function ‘void ORB_SLAM3::Tracking::Track()’:/media/chengq/soft/Dev_soft/Slam3/ORB_SLAM3/src/Tracking.cc:2167:96: warning: comparison of integer expressions of different signedness: ‘long unsigned int’ and ‘int’ [-Wsign-compare]2167 |         if((mCurrentFrame.mnId<(mnLastRelocFrameId+mnFramesToResetIMU)) && (mCurrentFrame.mnId > mnFramesToResetIMU) &&|                                                                             ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~/media/chengq/soft/Dev_soft/Slam3/ORB_SLAM3/src/Tracking.cc: In member function ‘void ORB_SLAM3::Tracking::SearchLocalPoints()’:/media/chengq/soft/Dev_soft/Slam3/ORB_SLAM3/src/Tracking.cc:3413:13: warning: unused variable ‘matches’ [-Wunused-variable]3413 |         int matches = matcher.SearchByProjection(mCurrentFrame, mvpLocalMapPoints, th, mpLocalMapper->mbFarPoints, mpLocalMapper->mThFarPoints);|             ^~~~~~~/media/chengq/soft/Dev_soft/Slam3/ORB_SLAM3/src/Tracking.cc: In member function ‘void ORB_SLAM3::Tracking::UpdateFrameIMU(float, const ORB_SLAM3::IMU::Bias&, ORB_SLAM3::KeyFrame*)’:/media/chengq/soft/Dev_soft/Slam3/ORB_SLAM3/src/Tracking.cc:3983:18: warning: unused variable ‘index’ [-Wunused-variable]3983 |     unsigned int index = mnFirstFrameId;|                  ^~~~~make[2]: *** [CMakeFiles/ORB_SLAM3.dir/build.make:76:CMakeFiles/ORB_SLAM3.dir/src/System.cc.o] 错误 1make[2]: *** 正在等待未完成的任务....make[2]: *** [CMakeFiles/ORB_SLAM3.dir/build.make:104:CMakeFiles/ORB_SLAM3.dir/src/LocalMapping.cc.o] 错误 1make[2]: *** [CMakeFiles/ORB_SLAM3.dir/build.make:118:CMakeFiles/ORB_SLAM3.dir/src/LoopClosing.cc.o] 错误 1make[2]: *** [CMakeFiles/ORB_SLAM3.dir/build.make:90:CMakeFiles/ORB_SLAM3.dir/src/Tracking.cc.o] 错误 1make[1]: *** [CMakeFiles/Makefile2:148:CMakeFiles/ORB_SLAM3.dir/all] 错误 2make: *** [Makefile:91:all] 错误 2

解决:

原因分析:

ORB-SLAM3 是一个相对较早的项目,主要基于 C++11 标准编写。在较新的 Ubuntu 版本(如 20.04 或 22.04)中,默认的 GCC/G++ 编译器版本比较高(通常是 GCC 9+ 或 GCC 11+),这些新版本的编译器默认使用的是 C++14 或 C++17 标准,并且对 C++语法和标准库的使用要求更严格。这常常会导致一些在 C++11 下没问题,但在 C++14/17 下会报错(或被视为错误)的代码。这是 ORB-SLAM3 在新系统上编译时非常常见的问题。

解决方案:

最常见的解决办法是告诉 CMake 在编译 ORB-SLAM3 时使用 C++11 标准进行编译。

  1. 修改 CMakeLists.txt 文件:

    • 进入 ORB_SLAM3 的根目录:cd /media/chengq/soft/Dev_soft/Slam3/ORB_SLAM3 (根据你的实际路径)
    • 打开根目录下的 CMakeLists.txt 文件进行编辑(可以使用 gedit, nano, vim 等编辑器): Bash
      gedit CMakeLists.txt
      # 或者
      nano CMakeLists.txt
      
    • 在文件的开头部分,通常在 cmake_minimum_required(...) 后面,添加或找到并修改以下行: CMake
      set(CMAKE_CXX_STANDARD 11)
      set(CMAKE_CXX_STANDARD_REQUIRED ON)
      
      如果已经有 set(CMAKE_CXX_STANDARD ...) 的行,确保它被设置为 11。如果这两行不存在,就直接添加到文件开头合适的位置(比如在 project(...) 之前或之后)。
  2. 清理之前的构建文件:

    • 由于 CMake 会缓存配置,在修改 CMakeLists.txt 后,需要清理之前失败的构建尝试生成的文件。进入 build 目录并删除所有内容: Bash
      cd build
      rm -rf *
      cd .. # 回到ORB_SLAM3根目录
      
    • 或者直接删除并重新创建 build 目录: Bash
      rm -rf build
      mkdir build
      
    • 重要提示: ORB-SLAM3 的 ./build.sh 脚本理论上应该处理 CMake 的配置和构建,但手动清理 build 目录能确保 CMake 从头开始配置,读取你修改后的 CMakeLists.txt
  3. 重新运行编译脚本:

    • 回到 ORB_SLAM3 的根目录,再次执行编译脚本: Bash
      ./build.sh

三、准备数据集与配置文件

1. 下载示例数据集
  • TUM RGB-D 数据集(用于 RGB-D 相机示例):
    从 TUM RGB-D 数据集 下载序列(如 fr1/xyz),解压后记录路径(如 ~/datasets/tum/fr1/xyz)。

  • EuRoC 数据集(用于立体 / 惯性示例):
    从 EuRoC 数据集 下载 ASL 格式序列,解压后修改 euroc_examples.sh 中的数据集路径。

2. 配置文件说明
  • 词汇表:已包含在 Vocabulary/ORBvoc.txt(无需额外下载)。
  • 相机参数文件
    • RGB-D 示例:Examples/RGB-D/TUM1.yaml(根据数据集修改分辨率、畸变参数)。
    • 立体 / 惯性示例:Examples/Stereo-Inertial/EuRoC.yaml(包含 IMU 参数和相机内参)。

四、运行示例程序

1. 运行 RGB-D 相机示例(以 TUM fr1/xyz 为例)

bash

# 格式:./Examples/RGB-D/rgbd_tum 词汇表路径 配置文件路径 图像路径 关联文件路径
./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1.yaml ~/datasets/tum/fr1/xyz ~/datasets/tum/fr1/xyz/associations.txt
  • 输出:Pangolin 窗口显示实时地图,终端输出轨迹信息,结果保存在 CameraTrajectory.txt
2. 运行立体惯性示例(EuRoC 数据集)

bash

# 格式:./Examples/Stereo-Inertial/stereo_inertial_euroc 词汇表路径 配置文件路径 数据集路径
./Examples/Stereo-Inertial/stereo_inertial_euroc Vocabulary/ORBvoc.txt Examples/Stereo-Inertial/EuRoC.yaml ~/datasets/euroc/V1_02_medium

3. 运行 ROS 节点(以单目为例)

bash

# 1. 设置ROS包路径(需先编辑~/.bashrc,添加以下行并source)
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/path/to/ORB_SLAM3/Examples/ROS# 2. 运行节点(格式:rosrun ORB_SLAM3 Mono 词汇表路径 配置文件路径)
rosrun ORB_SLAM3 Mono Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml

五、常见问题与解决方案

1. 编译错误:第三方库未找到
  • 原因Thirdparty 目录下的库(如 g2o)编译失败。
  • 解决:手动编译第三方库:

    bash

    cd Thirdparty/g2o
    mkdir build && cd build
    cmake .. -DG2O_USE_CSPARSE=ON
    make -j$(nproc)
    cd ../../../
    
2. OpenCV 版本冲突(如 4.x 兼容性问题)
  • 报错undefined reference to cv::imread
  • 解决:修改代码中 OpenCV 函数(如 cv::IMREAD_COLOR 替换为 cv::ImreadModes::IMREAD_COLOR),或确保 CMake 正确链接系统 OpenCV 路径。
3. Pangolin 窗口无法显示
  • 原因:OpenGL 依赖缺失或版本不兼容。
  • 解决:安装 OpenGL 开发库:

    bash

    sudo apt install libglew-dev libglfw3-dev
    
4. ROS 话题映射错误
  • 原因:话题名称不匹配(如 /camera/image_raw 应为 /image_raw)。
  • 解决:修改 ROS 节点订阅的话题名称,或使用rosbag play重映射话题:

    bash

    rosbag play --remap /cam0/image_raw:=/image_raw dataset.bag
    

六、项目结构与扩展

  • 核心代码src/ 和 include/ 包含 SLAM 系统核心逻辑(跟踪、建图、回环检测)。
  • 示例程序Examples/ 目录按传感器类型分类(RGB-D、立体、惯性等),可参考示例编写自定义相机接口。
  • 配置文件Examples/ 下的.yaml文件定义相机内参、IMU 参数等,需根据实际传感器校准结果修改(参考Calibration_Tutorial.pdf)。

七、验证安装成功

  1. 运行示例后,Pangolin 窗口应显示 3D 地图和相机轨迹。
  2. 终端输出关键帧信息、跟踪状态(OK/LOST)及统计数据。
  3. 生成的轨迹文件(如CameraTrajectory.txt)可通过工具(如 Evince)查看或与真值对比。

按照以上步骤操作,即可在本地成功部署运行 ORB-SLAM3。如需自定义传感器(如鱼眼相机、自定义 IMU),需根据Calibration_Tutorial.pdf校准参数并修改配置文件,编译对应的示例程序。

相关文章:

如何Ubuntu 22.04.5 LTS 64 位 操作系统部署运行SLAM3! 详细流程

以下是在本地部署运行 ORB-SLAM3 的详细步骤&#xff0c;基于官方 README.md 和最佳实践整理&#xff0c;适用于 Ubuntu 16.04/18.04/20.04/22.04 系统&#xff1a; 一、系统要求与依赖项安装 1. 基础系统要求 操作系统&#xff1a;Ubuntu 16.04/18.04/20.04/22.04&#xff…...

Ubuntu 上安装 Conda

在 Ubuntu 上安装 Conda&#xff08;Anaconda 或 Miniconda&#xff09;的完整步骤如下&#xff1a; --- **方法1&#xff1a;安装 Miniconda&#xff08;推荐&#xff09;** Miniconda 是 Anaconda 的精简版&#xff0c;只包含基本组件。 **1. 下载安装脚本** bash # 下载最…...

初级云计算运维工程师学习二

全面解析云计算服务模式&#xff1a;公有云、私有云、混合云及IaaS/PaaS/SaaS/DaaS 云计算部署模式&#xff1a;三种主要形式 1. 公有云&#xff08;Public Cloud&#xff09; 定义&#xff1a;云端资源开放给社会公众使用&#xff0c;由第三方云服务提供商通过互联网交付。 …...

物联网蓬勃发展是助力楼宇自控技术迈向成熟的关键

在当今数字化时代&#xff0c;物联网&#xff08;IoT&#xff09;正以前所未有的速度蓬勃发展&#xff0c;其影响力已广泛渗透到各个领域&#xff0c;楼宇自控技术便是其中之一。从本质上讲&#xff0c;楼宇自控旨在实现对建筑物内各类机电设备的智能化管理与控制&#xff0c;为…...

数字孪生技术:企业数字化转型的助推器

在当今环境下&#xff0c;企业面临的挑战不断增加。从可持续发展目标的要求到员工数字技能的提升&#xff0c;转型的呼声越来越高。然而&#xff0c;即使是经验丰富的领导者&#xff0c;也很难在这种前所未有的商业环境下实现转型。企业如何在满足可持续发展目标的同时保持盈利…...

ESM 内功心法:化解 require 中的夺命一击!

前言 传闻在JavaScript与TypeScript武林中,曾有两大绝世心法:CommonJS与ESM。两派高手比肩而立,各自称霸一方,江湖一度风平浪静。 岂料,时局突变。ESM逐步修成阳春白雪之姿,登堂入室,成为主流正统。CommonJS则渐入下风,功力不济,逐渐退出主舞台。 话说某日,一位前…...

安全调度系统:安全管理的智能中枢

安全调度系统作为安全管理体系的核心枢纽&#xff0c;正在深刻改变着传统安全管理的模式和效能。这个集成了先进信息技术的智能化平台&#xff0c;通过实时监控、智能分析和快速响应三大核心功能&#xff0c;构建起全方位、多层次的安全防护网络&#xff0c;成为各类场所安全管…...

Python爬虫从入门到实战详细版教程Char01:爬虫基础与核心技术

1.1 什么是网络爬虫? 1.1.1 定义与分类 网络爬虫:互联网世界的“信息捕手” 网络爬虫(Web Crawler),又称网络蜘蛛或网络机器人,是一种通过预设规则自动访问网页、提取数据的程序系统。从技术视角看,其核心任务是通过模拟浏览器行为向目标服务器发起请求,解析网页内容…...

jsconfig.json文件的作用

jsconfig.json文件的作用 ​ 为什么今天会谈到这个呢&#xff1f;有这么一个场景&#xff1a;我们每次开发项目时都会给路径配置别名&#xff0c;配完别名之后可以简化我们的开发&#xff0c;但是随之而来的就有一个问题&#xff0c;一般来说&#xff0c;当我们使用相对路径时…...

Python线程全面详解:从基础概念到高级应用

一、线程基础概念 1.1 进程与线程的关系 进程是操作系统资源分配的基本单位&#xff0c;它是程序的一次执行过程。当我们将程序加载到内存中运行时&#xff0c;系统会为它分配CPU、内存、文件句柄等资源&#xff0c;这时就形成了一个进程。 线程是CPU调度的基本单位&#xf…...

学习模拟电路

学习模拟电路需要掌握以下几个关键领域的知识和技能&#xff0c;涵盖基础理论、器件特性、电路设计、分析工具以及实践应用&#xff1a; 1. 基础理论与概念 电路基本定律&#xff1a;欧姆定律、基尔霍夫电压定律&#xff08;KVL&#xff09;和电流定律&#xff08;KCL&#xf…...

解码思维链:AI思维链如何重塑人类与机器的对话逻辑

第一章&#xff1a;思维链的诞生与进化 1.1 从"猜谜游戏"到"推理革命" 传统AI模型如同蒙眼解题的考生&#xff1a;当被问及"玛丽有12块饼干&#xff0c;吃掉4块后剩下多少"&#xff0c;它们擅长预测答案&#xff0c;却无法展示"12-48&quo…...

css3新特性第六章(2D变换)

css3新特性第五章(2D变换) CSS3 转换可以对元素进行移动、缩放、转动、拉长或拉伸。 2D位移2D缩放2D旋转2D扭曲多重变换变换原点 一、2D位移 2D 位移可以改变元素的位置&#xff0c;具体使用方式如下&#xff1a; 先给元素添加 转换属性 transform 编写 transform 的具体值&…...

L2-2、示范教学与角色扮演:激发模型“模仿力“与“人格“

一、Few-shot 教学的核心原理与优势 在与大语言模型交互时&#xff0c;Few-shot&#xff08;少样本&#xff09;教学是一种强大的提示技术。其核心原理是通过提供少量示例&#xff0c;引导模型理解我们期望的输出格式和内容风格。 Few-shot 教学的主要优势包括&#xff1a; …...

MAC系统下完全卸载Android Studio

删除以下文件 /Applications/Android Studio.app /Users/用户名/Library/Application Support/Google/AndroidStudio2024.2 /Users/用户名/Library/Google/AndroidStudio /Users/用户名/Library/Preferences/com.google.android.studio.plist /Users/用户名/Library/Cache…...

rgw的d3n功能配置

背景 最近在看缓存相关&#xff0c;文件系统可以通过fscache加速&#xff0c;加速的效果就是读取的时候能够缓存&#xff0c;原理是在网关的地方加入一个高速缓存盘&#xff0c;这样在后续读取的时候&#xff0c;能够直接从缓存盘读取&#xff0c;这样能够减少与集群的交互&am…...

this._uid:Vue 内部为每个组件实例分配的唯一 ID

Vue 提供了一些方法可以帮助你区分组件实例&#xff0c;例如通过 this._uid&#xff08;Vue 内部为每个组件实例分配的唯一 ID&#xff09;或自定义标识符。 以下是具体的实现步骤和代码示例&#xff1a; console.log("当前组件实例ID:", this._uid, "时间戳:&…...

使用Python设置excel单元格的字体(font值)

一、前言 通过使用Python的openpyxl库&#xff0c;来操作excel单元格&#xff0c;设置单元格的字体&#xff0c;也就是font值。 把学习的过程分享给大家。大佬勿喷&#xff01; 二、程序展示 1、新建excel import openpyxl from openpyxl.styles import Font wb openpyxl.…...

【深度学习】#8 循环神经网络

主要参考学习资料&#xff1a; 《动手学深度学习》阿斯顿张 等 著 【动手学深度学习 PyTorch版】哔哩哔哩跟李牧学AI 为了进一步提高长线学习的效率&#xff0c;该系列从本章开始将舍弃原始教材的代码部分&#xff0c;专注于理论和思维的提炼&#xff0c;系列名也改为“深度学习…...

三角形神经网络(TNN)

三角形神经网络&#xff08;TNN&#xff09;是一种新兴的神经网络架构&#xff0c;不过目前它并非像 CNN、RNN 等传统网络那样被广泛研究和应用&#xff0c;以下为你解释其原理并结合例子说明&#xff1a; 原理 基本结构 三角形神经网络的核心思想是构建一种类似三角形的层次…...

【JavaEE】-- MyBatis操作数据库(1)

文章目录 1. 什么是MyBatis2 MyBatis入门2.1 准备工作2.1.1 创建工程 2.2 配置数据库连接字符串2.3 写持久层代码2.4 单元测试 3. MyBatis的基础操作3.1 打印日志3.2 参数传递3.3 增&#xff08;insert&#xff09;3.3.1 返回主键 3.4 删&#xff08;delete&#xff09;3.5 改&…...

人工智能大模型备案与服务登记:监管体系的双轨逻辑与实操指南

一、核心差异&#xff1a;监管框架的分层设计 适用范围的本质分野 大模型备案&#xff1a;针对直接向公众提供生成式服务的自研或微调模型&#xff08;如 ChatGPT 类产品&#xff09;&#xff0c;要求模型具备舆论属性或社会动员能力。典型场景包括智能客服、内容创作平台等。大…...

衡石ChatBI:依托开放架构构建技术驱动的差异化数据服务

在当今数字化浪潮中&#xff0c;企业对数据价值的挖掘和利用需求日益增长。BI&#xff08;商业智能&#xff09;工具作为企业获取数据洞察的关键手段&#xff0c;其技术架构的创新与发展至关重要。衡石科技的Chat BI凭借其独特的开放架构&#xff0c;在BI领域脱颖而出&#xff…...

AOSP Android14 Launcher3——RecentsView最近任务数据加载

最近任务是Launcher中的一个重要的功能&#xff0c;显示用户最近使用的应用&#xff0c;并可以快速切换到其中的应用&#xff1b;用户可以通过底部上滑停顿进入最近任务&#xff0c;也可以在第三方应用底部上滑进最近任务。 这两种场景之前的博客也介绍过&#xff0c;本文就不…...

分析型数据库与事务型数据库?核心差异与选型指南

在当今数据驱动的业务环境中&#xff0c;选择合适的数据库架构已成为企业技术决策的关键。然而&#xff0c;面对事务型数据库和分析型数据库的选择&#xff0c;许多技术团队往往陷入困境&#xff1a;日常运行良好的系统在数据量激增时性能骤降&#xff0c;简单的查询在复杂分析…...

Linux-信号

信号是由用户&#xff0c;系统或者进程发送给目标进程的信息&#xff0c;以通知目标进程某个状态的改变或系统异常。 进程分为前台进程和后台进程&#xff0c;对于前台进程我们可以输入特殊的终端字符来给它发送信号&#xff0c;比如输入Ctrlc&#xff0c;发送一个中断信号 系…...

Oracle数据库学习之路-目录

Oracle数据库学习之路 一、安装 &#xff08;一&#xff09;数据库安装步骤详解 &#xff08;二&#xff09;开发工具安装与配置 二、基础语法篇 &#xff08;一&#xff09;基础 SQL 语法详解 &#xff08;二&#xff09;SQL 语法练习与案例分析 三、高级语法篇 &…...

用selenium4 webdriver + java 搭建并完成第一个自动化测试脚本

自动化测试任务&#xff1a; 百度搜索自己的姓名。点击第一个链接&#xff08;或者第二个&#xff09;&#xff0c;在新的页面上&#xff0c;添加断言&#xff0c;验证你的名字是否存在。 实验资料百度网盘下载路径&#xff1a; 链接: https://pan.baidu.com/s/1nVlHX_ivres…...

晨控CK-FR12与欧姆龙NX系列PLC配置EtherNet/IP通讯连接操作手册

晨控CK-FR12系列作为晨控智能工业级别RFID读写器,支持大部分工业协议如RS232、RS485、以太网。支持工业协议Modbus RTU、Modbus TCP、Profinet、EtherNet/lP、EtherCat以及自由协议TCP/IP等。 本期主题&#xff1a;围绕CK-FR12产品的EtherNet/IP通讯协议与欧姆龙PLC进行通讯配置…...

武装Burp Suite工具:RouteVulScan插件_被动扫描发现漏洞.

武装Burp Suite工具&#xff1a;RouteVulScan插件_被动扫描. RouteVulScan 是一款使用Java语言编写&#xff0c;基于Burp Suite API的插件&#xff0c;用于递归地检测潜在的脆弱路径。 该插件通过被动扫描的方式&#xff0c;对路径的各个层级进行深度分析。利用预设的正则表达…...

Selenium+Java 环境搭建

windows电脑环境搭建Chrome浏览器 1.下载 Google Chrome 网络浏览器 &#xff08;一定要下载官方的&#xff01;&#xff01;&#xff01;&#xff09; 注&#xff1a;最好下载在浏览器默认的路径 便于查找&#xff0c;而且占内存不是很大 2.查看chrome浏览器的版本 3.下载…...

网易云IP属地可以查看城市吗?深度解析与使用指南

在互联网时代&#xff0c;用户的隐私和数据安全越来越受到关注。许多社交平台和应用都会显示用户的IP属地&#xff0c;以增加透明度和真实性。网易云音乐作为国内领先的音乐平台&#xff0c;也引入了IP属地显示功能。那么&#xff0c;网易云IP属地能否精确到城市&#xff1f;这…...

Cline 之Plan和Act模式

Cline 提供了 "Plan & Act"双模式开发框架。适用在不同的场景。 一、核心模式理念 通过结构化开发流程提升AI编程效率&#xff0c;采用"先规划后执行"的核心理念。 该框架旨在帮助开发者构建更易维护、准确性更高的代码&#xff0c;同时显著缩短开发…...

【Java面试笔记:基础】7.int和Integer有什么区别?

在Java中&#xff0c;int和Integer虽然都用于表示整数值&#xff0c;但它们在本质、用法和特性上有显著差异。 1. int 和 Integer 的区别 int&#xff1a; 原始数据类型&#xff1a;int 是 Java 的 8 个原始数据类型之一&#xff0c;用于表示整数。性能优势&#xff1a;直接存…...

嘻游后台系统与机器人模块结构详解:功能逻辑 + 定制改造实战

作为“嘻游电玩三端组件”系列的最后一篇&#xff0c;本篇将全面剖析平台自带的后台控制系统与机器人行为逻辑模块&#xff0c;包括&#xff1a;用户管理、房间配置、日志系统、机器人规则编排与行为策略扩展等。通过技术视角展示其整体框架与可拓展性&#xff0c;帮助开发者更…...

Linux 网络编程:select、poll 与 epoll 深度解析 —— 从基础到高并发实战

一、IO 多路复用&#xff1a;解决并发 IO 的核心技术 在网络编程中&#xff0c;当需要同时处理大量客户端连接时&#xff0c;传统阻塞式 IO 会导致程序卡在单个操作上&#xff0c;造成资源浪费。IO 多路复用技术允许单线程监听多个文件描述符&#xff08;FD&#xff09;&#…...

在统信UOS1060上安装Fail2Ban并通过邮件发送通知

在统信UOS1060上安装Fail2Ban并通过邮件发送通知 Fail2Ban 是一个开源的防止暴力攻击的软件&#xff0c;可以有效保护您的服务器免受频繁的登录失败攻击。本文将指导您如何在统信UOS 1060上安装Fail2Ban&#xff0c;并在IP被封禁后通过邮件发送通知。 步骤 1&#xff1a;查看…...

PyTorch 分布式 DistributedDataParallel (DDP)

在之前的讨论&#xff08;或者如果你直接跳到这里&#xff09;中&#xff0c;我们了解了 torch.nn.DataParallel (DP) 作为 PyTorch 多 GPU 训练的入门选项。它简单易用&#xff0c;但其固有的主 GPU 瓶颈、GIL 限制和低效的通信模式&#xff0c;往往让它在实际应用中难以充分发…...

精益数据分析(14/126):基于数据洞察优化产品与运营

精益数据分析&#xff08;14/126&#xff09;&#xff1a;基于数据洞察优化产品与运营 在创业和数据分析的道路上&#xff0c;我们都在不断摸索前行。我一直希望能和大家共同学习、共同进步&#xff0c;所以今天继续为大家解读《精益数据分析》。这次我们将深入探讨HighScore …...

flutter 插件收集

2025年 1月10号Flutter插件手机 声音转文字 speech_to_text | Flutter package 文字转声音 flutter_tts | Flutter package 堆栈信息 stack_trace | Dart package 跳转到app设置里面 app_settings | Flutter package 轻松的动画 animations | Flutter package 日志打印 t…...

WPF特性分析

文章目录 WPF特性全面分析与性能优化指南引言WPF核心特性1. 声明式UI与XAML2. 硬件加速渲染3. 数据绑定与MVVM4. 样式与模板5. 动画系统 WPF与其他框架比较WPF vs. WinFormsWPF vs. UWPWPF vs. MAUI WPF性能优化最佳实践1. 内存管理优化2. UI虚拟化3. 使用冻结对象4. 减少视觉树…...

3.1goweb框架gin下

Gin 框架有内置的模板引擎&#xff0c;它允许你将数据和 HTML 模板结合&#xff0c;动态生成网页内容。 模板引擎基础使用 单模板文件示例 以下是一个简单的使用单个 HTML 模板文件的示例&#xff0c;展示了如何在 Gin 中渲染模板&#xff1a; package mainimport ("g…...

【全解析】深入理解 JavaScript JSON 数据解析

一、JSON 概述 1. 概念 JSON 全称为 JavaScript Object Notation&#xff0c;是一种轻量级的数据交换格式。它是 JavaScript 中用于描述对象数据的语法的扩展。不过并不限于与 JavaScript 一起使用。它采用完全独立于语言的文本格式&#xff0c;这些特性使 JSON 成为理想的数…...

影刀RPA怎么和AI结合,制作自动采集小红书爆款文章+自动用AI改写标题、内容+用AI文生图生成发文图片+自动在小红书上发布文章

环境: 影刀5.26.24 Win10专业版 doubao deepseek r1 wps 问题描述: 影刀RPA怎么和AI结合,制作自动采集小红书爆款文章+自动用AI改写标题、内容+用AI文生图生成发文图片+自动在小红书上发布文章,最后上传到飞书备份 解决方案: 1.主要流程如下: 全局变量设置(关键…...

懒人一键搭建符号执行环境V5K3

0.背景 在写完上一篇文章后发现&#xff0c;其实V5k3的组合也可以使用。Verilator v5.x 系列版本完全支持本项目的编译与仿真。 不同于 v3 版本&#xff0c;Verilator v5 引入了更严格的访问控制机制&#xff1a;要从 Verilator 生成的 C 仿真模型中访问内部信号或变量&#x…...

Java队列(Queue)核心操作与最佳实践:深入解析与面试指南

文章目录 概述一、Java队列核心实现类对比1. LinkedList2. ArrayDeque3. PriorityQueue 二、核心操作API与时间复杂度三、经典使用场景与最佳实践场景1&#xff1a;BFS层序遍历&#xff08;树/图&#xff09;场景2&#xff1a;滑动窗口最大值&#xff08;单调队列&#xff09; …...

Android 中实现图片翻转动画(卡片翻转效果)

1、简述 通过 ObjectAnimator 和 AnimatorSet 可以实现图片的翻转动画,并在翻转过程中切换图片,同时避免图片被镜像。 ObjectAnimator 是 Android 动画框架中的一个类,用于对对象的属性进行动画效果处理。它通过改变对象的属性值来实现动画效果,非常适合实现复杂的动画,如…...

智能电网第1期 | 工业交换机在变电站自动化系统中的作用

随着智能电网建设的加速推进&#xff0c;变电站自动化系统对通信网络的实时性、可靠性和安全性提出了更高要求。在变电站智能化改造过程中&#xff0c;传统网络架构面临诸多挑战&#xff1a; 多协议兼容难题&#xff1a;继电保护、测控装置等设备通信协议多样&#xff0c;难以统…...

01.浏览器自动化webdriver源码分析之启动函数

日后&#xff0c;网络爬虫也好&#xff0c;数据采集也好&#xff0c;自动化必然是主流。因此&#xff0c;笔者未雨绸缪&#xff0c;在此研究各类自动化源码&#xff0c;希望能够赶上时代&#xff0c;做出一套实用的自动化框架。 这里先研究传统的webdriver中转来进行浏览器自动…...

day35图像处理OpenCV

文章目录 一、图像预处理17 直方图均衡化17.1绘制直方图17.2直方图均衡化1. 自适应直方图均衡化2. 对比度受限的自适应直方图均衡化3. 示例 19 模板匹配 一、图像预处理 17 直方图均衡化 直方图&#xff1a;反映图像像素分布的统计图&#xff0c;横坐标就是图像像素的取值&…...