18 марта 2015 в 14:42

Программируем роботов — бесплатный робосимулятор V-REP. Первые шаги



Программирование роботов — это интересно.

Многие наверное видели японских гуманоидных роботов, или французский учебный робот NAO, интересным выглядит проект обучаемого робота-манипулятор Baxter. Промышленные манипуляторы KUKA из Германии — это классика. Кто-то программирует системы конвейерной обработки (фильтрации, сортировки). Дельта роботы. Есть целый пласт — управление квадрокоптером/алгоритмы стабилизации. И конечно же простые трудяги на складе — Line Follower.

Но всё это как правило — не дешевые игрушки, поэтому доступ к роботам есть в специализированных лабораториях или институтах/школах где получили финансирование и есть эти направления. Всем же остальным разработчикам (кому интересна робототехника) — остаётся завистливо смотреть.

Некоторое время назад я вышел на достаточно интересную систему — 3д робосимулятор V-REP, от швейцарской компании Coppelia Robotics.

К своему (приятному) удивлению я обнаружил, что эта система:
  • имеет большой функционал (система разрабатывается с марта 2010 года)
  • полностью open-source (выложена в открытый доступ в 2013 году)
  • кроссплатформенная — windows, mac, linux (работает на Qt)
  • имеет API и библиотеки для работы с роботами через C/C++, Python, Java, Lua, Matlab, Octave или Urbi
  • бесплатная для некоммерческого использования!

Все объекты, которые программируются в этой системе — «живут» в реальном с точки зрения физических законов мире — есть гравитация, можно захватывать предметы, столкновения, датчики расстояния, видео датчики и т.п.

Поработав некоторое время с этой системой, я решил рассказать про неё читателям хабра.

Да, и на картинке скриншот из V-REP, и модели роботов — которые вы можете программировать, и смотреть поведение, прямо на вашем компьютере.

Установка

Установим на компьютер эту систему, в разделе Download:


Видим три варианта: образовательный (EDU), триальный (EVAL), и плеер (player).

Плеер — это программа с помощью которой можно проиграть сцены созданные в полноценной версии (то есть нет возможности редактирования) — бесплатная.

Триальная — это полнофункциональная версия, в которой нет возможности сохранить. Нет лицензионных ограничений.

Образовательный — это полнофункциональный пакет, имеющий лицензионные ограничения, текст лицензии можно прочитать здесь. Суть его в том, что институты, школы, хоббисты — могут использовать бесплатно это программное обеспечение. При том, что использование не коммерческое (а образовательное).

Мы с вами вполне подходим под определение хоббистов (т.к. хотим образовательно по-программировать роботов), поэтому смело скачиваем версию EDU PRO для своей операционной системы.

В данный момент версия 3.2.0, вот прямая ссылка на windows вариант: V-REP_PRO_EDU_V3_2_0_Setup (98 Mb)

Старт

После установки, и старта мы увидим экран:


Здесь мы видим следующие объекты:

— сцена — здесь и происходит всё действо, на данный момент она пуста (есть только пол)
— слева видим блок с библиотекой моделей — сверху папки, и под ней — отображается содержимое выбранной папки (выбраны robots/non-mobile — то есть стационарные роботы — манипуляторы)
— далее отображается иерархия мира

Иерархия включает в себя — корневой объект (мир), в котором находятся все объекты.

В нашем примере это:


Видим источники света, видим объект для реализации пола (а это твердая поверхность, с текстурой), и группу для камер.

Есть главный объект скрипт, контролирующий сцену и всех объектов на ней, и у каждого объекта может быть свой скрипт — внутренние скрипты реализованы на языке Lua.

Вверху и слева мы видим toolbar — меню. Самой главной кнопкой является кнопка Play (Start Simulation) — после которой стартует симуляция сцены:


Сценарий работы следующий:
— мы перетаскиваем с помощью DragAndDrop объекты из библиотеки моделей.
— корректируем их местоположение
— настраиваем скрипты
— стартуем симулятор
— останавливаем симулятор

Попробуем что-нибудь на практике.

Быстрый старт

Попробуем оживить робота.

Для этого выбираем слева папку robots/mobile и в списке выбираем Ansi, захватываем, переносим на сцену и отпускаем, робот появляется на нашей сцене и появляется информация об авторе:


Теперь нажимаем на Start Simulation, и видим движение робота, и можем управлять положение головы, рук (реализовано через Custom User Interface), вот видео:



Далее останавливаем симуляцию:


Скрипт управления

