Robot Workbench/ru: Difference between revisions
(Created page with 'right|400px Инструментарий автоматики это инструмент для имитации промышленного кла…') |
m (Languages in alphabetic order, except english that goes first) |
||
Line 146: | Line 146: | ||
{{docnav/ru|Drawing Module/ru|Raytracing Module/ru}} |
{{docnav/ru|Drawing Module/ru|Raytracing Module/ru}} |
||
{{languages | {{ |
{{languages | {{en|Robot Workbench}} {{es|Robot Workbench/es}} {{se|Robot Workbench/se}} }} |
Revision as of 22:39, 14 September 2011
Инструментарий автоматики это инструмент для имитации промышленного класса 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))