Кинематика(Python)

введите сюда описание изображения

У меня есть кинект от xbox, который постоянно считывает мое положение на плоскости xyz, также у меня есть робот с мотором, который должен поворачивать мотор в зависимости от положения моей руки, соответственно это будет какая-то переменная которая будет задавать скорость мотора и как-то высчитываться, вот у меня вопрос, каким образом можно рассчитать. У меня в цикле перебирается y в зависимости от того где сейчас рука, у принимает постоянно разные значения, в зависимости от которых мотор должен поворачиваться на определенный градус. Как я понял данный вопрос связан с прямой/обратной кинематикой, но вообще не разобрался что к чему. Расстояние от захвата до самого нижнего положения примерно 20 см, какую формулу надо использоваться для того чтобы посчитать градус поворота мотора в зависимости от положения руки. Ниже приведен код в котором идет обработка позиций руки(x,y,z) использую я только y в данный момент

    def draw_skeleton_data(pSkelton, index, positions, width = 4):
    start = pSkelton.SkeletonPositions[positions[0]]
    for position in itertools.islice(positions, 1, None): 
    next = pSkelton.SkeletonPositions[position.value]
    curstart = skeleton_to_depth_image(start, dispInfo.current_w, 
    dispInfo.current_h) 
    curend = skeleton_to_depth_image(next, dispInfo.current_w, 
    dispInfo.current_h)

    pygame.draw.line(screen, SKELETON_COLORS[index], curstart, curend, 
    width)
    start = next
    # start_list = str(start) 
x=start.x
y=start.y
print(y)
z=start.z
w=start.w
if y > 0 and y < 0.1:
    sent = sock.sendto( m0, server_address)
elif y < 0:
    sent = sock.sendto( m1, server_address)
elif y > 0.1:
    sent = sock.sendto( m2, server_address)

введите сюда описание изображения


Ответы (1 шт):

Автор решения: MBo
alpha = arcsin(ym /  L)

где ym - расстояние по вертикали от оси, L - длина руки

На всякий случай - угол будет в радианах, при необходимости его можно перевести в градусы.

→ Ссылка