Можем открыть и увидеть код, который научил робота идти (управляет автономным передвижением робота). Для этого на иерархии объектов, напротив модели Asti, дважды кликаем на иконке «файл»:


Вот Lua программа, которая осуществляет движение робота:
Скрипт управления движением робота Asti
if (sim_call_type==sim_childscriptcall_initialization) then 
	asti=simGetObjectHandle("Asti")
	lFoot=simGetObjectHandle("leftFootTarget")
	rFoot=simGetObjectHandle("rightFootTarget")
	lPath=simGetObjectHandle("leftFootPath")
	rPath=simGetObjectHandle("rightFootPath")
	lPathLength=simGetPathLength(lPath)
	rPathLength=simGetPathLength(rPath)
	ui=simGetUIHandle("astiUserInterface")
	simSetUIButtonLabel(ui,0,simGetObjectName(asti).." user interface")
	dist=0
	correction=0.0305
	
	minVal={0,			-- Step size
			0,			-- Walking speed
			-math.pi/2,	-- Neck 1
			-math.pi/8,	-- Neck 2
			-math.pi/2,	-- Left shoulder 1
			0,			-- Left shoulder 2
			-math.pi/2,	-- Left forearm
			-math.pi/2,	-- Right shoulder 1
			0,			-- Right shoulder 2
			-math.pi/2}	-- Right forearm
	rangeVal={	2,			-- Step size
				0.8,		-- Walking speed
				math.pi,	-- Neck 1
				math.pi/4,	-- Neck 2
				math.pi/2,	-- Left shoulder 1
				math.pi/2,	-- Left shoulder 2
				math.pi/2,	-- Left forearm
				math.pi/2,	-- Right shoulder 1
				math.pi/2,	-- Right shoulder 2
				math.pi/2}	-- Right forearm
	uiSliderIDs={3,4,5,6,7,8,9,10,11,12}

	relativeStepSize=1
	nominalVelocity=0.4
	neckJoints={simGetObjectHandle("neckJoint0"),simGetObjectHandle("neckJoint1")}
	leftArmJoints={simGetObjectHandle("leftArmJoint0"),simGetObjectHandle("leftArmJoint1"),simGetObjectHandle("leftArmJoint2")}
	rightArmJoints={simGetObjectHandle("rightArmJoint0"),simGetObjectHandle("rightArmJoint1"),simGetObjectHandle("rightArmJoint2")}
		
	-- Now apply current values to the user interface:
	simSetUISlider(ui,uiSliderIDs[1],(relativeStepSize-minVal[1])*1000/rangeVal[1])
	simSetUISlider(ui,uiSliderIDs[2],(nominalVelocity-minVal[2])*1000/rangeVal[2])
	simSetUISlider(ui,uiSliderIDs[3],(simGetJointPosition(neckJoints[1])-minVal[3])*1000/rangeVal[3])
	simSetUISlider(ui,uiSliderIDs[4],(simGetJointPosition(neckJoints[2])-minVal[4])*1000/rangeVal[4])
	simSetUISlider(ui,uiSliderIDs[5],(simGetJointPosition(leftArmJoints[1])-minVal[5])*1000/rangeVal[5])
	simSetUISlider(ui,uiSliderIDs[6],(simGetJointPosition(leftArmJoints[2])-minVal[6])*1000/rangeVal[6])
	simSetUISlider(ui,uiSliderIDs[7],(simGetJointPosition(leftArmJoints[3])-minVal[7])*1000/rangeVal[7])
	simSetUISlider(ui,uiSliderIDs[8],(simGetJointPosition(rightArmJoints[1])-minVal[8])*1000/rangeVal[8])
	simSetUISlider(ui,uiSliderIDs[9],(simGetJointPosition(rightArmJoints[2])-minVal[9])*1000/rangeVal[9])
	simSetUISlider(ui,uiSliderIDs[10],(simGetJointPosition(rightArmJoints[3])-minVal[10])*1000/rangeVal[10])
end 

if (sim_call_type==sim_childscriptcall_cleanup) then 
 
end 

