关于局部规划时路径“卡死”的问题

Jabber_Jagger 2021-12-19 15:41:42

这是上一个问题的具体情况 https://bbs.csdn.net/topics/603732914 (请忽略不走直线这个问题。。。这是因为左右履带是液压驱动的)我开的右下角terminal是我们机器人左右履带的阀口开合输出(转换为0~±128),当走偏时算法已经将路径往回拉了,但是cmd_vel就不输出了,右下角terminal实际就是对cmd_vel的一个转换,当cmd_vel的topic不更新时,terminal中也不再更新。

...全文
436 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
哈工大-朱洪彪 社区管理员 2021-12-20
  • 打赏
  • 举报
回复

你好,谢谢使用我们的算法应用在你们的无人车上。从视频里看的话,右下角的terminal确实停止发布消息了,能不能再录制一个视频显示cmd_vel的值,这样能够同时看到直线和转向的速度,我们判断起来更直观一些。根据目前的信息,我们的猜测是这种履带车可能需要直行的时候才能转向,原地转向有可能因为动力的原因卡住,不过还是需要cmd_vel的值才能更好的判断。

歌德芙蓉 2022-03-17
  • 举报
回复
@哈工大-朱洪彪 您好,我把localplanner部署在了我们的阿克曼转向车上,但是算法中path没有相关的曲率约束,所以某些情况下会出现卡死的情况(path开始的时候曲率太大),请问我需要在哪里可以加上曲率约束呢
内容简介 · · · · · · 本书以培养读者以计算机科学家一样的思维方式来理解Python语言编程。贯穿全书的主体是如何思考、设计、开发的方法,而具体的编程语言,只是提供了一个具体场景方便介绍的媒介。 全书共21章,详细介绍Python语言编程的方方面面。本书从基本的编程概念开始讲起,包括语言的语法和语义,而且每个编程概念都有清晰的定义,引领读者循序渐进地学习变量、表达式、语句、函数和数据结构。书中还探讨了如何处理文件和数据库,如何理解对象、方法和面向对象编程,如何使用调试技巧来修正语法错误、运行错误和语义错误。每一章都配有术语表和练习题,方便读者巩固所学的知识和技巧。此外,每一章都抽出一节来讲解如何调试程序。作者针对每章所专注的语言特性,或者相关的开发问题,总结了调试的方方面面。 本书的第2版与第1版相比,做了很多更新,将编程语言从Python 2升级成Python 3,并修改了很多示例和练习,增加了新的章节,更全面地介绍Python语言。 这是一本实用的学习指南,适合没有Python编程经验的程序员阅读,也适合高中或大学的学生、Python爱好者及需要了解编程基础的人阅读。对于首次接触程序设计的人来说,是一本不可多得的佳作。 作者简介 · · · · · · [美] 艾伦 B. 唐尼(Allen B. Downey) Allen Downey是欧林工程学院的计算机科学教授,曾任教于韦尔斯利学院、科尔比学院和加州大学伯克利分校。他是加州大学伯克利分校的计算机科学博士,并拥有MIT的硕士和学士学位。 译者介绍 赵普明 毕业清华大学计算机系,从事软件开发行业近10年。从2.3版本开始接触Python,工作中使用Python编写脚本程序,用于快速原型构建以及日志计算等日常作业;业余,作为一个编程语言爱好者,对D、Kotlin、Lua、Clojure、Scala、Julia、Go等语言均有了解,但至今仍为Python独特的风格、简洁的设计而惊叹。 目录 · · · · · · 第1章 程序之道 1 1.1 什么是程序 1 1.2 运行Python 2 1.3 第一个程序 3 1.4 算术操作符 3 1.5 值和类型 4 1.6 形式语言和自然语言 5 1.7 调试 6 1.8 术语表 7 1.9 练习 8 第2章 变量、表达式和语句 9 2.1 赋值语句 9 2.2 变量名称 9 2.3 表达式和语句 10 2.4 脚本模式 11 2.5 操作顺序 12 2.6 字符串操作 13 2.7 注释 13 2.8 调试 14 2.9 术语表 15 2.10 练习 16 第3章 函数 17 3.1 函数调用 17 3.2 数学函数 18 3.3 组合 19 3.4 添加新函数 19 3.5 定义和使用 21 3.6 执行流程 21 3.7 形参和实参 22 3.8 变量和形参是局部的 23 3.9 栈图 23 3.10 有返回值函数和无返回值函数 24 3.11 为什么要有函数 25 3.12 调试 26 3.13 术语表 26 3.14 练习 27 第4章 案例研究:接口设计 30 4.1 turtle模块 30 4.2 简单重复 31 4.3 练习 32 4.4 封装 33 4.5 泛化 34 4.6 接口设计 34 4.7 重构 35 4.8 一个开发计划 36 4.9 文档字符串 37 4.10 调试 38 4.11 术语表 38 4.12 练习 39 第5章 条件和递归 41 5.1 向下取整除法操作符和求模操作符 41 5.2 布尔表达式 42 5.3 逻辑操作符 42 5.4 条件执行 43 5.5 选择执行 43 5.6 条件链 44 5.7 嵌套条件 44 5.8 递归 45 5.9 递归函数的栈图 46 5.10 无限递归 47 5.11 键盘输入 47 5.12 调试 48 5.13 术语表 49 5.14 练习 50 第6章 有返回值的函数 53 6.1 返回值 53 6.2 增量开发 54 6.3 组合 56 6.4 布尔函数 57 6.5 再谈递归 58 6.6 坚持信念 59 6.7 另一个示例 60 6.8 检查类型 60 6.9 调试 61 6.10 术语表 63 6.11 练习 63 第7章 迭代 65 7.1 重新赋值 65 7.2 更新变量 66 7.3 while语句 66 7.4 break语句 68 7.5 平方根 68 7.6 算法 70 7.7 调试 70 7.8 术语表 71 7.9 练习 71 第8章 字符串 73 8.1 字符串是一个序列 73 8.2 len 74 8.3 使用for循环进行遍历 74 8.4 字符串切片 75 8.5 字符串是不可变的 76 8.6 搜索 77 8.7 循环和计数 77 8.8 字符串方法 78 8.9 操作符in 79 8.10 字符串比较 79 8.11 调试 80 8.12 术语表 82 8.13 练习 82 第9章 案例分析:文字游戏 85 9.1 读取单词列表 85 9.2 练习 86 9.3 搜索 87 9.4 使用下标循环 88 9.5 调试 90 9.6 术语表 90 9.7 练习 91 第10章 列表 93 10.1 列表是一个序列 93 10.2 列表是可变的 94 10.3 遍历一个列表 95 10.4 列表操作 95 10.5 列表切片 96 10.6 列表方法 96 10.7 映射、过滤和化简 97 10.8 删除元素 98 10.9 列表和字符串 99 10.10 对象和值 100 10.11 别名 101 10.12 列表参数 102 10.13 调试 103 10.14 术语表 104 10.15 练习 105 第11章 字典 108 11.1 字典是一种映射 108 11.2 使用字典作为计数器集合 110 11.3 循环和字典 111 11.4 反向查找 111 11.5 字典和列表 112 11.6 备忘 114 11.7 全局变量 115 11.8 调试 117 11.9 术语表 118 11.10 练习 119 第12章 元组 121 12.1 元组是不可变的 121 12.2 元组赋值 122 12.3 作为返回值的元组 123 12.4 可变长参数元组 124 12.5 列表和元组 124 12.6 字典和元组 126 12.7 序列的序列 127 12.8 调试 128 12.9 术语表 129 12.10 练习 129 第13章 案例研究:选择数据结构 132 13.1 单词频率分析 132 13.2 随机数 133 13.3 单词直方图 134 13.4 最常用的单词 135 13.5 可选形参 136 13.6 字典减法 137 13.7 随机单词 138 13.8 马尔可夫分析 138 13.9 数据结构 140 13.10 调试 141 13.11 术语表 142 13.12 练习 143 第14章 文件 144 14.1 持久化 144 14.2 读和写 144 14.3 格式操作符 145 14.4 文件名和路径 146 14.5 捕获异常 147 14.6 数据库 148 14.7 封存 149 14.8 管道 150 14.9 编写模块 151 14.10 调试 152 14.11 术语表 152 14.12 练习 153 第15章 类和对象 155 15.1 用户定义类型 155 15.2 属性 156 15.3 矩形 157 15.4 作为返回值的实例 158 15.5 对象是可变的 159 15.6 复制 159 15.7 调试 161 15.8 术语表 161 15.9 练习 162 第16章 类和函数 163 16.1 间 163 16.2 纯函数 164 16.3 修改器 165 16.4 原型和计划 166 16.5 调试 167 16.6 术语表 168 16.7 练习 168 第17章 类和方法 170 17.1 面向对象特性 170 17.2 打印对象 171 17.3 另一个示例 172 17.4 一个更复杂的示例 173 17.5 init方法 173 17.6 _ _str_ _方法 174 17.7 操作符重载 175 17.8 基于类型的分发 175 17.9 多态 177 17.10 接口和实现 177 17.11 调试 178 17.12 术语表 179 17.13 练习 179 第18章 继承 181 18.1 卡片对象 181 18.2 类属性 182 18.3 对比卡牌 183 18.4 牌组 184 18.5 打印牌组 185 18.6 添加、删除、洗牌和排序 185 18.7 继承 186 18.8 类图 188 18.9 数据封装 189 18.10 调试 190 18.11 术语表 191 18.12 练习 191 第19章 Python拾珍 194 19.1 条件表达式 194 19.2 列表理解 195 19.3 生成器表达式 196 19.4 any和all 197 19.5 集合 197 19.6 计数器 199 19.7 defaultdict 200 19.8 命名元组 201 19.9 收集关键词参数 202 19.10 术语表 203 19.11 练习 203 第20章 调试 205 20.1 语法错误 205 20.2 运行错误 207 20.2.1 我的程序什么都不做 207 20.2.2 我的程序卡死了 207 20.2.3 无限循环 208 20.2.4 无限递归 208 20.2.5 执行流程 208 20.2.6 当我运行程序,会得到一个异常 209 20.2.7 我添加了太多print语句,被输出淹没了 210 20.3 语义错误 210 20.3.1 我的程序运行不正确 211 20.3.2 我有一个巨大而复杂的表达式,而它和我预料的不同 211 20.3.3 我有一个函数,返回值和预期不同 212 20.3.4 我真的真的卡住了,我需要帮助 212 20.3.5 不行,我真的需要帮助 212 第21章 算法分析 214 21.1 增长量级 215 21.2 Python基本操作的分析 217 21.3 搜索算法的分析 218 21.4 散列表 219 21.5 术语表 223 译后记 224
什么是共识算法背景分布式系统集群设计中面临着一个不可回避的问题,一致性问题对于系统中的多个服务节点,给定一系列操作,如何试图使全局对局部处理结果达成某种程度的一致?这个一致性问题大致有如下的场景:节点之间通讯不可靠的,延迟和阻塞节点的处理可能是错误的,甚至节点自身随可能宕机节点作恶举例说明,就比如有两家电影院同售卖总量一定的电影票,在这样的场景下,要如何设计方式来保证两家电影院协调同步不出现超卖或者错卖的问题呢?共识算法,就是解决对某一提案(目标,投票等各种协作工作),大家达成一致意见的过程比如上述的买票问题,就可以有如下的设计:1.每次卖票打电话给其他电影院,确认当前票数2.协商售卖间,比如一三五A卖,二四六B卖3.成立个第三方存票机构,它统一发票通过以上的设计,可以看出一个很重要的解决一致性算法的解决思路,即:将可能引发不一致的并行操作进行串行化,就是现在计算机系统里处理分布式一致性问题基础思路和唯一秘诀著名的共识设计理论FLP 不可能性原理  共识算法的理论下限提出该定理的论文是由 Fischer, Lynch 和 Patterson 三位作者于 1985 年发表,该论文后来获得了 Dijkstra(就是发明最短路径算法的那位)奖。FLP 原理认为对于允许节点失效情况下,纯粹异步系统无法确保一致性在有限间内完成。三人三房间投票例子三个人在不同房间,进行投票(投票结果是 0 或者 1)。三个人彼此可以通过电话进行沟通,但经常会有人地睡着。比如某个候,A 投票 0,B 投票 1,C 收到了两人的投票,然后 C 睡着了。A 和 B 则永远无法在有限间内获知最终的结果。如果可以重新投票,则类似情形每次在取得结果前发生带入到计算机领域就是说,即便在网络通信可靠情况下,一个可扩展的分布式系统的共识问题的下限是无解。即可靠性的下限是0%CAP  分布式系统领域的重要原理CAP 原理最早由 Eric Brewer 在 2000 年,ACM 组织的一个研讨会上提出猜想,后来 Lynch 等人进行了证明• C(一致性):所有的节点上的数据刻保持同步,即数据一致• A(可用性):每个请求都能在一定间内接受到一个响应,即低延迟• P(分区容错):当系统发生分区仍然可以运行的定理:任何分布式系统只可同满足二点,没法三者兼顾。即数据一致,响应及,可分区执行不可能同满足。举个例子:一个分布式网路上,某一个节点有一组依赖数据A,当网络无延迟,无阻塞,依赖于X的操作可正常进行。但网络无延迟阻塞在现实世界中是没法100%保证的,那么当网络异常,必然会产生分布式系统的分区和孤岛,那当一个执行操作在A分区之外,如果要保证P,即当系统发生分区仍可运行,就需要在分布式系统中多个节点有X的备份数据,以应对分区情况。则这候就需要在C,A之间做出选择。假如选择C,即要保证数据在分布式网络中的一致性,那么就需要在X每次改动,需要将全网节点的X数据同步刷新成最新的状态,那么在等待数据刷新完成之前,分布式系统是不可响应X的依赖操作的,即A的功能缺失假如选择A,即要突出低延迟的实响应。那么在响应的候,可能全节点的X数据并没有同步到最新的状态,则会导致C的缺失。上面看上去有些绕,那么你只要记住这句话,CAP原理在分布式网络系统的应用讨论,其实就是讨论在允许网络发生故障的系统中,该选择一致性还是可靠性?如果系统重视一致性,那么可以基于ACID原则做系统设计即 Atomicity(原子性)、Consistency(一致性)、Isolation(隔离性)、Durability(持久性)。ACID 原则描述了对分布式数据库的一致性需求,同付出了可用性的代价。• Atomicity:每次操作是原子的,要么成功,要么不执行;• Consistency:数据库的状态是一致的,无中间状态;• Isolation:各种操作彼此互相不影响;• Durability:状态的改变是持久的,不会失效相应的有一个BASE原则,(Basic Availiability,Soft state,Eventually Consistency)则强调了可用性。经典的共识算法设计业内,针对节点异常的情况,会有两种分类1.故障的,不响应的节点,成为非拜占庭错误2.恶意响应的节点,称为非拜占庭错误Paxos 最早的共识算法  非拜占庭算法的代表Paxos有三种角色:• proposer:提出一个提案,等待大家批准为结案。客户端担任该角色;• acceptor:负责对提案进行投票。往往是服务端担任该角色;• learner:被告知结案结果,并与之统一,不参与投票过程。即普通节点系统运行由proposer驱动,当合法提案在一定间内收到1/2以上投票后达成共识。 

958

社区成员

发帖
与我相关
我的任务
社区描述
社区内分享我们的开源平台tare机器人自主导航系统,希望能帮助所有自主移动机器人领域的研究人员快速搭建出属于自己的,稳定可靠的机器人仿真和实验的平台,更快进入自己的研究领域
自动驾驶人工智能 企业社区
社区管理员
  • 哈工大-朱洪彪
  • 小麦Y
  • 曹超CMU
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