Как преобразовать параметры и углы связи (в кинематике) в матрицы преобразования в логике программирования?

10

Я занимаюсь исследованиями в области робототехники как студент, и я понимаю концептуальную математику по большей части; однако, когда дело доходит до фактической реализации кода для вычисления прямой кинематики для моего робота, я застреваю. Я просто не понимаю, как книга или веб-сайты, которые я нашел, объясняют это.

Я хотел бы рассчитать углы XYZ, учитывая параметры связи (параметры Денавита-Хартенберга), такие как следующее :

iαi1ai1diθi1000θ129000θ230a2d3θ3490a3d4θ459000θ569000θ6

Я не понимаю, как превратить эту таблицу значений в правильные матрицы преобразования, необходимые для получения , декартовой позиции и поворота последней ссылки. Оттуда я надеюсь, что смогу определить угол (ы) XYZ при чтении моей книги, но любая помощь будет принята с благодарностью.0TN

Грейс
источник

Ответы:

6

Раздел DH Matrix на странице DH в Википедии содержит подробную информацию.

В основном вы хотите использовать информацию в вашей таблице для создания набора однородных матриц преобразования. Мы делаем это потому, что однородные преобразования можно умножить, чтобы найти связь между фреймами, разделенными одним или несколькими другими. Например, представляет преобразование из кадра 1 в кадр 0, а представляет преобразование из кадра 2 в кадр 1. Умножая их, мы получаем преобразование из кадра 2 в кадр 0, то есть .0T11T20T2=0T11T2

Простой способ создать каждое из преобразований - создать однородную матрицу преобразования или однородного вращения для каждого столбца в таблице и умножить их вместе. Например, преобразование от 1 до 0 (например, )i1Ti,i=1

0T1=Trans(d1)Rot(θ1)Trans(a2)Rot(α2)

где

Trans(d1)=[10000100001d1=00001],

Rot(θ1)=[cos(θ1)sin(θ1)00sin(θ1)cos(θ1)0000100001],

Trans(a2)=[100a2=0010000100001],

Rot(α2)=[10000cos(α2=0)sin(α2=0)00sin(α2=0)cos(α2=0)00001] .

В этом случае

0T1=Rot(θ1) .

Когда у вас есть все ваши преобразования, вы умножаете их вместе, например,

0TN=0T11T2...N1TN .

Наконец, вы можете прочитать вектор смещения из однородного преобразования (то есть ). Точно так же вы можете прочитать матрицу вращения из чтобы найти углы XYZ.0TNd=[0TN,14,0TN,24,0TN,34]T0TN

DaemonMaker
источник
Не будет ли alpha_2 -90 градусов?
Грейс