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

多传感器融合定位十五-多传感器时空标定(综述)

多传感器融合定位十五-多传感器时空标定

  • 1. 多传感器标定简介
    • 1.1 标定内容及方法
    • 1.2 讲解思路
  • 2. 内参标定
    • 2.1 雷达内参标定
    • 2.2 IMU内参标定
    • 2.3 编码器内参标定
    • 2.4 相机内参标定
  • 3. 外参标定
    • 3.1 雷达和相机外参标定
    • 3.2 多雷达外参标定
    • 3.3 手眼标定
    • 3.4 融合中标定
    • 3.5 总结
  • 4. 时间标定
    • 4.1 离散时间
    • 4.2 连续时间
    • 4.3 总结

Reference:

  1. 深蓝学院-多传感器融合
  2. 多传感器融合定位理论基础

文章跳转:

  1. 多传感器融合定位一-3D激光里程计其一:ICP
  2. 多传感器融合定位二-3D激光里程计其二:NDT
  3. 多传感器融合定位三-3D激光里程计其三:点云畸变补偿
  4. 多传感器融合定位四-3D激光里程计其四:点云线面特征提取
  5. 多传感器融合定位五-点云地图构建及定位
  6. 多传感器融合定位六-惯性导航原理及误差分析
  7. 多传感器融合定位七-惯性导航解算及误差分析其一
  8. 多传感器融合定位八-惯性导航解算及误差分析其二
  9. 多传感器融合定位九-基于滤波的融合方法Ⅰ其一
  10. 多传感器融合定位十-基于滤波的融合方法Ⅰ其二
  11. 多传感器融合定位十一-基于滤波的融合方法Ⅱ
  12. 多传感器融合定位十二-基于图优化的建图方法其一
  13. 多传感器融合定位十三-基于图优化的建图方法其二
  14. 多传感器融合定位十四-基于图优化的定位方法
  15. 多传感器融合定位十五-多传感器时空标定(综述)

1. 多传感器标定简介

1.1 标定内容及方法

在这里插入图片描述

1.2 讲解思路

  1. 以思路讲解为主,并给出参考文献和开源代码,不做过多细节展开;
  2. 对已有方法做汇总分析,以求能在新的任务中掌握标定方案设计思路。

2. 内参标定

2.1 雷达内参标定

在这里插入图片描述

  1. 目的
    由于安装原因,线束之间的夹角和设计不一致,会导致测量不准。

  2. 方法
    多线束打在平面上,利用共面约束,求解夹角误差。

  3. 参考
    论文:Calibration of a rotating multi-beam Lidar
    论文:Improving the Intrinsic Calibration of a Velodyne LiDAR Sensor
    论文:3D LIDAR–camera intrinsic and extrinsic calibration: Identifiability and analytical least-squares-based initialization

2.2 IMU内参标定

  1. 目的
    由于加工原因,产生零偏、标度因数误差、安装误差。

  2. 方法
    分立级标定:基于转台;
    迭代优化标定:不需要转台。

  3. 参考
    论文:A Robust and Easy to Implement Method for IMU Calibration without External Equipments
    代码:https://github.com/Kyle-ak/imu_tk

2.3 编码器内参标定

  1. 目的
    用编码器输出解算车的位移增量和角度增量,需已知轮子半径和两轮轴距。

  2. 方法
    以车中心雷达/组合导航做观测,以此为真值,反推模型参数。

  3. 参考
    论文:Simultaneous Calibration of Odometry and Sensor Parameters for Mobile Robots

2.4 相机内参标定

在这里插入图片描述

  1. 目的
    相机与真实空间建立关联,需已知其内参。

  2. 方法
    张正友经典方法

3. 外参标定

3.1 雷达和相机外参标定

