全覆盖路径规划--Morse函数临界点的地图精确单元分解

该算法将给定的地图分解成若干个cells(单元)。每个单元都是无障碍的,因此可以更简单的进行路径规划。对于每个单元,先规划一条boustrophedon路径,该路径上下往返平行于单元的上下边界,详细信息,请参阅参考文献下载链接
此函数执行以下步骤:

  • I.使用Sobel算子计算每个像素处的梯度方向。利用这些信息,可以计算出最适合单元格的方向,即令单元更长的方向,并且以这种方式旋转地图。这样就可以在最后一步中使用算法将找到的路径点简单地转换回原始方向。
  • II.通过给定的地图扫描一个切片(莫尔斯函数),并检查这条线的连通性,即有多少连接段。如果连接增加,即出现更多的段,则会发生产生新的单独单元格的IN事件,如果连接减少,即段合并,则会发生将两个单元格合并在一起的OUT事件。如果发生事件,算法会沿着当前行检查critical points,即触发事件的点。从这些区域开始绘制单元格的边界,从critical points开始向左/向右移动,直到击中黑色像素。
  • III.扫描切片确定所有单元后,算法使用轮廓检测找到这些单元格,并为每个单元提供一组像素点,用于从每个单元创建通用多边形。
  • IV.创建所有多边形后,为所有的多边形规划路径以覆盖整个区域。为此,首先使用旅行商问题(TSP)公式,生成一条穿过所有单元的全局路径。这就产生了一个所有单元的最佳访问顺序。接下来,为每个单元确定一条boustrophedon路径,该路径在单元内和沿着单元边界的水平路径之间来回移动,以确保覆盖单元的整个区域。对于每个单元,找到最长的边并将其旋转,使之水平于x方向。这会产生更长但更少的边,从而改进小而长的单元所规划的路径。单元路径的起点由前一个单元的终点所确定,且两个单元路径之间的距离最小。单元路径是以旋转的方式确定的,因此在最后一步中,单元路径点将转换为原始单元内的点,然后插入全局路径中。
  • V.上一步生成了一条视场路径。如果需要,这条路径将被映射到机器人视场所需跟随的路径。为此,只需应用矢量变换。如果计算出的机器人姿态不在自由空间中,则通过在视场半径内找到距离机器人上一位置最小的可访问点来生成。如果不需要这样做,则必须将相应的布尔值设置为false(显示应为机器人足迹执行路径规划)。
  • 2
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
RT-Thread是一种实时操作系统,可用于嵌入式设备。而Morse码是一种用于发送和接收电码的通信方法。 在RT-Thread中进行Morse码测试,可以将Morse码用作通信媒介来测试系统的实时性和稳定性。这种测试方法可以利用RT-Thread的线程和定时器功能来模拟发送和接收Morse码的过程。 首先,我们需要创建一个用于发送Morse码的线程。该线程可以定期发送不同的Morse码信号,通过控制输出电平的方法来模拟点(.)和划(-)的信号。我们可以利用GPIO接口来控制输出电平。 然后,我们还需要创建一个用于接收Morse码的线程。该线程可以通过另一个GPIO接口来检测输入电平的变化。当接收到一个电平变化后,线程将根据时间间隔来确定是点还是划,并通过串口或其他方式将结果输出。 在测试过程中,我们可以改变发送和接收Morse码的频率,来验证系统的实时性和响应能力。我们可以通过调整线程的优先级和定时器的时间间隔,来模拟不同的实时要求。 通过这种Morse码测试方法,我们可以验证RT-Thread对于实时性要求的满足程度,通过观察发送和接收的Morse码是否准确和及时。如果Morse码发送和接收存在延迟或错误,可能意味着系统的实时性不足或操作系统的性能出现问题。 综上所述,RT-Thread可以通过Morse码测试来评估系统的实时性和稳定性,以及操作系统的性能表现。这种测试方法可以帮助开发人员找出系统存在的问题,并进行相应的调整和优化。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值