mirror of
https://github.com/orbbec/OrbbecSDK_ROS2.git
synced 2026-10-04 20:17:47 +08:00
deploy: fd13aba31f
This commit is contained in:
@@ -0,0 +1,151 @@
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="zh-CN" data-content_root="../../../">
|
||||
<head>
|
||||
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>应用指南 — OrbbecSDK V2 ROS2 封装 文档</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=b86133f3" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/theme.css?v=e59714d7" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/custom.css?v=63de077d" />
|
||||
|
||||
|
||||
<link rel="shortcut icon" href="../../../_static/orbbec_footerlogo_3d_world.svg"/>
|
||||
<script src="../../../_static/jquery.js?v=5d32c60e"></script>
|
||||
<script src="../../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=7d86a446"></script>
|
||||
<script src="../../../_static/doctools.js?v=9bcbadda"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
<script src="../../../_static/translations.js?v=beaddf03"></script>
|
||||
<script src="../../../_static/js/theme.js"></script>
|
||||
<link rel="index" title="索引" href="../../../genindex.html" />
|
||||
<link rel="search" title="搜索" href="../../../search.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../../index.html" class="icon icon-home">
|
||||
OrbbecSDK V2 ROS2 封装
|
||||
</a>
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="搜索文档" aria-label="搜索文档" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="导航菜单">
|
||||
<!-- Local TOC -->
|
||||
<div class="local-toc"><ul>
|
||||
<li><a class="reference internal" href="#">应用指南</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="移动版导航菜单" >
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../../index.html">OrbbecSDK V2 ROS2 封装</a>
|
||||
</nav>
|
||||
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content">
|
||||
<div role="navigation" aria-label="页面导航">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
||||
<li class="breadcrumb-item active">应用指南</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
<a href="../../../_sources/source/camera_devices/4_application_guide/application_guide.rst.txt" rel="nofollow"> 查看页面源码</a>
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<div class="lang-switch" style="margin:0 0 1em 0; font-size:0.9em;"><a class="lang-other" href="#">English</a> | <a class="lang-current" href="#">中文</a></div><script>(function(){var p=window.location.pathname;var isEn=p.indexOf('/en/')!==-1 && p.indexOf('/zh/')===-1;if(p.indexOf('/zh/')!==-1) isEn=false;var other = isEn ? p.replace(/\/en\//, '/zh/') : p.replace(/\/zh\//, '/en/');var current=p;var sw=document.querySelector('.lang-switch'); if(!sw) return;var o=sw.querySelector('.lang-other'); var c=sw.querySelector('.lang-current');if(isEn){ o.textContent='中文'; c.textContent='English'; } else { o.textContent='English'; c.textContent='中文'; }o.setAttribute('href', other); c.setAttribute('href', current);})();</script><section id="id1">
|
||||
<h1>应用指南<a class="headerlink" href="#id1" title="Link to this heading"></a></h1>
|
||||
<p>本章介绍使用SDK进行应用开发,包括启动参数配置、ROS2服务和话题使用。</p>
|
||||
<div class="toctree-wrapper compound">
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="launch_parameters.html">启动参数</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="launch_parameters.html#id2">核心与数据流配置</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="launch_parameters.html#id3">传感器控制</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="launch_parameters.html#id7">设备、同步与高级功能</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="launch_parameters.html#id13">基础与通用参数</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="launch_parameters.html#imu">IMU</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="launch_parameters.html#id18">深度滤波器</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="services.html">所有可用的相机控制服务</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="services.html#id2">数据流控制</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="services.html#id7">传感器与发射器控制</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="services.html#id8">设备信息与管理</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="services.html#id9">同步与触发</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="services.html#id10">深度滤波器配置</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="services.html#id11">数据捕获与校准管理</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="services.html#id12">点云下采样</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="topics.html">可用话题</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="topics.html#id2">图像流</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="topics.html#id3">点云话题</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="topics.html#imu">IMU话题</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="topics.html#id4">设备状态与诊断</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="coordinate_and_tf.html">坐标系和 TF 变换</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="coordinate_and_tf.html#id1">相机传感器结构</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="coordinate_and_tf.html#abtf">从坐标系A到坐标系B的TF变换:</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="coordinate_and_tf.html#ros2-vs">ROS2机器人坐标系 vs 相机光学坐标系</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="coordinate_and_tf.html#ros2-tf">ROS2 TF工具的使用</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="coordinate_and_tf.html#id3">相机TF计算和发布机制</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="compressed_image.html">压缩图像</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="point_cloud.html">在ROS 2中启用和可视化点云</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="point_cloud.html#id1">启用深度点云</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="point_cloud.html#id3">启用彩色点云</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>© 版权所有 2025, 奥比中光科技集团股份有限公司 www.orbbec.com.。
|
||||
<span class="lastupdated">最后更新于 2026年01月04日 01:12:35.
|
||||
</span></p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,112 @@
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="zh-CN" data-content_root="../../../">
|
||||
<head>
|
||||
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>压缩图像 — OrbbecSDK V2 ROS2 封装 文档</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=b86133f3" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/theme.css?v=e59714d7" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/custom.css?v=63de077d" />
|
||||
|
||||
|
||||
<link rel="shortcut icon" href="../../../_static/orbbec_footerlogo_3d_world.svg"/>
|
||||
<script src="../../../_static/jquery.js?v=5d32c60e"></script>
|
||||
<script src="../../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=7d86a446"></script>
|
||||
<script src="../../../_static/doctools.js?v=9bcbadda"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
<script src="../../../_static/translations.js?v=beaddf03"></script>
|
||||
<script src="../../../_static/js/theme.js"></script>
|
||||
<link rel="index" title="索引" href="../../../genindex.html" />
|
||||
<link rel="search" title="搜索" href="../../../search.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../../index.html" class="icon icon-home">
|
||||
OrbbecSDK V2 ROS2 封装
|
||||
</a>
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="搜索文档" aria-label="搜索文档" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="导航菜单">
|
||||
<!-- Local TOC -->
|
||||
<div class="local-toc"><ul>
|
||||
<li><a class="reference internal" href="#">压缩图像</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="移动版导航菜单" >
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../../index.html">OrbbecSDK V2 ROS2 封装</a>
|
||||
</nav>
|
||||
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content">
|
||||
<div role="navigation" aria-label="页面导航">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
||||
<li class="breadcrumb-item active">压缩图像</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
<a href="../../../_sources/source/camera_devices/4_application_guide/compressed_image.md.txt" rel="nofollow"> 查看页面源码</a>
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<div class="lang-switch" style="margin:0 0 1em 0; font-size:0.9em;"><a class="lang-other" href="#">English</a> | <a class="lang-current" href="#">中文</a></div><script>(function(){var p=window.location.pathname;var isEn=p.indexOf('/en/')!==-1 && p.indexOf('/zh/')===-1;if(p.indexOf('/zh/')!==-1) isEn=false;var other = isEn ? p.replace(/\/en\//, '/zh/') : p.replace(/\/zh\//, '/en/');var current=p;var sw=document.querySelector('.lang-switch'); if(!sw) return;var o=sw.querySelector('.lang-other'); var c=sw.querySelector('.lang-current');if(isEn){ o.textContent='中文'; c.textContent='English'; } else { o.textContent='English'; c.textContent='中文'; }o.setAttribute('href', other); c.setAttribute('href', current);})();</script><section id="id1">
|
||||
<h1>压缩图像<a class="headerlink" href="#id1" title="Link to this heading"></a></h1>
|
||||
<p>您可以使用 <code class="docutils literal notranslate"><span class="pre">image_transport</span></code> 通过 <code class="docutils literal notranslate"><span class="pre">jpeg</span></code> 压缩图像。以下是使用示例:</p>
|
||||
<p>要访问压缩的彩色图像,可以使用以下命令:</p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>topic<span class="w"> </span><span class="nb">echo</span><span class="w"> </span>/camera/color/image_raw/compressed<span class="w"> </span>--no-arr
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>此命令将允许您从指定话题接收压缩的彩色图像。</p>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>© 版权所有 2025, 奥比中光科技集团股份有限公司 www.orbbec.com.。
|
||||
<span class="lastupdated">最后更新于 2026年01月04日 01:12:35.
|
||||
</span></p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,468 @@
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="zh-CN" data-content_root="../../../">
|
||||
<head>
|
||||
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>坐标系和 TF 变换 — OrbbecSDK V2 ROS2 封装 文档</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=b86133f3" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/theme.css?v=e59714d7" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/custom.css?v=63de077d" />
|
||||
|
||||
|
||||
<link rel="shortcut icon" href="../../../_static/orbbec_footerlogo_3d_world.svg"/>
|
||||
<script src="../../../_static/jquery.js?v=5d32c60e"></script>
|
||||
<script src="../../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=7d86a446"></script>
|
||||
<script src="../../../_static/doctools.js?v=9bcbadda"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
<script src="../../../_static/translations.js?v=beaddf03"></script>
|
||||
<script src="../../../_static/js/theme.js"></script>
|
||||
<link rel="index" title="索引" href="../../../genindex.html" />
|
||||
<link rel="search" title="搜索" href="../../../search.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../../index.html" class="icon icon-home">
|
||||
OrbbecSDK V2 ROS2 封装
|
||||
</a>
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="搜索文档" aria-label="搜索文档" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="导航菜单">
|
||||
<!-- Local TOC -->
|
||||
<div class="local-toc"><ul>
|
||||
<li><a class="reference internal" href="#">坐标系和 TF 变换</a><ul>
|
||||
<li><a class="reference internal" href="#id1">相机传感器结构</a></li>
|
||||
<li><a class="reference internal" href="#abtf">从坐标系A到坐标系B的TF变换:</a></li>
|
||||
<li><a class="reference internal" href="#ros2-vs">ROS2机器人坐标系 vs 相机光学坐标系</a></li>
|
||||
<li><a class="reference internal" href="#ros2-tf">ROS2 TF工具的使用</a><ul>
|
||||
<li><a class="reference internal" href="#id2">查看TF树结构</a></li>
|
||||
<li><a class="reference internal" href="#rviz2tf">使用rviz2可视化TF树</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#id3">相机TF计算和发布机制</a><ul>
|
||||
<li><a class="reference internal" href="#obcameranode-calcandpublishstatictransform">核心函数:OBCameraNode::calcAndPublishStaticTransform()</a></li>
|
||||
<li><a class="reference internal" href="#id4">函数解析</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="移动版导航菜单" >
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../../index.html">OrbbecSDK V2 ROS2 封装</a>
|
||||
</nav>
|
||||
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content">
|
||||
<div role="navigation" aria-label="页面导航">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
||||
<li class="breadcrumb-item active">坐标系和 TF 变换</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
<a href="../../../_sources/source/camera_devices/4_application_guide/coordinate_and_tf.md.txt" rel="nofollow"> 查看页面源码</a>
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<div class="lang-switch" style="margin:0 0 1em 0; font-size:0.9em;"><a class="lang-other" href="#">English</a> | <a class="lang-current" href="#">中文</a></div><script>(function(){var p=window.location.pathname;var isEn=p.indexOf('/en/')!==-1 && p.indexOf('/zh/')===-1;if(p.indexOf('/zh/')!==-1) isEn=false;var other = isEn ? p.replace(/\/en\//, '/zh/') : p.replace(/\/zh\//, '/en/');var current=p;var sw=document.querySelector('.lang-switch'); if(!sw) return;var o=sw.querySelector('.lang-other'); var c=sw.querySelector('.lang-current');if(isEn){ o.textContent='中文'; c.textContent='English'; } else { o.textContent='English'; c.textContent='中文'; }o.setAttribute('href', other); c.setAttribute('href', current);})();</script><section id="tf">
|
||||
<h1>坐标系和 TF 变换<a class="headerlink" href="#tf" title="Link to this heading"></a></h1>
|
||||
<section id="id1">
|
||||
<h2>相机传感器结构<a class="headerlink" href="#id1" title="Link to this heading"></a></h2>
|
||||
<p><img alt="module in rviz2" src="../../../_images/image3.png" /></p>
|
||||
<p><img alt="module in rviz2" src="../../../_images/image1.png" /></p>
|
||||
</section>
|
||||
<section id="abtf">
|
||||
<h2>从坐标系A到坐标系B的TF变换:<a class="headerlink" href="#abtf" title="Link to this heading"></a></h2>
|
||||
<p>在Orbbec相机中,原点(0,0,0)取自camera_link位置。</p>
|
||||
<p>可以使用以下命令查看相机的URDF模型和坐标系结构:</p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>launch<span class="w"> </span>orbbec_description<span class="w"> </span>view_model.launch.py<span class="w"> </span>model:<span class="o">=</span>gemini_335_336.urdf.xacro
|
||||
</pre></div>
|
||||
</div>
|
||||
<p><img alt="rviz2中的模块" src="../../../_images/image2.png" /></p>
|
||||
</section>
|
||||
<section id="ros2-vs">
|
||||
<h2>ROS2机器人坐标系 vs 相机光学坐标系<a class="headerlink" href="#ros2-vs" title="Link to this heading"></a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>视角:</p>
|
||||
<ul>
|
||||
<li><p>想象我们站在相机后面,向前看。</p></li>
|
||||
<li><p>在讨论坐标、左右红外、传感器位置等时,始终使用此视角。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<p><img alt="ROS2和相机坐标系统" src="../../../_images/image0.png" /></p>
|
||||
<ul class="simple">
|
||||
<li><p>ROS2坐标系:(X: 向前,Y: 向左,Z: 向上)</p></li>
|
||||
<li><p>相机光学坐标系:(X: 向右,Y: 向下,Z: 向前)</p></li>
|
||||
<li><p>我们封装器话题中发布的所有数据都是直接从相机传感器获取的光学数据。</p></li>
|
||||
<li><p>静态和动态TF话题发布光学坐标系和ROS坐标系,使用户能够在两个坐标系之间转换。</p></li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="ros2-tf">
|
||||
<h2>ROS2 TF工具的使用<a class="headerlink" href="#ros2-tf" title="Link to this heading"></a></h2>
|
||||
<section id="id2">
|
||||
<h3>查看TF树结构<a class="headerlink" href="#id2" title="Link to this heading"></a></h3>
|
||||
<p>可以使用以下ROS2命令来打印和可视化相机包发布的TF树:</p>
|
||||
<p><strong>打印所有TF关系:</strong></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>run<span class="w"> </span>tf2_tools<span class="w"> </span>view_frames
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>这个命令会生成一个 <code class="docutils literal notranslate"><span class="pre">frames.pdf</span></code>文件,展示所有frame之间的层级关系。</p>
|
||||
<p><img alt="image-20251027111351870" src="../../../_images/image4.png" /></p>
|
||||
<p><strong>查看所有正在发布的TF信息:</strong></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>topic<span class="w"> </span><span class="nb">echo</span><span class="w"> </span>/tf_static
|
||||
</pre></div>
|
||||
</div>
|
||||
<p><strong>查看指定两个frame之间的TF变换关系:</strong></p>
|
||||
<p>使用以下命令可以查看两个特定frame之间的变换关系:</p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>run<span class="w"> </span>tf2_ros<span class="w"> </span>tf2_echo<span class="w"> </span><span class="o">[</span>source_frame<span class="o">]</span><span class="w"> </span><span class="o">[</span>target_frame<span class="o">]</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>例如,查看从 <code class="docutils literal notranslate"><span class="pre">camera_link</span></code> 到 <code class="docutils literal notranslate"><span class="pre">camera_depth_optical_frame</span></code> 的变换:</p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>run<span class="w"> </span>tf2_ros<span class="w"> </span>tf2_echo<span class="w"> </span>camera_link<span class="w"> </span>camera_depth_optical_frame
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>此命令会持续输出两个frame之间的实时变换信息,包括:</p>
|
||||
<ul class="simple">
|
||||
<li><p>平移 (Translation):x、y、z 坐标(单位:米)</p></li>
|
||||
<li><p>旋转 (Rotation):四元数 (x, y, z, w)</p></li>
|
||||
<li><p>欧拉角 (RPY):以欧拉角形式表示的旋转</p></li>
|
||||
<li><p>齐次变换矩阵 (Transform Matrix):包含旋转和平移信息的 4×4 矩阵</p></li>
|
||||
</ul>
|
||||
<p>示例输出:</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">At</span> <span class="n">time</span> <span class="mf">0.0</span>
|
||||
<span class="o">-</span> <span class="n">Translation</span><span class="p">:</span> <span class="p">[</span><span class="mf">0.000</span><span class="p">,</span> <span class="mf">0.000</span><span class="p">,</span> <span class="mf">0.000</span><span class="p">]</span>
|
||||
<span class="o">-</span> <span class="n">Rotation</span><span class="p">:</span> <span class="ow">in</span> <span class="n">Quaternion</span> <span class="p">[</span><span class="o">-</span><span class="mf">0.500</span><span class="p">,</span> <span class="mf">0.500</span><span class="p">,</span> <span class="o">-</span><span class="mf">0.500</span><span class="p">,</span> <span class="mf">0.500</span><span class="p">]</span>
|
||||
<span class="o">-</span> <span class="n">Rotation</span><span class="p">:</span> <span class="ow">in</span> <span class="n">RPY</span> <span class="p">(</span><span class="n">radian</span><span class="p">)</span> <span class="p">[</span><span class="o">-</span><span class="mf">1.571</span><span class="p">,</span> <span class="o">-</span><span class="mf">0.000</span><span class="p">,</span> <span class="o">-</span><span class="mf">1.571</span><span class="p">]</span>
|
||||
<span class="o">-</span> <span class="n">Rotation</span><span class="p">:</span> <span class="ow">in</span> <span class="n">RPY</span> <span class="p">(</span><span class="n">degree</span><span class="p">)</span> <span class="p">[</span><span class="o">-</span><span class="mf">90.000</span><span class="p">,</span> <span class="o">-</span><span class="mf">0.000</span><span class="p">,</span> <span class="o">-</span><span class="mf">90.000</span><span class="p">]</span>
|
||||
<span class="o">-</span> <span class="n">Matrix</span><span class="p">:</span>
|
||||
<span class="mf">0.000</span> <span class="mf">0.000</span> <span class="mf">1.000</span> <span class="mf">0.000</span>
|
||||
<span class="o">-</span><span class="mf">1.000</span> <span class="mf">0.000</span> <span class="mf">0.000</span> <span class="mf">0.000</span>
|
||||
<span class="mf">0.000</span> <span class="o">-</span><span class="mf">1.000</span> <span class="mf">0.000</span> <span class="mf">0.000</span>
|
||||
<span class="mf">0.000</span> <span class="mf">0.000</span> <span class="mf">0.000</span> <span class="mf">1.000</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="rviz2tf">
|
||||
<h3>使用rviz2可视化TF树<a class="headerlink" href="#rviz2tf" title="Link to this heading"></a></h3>
|
||||
<p>在rviz2中可以实时可视化TF树结构和坐标系的相对位置:</p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>rviz2
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>在rviz2中:</p>
|
||||
<ul class="simple">
|
||||
<li><p>添加 <code class="docutils literal notranslate"><span class="pre">TF</span></code>显示插件</p></li>
|
||||
<li><p>配置固定框架(Fixed Frame)为 <code class="docutils literal notranslate"><span class="pre">camera_link</span></code>或 <code class="docutils literal notranslate"><span class="pre">camera_depth_optical_frame</span></code></p></li>
|
||||
<li><p>选择显示的TF框架树</p></li>
|
||||
</ul>
|
||||
<p><img alt="image-20251027140652727" src="../../../_images/image5.png" /></p>
|
||||
</section>
|
||||
</section>
|
||||
<section id="id3">
|
||||
<h2>相机TF计算和发布机制<a class="headerlink" href="#id3" title="Link to this heading"></a></h2>
|
||||
<section id="obcameranode-calcandpublishstatictransform">
|
||||
<h3>核心函数:<a class="reference external" href="https://github.com/orbbec/OrbbecSDK_ROS2/blob/166c35b4ea211c60265ca9b38b1b15519d1ea3dd/orbbec_camera/src/ob_camera_node.cpp#L3475">OBCameraNode::calcAndPublishStaticTransform()</a><a class="headerlink" href="#obcameranode-calcandpublishstatictransform" title="Link to this heading"></a></h3>
|
||||
<p>相机节点通过此函数计算和发布所有传感器之间的静态转换关系。</p>
|
||||
<div class="highlight-cpp notranslate"><div class="highlight"><pre><span></span><span class="kt">void</span><span class="w"> </span><span class="nf">OBCameraNode::calcAndPublishStaticTransform</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="n">tf2</span><span class="o">::</span><span class="n">Quaternion</span><span class="w"> </span><span class="n">quaternion_optical</span><span class="p">,</span><span class="w"> </span><span class="n">zero_rot</span><span class="p">;</span>
|
||||
<span class="w"> </span><span class="n">zero_rot</span><span class="p">.</span><span class="n">setRPY</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span><span class="w"> </span><span class="mf">0.0</span><span class="p">,</span><span class="w"> </span><span class="mf">0.0</span><span class="p">);</span>
|
||||
<span class="w"> </span><span class="n">quaternion_optical</span><span class="p">.</span><span class="n">setRPY</span><span class="p">(</span><span class="o">-</span><span class="n">M_PI</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mf">0.0</span><span class="p">,</span><span class="w"> </span><span class="o">-</span><span class="n">M_PI</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span><span class="p">);</span>
|
||||
<span class="w"> </span><span class="n">tf2</span><span class="o">::</span><span class="n">Vector3</span><span class="w"> </span><span class="n">zero_trans</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>
|
||||
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">base_stream_profile</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">stream_profile_</span><span class="p">[</span><span class="n">base_stream_</span><span class="p">];</span>
|
||||
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">device_info</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">device_</span><span class="o">-></span><span class="n">getDeviceInfo</span><span class="p">();</span>
|
||||
<span class="w"> </span><span class="n">CHECK_NOTNULL</span><span class="p">(</span><span class="n">device_info</span><span class="p">);</span>
|
||||
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">pid</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">device_info</span><span class="o">-></span><span class="n">getPid</span><span class="p">();</span>
|
||||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">base_stream_profile</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="n">RCLCPP_ERROR_STREAM</span><span class="p">(</span><span class="n">logger_</span><span class="p">,</span><span class="w"> </span><span class="s">"Failed to get base stream profile"</span><span class="p">);</span>
|
||||
<span class="w"> </span><span class="k">return</span><span class="p">;</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="w"> </span><span class="n">CHECK_NOTNULL</span><span class="p">(</span><span class="n">base_stream_profile</span><span class="p">.</span><span class="n">get</span><span class="p">());</span>
|
||||
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="o">&</span><span class="n">item</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="n">stream_profile_</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">stream_index</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">item</span><span class="p">.</span><span class="n">first</span><span class="p">;</span>
|
||||
|
||||
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">stream_profile</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">item</span><span class="p">.</span><span class="n">second</span><span class="p">;</span>
|
||||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">stream_profile</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="k">continue</span><span class="p">;</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="w"> </span><span class="n">OBExtrinsic</span><span class="w"> </span><span class="n">ex</span><span class="p">;</span>
|
||||
<span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="n">ex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">stream_profile</span><span class="o">-></span><span class="n">getExtrinsicTo</span><span class="p">(</span><span class="n">base_stream_profile</span><span class="p">);</span>
|
||||
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="n">ob</span><span class="o">::</span><span class="n">Error</span><span class="w"> </span><span class="o">&</span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="n">RCLCPP_ERROR_STREAM</span><span class="p">(</span><span class="n">logger_</span><span class="p">,</span><span class="w"> </span><span class="s">"Failed to get "</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">stream_name_</span><span class="p">[</span><span class="n">stream_index</span><span class="p">]</span>
|
||||
<span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">" extrinsic: "</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">e</span><span class="p">.</span><span class="n">getMessage</span><span class="p">());</span>
|
||||
<span class="w"> </span><span class="n">ex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">OBExtrinsic</span><span class="p">({{</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">},</span><span class="w"> </span><span class="p">{</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">}});</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
|
||||
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">Q</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">rotationMatrixToQuaternion</span><span class="p">(</span><span class="n">ex</span><span class="p">.</span><span class="n">rot</span><span class="p">);</span>
|
||||
<span class="w"> </span><span class="n">Q</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">quaternion_optical</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">Q</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">quaternion_optical</span><span class="p">.</span><span class="n">inverse</span><span class="p">();</span>
|
||||
<span class="w"> </span><span class="n">tf2</span><span class="o">::</span><span class="n">Vector3</span><span class="w"> </span><span class="n">trans</span><span class="p">(</span><span class="n">ex</span><span class="p">.</span><span class="n">trans</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="w"> </span><span class="n">ex</span><span class="p">.</span><span class="n">trans</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span><span class="w"> </span><span class="n">ex</span><span class="p">.</span><span class="n">trans</span><span class="p">[</span><span class="mi">2</span><span class="p">]);</span>
|
||||
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">timestamp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">node_</span><span class="o">-></span><span class="n">now</span><span class="p">();</span>
|
||||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">stream_index</span><span class="p">.</span><span class="n">first</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">base_stream_</span><span class="p">.</span><span class="n">first</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">stream_index</span><span class="p">.</span><span class="n">first</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">OB_STREAM_IR_RIGHT</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">base_stream_</span><span class="p">.</span><span class="n">first</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">OB_STREAM_DEPTH</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="n">trans</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">abs</span><span class="p">(</span><span class="n">trans</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span><span class="w"> </span><span class="c1">// because left and right ir calibration is error</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="w"> </span><span class="n">publishStaticTF</span><span class="p">(</span><span class="n">timestamp</span><span class="p">,</span><span class="w"> </span><span class="n">trans</span><span class="p">,</span><span class="w"> </span><span class="n">Q</span><span class="p">,</span><span class="w"> </span><span class="n">frame_id_</span><span class="p">[</span><span class="n">base_stream_</span><span class="p">],</span><span class="w"> </span><span class="n">frame_id_</span><span class="p">[</span><span class="n">stream_index</span><span class="p">]);</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="w"> </span><span class="n">publishStaticTF</span><span class="p">(</span><span class="n">timestamp</span><span class="p">,</span><span class="w"> </span><span class="n">zero_trans</span><span class="p">,</span><span class="w"> </span><span class="n">quaternion_optical</span><span class="p">,</span><span class="w"> </span><span class="n">frame_id_</span><span class="p">[</span><span class="n">stream_index</span><span class="p">],</span>
|
||||
<span class="w"> </span><span class="n">optical_frame_id_</span><span class="p">[</span><span class="n">stream_index</span><span class="p">]);</span>
|
||||
<span class="w"> </span><span class="n">RCLCPP_INFO_STREAM</span><span class="p">(</span><span class="n">logger_</span><span class="p">,</span><span class="w"> </span><span class="s">"Publishing static transform from "</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">stream_name_</span><span class="p">[</span><span class="n">stream_index</span><span class="p">]</span>
|
||||
<span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">" to "</span>
|
||||
<span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">stream_name_</span><span class="p">[</span><span class="n">base_stream_</span><span class="p">]);</span>
|
||||
<span class="w"> </span><span class="n">RCLCPP_INFO_STREAM</span><span class="p">(</span><span class="n">logger_</span><span class="p">,</span><span class="w"> </span><span class="s">"Translation "</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">trans</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">", "</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">trans</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">", "</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">trans</span><span class="p">[</span><span class="mi">2</span><span class="p">]);</span>
|
||||
<span class="w"> </span><span class="n">RCLCPP_INFO_STREAM</span><span class="p">(</span><span class="n">logger_</span><span class="p">,</span><span class="w"> </span><span class="s">"Rotation "</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">Q</span><span class="p">.</span><span class="n">getX</span><span class="p">()</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">", "</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">Q</span><span class="p">.</span><span class="n">getY</span><span class="p">()</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">", "</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">Q</span><span class="p">.</span><span class="n">getZ</span><span class="p">()</span>
|
||||
<span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">", "</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">Q</span><span class="p">.</span><span class="n">getW</span><span class="p">());</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
|
||||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">((</span><span class="n">pid</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">FEMTO_BOLT_PID</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="n">pid</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">FEMTO_MEGA_PID</span><span class="p">)</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">enable_stream_</span><span class="p">[</span><span class="n">DEPTH</span><span class="p">]</span><span class="w"> </span><span class="o">&&</span>
|
||||
<span class="w"> </span><span class="n">enable_stream_</span><span class="p">[</span><span class="n">COLOR</span><span class="p">]</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">enable_publish_extrinsic_</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="c1">// calc depth to color</span>
|
||||
|
||||
<span class="w"> </span><span class="n">CHECK_NOTNULL</span><span class="p">(</span><span class="n">stream_profile_</span><span class="p">[</span><span class="n">COLOR</span><span class="p">]);</span>
|
||||
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">depth_to_color_extrinsics</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">base_stream_profile</span><span class="o">-></span><span class="n">getExtrinsicTo</span><span class="p">(</span><span class="n">stream_profile_</span><span class="p">[</span><span class="n">COLOR</span><span class="p">]);</span>
|
||||
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">Q</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">rotationMatrixToQuaternion</span><span class="p">(</span><span class="n">depth_to_color_extrinsics</span><span class="p">.</span><span class="n">rot</span><span class="p">);</span>
|
||||
<span class="w"> </span><span class="n">Q</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">quaternion_optical</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">Q</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">quaternion_optical</span><span class="p">.</span><span class="n">inverse</span><span class="p">();</span>
|
||||
<span class="w"> </span><span class="n">publishStaticTF</span><span class="p">(</span><span class="n">node_</span><span class="o">-></span><span class="n">now</span><span class="p">(),</span><span class="w"> </span><span class="n">zero_trans</span><span class="p">,</span><span class="w"> </span><span class="n">Q</span><span class="p">,</span><span class="w"> </span><span class="n">camera_link_frame_id_</span><span class="p">,</span><span class="w"> </span><span class="n">frame_id_</span><span class="p">[</span><span class="n">base_stream_</span><span class="p">]);</span>
|
||||
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="n">publishStaticTF</span><span class="p">(</span><span class="n">node_</span><span class="o">-></span><span class="n">now</span><span class="p">(),</span><span class="w"> </span><span class="n">zero_trans</span><span class="p">,</span><span class="w"> </span><span class="n">zero_rot</span><span class="p">,</span><span class="w"> </span><span class="n">camera_link_frame_id_</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="n">frame_id_</span><span class="p">[</span><span class="n">base_stream_</span><span class="p">]);</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
|
||||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">enable_stream_</span><span class="p">[</span><span class="n">DEPTH</span><span class="p">]</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">enable_stream_</span><span class="p">[</span><span class="n">COLOR</span><span class="p">]</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">enable_publish_extrinsic_</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">frame_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"depth_to_color_extrinsics"</span><span class="p">;</span>
|
||||
<span class="w"> </span><span class="n">OBExtrinsic</span><span class="w"> </span><span class="n">ex</span><span class="p">;</span>
|
||||
<span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="n">ex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">base_stream_profile</span><span class="o">-></span><span class="n">getExtrinsicTo</span><span class="p">(</span><span class="n">stream_profile_</span><span class="p">[</span><span class="n">COLOR</span><span class="p">]);</span>
|
||||
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="n">ob</span><span class="o">::</span><span class="n">Error</span><span class="w"> </span><span class="o">&</span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="n">RCLCPP_ERROR_STREAM</span><span class="p">(</span><span class="n">logger_</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="s">"Failed to get "</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">frame_id</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">" extrinsic: "</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">e</span><span class="p">.</span><span class="n">getMessage</span><span class="p">());</span>
|
||||
<span class="w"> </span><span class="n">ex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">OBExtrinsic</span><span class="p">({{</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">},</span><span class="w"> </span><span class="p">{</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">}});</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="w"> </span><span class="n">depth_to_other_extrinsics_</span><span class="p">[</span><span class="n">COLOR</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ex</span><span class="p">;</span>
|
||||
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">ex_msg</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">obExtrinsicsToMsg</span><span class="p">(</span><span class="n">ex</span><span class="p">,</span><span class="w"> </span><span class="n">frame_id</span><span class="p">);</span>
|
||||
<span class="w"> </span><span class="n">CHECK_NOTNULL</span><span class="p">(</span><span class="n">depth_to_other_extrinsics_publishers_</span><span class="p">[</span><span class="n">COLOR</span><span class="p">]);</span>
|
||||
<span class="w"> </span><span class="n">depth_to_other_extrinsics_publishers_</span><span class="p">[</span><span class="n">COLOR</span><span class="p">]</span><span class="o">-></span><span class="n">publish</span><span class="p">(</span><span class="n">ex_msg</span><span class="p">);</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
|
||||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">enable_stream_</span><span class="p">[</span><span class="n">DEPTH</span><span class="p">]</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">enable_stream_</span><span class="p">[</span><span class="n">INFRA0</span><span class="p">]</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">enable_publish_extrinsic_</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">frame_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"depth_to_ir_extrinsics"</span><span class="p">;</span>
|
||||
<span class="w"> </span><span class="n">OBExtrinsic</span><span class="w"> </span><span class="n">ex</span><span class="p">;</span>
|
||||
<span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="n">ex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">base_stream_profile</span><span class="o">-></span><span class="n">getExtrinsicTo</span><span class="p">(</span><span class="n">stream_profile_</span><span class="p">[</span><span class="n">INFRA0</span><span class="p">]);</span>
|
||||
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="n">ob</span><span class="o">::</span><span class="n">Error</span><span class="w"> </span><span class="o">&</span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="n">RCLCPP_ERROR_STREAM</span><span class="p">(</span><span class="n">logger_</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="s">"Failed to get "</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">frame_id</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">" extrinsic: "</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">e</span><span class="p">.</span><span class="n">getMessage</span><span class="p">());</span>
|
||||
<span class="w"> </span><span class="n">ex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">OBExtrinsic</span><span class="p">({{</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">},</span><span class="w"> </span><span class="p">{</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">}});</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="w"> </span><span class="n">depth_to_other_extrinsics_</span><span class="p">[</span><span class="n">INFRA0</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ex</span><span class="p">;</span>
|
||||
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">ex_msg</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">obExtrinsicsToMsg</span><span class="p">(</span><span class="n">ex</span><span class="p">,</span><span class="w"> </span><span class="n">frame_id</span><span class="p">);</span>
|
||||
<span class="w"> </span><span class="n">CHECK_NOTNULL</span><span class="p">(</span><span class="n">depth_to_other_extrinsics_publishers_</span><span class="p">[</span><span class="n">INFRA0</span><span class="p">]);</span>
|
||||
<span class="w"> </span><span class="n">depth_to_other_extrinsics_publishers_</span><span class="p">[</span><span class="n">INFRA0</span><span class="p">]</span><span class="o">-></span><span class="n">publish</span><span class="p">(</span><span class="n">ex_msg</span><span class="p">);</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">enable_stream_</span><span class="p">[</span><span class="n">DEPTH</span><span class="p">]</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">enable_stream_</span><span class="p">[</span><span class="n">INFRA1</span><span class="p">]</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">enable_publish_extrinsic_</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">frame_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"depth_to_left_ir_extrinsics"</span><span class="p">;</span>
|
||||
<span class="w"> </span><span class="n">OBExtrinsic</span><span class="w"> </span><span class="n">ex</span><span class="p">;</span>
|
||||
<span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="n">ex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">base_stream_profile</span><span class="o">-></span><span class="n">getExtrinsicTo</span><span class="p">(</span><span class="n">stream_profile_</span><span class="p">[</span><span class="n">INFRA1</span><span class="p">]);</span>
|
||||
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="n">ob</span><span class="o">::</span><span class="n">Error</span><span class="w"> </span><span class="o">&</span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="n">RCLCPP_ERROR_STREAM</span><span class="p">(</span><span class="n">logger_</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="s">"Failed to get "</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">frame_id</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">" extrinsic: "</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">e</span><span class="p">.</span><span class="n">getMessage</span><span class="p">());</span>
|
||||
<span class="w"> </span><span class="n">ex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">OBExtrinsic</span><span class="p">({{</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">},</span><span class="w"> </span><span class="p">{</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">}});</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="w"> </span><span class="n">depth_to_other_extrinsics_</span><span class="p">[</span><span class="n">INFRA1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ex</span><span class="p">;</span>
|
||||
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">ex_msg</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">obExtrinsicsToMsg</span><span class="p">(</span><span class="n">ex</span><span class="p">,</span><span class="w"> </span><span class="n">frame_id</span><span class="p">);</span>
|
||||
<span class="w"> </span><span class="n">CHECK_NOTNULL</span><span class="p">(</span><span class="n">depth_to_other_extrinsics_publishers_</span><span class="p">[</span><span class="n">INFRA1</span><span class="p">]);</span>
|
||||
<span class="w"> </span><span class="n">depth_to_other_extrinsics_publishers_</span><span class="p">[</span><span class="n">INFRA1</span><span class="p">]</span><span class="o">-></span><span class="n">publish</span><span class="p">(</span><span class="n">ex_msg</span><span class="p">);</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">enable_stream_</span><span class="p">[</span><span class="n">DEPTH</span><span class="p">]</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">enable_stream_</span><span class="p">[</span><span class="n">INFRA2</span><span class="p">]</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">enable_publish_extrinsic_</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">frame_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"depth_to_right_ir_extrinsics"</span><span class="p">;</span>
|
||||
<span class="w"> </span><span class="n">OBExtrinsic</span><span class="w"> </span><span class="n">ex</span><span class="p">;</span>
|
||||
<span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="n">ex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">base_stream_profile</span><span class="o">-></span><span class="n">getExtrinsicTo</span><span class="p">(</span><span class="n">stream_profile_</span><span class="p">[</span><span class="n">INFRA2</span><span class="p">]);</span>
|
||||
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="n">ob</span><span class="o">::</span><span class="n">Error</span><span class="w"> </span><span class="o">&</span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="n">RCLCPP_ERROR_STREAM</span><span class="p">(</span><span class="n">logger_</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="s">"Failed to get "</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">frame_id</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">" extrinsic: "</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">e</span><span class="p">.</span><span class="n">getMessage</span><span class="p">());</span>
|
||||
<span class="w"> </span><span class="n">ex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">OBExtrinsic</span><span class="p">({{</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">},</span><span class="w"> </span><span class="p">{</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">}});</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="w"> </span><span class="n">ex</span><span class="p">.</span><span class="n">trans</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">-</span><span class="n">std</span><span class="o">::</span><span class="n">abs</span><span class="p">(</span><span class="n">ex</span><span class="p">.</span><span class="n">trans</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span>
|
||||
<span class="w"> </span><span class="n">depth_to_other_extrinsics_</span><span class="p">[</span><span class="n">INFRA2</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ex</span><span class="p">;</span>
|
||||
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">ex_msg</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">obExtrinsicsToMsg</span><span class="p">(</span><span class="n">ex</span><span class="p">,</span><span class="w"> </span><span class="n">frame_id</span><span class="p">);</span>
|
||||
<span class="w"> </span><span class="n">CHECK_NOTNULL</span><span class="p">(</span><span class="n">depth_to_other_extrinsics_publishers_</span><span class="p">[</span><span class="n">INFRA2</span><span class="p">]);</span>
|
||||
<span class="w"> </span><span class="n">depth_to_other_extrinsics_publishers_</span><span class="p">[</span><span class="n">INFRA2</span><span class="p">]</span><span class="o">-></span><span class="n">publish</span><span class="p">(</span><span class="n">ex_msg</span><span class="p">);</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">enable_stream_</span><span class="p">[</span><span class="n">DEPTH</span><span class="p">]</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">enable_stream_</span><span class="p">[</span><span class="n">ACCEL</span><span class="p">]</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">enable_publish_extrinsic_</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">frame_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"depth_to_accel_extrinsics"</span><span class="p">;</span>
|
||||
<span class="w"> </span><span class="n">OBExtrinsic</span><span class="w"> </span><span class="n">ex</span><span class="p">;</span>
|
||||
<span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="n">ex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">base_stream_profile</span><span class="o">-></span><span class="n">getExtrinsicTo</span><span class="p">(</span><span class="n">stream_profile_</span><span class="p">[</span><span class="n">ACCEL</span><span class="p">]);</span>
|
||||
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="n">ob</span><span class="o">::</span><span class="n">Error</span><span class="w"> </span><span class="o">&</span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="n">RCLCPP_ERROR_STREAM</span><span class="p">(</span><span class="n">logger_</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="s">"Failed to get "</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">frame_id</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">" extrinsic: "</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">e</span><span class="p">.</span><span class="n">getMessage</span><span class="p">());</span>
|
||||
<span class="w"> </span><span class="n">ex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">OBExtrinsic</span><span class="p">({{</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">},</span><span class="w"> </span><span class="p">{</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">}});</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="w"> </span><span class="n">depth_to_other_extrinsics_</span><span class="p">[</span><span class="n">ACCEL</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ex</span><span class="p">;</span>
|
||||
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">ex_msg</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">obExtrinsicsToMsg</span><span class="p">(</span><span class="n">ex</span><span class="p">,</span><span class="w"> </span><span class="n">frame_id</span><span class="p">);</span>
|
||||
<span class="w"> </span><span class="n">CHECK_NOTNULL</span><span class="p">(</span><span class="n">depth_to_other_extrinsics_publishers_</span><span class="p">[</span><span class="n">ACCEL</span><span class="p">]);</span>
|
||||
<span class="w"> </span><span class="n">depth_to_other_extrinsics_publishers_</span><span class="p">[</span><span class="n">ACCEL</span><span class="p">]</span><span class="o">-></span><span class="n">publish</span><span class="p">(</span><span class="n">ex_msg</span><span class="p">);</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">enable_stream_</span><span class="p">[</span><span class="n">DEPTH</span><span class="p">]</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">enable_stream_</span><span class="p">[</span><span class="n">GYRO</span><span class="p">]</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">enable_publish_extrinsic_</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">frame_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"depth_to_gyro_extrinsics"</span><span class="p">;</span>
|
||||
<span class="w"> </span><span class="n">OBExtrinsic</span><span class="w"> </span><span class="n">ex</span><span class="p">;</span>
|
||||
<span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="n">ex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">base_stream_profile</span><span class="o">-></span><span class="n">getExtrinsicTo</span><span class="p">(</span><span class="n">stream_profile_</span><span class="p">[</span><span class="n">GYRO</span><span class="p">]);</span>
|
||||
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="n">ob</span><span class="o">::</span><span class="n">Error</span><span class="w"> </span><span class="o">&</span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="n">RCLCPP_ERROR_STREAM</span><span class="p">(</span><span class="n">logger_</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="s">"Failed to get "</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">frame_id</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">" extrinsic: "</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">e</span><span class="p">.</span><span class="n">getMessage</span><span class="p">());</span>
|
||||
<span class="w"> </span><span class="n">ex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">OBExtrinsic</span><span class="p">({{</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">},</span><span class="w"> </span><span class="p">{</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">}});</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="w"> </span><span class="n">depth_to_other_extrinsics_</span><span class="p">[</span><span class="n">GYRO</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ex</span><span class="p">;</span>
|
||||
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">ex_msg</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">obExtrinsicsToMsg</span><span class="p">(</span><span class="n">ex</span><span class="p">,</span><span class="w"> </span><span class="n">frame_id</span><span class="p">);</span>
|
||||
<span class="w"> </span><span class="n">CHECK_NOTNULL</span><span class="p">(</span><span class="n">depth_to_other_extrinsics_publishers_</span><span class="p">[</span><span class="n">GYRO</span><span class="p">]);</span>
|
||||
<span class="w"> </span><span class="n">depth_to_other_extrinsics_publishers_</span><span class="p">[</span><span class="n">GYRO</span><span class="p">]</span><span class="o">-></span><span class="n">publish</span><span class="p">(</span><span class="n">ex_msg</span><span class="p">);</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">enable_sync_output_accel_gyro_</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="n">tf2</span><span class="o">::</span><span class="n">Quaternion</span><span class="w"> </span><span class="n">zero_rot</span><span class="p">;</span>
|
||||
<span class="w"> </span><span class="n">zero_rot</span><span class="p">.</span><span class="n">setRPY</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span><span class="w"> </span><span class="mf">0.0</span><span class="p">,</span><span class="w"> </span><span class="mf">0.0</span><span class="p">);</span>
|
||||
<span class="w"> </span><span class="n">tf2</span><span class="o">::</span><span class="n">Vector3</span><span class="w"> </span><span class="n">zero_trans</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>
|
||||
<span class="w"> </span><span class="n">publishStaticTF</span><span class="p">(</span><span class="n">node_</span><span class="o">-></span><span class="n">now</span><span class="p">(),</span><span class="w"> </span><span class="n">zero_trans</span><span class="p">,</span><span class="w"> </span><span class="n">zero_rot</span><span class="p">,</span><span class="w"> </span><span class="n">optical_frame_id_</span><span class="p">[</span><span class="n">GYRO</span><span class="p">],</span>
|
||||
<span class="w"> </span><span class="n">accel_gyro_frame_id_</span><span class="p">);</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="id4">
|
||||
<h3>函数解析<a class="headerlink" href="#id4" title="Link to this heading"></a></h3>
|
||||
<p>下面是代码的详细解释:</p>
|
||||
<p><strong>四元数初始化与坐标系变换</strong></p>
|
||||
<div class="highlight-cpp notranslate"><div class="highlight"><pre><span></span><span class="n">tf2</span><span class="o">::</span><span class="n">Quaternion</span><span class="w"> </span><span class="n">quaternion_optical</span><span class="p">,</span><span class="w"> </span><span class="n">zero_rot</span><span class="p">;</span>
|
||||
<span class="n">zero_rot</span><span class="p">.</span><span class="n">setRPY</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span><span class="w"> </span><span class="mf">0.0</span><span class="p">,</span><span class="w"> </span><span class="mf">0.0</span><span class="p">);</span>
|
||||
<span class="n">quaternion_optical</span><span class="p">.</span><span class="n">setRPY</span><span class="p">(</span><span class="o">-</span><span class="n">M_PI</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mf">0.0</span><span class="p">,</span><span class="w"> </span><span class="o">-</span><span class="n">M_PI</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span><span class="p">);</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">quaternion_optical</span></code>:定义光学坐标系到ROS标准坐标系的旋转变换(90度旋转)</p></li>
|
||||
<li><p>这个旋转将相机光学坐标系(X右、Y下、Z前)转换为ROS标准坐标系(X前、Y左、Z上)</p></li>
|
||||
</ul>
|
||||
<p><strong>获取设备信息与基准流</strong></p>
|
||||
<div class="highlight-cpp notranslate"><div class="highlight"><pre><span></span><span class="k">auto</span><span class="w"> </span><span class="n">base_stream_profile</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">stream_profile_</span><span class="p">[</span><span class="n">base_stream_</span><span class="p">];</span>
|
||||
<span class="k">auto</span><span class="w"> </span><span class="n">device_info</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">device_</span><span class="o">-></span><span class="n">getDeviceInfo</span><span class="p">();</span>
|
||||
<span class="c1">// 通常基准流是深度流(DEPTH)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>选择一个基准流(通常是深度流),所有其他传感器的变换都相对于这个基准流进行计算</p></li>
|
||||
</ul>
|
||||
<p><strong>遍历所有流并计算相对变换</strong></p>
|
||||
<div class="highlight-cpp notranslate"><div class="highlight"><pre><span></span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="o">&</span><span class="n">item</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="n">stream_profile_</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">stream_index</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">item</span><span class="p">.</span><span class="n">first</span><span class="p">;</span>
|
||||
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">stream_profile</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">item</span><span class="p">.</span><span class="n">second</span><span class="p">;</span>
|
||||
|
||||
<span class="w"> </span><span class="c1">// 获取该流相对于基准流的外参</span>
|
||||
<span class="w"> </span><span class="n">OBExtrinsic</span><span class="w"> </span><span class="n">ex</span><span class="p">;</span>
|
||||
<span class="w"> </span><span class="n">ex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">stream_profile</span><span class="o">-></span><span class="n">getExtrinsicTo</span><span class="p">(</span><span class="n">base_stream_profile</span><span class="p">);</span>
|
||||
|
||||
<span class="w"> </span><span class="c1">// 将旋转矩阵转换为四元数</span>
|
||||
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">Q</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">rotationMatrixToQuaternion</span><span class="p">(</span><span class="n">ex</span><span class="p">.</span><span class="n">rot</span><span class="p">);</span>
|
||||
|
||||
<span class="w"> </span><span class="c1">// 应用光学坐标系变换:Q_new = quaternion_optical * Q * quaternion_optical.inverse()</span>
|
||||
<span class="w"> </span><span class="n">Q</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">quaternion_optical</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">Q</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">quaternion_optical</span><span class="p">.</span><span class="n">inverse</span><span class="p">();</span>
|
||||
|
||||
<span class="w"> </span><span class="n">tf2</span><span class="o">::</span><span class="n">Vector3</span><span class="w"> </span><span class="nf">trans</span><span class="p">(</span><span class="n">ex</span><span class="p">.</span><span class="n">trans</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="w"> </span><span class="n">ex</span><span class="p">.</span><span class="n">trans</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span><span class="w"> </span><span class="n">ex</span><span class="p">.</span><span class="n">trans</span><span class="p">[</span><span class="mi">2</span><span class="p">]);</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">OBExtrinsic</span></code>包含了两个传感器之间的旋转矩阵(<code class="docutils literal notranslate"><span class="pre">rot</span></code>)和平移向量(<code class="docutils literal notranslate"><span class="pre">trans</span></code>)</p></li>
|
||||
<li><p>通过四元数乘法将光学坐标系变换应用到每个传感器的旋转关系中</p></li>
|
||||
<li><p>这个变换将相机原生的光学坐标系转换为ROS标准坐标系</p></li>
|
||||
</ul>
|
||||
<p><strong>发布TF变换</strong></p>
|
||||
<div class="highlight-cpp notranslate"><div class="highlight"><pre><span></span><span class="c1">// 发布传感器到基准流的变换(在ROS坐标系中)</span>
|
||||
<span class="n">publishStaticTF</span><span class="p">(</span><span class="n">timestamp</span><span class="p">,</span><span class="w"> </span><span class="n">trans</span><span class="p">,</span><span class="w"> </span><span class="n">Q</span><span class="p">,</span><span class="w"> </span><span class="n">frame_id_</span><span class="p">[</span><span class="n">base_stream_</span><span class="p">],</span><span class="w"> </span><span class="n">frame_id_</span><span class="p">[</span><span class="n">stream_index</span><span class="p">]);</span>
|
||||
|
||||
<span class="c1">// 发布传感器到其光学frame的变换</span>
|
||||
<span class="n">publishStaticTF</span><span class="p">(</span><span class="n">timestamp</span><span class="p">,</span><span class="w"> </span><span class="n">zero_trans</span><span class="p">,</span><span class="w"> </span><span class="n">quaternion_optical</span><span class="p">,</span><span class="w"> </span><span class="n">frame_id_</span><span class="p">[</span><span class="n">stream_index</span><span class="p">],</span>
|
||||
<span class="w"> </span><span class="n">optical_frame_id_</span><span class="p">[</span><span class="n">stream_index</span><span class="p">]);</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>第一个 <code class="docutils literal notranslate"><span class="pre">publishStaticTF</span></code>:发布从基准流到当前传感器的变换(平移+旋转)</p></li>
|
||||
<li><p>第二个 <code class="docutils literal notranslate"><span class="pre">publishStaticTF</span></code>:发布从物理frame到光学frame的变换(纯旋转,无平移)</p></li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">frame_id_[stream_index]</span></code>:物理坐标系frame名称(如 <code class="docutils literal notranslate"><span class="pre">camera_depth_frame</span></code>)</p></li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">optical_frame_id_[stream_index]</span></code>:光学坐标系frame名称(如 <code class="docutils literal notranslate"><span class="pre">camera_depth_optical_frame</span></code>)</p></li>
|
||||
</ul>
|
||||
<p><strong>特殊处理左右红外摄像头</strong></p>
|
||||
<div class="highlight-cpp notranslate"><div class="highlight"><pre><span></span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">stream_index</span><span class="p">.</span><span class="n">first</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">OB_STREAM_IR_RIGHT</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">base_stream_</span><span class="p">.</span><span class="n">first</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">OB_STREAM_DEPTH</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="n">trans</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">abs</span><span class="p">(</span><span class="n">trans</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>左右红外摄像头在设备坐标系中关于中心平面对称</p></li>
|
||||
<li><p>通过 <code class="docutils literal notranslate"><span class="pre">abs()</span></code>确保X轴偏移为正值,保持几何一致性</p></li>
|
||||
</ul>
|
||||
<p><strong>发布深度到其他传感器的外参</strong></p>
|
||||
<div class="highlight-cpp notranslate"><div class="highlight"><pre><span></span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">enable_stream_</span><span class="p">[</span><span class="n">DEPTH</span><span class="p">]</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">enable_stream_</span><span class="p">[</span><span class="n">COLOR</span><span class="p">]</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">enable_publish_extrinsic_</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="n">OBExtrinsic</span><span class="w"> </span><span class="n">ex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">base_stream_profile</span><span class="o">-></span><span class="n">getExtrinsicTo</span><span class="p">(</span><span class="n">stream_profile_</span><span class="p">[</span><span class="n">COLOR</span><span class="p">]);</span>
|
||||
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">ex_msg</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">obExtrinsicsToMsg</span><span class="p">(</span><span class="n">ex</span><span class="p">,</span><span class="w"> </span><span class="s">"depth_to_color_extrinsics"</span><span class="p">);</span>
|
||||
<span class="w"> </span><span class="n">depth_to_other_extrinsics_publishers_</span><span class="p">[</span><span class="n">COLOR</span><span class="p">]</span><span class="o">-></span><span class="n">publish</span><span class="p">(</span><span class="n">ex_msg</span><span class="p">);</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>通过TF发布变换关系</p></li>
|
||||
</ul>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>© 版权所有 2025, 奥比中光科技集团股份有限公司 www.orbbec.com.。
|
||||
<span class="lastupdated">最后更新于 2026年01月04日 01:12:35.
|
||||
</span></p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,794 @@
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="zh-CN" data-content_root="../../../">
|
||||
<head>
|
||||
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>启动参数 — OrbbecSDK V2 ROS2 封装 文档</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=b86133f3" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/theme.css?v=e59714d7" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/custom.css?v=63de077d" />
|
||||
|
||||
|
||||
<link rel="shortcut icon" href="../../../_static/orbbec_footerlogo_3d_world.svg"/>
|
||||
<script src="../../../_static/jquery.js?v=5d32c60e"></script>
|
||||
<script src="../../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=7d86a446"></script>
|
||||
<script src="../../../_static/doctools.js?v=9bcbadda"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
<script src="../../../_static/translations.js?v=beaddf03"></script>
|
||||
<script src="../../../_static/js/theme.js"></script>
|
||||
<link rel="index" title="索引" href="../../../genindex.html" />
|
||||
<link rel="search" title="搜索" href="../../../search.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../../index.html" class="icon icon-home">
|
||||
OrbbecSDK V2 ROS2 封装
|
||||
</a>
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="搜索文档" aria-label="搜索文档" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="导航菜单">
|
||||
<!-- Local TOC -->
|
||||
<div class="local-toc"><ul>
|
||||
<li><a class="reference internal" href="#">启动参数</a><ul>
|
||||
<li><a class="reference internal" href="#id2">核心与数据流配置</a></li>
|
||||
<li><a class="reference internal" href="#id3">传感器控制</a><ul>
|
||||
<li><a class="reference internal" href="#id4">彩色流</a></li>
|
||||
<li><a class="reference internal" href="#id5">深度流</a></li>
|
||||
<li><a class="reference internal" href="#id6">红外流</a></li>
|
||||
<li><a class="reference internal" href="#ldp">激光 / LDP</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#id7">设备、同步与高级功能</a><ul>
|
||||
<li><a class="reference internal" href="#id8">多相机同步</a></li>
|
||||
<li><a class="reference internal" href="#id9">网络相机</a></li>
|
||||
<li><a class="reference internal" href="#id10">设备特定</a></li>
|
||||
<li><a class="reference internal" href="#id11">视差</a></li>
|
||||
<li><a class="reference internal" href="#ae">交错AE模式</a></li>
|
||||
<li><a class="reference internal" href="#id12">相机内同步</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#id13">基础与通用参数</a><ul>
|
||||
<li><a class="reference internal" href="#id14">固件与后端</a></li>
|
||||
<li><a class="reference internal" href="#tf">TF、外参与校准</a></li>
|
||||
<li><a class="reference internal" href="#id15">时间同步</a></li>
|
||||
<li><a class="reference internal" href="#id16">日志与诊断</a></li>
|
||||
<li><a class="reference internal" href="#id17">其他</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#imu">IMU</a></li>
|
||||
<li><a class="reference internal" href="#id18">深度滤波器</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="移动版导航菜单" >
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../../index.html">OrbbecSDK V2 ROS2 封装</a>
|
||||
</nav>
|
||||
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content">
|
||||
<div role="navigation" aria-label="页面导航">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
||||
<li class="breadcrumb-item active">启动参数</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
<a href="../../../_sources/source/camera_devices/4_application_guide/launch_parameters.md.txt" rel="nofollow"> 查看页面源码</a>
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<div class="lang-switch" style="margin:0 0 1em 0; font-size:0.9em;"><a class="lang-other" href="#">English</a> | <a class="lang-current" href="#">中文</a></div><script>(function(){var p=window.location.pathname;var isEn=p.indexOf('/en/')!==-1 && p.indexOf('/zh/')===-1;if(p.indexOf('/zh/')!==-1) isEn=false;var other = isEn ? p.replace(/\/en\//, '/zh/') : p.replace(/\/zh\//, '/en/');var current=p;var sw=document.querySelector('.lang-switch'); if(!sw) return;var o=sw.querySelector('.lang-other'); var c=sw.querySelector('.lang-current');if(isEn){ o.textContent='中文'; c.textContent='English'; } else { o.textContent='English'; c.textContent='中文'; }o.setAttribute('href', other); c.setAttribute('href', current);})();</script><section id="id1">
|
||||
<h1>启动参数<a class="headerlink" href="#id1" title="Link to this heading"></a></h1>
|
||||
<blockquote>
|
||||
<div><p>如果您不确定如何设置参数,可以连接orbbec相机并打开 <a class="reference external" href="https://github.com/orbbec/OrbbecSDK/releases">OrbbecViewer</a>。</p>
|
||||
</div></blockquote>
|
||||
<p>以下是可用的启动参数:</p>
|
||||
<section id="id2">
|
||||
<h2>核心与数据流配置<a class="headerlink" href="#id2" title="Link to this heading"></a></h2>
|
||||
<ul class="simple">
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">camera_name</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启动节点的命名空间。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">serial_number</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>相机的序列号。当使用多个相机时需要此参数。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">usb_port</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>相机的USB端口。当使用多个相机时需要此参数。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">device_num</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>设备数量。如果需要多个相机,必须填写此参数。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">[color|depth|left_ir|right_ir|ir]_[width|height|fps|format]</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>传感器流的分辨率和帧率。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">[color|depth|left_ir|right_ir|ir]_rotation</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>设置流图像旋转。</p></li>
|
||||
<li><p>可能的值为 <code class="docutils literal notranslate"><span class="pre">0</span></code>、<code class="docutils literal notranslate"><span class="pre">90</span></code>、<code class="docutils literal notranslate"><span class="pre">180</span></code>、<code class="docutils literal notranslate"><span class="pre">270</span></code>。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">[color|depth|left_ir|right_ir|ir]_flip</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启用流图像翻转。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">[color|depth|left_ir|right_ir|ir]_mirror</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启用流图像镜像。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">enable_point_cloud</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启用点云。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">enable_colored_point_cloud</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启用RGB点云。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">cloud_frame_id</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>修改ros消息中的 <code class="docutils literal notranslate"><span class="pre">frame_id</span></code> 名称。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">ordered_pc</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启用无效点云过滤。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">point_cloud_qos</span></code>、<code class="docutils literal notranslate"><span class="pre">[stream]_qos</span></code>、<code class="docutils literal notranslate"><span class="pre">[stream]_camera_info_qos</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>ROS 2消息服务质量(QoS)设置。可能的值为 <code class="docutils literal notranslate"><span class="pre">SYSTEM_DEFAULT</span></code>、<code class="docutils literal notranslate"><span class="pre">DEFAULT</span></code>、<code class="docutils literal notranslate"><span class="pre">PARAMETER_EVENTS</span></code>、<code class="docutils literal notranslate"><span class="pre">SERVICES_DEFAULT</span></code>、<code class="docutils literal notranslate"><span class="pre">PARAMETERS</span></code>、<code class="docutils literal notranslate"><span class="pre">SENSOR_DATA</span></code>,不区分大小写。这些分别对应 <code class="docutils literal notranslate"><span class="pre">rmw_qos_profile_system_default</span></code>、<code class="docutils literal notranslate"><span class="pre">rmw_qos_profile_default</span></code>、<code class="docutils literal notranslate"><span class="pre">rmw_qos_profile_parameter_events</span></code>、<code class="docutils literal notranslate"><span class="pre">rmw_qos_profile_services_default</span></code>、<code class="docutils literal notranslate"><span class="pre">rmw_qos_profile_parameters</span></code> 和 <code class="docutils literal notranslate"><span class="pre">SENSOR_DATA</span></code>。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">color.image_raw.enable_pub_plugins</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启用彩色图像传输插件。默认值:<code class="docutils literal notranslate"><span class="pre">["image_transport/compressed",</span> <span class="pre">"image_transport/raw",</span> <span class="pre">"image_transport/theora"]</span></code>。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">depth.image_raw.enable_pub_plugins</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启用深度图像传输插件。默认值:<code class="docutils literal notranslate"><span class="pre">["image_transport/compressedDepth",</span> <span class="pre">"image_transport/raw"]</span></code>。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">left_ir.image_raw.enable_pub_plugins</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启用左红外图像传输插件。默认值:<code class="docutils literal notranslate"><span class="pre">["image_transport/compressed",</span> <span class="pre">"image_transport/raw",</span> <span class="pre">"image_transport/theora"]</span></code>。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">right_ir.image_raw.enable_pub_plugins</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启用右红外图像传输插件。默认值:<code class="docutils literal notranslate"><span class="pre">["image_transport/compressed",</span> <span class="pre">"image_transport/raw",</span> <span class="pre">"image_transport/theora"]</span></code>。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">point_cloud_decimation_filter_factor</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>点云下采样因子。范围:<code class="docutils literal notranslate"><span class="pre">1–8</span></code>,<code class="docutils literal notranslate"><span class="pre">1</span></code>表示不下采样,数值越大下采样越强。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">preset_resolution_config</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>摄像头设备的预设分辨率配置。格式: "width,height,ir_decimation_factor,depth_decimation_factor". Example: "1280,720,4,4". 仅在 Gemini435Le 设备上受支持。留空禁用。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="id3">
|
||||
<h2>传感器控制<a class="headerlink" href="#id3" title="Link to this heading"></a></h2>
|
||||
<section id="id4">
|
||||
<h3>彩色流<a class="headerlink" href="#id4" title="Link to this heading"></a></h3>
|
||||
<ul class="simple">
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">enable_color_auto_exposure</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启用彩色自动曝光。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">enable_color_auto_exposure_priority</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启用彩色自动曝光优先级。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">color_exposure</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>设置彩色曝光。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">color_gain</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>设置彩色增益。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">enable_color_auto_white_balance</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启用彩色自动白平衡。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">color_white_balance</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>设置彩色白平衡。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">color_ae_max_exposure</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>设置彩色自动曝光的最大曝光值。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">color_brightness</span></code></strong>、<strong><code class="docutils literal notranslate"><span class="pre">color_sharpness</span></code></strong>、<strong><code class="docutils literal notranslate"><span class="pre">color_gamma</span></code></strong>、<strong><code class="docutils literal notranslate"><span class="pre">color_saturation</span></code></strong>、<strong><code class="docutils literal notranslate"><span class="pre">color_contrast</span></code></strong>、<strong><code class="docutils literal notranslate"><span class="pre">color_hue</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>设置彩色亮度、锐度、伽马、饱和度、对比度和色调。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">color_backlight_compensation</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启用彩色相机的背光补偿功能。<strong>范围</strong>:<code class="docutils literal notranslate"><span class="pre">0–6</span></code>,<strong>默认值</strong>:<code class="docutils literal notranslate"><span class="pre">3</span></code>。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">color_powerline_freq</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>设置电源线频率。可能的值为 <code class="docutils literal notranslate"><span class="pre">disable</span></code>、<code class="docutils literal notranslate"><span class="pre">50hz</span></code>、<code class="docutils literal notranslate"><span class="pre">60hz</span></code>、<code class="docutils literal notranslate"><span class="pre">auto</span></code>。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">enable_color_decimation_filter</span></code></strong> / <strong><code class="docutils literal notranslate"><span class="pre">color_decimation_filter_scale</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启用彩色抽取滤波器并设置其比例。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">color_ae_roi_[left|right|top|bottom]</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>设置彩色自动曝光ROI。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">color_denoising_level</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启用Gemini 330系列设备的ISP降噪功能。<strong>范围:</strong> <code class="docutils literal notranslate"><span class="pre">0–8</span></code>,<strong>默认值:</strong> <code class="docutils literal notranslate"><span class="pre">0</span></code>(自动)。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="id5">
|
||||
<h3>深度流<a class="headerlink" href="#id5" title="Link to this heading"></a></h3>
|
||||
<ul>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">enable_depth_auto_exposure_priority</span></code></strong></p>
|
||||
<ul class="simple">
|
||||
<li><p>启用深度自动曝光优先级。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">mean_intensity_set_point</span></code></strong></p>
|
||||
<ul class="simple">
|
||||
<li><p>设置深度图像的目标平均强度。例如:<code class="docutils literal notranslate"><span class="pre">mean_intensity_set_point:=100</span></code>。</p></li>
|
||||
</ul>
|
||||
<blockquote>
|
||||
<div><p><strong>注意:</strong> 这取代了已弃用的 <code class="docutils literal notranslate"><span class="pre">depth_brightness</span></code>,后者仍支持以保持向后兼容性。</p>
|
||||
</div></blockquote>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">enable_depth_scale</span></code></strong></p>
|
||||
<ul class="simple">
|
||||
<li><p>启用深度缩放。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">depth_precision</span></code></strong></p>
|
||||
<ul class="simple">
|
||||
<li><p>深度精度应为 <code class="docutils literal notranslate"><span class="pre">1mm</span></code> 格式。默认值为 <code class="docutils literal notranslate"><span class="pre">1mm</span></code>。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">depth_ae_roi_[left|right|top|bottom]</span></code></strong></p>
|
||||
<ul class="simple">
|
||||
<li><p>设置深度自动曝光ROI。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="id6">
|
||||
<h3>红外流<a class="headerlink" href="#id6" title="Link to this heading"></a></h3>
|
||||
<ul class="simple">
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">enable_ir_auto_exposure</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启用红外自动曝光。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">ir_exposure</span></code></strong> / <strong><code class="docutils literal notranslate"><span class="pre">ir_gain</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>设置红外曝光和增益。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">ir_ae_max_exposure</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>设置红外自动曝光的最大曝光值。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">ir_brightness</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>设置红外亮度。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="ldp">
|
||||
<h3>激光 / LDP<a class="headerlink" href="#ldp" title="Link to this heading"></a></h3>
|
||||
<ul class="simple">
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">enable_laser</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启用激光。默认值为 <code class="docutils literal notranslate"><span class="pre">true</span></code>。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">laser_energy_level</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>设置激光能量级别。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">enable_ldp</span></code></strong> / <strong><code class="docutils literal notranslate"><span class="pre">ldp_power_level</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启用LDP并设置其功率级别。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
</section>
|
||||
<section id="id7">
|
||||
<h2>设备、同步与高级功能<a class="headerlink" href="#id7" title="Link to this heading"></a></h2>
|
||||
<section id="id8">
|
||||
<h3>多相机同步<a class="headerlink" href="#id8" title="Link to this heading"></a></h3>
|
||||
<ul class="simple">
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">sync_mode</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>设置同步模式。默认值为 <code class="docutils literal notranslate"><span class="pre">standalone</span></code>。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">depth_delay_us</span></code></strong> / <strong><code class="docutils literal notranslate"><span class="pre">color_delay_us</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>接收捕获命令或触发信号后深度/彩色图像捕获的延迟时间(微秒)。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">trigger2image_delay_us</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>接收捕获命令或触发信号后图像捕获的延迟时间(微秒)。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">trigger_out_delay_us</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>接收捕获命令或触发信号后触发信号输出的延迟时间(微秒)。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">trigger_out_enabled</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启用触发输出信号。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">software_trigger_enabled</span></code></strong> / <strong><code class="docutils literal notranslate"><span class="pre">software_trigger_period</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启用软件触发输出信号 / 设置软件触发周期(毫秒)。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">frames_per_trigger</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>触发模式下每次触发后每个流的帧数。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<blockquote>
|
||||
<div><p>用于 <a class="reference internal" href="../5_advanced_guide/multi_camera/multi_camera_synced.html"><span class="doc">多相机同步</span></a>。</p>
|
||||
</div></blockquote>
|
||||
</section>
|
||||
<section id="id9">
|
||||
<h3>网络相机<a class="headerlink" href="#id9" title="Link to this heading"></a></h3>
|
||||
<ul class="simple">
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">enumerate_net_device</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启用自动枚举网络设备。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">net_device_ip</span></code></strong> / <strong><code class="docutils literal notranslate"><span class="pre">net_device_port</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>设置网络设备的IP地址和端口(通常为 <code class="docutils literal notranslate"><span class="pre">8090</span></code>)。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">force_ip_enable</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启用强制IP功能。<strong>默认值:</strong> <code class="docutils literal notranslate"><span class="pre">false</span></code></p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">force_ip_mac</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>连接多个相机时的目标设备MAC地址(例如,<code class="docutils literal notranslate"><span class="pre">"54:14:FD:06:07:DA"</span></code>)。您可以使用 <code class="docutils literal notranslate"><span class="pre">list_devices_node</span></code> 查找每个设备的MAC。<strong>默认值:</strong> <code class="docutils literal notranslate"><span class="pre">""</span></code></p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">force_ip_address</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>要分配的静态IP地址。<strong>默认值:</strong> <code class="docutils literal notranslate"><span class="pre">192.168.1.10</span></code></p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">force_ip_subnet_mask</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>静态IP的子网掩码。<strong>默认值:</strong> <code class="docutils literal notranslate"><span class="pre">255.255.255.0</span></code></p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">force_ip_gateway</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>静态IP的网关地址。<strong>默认值:</strong> <code class="docutils literal notranslate"><span class="pre">192.168.1.1</span></code></p></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<blockquote>
|
||||
<div><p>用于 <a class="reference internal" href="../5_advanced_guide/configuration/net_camera.html"><span class="doc">网络相机</span></a>。</p>
|
||||
</div></blockquote>
|
||||
</section>
|
||||
<section id="id10">
|
||||
<h3>设备特定<a class="headerlink" href="#id10" title="Link to this heading"></a></h3>
|
||||
<ul class="simple">
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">device_preset</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>默认值为 <code class="docutils literal notranslate"><span class="pre">Default</span></code>。仅支持G330系列。有关更多信息,请参阅 <a class="reference external" href="https://www.orbbec.com/docs/g330-use-depth-presets/">G330文档</a>。该值应为 <a class="reference internal" href="../5_advanced_guide/configuration/predefined_presets.html"><span class="doc">表中列出</span></a> 的预设名称之一。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">enable_gmsl_trigger</span></code></strong> / <strong><code class="docutils literal notranslate"><span class="pre">gmsl_trigger_fps</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启用gmsl触发输出信号 / 设置gmsl触发fps。用于 <a class="reference internal" href="../5_advanced_guide/multi_camera/gmsl_camera.html"><span class="doc">gmsl相机</span></a>。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="id11">
|
||||
<h3>视差<a class="headerlink" href="#id11" title="Link to this heading"></a></h3>
|
||||
<ul class="simple">
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">disparity_to_depth_mode</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">HW</span></code>:使用硬件视差到深度转换。<code class="docutils literal notranslate"><span class="pre">SW</span></code>:使用软件视差到深度转换。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">disparity_range_mode</span></code></strong>、<strong><code class="docutils literal notranslate"><span class="pre">disparity_search_offset</span></code></strong>、<strong><code class="docutils literal notranslate"><span class="pre">disparity_offset_config</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>视差搜索偏移参数。用于 <a class="reference internal" href="../5_advanced_guide/configuration/disparity_search_offset.html"><span class="doc">视差搜索偏移</span></a>。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="ae">
|
||||
<h3>交错AE模式<a class="headerlink" href="#ae" title="Link to this heading"></a></h3>
|
||||
<ul class="simple">
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">interleave_ae_mode</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>设置 <code class="docutils literal notranslate"><span class="pre">laser</span></code> 或 <code class="docutils literal notranslate"><span class="pre">hdr</span></code> 交错。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">interleave_frame_enable</span></code></strong>、<strong><code class="docutils literal notranslate"><span class="pre">interleave_skip_enable</span></code></strong>、<strong><code class="docutils literal notranslate"><span class="pre">interleave_skip_index</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>控制交错帧模式的参数。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">[hdr|laser]_index[0|1]_[...]</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>在交错帧模式下,设置hdr或laser交错帧的第0和第1帧参数。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><em>所有交错参数用于 <a class="reference internal" href="../5_advanced_guide/configuration/interleave_ae_mode.html"><span class="doc">交错ae模式</span></a>。</em></p></li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="id12">
|
||||
<h3>相机内同步<a class="headerlink" href="#id12" title="Link to this heading"></a></h3>
|
||||
<ul class="simple">
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">depth_registration</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启用深度帧与彩色帧的对齐。当 <code class="docutils literal notranslate"><span class="pre">enable_colored_point_cloud</span></code> 设置为 <code class="docutils literal notranslate"><span class="pre">true</span></code> 时需要此字段。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">align_mode</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>要使用的对齐模式。选项为 <code class="docutils literal notranslate"><span class="pre">HW</span></code>(硬件对齐)和 <code class="docutils literal notranslate"><span class="pre">SW</span></code>(软件对齐)。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">align_target_stream</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>设置对齐目标流模式。</p></li>
|
||||
<li><p>可能的值为 <code class="docutils literal notranslate"><span class="pre">COLOR</span></code>、<code class="docutils literal notranslate"><span class="pre">DEPTH</span></code>。</p></li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">COLOR</span></code>:将深度对齐到彩色。</p></li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">DEPTH</span></code>:将彩色对齐到深度。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">intra_camera_sync_reference</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>设置相机内同步的参考点。适用于Gemini 330系列设备,当 <code class="docutils literal notranslate"><span class="pre">sync_mode</span></code> 设置为<strong>软件</strong>或<strong>硬件触发</strong>模式时。<strong>选项:</strong> <code class="docutils literal notranslate"><span class="pre">Start</span></code>、<code class="docutils literal notranslate"><span class="pre">Middle</span></code>、<code class="docutils literal notranslate"><span class="pre">End</span></code>。设置为空时,长基线设备默认End,短基线设备默认Middle。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
</section>
|
||||
<section id="id13">
|
||||
<h2>基础与通用参数<a class="headerlink" href="#id13" title="Link to this heading"></a></h2>
|
||||
<section id="id14">
|
||||
<h3>固件与后端<a class="headerlink" href="#id14" title="Link to this heading"></a></h3>
|
||||
<ul class="simple">
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">upgrade_firmware</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>输入参数为固件路径。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">preset_firmware_path</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>输入参数为预设固件路径。如果输入多个路径,每个路径需要用 <code class="docutils literal notranslate"><span class="pre">,</span></code> 分隔,最多可输入3个固件路径。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">uvc_backend</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>可选值:<code class="docutils literal notranslate"><span class="pre">v4l2</span></code>、<code class="docutils literal notranslate"><span class="pre">libuvc</span></code>。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">connection_delay</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>重新打开设备的延迟时间(毫秒)。某些设备(如Astra mini)需要较长时间初始化,热插拔时立即重新打开设备可能导致固件崩溃。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">retry_on_usb3_detection_failure</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>如果相机连接到USB 2.0端口且未检测到,系统将尝试重置相机最多三次。使用USB 2.0连接时建议将此参数设置为 <code class="docutils literal notranslate"><span class="pre">false</span></code>,以避免不必要的重置。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="tf">
|
||||
<h3>TF、外参与校准<a class="headerlink" href="#tf" title="Link to this heading"></a></h3>
|
||||
<ul class="simple">
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">publish_tf</span></code></strong> / <strong><code class="docutils literal notranslate"><span class="pre">tf_publish_rate</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启用TF发布并设置其发布速率。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">enable_publish_extrinsic</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启用外参发布。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">ir_info_url</span></code></strong> / <strong><code class="docutils literal notranslate"><span class="pre">color_info_url</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>设置IR/彩色相机信息的URL。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">enable_color_undistortion</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启用彩色去畸变。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="id15">
|
||||
<h3>时间同步<a class="headerlink" href="#id15" title="Link to this heading"></a></h3>
|
||||
<ul>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">enable_sync_host_time</span></code></strong></p>
|
||||
<ul class="simple">
|
||||
<li><p>启用主机时间与相机时间的同步。默认值为 <code class="docutils literal notranslate"><span class="pre">true</span></code>。如果使用全局时间,设置为 <code class="docutils literal notranslate"><span class="pre">false</span></code>。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">time_domain</span></code></strong></p>
|
||||
<ul class="simple">
|
||||
<li><p>选择时间戳类型:<code class="docutils literal notranslate"><span class="pre">device</span></code>、<code class="docutils literal notranslate"><span class="pre">global</span></code> 和 <code class="docutils literal notranslate"><span class="pre">system</span></code>。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">time_sync_period</span></code></strong></p>
|
||||
<ul class="simple">
|
||||
<li><p>相机时间与主机系统同步的间隔(秒)。</p></li>
|
||||
</ul>
|
||||
<blockquote>
|
||||
<div><p><strong>注意</strong>:仅当 <strong><code class="docutils literal notranslate"><span class="pre">enable_sync_host_time</span> <span class="pre">=</span> <span class="pre">true</span></code></strong> 且 <strong><code class="docutils literal notranslate"><span class="pre">time_domain</span> <span class="pre">=</span> <span class="pre">device</span></code></strong> 时需要设置此参数。</p>
|
||||
</div></blockquote>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">enable_ptp_config</span></code></strong></p>
|
||||
<ul class="simple">
|
||||
<li><p>启用PTP时间同步。仅适用于Gemini 335Le。需要 <code class="docutils literal notranslate"><span class="pre">enable_sync_host_time</span></code> 设置为 <code class="docutils literal notranslate"><span class="pre">false</span></code>。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">enable_frame_sync</span></code></strong></p>
|
||||
<ul class="simple">
|
||||
<li><p>启用帧同步。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="id16">
|
||||
<h3>日志与诊断<a class="headerlink" href="#id16" title="Link to this heading"></a></h3>
|
||||
<ul class="simple">
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">log_level</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>SDK日志级别。默认为 <code class="docutils literal notranslate"><span class="pre">info</span></code>。可选值:<code class="docutils literal notranslate"><span class="pre">debug</span></code>、<code class="docutils literal notranslate"><span class="pre">info</span></code>、<code class="docutils literal notranslate"><span class="pre">warn</span></code>、<code class="docutils literal notranslate"><span class="pre">error</span></code>、<code class="docutils literal notranslate"><span class="pre">fatal</span></code>。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">log_file_name</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>保存的SDK日志文件名。当<code class="docutils literal notranslate"><span class="pre">log_level</span></code>为<code class="docutils literal notranslate"><span class="pre">debug</span></code>时生效。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">diagnostic_period</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>诊断周期(秒)。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">enable_heartbeat</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启用心跳功能。默认为 <code class="docutils literal notranslate"><span class="pre">false</span></code>。如果为 <code class="docutils literal notranslate"><span class="pre">true</span></code>,相机节点将向固件发送心跳信号。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="id17">
|
||||
<h3>其他<a class="headerlink" href="#id17" title="Link to this heading"></a></h3>
|
||||
<ul class="simple">
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">config_file_path</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>YAML配置文件的路径。默认为 <code class="docutils literal notranslate"><span class="pre">""</span></code>。如果未指定,将使用启动文件中的默认参数。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">frame_aggregate_mode</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>设置帧聚合输出模式。可选值:<code class="docutils literal notranslate"><span class="pre">full_frame</span></code>、<code class="docutils literal notranslate"><span class="pre">color_frame</span></code>、<code class="docutils literal notranslate"><span class="pre">ANY</span></code>、<code class="docutils literal notranslate"><span class="pre">disable</span></code>。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">enable_d2c_viewer</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>发布D2C叠加图像(仅用于测试)。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
</section>
|
||||
<section id="imu">
|
||||
<h2>IMU<a class="headerlink" href="#imu" title="Link to this heading"></a></h2>
|
||||
<ul class="simple">
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">enable_accel</span></code></strong> / <strong><code class="docutils literal notranslate"><span class="pre">enable_gyro</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启用加速度计/陀螺仪并输出其信息话题数据。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">enable_sync_output_accel_gyro</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启用同步 <code class="docutils literal notranslate"><span class="pre">accel_gyro</span></code>,并输出IMU话题实时数据。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">accel_rate</span></code></strong> / <strong><code class="docutils literal notranslate"><span class="pre">gyro_rate</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>加速度计/陀螺仪的频率。值范围从 <code class="docutils literal notranslate"><span class="pre">1.5625hz</span></code> 到 <code class="docutils literal notranslate"><span class="pre">32khz</span></code>。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">accel_range</span></code></strong> / <strong><code class="docutils literal notranslate"><span class="pre">gyro_range</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>加速度计(<code class="docutils literal notranslate"><span class="pre">2g</span></code>、<code class="docutils literal notranslate"><span class="pre">4g</span></code>、<code class="docutils literal notranslate"><span class="pre">8g</span></code>、<code class="docutils literal notranslate"><span class="pre">16g</span></code>)和陀螺仪(<code class="docutils literal notranslate"><span class="pre">16dps</span></code> 到 <code class="docutils literal notranslate"><span class="pre">2000dps</span></code>)的范围。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">enable_accel_data_correction</span></code></strong> / <strong><code class="docutils literal notranslate"><span class="pre">enable_gyro_data_correction</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启用加速度计/陀螺仪的数据校正。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">linear_accel_cov</span></code></strong> / <strong><code class="docutils literal notranslate"><span class="pre">angular_vel_cov</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>线性加速度和角速度的协方差。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="id18">
|
||||
<h2>深度滤波器<a class="headerlink" href="#id18" title="Link to this heading"></a></h2>
|
||||
<ul class="simple">
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">enable_decimation_filter</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启用深度抽取滤波器。使用 <code class="docutils literal notranslate"><span class="pre">decimation_filter_scale</span></code> 设置。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">enable_hdr_merge</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启用深度hdr合并滤波器。使用 <code class="docutils literal notranslate"><span class="pre">hdr_merge_exposure_1</span></code> 等设置。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">enable_sequence_id_filter</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启用深度序列id滤波器。使用 <code class="docutils literal notranslate"><span class="pre">sequence_id_filter_id</span></code> 设置。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">enable_threshold_filter</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启用深度阈值滤波器。使用 <code class="docutils literal notranslate"><span class="pre">threshold_filter_max</span></code>、<code class="docutils literal notranslate"><span class="pre">threshold_filter_min</span></code> 设置。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">enable_hardware_noise_removal_filter</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启用深度硬件降噪滤波器。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">enable_noise_removal_filter</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启用深度软件降噪滤波器。使用 <code class="docutils literal notranslate"><span class="pre">noise_removal_filter_min_diff</span></code> 等设置。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">enable_spatial_filter</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启用深度空间滤波器。使用 <code class="docutils literal notranslate"><span class="pre">spatial_filter_alpha</span></code> 等设置。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">enable_temporal_filter</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启用深度时间滤波器。使用 <code class="docutils literal notranslate"><span class="pre">temporal_filter_diff_threshold</span></code> 等设置。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">enable_hole_filling_filter</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启用深度孔洞填充滤波器。使用 <code class="docutils literal notranslate"><span class="pre">hole_filling_filter_mode</span></code> 设置。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">enable_spatial_fast_filter</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启用深度空间快速滤波器。使用 <code class="docutils literal notranslate"><span class="pre">spatial_fast_filter_radius</span></code> 设置。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><strong><code class="docutils literal notranslate"><span class="pre">enable_spatial_moderate_filter</span></code></strong></p>
|
||||
<ul>
|
||||
<li><p>启用深度空间中等滤波器。使用 <code class="docutils literal notranslate"><span class="pre">spatial_moderate_filter_diff_threshold</span></code> 等设置。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<hr class="docutils" />
|
||||
<blockquote>
|
||||
<div><p><strong><em>重要</em></strong>:请仔细阅读 <a class="reference external" href="https://www.orbbec.com/docs/g330-use-depth-post-processing-blocks/">此链接</a> 中有关软件滤波设置的说明。如果不确定,请勿修改这些设置。</p>
|
||||
</div></blockquote>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>© 版权所有 2025, 奥比中光科技集团股份有限公司 www.orbbec.com.。
|
||||
<span class="lastupdated">最后更新于 2026年01月04日 01:12:35.
|
||||
</span></p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,169 @@
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="zh-CN" data-content_root="../../../">
|
||||
<head>
|
||||
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>在ROS 2中启用和可视化点云 — OrbbecSDK V2 ROS2 封装 文档</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=b86133f3" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/theme.css?v=e59714d7" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/custom.css?v=63de077d" />
|
||||
|
||||
|
||||
<link rel="shortcut icon" href="../../../_static/orbbec_footerlogo_3d_world.svg"/>
|
||||
<script src="../../../_static/jquery.js?v=5d32c60e"></script>
|
||||
<script src="../../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=7d86a446"></script>
|
||||
<script src="../../../_static/doctools.js?v=9bcbadda"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
<script src="../../../_static/translations.js?v=beaddf03"></script>
|
||||
<script src="../../../_static/js/theme.js"></script>
|
||||
<link rel="index" title="索引" href="../../../genindex.html" />
|
||||
<link rel="search" title="搜索" href="../../../search.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../../index.html" class="icon icon-home">
|
||||
OrbbecSDK V2 ROS2 封装
|
||||
</a>
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="搜索文档" aria-label="搜索文档" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="导航菜单">
|
||||
<!-- Local TOC -->
|
||||
<div class="local-toc"><ul>
|
||||
<li><a class="reference internal" href="#">在ROS 2中启用和可视化点云</a><ul>
|
||||
<li><a class="reference internal" href="#id1">启用深度点云</a><ul>
|
||||
<li><a class="reference internal" href="#id2">启用深度点云的命令</a></li>
|
||||
<li><a class="reference internal" href="#rviz2">在RViz2中可视化深度点云</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#id3">启用彩色点云</a><ul>
|
||||
<li><a class="reference internal" href="#id4">启用彩色点云的命令</a></li>
|
||||
<li><a class="reference internal" href="#id5">在RViz2中可视化彩色点云</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="移动版导航菜单" >
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../../index.html">OrbbecSDK V2 ROS2 封装</a>
|
||||
</nav>
|
||||
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content">
|
||||
<div role="navigation" aria-label="页面导航">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
||||
<li class="breadcrumb-item active">在ROS 2中启用和可视化点云</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
<a href="../../../_sources/source/camera_devices/4_application_guide/point_cloud.md.txt" rel="nofollow"> 查看页面源码</a>
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<div class="lang-switch" style="margin:0 0 1em 0; font-size:0.9em;"><a class="lang-other" href="#">English</a> | <a class="lang-current" href="#">中文</a></div><script>(function(){var p=window.location.pathname;var isEn=p.indexOf('/en/')!==-1 && p.indexOf('/zh/')===-1;if(p.indexOf('/zh/')!==-1) isEn=false;var other = isEn ? p.replace(/\/en\//, '/zh/') : p.replace(/\/zh\//, '/en/');var current=p;var sw=document.querySelector('.lang-switch'); if(!sw) return;var o=sw.querySelector('.lang-other'); var c=sw.querySelector('.lang-current');if(isEn){ o.textContent='中文'; c.textContent='English'; } else { o.textContent='English'; c.textContent='中文'; }o.setAttribute('href', other); c.setAttribute('href', current);})();</script><section id="ros-2">
|
||||
<h1>在ROS 2中启用和可视化点云<a class="headerlink" href="#ros-2" title="Link to this heading"></a></h1>
|
||||
<p>本节演示如何从相机节点启用点云数据输出并使用RViz2进行可视化。</p>
|
||||
<section id="id1">
|
||||
<h2>启用深度点云<a class="headerlink" href="#id1" title="Link to this heading"></a></h2>
|
||||
<section id="id2">
|
||||
<h3>启用深度点云的命令<a class="headerlink" href="#id2" title="Link to this heading"></a></h3>
|
||||
<p>要激活深度信息的点云数据流,使用以下命令:</p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>launch<span class="w"> </span>orbbec_camera<span class="w"> </span>gemini_330_series.launch.py<span class="w"> </span>enable_point_cloud:<span class="o">=</span><span class="nb">true</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="rviz2">
|
||||
<h3>在RViz2中可视化深度点云<a class="headerlink" href="#rviz2" title="Link to this heading"></a></h3>
|
||||
<p>运行上述命令后,执行以下步骤可视化深度点云:</p>
|
||||
<ol class="simple">
|
||||
<li><p>打开RViz2。</p></li>
|
||||
<li><p>添加 <code class="docutils literal notranslate"><span class="pre">PointCloud2</span></code> 显示。</p></li>
|
||||
<li><p>选择 <code class="docutils literal notranslate"><span class="pre">/camera/depth/points</span></code> 话题进行可视化。</p></li>
|
||||
<li><p>将固定帧设置为 <code class="docutils literal notranslate"><span class="pre">camera_link</span></code> 以正确对齐数据。</p></li>
|
||||
</ol>
|
||||
<ul class="simple">
|
||||
<li><p><strong>可视化示例</strong></p></li>
|
||||
</ul>
|
||||
<p>深度点云在RViz2中可能如下所示:</p>
|
||||
<p><img alt="深度点云可视化" src="../../../_images/image5.jpg" /></p>
|
||||
</section>
|
||||
</section>
|
||||
<section id="id3">
|
||||
<h2>启用彩色点云<a class="headerlink" href="#id3" title="Link to this heading"></a></h2>
|
||||
<section id="id4">
|
||||
<h3>启用彩色点云的命令<a class="headerlink" href="#id4" title="Link to this heading"></a></h3>
|
||||
<p>要启用彩色点云功能,输入以下命令:</p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>launch<span class="w"> </span>orbbec_camera<span class="w"> </span>gemini_330_series.launch.py<span class="w"> </span>enable_colored_point_cloud:<span class="o">=</span><span class="nb">true</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="id5">
|
||||
<h3>在RViz2中可视化彩色点云<a class="headerlink" href="#id5" title="Link to this heading"></a></h3>
|
||||
<p>要可视化彩色点云数据:</p>
|
||||
<ol class="simple">
|
||||
<li><p>执行命令后启动RViz2。</p></li>
|
||||
<li><p>添加 <code class="docutils literal notranslate"><span class="pre">PointCloud2</span></code> 显示面板。</p></li>
|
||||
<li><p>从列表中选择 <code class="docutils literal notranslate"><span class="pre">/camera/depth_registered/points</span></code> 话题。</p></li>
|
||||
<li><p>确保固定帧设置为 <code class="docutils literal notranslate"><span class="pre">camera_link</span></code>。</p></li>
|
||||
</ol>
|
||||
<ul class="simple">
|
||||
<li><p><strong>可视化示例</strong></p></li>
|
||||
</ul>
|
||||
<p>RViz2中彩色点云的结果应该如下所示:</p>
|
||||
<p><img alt="彩色点云可视化" src="../../../_images/image6.jpg" /></p>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>© 版权所有 2025, 奥比中光科技集团股份有限公司 www.orbbec.com.。
|
||||
<span class="lastupdated">最后更新于 2026年01月04日 01:12:35.
|
||||
</span></p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,458 @@
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="zh-CN" data-content_root="../../../">
|
||||
<head>
|
||||
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>所有可用的相机控制服务 — OrbbecSDK V2 ROS2 封装 文档</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=b86133f3" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/theme.css?v=e59714d7" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/custom.css?v=63de077d" />
|
||||
|
||||
|
||||
<link rel="shortcut icon" href="../../../_static/orbbec_footerlogo_3d_world.svg"/>
|
||||
<script src="../../../_static/jquery.js?v=5d32c60e"></script>
|
||||
<script src="../../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=7d86a446"></script>
|
||||
<script src="../../../_static/doctools.js?v=9bcbadda"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
<script src="../../../_static/translations.js?v=beaddf03"></script>
|
||||
<script src="../../../_static/js/theme.js"></script>
|
||||
<link rel="index" title="索引" href="../../../genindex.html" />
|
||||
<link rel="search" title="搜索" href="../../../search.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../../index.html" class="icon icon-home">
|
||||
OrbbecSDK V2 ROS2 封装
|
||||
</a>
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="搜索文档" aria-label="搜索文档" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="导航菜单">
|
||||
<!-- Local TOC -->
|
||||
<div class="local-toc"><ul>
|
||||
<li><a class="reference internal" href="#">所有可用的相机控制服务</a><ul>
|
||||
<li><a class="reference internal" href="#id2">数据流控制</a><ul>
|
||||
<li><a class="reference internal" href="#id3">彩色流</a></li>
|
||||
<li><a class="reference internal" href="#id4">深度流</a></li>
|
||||
<li><a class="reference internal" href="#id5">红外流</a></li>
|
||||
<li><a class="reference internal" href="#id6">所有数据流</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#id7">传感器与发射器控制</a></li>
|
||||
<li><a class="reference internal" href="#id8">设备信息与管理</a></li>
|
||||
<li><a class="reference internal" href="#id9">同步与触发</a></li>
|
||||
<li><a class="reference internal" href="#id10">深度滤波器配置</a></li>
|
||||
<li><a class="reference internal" href="#id11">数据捕获与校准管理</a></li>
|
||||
<li><a class="reference internal" href="#id12">点云下采样</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="移动版导航菜单" >
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../../index.html">OrbbecSDK V2 ROS2 封装</a>
|
||||
</nav>
|
||||
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content">
|
||||
<div role="navigation" aria-label="页面导航">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
||||
<li class="breadcrumb-item active">所有可用的相机控制服务</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
<a href="../../../_sources/source/camera_devices/4_application_guide/services.md.txt" rel="nofollow"> 查看页面源码</a>
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<div class="lang-switch" style="margin:0 0 1em 0; font-size:0.9em;"><a class="lang-other" href="#">English</a> | <a class="lang-current" href="#">中文</a></div><script>(function(){var p=window.location.pathname;var isEn=p.indexOf('/en/')!==-1 && p.indexOf('/zh/')===-1;if(p.indexOf('/zh/')!==-1) isEn=false;var other = isEn ? p.replace(/\/en\//, '/zh/') : p.replace(/\/zh\//, '/en/');var current=p;var sw=document.querySelector('.lang-switch'); if(!sw) return;var o=sw.querySelector('.lang-other'); var c=sw.querySelector('.lang-current');if(isEn){ o.textContent='中文'; c.textContent='English'; } else { o.textContent='English'; c.textContent='中文'; }o.setAttribute('href', other); c.setAttribute('href', current);})();</script><section id="id1">
|
||||
<h1>所有可用的相机控制服务<a class="headerlink" href="#id1" title="Link to this heading"></a></h1>
|
||||
<blockquote>
|
||||
<div><p><strong>注意:</strong> 与特定数据流相关的服务(例如 <code class="docutils literal notranslate"><span class="pre">/camera/set_color_*</span></code>)仅在启动文件中启用该数据流时可用(例如 <code class="docutils literal notranslate"><span class="pre">enable_color:=true</span></code>)。</p>
|
||||
</div></blockquote>
|
||||
<section id="id2">
|
||||
<h2>数据流控制<a class="headerlink" href="#id2" title="Link to this heading"></a></h2>
|
||||
<section id="id3">
|
||||
<h3>彩色流<a class="headerlink" href="#id3" title="Link to this heading"></a></h3>
|
||||
<ul>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/toggle_color</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/toggle_color<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">'{data: true}'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/get_color_exposure</span></code> & <code class="docutils literal notranslate"><span class="pre">/camera/get_color_gain</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/get_color_exposure<span class="w"> </span>orbbec_camera_msgs/srv/GetInt32<span class="w"> </span><span class="s1">'{}'</span>
|
||||
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/get_color_gain<span class="w"> </span>orbbec_camera_msgs/srv/GetInt32<span class="w"> </span><span class="s1">'{}'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_color_auto_exposure</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_color_auto_exposure<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">'{data: true}'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_color_exposure</span></code> & <code class="docutils literal notranslate"><span class="pre">/camera/set_color_gain</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_color_exposure<span class="w"> </span>orbbec_camera_msgs/srv/SetInt32<span class="w"> </span><span class="s1">'{data: 1}'</span>
|
||||
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_color_gain<span class="w"> </span>orbbec_camera_msgs/srv/SetInt32<span class="w"> </span><span class="s1">'{data: 64}'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_color_mirror</span></code>, <code class="docutils literal notranslate"><span class="pre">/camera/set_color_flip</span></code>, <code class="docutils literal notranslate"><span class="pre">/camera/set_color_rotation</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_color_mirror<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">'{data: true}'</span>
|
||||
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_color_flip<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">'{data: true}'</span>
|
||||
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_color_rotation<span class="w"> </span>orbbec_camera_msgs/srv/SetInt32<span class="w"> </span><span class="s1">'{data: 180}'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_color_ae_roi</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># data_param: [左, 右, 上, 下]</span>
|
||||
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_color_ae_roi<span class="w"> </span>orbbec_camera_msgs/srv/SetArrays<span class="w"> </span><span class="s1">'{data_param: [0,1279,0,719]}'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="id4">
|
||||
<h3>深度流<a class="headerlink" href="#id4" title="Link to this heading"></a></h3>
|
||||
<ul>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/toggle_depth</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/toggle_depth<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">'{data: true}'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/get_depth_exposure</span></code> & <code class="docutils literal notranslate"><span class="pre">/camera/get_depth_gain</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/get_depth_exposure<span class="w"> </span>orbbec_camera_msgs/srv/GetInt32<span class="w"> </span><span class="s1">'{}'</span>
|
||||
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/get_depth_gain<span class="w"> </span>orbbec_camera_msgs/srv/GetInt32<span class="w"> </span><span class="s1">'{}'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_depth_auto_exposure</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_depth_auto_exposure<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">'{data: true}'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_depth_exposure</span></code> & <code class="docutils literal notranslate"><span class="pre">/camera/set_depth_gain</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_depth_exposure<span class="w"> </span>orbbec_camera_msgs/srv/SetInt32<span class="w"> </span><span class="s1">'{data: 3000}'</span>
|
||||
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_depth_gain<span class="w"> </span>orbbec_camera_msgs/srv/SetInt32<span class="w"> </span><span class="s1">'{data: 64}'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_depth_mirror</span></code>, <code class="docutils literal notranslate"><span class="pre">/camera/set_depth_flip</span></code>, <code class="docutils literal notranslate"><span class="pre">/camera/set_depth_rotation</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_depth_mirror<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">'{data: true}'</span>
|
||||
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_depth_flip<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">'{data: true}'</span>
|
||||
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_depth_rotation<span class="w"> </span>orbbec_camera_msgs/srv/SetInt32<span class="w"> </span><span class="s1">'{data: 180}'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_depth_ae_roi</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># data_param: [左, 右, 上, 下]</span>
|
||||
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_depth_ae_roi<span class="w"> </span>orbbec_camera_msgs/srv/SetArrays<span class="w"> </span><span class="s1">'{data_param: [0,847,0,479]}'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="id5">
|
||||
<h3>红外流<a class="headerlink" href="#id5" title="Link to this heading"></a></h3>
|
||||
<ul>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/toggle_ir</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/toggle_ir<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">'{data: true}'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/get_ir_exposure</span></code> & <code class="docutils literal notranslate"><span class="pre">/camera/get_ir_gain</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/get_ir_exposure<span class="w"> </span>orbbec_camera_msgs/srv/GetInt32<span class="w"> </span><span class="s1">'{}'</span>
|
||||
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/get_ir_gain<span class="w"> </span>orbbec_camera_msgs/srv/GetInt32<span class="w"> </span><span class="s1">'{}'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_ir_long_exposure</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_ir_long_exposure<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">'{data: true}'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_ir_auto_exposure</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_ir_auto_exposure<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">'{data: true}'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_ir_exposure</span></code> & <code class="docutils literal notranslate"><span class="pre">/camera/set_ir_gain</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_ir_exposure<span class="w"> </span>orbbec_camera_msgs/srv/SetInt32<span class="w"> </span><span class="s1">'{data: 3000}'</span>
|
||||
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_ir_gain<span class="w"> </span>orbbec_camera_msgs/srv/SetInt32<span class="w"> </span><span class="s1">'{data: 64}'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_ir_mirror</span></code>, <code class="docutils literal notranslate"><span class="pre">/camera/set_ir_flip</span></code>, <code class="docutils literal notranslate"><span class="pre">/camera/set_ir_rotation</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_ir_mirror<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">'{data: true}'</span>
|
||||
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_ir_flip<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">'{data: true}'</span>
|
||||
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_ir_rotation<span class="w"> </span>orbbec_camera_msgs/srv/SetInt32<span class="w"> </span><span class="s1">'{data: 180}'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/switch_ir</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/switch_ir<span class="w"> </span>orbbec_camera_msgs/srv/SetString<span class="w"> </span><span class="s1">'{data: left}'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="id6">
|
||||
<h3>所有数据流<a class="headerlink" href="#id6" title="Link to this heading"></a></h3>
|
||||
<ul>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/get_streams_enable</span></code> & <code class="docutils literal notranslate"><span class="pre">/camera/set_streams_enable</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/get_streams_enable<span class="w"> </span>orbbec_camera_msgs/srv/GetBool<span class="w"> </span><span class="s1">'{}'</span>
|
||||
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_streams_enable<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">'{data: false}'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
</section>
|
||||
<section id="id7">
|
||||
<h2>传感器与发射器控制<a class="headerlink" href="#id7" title="Link to this heading"></a></h2>
|
||||
<ul>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_auto_white_balance</span></code> & <code class="docutils literal notranslate"><span class="pre">/camera/get_auto_white_balance</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_auto_white_balance<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">'{data: true}'</span>
|
||||
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/get_auto_white_balance<span class="w"> </span>orbbec_camera_msgs/srv/GetInt32<span class="w"> </span><span class="s1">'{}'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_white_balance</span></code> & <code class="docutils literal notranslate"><span class="pre">/camera/get_white_balance</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_white_balance<span class="w"> </span>orbbec_camera_msgs/srv/SetInt32<span class="w"> </span><span class="s1">'{data: 2800}'</span>
|
||||
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/get_white_balance<span class="w"> </span>orbbec_camera_msgs/srv/GetInt32<span class="w"> </span><span class="s1">'{}'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_laser_enable</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_laser_enable<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">'{data: true}'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p><code class="docutils literal notranslate"><span class="pre">/camera/get_laser_status</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/get_laser_status<span class="w"> </span>orbbec_camera_msgs/srv/GetBool<span class="w"> </span><span class="s1">'{}'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_ldp_enable</span></code> & <code class="docutils literal notranslate"><span class="pre">/camera/get_ldp_status</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_ldp_enable<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">'{data: true}'</span>
|
||||
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/get_ldp_status<span class="w"> </span>orbbec_camera_msgs/srv/GetBool<span class="w"> </span><span class="s1">'{}'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_ptp_config</span></code> & <code class="docutils literal notranslate"><span class="pre">/camera/get_ptp_config</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_ptp_config<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">'{data: true}'</span>
|
||||
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/get_ptp_config<span class="w"> </span>orbbec_camera_msgs/srv/GetBool<span class="w"> </span><span class="s1">'{}'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/get_lrm_measure_distance</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/get_lrm_measure_distance<span class="w"> </span>orbbec_camera_msgs/srv/GetInt32<span class="w"> </span><span class="s1">'{}'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_fan_work_mode</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_fan_work_mode<span class="w"> </span>orbbec_camera_msgs/srv/SetInt32<span class="w"> </span><span class="s1">'{data: 0}'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_floor_enable</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_floor_enable<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">'{data: true}'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="id8">
|
||||
<h2>设备信息与管理<a class="headerlink" href="#id8" title="Link to this heading"></a></h2>
|
||||
<ul>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/get_device_info</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/get_device_info<span class="w"> </span>orbbec_camera_msgs/srv/GetDeviceInfo
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/get_sdk_version</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/get_sdk_version<span class="w"> </span>orbbec_camera_msgs/srv/GetString
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/reboot_device</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/reboot_device<span class="w"> </span>std_srvs/srv/Empty<span class="w"> </span><span class="s1">'{}'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="id9">
|
||||
<h2>同步与触发<a class="headerlink" href="#id9" title="Link to this heading"></a></h2>
|
||||
<ul>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/send_software_trigger</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/send_software_trigger<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">'{data: true}'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_sync_hosttime</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_sync_hosttime<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">'{data: true}'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_reset_timestamp</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># 仅在time_domain参数设置为device时可用</span>
|
||||
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_reset_timestamp<span class="w"> </span>std_srvs/srv/SetBool<span class="w"> </span><span class="s1">'{data: true}'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_sync_interleaverlaser</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># 仅在interleave_ae_mode为'laser'且interleave_frame_enable为true时可用</span>
|
||||
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_sync_interleaverlaser<span class="w"> </span>orbbec_camera_msgs/srv/SetInt32<span class="w"> </span><span class="s1">'{data: 0}'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="id10">
|
||||
<h2>深度滤波器配置<a class="headerlink" href="#id10" title="Link to this heading"></a></h2>
|
||||
<ul>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_filter</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># 设置DecimationFilter</span>
|
||||
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_filter<span class="w"> </span>orbbec_camera_msgs/srv/SetFilter<span class="w"> </span><span class="s1">'{filter_name: DecimationFilter, filter_enable: false, filter_param: [5]}'</span>
|
||||
|
||||
<span class="c1"># 设置SpatialAdvancedFilter</span>
|
||||
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_filter<span class="w"> </span>orbbec_camera_msgs/srv/SetFilter<span class="w"> </span><span class="s1">'{filter_name: SpatialAdvancedFilter, filter_enable: true, filter_param: [0.5,160,1,8]}'</span>
|
||||
|
||||
<span class="c1"># 设置SequenceIdFilter</span>
|
||||
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_filter<span class="w"> </span>orbbec_camera_msgs/srv/SetFilter<span class="w"> </span><span class="s1">'{filter_name: SequenceIdFilter, filter_enable: true, filter_param: [1]}'</span>
|
||||
|
||||
<span class="c1"># 设置ThresholdFilter</span>
|
||||
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_filter<span class="w"> </span>orbbec_camera_msgs/srv/SetFilter<span class="w"> </span><span class="s1">'{filter_name: ThresholdFilter, filter_enable: true, filter_param: [0,15999]}'</span>
|
||||
|
||||
<span class="c1"># 设置NoiseRemovalFilter</span>
|
||||
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_filter<span class="w"> </span>orbbec_camera_msgs/srv/SetFilter<span class="w"> </span><span class="s1">'{filter_name: NoiseRemovalFilter, filter_enable: true, filter_param: [256,80]}'</span>
|
||||
|
||||
<span class="c1"># 设置HardwareNoiseRemoval</span>
|
||||
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_filter<span class="w"> </span>orbbec_camera_msgs/srv/SetFilter<span class="w"> </span><span class="s1">'{filter_name: HardwareNoiseRemoval, filter_enable: true, filter_param: []}'</span>
|
||||
|
||||
<span class="c1"># 设置SpatialFastFilter</span>
|
||||
<span class="c1"># filter_param: [radius]</span>
|
||||
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_filter<span class="w"> </span>orbbec_camera_msgs/srv/SetFilter<span class="w"> </span><span class="s1">'{filter_name: SpatialFastFilter, filter_enable: true, filter_param: [4]}'</span>
|
||||
|
||||
<span class="c1"># 设置SpatialModerateFilter</span>
|
||||
<span class="c1"># filter_param: [disp_diff, magnitude, radius]</span>
|
||||
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_filter<span class="w"> </span>orbbec_camera_msgs/srv/SetFilter<span class="w"> </span><span class="s1">'{filter_name: SpatialModerateFilter, filter_enable: true, filter_param: [160,1,3]}'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="id11">
|
||||
<h2>数据捕获与校准管理<a class="headerlink" href="#id11" title="Link to this heading"></a></h2>
|
||||
<ul>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/save_images</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/save_images<span class="w"> </span>std_srvs/srv/Empty<span class="w"> </span><span class="s1">'{}'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/save_point_cloud</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/save_point_cloud<span class="w"> </span>std_srvs/srv/Empty<span class="w"> </span><span class="s1">'{}'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<blockquote>
|
||||
<div><p><strong>注意</strong>:以下服务目前仅支持435Le模块。每个服务一次只能存储一组数据或字符串。</p>
|
||||
</div></blockquote>
|
||||
<ul>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/write_customer_data</span></code> & <code class="docutils literal notranslate"><span class="pre">/camera/read_customer_data</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/write_customer_data<span class="w"> </span>orbbec_camera_msgs/srv/SetString<span class="w"> </span><span class="s1">'{data: "string"}'</span>
|
||||
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/read_customer_data<span class="w"> </span>orbbec_camera_msgs/srv/GetString<span class="w"> </span><span class="s1">'{}'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_user_calib_params</span></code> & <code class="docutils literal notranslate"><span class="pre">/camera/get_user_calib_params</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_user_calib_params<span class="w"> </span>orbbec_camera_msgs/srv/SetUserCalibParams<span class="w"> </span><span class="se">\</span>
|
||||
<span class="s1">'{k: [614.9613647460938, 0.0, 634.91552734375,</span>
|
||||
<span class="s1"> 0.0, 614.65771484375, 391.407470703125,</span>
|
||||
<span class="s1"> 0.0, 0.0, 1.0],</span>
|
||||
<span class="s1"> d: [-0.03131488710641861,</span>
|
||||
<span class="s1"> 0.032955970615148544,</span>
|
||||
<span class="s1"> 9.096559369936585e-05,</span>
|
||||
<span class="s1"> -0.0003368517500348389,</span>
|
||||
<span class="s1"> -0.01115430984646082,</span>
|
||||
<span class="s1"> 0.0, 0.0, 0.0],</span>
|
||||
<span class="s1"> rotation: [0.9999880790710449, 0.0003024190664291382, -0.004874417092651129,</span>
|
||||
<span class="s1"> -0.0002965621242765337, 0.9999992251396179, 0.001202247804030776,</span>
|
||||
<span class="s1"> 0.004874777048826218, -0.0012007878394797444, 0.9999874234199524],</span>
|
||||
<span class="s1"> translation: [-0.023897956848144532,</span>
|
||||
<span class="s1"> -9.439220279455185e-05,</span>
|
||||
<span class="s1"> -6.804073229432106e-06]}'</span>
|
||||
ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/get_user_calib_params<span class="w"> </span>orbbec_camera_msgs/srv/GetUserCalibParams<span class="w"> </span><span class="s1">'{}'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="id12">
|
||||
<h2>点云下采样<a class="headerlink" href="#id12" title="Link to this heading"></a></h2>
|
||||
<ul>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/set_point_cloud_decimation</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/set_point_cloud_decimation<span class="w"> </span>orbbec_camera_msgs/srv/SetInt32<span class="w"> </span><span class="s1">'{data: 8}'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/get_point_cloud_decimation</span></code></p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>ros2<span class="w"> </span>service<span class="w"> </span>call<span class="w"> </span>/camera/get_point_cloud_decimation<span class="w"> </span>orbbec_camera_msgs/srv/GetInt32<span class="w"> </span><span class="s1">'{}'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>© 版权所有 2025, 奥比中光科技集团股份有限公司 www.orbbec.com.。
|
||||
<span class="lastupdated">最后更新于 2026年01月04日 01:12:35.
|
||||
</span></p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,228 @@
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="zh-CN" data-content_root="../../../">
|
||||
<head>
|
||||
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>可用话题 — OrbbecSDK V2 ROS2 封装 文档</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=b86133f3" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/theme.css?v=e59714d7" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/custom.css?v=63de077d" />
|
||||
|
||||
|
||||
<link rel="shortcut icon" href="../../../_static/orbbec_footerlogo_3d_world.svg"/>
|
||||
<script src="../../../_static/jquery.js?v=5d32c60e"></script>
|
||||
<script src="../../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=7d86a446"></script>
|
||||
<script src="../../../_static/doctools.js?v=9bcbadda"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
<script src="../../../_static/translations.js?v=beaddf03"></script>
|
||||
<script src="../../../_static/js/theme.js"></script>
|
||||
<link rel="index" title="索引" href="../../../genindex.html" />
|
||||
<link rel="search" title="搜索" href="../../../search.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../../index.html" class="icon icon-home">
|
||||
OrbbecSDK V2 ROS2 封装
|
||||
</a>
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="搜索文档" aria-label="搜索文档" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="导航菜单">
|
||||
<!-- Local TOC -->
|
||||
<div class="local-toc"><ul>
|
||||
<li><a class="reference internal" href="#">可用话题</a><ul>
|
||||
<li><a class="reference internal" href="#id2">图像流</a></li>
|
||||
<li><a class="reference internal" href="#id3">点云话题</a></li>
|
||||
<li><a class="reference internal" href="#imu">IMU话题</a></li>
|
||||
<li><a class="reference internal" href="#id4">设备状态与诊断</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="移动版导航菜单" >
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../../index.html">OrbbecSDK V2 ROS2 封装</a>
|
||||
</nav>
|
||||
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content">
|
||||
<div role="navigation" aria-label="页面导航">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
||||
<li class="breadcrumb-item active">可用话题</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
<a href="../../../_sources/source/camera_devices/4_application_guide/topics.md.txt" rel="nofollow"> 查看页面源码</a>
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<div class="lang-switch" style="margin:0 0 1em 0; font-size:0.9em;"><a class="lang-other" href="#">English</a> | <a class="lang-current" href="#">中文</a></div><script>(function(){var p=window.location.pathname;var isEn=p.indexOf('/en/')!==-1 && p.indexOf('/zh/')===-1;if(p.indexOf('/zh/')!==-1) isEn=false;var other = isEn ? p.replace(/\/en\//, '/zh/') : p.replace(/\/zh\//, '/en/');var current=p;var sw=document.querySelector('.lang-switch'); if(!sw) return;var o=sw.querySelector('.lang-other'); var c=sw.querySelector('.lang-current');if(isEn){ o.textContent='中文'; c.textContent='English'; } else { o.textContent='English'; c.textContent='中文'; }o.setAttribute('href', other); c.setAttribute('href', current);})();</script><section id="id1">
|
||||
<h1>可用话题<a class="headerlink" href="#id1" title="Link to this heading"></a></h1>
|
||||
<p>话题按数据流和功能组织。默认情况下,所有话题都发布在 <code class="docutils literal notranslate"><span class="pre">/camera</span></code> 命名空间下,可以通过 <code class="docutils literal notranslate"><span class="pre">camera_name</span></code> 启动参数进行更改。</p>
|
||||
<blockquote>
|
||||
<div><p><strong>注意:</strong> 特定数据流的话题(例如 <code class="docutils literal notranslate"><span class="pre">/camera/color/...</span></code>)只有在相应的启动参数(例如 <code class="docutils literal notranslate"><span class="pre">enable_color</span></code>)设置为 <code class="docutils literal notranslate"><span class="pre">true</span></code> 时才会发布。</p>
|
||||
</div></blockquote>
|
||||
<section id="id2">
|
||||
<h2>图像流<a class="headerlink" href="#id2" title="Link to this heading"></a></h2>
|
||||
<p>这些话题提供每个启用的相机数据流的原始图像数据和相应的校准信息。对于 <code class="docutils literal notranslate"><span class="pre">color</span></code>、<code class="docutils literal notranslate"><span class="pre">depth</span></code>、<code class="docutils literal notranslate"><span class="pre">ir</span></code>、<code class="docutils literal notranslate"><span class="pre">left_ir</span></code> 和 <code class="docutils literal notranslate"><span class="pre">right_ir</span></code> 数据流,模式是一致的。</p>
|
||||
<ul class="simple">
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/color/image_raw</span></code></p>
|
||||
<ul>
|
||||
<li><p>彩色流的原始图像数据。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/color/camera_info</span></code></p>
|
||||
<ul>
|
||||
<li><p>彩色流的相机校准数据和元数据。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/color/metadata</span></code></p>
|
||||
<ul>
|
||||
<li><p>来自彩色流固件的底层元数据。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/depth/image_raw</span></code></p>
|
||||
<ul>
|
||||
<li><p>深度流的原始图像数据。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/depth/camera_info</span></code></p>
|
||||
<ul>
|
||||
<li><p>深度流的相机校准数据和元数据。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/depth/metadata</span></code></p>
|
||||
<ul>
|
||||
<li><p>来自深度流固件的底层元数据。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/ir/image_raw</span></code></p>
|
||||
<ul>
|
||||
<li><p>红外(IR)流的原始图像数据。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/ir/camera_info</span></code></p>
|
||||
<ul>
|
||||
<li><p>IR流的相机校准数据和元数据。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/ir/metadata</span></code></p>
|
||||
<ul>
|
||||
<li><p>来自IR流固件的底层元数据。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="id3">
|
||||
<h2>点云话题<a class="headerlink" href="#id3" title="Link to this heading"></a></h2>
|
||||
<ul class="simple">
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/depth/points</span></code></p>
|
||||
<ul>
|
||||
<li><p>从深度流生成的点云数据。</p></li>
|
||||
<li><p><strong>条件:</strong> 仅在 <code class="docutils literal notranslate"><span class="pre">enable_point_cloud</span></code> 为 <code class="docutils literal notranslate"><span class="pre">true</span></code> 时发布。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/depth_registered/points</span></code></p>
|
||||
<ul>
|
||||
<li><p>彩色点云数据,其中深度点配准到彩色图像帧。</p></li>
|
||||
<li><p><strong>条件:</strong> 仅在 <code class="docutils literal notranslate"><span class="pre">enable_colored_point_cloud</span></code> 为 <code class="docutils literal notranslate"><span class="pre">true</span></code> 时发布。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="imu">
|
||||
<h2>IMU话题<a class="headerlink" href="#imu" title="Link to this heading"></a></h2>
|
||||
<p>惯性测量单元(IMU)话题提供加速度计和陀螺仪数据。其行为取决于同步设置。</p>
|
||||
<ul class="simple">
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/accel/sample</span></code></p>
|
||||
<ul>
|
||||
<li><p>单独的加速度计数据流。</p></li>
|
||||
<li><p><strong>条件:</strong> 在 <code class="docutils literal notranslate"><span class="pre">enable_accel</span></code> 为 <code class="docutils literal notranslate"><span class="pre">true</span></code> 且 <code class="docutils literal notranslate"><span class="pre">enable_sync_output_accel_gyro</span></code> 为 <code class="docutils literal notranslate"><span class="pre">false</span></code> 时发布。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/gyro/sample</span></code></p>
|
||||
<ul>
|
||||
<li><p>单独的陀螺仪数据流。</p></li>
|
||||
<li><p><strong>条件:</strong> 在 <code class="docutils literal notranslate"><span class="pre">enable_gyro</span></code> 为 <code class="docutils literal notranslate"><span class="pre">true</span></code> 且 <code class="docutils literal notranslate"><span class="pre">enable_sync_output_accel_gyro</span></code> 为 <code class="docutils literal notranslate"><span class="pre">false</span></code> 时发布。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/gyro_accel/sample</span></code></p>
|
||||
<ul>
|
||||
<li><p>包含加速度计和陀螺仪数据的同步数据流(单条消息)。</p></li>
|
||||
<li><p><strong>条件:</strong> 在 <code class="docutils literal notranslate"><span class="pre">enable_sync_output_accel_gyro</span></code> 为 <code class="docutils literal notranslate"><span class="pre">true</span></code> 时发布。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="id4">
|
||||
<h2>设备状态与诊断<a class="headerlink" href="#id4" title="Link to this heading"></a></h2>
|
||||
<ul class="simple">
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/device_status</span></code></p>
|
||||
<ul>
|
||||
<li><p>报告相机设备的当前状态。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/camera/depth_filter_status</span></code></p>
|
||||
<ul>
|
||||
<li><p>报告深度传感器后处理滤波器的状态。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">/diagnostics</span></code></p>
|
||||
<ul>
|
||||
<li><p>发布相机节点的诊断信息。目前包括设备温度。</p></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>© 版权所有 2025, 奥比中光科技集团股份有限公司 www.orbbec.com.。
|
||||
<span class="lastupdated">最后更新于 2026年01月04日 01:12:35.
|
||||
</span></p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user