在这里插入图片描述

  1. 目的
    解算雷达和相机之间的相对旋转和平移。

  2. 方法
    PnP是主流,视觉提取特征点,雷达提取边缘,建立几何约束。

  3. 参考
    论文: LiDAR-Camera Calibration using 3D-3D Point correspondences
    代码: https://github.com/ankitdhall/lidar_camera_calibration
    论文: Automatic Extrinsic Calibration for Lidar-Stereo Vehicle Sensor Setups
    代码: https://github.com/beltransen/velo2cam_calibration

3.2 多雷达外参标定

在这里插入图片描述

  1. 目的
    多雷达是常见方案,使用时将点云直接拼接,但前提是已知雷达之间的外参(相对旋转和平移)。

  2. 方法
    基于特征(共面)建立几何约束,从而优化外参。

  3. 参考
    论文:A Novel Dual-Lidar Calibration Algorithm Using Planar Surfaces
    代码:https://github.com/ram-lab/lidar_appearance_calibration

3.3 手眼标定

在这里插入图片描述

  1. 目的
    手眼标定适用于所有无共视,但是能输出位姿的传感器之间标定。包括:
    • 无共视的相机、雷达,或雷达与雷达之间;
    • 相机与IMU,或雷达与IMU之间(前提是IMU要足够好,或直接使用组合导航)。

  2. 方法
    均基于公式 AX=XBAX=XBAX=XB

  3. 参考
    论文:LiDAR and Camera Calibration using Motion Estimated by Sensor Fusion Odometry
    代码:https://github.com/ethz-asl/lidar_align

3.4 融合中标定

  1. 目的
    • 脱离标靶,实现在线标定;
    • 某些器件无法提供准确位姿(如低精度IMU),不能手眼标定。

  2. 方法
    在融合模型中,增加外参作为待估参数。

  3. 参考
    众多vio/lio系统,如vins、 lio-mapping、 M-Loam 等

3.5 总结

  1. 这些方法中,推荐优先级从高到低为:
    a. 基于共视的标定
    b. 融合中标定
    c. 手眼标定

  2. 建议
    应在良好环境下标定,尽量避免不分场景的在线标定。良好环境指观测数据优良的场景,例如:
    a. GNSS 信号良好;
    b. 点云面特征丰富,没有特征退化;
    c. 动态物体较少

4. 时间标定