if (sim_call_type==sim_childscriptcall_actuation) then 
	-- Read desired values from the user interface:
	relativeStepSize=minVal[1]+simGetUISlider(ui,uiSliderIDs[1])*rangeVal[1]/1000
	nominalVelocity=minVal[2]+simGetUISlider(ui,uiSliderIDs[2])*rangeVal[2]/1000
	simSetJointTargetPosition(neckJoints[1],minVal[3]+simGetUISlider(ui,uiSliderIDs[3])*rangeVal[3]/1000)
	simSetJointTargetPosition(neckJoints[2],minVal[4]+simGetUISlider(ui,uiSliderIDs[4])*rangeVal[4]/1000)
	simSetJointTargetPosition(leftArmJoints[1],minVal[5]+simGetUISlider(ui,uiSliderIDs[5])*rangeVal[5]/1000)
	simSetJointTargetPosition(leftArmJoints[2],minVal[6]+simGetUISlider(ui,uiSliderIDs[6])*rangeVal[6]/1000)
	simSetJointTargetPosition(leftArmJoints[3],minVal[7]+simGetUISlider(ui,uiSliderIDs[7])*rangeVal[7]/1000)
	simSetJointTargetPosition(rightArmJoints[1],minVal[8]+simGetUISlider(ui,uiSliderIDs[8])*rangeVal[8]/1000)
	simSetJointTargetPosition(rightArmJoints[2],minVal[9]+simGetUISlider(ui,uiSliderIDs[9])*rangeVal[9]/1000)
	simSetJointTargetPosition(rightArmJoints[3],minVal[10]+simGetUISlider(ui,uiSliderIDs[10])*rangeVal[10]/1000)
	
	
	-- Get the desired position and orientation of each foot from the paths (you can also use a table of values for that):
	t=simGetSimulationTimeStep()*nominalVelocity
	dist=dist+t
	lPos=simGetPositionOnPath(lPath,dist/lPathLength)
	lOr=simGetOrientationOnPath(lPath,dist/lPathLength)
	
	p=simGetPathPosition(rPath)
	rPos=simGetPositionOnPath(rPath,(dist+correction)/rPathLength)
	rOr=simGetOrientationOnPath(rPath,(dist+correction)/rPathLength)
	
	
	-- Now we have the desired absolute position and orientation for each foot.
	-- Now transform the absolute position/orientation to position/orientation relative to asimo
	-- Then modulate the movement forward/backward with the desired "step size"
	-- Then transform back into absolute position/orientation:
	astiM=simGetObjectMatrix(asti,-1)
	astiMInverse=simGetInvertedMatrix(astiM)
	
	m=simMultiplyMatrices(astiMInverse,simBuildMatrix(lPos,lOr))
	m[8]=m[8]*relativeStepSize
	m=simMultiplyMatrices(astiM,m)
	lPos={m[4],m[8],m[12]}
	lOr=simGetEulerAnglesFromMatrix(m)
	
	m=simMultiplyMatrices(astiMInverse,simBuildMatrix(rPos,rOr))
	m[8]=m[8]*relativeStepSize	
	m=simMultiplyMatrices(astiM,m)
	rPos={m[4],m[8],m[12]}
	rOr=simGetEulerAnglesFromMatrix(m)
	
	
	-- Finally apply the desired positions/orientations to each foot
	-- We simply apply them to two dummy objects that are then handled
	-- by the IK module to automatically calculate all leg joint desired values
	-- Since the leg joints operate in hybrid mode, the IK calculation results
	-- are then automatically applied as the desired values during dynamics calculation
	simSetObjectPosition(lFoot,-1,lPos)
	simSetObjectOrientation(lFoot,-1,lOr)
	
	simSetObjectPosition(rFoot,-1,rPos)
	simSetObjectOrientation(rFoot,-1,rOr)
	
end 


Другие модели

Вы можете удалить модель — для этого надо её выбрать, и нажать на Del. И можете попробовать посмотреть другие модели в работе, у некоторых есть скрипты для автономной работы.

Мобильные роботы


Стационарные роботы (манипуляторы)


Примеры сцен

Так же есть большое количество примеров (сцен), которые поставляются сразу с программой. Для этого надо выбрать в меню «File/Open scenes» и там перейти в папку: «V-REP3/V-REP_PRO_EDU/scenes».

