图漾相机-ROS2-SDK-Ubuntu版本编译(新版本)
官网编译文档链接:
https://doc.percipio.xyz/cam/latest/getstarted/sdk-ros2-compile.html
国内gitee下载SDK链接:
https://gitee.com/percipioxyz
国外github下载SDK链接:
https://github.com/percipioxyz
1.Camport ROS2 SDK 介绍
1.1 Camport ROS2 SDK源文件介绍
Camport ROS2 SDK 的目录,目录包含了camport3,include,launch,src。

1.README.md:
简述了 ROS2 编译过程。
2.src/percipio_camera/CMakeLists.txt:
Cmake 编译系统的规则文件。
3.src/percipio_camera/camport3:
包含 Percipio SDK 的库文件和头文件。
4.src/percipio_camera/include:
包含头文件。
5.src/percipio_camera/launch:
包含 ROS2 的启动文件,用于启动节点和配置参数。
6.src/percipio_camera/package.xml:
描述功能包清单的文件,包括功能包的名称、版本号、作者信息、许可信息、编译依赖等。
7.src/percipio_camera/src:
包含主要的源代码文件,包括节点实现、相机驱动等。
1.2 Camport ROS2 SDK工作流程
1.2.1 包含头文件
包含必要的 ROS 2 头文件,例如 rclcpp。
1.2.2 2 初始化 ROS 2 节点
使用 rclcpp::init(argc, argv); 初始化 ROS 2。
1.2.3 创建节点对象
使用 rclcpp::Node::make_shared(“节点名称”) 创建节点对象。
1.2.4 创建发布者对象并实现发布逻辑
使用 node->create_publisher<消息类型>(“话题名称”, 队列大小);
创建发布者对象。实现发布逻辑,例如在回调函数中发布消息。
1.2.5 启动 ROS 2
使用 ros2 run 包名 节点名 运行指定的 ROS 2 节点。
使用 ros2 launch 包名 launch文件名 启动包含多个节点的 launch 文件。
1.3 ROS2 SDK环境配置与编译
主要针对ubuntu20.04对应ROS2 Foxy,以及ubuntu22.04对应ROS2 Humble两个版本的系统进行操作。
1.3.1 Ubuntu 20.04 下ROS2 Foxy环境配置与编译
环境配置与编译步骤:
第一步:设置编码
sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8
第二步:添加ROS源的公钥
sudo apt update && sudo apt install curl gnupg lsb-release
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg]
https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
第三步:安装ROS2-foxy
sudo apt update
sudo apt upgrade
sudo apt install ros-foxy-desktop
sudo apt install python3-colcon-common-extensions
sudo apt install ros-foxy-camera-info-manager
sudo apt install ros-foxy-image-publisher
sudo apt install ros-foxy-diagnostic-updater
**第四步:**设置环境变量
source /opt/ros/foxy/setup.bash
echo " source /opt/ros/foxy/setup.bash" >> ~/.bashrc
第五步:camport3_ros2目录下,编译SDK
cd ~/ros2_ws/src/camport_ros2/
colcon build --event-handlers console_direct+ --cmake-args -DCMAKE_BUILD_TYPE=Release
sudo echo "source ./install/setup.bash" >> ~/.bashrc
source ~/.bashrc
colcon build 说明:
–event-handlers console_direct+:这个选项指定了事件处理程序。console_direct+ 表示直接在控制台输出构建事件的详细信息。这样可以更清楚地看到构建过程中的每一步和可能的错误信息。
–cmake-args -DCMAKE_BUILD_TYPE=Release:这个选项传递了额外的 CMake 参数。在这种情况下,-DCMAKE_BUILD_TYPE=Release 设置了 CMake 的构建类型为
Release。这意味着构建将进行优化,适合发布版本,而不是调试版本。
编译后会生成 build 文件夹(包含中间文件和目标文件)、install 文件夹(包括可执行文件、库文件、头文件和其他资源文件)和 log 文件夹(包含编译和运行时生成的日志文件)。
1.3.2 Ubuntu 22.04 下ROS2 Humble环境配置与编译
环境配置与编译步骤:
第一步:设置编码
sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8
第二步:添加ROS源的公钥
sudo apt update && sudo apt install curl gnupg lsb-release
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
第三步:安装ROS2-humble
sudo apt update
sudo apt upgrade
sudo apt install ros-humble-desktop
sudo apt install python3-colcon-common-extensions
sudo apt install ros-humble-camera-info-manager
sudo apt install ros-humble-image-publisher
sudo apt install ros-humble-diagnostic-updater
第四步:设置环境变量
source /opt/ros/ humble /setup.bash
echo " source /opt/ros/ humble /setup.bash" >> ~/.bashrc
第五步:camport3_ros2目录下,编译SDK
cd ~/ros2_ws/src/camport_ros2/
colcon build --event-handlers console_direct+ --cmake-args -DCMAKE_BUILD_TYPE=Release
sudo echo "source ./install/setup.bash" >> ~/.bashrc
source ~/.bashrc
colcon build 说明:
–event-handlers console_direct+:这个选项指定了事件处理程序。console_direct+ 表示直接在控制台输出构建事件的详细信息。这样可以更清楚地看到构建过程中的每一步和可能的错误信息。
–cmake-args -DCMAKE_BUILD_TYPE=Release:这个选项传递了额外的 CMake 参数。在这种情况下,-DCMAKE_BUILD_TYPE=Release 设置了 CMake 的构建类型为Release。这意味着构建将进行优化,适合发布版本,而不是调试版本。
1.3.3 编译文件检查
编译后会生成build,install,log。
1.build:
这个目录包含了编译过程中生成的中间文件和目标文件。包括对象文件(.o)、依赖文件等。 该目录在每次编译时都会被更新。
2.install:
这个目录包含了安装后的文件。包括可执行文件、库文件、头文件和其他资源文件。 该目录用于运行时使用,包含了所有需要的文件和依赖项。
3.log:
这个目录包含了编译和运行时生成的日志文件。包括编译日志、运行时日志和错误日志等。 这些日志文件对于调试和诊断问题非常有用。
1.4 参数配置
1.4.1 单相机
camport3_ros2/install/percipio_camera/share/percipio_camera/launch/percipio_camera.launch.py:
用于配置相机启动时加载的默认参数。如:指定相机的SN或IP、组件配置(配置color和depth的分辨率、ToF相关参数等)。
注意:当前连接相机的方式有两种:相机SN、相机IP


