CERLAB无人机自主框架: 2-动态目标检测与跟踪

前言:更多更新文章详见我的个人博客主页【MGodmonkeyの世界】

描述:欢迎来到CERLAB无人机自主框架,这是一个用于自主无人飞行器 (UAV) 的多功能模块化框架。该框架包括不同的组件 (模拟器,感知,映射,规划和控制),以实现自主导航,未知探索和目标检查。

本章为框架中的一个检测模块,用于对静态或动态障碍物进行识别。
论文地址:Paper
代码地址:GitHub

1. 论文解析

Chatpaper

Basic Information:
  • Title: Onboard Dynamic-Object Detection and Tracking for Autonomous Robot Navigation With RGB-D Camera (基于RGB-D相机的机载动态物体检测和跟踪用于自主机器人导航)
  • Authors: Zhefan Xu, Xiaoyang Zhan, Yumeng Xiu, Christopher Suzuki, Kenji Shimada
  • Affiliation: Department of Mechanical Engineering, Carnegie Mellon University, Pittsburgh, PA 15213 USA (美国卡内基梅隆大学机械工程系)
  • Keywords: RGB-D perception, vision-based navigation, visual tracking, 3D object detection, collision avoidance
  • URLs: Paper, GitHub
论文简要 :
  • 本文提出了一种基于RGB-D相机的轻量级3D动态障碍物检测和跟踪方法,用于具有有限计算能力的小型机器人。该方法采用了新颖的集成检测策略,结合多个计算效率高但准确率较低的检测器,实现实时高准确性的障碍物检测。此外,还引入了一种基于特征的数据关联和跟踪方法,利用点云的统计特征来防止匹配错误。实验结果表明,该方法在小型四旋翼飞行器上实现了最低的位置误差和可比较的速度误差,证明了该方法在导航动态环境中能够有效改变机器人的轨迹。
背景信息:
  • 论文背景: 在拥挤的室内环境中部署自主机器人通常需要它们具备准确的动态障碍物感知能力。然而,以往在自动驾驶领域的许多研究都是针对3D物体检测问题进行的,使用了来自重型激光雷达传感器的密集点云数据,而这些基于学习的数据处理方法的高计算成本使得这些方法不适用于小型机器人,例如具有小型机载计算机的基于视觉的无人机。因此,需要针对计算能力有限的小型机器人开发一种轻量级的基于RGB-D相机的动态障碍物检测和跟踪方法。
  • 过去方案: 以往的方法中,有些采用了单一的检测器,但这些方法在计算效率和准确性之间存在权衡。另一些方法则使用了深度图像进行障碍物检测,但深度相机的范围和视野有限,使得一些方法只能在短距离范围内进行障碍物跟踪。此外,深度相机的噪声也会影响检测算法的准确性和可靠性。
  • 论文的Motivation: 针对上述问题,本文提出了一种基于RGB-D相机的轻量级3D动态障碍物检测和跟踪方法。该方法采用了多个计算效率高但准确率较低的检测器的集成策略,实现了实时高准确性的障碍物检测。此外,还引入了一种基于特征的数据关联和跟踪方法,利用点云的统计特征来防止匹配错误。最后,该系统还引入了一个学习模块,用于增强检测范围和动态障碍物识别。通过在小型四旋翼飞行器上的实验验证,该方法在机器人的机载计算机上实现了最低的位置误差和可比较的速度误差,证明了该方法在导航动态环境中能够有效改变机器人的轨迹。
方法:
  • a. 理论背景:
    • 介绍了在拥挤的室内环境中,自主机器人需要准确的动态障碍物感知的需求,以及使用轻量级3D动态障碍物检测和跟踪方法的技术路线。
  • b. 技术路线:
    • 提出了基于RGB-D相机的轻量级3D动态障碍物检测和跟踪方法,利用集成检测策略和基于特征的数据关联和跟踪方法实现实时高精度障碍物检测。
结果:
  • a. 详细的实验设置:
    • 在动态环境中使用两台定制的四轴飞行器进行实验,搭载Intel NUC和NVIDIA Jetson Xavier NX嵌入式计算机,算法在飞行器的嵌入式计算机上实时运行。
  • b. 详细的实验结果:
    • DODT方法在基准算法中表现出最低的位置误差和第二低的速度误差,集成检测降低了误报率并提高了障碍物位置和速度估计的准确性。学习模块增强了检测范围。实验结果显示算法在Intel NUC和Xavier NX平台上实现了实时性能,YOLO-MAD检测器占用了大部分处理时间。物理实验展示了成功检测和跟踪动态障碍物在机器人导航任务中的应用。