Вот примеры сцен (файлы с расширением *.ttt):
Файлы сцен-примеров
2IndustrialRobots.ttt
3DoFHolonomicPathPlanning.ttt
6DoFHolonomicPathPlanning.ttt
BarrettHandPickAndPlace.ttt
blobDetectionWithPickAndPlace.ttt
ConstraintSolverExample.ttt
controlTypeExamples.ttt
e-puckDemo.ttt
environmentMapping.ttt
externalIkDemo.ttt
fabricationBlocks.ttt
fastClientServerCommunication.ttt
forwardAndInverseKinematics1.ttt
forwardAndInverseKinematics2.ttt
gearMechanism.ttt
genericDialogDemo.ttt
ghostDemo.ttt
ImageProcessingExample.ttt
inverseKinematicsOf144DofManipulator.ttt
jansenMechanism.ttt
katanaRobotWithCableSimulation.ttt
khepera3.ttt
LineTracer-threaded.ttt
millingMachine.ttt
millingRobot.ttt
motionPlanningAndGraspingDemo.ttt
motionPlanningDemo1.ttt
motionPlanningDemo2.ttt
motionPlanningDemo3.ttt
mouseTestScene.ttt
naturalSelectionAlgo.ttt
NonHolonomicPathPlanning.ttt
objectHandling.ttt
PaintingRobot.ttt
ParallelForwardAndInverseKinematics.ttt
practicalPathPlanningDemo.ttt
proximitySensorDemo.ttt
reflexxesMotionLibraryType4Demo.ttt
robotCollaboration1.ttt
robotCollaboration2.ttt
robotLanguageControl.ttt
rosTopicPublisherAndSubscriber.ttt
SocketAndTubeCommunicationExample.ttt
StripeScanner.ttt
weldingRobot.ttt
wirelessTransmission.ttt
youBotAndHanoiTower.ttt


Ссылки

* основной сайт V-REP
* руководство пользователя (на английском)
* большое количество видео, примеров из V-REP

Чтобы поддержать популяризацию этой интересной системы на русском языке — создана русскоязычная группа по V-REP.

Применение в учебном процессе

На мой взгляд, у V-REP есть хороший потенциал применения в учебных процессах. Если вас интересует применение системы в учебном процессе — в школе, институте, в клубе робототехники и т.п. — то можете заполнить анкету. Может быть получиться консолидировать усилия и сделать учебные русскоязычные материалы.

Планы на будущее


Конечно это лишь малая часть возможностей V-REP системы. В следующей публикации на примере рассмотрим создание задачи гоночного симулятора на робо-машинке от первого лица. Рассмотрим API. Создание объектов, настройка сцены и взаимодействие с пользователем.
Автор: @nemilya
MakeItLab
рейтинг 66,11

