Верстак Robot

From FreeCAD Documentation
Revision as of 20:56, 27 July 2011 by Psi13art (talk | contribs) (Created page with 'right|400px Инструментарий автоматики это инструмент для имитации промышленного кла…')
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Инструментарий автоматики это инструмент для имитации промышленного класса 6-осевых Роботов, таких как Kuka. Вы можете выполнять следующие работы:

  • создать среду моделирования с роботом и заготовкой
  • создать и загрузить траекторию
  • разложить часть CAD детали в траекторию
  • имитировать движения робота и его пространственные ограничения
  • экспортировать траекторию в программный файл робота

Примеры вы сможете найти здесь: Файлы с примерами или разобраться в Руководство по инструментарию Автоматики.

Инструменты

Здесь основные команды которые можно использовать настройки робота

Роботы

Инструменты создающие и управляющие 6-Осевыми роботами

Траектории

Инструменты для создания управления траекториями. Существует два вида параметрические и непараметрические.

не параметрические

параметрические

Написание сценариев

Этот раздел сформирован из: http://free-cad.svn.sourceforge.net/viewvc/free-cad/trunk/src/Mod/Robot/RobotExample.py?view=markup Вы можете использовать этот файл напрямую , если хотите

Пример того как использовать основной класс Robot6Axis который представлен 6-осевым промышленным роботом. Модуль Автоматики зависит от модуля Деталей(Part) но не от остальных модулей. Он работает с основными типами Положений, Векторов и Матрицами. Так что вам нудно только ввести:

from Robot import *
from Part import *
from FreeCAD import *

Основные взаимодействия с роботом

создаем робота. Если вы не укажете другого автоматически установиться Puma 560

rob = Robot6Axis()
print rob

получение доступа к осям и Tcp(текущая точка траектории?). Оси бывают от 1 до 6 и значения в них указаны в градусах:

Start = rob.Tcp
print Start
print rob.Axis1

повернуть первую ось робота:

rob.Axis1 = 5.0

Текущее положение(Tcp) изменилось следующая кинематика(forward kinematic)

print rob.Tcp

вернуть робота на стартовую позицию обратная кинематика(reverse kinematic):

rob.Tcp = Start
print rob.Axis1

сделаем тоже самое со второй остю:

rob.Axis2 = 5.0
print rob.Tcp
rob.Tcp = Start
print rob.Axis2

Точки траектории:

w = Waypoint(Placement(),name="Pt",type="LIN")
print w.Name,w.Type,w.Pos,w.Cont,w.Velocity,w.Base,w.Tool

создадим ещё. траектория всегда автоматически находит уникальное имя для каждой своей точки

l = [w]
for i in range(5):
  l.append(Waypoint(Placement(Vector(0,0,i*100),Vector(1,0,0),0),"LIN","Pt"))

создадим траекторию

t = Trajectory(l)
print t
for i in range(7):
  t.insertWaypoints(Waypoint(Placement(Vector(0,0,i*100+500),Vector(1,0,0),0),"LIN","Pt"))

посмотрим список всех точек траектории:

print t.Waypoints

del rob,Start,t,l,w

Работа с документом

Работа с роботами в документах: сначала создадим робота в активном документе

if(App.activeDocument() == None):App.newDocument()

App.activeDocument().addObject("Robot::RobotObject","Robot")

Зададим визуальное представление и кинематическую точность (подробнее смотри Шести осевые роботы и VRML подготовка к Симуляции Робота)

App.activeDocument().Robot.RobotVrmlFile = App.getResourceDir()+"Mod/Robot/Lib/Kuka/kr500_1.wrl"
App.activeDocument().Robot.RobotKinematicFile = App.getResourceDir()+"Mod/Robot/Lib/Kuka/kr500_1.csv"

start positon of the Axis (only that which differ from 0)

App.activeDocument().Robot.Axis2 = -90
App.activeDocument().Robot.Axis3 = 90

получаем Tcp позицию

pos = FreeCAD.getDocument("Unnamed").getObject("Robot").Tcp

перемещаем робота

pos.move(App.Vector(-10,0,0))
FreeCAD.getDocument("Unnamed").getObject("Robot").Tcp = pos

создаем "пустую" Траекторию в активном документе

App.activeDocument().addObject("Robot::TrajectoryObject","Trajectory")

просматриваем Траекторию

t = App.activeDocument().Trajectory.Trajectory

добавляем фактическое положение робота (TCP) к траектории

StartTcp = App.activeDocument().Robot.Tcp
t.insertWaypoints(StartTcp)
App.activeDocument().Trajectory.Trajectory = t
print App.activeDocument().Trajectory.Trajectory

добавляем больше точек к траектории и стартовую точку в конце траектории ещё раз:

for i in range(7):
  t.insertWaypoints(Waypoint(Placement(Vector(0,1000,i*100+500),Vector(1,0,0),i),"LIN","Pt"))

t.insertWaypoints(StartTcp) # end point of the trajectory
App.activeDocument().Trajectory.Trajectory = t
print App.activeDocument().Trajectory.Trajectory

Моделирование

Будет сделано..... ;-)

Экспорт траектории

Траектория экспортируется с помощью Python. Это означает что для каждого типа управляющей стойки(control cabinet) существует пост-процессорный Python модуль. Здесь, подробно описан постпроцессор для Kuka

from KukaExporter import ExportCompactSub

ExportCompactSub(App.activeDocument().Robot,App.activeDocument().Trajectory,'D:/Temp/TestOut.src')

и как то так это все делается:

for w in App.activeDocument().Trajectory.Trajectory.Waypoints:
	(A,B,C) = (w.Pos.Rotation.toEuler())
	print ("LIN {X %.3f,Y %.3f,Z %.3f,A %.3f,B %.3f,C %.3f} ; %s"%(w.Pos.Base.x,w.Pos.Base.y,w.Pos.Base.z,A,B,C,w.Name))
Drawing Module/ru
Raytracing Module/ru
Available translations of this page: Template:Se