1.1 问题汇总

  1. 关于图2的系统框架:

    • 系统框架包括三个核心模块:检测模块、跟踪模块和识别模块。
    • 检测模块由非学习和学习两部分组成,非学习部分利用深度图像和两个非学习检测器进行通用障碍物检测。
    • 学习模块使用对齐的RGB-D图像进行直接动态障碍物检测,结果与非学习模块结合。
    • 跟踪模块使用精细化的3D边界框来估计障碍物状态。
    • 识别模块根据状态和跟踪历史将障碍物分类为静态或动态。
    • 系统输出动态障碍物边界框,并在静态地图中清除动态障碍物区域以进行导航。 Pages: [“a. system overview”, “d. data association and tracking”, “e. dynamic obstacle identification”]
  2. 关于U-depth检测器和DBSCAN检测器的定义,方法和作用:

    • U-depth检测器

      • 定义:U-depth检测器是一种基于深度图像的方法,用于检测和跟踪动态障碍物。它通过生成U-depth图和V-depth图,结合深度信息来估计障碍物状态,实现对静态障碍物的安全导航。
      • 方法:利用深度图像生成U-depth图和V-depth图,通过估计障碍物的速度和维度来检测和跟踪动态障碍物,将其表示为3D椭球体。采用YOLO检测器来有效避开快速和小型动态障碍物,结合图像差异来识别RGB图像中的所有动态点。
      • 作用:U-depth检测器的作用在于提高障碍物维度估计的准确性,结合占据地图来导航动态环境,有效避开动态障碍物,从而实现机器人的安全导航。
    • DBSCAN检测器

      • 定义:DBSCAN检测器是一种基于点云的方法,直接利用点云的几何信息来检测3D障碍物。它通过点云聚类方法结合YOLO检测器进行人体检测,提出使用点云特征向量和对象跟踪点来识别正确的对象匹配和估计其状态。
        • 方法:采用点云聚类方法结合YOLO检测器进行室内动态障碍物避让,利用点云特征向量和对象跟踪点来识别正确的对象匹配和估计其状态。
        • 作用:DBSCAN检测器的作用在于提高障碍物跟踪的稳健性,通过点云信息直接检测3D障碍物,从而实现动态障碍物的避让和安全导航。 Pages: [“d. data association and tracking”, “e. dynamic obstacle identification”, “b. 3d-obstacle detectors”]

2.环境搭建

2.1 CERLAB无人机框架搭建

参考教程:CERLAB 无人机自主框架:环境搭建 | MGodmonkey の世界

2.2 yolo-mad环境安装(可选)

说明:如果用到yolo-mad检测器作为辅助,按照下面的教程搭建yolo-mad环境

  • 安装torch
# 这是ubuntu20-torch-cpu版本的,其余系统或者GPU版本的参考官网教程
# 有缓存指令(网络不好的情况下建议有缓存)
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
# 无缓存指令
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu --no-cache-dir

参考:Start Locally | PyTorch

问题汇总

  1. 网络超时【urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host=‘files.pythonhosted.org’, port=443): Read timed out】:下载过程中经常会遇到timeout的情况,这时候可以通过复制上面的网址,通过各种方法先下载到本地,然后通过pip3 install ~/torch-2.2.2+cpu-cp38-cp38-linux_x86_64.whl torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu,哪个超时下载哪个到本地安装,或者头铁一直重试,迟早有一次成功的😉

  2. 【ERROR: Package ‘networkx’ requires a different Python: 3.8.10 not in ‘>=3.9’】:networkx版本不兼容3.8,需要通过pip3 install networkx -i https://pypi.tuna.tsinghua.edu.cn/simple手动安装network3.1版本的库

2.3 运行Demo

  1. 下载rosbag包:【夸克网盘:single-object.bag】【夸克网盘:multi-objects.bag】
  2. 将python3设置为系统默认python版本:sudo ln -sf /usr/bin/python3 /usr/local/bin/python
  3. 运行代码
roscore
# 单人运动
rosbag play -l single-object.bag
# 多人运动
rosbag play -l multi-objects.bag
# 运行没有yolo-mad作为辅助的检测器
roslaunch onboard_detector run_detector.launch
# 运行yolo-mad作为辅助(感觉效果比上面的还差)
roslaunch onboard_detector detector_with_learning_module.launch

