2014-02-10 142 views
2

我必須讓NAO機器人從形狀的每個點的(x,y)座標開始在白板上繪製一些形狀。移動機器人手臂的(x,y)座標轉換爲(x,y,z)

所以我必須爲例如列表(x,y)的方形的座標:

square = [[251, 184], #point 1 
      [22, 192], #point 2 
      [41, 350], #point 3 
      [244, 346]] #point 4 

,現在我必須給這些座標來NAO機器人以畫在白板上。問題是,移動NAO機器人的手臂,下面的示例代碼extracted from here由艾爾帕蘭給予(我在這裏貼上只代碼的部分是重要的,你明白的):

effector = "LArm" 
space  = motion.FRAME_ROBOT 
axisMask = almath.AXIS_MASK_VEL # just control position 
isAbsolute = False    # Since we are in relative, the current position is zero 
currentPos = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0] 

# Define the changes relative to the current position 
dx   = 0.03  # translation axis X (meters) 
dy   = 0.03  # translation axis Y (meters) 
dz   = 0.00  # translation axis Z (meters) 
dwx  = 0.00  # rotation axis X (radians) 
dwy  = 0.00  # rotation axis Y (radians) 
dwz  = 0.00  # rotation axis Z (radians) 
targetPos = [dx, dy, dz, dwx, dwy, dwz] 

# Go to the target and back again 
path  = [targetPos, currentPos] 
times  = [2.0, 4.0] # seconds 

所以你可以請參閱,我只在白板上繪製點的座標(x,y),但是NAO機器人需要設置更多的變量。我知道,首先我要的座標從像素到米轉換,並且轉換爲以下幾點:

1 pixel (px) = 1/3779.52755905511 meter [m] 

那麼,看來我有一個維度添加到座標,以獲得(X,Y ,z)座標。

當然,繪製一條線時,應該將currentPos設置爲第一個點,並且targetPos應該設置爲第二個點。所以,下面的轉換:

(251, 184) pixels coordinates = (0.066, 0.047) meters coordinates 
(22, 192) pixels coordinates = (0.035, 0.011) meters coordinates 

,因此:

currentPos = [0.066, 0.047, 0.0, 0.0, 0.0, 0.0] 
dx   = 0.035  # translation axis X (meters) 
dy   = 0.011  # translation axis Y (meters) 
dz   = 0.00  # translation axis Z (meters) 
dwx  = 0.00  # rotation axis X (radians) 
dwy  = 0.00  # rotation axis Y (radians) 
dwz  = 0.00  # rotation axis Z (radians) 

我真的不知道,即使這是正確的。我怎麼解決這個問題?

+1

相對於機器人協調系統,哪個平面是您的白板?在這個協調系統中,什麼地方是你的白板座標系統的起源? – Hyperboreus

+0

白板可以位於機器人(站立)的前方或桌子上。 –

回答

4

看看你的鏈接的例子,你的機器人的座標系似乎與當前的方位有關。所以基本上(1,0,0)指向前,(0,1,0)指向其左側,並且(0,0,1)指向上。

現在,如果黑板在機器人前面的牆上(垂直於地面)(機器人面對着它),(1,0)指向右和(0,1)指向上(「正常」笛卡爾系統),黑板上的(1,0)平移將在機器人座標系中爲(0,-c,0),黑板上(0,1)的平移將爲(0 ,0,c)在你的機器人的座標系中,「c」是一個用於縮放的常量。結合兩個矢量,黑板上的(a,b)的平移應該是機器人空間中的(0,-ac,bc)。

希望這有助於入門。 (不知道機器人的偏航,俯仰和滾轉如何影響其座標,基本上問題是(0,0,1)是垂直於地面還是垂直於俯仰x滾動)。

+0

我明白你向我解釋了什麼。我發現我可以使用機器人的[sonar](https://community.aldebaran-robotics.com/doc/1-14/family/robots/sonar_robot.html)來估計深度「c」。這意味着我可以估計機器人和白板之間的距離。然後我設置「c」作爲這個值並嘗試機器人。謝謝你的解釋,明天我會告訴你它是怎麼回事。 –

+0

與黑板的距離不是c。到黑板的距離將是矢量的x分量。 – Hyperboreus

相關問題