Комментарии (23)

  • +1
    Теперь я знаю, в какой программе я проведу ближайшие выходные!
    • +2
      Советую провести следующие выходные в rviz.
      • 0
        Если не сложно — можно уточнить, что есть в RVIZ, чего нет в V-REP?
        • +2
          BSD лицензия
          • –2
            BSD vs WindowsInstaller :)
          • 0
            Поясню как я себе вижу:

            Я за то чтобы было больше продуктов bsd, mit лицензий. Но до этапа когда человек начинает понимать это — есть этап интереса к программированию, и мотивации на изучение нового.

            Это время как правило случается в школе.

            По моим ощущениям — v-rep вполне может обеспечить интерес и мотивацию школьников на изучение программирования.

            Если им это будет интересно — дальше они будут свободны перейти на ros, rviz, c++ и т.д.

            Проблема привлечения к программированию начинающих на несколько порядков актуальнее, чем коммерческий инструмент для промышленной робототехники в России.
      • +1
        Эмм...rviz — это просто средство визуализации. А тут, насколько я понял, речь идет о среде для симуляци, что-то вроде Robotic Studio от Microsoft.
  • +2
    gazebo ван лав.
    • +1
      ROS — вообще надо знать для общего развития, я не спорю, и в V-REP есть поддержка ROS: ROS interface.

      С точки зрения старта — V-REP выглядит лучше — можно установить, понять принцип работы, есть готовые роботы, быстрое скриптование на Lua — возможно внешнее скриптование через API.

      В rviz и gazebosim — старт на OS Windows будет затруднен.

      Я лично за популяризацию направления симуляторов робототехники (т.к. робототехническое железо всё же не дешевеет). В данный момент мне видится учебный стенд — симулятор V-REP на десктоп компьютере, и ROS — на виртуалке с Linux.
      • 0
        А есть нормальные мануалы/книги по ROS?
        А то я несколько раз пытался читать официальную справку — ничего не понял даже с примерами. :(
  • 0
    Я просто оставлю это здесь.
    Правда, чтобы добавлять своих роботов, нужно связаться с автором и попросить его выслать комплект разработчика.
    У нас в этом симуляторе студентов на старших курсах мучают :)
    • 0
      Расскажите, он хоть в чём-то лучше, чем V-REP, Gazebo, Robologix, Webots или аналогичные штуковины? Я вот пока только то, что «встроена 3D-игра с интригующим сюжетом» заметил.
      • +2
        Робсим — комплексный симулятор. Он позволяет не просто программировать робота или управлять им с пульта. В пятой версии надо создавать упрощенную электрическую схему робота, использовать камеры, источники питания и многое другое. Плюс надо делать расчет регуляторов для двигателей.
        У нас на кафедре в нем много чего моделировали. Например, мультиагентное взаимодействие роботов.
        Вообще, насколько мне известно, изначально симулятор писался с целью обучения персонала управлению реальными роботами. Отсюда возможности моделирования реальных пультов управления. А потом уже его в учебный процесс встроили.
        Так студенты хоть немного могут себе представить, из чего реально состоит робот и какие задачи необходимо решить при его проектировании.
        Процесс проектирования примерно такой: рисуем робота, расставляем двигатели, колеса и прочие движущиеся элементы, присваиваем всевозможные параметры модели. Далее рисуем электрические схемы соединений (достаточно упрощенные, но в то же время дающие хоть какое-то понятие о железной начинке), создаем логические связи и пытаемся заставить всё это работать.
        Вот пример реальной тренировки. Правда, не знаю, в какой из версий симулятора.
        И обязательно хотя бы пролистайте методички отсюда. Там картинки и много текста :)
        • 0
          Скачал, ознакомился, полистал методчки и посмотрел указанные элементы — общее печальное впечатление, к сожалению, скорее усилилось. Этакий преднастроенный комбайн из весьма простенького физического симулятора уровня а ля RVW, очень примитизированного EDA, компилятора JavaScript и даже попытки сделать что-то а ля SPICE-симулятор. «Расчет» ESC или там «защита от списывания» сносят крышу и навевают на мысли о том, почему туда не приделали календарь, калькулятор, почтовый клиент, электронный журнал посещаемости, АРМ для деканата или торрент-трекер.

          Наверное, для каких-то целей это полезно, но, субъективно, от реальности очень и очень далеко. В реальности никому в жизни в голову не придет делать свой собственный ESC; для принципиальных схем, симуляции и разводки есть вполне себе типичные промышленные решения; для управления в реальной жизни скорее всего будет как минимум ROS; программировать в реальной жизни вряд ли будут путем создания DLLки под Windows на Delphi…

          Не то, чтобы сильно релевантно, но МОЙ ЛЮБЫМЫЙ DELPHI 3.0 DIMAE EDITION вообще за грань добра и зла %)
          • +1
            Согласен, движок не блещет, но его возможностей более чем достаточно для того, чтобы оценить правильность настройки тех же регуляторов.

            Если под ESC Вы имеете в виду Electronic Speed Controller, то Вы глубоко заблуждаетесь относительно того, что его никто не будет делать сам. Всё зависит от задачи. Не все роботы используют бесколлекторные двигатели, для которых порой проще взять уже готовый контроллер. Я сам лично несколько раз (от платы и до кода) делал регуляторы и настраивал их для наших роботов. И это нормальная практика. Не всё сейчас собирается из готовых кубиков, потому что зачастую их просто некуда впихнуть.

            Касательно защиты от списывания. К сожалению, это необходимость. Нынче студент пошел ушлый. Кто-то один делает нормального робота, другие его копируют, чуток видоизменяют и на этом всё. И в итоге в конце семестра смотреть на двадцать одинаковых роботов очень уныло.

            Да, разумеется, ежу понятно, что есть САПРы и прочее. Но реальность, увы, такова, что показав студенту электрическую принципиальную схему драйвера ДПТ на основе хотя бы l6205, он не в состоянии сказать, зачем вообще нужна микросхема и где она тут. Безусловно, это комплексная проблема. Но вот когда есть знакомство с ЭПС хотя бы в таком виде, то это уже хоть что-то.

            Кстати, ROS мы ни разу не использовали. Не от незнания, а… Ну не подходит она по многим причинам. Слишком монструозна. Да и под MIPS, если я правильно помню, её не было, когда была возможность её использовать.
            Действительно, dll под винду никто не пишет. Делают, если есть для чего, прогу для линукса, которая рулит всем процессом. Но линукс из группы знает максимум пара человек. Поэтому так как есть — проще.

            Я вовсе не пытаюсь Вас убедить ни в чем. Я согласен, что симулятор далек от совершенства. Но, поверьте, с учебными задачами он справляется ;)
            • +1
              Если отвлечься от «защиты», которая остановит разве кого-то только если во всем потоке на протяжении многих лет все поголовно дебилы, не осиливающие открыть hex-редактор, подправить фамилию внутри файла и научить это делать всех сокурсников, то в целом-то ситуация грустная, и даже не потому, что конкретный продукт или симулятор хороший или плохой.

              Основная проблема в том, что из вала идущих студентов реально интересно и нужно это дай бог, как вы сказали, «паре человек из группы». Университетское образование предполагает весьма комплексный подход и глубокую в том числе теоретическую проработку массы вопросов, а на практике же в отведенные часы влезает 2-3% от того, что нужно рассказать и узнать. Без какой-то внутренней мотивации не получается примерно ничего — де факто подавляющему большинству это все нафиг не нужно, они получат свой диплом, откосят от армии и пойдут работать продавцами в офис — и хорошо еще, если хоть продавать будут что-нибудь относительно техническое.

              Поэтому как бы и сравнивать сложно. Coppelia с ее V-REP'ом выросла из среды цюрихского ETHа — а там процент заинтересованных и мотивированных студентов просто несравнимо больше, чем в российских вузах. Сам наблюдал, что на старте семестра преподаватель дает какое-то весьма расплывчатое задание — и от 15 человек получает почти всегда 15 добротных проектов, с кучей креативных идей, если используется какой-то фреймворк — то почти наверняка за семестр к нему напишут еще 4-5 каких-то новых обвязок/плагинов/чего-нибудь еще, что людям не хватало.

              И, боюсь, подход «предельно упростим и сделаем специальный собственный комплекс» в данном случае эту ситуацию не спасет и мотивацию не поднимет — скорее вставит приличные палки в колеса тех, кто реально что-то хотел и мог делать.
    • +1
      Скачал. Поставил. Касперский сразу крикнул, что uninstall заражен и убил его (понимаю, что на 99% ложное срабатывание, но разработчикам стоило бы это учесть). Запустил. О, ностальгия. Как лет на 20 назад окунулся судя по интерфейсу и общей стартовой подаче. Что-то из довиндовых времен даже почудилось. Ну ладно, смотрим дальше. Запускаю и… Мерцание экрана несколько секунд и программа аварийно завершается. Пошел читать на сайт разработчиков и читаю, что делать, если меню работает, а сцены нет
      Зайдите в меню в настройки видео, и отключите какие-нибудь эффекты.

      Подумал, что для продукта за деньги это как-то слишком.

      Первоначальное впечатление очень испортилось. Понимаю, что оно может быть ошибочным и перед нами великолепный продукт. Но, подозреваю, такой подход отпугнет подавляющее большинство неофитов.
      • 0
        Д.В. мне когда-то рассказывал, почему касперский ругается, но это было давно и я, к сожалению, уже это забыл. Вирусов там действительно нет, но что-то ему там не нравится.

        А какая у Вас конфигурация и какая винда?

        Файл glinfo.txt выслали?
        Да, не всё гладко. Но этот софт написан одним человеком. Поэтому ожидать, что он будет работать всегда и везде, не стоит.
  • 0
    Для прототипирования под Windows, на мой взгляд, это очень хороший вариант. Можно копипастом заменить lua.dll на dll из LuaJIT и подгружать на лету библиотеки с C интерфейсом без необходимости компилировать чего-либо, к примеру. Из недостатков можно отметить то, что это, всё таки, симулятор, а не фреймворк. Если планируется использовать свой пользовательский интерфейс, то лучше сразу искать что-либо другое.
  • 0
    Физический движок там на каком уровне присутствует? Судя по надписи «bullet» мелькающей на одном из скриншотов — только rigid body и скорее всего с весьма игрушечными возможностями настройки (например, коэффициенты трения настроить или распределение масс)?
    • 0
      Отсюда www.coppeliarobotics.com/helpFiles/en/dynamicsModule.htm

      «V-REP's dynamics module currently supports three different physics engines: the Bullet physics library, the Open Dynamics Engine, and the Vortex Dynamics engine. At any time, the user is free to quickly switch from one engine to the other according to his/her simulation needs. The reason for this diversity in physics engine support is that physics simulation is a complex task, that can be achieved with various degrees of precision, speed, or with support of diverse features»
  • +1
    Ещё, может будут интересны примеры проектов на базе V-REP (лучше один раз увидеть):

    Симуляция упаковочного конвейера:



    Роботизированный разбор бананов:



    Рука манипулятор пересыпание из одного стакана в другой:



    Танец роботов-балансировщиков:



    Симулятор диагностирующего устройства передвигающегося по проводам, способного преодолевать препятствия:



    Все видео

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое