2

我必须让 NAO 机器人从形状的每个点的 (x, y) 坐标开始在白板上绘制一些形状。

因此,例如,我有一个正方形的 (x, y) 坐标列表:

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

现在我必须将这些坐标提供给 NAO 机器人以便在白板上绘图。问题是为了移动NAO机器人的手臂,Aldebaran给出了从这里提取的以下示例代码(我在这里只粘贴了部分代码,您需要理解):

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)

即使这是正确的,我也不确定。我怎么解决这个问题?

4

1 回答 1

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 滚动)。

于 2014-02-10T14:47:52.123 回答