我正在计算机器人在具有多边形障碍物的平面上的最短路径。一切正常,快速,没有问题。但是,如何平滑路径使其变得曲线? 下面是用直线连接顶点的路径的图片。 P.S 机器人只是一个圆圈。机器人的平滑路径
机器人的平滑路径
回答
This paper可能是有用的。看起来这是一个不平凡的问题。摘要:
自动图形抽屉需要计算一个简单的多边形的版本之间的路径,除了留在内部需要显示某些美学特性。其中一些要求包含一些关于多边形形状的信息,而不要离实际的最短路径太远。我们提出一种算法来计算局部凸区域,该区域“包含”简单多边形的两个顶点之间的最短欧几里得路径。该区域具有“跟随”最短路径形状的边界形状。区域内部的三次贝塞尔样条曲线在两个给定顶点之间提供了“短而平滑”的无碰撞曲线。获得的结果似乎美观愉快,所使用的方法可能是独立的利益。它们是元素和可执行的。图7是我们当前实现产生的示例输出。
我试图让现实的飞行序列在Teragen中呈现时,我曾经玩过很多路径计算技术。我最初尝试使用Bézier Curves。
但发现(至少飞行),他们是没有多大用处的。原因是曲线之间的曲率是不连续的,所以不能用来计算飞越的连续正确的倾斜角度。另外,很难确定曲线不会与山脉相交。
我离题了。我最终决定的方式是一个简单的基于质量弹簧的路径,并放松下来。
将路径细分为许多小段,越多越好。对于每个点,将其沿一个方向稍微移动一点,以减少它与其邻居之间的角度,并避开障碍物。重复多次,直到路径安定下来。
k = 0.01 // Adjust the values of k and j to your liking.
j = 0.01 // Small values take longer to settle. Larger values are unstable.
For each point P
normal_vector = vector_to_previous_point + vector_to_next_point
obstacle_vector = vector_to_nearest_obstacle
obstacle_distance = magnitude(obstacle_vector)
obstacle_vector *= obstacle_distance^2
P += (normal_vector * k) - (obstacle_vector * j)
这些种类的有限元放松技巧的好处是,你可以在这个各种约束的编程到它,路径将解决他们之间的一些妥协,这取决于权重(J和K案件)。
如果您是机器人技术人员,为什么不来加入Robotics Proposal?
谢谢,你的方法一见钟情,虽然我仍然需要实现和测试它。而且,哦,是的,我会支持该提议;) – nullpotent 2012-10-17 22:56:02
难道你不能只在路径的实际执行中使路径跟随算法吗?如果按照原样离开路径(即连接直线),实现约1米的前视距离(该值取决于机器人的速度以及填充配置空间以避开障碍物的数量)计算每个车轮速度的控制算法将自动消除路径,而无需进行预处理。
下面是我的意思是一个快速图像...红色虚线表示机器人在根据前视距离控制点时实际执行的路径。前视距离仅计算路径下方某点的任意距离。
同样,你不用担心的唯一的事情是多少你填充的障碍,以确保你避免撞上他们。通常情况下,我相信障碍物的面积会被机器人半径的一半填充,但如果您控制到前视距离,则可能需要稍微增大一点。
最后,我选择了与此处介绍的解决方案相同的解决方案。它需要一点调整,但它的工作。谢谢你;) – nullpotent 2013-09-26 12:45:57
在机器人的情况下,我们无法预知未来。我们必须知道每个点只知道机器人的位置和障碍物。用于制作最小长度曲线路径的常用方法是用机器人建模一个圆,然后移动圆以保持与障碍物接触。只需保持一个半径,并且转弯将是曲线。
如果您想要曲线而不是最小距离,请尝试使上述半径与距离多边形顶点的距离成比例。
贝赛尔曲线的想法只能用于回顾弯曲的路径。它改变了机器人的位置。通常情况下,机器人改变过去称为“作弊”。避免必须改变已经走过的道路的一种方法是展望未来。但机器人能看到四周的角落吗?你必须更好地指定规则。
- 1. 机器人从路径
- 2. 绘图机器人路径
- 3. 平滑svg路径连接
- 4. 如何平滑路径(android)
- 5. 计数机器人路径(python)
- 6. 通过路径引导机器人
- 7. 机器人如何通过路径
- 8. 机器人路径规划 - A *(星)
- 9. SKSpriteNode在随机路径上的平滑运动
- 10. 在地图上平滑地动画摄影机路径
- 11. 使用SKAction平滑路径角落followPath
- 12. AndEngine沿路径平滑旋转
- 13. 使用滑翔机器人
- 14. 在机器人中不平滑,落后的动画
- 15. 基于四叉树的astar路径规划的路径平滑算法
- 16. 如何通过Java机器人进行平滑滚动?
- 17. 水平机器人:animateLayoutChanges =“真”动画不光滑
- 18. 聊天机器人平台
- 19. 在ASP.net平机器人mvc
- 20. 找不到机器人路径查找的解决方案
- 21. 微软机器人工作室和绝对路径的问题
- 22. 路径测试套件文件中的机器人框架
- 23. php本地机器路径
- 24. 随机平滑图
- 25. 平滑径向渐变
- 26. 平滑多人运动
- 27. 如何平滑WPF线段的路径图
- 28. 如何平滑贝塞尔路径中的连线?
- 29. 如何绘制位图的平滑路径,而不
- 30. 使用绝对路径锚链接的平滑移动
第一步:您需要定义机器人的转弯半径。如果它可以有效地开启一角钱,为什么你会希望它走弯曲的道路? – 2011-04-05 18:33:53
你说得对。我知道有人会问我。我的机器人将有一个完整的转弯半径,但我想知道它是如何完成的,即使如此。 “如何用曲线连接点”本来就是真正的问题。我道歉。 – nullpotent 2011-04-05 18:44:29
我确实认为这个数字是回答这个问题的内在因素。但是我们可以使用一些变量,比如'TR'来表示转弯半径。在这种情况下,你已经为'TR = 0'的特殊情况回答了你自己的问题。 – 2011-04-05 18:50:37