2.4 在自己设备上运行(待补充更新)

请调整你的摄像头设备下的配置文件,位于 cfg/detector_param.yaml。同时,修改 scripts/yolo_detector/yolo_detector.py 中的彩色图像话题名称。从参数文件中,你可以看到算法期望从机器人获取以下数据:

  • 深度图像:/camera/depth/image_rect_raw

  • 机器人姿态:/mavros/local_position/pose

  • 机器人里程计(可选):/mavros/local_position/odom

  • 彩色图像(如果应用了YOLO则为可选):/camera/color/image_rect_raw

  • 对齐深度图像(可选):/camera/aligned_depth_to_color/image_raw

  1. 修改深度相机launch文件

对齐深度图像默认不生成,因此需要修改launch文件继续修改

roscd realsense2_camera/launch
nano rs_camera.launch

align_depth参数修改为true,然后Ctrl+O&Ctrl+X保存退出

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

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

相关文章

Hadoop——Yarn 调度器和调度算法

Yarn 调度器和调度算法 YARN调度器(Scheduler)是负责将集群资源分配给不同应用程序的组件。它根据应用程序的资源需求和优先级,以及集群的资源供给情况,决定如何分配资源。YARN提供了多种调度器实现,每种调度器都有不…

如何通过MSTSC连接Ubuntu的远程桌面?

正文共:666 字 12 图,预估阅读时间:1 分钟 前面我们介绍了如何通过VNC连接Ubuntu 18.04的远程桌面(Ubuntu 18.04开启远程桌面连接),非常简单。但是有小伙伴咨询如何使用微软的远程桌面连接MSTSC&#xff08…

Go栈内存管理源码解读

基本介绍 栈内存一般是由Go编译器自动分配和释放,其中存储着函数的入参和局部变量,这些参数和变量随着函数调用而创建,当调用结束后也会随之被回收。通常开发者不需要关注内存是分配在堆上还是栈上,这部分由编译器在编译阶段通过…

Android Studio学习笔记——广播机制Broadcast

Android Studio学习笔记——广播机制 5.1 广播机制简介5.2 接收系统广播5.2.1 动态注册监听网络变化5.2.2 静态注册实现开机启动 5.3 发送自定义广播5.3.1 发送标准广播5.3.2 发送有序广播 5.4 使用本地广播5.5 广播的最佳实践——强制下线功能 5.1 广播机制简介 安卓每个应用…

web server apache tomcat11-08-JNDI Resources

前言 整理这个官方翻译的系列,原因是网上大部分的 tomcat 版本比较旧,此版本为 v11 最新的版本。 开源项目 从零手写实现 tomcat minicat 别称【嗅虎】心有猛虎,轻嗅蔷薇。 系列文章 web server apache tomcat11-01-官方文档入门介绍 web…

spring boot后端开发基础

spring boot后端开发基础 Spring Boot一、开发步骤二、Web分析三、跨域问题四、HTTP协议五、Web服务器六、响应前端请求七、springboot常用注解创建一个简单的RESTful API服务层和数据访问层配置类和Bean定义响应体和路径变量 Spring Boot 一、开发步骤 创建项目 添加依赖 项…

k8s部署Eureka集群

