Перейти к публикации

Управляемое движение в Компас 3D


Рекомендованные сообщения

Опытные и талантливые! Нужна консультация!

Для заказчика из НИИ нужно сделать в среде Компас 3D виртуального (на экране монитора ПК) промышленного робота-манипулятора ("железная рука"). Можно простого, но напоминающего руку. Что главное: должно быть управление от аппаратного устройства, напоминающего джойстик. Я делал в среде Компас 3D несложные механические конструкции из 2-3 элементов и эти элементы двигались, но на основе управления с клавиатуры.

Вопрос: возможно ли в среду Компас 3D (или любую другую) вводить сигналы управления от внешнего устройства?

Изменено пользователем VlTag
Ссылка на сообщение
Поделиться на других сайтах


а зачем Компасу? Сделайте управление на клавиатуру. Или на сочетание клавиш. Т.е. через комп-порт(или USB) и контроллер будут идти сигналы нажатия клавиш.

Этого добра навалом в интернете

Ссылка на сообщение
Поделиться на других сайтах

Большое спасибо!

Тут ситуация следующая. По большому счёту надо сделать реализацию робота-манипулятора (не виртуального, а реального) с управлением от биосигналов, снимаемых с руки человека. Но прежде чем создавать реальное железо, надо показать как биосигналы управляют ВИРТУАЛЬНЫМ роботом-манипулятором. Но его надо же изобразить средствами 3D!!!

Поэтому нужна программа Компас 3D. Но может быть кто-то другую программу-среду порекомендует.

Ссылка на сообщение
Поделиться на других сайтах

По моему маленькому опыту из одного проекта.

Робот был сделан 3DS MAX. там даже какая-то утилита есть задания "шарнирных связей" и последующего управления ими. Далее был написан скрипт по управлению всем этим. И все это скомпилированно в отдельный исполняемый файл.

 

далее все просто. С флешки запускался этот файл и через подключенный по USB манипулятор, управлялся.

 

Делали два парня. Один модель..другой "прогу". На все ушло пару дней. Но они были профи в своем деле каждый

Ссылка на сообщение
Поделиться на других сайтах

http://ru.wikipedia.org/wiki/Blender

Имеет продвинутый встроенный игровой движок - причем большая часть функционала в нем "программируется" без программирования как такового, плюс в помощь API для скриптов на Python. Руководств  и уроков на русском навалом - гуглите 

Ссылка на сообщение
Поделиться на других сайтах
  • 4 месяца спустя...

http://ru.wikipedia.org/wiki/Blender

Имеет продвинутый встроенный игровой движок - причем большая часть функционала в нем "программируется" без программирования как такового, плюс в помощь API для скриптов на Python. Руководств  и уроков на русском навалом - гуглите 

Кстати да, в целях указанных автором темы, этот движок вполне может помочь. Самому с Blender-ом работать не приходилось, но как-то наблюдал то что он может, и результат был вполне себе на уровне... Тем-более игровые движки, как никто другой отлично подходят для реализации прямого управления. Огромное количество игровых манипуляторов тому пример...

Ссылка на сообщение
Поделиться на других сайтах

На тему:

Компас. Сборки. Перемещение 

есть пример на Макросах.

 http://www.cyberforum.ru/cad-cam-cae/thread1400926.html

Пример перемещает первую деталь по координатам.

Циклом можно включить анимацию.

Вращение?  

Ссылка на сообщение
Поделиться на других сайтах
  • 4 недели спустя...

По моему маленькому опыту из одного проекта.

Робот был сделан 3DS MAX. там даже какая-то утилита есть задания "шарнирных связей" и последующего управления ими. Далее был написан скрипт по управлению всем этим. И все это скомпилированно в отдельный исполняемый файл.

 

далее все просто. С флешки запускался этот файл и через подключенный по USB манипулятор, управлялся.

 

Делали два парня. Один модель..другой "прогу". На все ушло пару дней. Но они были профи в своем деле каждый

а можно ссылку?интересно почитать

Ссылка на сообщение
Поделиться на других сайтах

http://nttl.ru/ru/

там видео есть на 17 сек. поищите на сайте, было и отдельно видео с роботом,

Ссылка на сообщение
Поделиться на других сайтах

Компас 14. Сборка. Вращение. Макро.

 

На сайте:

http://www.cyberforum.ru/cad-cam-cae/thread1400926.html

пример управления ногами робота.

Вращение в сборке есть в 15 версии, но на уровне Макро все доступно и в 14 версии. 

 

Машину конечно тормозит, пока снимаем Компас Диспетчером.

