我正在使用带有火焰传感器和超声波传感器的 Arduino Uno 制作一辆救火车,以检测如何移动和去哪里。由于这是我大学的一个项目,我被要求在其中实施 AI 以进行路径规划。
我不确定是否使用 A* 技术或 ID3 决策树之类的技术,或者是否有比两者更好的方法来为我的机器人实施路径规划。有什么建议?
我正在使用带有火焰传感器和超声波传感器的 Arduino Uno 制作一辆救火车,以检测如何移动和去哪里。由于这是我大学的一个项目,我被要求在其中实施 AI 以进行路径规划。
我不确定是否使用 A* 技术或 ID3 决策树之类的技术,或者是否有比两者更好的方法来为我的机器人实施路径规划。有什么建议?
如果我必须在机器人上实现路径探索/查找算法,我将遵循以下步骤:
确保您可以检测到您的位置。你需要能够记录你的位置,否则你没有探索的参考。您不需要全球定位系统(如 GPS),在您的情况下,本地系统就足够了。这意味着机器人必须知道它已在位置 (0,0) 开启。如果你直走 5 米,你会将它更新为 (5,0) 或类似的东西。
知道你移动了多少以及向哪里移动是困难的事情。
一旦你知道你在哪里,就该记录它了。当您想要探索环境时,您可能想要在节点上创建一个包含状态的树。如果您仍然可以在它周围探索,则该节点可以打开,如果探索已经完成,则关闭。
为了获得从一个节点到另一个节点的路径,A* 的工作绰绰有余。
要了解您周围的情况,您可以使用传感器探索周围环境并了解障碍物的位置。
这是一般的想法:
Tree tree = new Tree()
Node first = new Node(Here)
tree.Add(first)
Node current = first
while(true) {
ExploreAround(current)
var nodes = CreateSurroundingNodes()
tree.Add(nodes)
current.State = closed
var next = PickNearestOpenNode()
MoveTo(next)
WaitUntilRobotIsOn(next)
current = next
}
在我的学士论文中,我在 Unity3D 上的无人机上实现了一个非常相似的算法。你可以在这里找到包。你可以从中得到一个想法。
这是它如何工作的视频:https ://youtu.be/Xrh9-4Bfcew