通过点云获取碰撞向量

news2024/12/30 2:16:47

T:what
Y:why
W:how

Y

针对点云的无序性,无法通过坐标索引进行查询,常常将点云地图转换其他类型的地图,如Octomap,从而进行碰撞检测;

W

为快速进行机器人与障碍物的位置计算,可以采用凸包算法获取一个包含点云的凸包,如PCL库中CropHull滤波器,得到凸包后可以向上一问中那样获取机器人与障碍物之间的位置关系,如下图所示,如果机器人是凸多边形描述,也可使用GJK-EPA检测凸多边形之间的碰撞。
在这里插入图片描述
针对点云进行经过完整凸包处理后计算最短距离固然方便,但由于需要对点云进行预处理,增加了碰撞检测算法的计算复杂度,特别对于高维情况更是如此。

其实可以直接对障碍物点云与自由空间进行分割,将对模长最小碰撞向量的求取转化为求一个分离超平面,如下图黑色虚线所示
在这里插入图片描述
设碰撞向量为 x − x robot  = y x-x_{\text {robot }}=y xxrobot =y,y满足机器人与点云向量在y上的投影需要大于y的模长,并要求机器人距离这个超平面的距离尽可能长,即如下优化问题

max ⁡ y ∈ R 2 y T y  s.t.  ( v i − x robot  ) T y ≥ y T y , ∀ i ∈ { 1 , … , m } \begin{array}{l}\max _{y \in {R}^{\mathrm{2}}} y^{\mathrm{T}} y \\ \text { s.t. }\left(v_{i}-x_{\text {robot }}\right)^{\mathrm{T}} y \geq y^{\mathrm{T}} y, \forall i \in\{1, \ldots, m\}\end{array} maxyR2yTy s.t. (vixrobot )TyyTy,i{1,,m}

通过极对偶变换,转化为凸问题,令 z = y / ( y T y ) z=y /\left(y^{\mathrm{T}} y\right) z=y/(yTy)
min ⁡ z ∈ R 2 z T z  s.t.  ( v i − x robot  ) T z ≥ 1 , ∀ i ∈ { 1 , … , m } \begin{array}{l}\min _{z \in{R}^{2}} z^{\mathrm{T}} z \\ \text { s.t. }\left(v_{i}-x_{\text {robot }}\right)^{\mathrm{T}} z \geq 1, \forall i \in\{1, \ldots, m\}\end{array} minzR2zTz s.t. (vixrobot )Tz1,i{1,,m}

从而转化为QP问题进行求解,可得x为
x = z / ( z T z ) + x robot  x=z /\left(z^{\mathrm{T}} z\right)+x_{\text {robot }} x=z/(zTz)+xrobot 
如图为rviz仿真图像,其中红色表示点云,绿色marker表示机器人,蓝色箭头表示碰撞向量,可以看到距离分离超平面的最短距离为蓝色箭头的长度
在这里插入图片描述
3维度情况
在这里插入图片描述

[项目开源地址] 待完善

ref

Rockafellar RT. A dual approach to solving nonlinear programming problems by unconstrained optimization.Mathematical Programming. 1973 Dec;5(1):354-73.

Seidel R. Small-dimensional linear programming and convex hulls made easy. Discrete & Computational Geometry. 1991 Sep;6(3):423-34.

https://www.shenlanxueyuan.com/course/573/task/21138/show

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

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

相关文章

C高级day3

1.编写一个名为myfirstshell.sh的脚本,它包括以下内容。 1、包含一段注释,列出您的姓名、脚本的名称和编写这个脚本的目的 2、和当前用户说“hello 用户名” 3、显示您的机器名 hostname 4、显示上一级目录中的所有文件的列表 5、显示变量PATH和HOM…

【前端技术】Vue3 02:基础语法

接下来介绍下 Vue 的基础语法,包括渐进式框架、单文件组件、组合式 API 和选项式 API等基础要点和 v-xx 指令和其余基础语法,这和官方教程的顺序不大一致,我认为先学习 v-xx 指令可能更有助于大家的理解及学习。 目录 1 前言 1.1 单文件组件…

【Linux】Linux中的编辑器vim

🏖️作者:malloc不出对象 ⛺专栏:Linux的学习之路 👦个人简介:一名双非本科院校大二在读的科班编程菜鸟,努力编程只为赶上各位大佬的步伐🙈🙈 目录 前言一、vim的概念二、命令模式2…

SpringBoot【开发实用篇】---- 数据层解决方案

SpringBoot【开发实用篇】---- 数据层解决方案 1. SQL数据源技术持久化技术数据库技术 2. NoSQLSpringBoot整合Redis安装基本操作整合 SpringBoot整合MonggoDB安装基本操作整合 SpringBoot整合ES安装基本操作整合 开发实用篇前三章基本上是开胃菜,从第四章开始&…

“1+X+N”模式助力企业数字化转型

近期,中电金信顺利完成某股份制银行“基于战略解析与业务架构的全行科技规划项目”交付。针对客户的实际业务需求,中电金信采用“1XN”服务模式,服务客户全面的企业架构转型规划。项目组联合行方协同创新,首次将企架建模方法应用于…

【腾讯云 findops Crane集训营】深入了解 Crane 开源项目之实验操作指南

引言: 最近我参加了由腾讯云联合 CSDN 推出的“腾讯云 Finops Crane 开发者集训营”活动,通过这个活动我对腾讯云的 Finops Crane 开源项目有了更深入的了解。在本篇博客中,我将分享我对该项目的认识和体验,并介绍其中一些关键特性…