С квадратными ногами торможение должно быть меньше.

 

Код Python

import sys
import math
import Kompas6API5, LDefin3D, LDefin2D
Kompas, doc3d = start3d()
import Kompas10API5 as KAPI
import Kompas10API7 as KAPI7
import pythoncom
from win32com.client import Dispatch
import LDefin2D
import LDefin3D
import ksConstants as CONST2D7
import ksConstants3D as CONST3D7
import MiscellaneousHelpers as MH

iKompasObject = Dispatch('KOMPAS.Application.5')
iKompasObject = KAPI.KompasObject(iKompasObject)
MH.iKompasObject = iKompasObject

iApplication = Dispatch('KOMPAS.Application.7')
iApplication = KAPI7.IApplication(iApplication)
MH.iApplication = iApplication

iDocument3D = iKompasObject.ActiveDocument3D()

iDocument = iApplication.ActiveDocument
iKompasDocument3D = KAPI7.IKompasDocument3D(iDocument)


iDocument3D = iKompasObject.Document3D()


m=[]
t=[]
f1 = open("C:\Sborka_Koord_TABL1.txt", "r")
for   line in f1.readlines():
      m.append(line)

for masht in range(0,680,40):

    for   line in m:
          if line<>'\n':     
              t=line.split("\t") 
              nom=t[0]
              iPart = Kompas6API5.ksPart(doc3d.GetPart(nom))       # первая деталь в сборке
              x=t[3]          
              y=t[6]          
              z=t[9]          
              x=(float(x)+masht)/1.0
              y=float(y)
              z=float(z)
              iplac = Kompas6API5.ksPlacement(iPart.GetPlacement()) 
              iplac.SetOrigin(x, y, z)
              iPart.SetPlacement(iplac)
              iPart.UpdatePlacement()
              iPart.Update()
                               
    f1.close()


#  OBR  OBR  OBR  OBR  OBR  OBR  OBR  OBR  OBR  OBR  OBR  OBR  OBR  OBR
for masht in range(680,0,-20):

    for   line in m:
          if line<>'\n':     
              t=line.split("\t") 
              nom=t[0]
              iPart = Kompas6API5.ksPart(doc3d.GetPart(nom))       # первая деталь в сборке
              x=t[3]          
              y=t[6]          
              z=t[9]          
              x1=(float(x)+masht)/1.0
              y1=float(y)
              z1=float(z)
              iplac.SetOrigin(x1, y1, z1)
              nom1=int(nom)+0.0


#  06   06   06   06   06   06   06   06   06   06   06    
           
              x=y=z=0
              if nom1==0 or nom1==6:
                  
                  x=x1+1
                  y=y1
                  z=z1+math.sin((masht-200)/80.0) 
                  iplac.SetAxis(x, y, z,0)
                  iPart.SetPlacement(iplac)
                  iPart.UpdatePlacement()
                  iplac.SetOrigin(x1, y1, z1)
                  iPart.Update()
                  iPart.Update()



#  24  24  24  24  24  24  24  24  24  24  24  24  24   
           
              x=y=z=0
              if nom1==2 or nom1==4:
                  
                  x=x1+1
                  y=y1-0.0
                  z=z1+math.cos((masht-100)/80.0) 
                  iplac.SetAxis(x, y, z,0)
                  iPart.SetPlacement(iplac)
                  iPart.UpdatePlacement()

                  iplac.SetOrigin(x1, y1, z1)
                  iPart.Update()

#  8    8    8    8    8    8    8    8    8    8     
              iplac.SetOrigin(x1, y1, z1)
        
              x=y=z=0
              if nom1==8:
                  x=x1+1
                  y=y1
                  z=z1
                  iplac.SetAxis(x, y, z,0)
                  iPart.SetPlacement(iplac)
                  iPart.UpdatePlacement()
                  iplac.SetOrigin(x1, y1, z1)
                  iPart.Update()
                  iPart.UpdatePlacement()
                  iPart.Update()


#  1   1   1   1   1   1   1   1   1   1   1   1   1   1   1         
           
              x=y=z=0
              if nom1==1:
                  x=x1+1
                  y=y1
                  z=z1
                  iplac.SetAxis(x, y, z,0)
                  iPart.SetPlacement(iplac)
                  iPart.UpdatePlacement()
                  iPart.Update()
                  iplac.SetOrigin(x1+70, y1, z1)
                  iPart.SetPlacement(iplac)
                  iPart.UpdatePlacement()
                  iPart.Update()
                               
    f1.close()
          

 
Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...