Обновить
8
0

Пользователь

Отправить сообщение
А какой бы яп Вам хотелось?
Количество участников в команде может быть любое.
Однако должен быть представитель команды — конкретное физическое лицо, которое будет получать денежный перевод в случае победы.

Я полностью согласен с Вами, но только в том конкретном аспекте, который Вы описываете относительно смещения. R30i это имеет такой функционал и если у нас все буквы всегда неизменны по размерам, то да, может быть в таком случае внешний софт не потребуется.

Да смещение реализовать можно, но как подобный механизм применим когда нам надо изменить размеры и соотношение сторон букв? Поскольку тут уже смещение всех точек буквы (или всех точек внутри макроса) не на одну и туже величину по каждой из осей формирующих плоскость. Функция просчета смещений тут уже не поможет.

И сразу же возникает ещё один вопрос: если мы пишем каждый раз разные надписи, то получается нам придется каждый раз лезть внутрь робота, чтобы задать там программу вызова макросов, так? Либо как вариант можно повесить каждый отдельный макрос на PNS программу, однако механизм старта каждой PNS программы будет требовать почти 1 секунду времени, в итоге получим задержку в сумме равную количеству букв.
В этом случае применение макросов будет более затратно по времени, даже если все буквы неизменны.

Предложенное же решение в более общем виде позволяет нам оперировать большим числом параметров, что дает гибкость при написании очередной конкретной надписи. Например: мы можем в одном сообщении писать буквы разных размеров и с разным соотношением сторон.
Оба варианта возможны, однако второй более вероятен.

Параллельное исполнение возможно и средствами rcml, если бы мы написали код отрисовки каждой буквы не так:
@fr = robot_fanuc;
@fr->draw_P(1, 0);

А вот так:
robot_fanuc->draw_P(1, 0);

И в самой rcml программе у нас был бы описан ещё какой нибудь процесс, то интерпретатор rcml, смог бы переключать робота после отрисовки каждого отдельного символа, и возвращать его (робота) в то же место программы отрисовки, не дожидаясь, для переключения, выполнения всей программы.

Я общался с разработчиками rcml, они обещают через два или три месяца реализовать функционал, по поддержке полноценного параллельного выполнения программ, о котором говорится в статье. Однако программистам на rcml придется явно указываться места, в которых робот может быть «изъят» из одной программы и направлен на выполнение другой программы.
Шрифт действительно сделан вручную, и видно даже на видео, что все символы только из прямых линий.

Это результат обхода одного подводного камня… чтобы сделать плавную кривую или просто дугу можно пойти двумя путями:
1. Составить изгиб линии из множества маленьких прямых линий, понемногу поворачивая каждую. В этом случае, при рисовании, робот будет выполнять очень большое количество циклов разгона и торможения (до полной остановки) двигателей, что есть полноценный приход в каждую точку по заданным координатам. Причем робот крутит всеми осями, включая первую — самую нагруженную и самую медлительную, в основании робота (видно на видео, что робот чуть-чуть поворачивается целиком почти в каждом перемещении, что есть результат перемещения по первой оси). Это долго по времени, а если добавить роботу скорости, то будет ещё и дорого из-за износа (резкое ускорение и резкое торможение). Тут казалось бы можно применить инструкцию CNT для сглаживания, однако на момент записи видео проблема с CNT уже была, а решения ещё не было.
2. Можно передать роботу сразу инструкцию по рисованию дуги. Однако в этом случае робот очень часто выбрасывал ошибку, что не может выдержать заданную ориентацию инструмента. Робот не знает, что вращение его инструмента по оси Z не приводит изменению его (инструмента) ориентации, т.е. пришлось бы для каждой точки точки ещё явно высчитывать такую ориентацию маркера, при которой робот бы смог в прийти в требуемую. Это возможно и даже очень интересно реализовать, но не было столько времени на демонстрационный пример.

За идею со StickFont и G-код спасибо, возьму на вооружение.
Я думаю, что такой принцип программирования (по точкам) у многих промышленных роботов, по крайней мере ещё у Kuka и ряда китайских производителей точно, если вообще не у всех.
Подробно рассказать, что внутри у робота не могу, т.к. банально не знаю. Fanuc раскрывает информацию преимущественно только на платных фирменных курсах, причем курсы программирования отдельно, электроники отдельно, механики отдельно и т.д. Могу рассказать лишь о том, с чем сталкивался сам: ОСРВ в контроллере у них какая-то своя, а в пульте Windows CE.

Я уверен, что практически все популярные интерфейсы должны поддерживаться, modbus есть точно (робот из примера в статье общался с внешним контроллером именно по нему).

Функциональные модули тоже есть, модуль перекладчика вроде бы является базовым, есть модуль сварщика, причем под сварку выделена отдельная серия роботов Arc Mate. Удалось пощупать одного такого при интеграции его с RCML в задачах «3д-печати» металлом.
Как указывалось в статье вакансия уже не актуальна. Это видео лишь для демонстрации.
RCML имеет Си-подобный синтаксис, поэтому в качестве среды разработки можно использовать любую IDE, умеющую работать с данным языком. Дебаггер тоже есть, однако очень простецкий написанный на коленке :) пока для внутреннего пользования. Для паблика, готовим более функциональный и удобный.
RCML (англ. Robot Control Meta Language, произносится [ар-си-эм-эль] — компилируемый статически типизированный язык программирования высокого уровня. Разработан для получения одинакового результата независимо от исполнения робота. Позволяет создавать условия для совместной работы нескольких роботов. Используется для описания действий робота или группы роботов. Включает ряд визуальных аспектов представления кода относительно классов и объектов из языков программирования, реализующих парадигму объектно-ориентированного программирования.

Более подробная информация о целях и возможностях языка находиться на официальном сайте http://robotct.ru

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность