我目前正在开发一个机器人+它能够发现、捡起并将小球投进球门。然而,这个二维场充满了我不允许撞到的障碍物。我需要知道在撞到障碍物之前我能转多远,这样我才能找出最佳动作。
我已经计算了机器人的转弯半径,但只是假设机器人是一条直线。由于机器人是一个“矩形”,因此它的转弯半径与中间的纯直线不同。机器人正在绕其中心转动。可能有多个障碍,这是我拥有的数据: 机器人中间(x,y) 机器人正面(x,y) 机器人后退(x,y) 障碍物(x, y) 我将附上一些图片以更好地解释我的问题。为了让你知道,我有关于如何解决它的“想法”,但我更多的是寻找一个可以插入数据的方程或公式。我想知道根据机器人何时撞到障碍物(角度不超过 1 度),我可以在每个给定方向上转动多远。请帮助我在这方面用了太长时间。 机器人遇到障碍物转弯 圆形轮廓不在机器人中间
我有一个类似的问题,但只想知道一个点是否在矩形中,我认为如果你颠倒逻辑,它会起作用。 我取了矩形的每条边并计算“障碍物”和边缘点之间向量的叉积,如下所示:
# Calculate distance between the two points of the edge by the obstacle
v1 = {x: obstacle.x - edge_first_point.x, y: obstacle.y - edge_first_point.y}
v2 = {x: edge_second_point.x - obstacle.x, y: edge_second_point.x - obstacle.y}
# Calculate the cross product of these two vectors
cross_product = (v2.x * v1.y) - (v1.x * v2.y)
如果你用这三个点画一个三角形,它会根据矩形的边缘给出障碍物的方向,叉积将小于或大于 0,具体取决于其方向。
您可以查看绘制的所有三角形是否都指向矩形区域的内部。如果不是,则不会发生碰撞。