4.1 离散时间

  1. 目的
    在原有离散时间融合模式下,简单地解决时间同步问题。
    在这里插入图片描述

  2. 方案 I
    在这里插入图片描述简单但巧妙的策略: IMU时间保持不变,图像上特征点基于匀速运动模型修改位置。
    与不考虑时间误差时相比,架构不变,使用极小的改动,实现了期望的效果。
    elk=zlk−π(RckwT(Pl−pckw))zlk=[ulkvlk]T.↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓elk=zlk(td)−π(RckwT(Pl−pckw))zlk(td)=[ulkvlk]T+tdVlk.\begin{array}{l} \mathbf{e}_l^k=\mathbf{z}_l^k-\pi\left(\mathbf{R}_{c_k}^{w^T}\left(\mathbf{P}_l-\mathbf{p}_{c_k}^w\right)\right) \\ \mathbf{z}_l^k=\left[\begin{array}{ll} u_l^k & v_l^k \end{array}\right]^T . \\ \downarrow\downarrow\downarrow\downarrow\downarrow\downarrow\downarrow\downarrow\downarrow\downarrow\downarrow\downarrow\downarrow\downarrow\downarrow \\ \mathbf{e}_l^k=\mathbf{z}_l^k\left(t_d\right)-\pi\left(\mathbf{R}_{c_k}^{w^T}\left(\mathbf{P}_l-\mathbf{p}_{c_k}^w\right)\right) \\ \mathbf{z}_l^k\left(t_d\right)=\left[\begin{array}{ll} u_l^k & v_l^k \end{array}\right]^T+t_d \mathbf{V}_l^k . \end{array} elk=zlkπ(RckwT(Plpckw))zlk=[ulkvlk]T.↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓elk=zlk(td)π(RckwT(Plpckw))zlk(td)=[ulkvlk]T+tdVlk.参考文献:Online Temporal Calibration for Monocular Visual-Inertial Systems

  3. 方案 II
    在滤波中计算相机位姿时,直接按时间差对积分区间进行调整。
    状态量:x=[xITICq‾TCpITtdc1T⋯cMT]T\mathbf{x}=\left[\begin{array}{lllllll} \mathbf{x}_I^T & { }_I^C \overline{\mathbf{q}}^T & { }^C \mathbf{p}_I^T & t_d & \mathbf{c}_1^T & \cdots & \mathbf{c}_M^T \end{array}\right]^Tx=[xITICqTCpITtdc1TcMT]T
    相机位姿估计:c^new=[GCq(t+td)^GpC(t+td)^]=[ICq^⊗GIq^(t+t^d)Gp^I(t+t^d)+GIR^(t+t^d)TIp^C]\hat{\mathbf{c}}_{n e w}=\left[\begin{array}{c}{ }_G^C \widehat{\mathbf{q}\left(t+t_d\right)} \\ { }^G \widehat{\mathbf{p}_C\left(t+t_d\right)}\end{array}\right]=\left[\begin{array}{c}{ }_I^C \hat{\mathbf{q}} \otimes{ }_G^I \hat{\mathbf{q}}\left(t+\hat{t}_d\right) \\ { }^G \hat{\mathbf{p}}_I\left(t+\hat{t}_d\right)+{ }_G^I \hat{\mathbf{R}}\left(t+\hat{t}_d\right)^T{ }^I \hat{\mathbf{p}}_C\end{array}\right]c^new=[GCq(t+td)GpC(t+td)]=[ICq^GIq^(t+t^d)Gp^I(t+t^d)+GIR^(t+t^d)TIp^C]
    参考文献:Online Temporal Calibration for Camera-IMU Systems: Theory and Algorithms

