图漾相机-ROS2-SDK-Ubuntu版本编译(新版本)

文章目录

  • 前言
  • 1.Camport ROS2 SDK 介绍
    • 1.1 Camport ROS2 SDK源文件介绍
    • 1.2 Camport ROS2 SDK工作流程
      • 1.2.1 包含头文件
      • 1.2.2 2 初始化 ROS 2 节点
      • 1.2.3 创建节点对象
      • 1.2.4 创建发布者对象并实现发布逻辑
      • 1.2.5 启动 ROS 2
    • 1.3 ROS2 SDK环境配置与编译
      • 1.3.1 Ubuntu 20.04 下ROS2 Foxy环境配置与编译
      • 1.3.2 Ubuntu 22.04 下ROS2 Humble环境配置与编译
      • 1.3.3 编译文件检查
    • 1.4 参数配置
      • 1.4.1 单相机
      • 1.4.2 多相机
    • 1.5 打开相机
      • 1.5.1 方法一配置camera_ros.py
      • 1.5.2 方法二使用RVIZ
    • 1.6 测试Camport ROS2 SDK
      • 1.6.1 参数测试
      • 1.6.2 相机测试
      • 1.6.3 Storage 参数加载测试

前言

官网编译文档链接:
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打开相机,观察出图情况。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/68804.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

海外问卷调查渠道查:企业经营的利器

一、海外问卷调查的基本概念 市场&#xff1a;市场主要由需求者和供给者组成的一种经济关系&#xff0c;主要是商品和服务的交换的一种方式和手段&#xff0c;市场类型按不同标准来划分。按地域划分&#xff0c;则分为国内市场和国际市场&#xff0c;按照产品类型划分&#xf…

pandas中的str使用方法

在 Pandas 中&#xff0c;str 访问器用于对 Series 或 DataFrame 中的字符串数据进行矢量化操作&#xff0c;使其能够像 Python 的字符串方法一样被调用&#xff0c;但支持对整个列或 Series 进行高效处理。 str 只能用于包含字符串类型的 Series 或 DataFrame 的 string 类型…

向上调整算法(详解)c++

算法流程&#xff1a; 与⽗结点的权值作⽐较&#xff0c;如果⽐它⼤&#xff0c;就与⽗亲交换&#xff1b; 交换完之后&#xff0c;重复 1 操作&#xff0c;直到⽐⽗亲⼩&#xff0c;或者换到根节点的位置 这里为什么插入85完后合法&#xff1f; 我们插入一个85&#xff0c;…

LeetCode题练习与总结:根据二叉树创建字符串--606

一、题目描述 给你二叉树的根节点 root &#xff0c;请你采用前序遍历的方式&#xff0c;将二叉树转化为一个由括号和整数组成的字符串&#xff0c;返回构造出的字符串。 空节点使用一对空括号对 "()" 表示&#xff0c;转化后需要省略所有不影响字符串与原始二叉树…

人工智能入门课【手写自注意力机制】

原理 自注意力&#xff08;Self-Attention&#xff09;是一种强大的机制&#xff0c;广泛应用于自然语言处理、计算机视觉等领域&#xff0c;尤其是在Transformer架构中发挥了关键作用。它的核心思想是让模型能够动态地关注输入序列中不同位置之间的关系&#xff0c;从而更好地…

理解 InnoDB 如何处理崩溃恢复

在数据库领域&#xff0c;数据的一致性与可靠性至关重要。InnoDB 存储引擎的崩溃恢复机制是保障数据安全的核心&#xff0c;其中 Doublewrite Buffer 和 Redo Log 发挥着关键作用。下面&#xff0c;我们将详细探讨 InnoDB 从写入到崩溃恢复的全过程。 一、写入流程 修改页面&…

gentoo 中更改$PS1

现象&#xff1a;gentoo linux Xfce桌面&#xff0c;Terminal 终端&#xff0c;当进入很深的目录时&#xff0c;终端提示符会很长&#xff0c;不方便。如下图所示&#xff1a; 故需要修改$PS1 gentoo 默认的 PS1 在 /etc/bash/bashrc .d/10-gentoo-color.bash中定义&a…

安全防护前置

就业概述 网络安全工程师/安全运维工程师/安全工程师 安全架构师/安全专员/研究院&#xff08;数学要好&#xff09; 厂商工程师&#xff08;售前/售后&#xff09; 系统集成工程师&#xff08;所有计算机知识都要会一点&#xff09; 学习目标 前言 网络安全事件 蠕虫病毒--&…

【自然语言处理(NLP)】深度学习架构:Transformer 原理及代码实现

