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保存退出

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

gemini国内能用吗

gemini国内能用吗 虽然 Gemini 的具体功能和性能还未完全公开,但基于 Google 在 AI 领域的强大背景和技术实力,已经火出圈了,很多小伙伴已经迫不及待想了解一下它有什么优势以及如何快速使用上 首先我们来讲一下gemini的优势 多模态能力&a…

美摄智能视频创作平台,满足企业个性化的创作需求

视频已成为企业传播信息、展示品牌、吸引客户的重要手段,传统的视频制作方式往往耗时耗力,且效果不佳。美摄科技凭借其深厚的技术积累和创新能力,推出了面向企业的智能视频创作平台解决方案,助力企业轻松实现高质量的视频制作与传…

5 CatBoost模型

目录 1 背景 2 原理 2.1 类别特征处理 2.1.1 传统目标编码: TS 2.1.2 Greedy TS 2.1.3 ordered TS编码 2.1.4 CatBoost处理Categorical features总结 2.2.预测偏移处理 2.2.1 梯度无偏估计 2.3 树的构建​​​​​​​ 3 优缺点 优点 4 代码 1 背景 终于…

OpenHarmony鸿蒙南向开发案例:【智能门铃】

样例简介 智能门铃通过监控来访者信息,告诉主人门外是否有人按铃、有陌生人靠近或者无人状态。主人可以在数字管家中远程接收消息,并根据需要进行远程取消报警和一键开锁。同时,也可以通过室内屏幕获取门外状态。室内屏幕显示界面使用DevEco…

【创建型模式】单例模式

一、单例模式概述 单例模式的定义:又叫单件模式,确保一个类只有一个实例,并提供一个全局访问点。(对象创建型) 要点: 1.某个类只能有一个实例;2.必须自行创建这个实例;3.必须自行向整…

C语言 | 动态内存管理

目录: 1. 为什么要有动态内存分配 2. malloc和free 3. calloc和realloc 4. 常见的动态内存的错误 5. 动态内存经典笔试题分析 6. 柔性数组 1. 为什么要有动态内存分配 我们已经掌握的内存开辟方式有: int val 20; //在栈空间上开辟四个字节 cha…

MR-JE-70A 三菱MR-JE伺服驱动器(750W通用型)

三菱MR-JE伺服驱动器(750W通用型) MR-JE-70A外部连接,MR-JE-70A用户手册,MR-JE-70A 三相或单相AC220V三菱通用型伺服放大器750W,配套电机HG-SN52J-S100、HG-KN73J-S100。 MR-JE-70A参数说明:伺服驱动器通用型750W,三相或单相AC200V~240V 三…

C语言野指针【入门详解】

目录 一、什么是野指针 二、野指针的成因 2.1 指针未初始化 2.2 指针越界访问 2.3 指针指向的空间释放 三、如何规避野指针 3.1 初始化指针 3.2 小心越界访问 3.3 当指针不用时,及时置为空 3.4 避免返回局部变量的地址 *结语: 希望这篇关于指…

IM即时通讯软件,WorkPlus私有化部署全面支持信创环境

在数字化转型的浪潮中,政企单位对即时通讯(IM)软件的需求日益增长。然而,随着信息化程度的提高,数据安全和信息泄露风险也日益凸显。在这样的背景下,WorkPlus作为一款私有化部署的IM即时通讯软件,以其在安全性、管理便…

汇编语言——将BX中的无符号数和有符号数以二进制、八进制、十六进制、十进制形式输出

文章目录 将BX中的无符号数以二进制形式输出将BX中的无符号数以八进制形式输出将BX中的无符号数以十六进制形式输出将BX中的无符号数以十进制形式输出将BX中的有符号数以十进制形式输出 将BX中的无符号数以二进制形式输出 利用移位指令会影响CF,默认dl30h(数字0)&a…

时序深入之CPR(Clock Pessimism Removal)详解

目录 一、CPR概念 二、CPR的计算 三、CPR的开启关闭 四、CPR为0 ​五、参考资料 一、CPR概念 在时序报告的目标时钟路径中,会有一行数据clock pesssimism,第一次见可能都会对这个概念感到疑惑 同样在每条时序路径的summary中,clock pat…

自动化测试Selenium(4)

WebDriver相关api 定位一组元素 webdriver可以很方便地使用findElement方法来定位某个特定的对象, 不过有时候我们需要定位一组对象, 这时候就要使用findElements方法. 定位一组对象一般用于一下场景: 批量操作对象, 比如将页面上的checkbox都勾上. 先获取一组对象, 再在这组…

[最新]访问/加速StackOverFlow的方法

但是有很多问题都是在StackOverFlow上有现成的解决方案,而某度搜索引擎…前一页的回答互相抄袭,看着实在胀眼睛。 话不多说,解决办法: 直接访问插件商店下载插件(最快捷方便,点点就行)&#x…

Linux系统编程——权限概念和权限管理

目录 一,关于Shell 1.1 外壳程序 1.2 shell的作用 1.3 shell运行原理 二,权限概念 2.1 用户与权限 2.2 su(用户切换指令) ​编辑 2.3 提升指令权限和信任名单 三,文件权限 3.1 关于文件权限 3.2 文件访问者…

UG10.如何设置鼠标滚轮操作模型放大缩小方向?

UG10.如何设置鼠标滚轮操作模型放大缩小方向呢?看一下具体操作步骤吧。 首先打开UG10.软件,在主菜单栏选择【文件】下拉菜单,选择【实用工具】。 点击【用户默认设置】。 文章源自四五设计网-https://www.45te.com/45545.html 选中【基本环…

python语言零基础入门——变量与简单数据类型

目录 一、变量 1.创建变量 2.变量的修改 3.变量的命名 (1)常量 (2)标识符 (3)关键字 (4)命名规则 二、简单数据类型 1.变量的数据类型 2.数据类型 3.整型(In…

中断的设备树修改及上机实验(按键驱动)流程

写在前面的话:对于 GPIO 按键,我们并不需要去写驱动程序,使用内核自带的驱动程序 drivers/input/keyboard/gpio_keys.c 就可以,然后你需要做的只是修改设备树指定引脚及键值。 根据驱动文件中的platform_driver中的.of_match_tabl…

C++之类和对象三

目录 拷贝构造函数 定义铺垫 浅拷贝 深拷贝 总结 拷贝构造函数 那在创建对象时,可否创建一个与一个对象一某一样的新对象呢? 定义铺垫 构造函数:只有单个形参,该形参是对本类类型对象的引用(一般常用const修饰)&#xff0c…

2024年华中杯B题论文发布+数据预处理问题一代码免费分享

【腾讯文档】2024年华中杯B题资料汇总 https://docs.qq.com/doc/DSExMdnNsamxCVUJt 行车轨迹估计交通信号灯周期问题 摘要 在城市化迅速发展的今天,交通管理和优化已成为关键的城市运营问题之一。本文将基于题目给出的数据,对行车轨迹估计交通信号灯…

【1577】java网吧收费管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java 网吧收费管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0…