4.2 连续时间

  1. 原因
    预积分中把时间差作为待估状态量,对时间差进行建模,如下:
    Δpmi=∑k=κi−1(ΔvmkΔtk+ΔRmk2f⁡(tk−δtm−bfm)Δtk2)Δvmi=∑k=κi−1ΔRmkf(tk−δtm)−bfm)ΔtkΔRmi=∏k=κi=1Exp⁡(ω(tk−δtm)−bωm)Δtk),\begin{array}{l} \Delta \mathbf{p}_m^i=\sum_{k=\kappa}^{i-1}\left(\Delta \mathbf{v}_m^k \Delta t_k+\frac{\Delta \mathbf{R}_m^k}{2} \operatorname{f}\left(t_k-\delta_t^m-\mathbf{b}_f^m\right) \Delta t_k^2\right) \\ \left.\Delta \mathbf{v}_m^i=\sum_{k=\kappa}^{i-1} \Delta \mathbf{R}_m^k \mathbf{f}\left(t_k-\delta_t^m\right)-\mathbf{b}_f^m\right) \Delta t_k \\ \left.\Delta \mathbf{R}_m^i=\prod_{k=\kappa}^{i=1} \operatorname{Exp}\left(\omega\left(t_k-\delta_t^m\right)-\mathbf{b}_\omega^m\right) \Delta t_k\right), \end{array} Δpmi=k=κi1(ΔvmkΔtk+2ΔRmkf(tkδtmbfm)Δtk2)Δvmi=k=κi1ΔRmkf(tkδtm)bfm)ΔtkΔRmi=k=κi=1Exp(ω(tkδtm)bωm)Δtk),由于要对时间差求雅可比,因此插值函数必须可导,雅可比如下:
    ΔRm(bω,δt)i≈ΔRm(bˉωm,δˉδm)iExp⁡(∂ΔRmi∂bωb^ωm+∂ΔRmi∂δtδ^tm).Δvm(bf,bω,δt)i≈ΔΔvm(bˉfm,bˉmm,δˉtm)i+∂Δvmi∂bfb^fm+∂Δvmi∂bωb^ωm+∂Δvmi∂δtδ^tmΔpm(bf,bω,,δt)i≈Δpm(bfm‾,bˉmm,δˉtm)i+∂Δpmm∂bfb^fm+∂Δpmi∂bωb^ωm+∂Δpmi∂δtδ^tm\begin{array}{l} \Delta \mathbf{R}_{m\left(\mathbf{b}_\omega, \delta_t\right)}^i \approx \Delta \mathbf{R}_{m\left(\bar{b}_\omega^m, \bar{\delta}_\delta^m\right)}^i \operatorname{Exp}\left(\frac{\partial \Delta \mathbf{R}_m^i}{\partial \mathbf{b}_\omega} \hat{\mathbf{b}}_\omega^m+\frac{\partial \Delta \mathbf{R}_m^i}{\partial \delta_t} \hat{\delta}_t^m\right). \\ \Delta \mathbf{v}_{m\left(\mathbf{b}_f, \mathbf{b}_\omega, \delta_t\right)}^i \approx \Delta \Delta \mathbf{v}_{m\left(\bar{b}_f^m, \bar{b}_m^m, \bar{\delta}_t^m\right)}^i+\frac{\partial \Delta \mathbf{v}_m^i}{\partial \mathbf{b}_f} \hat{\mathbf{b}}_f^m +\frac{\partial \Delta \mathbf{v}_m^i}{\partial \mathbf{b}_\omega} \hat{\mathbf{b}}_\omega^m+\frac{\partial \Delta \mathbf{v}_m^i}{\partial \delta_t} \hat{\delta}_t^m \\ \Delta \mathbf{p}_{m\left(\mathbf{b}_f, \mathbf{b}_{\omega,}, \delta_t\right)}^i \approx \Delta \mathbf{p}_{m\left(\overline{\mathbf{b}_f^m}, \bar{b}_m^m, \bar{\delta}_t^m\right)}^i+\frac{\partial \Delta \mathbf{p}_m^m}{\partial \mathbf{b}_f} \hat{\mathbf{b}}_f^m +\frac{\partial \Delta \mathbf{p}_m^i}{\partial \mathbf{b}_\omega} \hat{b}_\omega^m+\frac{\partial \Delta \mathbf{p}_m^i}{\partial \delta_t} \hat{\delta}_t^m \\ \end{array} ΔRm(bω,δt)iΔRm(bˉωm,δˉδm)iExp(bωΔRmib^ωm+δtΔRmiδ^tm).Δvm(bf,bω,δt)iΔΔvm(bˉfm,bˉmm,δˉtm)i+bfΔvmib^fm+bωΔvmib^ωm+δtΔvmiδ^tmΔpm(bf,bω,,δt)iΔpm(bfm,bˉmm,δˉtm)i+bfΔpmmb^fm+bωΔpmib^ωm+δtΔpmiδ^tm参考文献:3D Lidar-IMU Calibration based on Upsampled Preintegrated Measurements for Motion Distortion Correction
  2. 方法
    把输入建立为连续时间函数,从而可以在任意时间求导。
  3. 参考
    a. kalibr 系列
    论文:Continuous-Time Batch Estimation using Temporal Basis Functions
    论文:Unified Temporal and Spatial Calibration for Multi-Sensor Systems
    论文:Extending kalibr Calibrating the Extrinsics of Multiple IMUs and of Individual Axes
    代码:https://github.com/ethz-asl/kalibr
    b. 其他
    论文:Targetless Calibration of LiDAR-IMU System Based on Continuous-time Batch Estimation
    代码:https://github.com/APRIL-ZJU/lidar_IMU_calib

