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

Управляемое движение в Компас 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 пользователей

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




  • Сообщения

    • AlexKaz
      Различают жёсткие и гибкие ротора. В данном случае вал жёсткий. Для него соответствуюшая формула. 4000 об/мин = 66.67 Гц, это ни о чём, эффекты для такой частоты почти не скажутся на жёстком роторе. Но проблема в том, что в лопаточных машинах (а насос на скрине наверное лопаточная?) собственные кратны числу лопаток. Я не разбирался в вопросе чтобы что-то здесь советовать. Лучше не спешить и внимательно почитать про модальный в лопаточных. Заодно проверить, а какое нагружение идёт в деталях насоса чтобы корректно выполнить престресс.
    • ДОБРЯК
      Хотите еще и матрицу масс изменить. :=) И сколько килограмм воды будете присоединять?  Опыт правильного моделирования, опыт расчета таких конструкций накапливается десятилетиями. Маловероятно, что кто-то на форуме будет вам объяснять как правильно моделировать, какие КЭ использовать, какие граничные условия задавать и т. д. Вы же всегда уклоняетесь от разговора на эти темы, даже для простых моделей.  Даже если перейдете на Ансис и не разберётесь в том, что он считает это не поможет вам написать грамотный отчет и объяснить грамотному заказчику, что вы там насчитали. Считает расчетчик, а программа это инструмент. Это только в рекламе пишут, что купите программу трехмерного моделирования, сделайте трехмерную модель, потом нажмите одну кнопку и на обычном игровом компьютере все посчитаете. Только в жизни все немножко иначе...:=)
    • Jesse
      Вот что у Биргера: Центробежные силы и индуцированный гироскопический момент зависят от квадрата частоты вращения вала   Хотя уже сама критическая частота зависит только от момента инерции колеса (альфа, бэта, гамма - это прогибы, углы поворота и прочая шелуха), т.е. частота вращения в формулу не входит, а всё определяется только моментом инерции Jm Ну у него рассматривается простая одномассовая система (фактически грузик на пружинке). Думаю поискать публикации.. мб где то раскопали аналитическую зависимость первой и высшей СЧ от частоты вращения для сложных систем. Хотя если выяснится что зависит,  всё равно обоснование придумывать придётся.  Эхх...
    • Fedor
      https://www.litres.ru/book/v-n-faddeeva/vychislitelnye-metody-lineynoy-algebry-65999878/  Ну и классику жанра :) 
    • Jesse
      4000 об/мин при наружном диаметре колеса 380 мм. Думаете, на больших оборотах вилка всё равно может разойтись и могут появиться гироскопические эффекты? Даже несмотря на вышеприведенные массово-инерционные оценки и расположение опор?   да я влияние престресс (вращение) особо не увидел... Думал обычным модальником прогнать, Ланцошом (он пошустрее).   Ещё мои раздумья направлены в сторону присоединённой массы воды, что по идее должно занижать частоты. Хотя для такого массивного вала как у меня даже на это дело можно забить, наверно...
    • Handrusik
      Maxx2000 - благодарю Павлуха - это не фриланс Утомлённый солнцем - приятно, что меня помнят
    • Борман
      Я так понимаю, что обороты не особо большие. ДК - это чисто высокооборотистая тема.   Просто мысли вслух... Если вилка будет сильно расходится, то всегда будет точка пересечения любого луча с кривой BW. Причем точка будет на меньших оборотах по сравнению с обычным престресс-модальником. Какие дальше действия ? С чем тут нужно дополнительно бороться по сравнению с тем, с чем нужно было бы бороться по результатам обычного престресс-модальника Если вилка не сильно расходится (от кривой обычного престресс-мобальника), то смысла стоить строгую ДК большого нет.    
    • boomeeeer
      На сименсе параметрами настраивается многое, что связано с менеджером иснструмента. Вызов возможен как по номерам, так и по именам инструментов. Через равно вроде как по имени вызывается (Т="имя"), а по номеру можно было, например, Т1 M6, а первый корректор подтянулся бы автоматически. И не всегда М6 на смену. Производитель мог нагородить чего угодно. Параметры надо смотреть
    • Den4ik85
      P.S этой ошибки не было при запуске,она возникла при выполнении команды смены инструмента "T=.." d1m6. (так учили на курсах) возможно,не тот номер ввел или не соответствовало название инструмента его номеру?
    • boomeeeer
      @Den4ik85 Подключаться к контроллеру и искать цепочку формирования сигнала ошибки DB2.DBX183.0. Возможно один из индуктивных датчиков на подсчёт ячеек магазина вышел из строя
×
×
  • Создать...