ФЭНДОМ


Инструментарии роботостроения с открытым исходным кодом


Robot element

Базовые элементы всех роботизированных систем

Открытый Динамический Движок (Open Dynamics Engine - ODE) Править

Рассел Смит (Russell Smith) разработал Открытый Динамический Движок (Open Dynamics Engine - ODE), представляющий собой движок физики с открытым исходным кодом, с помощью которого вы можете моделировать динамику тел с шарнирными сочленениями. Таким образом, вы можете моделировать физику объектов реального мира вне зависимости от графических библитек (в качестве которой вы можете использовать OpenGL). С помощью ODE вы можете создавать модели всех типов объектов в искусственной среде таких, как герои из трехмерной игры или средства передвижения в автосимуляторах. В добавление к этому, ODE поддерживает средства обнаружения наложений объектов для процесса моделирования в реальном времени.

Что такое тело с шарнирными сочленениями? Тело с шарнирными сочленениями представляет собой структуру, состоящую из разнообразных форм соединенных различными видами сочленений. Например, представьте сочленения, которые составляют ногу или элементы в средстве передвижения, как, например, шасси, подвеска и колеса. ODE может эффективно создавать модели всех этих элементов, включая фрикционные модели.


В частности, среди перечисленных возможностей ODE поддерживает такие типы сочленений, как шарнирные, створчатые, угловые, фиксированные, а также полозья и двойные шарниры (для соединений в средствах передвижения). Он также поддерживает различные простейшие наложения (как, например, сферы и плокости) и несколько промежутков между наложениями.

ODE, главным образом, был написан на языке программирования C++, но для соединения его с вашим приложением в него можно внедрять простые интерфейсы, как на языке C, так и C++. Необходимо отметить еще одно преимущество ODE - это то, под какими лицензиями он был выпущен, а именно: общедоступная лицензия GNU Lesser General Public License (LGPL) и лицензия BSD. Под любой из этих лицензий вы можете использовать исходный код ODE в коммерческих продуктах бесплатно. И вследствие этого, вы можете найти ODE в различных коммерческих играх, авиасимуляторах, и симуляторах виртуальной реальности.

Пример кода в Листинге 1 показывает простой мир с гравитацией Марса и сферой, которая имеет определенную скорость подъема. Скорость подъема не постоянна, так как существует определенная гравитация. С течением времени сфера достигнет высшей точки и начнет снижаться. После завершения инициализации (а именно, созданных в данном мире объектов и их характеристик), вы можете моделировать физику мира с помощью вызова dWorldStep. Чтобы понять, что именно происходит, вам необходимо постоянно вызывать dBodyGetPosition и брать значение идентификатора вашей сферы, чтобы узнать ее настоящее местоположение.

Листинг 1. Простой эксперимент ODE со сферой в мире с гравитацией

 
#include <iostream>
#include <ode/ode.h>
 
#define time_step		 (float)0.1
 
int main()
{
 dWorldID myWorld_id;
 dBodyID mySphere_id;
 dMass sphereMass;
 const dReal *pos;
 float time = 0.0;
 
 /* Create a new world */
 myWorld_id = dWorldCreate();
 
 /* Create a sphere in the world */
 mySphere_id = dBodyCreate( myWorld_id );
 
 /* Set the world's global gravity vector (Mars) -- x,y,z */
 dWorldSetGravity( myWorld_id, 0, 0, -3.77 );
 
 /* Set the Sphere's position in the world -- x,y,z */
 dBodySetPosition( mySphere_id, 0, 0, 100 );
 
 /* Set the Sphere's mass (density, radius) */
 dMassSetSphere( &sphereMass, 1, 2 );
 dBodySetMass( mySphere_id, &sphereMass );
 
 /* Give the sphere a small amount of upward (z) velocity */
 dBodySetLinearVel( mySphere_id, 0.0, 0.0, 5.0 );
 
 /* Run the simulation */
 while (time < 5.0) {
 
 /* Simulate the world for the defined time-step */
 dWorldStep( myWorld_id, time_step );
 
 /* Get the current position of the sphere */
 pos = dBodyGetPosition( mySphere_id );
 
 std::cout << "position (" << pos[0] << ", "
 << pos[1] << ", " << pos[2] << ")\n";
 
 /* Next time step */
 time += time_step;
 
 }
 
 /* Destroy the objects */
 dBodyDestroy( mySphere_id );
 dWorldDestroy( myWorld_id );
 
 return 0;
}

Итак, если вам нужен движок с качественной технической физикой (которая работает как под Linux, так и под другими платформами) для того, чтобы смоделировать мобильного робота или беспилотное летательное средство передвижения в реалистичных средах, то ODE - это отличный выбор. Использование его вместе с программным интерфейсом приложения (API) OpenGL, с помощью ODE можно генерировать как фотореалистичную графику, так и реалистичную физику.

Различные симуляторы Править

  • Дистрибутив TeamBots является отличной средой как для прототипирования моделей мобильных роботов, так и для выполнения их в реальных роботах с помощью среды TBHard. TeamBots является открытым ПО (разработанным Такером Болчем (Tucker Balch) из Georgia Tech и университета Carnegie Mellon) и может свободно использоваться в образовательных и исследовательских целях.

См. также Править

Обнаружено использование расширения AdBlock.


Викия — это свободный ресурс, который существует и развивается за счёт рекламы. Для блокирующих рекламу пользователей мы предоставляем модифицированную версию сайта.

Викия не будет доступна для последующих модификаций. Если вы желаете продолжать работать со страницей, то, пожалуйста, отключите расширение для блокировки рекламы.

Также на ФЭНДОМЕ

Случайная вики