|
PSim
Enviroment
PSim Explorer
|
Работа
в PSim Explorer
1.
Геометрическая пространственная модель
Первым шагом является создание пространственной 3-х мерной
геометрической модели в каком либо из пакетов
пространственного твердотельного проектирования. Для этого возможно
использование многочисленного на сегодня программного обеспечения: AutoCad, AutoDesc Inventor, SolidWorks выбор велик. Главное
полученная модель должна быть сохранена в формате VRML 97 ( VRML 2.0). Если механическая система
проста, то можно использовать подходящий VRML редактор (например VRBuilder, он входит в поставку
MatLab вместе с Virtual Reality Toolbox).
В дальнейшем, возможно система PSim будет
работать с другими форматами, текущая версия 0.45a R1.0 поддерживает только VRML 2.0 , да и то с некоторыми
ограничениями.
|
Требования к исходному VRML файлу модели |
- Только текстовой формат (сжатый
gzip не поддерживается)
- Поддерживаемые примитивы Box,
Sphere, Cylinder, Indexed Faceset.
- отсутствие тэгов USE и PROTO
- ограниченная длина строк (<255
символов в строке)
- для правильного текстурирования в
объектах типа Indexed Faceset должна иметься информация о нормалях
- ...
Данному описанию соответствуют файлы,
создаваемые при помощи SolidWorks
и VRBuilder, при помощи
которых и создавались все модели. |
2.
Структура PSim Explorer
Главное окно PSim Explorer выглядит
так:
Пункты главного меню:
Project
управление проектом
New
Open
Save
Properties
Exit
Тут вроде все понятно. Проект можно сохранить
для последующей работы с ним.
|
Проект |
Каждый проект состоит из собственно файла проекта (*.prj), файлов
объектов, находящихся в поддиректориях /obj
и /models по отношению к
положению
файлу проекта . Поэтому
обязательно сохраняйте каждый новый проект в
новой директории!!! |
Models
работа с объектами и параметрами моделирования
Import
импорт объектов
Enviroment
настройки параметров среды моделирования PSim Engine
Rendering
- настройки параметров визуализации.
Теперь подробнее о каждом из них.
Import
для текущей версии PSim Explorer только из файла формата VRML 2.0.
|
Добавить
в список
|
|
Удалить
из списка
|
|
Очистить
список
|
|
Импортировать
выделенный файл
|
|
Коэффициент
масштабирования рои импорте (некоторые программы создают VRML файл с размерами в мм или в
см, для модели в PSim
желательно все величины использовать в СИ)
|
Enviroment настройки параметров среды моделирования PSim
Engine
|
Здесь определяются
составляющие силы тяжести, действующей на все тела модели,
соответственно по осям X, Y и Z.
|
|
Система координат |
Необходимо сказать пару слов о системе координат, которая применяется в
PSim. По умолчанию она выглядит так:
Т.е. ось Y определяет направление верх-низ, а
ось Z вперед-назад. Может это и выглядит несколько странно, но данное
расположение осей давно стало стандартом de-facto во многих системах
компьютерной графики (в том числе DirectX
и VRML)
Тогда gX=0,
gY=-9.81, gZ=0 определяет нормальную земную силу тяжести,
направленную вниз.
|
|
|
Error reduction parameter. При
моделировании динамики многомассовой механической системы из-за
неточностей численного решения возникают ошибки при расчете положения и
ориентации тел, соединенных сочленениями. Эти ошибки могут приводить к
т.н. «дрейфу» сочленения или к тому, что в какой либо момент времени
соединение «разрушается». Для исключения этого эффекта к телам
прикладываются дополнительные силы для стабилизации их положения друг
относительно друга. Величина этих сил контролируется error reduction
parameter, значение которого может лежать в пределах 0...1.
Рекомендуемые значения 0.1 ... 0.8
(при нулевом значении ERP
коррекция не
производится, значение ERP = 1
не рекомендуется, т.к. возможны ошибки при вычислении).
|
|
Constraint force mixing. В
классическом виде сочленение описывается следующим уравнением:
J * v = c
где v вектор скоростей тел, J матрица Якоби. На основании
этого уравнения рассчитывается вектор lambda , а в соответствии с
ним и силы, действующие на тела, находящиеся в сочленении
force = JT *
lambda
В системе PSim сочленения
описываются таким образом:
J * v = c + CFM * lambda
где CFM квадратная диагональная матрица. При помощи
CFM возможно получение таких эффектов, как model tire slip, suspension,
soft ground и др.
Таким образом, решение для lambda:
(J M-1 JT
+ CFM/h) lambda = c/h
CFM модифицирует диагональ исходной системной матрицы, что в ряде
случаев повышает устойчивость и точность решения.
|
|
Размер величины шага
по времени, с. Если включена опция Real time величина начального шага.
|
|
Тип
решателя. Standard Solver
имеет большую точность, но меньшую скорость. Fast Solver производит расчет
текущего шага на основе нескольких предыдущих, он быстрее, чем Standard Solver, но имеет меньшую
точность. Уравнения движения получаются на основе «Lagrange multiplier velocity based model»
по методу Trinkle/Stewart and
Anitescu/Potra. Контактная модель основана на Dantzig LCP solver.
|
|
|
|
При
включенной опции расчет динамики не производится для тел, состояние
которых близко к состоянию покоя.
|
|
Порогом
отключения просчета динамики является величина DF. Рекомендуемые
значения 0.001 ... 0.05.
|
|
При выключенной
опции размер шага вычисляется автоматически для обеспечения
моделирования в реальном времени. Использовать данный
режим следует очень осторожно, так как при неконтролируемо изменяющейся
величине шага возможна потеря устойчивости метода численного решения и
сбой работы модели.
|
|
При выключенной
опции расчет коллизий не производится и колизионные модели не создаются.
|
|
Обмен данными с
внешним приложением. NO_IO
обмен отсутствует. DLL обмен с динамической библиотекой, спецификация
обмена описана далее. MATLAB обмен данными с Matlabом.
|
|
Определяет имя
библиотеки для обмена данными. Она должна располагаться в директории
программы.
|
3.
Модели в PSim Explorer
В Закладке Models расположены
средства оперирования моделями. Под моделью ( Model) в PSim подразумевается объект,
описывающий каждое конкретное тело механической пространственной
модели, а именно его геометрию, параметры его визуализации,
физические параметры, положение и др. Таким образом, Model является основным структурным
элементом PSim, описывающим
реальное физическое тело. Редактирование параметров и свойств модели
производится при помощи редактора моделей ( Model editor). Модели в Model editor импортируются из VRML
файлов.
Каждая новая модель создается на основе каждой
{geometry}
исходного VRML файла. В настоящее время поддерживаются следующие типы {geometry}: Box, Sphere, Cylinder, Indexed Faceset. При этом положение
и ориентация модели рассчитываются так-же из {Transform} для соответствующих {geometry} исходного VRML файла.
|
Стандартные
примитивы |
К
стандартным примитивам относятся модели на основе следующих {geometry}
исходного VRML файла: Box, Sphere,
Cylinder.
|
Каждая модель
описывается следующей структурой:
|
Название
и номер модели. Номер используется при создании сочленений |
|
Параметры
обмена данными с другим приложением |
|
Параметры
модели
|
|
Параметры
визуализации модели |
|
Физические
параметры модели |
|
Параметры
геометрии модели. Геометрия используется при визуализации и
для колизионной модели |
|
Удалить
все модели
|
Удалить
текущую
модель
|
Обновить
дерево
моделей
|
Изменить, пересчитать
положение модели
|
Просмотреть
текущую
модель
|
Редактировать текущую
модель
|
С версии 0.45а R1.2 для редактирования
свойств модели существует расширенный редактор:
Параметры модели
|
Тип
геометрии обьекта (на основе VRML описания)
|
|
Свойства
геометрии обьекта (для стандартных примитивов):
- Для Box: X,Y,Z - размеры по
соответствующим осям
- Для Sphere: Radius - радиус
- Для Cylinder: Radius-радиус, Height-
высота
|
|
Тип
модели
|
|
Тип
модели |
Renderable - Модель только
отрисовывается, физика и коллизии для такой модели не просчитываются.
Используется для элементов "оформления".
Render&Body - Модель является
физическим объектом, однако не участвует в расчете столкновений.
Используется для моделирования физических тел, когда не нужен просчет
коллизий.
Render&Geom - Модель участвует в
расчете столкновений, но не является физическим телом. Предназначен для
моделирования "идеальных препятствий".
Render&Body&Geom - Модель
является как физическим объектом, так и участвует в расчете
столкновений.
|
|
|
Видимость
модели
|
|
Определяет,
будет ли на модель действовать сила тяжести
|
|
Режим статического
тела: модель зафиксирована в начальном положении и не меняет его при
любых воздействиях. Используется для создания неподвижной основы для
присоединения остальных моделей
|
Физические параметры модели
|
Масса
тела
|
|
положение
центра масс по отношению к положению тела (относительное).
|
|
Центр масс |
Особенностью этой версии программы является необходимость того,
чтобы положение центра масс относительно мировой системы координат ( МСК) совпадало с положением центра
тела в МСК, то есть относительное
положение центра масс всегда было {0,0,0}.
Если система состоит только из тел, задаваемых
стандартными
примитивами и не содержит моделей на базе Indexed Faceset, то данное условие
выполняется. Если же в состав системы входят модели на основе Indexed Faceset, то для обеспечения
условия COMrel={0,0,0}
необходимо воспользоваться
Окно имеет следующий вид:
Source
position (Abs) - Исходное положение тела ( МСК)
Destination
position (Abs)
- Требуемое положение тела ( МСК)
COM
position (Abs)
- Положение центра масс ( МСК)
Source
position (Rel) Положение центра масс (относительно положения
центра тела)
Изменение положения тела:
- Задать новое положение тела ( Destination
position (Abs))
-
Set Position
Изменение (задание) положения центра масс тела:
- Задать положение центра масс ( МСК)
( COM position (Abs))
- Position to COM
При этом новое положение тела ( МСК) будет совпадать с требуемым
положением центра масс ( МСК).
Это обеспечит относительное положением центра масс {0,0,0}. В пространстве же тело
останется в том же месте, так как при Изменении (задании) положения
центра масс тела будет произведен пересчет координат всех вершин Indexed Faceset.
|
|
|
Положение по
отношению к абсолютной (мировой) системе координат (МСК). Определяется
автоматически из соответствующего VRML файла.
|
|
Кватернион,
определяющий ориентацию. Определяется аналогично.
|
|
Тензор
инерции, матрица 3х3, определяющая инерциальные свойства тела.
|
|
Создать Тензор инерции на основе стандартных примитивов.
Параметры примитивов.
|
Параметры
визуализации модели
|
Цвет объекта. R,G,B определяют соответственно
красную, зеленую и синюю составляющую, А
прозрачность. Диапазон изменения 0...1.
|
|
Имя файла текстуры.
Поддерживаются форматы bmp....
Рекомендуемый размер текстур 128x128, 256x256.
Все
текстуры должны быть расположены в поддиректории \textures по отношению к файлу *.sim
используемому PSim Engine.
|
|
Определяет тип
наложения текстуры. WT_CYLINDER,
WT_SPHERE,
WT_FLAT,
WT_NONE,
WT_CHROME.
Если используется WT_NONE или
не задана текстура, цвет объекта соответствует заданному в параметре <COLOR>.
|
Параметры
обмена данными с другим приложением
Если выставлен любой из флажков это означает, что значение
соответствующего параметра либо будет задаваться
внешним приложением: Add Body Force
приложить к телу внешнюю силу /3
составляющих fx,fy,fz/, Add
Body Torque - приложить к телу внешний момент /3 составляющих mx,my,mz/ ), либо
значение будет передаваться внешнему приложению (Get Body position положение тела /x,y,z/, Get Body Quaternion ориентация
тела /qs,qx,qy,qz/, Get Body linvel - линейная скорость
/vx,vy,vz/,
Get Body angvel
угловая скорость /wx,wy,wz/...
Шаг 4. Сочленения (Joints) в PSim Explorer
Модели, для которых включен расчет физики могут объединятся между собой при
помощи различных сочленений. Редактирование параметров и свойств
сочленений производится при помощи редактора (Joint editor):
|
Добавить
новое сочленение
|
|
Удалить
все сочленения
|
|
Удалить
текущее сочленение (оно должна быть предварительно выделено)
|
Каждое
сочленение описывается следующей структурой:
В текущей
версии PSim Enviroment
реализованы следующие типы сочленений:
|
BSJOINT - сферический шарнир.
Имеет 3 степени свободы
(вращательные).
Основной параметр:
- ANCHOR
- координаты точки соединения тел.
|
|
HINGE - ....
Имеет 1 степень свободы
(вращательная).
Основные параметры :
- ANCHOR
- координаты точки соединения тел,
- AXIS
- ось вращения, должна задаваться вектором единичной длины
|
|
HINGE2 - ...
Имеет 3 степени свободы (2 вращательные и 1 поступательная).
Основные параметры:
- AXIS1
- ось вращения и поступательного движения, должна задаваться
вектором единичной длины,
- AXIS2
- ось вращения для 2-й вращательной степени свободы, должна
задаваться вектором единичной длины,
- ANCHOR
- точка соединения
|
|
SLIDER - поступательное соединение.
Имеет 1 степень свободы (поступательная).
Основные параметры:
- AXIS
- ось поступательного движения, должна задаваться
вектором единичной длины.
|
|
UNIVERSAL - карданный шарнир.
Имеет 2 степени свободы (вращательные).
Основные параметры:
- AXIS1
- ось вращения для 1-й степени свободы, должна задаваться
вектором единичной длины,
- AXIS2
- ось вращения для 2-й степени свободы, должна задаваться
вектором единичной длины.
|
|
FIXED - неподвижное соединение.
Положения и ориентации моделей фиксированы друг относительно друга.
Используется для взаимного закрепления объектов.
Следует
избегать частого использования FIXED joints, а
задавать тела одной моделью.
|
Дополнительные
параметры <LIMIT>
|
Дополнительные
параметры сочленений |
В текущей
версии PSim Enviroment
реализована поддержка дополнительных
параметров для следующих типов сочленений: HINGE, SLIDER.
|
|
Нижняя и верхняя
границы (пределы) изменения
положения моделей в сочленении. Для SLIDER
- это пределы перемещения вдоль поступательной оси, для HINGE - пределы изменения угла
поворота вокруг оси вращения (в радианах), для остальных не
реализованы. Положение (угол
поворота) сочленение рассчитываются относительно положения в начальный
момент времени.
|
|
Используются для
упрощенного моделирования привода соотв. сочленения. ParamFMax определяет максимальную
силу (момент), который может развить привод сочленения, ParamVel - заданная скорость
движения. При ParamVel=0
ненулевое значение ParamFMax определяет
силу (момент трения) в сочленении.
|
|
!!!!!!!!!
|
|
Коэффициент
распределения энергии при ударе (по достижении нижней или верхней
границы). Диапазон изменения: 0...1.
0
- Вся энергия поглощается,
1
- Вся энергия передается телам.
|
|
Constraint force mixing
для соотв. сочленения. |
|
Error reduction parameter
для предела соотв. сочленения. |
|
Constraint force mixing для
предела соотв. сочленения. |
Параметры
обмена данными с другим приложением
Если любой из параметров равен 1 это означает, что его значение либо будет
задаваться
внешним приложением: ADD_FORCE
приложить к сочленени ю внешнюю
силу (реализовано для SLIDER), ADD_TORQUE - приложить к сочленени ю
внешний момент (реализовано
для HINGE) либо
значение будет передаваться внешнему приложению: GET_POS положение сочленения ,
GET_POSRATE -
скорость
изменения положения сочленения.
Тип
сочленения |
|
BSJOINT
|
HINGE*
|
HINGE2**
|
SLIDER***
|
UNIVERSAL****
|
FIXED
|
ADD_FORCE
|
-
|
-
|
-
|
+
|
-
|
-
|
ADD_TORQUE
|
-
|
+
|
+
|
-
|
+
|
-
|
ADD_M_FMAX
|
-
|
+
|
-
|
+
|
-
|
-
|
ADD_M_VEL
|
-
|
+
|
-
|
+
|
-
|
-
|
GET_POS
|
-
|
+
|
-
|
+
|
-
|
-
|
GET_POSRATE
|
-
|
+
|
-
|
+
|
-
|
-
|
При обмене данными с
другим приложением значения всех параметров имеют
размерность (1Х3): {a,b,c}.
* - для HINGE:
- ADD_TORQUE
- вектор {a,b,c}
имеет
вид {ТHINGE,0,0}, где
ТHINGE
- внешний
момент,
- GET_POS
-
вектор
{a,b,c} имеет
вид {PHIHINGE,0,0},
где PHIHINGE
- угол
поворота сочленения в радианах,
- GET_POSRATE - вектор
{a,b,c} имеет
вид {WHINGE,0,0},
где
WHINGE
- угловая
скорость сочленения в рад/с.
** - для HINGE2:
- ADD_TORQUE
- вектор {a,b,c}
имеет
вид {ТAXIS1,ТAXIS2,0},
где
ТAXIS1,ТAXIS2
- внешние
моменты для 1-й и 2-й осей вращения.
*** - для SLIDER:
- ADD_FORCE
- вектор {a,b,c}
имеет
вид {FSLIDER,0,0}, где
FSLIDER
- внешняя
сила,
- GET_POS
-
вектор
{a,b,c} имеет
вид {SSLIDER,0,0}, где SSLIDER - положение
сочленения,
- GET_POSRATE - вектор
{a,b,c} имеет
вид {VSLIDER,0,0},
где VSLIDER-
линейная
скорость сочленения.
**** - для UNIVERSAL:
- ADD_TORQUE
- вектор {a,b,c}
имеет
вид {ТAXIS1,ТAXIS2,0},
где
ТAXIS1,ТAXIS2
- внешние
моменты для 1-й и 2-й осей вращения.
|
Силы и моменты
в сочленениях |
Если к сочленению прикладывается сила (момент), задаваемый внешним
приложением, то эта сила (момент) прикладывается с разным знаком одновременно к обеим телам. Если
необходимо, чтобы одно из тел было неподвижно, то для него должен быть
выставлен флажок Static
body.
|
Шаг 5.
Параметры модели контакта в PSim
Explorer
Контакты в PSim Enviroment моделируются при
помощи создания и расчета т.н. " контактного сочленения":
Контактные сочленения создаются и удаляются автоматически. Они могут
моделировать трение путем приложения специально рассчитаных сил в 2-х
направленях трения, перпендикулярных к нормали поверхности контакта.
Реализованы следующие модели контакта:
dContactApprox0
|
Для аппроксимации
трения в обоих направлениях используется "constant-force-limit approximation",
mu - предельная
сила |
dContactApprox1_1
|
Для
аппроксимации трения в 1-м направлении трения используется "пирамида трения",
mu
- коэффициент трения.
|
dContactApprox1_2
|
Для
аппроксимации трения во 2-м направлении трения используется "пирамида трения",
mu - коэффициент
трения.
|
dContactApprox1
|
Для
аппроксимации трения в обоих направлениях трения используется "пирамида трения",
mu, mu1 - коэффициенты трения.
|
Дополнительные
настройки модели контакта:
|
Если флажок не
установлен, коэффициент mu
используется для обоих направлений
трения, иначе mu используется для первого направления трения, а mu1 -
для второго. |
|
Если флажок
установлен, то в качестве 1-го направления трения используется fdir1,
иначе в качестве 1-го направления трения используют автоматически
определяемый перпендикуляр к нормали поверхности контакта.
|
|
Если
флажок установлен, то включен механизм расчета распределения энергии
при ударе. |
|
Если
флажок установлен, то при расчете контакта используется soft_ERP.
|
|
Если
флажок установлен, то при расчете контакта используется soft_CFM. |
|
Если флажок
установлен, то при расчете контакта учитывается движение
поверхности в 1-м направлении трения , скорость движения определяется
параметром motion1.
|
|
Если
флажок установлен, то при расчете контакта учитывается движение
поверхности во 2-м направлении трения , скорость движения определяется
параметром motion1. |
|
Скольжение
в 1-м направлении трения.
|
Параметры
модели контакта:
mu
|
Коэфициент трения (
для dContactApprox1_1, dContactApprox1_2, dContactApprox1),
предельная сила (для dContactApprox0).Диапазон
изменения: 0...inf. |
mu2
|
Аналогично
mu
для 2-го направления трения, используется, если включен соответствующий
флажок.
|
bounce
|
Коэффициент
распределения энергии при ударе. Диапазон изменения: 0...1.
0
- Вся энергия при ударе поглощается,
1
- Вся энергия передается телам.
Используется, если включен соответствующий флажок.
|
bounce_vel
|
Минимальная
скорость, которая приводит к удару. Для всех скоростей тел меньшее нее bounce равен 0.
|
soft_EPR
|
Error
reduction parameter |
soft_CFM
|
Constraint force mixing |
motion1
|
Скорость
поверхности в 1-м направлении трения, используется, если включен
соответствующий флажок. |
motion2 |
Скорость
поверхности во 2-м направлении трения, используется, если включен
соответствующий флажок. |
slip1
|
Скольжение
первого рода поверхности в 1-м направлении трения, используется,
если включен соответствующий флажок. |
slip2
|
Скольжение
первого рода поверхности во 2-м направлении трения, используется,
если включен соответствующий флажок. |
Шаг 6.
Заключительный этап работы - сборка,настройка и сохранение модели
Параметры визуализации cцены
|
Положение
и ориентация камеры
|
|
Автоматически
установить положение и ориентацию камеры в соответствии с выбранными
при просмотре модели
|
|
Настройки
освещения
Один источник света освещает всю сцену, второй - направленный привязан
к камере
|
|
Показывать
FPS(Frames per second)
|
Просмотр сцены
При просмотре сцены целесообразно выбрать наиболее удачное расположение
камеры, далее в Models -> Rendering
-> Get from
Scene view - автоматически установит в соответствии с выбранным
при просмотре сцены. Это положение
камеры будет базовым при моделировании в PSim Engine.
Сборка системы
Все данные системы (параметры моделей, сочленений, среды,...)
сохраняются в sim-файле, в
поддиректориях /models и /obj - сохраняется геометрия
моделей, в /textures - должны
быть расположены текстуры, используемые в
системе.
Просмотр
переменных обмена данными с другим приложением
Для
правильной интеграции PSim модели
в Matlab необходимо знать
соответствие переменных в PSim
(силы, моменты,... для моделей и сочленений, задаваемые внешним
приложением и положения, скорости,... передаваемые внешнему приложению)
с перемеными в Matlab/Simulink.
Со
стороны Matlab/Simulink -
система PSim представляет
собой вызов S-функции. Порядок
следования параметров для правильного подключения входов S-функции в PSim Explorer можно
просмотреть при помощи View IO
'pins':
В
данном случае:
- FORCE
- Название параметра,
- (3) - Размерность
параметра,
- J_0:M_baseTransform0+M_platformTransform1
- сочленение, параметр которого либо передается, либо задается внешним
приложением.
|