4.3 总结

  1. 时间差估计,在某些情况下不得已而为之,实际中应尽量创造条件实现硬同步;
  2. 不得不估计时,也应尽量在良好环境下估计。

相关文章:

多传感器融合定位十五-多传感器时空标定(综述)

多传感器融合定位十五-多传感器时空标定1. 多传感器标定简介1.1 标定内容及方法1.2 讲解思路2. 内参标定2.1 雷达内参标定2.2 IMU内参标定2.3 编码器内参标定2.4 相机内参标定3. 外参标定3.1 雷达和相机外参标定3.2 多雷达外参标定3.3 手眼标定3.4 融合中标定3.5 总结4. 时间标…...

开发微服务电商项目演示(三)

一,nginx动静分离第1步:通过SwitchHosts新增二级域名:images.zmall.com第2步:将本次项目的易买网所有静态资源js/css/images复制到nginx中的html目录下第3步:在nginx的核心配置文件nginx.conf中新增二级域名images.zma…...

C/C++排序算法(二) —— 选择排序和堆排序

文章目录前言1. 直接选择排序🍑 基本思想🍑 具体步骤🍑 具体步骤🍑 动图演示🍑 代码实现🍑 代码升级🍑 特性总结2. 堆排序🍑 向下调整算法🍑 任意树调整为堆的思想&#…...

爬虫笔记之——selenium安装与使用(1)

爬虫笔记之——selenium安装与使用(1)一、安装环境1、下载Chrome浏览器驱动(1)查看Chrome版本(2)下载相匹配的Chrome驱动程序地址:https://chromedriver.storage.googleapis.com/index.html2、学…...

STC15单片机软串口的使用

