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

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

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




  • Сообщения

    • Bot
      АСКОН, российский разработчик инженерного программного обеспечения и ИТ-интегратор, подвел итоги 2023 года. Выручка компании выросла на 47% и достигла 5,6 млрд рублей, штат сотрудников увеличился до 1250 человек. Клиентская база пополнилась тысячью предприятий и сегодня с решениями АСКОН работают почти 16 000 заказчиков из всех отраслей промышленности и строительства. Смотреть полностью
    • Sergey78
    • scrimline
      Уговаривать ему пришлось да и оскорбили его. Я вообще то сразу написал что постараюсь ладдер скинуть, а ты сарказмом со всех щелей хлестать начал. 
    • andrey2147
      Я подключал 532 , позже поищу ссылки, ВинПсином и кабелем там хитрость в настройках винпсина 7 бит надо ставить вам зачем ?
    • Guhl
      Надеюсь, в моих словах вы ничего оскорбительного не усмотрели Или это я?
    • Guhl
      Представляю. Я же не предлагал на полной скорости считать Получается, что до м19 считает правильно, а после - неправильно?
    • mannul
      Вы сначала проверьте точно ли режущий край пластины в оси детали. А то китайские державки и пластины бывают с такими косяками.
    • kkk
      Что-то вдруг резко понадобилась возможность посчитать площадь разной отделки в изделии. Есть куча многотельных деталей, какие-то поверхности красятся одним цветом, какие-то другим, какие-то третьим. Раскрасить в модели проблем нет, а нет ли возможности высчитать эту информацию автоматом? Есть ли какой-то способ наложения "отделки", чтобы Солид мог ей оперировать в дальнейшем.    Раньше, если изредка нужно было что-то подобное посчитать, просто выбирал нужные грани мышкой и смотрел сумму площадей в инструменте измерения. Но хочется больше интерактива, чтобы Солид сам отслеживал, что у него чем "покрашено".
    • andrey2147
      Пришлось уговаривать оператора что-бы выполнил просьбу Виктора, ещё и  оскорбили.  
    • gudstartup
      да не надо ничего паять система прекрасно считает импульсы на оборот в 445 параметре диагностики вот только беда в том что один раз войдя в режим контроля позиционирования после m19 она из него уже не выходит хотя сразу после включения находится в режиме управления скоростью и 445 параметр ничего не отображает и контроль числа импульсов отсутствует. Вопрос как выключить контроль позиционирования. он вводится по G70.6 но и после того как этот сигнал остается система продолжает контролировать кодер. в обще то понятно что это датчик так как на скорости 100 или 200 оборотов а также при ориентации все хорошо а потом видимо амплитуда сигнала падает ниже нормы там все ок вы частоту представляете при 5000 об 5000*4096
×
×
  • Создать...