1.4.2 多相机
camport3_ros2/install/percipio_camera/share/percipio_camera/launch/multi_cam.launch.py:
1.用于配置相机启动时加载的默认参数。如:指定相机的SN或IP、组件配置(配置color和depth的分辨率、ToF相关参数等)。
2.如果要添加第三台及以上,需要在下图红框处添加相关的代码,可以仿照第一、二台填写。

1.5 打开相机
第一步:修改
camport3_ros2/install/percipio_camera/share/percipio_camera/launch/ percipio_camera.launch.py文件后,发布 ros2 launch percipio_camera
percipio_camera.launch.py
第二步:观察出图效果
1.5.1 方法一配置camera_ros.py
方法一:重新开一个终端,将camera_ros2.py复制到camport3_ros2目录下,并打开camera_ros2.py,进行编辑。修改下图内容中的红框为 launch中camera name参数的值。



执行命令:python3 ./camera_ros2.py ,下图为该程序的用法。

1.5.2 方法二使用RVIZ
方法二:重新开一个终端,运行Rviz(Robot Visualization),执行命令:
ros2 run rviz2 rviz2
1.打开RVIZ界面

2.配置深度图

3.打开深度图/彩色图/红外图

4.配置点云图并打开点云图


1.6 测试Camport ROS2 SDK
1.6.1 参数测试
支持配置的参数如下所示:

