故事:让我们说我有一个带有距离(超声波?)传感器的机器人。机器人可以计算距离它前面的任何物体的距离,但是它不能知道物体的坐标。因此机器人会稍微移动以获得不同的视角,并计算距离该视图的距离,知道它与第一个视图的距离。
如何使用以下输入在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中实现它。
答案 0 :(得分:0)
物体有两个圆周,一个中心位于机器人的位置1(已知)和半径a
(=从位置1到物体的距离),另一个中心位于位置2和半径{{1 (=从位置2到对象的距离)。然后是找到这两个圆周的交叉点的问题。由于圆周将在两个点相交,您仍然必须确定对象在这些点中的哪一个。因此,您需要一些额外的信息来决定这一点,但我确信这一点帮助您将开始。
答案 1 :(得分:0)
用坐标(0,0), (b,0), (cx,cy)
绘制三角形ABC(将原点固定在A处,以便更好地放置它 - 您可以随时移动坐标。)
然后您知道数量AC^2 = cx^2 + cy^2
,BC^2 = (cx-b)^2 + cy^2
。您可以为cx = (AC^2 - BC^2 + b^2)/2b
和cy = +/- 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
由于答案是唯一确定的,因此只能在以后解决。