部署有状态负载 镜像配置: 环境变量如下: AUTHENTICATE_ENABLEtrue JAVA_OPTS-Dauth.userName账号 -Dauth.password密码 MY_POD_NAMEmetadata.name BOOL_REGISTERtrue BOOL_FETCHtrue APPLICATION_NAME负载名称 EUREKA_INSTANCE_HOSTNAME${MY_POD_NA…

webpack源码分析——enhanced-resolve库之getType、normalize、join和cachedJoin函数

一、PathType 路径类型 const PathType Object.freeze({Empty: 0, // 空Normal: 1, // 默认值Relative: 2, // 相对路径AbsoluteWin: 3, // win 下的绝对路径AbsolutePosix: 4, // posix 下的绝对路径Internal: 5 // enhanced-resolve 内部自定义的一种类型,具体是…

小程序AI智能名片S2B2C商城系统:做内容、造IP、玩社群打造私域流量的新营销秘籍

在数字化浪潮汹涌的新时代,小程序AI智能名片S2B2C商城系统正以其独特的魅力,引领着营销领域的新变革。这套系统不仅将人工智能与小程序技术完美结合,更通过创新的S2B2C模式,为企业打开了一扇通往成功的大门。 面对激烈的市场竞争&…

SQL注入作业

目录 一、万能密码和二阶注入测试 1.万能密码 2.二阶注入测试 二、联合查询注入测试 1.判断注入点 2.判断当前查询语句的列数 3.查询数据库基本信息 4.查询数据库中的数据 三、报错注入 1. 报错注入函数EXTRATVALUE 2.UPDATEXML 四、盲注测试 1.布尔盲注 判断数据…

Linux搭建Discuz论坛

搭建一个论坛 —接上篇博客 改名/etc/httpd/conf.d/vhosts.conf 》/etc/httpd/conf.d/vhosts.conf.bak [rootlocalhost conf.d]# mv /etc/httpd/conf.d/vhosts.conf /etc/httpd/conf.d/vhosts.conf.bak此时的vhosts.conf是一个新创建的文件,之前的vhosts.conf已经…

使用 Godot 游戏引擎为 Apple 的 visionOS 创建游戏和应用的平台

借助GodotVision ,您可以使用Godot 游戏引擎为 Apple VisionOS创建游戏和应用程序。 保卫牛城堡,一款使用 GodotVision 制作的 VisionOS 游戏 GodotVision 运行一个控制本机RealityKit 视图的无头 Godot实例。粗略地说:Godot 是后端,

毅速3D打印随形透气钢:革新传统,引领未来

透气钢,这种多孔金属材料,既融合了金属材料的坚固性,又具备了透气材料的通透性。尤其在注塑模具的制造中,透气钢的作用不可忽视。通过镶嵌透气钢,能够有效解决因困气产生的注塑问题,使成型加工更为完善&…

【机器学习】机器学习学习笔记 - 监督学习 - 逻辑回归分类朴素贝叶斯分类支持向量机 SVM (可分类、可回归) - 04

逻辑回归分类 import numpy as np from sklearn import linear_modelX np.array([[4, 7], [3.5, 8], [3.1, 6.2], [0.5, 1], [1, 2], [1.2, 1.9], [6, 2], [5.7, 1.5], [5.4, 2.2]]) y np.array([0, 0, 0, 1, 1, 1, 2, 2, 2])# 逻辑回归分类器 # solver:求解器&a…

C字符串操作strlenstrnlen_s详解

前言 strcat、strcpy、strcmp、strlen是C中针对字符串的库函数,这四个函数不安全,然后C针对这个情况整出strcat_s、strcpy_s、strncmp、strnlen_s(这个并不是替代stelen的)来弥补。 这篇文章主要讲:strlen以及strnlen_s的用法。 详见C字符串…

SpringBoot项目整合Knife4j接口文档

文章目录 什么是接口文档?谁用接口文档为什么需要接口文档怎么做接口文档springboot如何整合knife4j?1.引入依赖2.在config目录下创建Knife4j配置依赖3.在appliacation.yml中进行配置4.启动Spring Boot工程,在浏览器中访问:http://localhost…

文件传输服务器是否支持文件的增量备份?

文件传输服务器通常并不直接支持增量备份,因为文件传输服务器的主要功能是提供文件传输服务,而不是备份服务。然而,你可以在文件传输服务器上实现增量备份的功能,方法如下: 使用备份软件:安装并配置专门的备…

机器学习鸢尾花使用csv

操作流程 下载鸢尾花数据集导入需要的包读取数据并查看数据大小和长度划分训练集和测试集使用模型评估算法 下载鸢尾花数据集 链接:https://pan.baidu.com/s/1RzZyXsaiJB3e611itF466Q?pwdj484 提取码:j484 --来自百度网盘超级会员V1的分享导入需要…

【力扣 | 分享】高频 SQL 50 题(基础版)

题单 查询可回收且低脂的产品寻找用户推荐人大的国家文章浏览 I无效的推文 连接使用唯一标识码替换员工ID产品销售分析 I进店却未进行过交易的顾客上升的温度每台机器的进程平均运行时间员工奖金学生们参加各科测试的次数至少有5名直接下属的经理确认率有趣的电影平均售价项目员…

ZCC51215同步降压芯片 输出电流30A

描述: ZCC51215是一颗用于 Notebook 或Desktop的同步降压 控制器。具有 4V 到 24V 的宽输入电压范围,适用于锂 电池或者适配器供电。输出电压可以通过 VID0和 VID1 逻辑信号动态切换,电压切换斜率可以通过 VREF 引脚 的电容进行配置&…