精华内容
下载资源
问答
  • BUG算法(Bug Algorithms)是一种最简单的避障算法。其算法原理类似昆虫爬行的运动决策策略。在未遇到障碍物时,沿直线向目标运动;在遇到障碍物后,沿着障碍物边界绕行,并利用一定的判断准则离开障碍物继续直行。...

    本文所有图片均来自以下这本书:

    Principles of Robot Motion: Theory, Algorithms, and Implementations[M]. MIT Press, 2005.

    在上一篇博客我也给出了下载链接。

    本篇博客主要介绍一下BUG算法:

    BUG算法(Bug Algorithms)是一种最简单的避障算法。其算法原理类似昆虫爬行的运动决策策略。在未遇到障碍物时,沿直线向目标运动;在遇到障碍物后,沿着障碍物边界绕行,并利用一定的判断准则离开障碍物继续直行。这种应激式的算法计算简便,不需要获知全局地图和障碍物形状,具备完备性。但是其生成的路径平滑性不够好,对机器人的各种微分约束适应性比较差。

    Bug1算法

    该算法的基本思想是在没有障碍物时,沿着直线向目标运动可以得到最短的路线。当传感器检测到障碍物时,机器人绕行障碍物直到能够继续沿直线项目标运动。BUG1算法只有两个行为:向目标直行和绕着障碍物的边界走。
    在这里插入图片描述

    如图2.1所示,假设机器人能够计算两点之间的距离,并且不考虑机器人的定位误差。起始点和目标点分别为 q s t a r t q_{start} qstart q g o a l q_{goal} qgoal表示. 初始时刻 i = 0 i = 0 i=0,令 q 0 L = q s t a r t q^L_0 = q_{start} q0L=qstart,并称连接 q i L q^L_i qiL q g o a l q_{goal} qgoal的线段为 m − l i n e m-line mline. 在没有遇到障碍时,机器人沿着 m − l i n e m-line mline朝目标 q g o a l q_{goal} qgoal直线移动. 如果遇到障碍,则称点 q 1 H q^H_1 q1H为第一次遇到障碍时的撞击点(hit point). 接着,机器人环绕障碍物移动直至返回 q 1 H q^H_1 q1H点。然后判断出障碍物周边上离目标最近的点,并移到这个点上,该点称为离开点(leave point),由 q 1 L q^L_1 q1L表示。从 q 1 L q^L_1 q1L开始机器人再次沿直线驶向目标,如果这条线与当前障碍物相交,则不存在到达目标的路径(如图2.2所示)。 Bug1算法的效率很低,但可以保证机器人能到达任何可达的目标(概率完备)。

    在这里插入图片描述
    BUG1算法伪代码:
    在这里插入图片描述

    Bug2算法

    Bug2算法也有两种运动:朝向目标的直行和沿边界绕行。与Bug1算法不同的是,Bug2算法中的直线 m − l i n e m-line mline 是连接初始点和目标点的直线,在计算过程中保持不变。当机器人在点遇到障碍物时,机器人开始绕行障碍物,如果机器人在绕行过程中在距离目标更近的点再次遇到直线 m − l i n e m-line mline ,那么就停止绕行,继续沿着直线 m − l i n e m-line mline 向目标直行。如此循环,直到机器人到达目标点 q g o a l q_{goal} qgoal 。如果机器人在绕行过程中未遇到直线 m − l i n e m-line mline上与目标更近的 q i L q^L_i qiL 点而回到了 q i H q^H_i qiH 点,那么得出结论,机器人不能到达目标。
    在这里插入图片描述
    Bug2算法伪代码:
    在这里插入图片描述
    BUG1和BUG2算法提供了搜索问题的两种基本方法:比较保守的BUG1算法进行详细的搜索来获得最佳的离开点。这需要机器人环绕整个障碍物的边界。而BUG2算法使用一种投机的方法。机器人不环绕完整的障碍物,而选择第一个可用的点作为离开点。对于一般的环境,BUG2算法的效率更高;而对于复杂形状的障碍物,保守的BUG1算法性能更优。

    Bug2算法在一般情况下具有很短的移动路径,然而这种策略并非完美。如图2.4所示的螺旋形障碍物,其边界与m-line多次相交,我们可以根据上述Bug2算法的伪代码确定其运动路径:
    在这里插入图片描述

    1. q s t a r t q_{start} qstart q g o a l q_{goal} qgoal,遇到障碍物,到达撞击点 q 1 H q^H_1 q1H
    2. q 1 H q^H_1 q1H开始环绕障碍物,直到与 m − l i n e m-line mline相交到达m点(此时进行判断:没有到达目标;没有再次遇到 q 1 H q^H_1 q1H;相比 q 1 H q^H_1 q1H点m点离目标更近;继续朝目标前进不会碰到障碍),则 q 1 L = m , i = 2 q^L_1=m,i=2 q1L=mi=2。机器人从 q 1 L q^L_1 q1L沿着 m − l i n e m-line mline继续朝目标前进;
    3. 再次遇到障碍物,到达撞击点 q 2 H q^H_2 q2H,然后沿着障碍物边界移动,直到再次与 m − l i n e m-line mline相交到达m点(此时进行判断:没有到达目标;没有再次遇到 q 2 H q^H_2 q2H;但继续朝目标前进会碰到障碍),由于不满足离开点的条件,则继续环绕;
    4. 机器人环绕边界到达 q 1 H q^H_1 q1H点,与 m − l i n e m-line mline相交(此时进行判断:没有到达目标;没有再次遇到 q 2 H q^H_2 q2H;但继续朝目标前进会碰到障碍),由于不满足离开点的条件,则继续环绕目标;
    5. 机器人继续环绕边界到达 q 1 H q^H_1 q1H点,与 m − l i n e m-line mline相交(此时进行判断:没有到达目标;没有再次遇到 q 2 H q^H_2 q2H;继续朝目标前进不会碰到障碍;但此时相比 q 2 H q^H_2 q2H机器人离目标位置更远),因此也不满足离开点条件,则继续环绕;
    6. 机器人环绕边界,与 m − l i n e m-line mline相交到达m点(此时进行判断:没有到达目标;没有再次遇到 q 2 H q^H_2 q2H;继续朝目标前进不会碰到障碍;但此时相比 q 2 H q^H_2 q2H机器人离目标位置更远),因此也不满足离开点条件,则继续环绕;
    7. 机器人环绕边界,与 m − l i n e m-line mline相交到达m点(此时进行判断:没有到达目标;没有再次遇到qH2;继续朝目标前进不会碰到障碍;相比 q 2 H q^H_2 q2H机器人离目标位置更近),满足离开点条件,则 q 2 L = m , i = 3 q^L_2=m,i=3 q2L=mi=3
    8. 机器人从 q 2 H q^H_2 q2H沿着 m − l i n e m-line mline继续朝目标前进,到达目标位置。

    Tangent Bug算法

    TangentBUG算法是对BUG2算法的改进。它利用机器人上距离传感器的读数对障碍物做出提前规避,可以获得更短更平滑的机器人路径。假设机器人上安装有360°激光雷达(或者红外距离传感器),那么我们可以测得每束光线到达障碍物的距离.下图中 x x x代表机器人的位置,细线代表发出的光线,粗线代表了光线被遮挡(说明机器人无法到达这些位置).

    在这里插入图片描述
    我们用 O i O_i Oi标记光线与障碍物相交的边界点:
    在这里插入图片描述
    在这里插入图片描述
    与其他的Bug算法一样,Tangent Bug算法也有两种行为:直行(motion-to-go)和环绕障碍物(boundary-following)。
    算法过程:

    1. 机器人直接沿着目标方向按直线行走,直到激光雷达检测到了障碍物。
    2. 用虚线的圆表示激光雷达的检测范围。
    3. 标记出 O i O_i Oi,然后机器人向着启发距离最小的 O i O_i Oi前进。

    关于 O i O_i Oi的选择

    启发距离是人为规定的,比如我们可以用 d ( x , O i ) + d ( O i , q g o a l ) d(x,O_i)+d(O_i,q_{goal}) d(x,Oi)+d(Oi,qgoal)来表示.不同的目标位置会导致机器人对每一步 O i O_i Oi的选择不同,比如下面这幅图中,左图机器人选择了 O 2 O_2 O2,而右图机器人选择了 O 4 O_4 O4 .
    在这里插入图片描述

    当然 O i O_i Oi的值是实时更新的,这将导致最后机器人靠近障碍物时行走的轨迹是一条曲线而不是直线
    在这里插入图片描述
    在机器人运动过程中,探索距离不再减小时,就停止向目标运动行为,切换到环绕边界行为。此时,机器人找到了探测距离的一个极小值,并可计算已探测的障碍物边界与目标 q g o a l q_{goal} qgoal 的最近距离 d f o l l o w e d d_{followed} dfollowed 。机器人按照原来的方向环绕障碍物运动,同时机器人更新当前探测的障碍物边界与目标的最近距离 d r e a c h d_{reach} dreach 。当发现 d r e a c h < d f o l l o w e d d_{reach}<d_{followed} dreach<dfollowed 时,机器人停止障碍物环绕行为,继续向目标运动。

    在这里插入图片描述
    如上图所示,当机器人探索到障碍物上的 M M M点后,探索距离就不再减小,即 M M M 点是机器人探索距离在障碍物边界上的局部极小点。机器人开始沿着障碍物边界进行环绕,图中虚线路径就是机器人环绕障碍物时所走的路径。当机器人探测到与目标距离相比 M M M点更近的点时,重新开始接近目标的运动。

    Tangent Bug算法伪代码如下:
    在这里插入图片描述

    激光雷达半径对算法的影响

    使用Tanget Bug可以有效的提升整体效率,这是激光雷达测量半径为 R R R 时形成的轨迹,当测量半径退化为0时(变成了接触传感器),Tangent Bug算法就退化成了Bug2算法:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    总结

    Bug算法是最早被提出来的路径规划算法,很符合直觉,尤其是在完全一无所知的环境下,Bug算法往往能够取得非常不错的效果!

    展开全文
  • 定位bug

    千次阅读 2018-10-23 17:09:23
    测试工程师不只是负责发现bug,除了发现bug这种基本功外,定位bug,提出解决方案,提出预防方案也是要掌握的技能。这里先说定位bug的要求,定位bug要更深入,前提当然是对功能、产品的流程、开发方案、开发人员非常...

    测试工程师不只是负责发现bug,除了发现bug这种基本功外,定位bug,提出解决方案,提出预防方案也是要掌握的技能。这里先说定位bug的要求,定位bug要更深入,前提当然是对功能、产品的流程、开发方案、开发人员非常熟悉了,以我们部门为例,定位bug至少要到下面这种程度。

    首先确定是界面显示bug还是功能bug

    •        如果是界面bug:如贴图错误,文字错误,样式错误,则需要截图
    •     如果是功能bug:

             控制台的问题至少定位到:www的问题还是数据库问题,如果是www问题至少要定位到是前端还是后端问题;如果是数据库问题至少要定位到是服务端接口问题还是中间件问题

            客户端的问题至少定位到:哪个dll模块或者逻辑出的问题

            服务端的问题至少定位到:什么接口出的问题,导致数据库哪里不对

    另外需要注意的是:

    1)测试时不要全按照用例走,要多发散思维。

    2)测试时要尽量考虑得更全面,把一些多用户多终端或其他极端的情况都考虑到,即是考虑多个界面。

    3)测试时根据测试的经验思考,那些情况出现的bug比较多。

    最后:

      跟进重点问题的修改进度和方案,询问开发时如何修改的,反思开发的修改方案是否存在漏洞。

    展开全文
  • Bug管理系统BugFree

    千次阅读 2019-02-21 20:46:49
    BugFree是借鉴微软的研发流程和Bug管理理念,使用PHP+MySQL独立写出的一个Bug管理 系统。 下载XAMPP安装工具 https://pan.baidu.com/s/1FFXRWxQBPHla-UajBDcZLg XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建 ...

    BugFree是借鉴微软的研发流程和Bug管理理念,使用PHP+MySQL独立写出的一个Bug管理 系统。

    下载XAMPP安装工具

    https://pan.baidu.com/s/1FFXRWxQBPHla-UajBDcZLg
    XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建 XAMPP 软件站集成软件包。

    下载BugFree3.0.4

    https://pan.baidu.com/s/1SRK9PyiIpiEt8u6KfXV0cQ

    在这里插入图片描述

    安装XAMPP

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    下载并解压BugFree3.0.4

    解压BugFree3.0.4到XAMPP安装目录下的htdocs
    在这里插入图片描述
    在这里插入图片描述
    启动Apache和Mysql
    在这里插入图片描述
    使用浏览器打开地址
    http://localhost/bugfree3.0.4
    在这里插入图片描述
    在XAMPP安装目录下的htdocs目录下新建目录BugFile
    重新刷新页面
    在这里插入图片描述

    点击“继续”配置BugFree
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • Bug报告

    千次阅读 2018-08-28 20:10:47
    bug报告当中一些必备的内容: 硬件平台和操作系统: 1)测试应用的硬件平台(Platform),通常选择“PC” 2)测试应用的操作系统平台(OS) a) 版本 提交缺陷报告时通过该字段标识此缺陷存在于被测试软件的哪个版本...

    缺陷的生命周期:
    提交->确认->分配->修复->验证->关闭

    bug报告当中一些必备的内容:
    硬件平台和操作系统:
    1)测试应用的硬件平台(Platform),通常选择“PC”
    2)测试应用的操作系统平台(OS)

    a) 版本
    提交缺陷报告时通过该字段标识此缺陷存在于被测试软件的哪个版本
    b) Bug报告优先级
    c) Bug状态
    d) Bug的编号
    e) 发现人
    f) 提交人
    g) 指定处理人
    h) 概述
    i) 从属关系
    j) 详细描述
    k) 严重程度
    l) 所属模块
    m) 附件
    n) 提交日期

    高质量的软件缺陷(Bug)记录的标准:
    5C标准:
    Correct(准确): 每个组成部分的描述准确,不会引起误解
    Clear(清晰): 每个组成部分的描述清晰,易于理解
    Concise(简洁): 只包含必不可少的信息,不包括任何多余的内容
    Complete(完整): 包含复现该缺陷的完整步骤和其他本质信息
    Consistent(一致): 按照一致的格式书写全部缺陷报告

    当开发人员说不是BUG时,你如何应付?
    1.确定需求:
    可以找来产品经理进行确认,需不需要改动,3方商量确定好后再看要不要改
    2.这种情况不可能发生,所以不需要修改
    可以先尽可能的说出是BUG的依据是什么?如果被用户发现或出了问题,会有什么不良结果?把这个问题提出来,跟开发经理和测试经理进行确认。如果确定是bug的话,一定要坚持自己的立场,让问题得到最后的确认

    所有的软件缺陷都能修复吗?所有的软件缺陷都要修复吗?
    从技术上讲,所有的软件缺陷都是能够修复的,但是没有必要修复所有的软件缺陷。测试人员要做的是能够正确判断什么时候不能追求软件的完美。对于整个项目团队,要做的是对每一个软件缺陷进行取舍,根据风险决定那些缺陷要修复

    发生这种现象的主要原因如下:

    • 没有足够的时间资源:
      在任何一个项目中,通常情况下开发人员和测试人员都是不够用的,而且在项目中没有预算足够的回归测试时间,再加上修改缺陷可能引入新的缺陷,因此在交付期限的强大压力下,必须放弃某些缺陷的修改
    • 有些缺陷只是特殊情况下出现:
      这种缺陷处于商业利益考虑,可以在以后升级中进行修复
    • 不是缺陷的缺陷:
      我们经常会碰到某些功能方面的问题被当成缺陷来处理,这类问题可以以后有时间时考虑再处理
      最后要说的是,缺陷是否修改要由软件测试人员、项目经理、程序员共同讨论来决定是否修复,不同角色的人员从不同的角度来思考,以做出正确的决定
    展开全文
  • 如何区分前端bug还是后端bug

    千次阅读 2020-11-02 18:12:58
    软件测试工程师的职责是发现BUG,此外,如何体现个人价值?那么我们试想,只提出问题而不去解决,问题就永远得不到闭环。所以,一个资深的测试人员的基本功应该是这样的:深挖业务和功能需求,找出BUG,定位BUG,...
  • BUG分析

    千次阅读 2018-04-16 11:06:01
    建议从以下几点分析总结BUG,尽量用数据去量化和证明 1. BUG分布图(可明确知道哪些模块存在BUG多),及对应rd的开发质量、qa漏测情况 2. BUG严重性(BUG严重性,严重错误和次要错误占有比例大,相对系统的功能不...
  • 被问:这个BUG为什么测出来?该如何回答

    千次阅读 多人点赞 2021-08-21 10:25:31
    相信不少,应该说绝大数的测试同学都遇到过这样的场景,上线出现了BUG,被质问: 为什么测出来! 测试怎么测得?到底会不会测? 这对测试来说则是灵魂拷问级别不好回答的问题了。 那么我们遇到类似这样的提问该...
  • 解决bug问题,查找bug的方法

    千次阅读 2020-07-08 14:32:35
    想告别“写代码2分钟,找bug两小时”吗?,就必须掌握查找bug的能力 下面这些方法都是我这几年解决bug常用的 一、定位bug:如果在控制台中看不出bug,可以使用以下方法帮助查找bug 1、IDE编译器debug调试代码,在...
  • Bug驱动开发(Bug-driven development)

    千次阅读 2014-07-21 15:00:40
    不过根据我最近参与的某国外大型Java产品的经验...简单地说就是发现bug——消除bug——发现新的bug,这样一个不断循环的过程驱动着开发,是谓Bug驱动开发。要运用这种方法论非常简单,只需做到以下若干条中的某一条:
  • Bug避障算法简介(Bug1 & Bug2)

    千次阅读 2018-05-22 20:09:56
    基本概念 障碍物是指妨碍机器人通行的静止状态和运动状态的物体。 避障是指移动机器人根据传感器感知到的障碍物的状态信息,包括障碍物的... Bug算法大概是人们能想象到的最简单的避障算法。其基本思想是机器人在...
  • 首先是BUG的严重等级 BUG优先级 BUG的分类 缺陷/bug的状态 New: 当你发现一个bug的时候,需要与项目负责人或者你的leader沟通以确认发现的确实是一个bug,如果被确认是一个bug后,就可以将其记录下来,并将bug...
  • 如何做好BUG回归

    千次阅读 2018-05-20 22:09:33
    BUG贯穿研发体系、测试质量衡定的始终,做好BUG回归,即能保证质量,又能提高个人测试能力。做好BUG回归,能够很大程度的避免漏测。 BUG的处理流程 回归BUG的思路 从回归BUG的思路来看,首先验证原BUG现象...
  • Bug系列

    千次阅读 2014-03-10 17:25:34
    Bug之一——bug的前世今生 Bug这个名词已经很老了,从网络上查到的资料: >>>>>> 1946年,Grace Hopper在发生故障的MarkⅡ计算机的继电器触点里,找到了一只被夹扁的小飞蛾,正是这只小虫子“卡”住了机器的运行...
  • 什么是bug 怎么找bug

    2013-09-05 13:41:30
    什么是bug 怎么找bug 我是个菜鸟 请大神来解答一下
  • JMeter实现bugfree创建bug测试

    千次阅读 2015-07-21 11:53:09
    目的:使用JMeter工具实现在bugfree中创建bug 环境:Linux(Rhel6.1) + Apache + Tomcat2.7 + MySQL5.6 + bugfree3.0.4 步骤及注意事项: 1. 创建测试计划、添加HTTP Cookie管理器、添加HTTP默认请求= =步骤,此处...
  • bugfree中的bug导出、导入功能

    热门讨论 2011-04-28 16:50:14
    bugfree 2.x版本 * 修改Bug的导出功能为xls格式 * 增加Bug通过Excel格式的导入功能 详情请看文件中readme文档。
  • BUGBUG_ON

    千次阅读 2013-07-25 18:43:50
    调试的时候很有用的东西:dump_stack   使用前,先在内核配置中把kernel debug选上: ...最常用的两个是BUG()和BUG_ON()。当被调用的时候,它们会引发oops,导致栈的回溯和错误信息的打印。为什么这
  • Bug生命周期

    千次阅读 2017-06-11 21:23:06
    之所以会有打开这一步有两点目的:第一是测试组负责人对bug进行确认工作,避免提交错误的bug,第二是对bug进行一次筛选操作,告诉开发组本次需要修复哪些bug。(这一步需要测试组的负责人验证所有的bug,有些麻烦,...
  • Bug分支

    千次阅读 2015-12-21 16:13:27
    软件开发中,bug就像家常便饭一样。有了bug就需要修复,在Git中,由于分支是如此的强大,所以,每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除。 1. 查看工作区状态 $ git ...
  • 具体效果如上图所示,你只要贴了这个表情之后该群所有的群消息便不会再刷新,除非群主用电脑撤或者IOS设备进行撤回。慎用!不要作死! 方法如下: 把文字换成你要贴的表情sticker_start_tag_for_text{&...
  • 在测试过程中,作为软件测试工程师,经常会遇到bug定位问题,也是其中一个重要的问题就是到底如何判断自己提交的bug属于前端问题还是属于后端问题? 要知道自己提交的bug属于前端还是后端问题,那么首要需要理解...
  • bug等级划分标准以及bug类型

    千次阅读 2019-04-21 21:25:13
    一:测试BUG等级划分标准 Blocker(崩溃):阻碍开发或测试工作的问题;造成系统崩溃、死机、死循环,导致数据库数据丢失,与数据库连接错误,主要功能丧失,基本模块缺失等问题。如:代码错误、死循环、数据库发生...
  • 程序员的bug修复宝典

    万次阅读 多人点赞 2020-12-28 01:36:00
    程序员对bug的感情可谓是五味杂陈:一方面bug非常可恶,尤其是一些偶现的bug,它强大到可以摧毁一个优秀程序员的意志;另一方面很多bug又是程序员自己亲手写下的,无奈之余只能自嘲一句:不写bug我们就要失业了! ...
  • CSDN 中的 Bug

    千次阅读 2016-08-05 15:59:36
    之前没有做记录,直接反馈给客服了,有时图说得不太清楚,现在不都追求有图有真相么O(∩_∩)O~,所以在此记录一下。作为程序员的一份子,Bug对我们来说太正常不过了。但是,此刻我只站在客户的角度提问题,希望...
  • 如何定位前端bug和后端bug

    千次阅读 多人点赞 2019-10-08 09:34:24
    前言 初入软件测试行业,相信很多人都会有过这样的经历,发现了bug却不知道这个问题是属于前端的还是后端的。而在一个项目中,前端出bug的几率往往高于后端,因此在不知道bug是属于谁的情况下,经验不足的测试员会...
  • Bugbug的级别划分和优先级

    千次阅读 2020-11-05 19:28:16
    2. bug级别的分类及其具体划分的参考意见 一. 严重问题 定义: 不能完全满足系统要求,系统停止运行,系统的重要部件无法运行,系统崩溃或挂起等导致系统不能继续运行。修改优先级为最高,该级别问题需要立即修改。 ...
  • bug记录文档模板

    2018-05-04 09:48:43
    用于bug记录以及bug分析的模板,适合多种统计方式分析,以及问题记录详细信息
  • bug修复报告

    千次阅读 2019-08-19 19:53:50
    BUGID Bug的唯一标志,由bug管理系统自动生成 Bug标题 简明扼要地对Bug进行概要描述 产品名称 软件产品的名称 功能模块名 产品子系统 产品版本 测试平台 ...
  • BUG提交和管理规范

    千次阅读 2018-06-27 22:14:24
    在测试理论基础面试,或者带新人的过程中,有一件事情必不可少,就是如何提交BUG,应该通过哪些方面的信息去描述一个bug 好的bug描述不仅可以协助分析问题,提高流转效率,还能够给质量分析提供准确度依据。这是...
  • git bug分支管理

    千次阅读 2020-06-16 11:16:28
    软件开发中,bug就像家常便饭一样。有了bug就需要修复,在Git中,由于分支是如此的强大,所以,每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除。 当你接到一个修复一个代号101的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,242,980
精华内容 497,192
关键字:

bug没了