Robot Workbench/ru



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

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

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

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


 * [[Image:Robot_CreateRobot.png|30px]] Создать робота: Помещает нового робота на сцену
 * [[Image:Robot_Simulate.png|30px]] Имитировать траекторию: Открывает диалог имитации и вы имитируете
 * [[Image:Robot_Export.png|30px]] Экспортировать траекторию: Экспортировать в программный файл робота
 * [[Image:Robot_SetHomePos.png|30px]] Установить в стартовую позицию: Устанавливает робота в стартовую позицию
 * [[Image:Robot_RestoreHomePos.png|30px]] Восстановить на исходную: Перемещает робота в стартовое положение

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

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

 * [[Image:Robot_CreateTrajectory.png|30px]] Создать траекторию: Помещает нового робота на сцену
 * [[Image:Robot_SetDefaultOrientation.png|30px]] Установить ориентацию по умолчанию: Устанавливает ориентацию в начальной точке становящейся точкой по умолчанию???
 * [[Image:Robot_SetDefaultValues.png|30px]] Задать параметры скорости по умолчанию: создает настройки по умолчанию для создания точек.
 * [[Image:Robot_InsertWaypoint.png|30px]] Запомнить положение робота: Помещает текущее положение робота на траекторию
 * [[Image:Robot_InsertWaypointPre.png|30px]] Запомнить положение: помещает текущее положение курсора мыши на траекторию

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

 * [[Image:Robot_Edge2Trac.png|30px]] Создать траекторию из ребер: Помещает новый объект который раскладывается на ребра для траектории
 * [[Image:Robot_TrajectoryDressUp.png|30px]] Настройка траектории: Позволяет вам изменять одно и более свойств траектории
 * [[Image:Robot_TrajectoryCompound.png|30px]] Объединение траекторий: создает объединение из нескольких одиночных траекторий

Написание сценариев
Этот раздел сформирован из: 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))