文章目录 介绍Transformer核心组件架构图编码器&#xff08;Encoder&#xff09;解码器&#xff08;Decoder&#xff09; 优点应用代码实现导包基于位置的前馈网络残差连接后进行层规范化编码器 Block编码器解码器 Block解码器训练预测 个人主页&#xff1a;道友老李 欢迎加入社…

wordpress代码结构解析

WordPress 是一个基于 PHP 和 MySQL 的开源内容管理系统&#xff08;CMS&#xff09;&#xff0c;广泛用于构建网站和博客。要解析 WordPress 代码&#xff0c;首先需要了解其核心结构、主要文件和常用的函数。以下是 WordPress 代码解析的基本指南&#xff1a; --- ### 1. *…

【Leetcode 每日一题】81. 搜索旋转排序数组 II

问题背景 已知存在一个按非降序排列的整数数组 n u m s nums nums&#xff0c;数组中的值不必互不相同。 在传递给函数之前&#xff0c; n u m s nums nums 在预先未知的某个下标 k ( 0 < k < n u m s . l e n g t h ) k\ (0 < k < nums.length) k (0<k<…

机器学习优化算法:从梯度下降到Adam及其变种

机器学习优化算法&#xff1a;从梯度下降到Adam及其变种 引言 最近deepseek的爆火已然说明&#xff0c;在机器学习领域&#xff0c;优化算法是模型训练的核心驱动力。无论是简单的线性回归还是复杂的深度神经网络&#xff0c;优化算法的选择直接影响模型的收敛速度、泛化性能…

mysqldump+-binlog增量备份

注意&#xff1a;二进制文件删除必须使用help purge 不可用rm -f 会崩 一、概念 增量备份&#xff1a;仅备份上次备份以后变化的数据 差异备份&#xff1a;仅备份上次完全备份以后变化的数据 完全备份&#xff1a;顾名思义&#xff0c;将数据完全备份 其中&#xff0c;…

Memcached数据库简单学习与使用

Memcached 是一款高性能的分布式内存缓存系统&#xff0c;通常用于加速动态Web应用程序&#xff0c;通过减少数据库的负载来提升性能。Memcached的基本原理很简单&#xff1a;它通过将数据存储在内存中&#xff0c;减少数据库的访问频率&#xff0c;从而提高应用程序的响应速度…

DeepSeek的提示词使用说明

一、DeepSeek概述 DeepSeek是一款基于先进推理技术的大型语言模型&#xff0c;能够根据用户提供的简洁提示词生成高质量、精准的内容。在实际应用中&#xff0c;DeepSeek不仅能够帮助用户完成各类文案撰写、报告分析、市场研究等工作&#xff0c;还能够生成结构化的内容&#…

Web服务器启动难题:Spring Boot框架下的异常处理解析

摘要 在尝试启动Web服务器时遇到了无法启动的问题&#xff0c;具体错误为org.springframework.boot.web.server.WebServerException。这一异常表明Spring Boot框架在初始化Web服务器过程中出现了故障。通常此类问题源于配置文件错误、端口冲突或依赖项缺失等。排查时应首先检查…

【C++ 区间位运算】3209. 子数组按位与值为 K 的数目|2050

本文涉及知识点 位运算、状态压缩、枚举子集汇总 LeetCode3209. 子数组按位与值为 K 的数目 给你一个整数数组 nums 和一个整数 k &#xff0c;请你返回 nums 中有多少个子数组 满足&#xff1a;子数组中所有元素按位 AND 的结果为 k 。 示例 1&#xff1a; 输入&#xff1a…

cf集合***

当周cf集合&#xff0c;我也不知道是不是当周的了&#xff0c;麻了&#xff0c;下下周争取写到e补f C. Kevin and Puzzle&#xff08;999&#xff09; 题解&#xff1a;一眼动态规划&#xff0c;但是具体这个状态应该如何传递呢&#xff1f; 关键点&#xff1a;撒谎的人不相…

算法随笔_35: 每日温度

上一篇:算法随笔_34: 最后一个单词的长度-CSDN博客 题目描述如下: 给定一个整数数组 temperatures &#xff0c;表示每天的温度&#xff0c;返回一个数组 answer &#xff0c;其中 answer[i] 是指对于第 i 天&#xff0c;下一个更高温度出现在几天后。如果气温在这之后都不会升…

arm-linux平台、rk3288 SDL移植

一、所需环境资源 1、arm-linux交叉编译器&#xff0c;这里使用的是gcc-linaro-6.3.1 2、linux交叉编译环境&#xff0c;这里使用的是Ubuntu 20.04 3、sdl2源码 https://github.com/libsdl-org/SDL/archive/refs/tags/release-2.30.11.tar.gz 二、代码编译 1、解压sdl2源码…