获取(真实)对象的位置

时间:2015-10-22 19:52:13

标签: python math python-3.4

故事:让我们说我有一个带有距离(超声波?)传感器的机器人。机器人可以计算距离它前面的任何物体的距离,但是它不能知道物体的坐标。因此机器人会稍微移动以获得不同的视角,并计算距离该视图的距离,知道它与第一个视图的距离。

如何使用以下输入在Python 3.4中获取现实生活对象的坐标或某种位置。

距离物体A的距离A. 距离物体B的距离。 视图A和B之间的距离。

A和B始终位于相同的X坐标上。

输入示例:

a = 3.5 #Distance from object at point A (in cm)

b = 7 # Disatance from object at point B (in cm)

c = 5 # Distance between A and B (in cm)

输出应该是一些坐标或者我可以用来找出物体位置的东西。

我如何计算对象的位置?我知道有某种算法,但我不知道它被调用了什么或它是如何工作的。

我想这更像是一个数学问题,而不是一个编程问题,但我想以编程方式实现它。

无论如何,输入并不一定是这个。我想你还需要一个角度或类似的东西,所以如果需要极端输入,只需在anwser中使用它。

谢谢!

(我在Win 10,64bit,Python 3.4上)

如果您知道如何执行此操作或某些算法名称,但您不了解Python,请指出或提供如何使用数学运算的示例,我将尝试在Python中实现它。

3 个答案:

答案 0 :(得分:0)

物体有两个圆周,一个中心位于机器人的位置1(已知)和半径a(=从位置1到物体的距离),另一个中心位于位置2和半径{{1 (=从位置2到对象的距离)。然后是找到这两个圆周的交叉点的问题。由于圆周将在两个点相交,您仍然必须确定对象在这些点中的哪一个。因此,您需要一些额外的信息来决定这一点,但我确信这一点帮助您将开始。

答案 1 :(得分:0)

用坐标(0,0), (b,0), (cx,cy)绘制三角形ABC(将原点固定在A处,以便更好地放置它 - 您可以随时移动坐标。)

然后您知道数量AC^2 = cx^2 + cy^2BC^2 = (cx-b)^2 + cy^2。您可以为cx = (AC^2 - BC^2 + b^2)/2bcy = +/- sqrt(AC^2 - cx^2)解决这些公式。 请注意,您没有提供足够的信息来推断cy的符号(对象所在的x轴的“边”)。

使用Python编写代码非常简单。

答案 2 :(得分:0)

您使用的是超声波传感器吗?

public class CustomListData {

    private int icon;
    private String item;
    private String desc;
    private String moreinfo;

    public CustomListData(){};

    public CustomListData(int icon, String item, String desc){
        super();
        this.icon = icon;
        this.item = item;
        this.desc = desc;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

    public String getItem() {
        return item;
    }

    public void setItem(String item) {
        this.item = item;
    }

    public int getIcon() {
        return icon;
    }

    public void setIcon(int icon) {
        this.icon = icon;
    }

    public String getMoreinfo() {
        return moreinfo;
    }

    public void setMoreinfo(String moreinfo) {
        this.moreinfo = moreinfo;
    }

}

然后

A = (-c/2, 0)
B = (+c/2, 0)
C = (tx, ty), ty >= 0

由于答案是唯一确定的,因此只能在以后解决。