PCL快速上手:Ubuntu20通过apt安装PCL的避坑指南

PCL入门(一):ubuntu20使用apt安装pcl 在ubuntu上使用apt命令简单安装pcl 阅读详情

1. 为什么我推荐你用apt装PCL?聊聊源码安装的“坑”

如果你刚开始接触点云处理,想在Ubuntu 20.04上把PCL(Point Cloud Library)这个强大的工具库跑起来,那你大概率会面临一个经典选择:是去官网下载源码自己编译,还是直接用系统自带的包管理工具apt来安装?

我以过来人的身份告诉你,对于绝大多数刚上手、想快速验证想法或者做项目开发的兄弟,直接用apt安装是最高效、最不容易出错的路子。我知道,很多技术教程喜欢鼓吹“源码安装大法好”,能装最新版,能自定义编译选项。这话没错,但前提是你得有足够的时间和耐心去填坑。

我自己就曾经头铁,尝试过在Ubuntu上源码编译安装PCL。那体验,简直是一场“依赖地狱”的冒险。PCL本身是个“巨无霸”,它依赖了一票其他重量级库,比如VTK(可视化工具包)、FLANN(快速最近邻搜索库)、Boost(C++万能工具箱)、Eigen(线性代数库)等等。这些库本身版本就多,相互之间的依赖关系错综复杂。你从PCL官网下个源码包,cmake的时候,缺这个少那个是家常便饭。更头疼的是,你好不容易把某个依赖库的指定版本装上了,可能会跟你系统里已经存在的、通过apt安装的其他软件产生冲突,导致一些莫名其妙的运行时错误。我印象最深的一次是,为了一个VTK的兼容性问题,折腾了整整一个下午,最后发现是OpenGL驱动版本不匹配,那种挫败感,新手真的很难扛得住。

所以,除非你有非常特殊的定制化需求(比如必须启用某个默认关闭的模块,或者要针对特定硬件做极致优化),否则在Ubuntu 20.04这个长期支持版上,拥抱apt提供的稳定版本,是最明智的选择。apt最大的好处就是“省心”。它会自动帮你解决所有依赖关系,确保安装的PCL库和它依赖的所有组件都是经过官方仓库测试、彼此兼容的稳定版本。你不需要关心VTK该装哪个版本,Eigen会不会冲突,一条命令下去,系统帮你打理得明明白白。我们的目标是快速上手,把精力集中在点云算法和应用开发上,而不是在环境搭建上消耗斗志。接下来,我就带你一步步走通这条最安稳的路,并把路上可能遇到的小石子(坑)都给你标出来。

2. 动手之前:搞清你的Ubuntu和PCL版本

在敲下任何安装命令之前,有一个关键步骤绝对不能跳过:弄清楚你的系统能提供什么,以及你需要什么。这就像去超市买东西,你得先知道超市有没有货(系统仓库里的PCL版本),再看看是不是你想要的牌子(版本号)。

2.1 查看你的Ubuntu系统版本

虽然我们标题说了是Ubuntu 20.04,但保不齐有人系统升级过或者记混了。确认一下总没错。打开你的终端,输入:

lsb_release -a

你会看到类似这样的输出:

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.6 LTS
Release:        20.04
Codename:       focal

重点看 Codename 这一行,显示为 focal。这个代号非常重要,它代表了Ubuntu 20.04的内部项目代号。后面我们配置软件源(apt源)时,用的就是这个代号,而不是数字版本号。记住它:focal。

2.2 探查apt仓库里的PCL版本

Ubuntu官方软件仓库(以及像阿里云、清华这样的镜像站)为每一个系统版本(代号)都维护了一套经过充分兼容性测试的软件包。PCL也不例外。我们需要先看看,在focal这个版本的仓库里,能安装的PCL最高版本是多少。

在终端里运行这个查询命令:

apt-cache show libpcl-dev | grep Version

这条命令的意思是:查询名为libpcl-dev这个软件包的详细信息,并用grep过滤出包含“Version”的行。libpcl-dev是PCL的开发包,包含了编译所需的头文件和链接库。

执行后,你大概率会看到这样的结果:

Version: 1.10.0+dfsg-5ubuntu1

看,版本是1.10.0。这就是Ubuntu 20.04官方仓库提供的PCL版本。有些朋友可能会问:“网上都说PCL有1.11、1.12甚至更新的版本了,1.10是不是太老了?” 这里有个认知误区需要澄清。对于Ubuntu这样的稳定发行版,其核心软件仓库在系统发布时就已经固定了主要软件的大版本号。在系统的整个支持周期内(对于20.04 LTS是5年),仓库主要提供的是安全更新和严重的错误修复,而不是频繁升级到大版本。这样做是为了保证整个系统生态的极度稳定。PCL 1.10本身已经是一个非常成熟和功能完备的版本,涵盖了绝大多数点云处理的基础和高级算法。对于学习、科研和大部分工业应用来说,1.10版本完全足够,而且其稳定性经过了海量用户的长期验证。盲目追求新版本,在Linux系统环境下,往往意味着要自己引入不稳定的因素。

所以,请接受这个设定:在Ubuntu 20.04上,通过apt安装PCL,得到的就是稳定可靠的1.10版本。这是我们后续所有操作的基础。

3. 确保安装流畅:配置一个靠谱的软件源

“软件源”是什么?你可以把它想象成手机上的“应用商店”。apt这个包管理工具,需要知道去哪个“商店”里下载软件。默认情况下,Ubuntu使用的是官方源,服务器可能在国外。对于国内用户,这可能会导致下载速度极其缓慢,甚至因为网络问题完全失败,这就是为什么有时候执行sudo apt-get update或sudo apt-get install会卡住或者报错的原因。

因此,将软件源替换为国内的镜像源,是提升Ubuntu使用体验(尤其是安装软件速度)的必备操作。国内常用的有阿里云镜像、清华大学镜像、华为云镜像等,速度都非常快。这里我以阿里云镜像为例,因为它比较稳定和通用。

重要提示:在修改系统关键配置文件之前,养成备份的好习惯!这样万一操作失误,还能轻松恢复。

3.1 备份原有的源列表文件

首先,我们给系统自带的源列表文件加个“保险”:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup

这条命令将/etc/apt/sources.list文件复制了一份,命名为backup。如果后续新源有问题,你可以用sudo cp /etc/apt/sources.list.backup /etc/apt/sources.list命令轻松还原。

3.2 清空并写入新的镜像源

接下来,我们直接编辑源列表文件。你可以使用任何你熟悉的文本编辑器,比如vim、nano或者gedit。这里我用nano,因为它对新手更友好:

sudo nano /etc/apt/sources.list

打开文件后,你会看到里面有很多行以deb或deb-src开头的网址。直接把这些内容全部删除(在nano里,你可以用Ctrl+K快捷键逐行剪切)。然后,将下面为Ubuntu 20.04(focal)配置的阿里云镜像源完整地粘贴进去:

deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

粘贴时请务必注意:每一行末尾不要有多余的空格。focal这个代号一定要正确,如果你用的是其他Ubuntu版本(比如22.04是jammy),这里要相应修改。

粘贴完成后,按Ctrl+O(字母O)保存文件,再按Ctrl+X退出nano编辑器。

3.3 更新本地软件包缓存

换了新的“应用商店”地址,我们需要让apt工具去同步一下新商店里的商品目录。执行:

sudo apt-get update

这个命令会访问我们刚刚设置的阿里云镜像站,下载最新的软件包列表信息到本地。看到终端里飞速滚动的[连接 mirrors.aliyun.com]和[获取]字样,并且最后没有报错,显示“全部完成”或类似信息,就说明源配置成功了。现在,你的apt下载速度将会得到质的飞跃。

4. 核心安装:两条命令搞定PCL及其依赖

环境准备就绪,安装过程其实简单得超乎想象。我们分两步走,确保基础编译环境和PCL都能正确安装。

4.1 安装基础编译工具链

虽然我们的目标是PCL,但很多软件在编译安装时都需要一些通用的工具,比如gcc、g++、make等。build-essential这个元包(meta-package)就包含了这一整套基础工具。先把它装上,避免后续编译测试代码时出问题:

sudo apt-get install build-essential

系统会列出将要安装的包,询问你是否继续,输入y并按回车确认。稍等片刻,基础工具就安装好了。

4.2 安装PCL开发库

最关键的一步来了,安装PCL本身:

sudo apt-get install libpcl-dev

当你输入这条命令后,apt会做以下几件聪明事:

  1. 分析依赖:它发现libpcl-dev依赖于libpcl1.10(运行时库),而PCL又依赖于VTK、Boost、Eigen、FLANN等一系列库。
  2. 解决依赖:它会自动计算出所有这些依赖包,并形成一个完整的安装列表。
  3. 提示确认:在终端里,它会显示一个长长的列表,告诉你将要安装libpcl-dev、libpcl1.10、libvtk7.1、libboost-all-dev等等几十个包,并询问“您希望继续执行吗?[Y/n]”。
  4. 一键安装:你只需要输入y然后回车,apt就会自动从配置好的阿里云镜像源下载所有这些包,并按正确的顺序安装它们,处理好彼此之间的配置和链接。

这个过程完全是自动化的,你不需要手动去查找、下载、配置任何一个依赖库。这就是包管理器的魅力所在。安装完成后,PCL的头文件会被放在/usr/include/pcl-1.10/pcl/目录下,库文件会在/usr/lib/x86_64-linux-gnu/目录中。

5. 验证安装:如何确认PCL真的装好了?

安装过程没有报错,但怎么才能确信PCL已经正确安装,并且可以被我们的程序找到呢?我教你几个实用的验证方法,从简单到深入。

5.1 方法一:查询已安装的包版本

最直接的方法,就是问apt它到底给我们装了啥:

apt-cache show libpcl-dev | grep Version

或者,用dpkg命令查看已安装包的具体信息:

dpkg -l | grep libpcl

这条命令会列出所有包含libpcl字样的已安装包。你应该能看到libpcl-dev和libpcl1.10这两个包,以及它们确切的版本号。这证明了PCL的软件包确实已经存在于你的系统中。

5.2 方法二:检查关键的头文件和库路径

光有包还不够,我们得确认开发文件(头文件)和链接库(.so文件)都就位了。

检查头文件:

ls /usr/include/pcl-1.10/pcl/

如果这个目录存在,并且里面充满了.h、.hpp头文件(比如point_cloud.h、io/pcd_io.h等),那说明头文件安装正确。

检查库文件:

ls /usr/lib/x86_64-linux-gnu/libpcl*

你会看到一系列以libpcl_开头的动态库文件,例如libpcl_common.so、libpcl_io.so、libpcl_filters.so等。这些就是编译程序时需要链接的库。

5.3 方法三:编写一个最简单的测试程序(强烈推荐)

前两种方法是“静态”检查,而编译运行一个实际程序是“动态”的终极验证。它能同时测试编译器能否找到头文件、链接器能否找到库、以及库本身能否正常工作。

创建一个新的C++文件,比如叫test_pcl_install.cpp:

nano test_pcl_install.cpp

将以下代码粘贴进去。这是一个最小化的PCL程序,它不依赖任何外部数据文件,仅仅创建一个空的点云对象并输出其基本信息:

#include <iostream>
#include <pcl/point_cloud.h>
#include <pcl/point_types.h>

int main() {
    // 创建一个空的点云对象,其中每个点的类型是 pcl::PointXYZ (包含x, y, z坐标)
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);

    // 设置点云的一些属性
    cloud->width = 100; // 点云宽度(可以理解为每行有100个点)
    cloud->height = 1;  // 点云高度为1,表示这是一个无组织结构的点云
    cloud->is_dense = true; // 点云中所有点都是有效的(没有无穷远点或NaN点)
    cloud->points.resize(cloud->width * cloud->height); // 为100个点分配空间

    // 简单地为每个点赋个值(这里只是示例,实际应用中会从文件或传感器读取)
    for (size_t i = 0; i < cloud->points.size(); ++i) {
        cloud->points[i].x = i * 0.01f; // x坐标线性增长
        cloud->points[i].y = 0.0f;
        cloud->points[i].z = 0.0f;
    }

    // 打印点云的基本信息
    std::cout << "PCL安装测试成功!" << std::endl;
    std::cout << "点云创建成功,包含 " << cloud->points.size() << " 个点。" << std::endl;
    std::cout << "第一个点的坐标是: (" 
              << cloud->points[0].x << ", " 
              << cloud->points[0].y << ", " 
              << cloud->points[0].z << ")" << std::endl;

    return 0;
}

保存并退出编辑器(在nano中是Ctrl+O, Ctrl+X)。

现在,尝试编译这个程序。我们需要告诉编译器去哪里找PCL的头文件和库文件。幸运的是,PCL提供了一个非常方便的工具叫pkg-config来帮我们做这件事。使用以下命令编译:

g++ test_pcl_install.cpp -o test_pcl_install $(pkg-config --cflags --libs pcl_common-1.10)

让我解释一下这个命令:

  • g++:C++编译器。
  • test_pcl_install.cpp:我们的源代码文件。
  • -o test_pcl_install:指定输出的可执行文件名为test_pcl_install。
  • $(pkg-config --cflags --libs pcl_common-1.10):这是最关键的部分。pkg-config是一个工具,它能自动查询已安装库的编译和链接参数。pcl_common-1.10是PCL核心模块的包名。--cflags会输出包含头文件路径的编译选项(如-I/usr/include/pcl-1.10),--libs会输出链接库的选项(如-lpcl_common)。$()是命令替换,将pkg-config命令的输出结果直接插入到g++命令中。

如果PCL安装正确且pkg-config配置无误,这条命令应该能顺利执行,不会报“找不到头文件”或“未定义的引用”这类错误。

最后,运行生成的可执行文件:

./test_pcl_install

如果屏幕上打印出:

PCL安装测试成功!
点云创建成功,包含 100 个点。
第一个点的坐标是: (0, 0, 0)

那么,恭喜你!这不仅仅意味着PCL安装成功了,更意味着你的开发环境已经完全就绪,可以开始真正的点云编程之旅了。这个简单的程序验证了从包含头文件、使用PCL核心类、到编译链接的完整链条都是通畅的。

6. 进阶与排坑:你可能遇到的几个典型问题

即使按照上述步骤操作,由于系统环境的细微差异,你也可能会遇到一些问题。别担心,我把我遇到过和常见的问题都整理在这里。

6.1 找不到pkg-config的.pc文件

在执行编译测试命令时,你可能会遇到这样的错误:

Package pcl_common-1.10 was not found in the pkg-config search path.
Perhaps you should add the directory containing `pcl_common-1.10.pc'
to the PKG_CONFIG_PATH environment variable?

问题原因:pkg-config工具需要找到对应的.pc文件来获取库信息。PCL的.pc文件通常安装在/usr/lib/pkgconfig/或/usr/lib/x86_64-linux-gnu/pkgconfig/目录下。有时安装后,这个路径没有被自动加入到pkg-config的搜索路径中。

解决方案:手动将该目录添加到环境变量。你可以临时添加(仅对当前终端有效):

export PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig:$PKG_CONFIG_PATH

然后再次尝试编译命令。

为了永久生效,可以将这行命令添加到你的shell配置文件中(如~/.bashrc或~/.zshrc):

echo 'export PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig:$PKG_CONFIG_PATH' >> ~/.bashrc
source ~/.bashrc

6.2 编译时链接错误(undefined reference)

如果你的测试程序编译通过了,但在链接阶段报错,提示一大堆undefined reference to ...,这通常意味着链接器没有找到具体的库实现。

问题原因:pkg-config可能没有包含所有必需的PCL模块。我们的测试程序只用了pcl_common(核心模块),但如果你将来用到IO、滤波、特征等模块,就需要链接对应的库。

解决方案:明确指定所有用到的模块。例如,如果你用了pcl::io::loadPCDFile函数,就需要链接pcl_io-1.10。更通用的方法是,如果你不确定,可以链接PCL的绝大多数常用模块:

g++ your_program.cpp -o your_program $(pkg-config --cflags --libs pcl_common-1.10 pcl_io-1.10 pcl_filters-1.10)

或者,查阅PCL官方文档,看你使用的类属于哪个模块,然后链接对应的库。

6.3 运行时找不到动态库(libpcl_xxx.so.1.10: cannot open shared object file)

程序编译成功了,但运行时出现类似错误:

error while loading shared libraries: libpcl_common.so.1.10: cannot open shared object file: No such file or directory

问题原因:系统运行时链接器(ld)不知道去哪里找PCL的库文件。虽然库安装在/usr/lib/x86_64-linux-gnu/,但有时需要刷新一下动态库的缓存。

解决方案:执行以下命令,更新动态链接库的缓存:

sudo ldconfig

这个命令会扫描/etc/ld.so.conf配置文件中指定的目录(通常包括/usr/lib和/usr/local/lib)以及它们的子目录,并创建一个缓存文件,加速运行时库的查找。执行完毕后,再运行你的程序试试。

6.4 想用CMake管理项目怎么办?

上面的测试我们用命令行直接编译。实际项目中,大家更常用CMake来管理。这里给出一个对应的、最简单的CMakeLists.txt示例:

cmake_minimum_required(VERSION 3.10)
project(MyPCLProject)

# 设置C++标准
set(CMAKE_CXX_STANDARD 14)

# 查找PCL库,REQUIRED表示必须找到,否则报错
find_package(PCL 1.10 REQUIRED COMPONENTS common io) # 按需添加你需要的组件,如filters, segmentation等

# 包含PCL的头文件目录
include_directories(${PCL_INCLUDE_DIRS})

# 添加你的可执行文件
add_executable(test_pcl_cmake test_pcl_install.cpp) # 假设源文件同名

# 将PCL的库链接到你的可执行文件
target_link_libraries(test_pcl_cmake ${PCL_LIBRARIES})

把这个CMakeLists.txt文件放在和你的.cpp源文件同一个目录。然后在该目录下执行:

mkdir build && cd build
cmake ..
make
./test_pcl_cmake

CMake的find_package(PCL)命令会自动处理所有复杂的路径和依赖,是更专业、更推荐的项目管理方式。

7. 安装之后:下一步可以做什么?

环境搭好了,验证也通过了,接下来才是真正有趣的开始。PCL 1.10这个稳定的版本为你打开了一扇通往三维视觉世界的大门。我建议你可以从以下几个方向开始探索:

首先,跑通官方教程。PCL官网和其GitHub仓库里有很多示例代码(Tutorials)。从最简单的“如何读写PCD文件”开始,把示例代码下载下来,在你的新环境里编译运行。看到第一个点云被加载并显示出来,那种成就感是实实在在的。

然后,动手处理自己的数据。如果你有深度相机(如Kinect、RealSense)或者激光雷达数据,尝试用PCL的IO模块读取它们。如果没有,网络上有大量公开的点云数据集(比如斯坦福的3D扫描模型)。试着对点云进行下采样(滤波)、计算法线、做平面分割(RANSAC)等基本操作。每成功实现一个算法,你对PCL的理解就会加深一层。

别忘了善用工具。PCL自带了一个非常强大的可视化工具pcl_viewer。你可以通过sudo apt-get install pcl-tools来安装它。在终端里直接用pcl_viewer your_pointcloud.pcd命令就能查看点云,支持旋转、缩放、测量,是调试和观察结果的利器。

最后,深入源码和社区。当你对API熟悉后,可以偶尔翻看一下PCL头文件里的注释,或者去GitHub上看看相关模块的源码实现(虽然是通过apt安装,但源码包libpcl-dev通常也包含了可供阅读的头文件)。遇到棘手的问题,PCL的官方邮件列表和GitHub Issues是寻找答案的好地方。记住,环境搭建只是第一步,真正的乐趣在于用这个强大的工具去解决实际问题,无论是做机器人导航、三维重建,还是简单的点云数据分析。

PCL快速部署指南:Ubuntu20下APT安装与版本管理技巧 本文详细介绍了在Ubuntu20系统下使用APT包管理器快速安装和配置点云库PCL的完整指南。通过优化APT源配置、处理依赖关系及版本管理等实用技巧,帮助开发者高效部署PCL开发环境,特别适合需要稳定运行点云处理算法的应用场景。 阅读详情

相关推荐

PCL环境搭建全攻略:Windows/Ubuntu避坑指南与实战验证

三维点云处理是机器人感知、自动驾驶和三维重建等领域的核心技术,它通过对海量空间点数据的处理与分析,实现对三维世界的理解与交互。其底层原理依赖于高效的近邻搜索、特征提取和滤波算法,以处理无序、高维的点云数据。这项技术的核心价值在于为各类智能系统提供了真实世界的三维数字化模型,是环境感知与决策的关键。在实际应用中,无论是进行物体识别、场景分割还是SLAM(即时定位与地图构建),一个稳定、高效的开发环境都是首要前提。Point Cloud Library (PCL) 作为该领域的权威开源库,其环境配置,尤其是在W

weixin_30444105的博客 311

Ubuntu20.04下PCL 1.10安装避坑指南:从apt源配置到版本验证

本文详细介绍了在Ubuntu 20.04系统上通过apt包管理器高效安装PCL 1.10点云库的完整流程与避坑指南。内容涵盖软件源配置、核心依赖解析、版本验证及基础功能测试,旨在帮助开发者和研究者快速搭建稳定可靠的PCL开发环境,避免繁琐的源码编译和依赖冲突问题。

weixin_29228781的博客 537

Ubuntu 22.04 上用 apt 安装 ROS Noetic 的避坑指南

ROS 作为机器人开发的主流框架,其版本与 Ubuntu 系统的适配性一直是开发者关心的重点。通常 ROS Noetic 官方仅支持 Ubuntu 20.04,但通过合理配置软件源与依赖关系,在 Ubuntu 22.04 上同样可以借助 apt 直接安装预编译的 ROS 二进制包,省去源码编译的漫长流程。apt 作为 Linux 下成熟的包管理工具,能够自动处理大部分依赖问题,实际部署时只需注意源地址、密钥导入及 Python 环境等关键细节。该方案特别适合课程学习、算法验证和小型机器人项目,可在十分钟内搭

weixin_29229055的博客 292

PCL快速上手:Ubuntu20下APT安装与版本管理指南

本文为Ubuntu 20.04用户提供了最便捷的PCL(Point Cloud Library)安装方案。通过APT包管理器,可一键自动解决VTK、Boost等复杂依赖,快速部署稳定的PCL 1.10开发环境。指南详细涵盖了APT源配置、核心安装命令、安装后验证及版本管理策略,旨在帮助开发者绕开源码编译的繁琐与风险,快速上手点云处理。

uu89012的博客 152

Ubuntu安装PCL踩坑指南:apt、源码编译与VTK版本冲突全解析

PCL(Point Cloud Library)是处理三维点云数据的核心开源库,广泛应用于机器人感知、自动驾驶与环境重建等领域。在Ubuntu系统中,安装PCL往往不是一条命令能解决的问题,开发者常面临apt预装版本与项目需求不匹配、源码编译时的依赖缺失、编译内存不足被系统kill,以及VTK版本冲突等工程挑战。理解包管理器与源码安装的差异,掌握依赖检查、CMake配置和路径排查的方法,是顺利进行点云开发的基础。本文基于真实踩坑经历,系统梳理了从apt安装到源码编译全过程中的典型报错与解决方案,并推荐了一套

weixin_34098209的博客 280

网络虚拟化介绍(OVS、DVS)

网络虚拟化概念网络虚拟化就是把网络层的一些功能从硬件中剥离出来,建立新的网络虚拟层;该虚拟层可以接管网络服务和配置,实现网络服务与物理层的解耦,打破物理资源限制;通过网络虚拟层能够在一个物理网络上模拟出多个逻辑网络,并且多用户在逻辑网络上相互隔离,保证网络安全网络虚拟化的特点隔离性:不同租户的流量相互之间不能互访;但是IP/MAC地址都可以独立规划可移动性:虚拟机可以跨二层/三层迁移,甚至可以跨广域网迁移(迁移前后虚拟机Vlan和IP地址都不会发生变化)可扩展性:逻辑网络的规模和数量可扩展。

m0_49864110的博客 1万+

Ubuntu22.04安装PCL(小白适用)

Ubuntu22.04安装PCL教程

u012660296的博客 1万+

Docker+vLLM内网离线部署Qwen3 流程

本文介绍了在CentOS 7系统下进行VLLM容器化部署Qwen3-32B大模型的内网离线方案。首先需准备Nvidia显卡驱动、CUDA 12.4和Docker环境。通过联网机器拉取vllm/vllm-openai镜像并导入内网服务器,同时从魔塔社区下载模型文件。部署时使用docker run命令启动容器,配置了GPU资源、内存共享、端口映射等参数,特别指定了模型路径、并行计算、内存利用率等关键参数。该方案实现了大模型在内网环境的安全高效部署,适用于需要离线运行的AI推理场景。

qq_42881308的博客 1043

ubuntu18.04 安装pcl点云库(亲测有效)

PCL点云处理库的简单介绍和安装使用。ubuntu18.04

莫大逗比嘟嘟 8308

DFT实战:如何用Synopsys工具搞定多时钟域Scan Chain设计(附避坑指南)

本文详细解析了使用Synopsys DFT Compiler工具链实现多时钟域Scan Chain设计的全流程,包括时钟混合策略、跨时钟域平衡技巧和实战脚本剖析。通过量产验证的工程实践方案,帮助DFT工程师有效解决复杂SoC设计中的Scan Chain挑战,提升测试效率和质量。

mm9012的博客 1035

i春秋第二届春秋欢乐赛 classical writeup

i春秋第二届春秋欢乐赛 classical writeup 第一步:题目给出的提示 根据题目我们可以了解这道题应该是一个古典密码的题目,但是古典密码太多了我们如何知道是什么? 看题目给出的附件是一个很长很长的乱序字符串,我们可以想到用词频分析一下: 发现里面有一段不一样的信息:LyjtL3fvnSRlo2xvKIjrK2ximSHkJ3ZhJ2Hto3x9 像是base64解码能够做出来,但是发现...

hanjinrui15的博客 1430

ubuntu18.04 安装pcl(详细教程)

1.安装各种依赖 sudo apt-get update sudo apt-get install git build-essential linux-libc-dev sudo apt-get install cmake cmake-gui sudo apt-get install libusb-1.0-0-dev libusb-dev libudev-dev sudo apt-get install mpi-default-dev openmpi-bin openmpi-common sudo a.

weixin_49498499的博客 1万+

PPO实战:如何用强化学习让小车爬上MountainCarContinuous-v0山顶(附完整代码)

本文提供了使用PPO算法解决MountainCarContinuous-v0环境的完整实战教程。针对该环境的连续动作空间和稀疏奖励挑战,文章详细解析了PPO智能体的网络架构、状态归一化、GAE优势估计等核心实现,并附带了可直接运行的PyTorch代码。同时分享了关键的调参技巧和实战避坑指南,帮助读者高效训练智能体完成小车爬坡任务。

linux的博客 968

PCL从理解到应用【05】快速安装PCL环境 | PCL测试| Linux系统

本文介绍在Ubuntu系统中,通过apt-get方式安装,快速安装PCL。安装好后,通过编写C++代码,直接调用的pcl库。

黎国溥 2296

<IBM DB2>《DB2 官方监控脚本 2022版本》

DB2 监控脚本

Else 的博客 674

YOLO26 vs YOLOv12 vs YOLOv10:工业场景性能实测,速度/精度/部署难度全对比(附完整测试代码)

YOLO26:工业场景全能型选手,无NMS+无DFL设计让部署和推理都省心,小目标精度优势明显,CPU推理速度提升43%,适合大多数生产线场景YOLOv12:中大型目标检测专家,Area Attention在复杂背景下表现出色,适合汽车、家电等大型零部件检测YOLOv10:速度狂魔,GPU上性能领先,轻量化版本适合边缘部署,但小目标精度略逊,适合对实时性要求极高的分拣线场景。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 625

为什么我推荐在Ubuntu20.04上用apt安装PCL而不是源码?一位踩过坑的老鸟的忠告

本文基于作者亲身经验,对比了在Ubuntu 20.04上安装PCL(点云库)的两种方式:源码编译与apt安装。文章强烈推荐使用apt安装,因为它能自动解决复杂的依赖关系,提供稳定、兼容的PCL 1.10版本,极大节省了环境搭建时间,避免了源码编译中常见的“依赖地狱”和编译错误,让开发者能快速投入点云处理算法的开发。

c6d7e8f9g的博客 483

Week 9 10 Neural Networks

Week 9 10 Neural Networks

金州饿霸吃不饱的博客 404

Ubuntu20.04下PCL的两种高效安装方法及避坑指南

本文详细介绍了在Ubuntu20.04系统下安装PCL(Point Cloud Library)的两种高效方法:源码编译和apt直接安装,并提供了避坑指南和性能优化技巧。通过对比实测数据,帮助开发者根据需求选择最佳安装方案,提升点云处理效率。

weixin_29290863的博客 391

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

ubuntu安装pcl环境

1、下载pcl 地址:github 源码地址 2、安装依赖项 sudo add-apt-repository ppa:v-launchpad-jochen-sprickerhof-de/pcl sudo apt-get update sudo apt-get install libpcl-all 先执行 sudo add-apt-repository ppa:v-launchpad-jochen-sprickerhof-de/pcl 再执行 sudo apt install libpcl-dev //或

一只程序猿的博客 3409

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Ubuntu虚拟机安装PCL:apt直装与源码编译避坑指南

点云处理通常依赖跨平台 C++ 库完成数据结构、滤波、配准与可视化,而环境配置往往决定工程能否复现。Linux 下软件包通过 apt 解决依赖,源码编译则涉及 CMake、Boost、Eigen、VTK、FLANN 等库的链接与 ABI 匹配;理解这一链路,可显著降低安装失败、动态库缺失和可视化崩溃的概率。在 SLAM、三维重建、机器人抓取标定等场景中,PCL 常作为核心点云库,配合 Ubuntu 虚拟机可隔离环境、利用快照回滚,更适合学习与调试。围绕 Ubuntu 20.04/22.04 下的 PCL 安

weixin_29229989的博客 247

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

为什么我推荐在Ubuntu20.04上用apt安装PCL?对比源码安装的优缺点

本文详细对比了在Ubuntu20.04上使用apt安装PCL与源码编译的优缺点,推荐大多数开发者选择apt安装方案。apt安装不仅简便快捷,还能自动处理依赖关系,确保系统稳定性,特别适合点云处理项目的快速开发。文章还提供了国内用户优化apt源的实用技巧,帮助提升安装效率。

weixin_33704591的博客 209

ROS最简易的PCL安装方法,无需编译(Ubuntu20.4系统)

最简易的PCL安装方法,无需编译(Ubuntu20.4系统) 直接粘贴命令: sudo apt install libpcl-dev 老版本ubuntu可能是这个命令: sudo apt-get install libpcl-dev 就完成了。后面的内容纯属吐槽。 这个方法是这篇博客#最简易的PCL安装方法(ubuntu16.04系统)#提供的,感谢! 同时谴责网络上一大批博客宣扬的使用源码安装PCL的方法!简直是给人指弯路啊!害的我从PCL1.9版本编译到PCL1.12版本,没一个能用的。(具体的

nhjydywd0的博客 6385

Ubuntu下PCL点云库安装避坑指南:从apt到源码编译全解析

点云处理是三维视觉与机器人感知领域的重要基础技术,PCL作为广泛使用的开源C++库,提供了滤波、配准、分割等核心算法。然而在Ubuntu系统中安装PCL往往不是一条命令能解决的事,其底层依赖Eigen、Boost、VTK、FLANN等组件相互制约,版本不匹配和编译环境冲突极易引发连锁报错。理解依赖管理原理,掌握apt预编译包与源码编译两种路径的适用场景,才能在开发效率和定制需求间做出合理选择。针对初学者和老手,本文系统梳理安装流程、高频CMake编译错误及内存不足应对策略,帮助开发者快速搭建可用的点云开发环

weixin_29758911的博客 57
上一篇: 深入解析Android Studio模拟器AVD启动失败:从路径乱码到环境变量配置全攻略
下一篇: FastAPI 实战指南:构建高效API的完整流程
lambda
博客等级 码龄23年 49粉丝 1303原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值