我必須讓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)
我真的不知道,即使這是正確的。我怎麼解決這個問題?
相對於機器人協調系統,哪個平面是您的白板?在這個協調系統中,什麼地方是你的白板座標系統的起源? – Hyperboreus
白板可以位於機器人(站立)的前方或桌子上。 –