1.6.2 相机测试
通过下表所列出的相机测试不同组件下的属性是否可以进行设置值,比如,Color组件下彩色相机的分辨率和格式;Depth组件下相机的分辨率和格式、ToF特有属性参数;IR组件下的相机的分辨率和格式等。

1.6.3 Storage 参数加载测试
ROS2 SDK支持打开相机后加载相机Storage配置参数,参数均可通过Percipio-viewer进行配置。测试方法如下:
1.确认相机的fetch_config.xml中有storage 组件。
2.使用Percipio-Viewer软件(支持保存相机参数的版本),打开相机,修改各个组件下Controls下的参数,然后保存参数到Storage。
3.使用ROS2打开相机,观察出图情况。
相关文章:
图漾相机-ROS2-SDK-Ubuntu版本编译(新版本)
官网编译文档链接: https://doc.percipio.xyz/cam/latest/getstarted/sdk-ros2-compile.html 国内gitee下载SDK链接: https://gitee.com/percipioxyz 国外github下载SDK链接: https://github.com/percipioxyz 1.Camport ROS2 SDK 介绍 1.1 …...
【Samba】Ubuntu20.04 Windows 共享文件夹
【Samba】Ubuntu20.04 Windows 共享文件夹 前言整体思路检查 Ubuntu 端 和 Windows 网络通信是否正常创建共享文件夹安装并配置 Samba 服务器安装 Samba 服务器创建 Samba 用户编辑 Samba 配置文件重启 Samba 服务器 在 Windows 端 访问 Ubuntu 的共享文件夹 前言 本文基于 Ub…...
RAG是否被取代(缓存增强生成-CAG)吗?
引言: 本文深入研究一种名为缓存增强生成(CAG)的新技术如何工作并减少/消除检索增强生成(RAG)弱点和瓶颈。 LLMs 可以根据输入给他的信息给出对应的输出,但是这样的工作方式很快就不能满足应用的需要: 因…...
01.双Android容器解决方案
目录 写在前面 一,容器 1.1 容器的原理 1.1.1 Namespace 1.1.2 Cgroups(Control Groups) 1.1.3 联合文件系统(Union File System) 1.2 容器的应用 1.2.1 微服务架构 1.2.2 持续集成和持续部署(CI/C…...
[MySQL]MySQL数据库的介绍和库相关操作
目录 一、数据库介绍 1.什么是数据库 2.为什么使用数据库 3.数据库的操作运行逻辑 4.MySQL架构 5.SQL语句的分类 二、数据库的操作 1.数据库的连接 2.数据库的操作 创建数据库 查看数据库 显示数据库的创建语句 删除数据库 修改数据库 3.字符集和校验集 查看系…...
环境安装与配置:全面了解 Go 语言的安装与设置
在学习 Go 语言之前,首先需要确保开发环境已正确安装和配置。本部分将详细介绍如何在不同平台(Windows、macOS 和 Linux)上安装 Go 语言,以及如何进行环境变量配置和工作空间的设置。 一、安装 Go 语言 1. Windows 安装方法 下载…...
LLM幻觉(Hallucination)缓解技术综述与展望
LLMs 中的幻觉问题(LLM 幻觉:现象剖析、影响与应对策略)对其可靠性与实用性构成了严重威胁。幻觉现象表现为模型生成的内容与事实严重不符,在医疗、金融、法律等对准确性要求极高的关键领域,可能引发误导性后果&#x…...
基于物联网设计的疫苗冷链物流监测系统
一、前言 1.1 项目开发背景 随着全球经济的发展和物流行业的不断创新,疫苗和生物制品的运输要求变得越来越高。尤其是疫苗的冷链物流,温度、湿度等环境因素的控制直接关系到疫苗的质量和效力,因此高效、可靠的冷链监控系统显得尤为重要。冷…...
C++的类Class
文章目录 一、C的struct和C的类的区别二、关于OOP三、举例:一个商品类CGoods四、构造函数和析构函数1、定义一个顺序栈2、用构造和析构代替s.init(5);和s.release();3、在不同内存区域构造对象4、深拷贝和浅拷贝5、构造函数和深拷贝的简单应用6、构造函数的初始化列…...
接口 V2 完善:分布式环境下的 WebSocket 实现与 Token 校验
🎯 本文档详细介绍了如何使用WebSocket协议优化客户端与服务端之间的通信,特别是在处理异步订单创建通知的场景中。通过引入WebSocket代替传统的HTTP请求-响应模式,实现了服务器主动向客户端推送数据的功能,极大地提高了实时性和效…...
使用Ollama 在Ubuntu运行deepseek大模型:以DeepSeek-coder为例
DeepSeek大模型这几天冲上热搜啦! 咱们来亲身感受下DeepSeek模型的魅力吧! 整个操作流程非常简单方便,只需要2步,先安装Ollama,然后执行大模型即可。 安装Ollama 在Ubuntu下安装Ollama非常简单,直接sna…...
Java阶段四06
第4章-第6节 一、知识点 geospatial、hyperloglog、bitmap、事务、Jedis、SpringBoot集成Redis 二、目标 了解三种特殊数据类型的使用 理解什么是Redis事务 学会使用Redis事务 掌握使用JAVA代码操作Redis 三、内容分析 重点 理解什么是Redis事务 学会使用Redis事务 掌…...
2025年数学建模美赛:A题分析(1)Testing Time: The Constant Wear On Stairs
2025年数学建模美赛 A题分析(1)Testing Time: The Constant Wear On Stairs 2025年数学建模美赛 A题分析(2)楼梯磨损分析模型 2025年数学建模美赛 A题分析(3)楼梯使用方向偏好模型 2025年数学建模美赛 A题分…...
题2025年春节 — 五言绝句一首,Hip-Hop一首
题 2025年春节 (五言绝句) 朔 气 寒 千 古,萧 萧 冷 地 空。 千 门 坐 暖 室,看 雪 一 清 冬。 题 2025年春节 (HipHop) 这寒风都吹了几十亿年,没什么新奇的; 那黄叶萧瑟遍布了地球,每年都一样的。 小年过了是大年&…...
WPF常见面试题解答
以下是WPF(Windows Presentation Foundation)面试中常见的问题及解答,涵盖基础概念、高级功能和实际应用,帮助你更好地准备面试: 基础概念 什么是WPF? WPF是微软开发的用于构建桌面应用程序的UI框架&#x…...
使用Vue3实现可拖拽的九点导航面板
开篇 本文使用Vue3实现了一个可拖拽的九宫导航面板。这个面板在我这里的应用场景是我个人网站的首页的位置,九宫导航对应的是用户最后使用或者最多使用的九个功能,正常应该是由后端接口返回的,不过这里为了简化,写的是固定的数组数…...
68-《贝壳花》
贝壳花 贝壳花(学名:Moluccella laevis Linn.)是属于唇形科,贝壳花是一、二年的草本。植株高5至60cm,茎四棱,不分枝。叶对生,心脏状圆形,边缘疏生齿牙;叶柄和叶近等长。花…...
C++ Lambda 表达式的本质及原理分析
目录 1.引言 2.Lambda 的本质 3.Lambda 的捕获机制的本质 4.捕获方式的实现与底层原理 5.默认捕获的实现原理 6.捕获 this 的机制 7.捕获的限制与注意事项 8.总结 1.引言 C 中的 Lambda 表达式是一种匿名函数,最早在 C11 引入,用于简化函数对象的…...
深入理解三高架构:高可用性、高性能、高扩展性的最佳实践
引言 在现代互联网环境下,随着用户规模和业务需求的快速增长,系统架构的设计变得尤为重要。为了确保系统能够在高负载和复杂场景下稳定运行,"三高架构"(高可用性、高性能、高扩展性)成为技术架构设计中的核…...
【自然语言处理(NLP)】深度循环神经网络(Deep Recurrent Neural Network,DRNN)原理和实现
文章目录 介绍深度循环神经网络(DRNN)原理和实现结构特点工作原理符号含义公式含义 应用领域优势与挑战DRNN 代码实现 个人主页:道友老李 欢迎加入社区:道友老李的学习社区 介绍 **自然语言处理(Natural Language Pr…...
2025数学建模美赛|F题成品论文
国家安全政策与网络安全 摘要 随着互联网技术的迅猛发展,网络犯罪问题已成为全球网络安全中的重要研究课题,且网络犯罪的形式和影响日益复杂和严重。本文针对网络犯罪中的问题,基于多元回归分析和差异中的差异(DiD)思…...
自定义数据集 使用pytorch框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测
代码: import torch import numpy as np import torch.nn as nn# 定义数据:x_data 是特征,y_data 是标签(目标值) data [[-0.5, 7.7],[1.8, 98.5],[0.9, 57.8],[0.4, 39.2],[-1.4, -15.7],[-1.4, -37.3],[-1.8, -49.…...
【MQ】如何保证消息队列的高可用?
RocketMQ NameServer集群部署 Broker做了集群部署 主从模式 类型:同步复制、异步复制 主节点返回消息给客户端的时候是否需要同步从节点 Dledger:要求至少消息复制到半数以上的节点之后,才给客户端返回写入成功 slave定时从master同步数据…...
本地大模型编程实战(04)给文本自动打标签
文章目录 准备实例化本地大模型情感分析更精细的控制总结代码 使用本地大模型可以根据需要给文本打标签,本文介绍了如何基于 langchain 和本地部署的大模型给文本打标签。 本文使用 llama3.1 作为本地大模型,它的性能比非开源大模型要查一下,…...
关于使用PHP时WordPress排错——“这意味着您在wp-config.php文件中指定的用户名和密码信息不正确”的解决办法
本来是看到一位好友的自己建站,所以突发奇想,在本地装个WordPress玩玩吧,就尝试着装了一下,因为之前电脑上就有MySQL,所以在自己使用PHP建立MySQL时报错了。 最开始是我的php启动mysql时有问题,也就是启动过…...
【蓝桥杯】43694.正则问题
题目描述 考虑一种简单的正则表达式: 只由 x ( ) | 组成的正则表达式。 小明想求出这个正则表达式能接受的最长字符串的长度。 例如 ((xx|xxx)x|(x|xx))xx 能接受的最长字符串是: xxxxxx,长度是 6。 输入描述 一个由 x()| 组成的正则表达式。…...
服务器虚拟化技术详解与实战:架构、部署与优化
📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 引言 在现代 IT 基础架构中,服务器虚拟化已成为提高资源利用率、降低运维成本、提升系统灵活性的重要手段。通过服务…...
git困扰的问题
.gitignore中添加的某个忽略文件并不生效 把某些目录或文件加入忽略规则,按照上述方法定义后发现并未生效, gitignore只能忽略那些原来没有被追踪的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。 解决方…...
jvm--类的生命周期
学习类的生命周期之前,需要了解一下jvm的几个重要的内存区域: (1)方法区:存放已经加载的类信息、常量、静态变量以及方法代码的内存区域 (2)常量池:常量池是方法区的一部分&#x…...
定制Centos镜像(一)
环境准备: 一台最小化安装的干净的系统,这里使用Centos7.9,一个Centos镜像,镜像也使用Centos7.9的。 [rootlocalhost ~]# cat /etc/system-release CentOS Linux release 7.9.2009 (Core) [rootlocalhost ~]# rpm -qa | wc -l 306 [rootloca…...