STC15软串口的使用📖在没有使用定时器资源的情况下,根据波特率位传输时间,利用STC-ISP工具自动计算出位延时函数。 ✨在官方所提供的库函数中位传输时间函数,仅适用于使用波特率为:9600的串口数据传输: void BitTime(…...

Ansible的脚本------playbook剧本

一、剧本的前置知识点1、主机清单ansible默认的主机清单是/etc/ansible/hosts文件主机清单可以手动设置,也可以通过Dynamic Inventory动态生成一般主机名使用FQDNvi /etc/ansible/hosts [webserver] #使用方括号设置组名 www1.example.org #定…...

实验5-计算中值及分治技术

目录 1.寻找中位数(利用快速排序来寻找中位数) 2.分治方法求数组的和 3.合并排序...

dbeaver从excel导入数据笔记

场景 有excel的数据,需要做到数据库里。 方案一: 开发代码来实现。缺点是需要开发成本。 方案二: 数据库导入工具导入。不用开发,相对快速一些。 这里说下数据库工具导入。 操作过程 1、拿到excel数据文件,根据标题…...

PyTorch学习笔记:nn.MarginRankingLoss——排序损失

PyTorch学习笔记:nn.MarginRankingLoss——排序损失 torch.nn.MarginRankingLoss(margin0.0, size_averageNone, reduceNone, reductionmean)功能:创建一个排序损失函数,用于衡量输入x1x_1x1​与x2x_2x2​之间的排序损失(Ranking Loss)&…...

【JavaScript】34_Date对象 ,日期的格式化

8、Date Date 在JS中所有的和时间相关的数据都由Date对象来表示 对象的方法: getFullYear() 获取4位年份 getMonth() 返当前日期的月份(0-11) getDate() 返回当前是几日 getDay() 返回当前日期是周几(0-6) 0表示周日…...

计算机视觉 对比学习13篇经典论文、解读、代码

为了快速对 机器视觉中的对比学习有一个快速了解,或者后续复习,此处收录了 13篇经典论文、一些讲解地较好的博客和相应的Github代码,用不同颜色标记。 ​ 对比学习 13篇经典论文 论文代码和博客http://​www.webhub123.com/#/home/detail?p…...

MySQL 选择数据库

在你连接到 MySQL 数据库后,可能有多个可以操作的数据库,所以你需要选择你要操作的数据库。 在 MySQL 中就有很多系统自带的数据库,那么在操作数据库之前就必须要确定是哪一个数据库。 在 MySQL 中,USE 语句用来完成一个数据库到…...

雅思经验(9)

写作:关于趋势的上升和下降在小作文中,真的是非常常见的,所以还是要积累一下。下面给出了很多词,但是在雅思写作中并不是词越丰富,分数就越高的。雅思写作强调的是准确性:在合适的地方用合适的词和句法。不…...

java面试题(二十)中间件redis

1.1 Redis可以用来做什么? 参考答案 Redis最常用来做缓存,是实现分布式缓存的首先中间件;Redis可以作为数据库,实现诸如点赞、关注、排行等对性能要求极高的互联网需求;Redis可以作为计算工具,能用很小的…...

JavaWEB必知必会-Servlet

目录 Servlet简介Servlet快速入门Servlet配置详解ServletContext 1 Servlet简介 Servlet 运行在服务端的Java小程序,是sun公司提供一套规范(接口),用来处理客户端请求、响应给浏览器的动态资源。但servlet的实质就是java代码&a…...

oralce查找返回不同的值,寻找不同的表(原创)

查找返回不同的值,寻找不同的表 select case a_id when 1 then (select b_id|| ||b_desc from b where b.b_ida.a_id) else (select e_id || ||e_desc from e where e.e_ida.a_id) end from a; 以上方法的缺陷是单表,判断。今天来了个挑战&#…...

Python-第四天 Python循环语句

Python-第四天 Python循环语句一、while循环1.while循环的基础语法2.while循环的基础案例3.while循环的嵌套应用4.while循环的嵌套案例二、for循环1.for循环的基础语法1.1基础语法1.2 range语句2.for循环的嵌套应用三、循环中断 : break和continue1.continue2.break四、 综合案…...

spring中bean的生命周期(简单5步)

目录 一、概念 1.生命是bean的生命周期? 2.知道bean生命周期的意义? 3.bean的生命周期按照粗略的五步 二、例子讲解 一、概念 1.生命是bean的生命周期? 答:spring其实就是管理bean对象的工厂,它负责对象的创建&…...

10 个最难理解的 Python 概念

文章目录技术提升面向对象编程 (OOP)装饰器生成器多线程异常处理正则表达式异步/等待函数式编程元编程网络编程大家好,与其他编程语言相比,Python 是一门相对简单的编程语言,如果你想真正学透这门语言,其实可能并不容易。 今天我…...

【linux】线程概念

概念 什么是线程 在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列” 一切进程至少都有一个执行线程,线程在进程内部运行,本质是在进程地址空间内运行 在Linux系统中&a…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode&#xff1a; 2.利用 authorizationCode 获取 accessToken&#xff1a;文档中心 3.获取手机&#xff1a;文档中心 4.获取昵称头像&#xff1a;文档中心 首先创建 request 若要获取手机号&#xff0c;scope必填 phone&#xff0c;permissions 必填 …...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅&#xff08;Pub/Sub&#xff09;模式与专业的 MQ&#xff08;Message Queue&#xff09;如 Kafka、RabbitMQ 进行比较&#xff0c;核心的权衡点在于&#xff1a;简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

c++第七天 继承与派生2

这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分&#xff1a;派生类构造函数与析构函数 当创建一个派生类对象时&#xff0c;基类成员是如何初始化的&#xff1f; 1.当派生类对象创建的时候&#xff0c;基类成员的初始化顺序 …...

LOOI机器人的技术实现解析:从手势识别到边缘检测

LOOI机器人作为一款创新的AI硬件产品&#xff0c;通过将智能手机转变为具有情感交互能力的桌面机器人&#xff0c;展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家&#xff0c;我将全面解析LOOI的技术实现架构&#xff0c;特别是其手势识别、物体识别和环境…...