Skip to content
/ 6DOF Public

Изучение характеристик существующего 6DOF тренажера

License

Notifications You must be signed in to change notification settings

LiDline/6DOF

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

46 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

6DOF

1 Описание проекта

Данный проект создан для изучения возможностей тренажёра (зелёный), спроектированного на базе 6-ти степенной платформы Стюарта на угловых актуаторах.

312683cc-cc83-4923-8dc0-b2953b33f5bf b5ASy 1  Graph, default position of platform
а). б).

Рисунок 1 - тренажёр AST: а - тренажёр; б - схематичная визуализация результата расчёта (см. ветвь visualization).

Проект содержит 3 ветви:

  1. main - реализация скрипта на python, возвращающего углы угловых актуаторов (редукторов) по заданным координатам и углам верхней платформы;
  2. visualization - схематичная визуализация результата расчёта. Предварительный просмотр тут.
  3. test - используемая в проекте теория по платформе.

2 Ветка main. Работа функции

main.py несёт в себе функцию:

def solve(x, y, z, alpha, beta, gamma): # Example: (25, 25, 300, 5, 5, 5)

На вход подаётся 6 параметров:

  • x - координата X (мм);
  • y - координата Y (мм);
  • z - координата Z (мм);
  • alpha - угол OX (градусы);
  • beta - угол OY (градусы);
  • gamma - угол OZ (градусы).

Результатом работы функции будет список из 6-ти НАИМЕНЬШИХ углов (относительно вертикальной оси OZ. OZ = 0 град) редукторов:

return arm_angle # Example: [-55.88 -54.72 -92.84 -54.10 -58.97 -50.18] перевёл в градусы для удобства*
# На рисунке 2, а приведено значение угла для solve(25, 25, 300, 5, 5, 5)[0] (знаки углов разные, см. пункт 6).

Если заданные на входе параметры приведут к выходу за диапазон работы платформы, Вам вернут сообщение об этом (будет конкретно написано, какая часть платформы сломана).

Допустимые диапазоны характеристик (находятся в constants.py):

  • max угол шаровых = 35 град;
  • min/max длина пружины (от шаровой до шаровой) = [464, 714] мм;
  • max/min угол актуаторов = [-112.38, 52.62] град.

3 Состав ветки main

  1. папка func - содержит в себе необходимые функции:
  • cross_normal_to_oz.py - точки пересечения между окружностью (редуктором) и сферой (тяга). См. подробный разбор тут или тут;
  • matrix_1_4.py - запись получаемых координат XYZ (из cross_normal_to_oz.py) в ортогональных координатах (добавляем 1 в конец списка);
  • rotation_matrix.py - реализация матрицы поворота по последовательности XYZ и запись её в ортогональных координатах (матрица 4х4);
  • transition_matrix.py - матрица линейного переноса координат (матрица 4х4) - сюда записываем НА сколько перемещаемся;
  1. папка SW - файлы SolidWorks 2020 со схемой(AST-5.2.0-A1-scetch.SLDASM) платформы для проверки (см. рисунок 1, а) получаемых углов шаровых опор актуаторов и уравновешивающих механизмов (менять углы/координаты верхней плиты необходимо через управляемые сопряжения, см. рисунок 1, б).
  2. constants.py - файл с константами.
  3. main.py - исполнительный файл.

4 Используемые библиотеки

  • numpy

Все используемые библиотеки python указаны в файле requirements.txt. Для быстрой установки отсутствующих библиотек в терминале выполните:

pip install -r requirements.txt

5 Вариации использования скрипта

  1. Изменить координаты точек крепления шаровых редукторов/пружин можно в матрицах в файле constants.py со строки 22.
  2. Изменить допустимые диапазоны характеристик можно в файле constants.py со строки 11.

6 Проверка значений

  1. Проверку полученных углов можно совершить в SW/AST-5.2.0-A1-scetch.SLDASM. Sketch "Рычаг[i+1]" = углу актуатора. На рисунке 2, а мы видим, что угол равен 55.88 град, что совпадает с solve(25, 25, 300, 5, 5, 5)[0] (знаки углов разные, см. пункт 6).
  2. В Sketch "Угол шаровой[i+1]-1 или 2" можно увидеть угол шаровой опоры.
Проверка угла 0 Изменение положения
a). б).

Рисунок 2 - схема тренажера: а - угол нулевого актуатора = 55.88 град; б - способ изменения параметров.

7 Определение углов

Введём локальную систему координат (далее СК) для определения углов. За ось поворота принимаем OZ (как в Matlab Simscape Multibody. синяя линия рисунке 3, а). Ось OY (зелёная линия на рисунке 3, а) направлена на противоположную плиту. Ось OX (красная линия на рисунке 3, а) направлена на OX редуктора, расположенного в одной плоскости.

7.1 Определение угла редуктора

Угол редуктора вычисляем относительно OY (рисунок 3, б). Важно отметить, что в SW отрицательных углов нет, в скрипте угол вычисляется через atan2: в I четверти знак положительный, во второй => отрицательный. Мы выбираем НАИМЕНЬШИЙ угол, который вписывается в диапазон max/min углов редукторов = [-112.38, 52.62] град (это конструкционные ограничения).
См. подробный разбор нахождения углов тут или [тут] в файле (https://github.com/LiDline/6DOF/tree/test) "2. Sphere&circle.ipynb".

1 2
a). б).

Рисунок 2 - Определение угла редуктора: а - локальные СК для плит; б - определение угла редуктора в локальных СК.

7.2 Определение угла шаровой опоры

Для определения угла шаровой опоры на рычаге редуктора (файл leg_ball_corners.py) необходимо:

  1. Найти координаты точки пересечения (см. рисунок 3, а) окружности (рычага редуктора) и сферы (тяги) и записать её в матричном виде.
  2. Определим координаты верхней шаровой опоры тяги относительно точки пересечения путём перемножения обратной матрицы перемещений точки пересечения и матрицы координат верхней точки (строка 78).
  3. Найдём угол между проекцией тяги (на локальной XY) и верхней точки (см. рисунок 3, б), чтобы повернуть локальную СК на полученный угол (строка 82). Создадим матрицу поворота из полученного угла и домножим её на матрицу из пункта 2 (строка 88).
  4. Узнаем координаты верхней шаровой опоры тяги относительно точки пересечения в полученной СК путём перемножения обратной матрицы из пункта 3. на матрицу координат верхней точки (строка 97).
  5. Находим угол (рисунок 3, в) через вычисление math.atan2(X, Z), где X и Z - координаты верхней точки из пункта 4 (строка 102).
3 4 5
a). б). в).

Рисунок 3 - Определение угла шаровой опоры: а - точка пересечения окружности и сферы; б - угол между проекцией тяги (на локальной XY) и верхней точки; в - угол нижней шаровой опоры.

Угол верхней шаровой опоры находится аналогичным способом.

About

Изучение характеристик существующего 6DOF тренажера

Topics

Resources

License

Stars

Watchers

Forks

Languages