【问题标题】:How to find a path from source to target with obstacle avoidance如何通过避障找到从源到目标的路径
【发布时间】:2025-12-11 01:40:01
【问题描述】:

实际上,我的机器人想通过避障从源移动到目标。我以像素为单位找出障碍物(矩形)和目标(圆形)。但我不知道如何找到从源到目标的路径...请帮助我。

这是寻找障碍物和目标的代码。

for (int i = 0, n = blobs.Length; i < n; i++)
               {
                   List<IntPoint> edgePoints = blobCounter.GetBlobsEdgePoints(blobs[i]);

                   AForge.Point center;
                   float radius;

                   // is circle ?
                   if (shapeChecker.IsCircle(edgePoints, out center, out radius))
                   {
                       g.DrawEllipse(whitePen, (float)(center.X - radius), (float)(center.Y - radius),
                                    (float)(radius * 2), (float)(radius * 2));
                       target.Add(center.ToString());
                   }
                   else
                   {
                       List<IntPoint> corners;
                       // is triangle or quadrilateral
                       if (shapeChecker.IsConvexPolygon(edgePoints, out corners))
                       {
                           // get sub-type
                           PolygonSubType subType = shapeChecker.CheckPolygonSubType(corners);
                           Pen pen;

                           if (subType == PolygonSubType.Unknown)
                           {
                               pen = (corners.Count == 4) ? redPen : bluePen;
                           }
                           else
                           {
                               pen = (corners.Count == 4) ? greenPen : brownPen;
                           }
                           g.DrawPolygon(pen, ToPointsArray(corners));
                       }
                   }
               }

上述编码将检测障碍物和目标位置像素值并将其存储在单独的数组中。但是从这些像素值如何计算路径呢?等待你的建议.....

【问题讨论】:

    标签: c# robotics robot


    【解决方案1】:

    正在尝试查找 A* 搜索算法。

    【讨论】:

      【解决方案2】:

      我没有查看您的代码,但这是一个经典的寻路问题。一个建议可能是将机器人移动的整个区域映射到网格上。网格可以有离散的单元格。然后您可以使用任何图搜索算法找到从起始单元格到目标单元格的路径。

      您可以使用一些算法,例如 Dijkistra、Best-first 和 A-Star 搜索算法。事实证明,A-Star 高效且易于实施。查看this,里面有关于A-Star的很好的解释。

      【讨论】:

        最近更新 更多