Cybernetics Wiki
Advertisement

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


Файл:Robot element.gif

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

Открытый Динамический Движок (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) и может свободно использоваться в образовательных и исследовательских целях.

См. также[]

Advertisement