C++:使用红黑树封装map和set

目录 一. 如何使用一颗红黑树同时实现map和set 二. 红黑树的节点插入操作 三. 红黑树迭代器的实现 3.1 begin()和end() 3.2 operator和operator-- 3.3 红黑树迭代器实现完整版代码 四. map和set的封装 附录:用红黑树封装map和set完整版代码 1. RBTree.h文件…

表情识别 emotion recognition

facial expression recognition 表情,人脸上的肌肉状态,可以表达人类的情绪。 1970年,Ekman定义了六种基本表情 如何定义? 动作单元(action unit)是定义表情的重要工具。 心理学家和生物学家认为,人的表情可以分解…

【HCIP】三层架构综合实验

目录 需求: 一、拓扑设计 二、配置 ①eth-trunk ②创建vlan & 划分vlan & trunk干道配置 ③STP生成树根节点备份&负责分担 ④SVI及VRRP网关冗余设置 ⑤DHCP ⑥通公网 ⑦验证 三层架构:核心层,汇聚层,接入层 …

QT桌面项目(第一个应用程序 桌面壁纸软件)

文章目录 前言一、壁纸切换程序的布局二、添加资源文件三、代码编写四、主界面代码五、程序的编写思路六、程序效果总结 前言 上节课我们已经做好了APP的按键图标了,这篇文章就让我们来开始制作第一个桌面程序吧。 一、壁纸切换程序的布局 这个是windows上浏览器…

vue3使用指南

vue3使用指南 主要介绍vue3的使用&#xff0c;同时会涉及到vue2&#xff0c;并会讲解其中的一些差异。 安装 CDN引入 如果想快速体验&#xff0c;可以直接通过cdn进行引入。 <div id"app">{{msg}}</div> <script src"https://unpkg.com/vue…

谷歌推出下一代大型语言模型 PaLM 2

谷歌在 2023 年度 I/O 大会上宣布推出了其下一代大型语言模型 PaLM 2&#xff0c;擅长高级推理任务&#xff0c;包括代码和数学、分类和问答、翻译和多语言能力以及自然语言生成。 谷歌声称 PaLM 2 是一种最先进的语言模型&#xff0c;要优于其之前所有的 LLM&#xff0c;包括…

网络拓扑架构规划设计

小型组网架构 1.网络拓扑 终端用户接入到交换机,交换机直连防火墙构成的简单网络,防火墙连接internet,对内网的用户进行安全控制 2.特点 用户接入数量较少:小型网络应用于接入用户数量较少的场景,一般支持几个至几十个用户 网络覆盖范围小:网络覆盖范围一般也是一个…

网络拓扑图制作软件

1.亿图图示(EdrawMax) 最像VISIO的网络拓扑制作工具 亿图图示实际上就是国产的Visio,与Visio非常相似。支持B/S架构,查看拓扑非常方便,模版也比较丰富。缺点与Visio也类似,画简单的网络拓扑没有问题,但针对大型网络拓扑管理而言,既需要能制作拓扑,又需要具有管理分析…

Hystrix详解及实践---SpringCloud组件(四)

Hystrix详解及实践 1.Hystrix简介2.雪崩问题3.服务降级、线程隔离、原理3.1.服务降级实践&#xff08;在feign的基础上实现&#xff09;1 添加Hystrix依赖2.在yml中开启熔断功能3.编写降级逻辑4.重启测试 4.服务熔断(Circuit Breaker)、原理4.1. 熔断原理4.2.动手实践 5.Hystri…

5个模板非常多的免费样机素材分享

样机素材是设计行业的不可缺少的素材之一&#xff0c;设计师可以将自己的设计作品&#xff0c;应用到一个效果图中进行展示&#xff0c;让你的设计作品看起来更加形象逼真。 本文分享5个非常给力的样机素材网站 1.即时设计资源社区 即时设计是一款「专业UI设计工具」&#x…

【edusrc】某校园网登录系统存在的一个简单爆破

前言 红中(hong_zh0) CSDN内容合伙人、2023年新星计划web安全方向导师、 华为MindSpore截至目前最年轻的优秀开发者、IK&N战队队长、 阿里云专家博主、华为网络安全云享专家、腾讯云自媒体分享计划博主 本文主讲思路&#xff0c;可能有点废话。 该漏洞已修复 最开始的思…

华为OD机试真题 Java 实现【字符串重新排序】【2023Q1 100分】

一、题目描述 给定一个字串s&#xff0c;s包含以空格分隔的若干个单词&#xff0c;请对s进行如下处理后输出&#xff1a; 1、单词内部调整 对每个单词字母重新按字典序排序。 2、单词间顺序调整: 统计每个单词出现的次数&#xff0c;并按次数降序排列&#xff1b;次数相同…

存下吧!Spring高频面试题总结

Spring是什么&#xff1f; Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 Spring的优点 通过控制反转和依赖注入实现松耦合。支持面向切面的编程&#xff0c;并且把应用业务逻辑和系统服务分开。通过切面和模板减少样板式代码。声明式事务的支持。可以从单…

Windows系统下Chromedriver.exe安装及配置

Windows系统下Chromedriver.exe安装及配置 在利用selenium工具进行Web自动化测试时&#xff0c;必须先要安装浏览器驱动&#xff0c;通常比较常用的是谷歌浏览器和火狐浏览器。 一、浏览器驱动下载地址 1.浏览器驱动官网&#xff1a;http://chromedriver.storage.googleapis…