6-осевой шарнирный промышленный робот (serial 6R arm) на LinuxCNC genserkins. Геометрия по умолчанию = KUKA KR16 (Craig modified-DH, disk-verified FK 0.00 мм). DH-таблица — параметр, так что генератор переиспользуется для любого 6R-арма. Генерирует .ini + DH-HAL (+ standalone .hal + tools.tbl). Без назначенных приводов — вирт. оси (loopback); назначили серво суставам — рендерится EtherCAT.
Тип станка — это кинематика и то, что конструктор умеет напечатать; числа экземпляра (ход, скорости, пределы) живут в двойнике конкретного станка.
| Кинематика LinuxCNC | genserkins |
| Координаты | X Y Z A B C |
| Оси | X · Y · Z · A · B · C |
| Рабочая зона, мм | 370 × 190 × 284 |
| Макс. подача | 18 000 мм/мин |
| Обороты головы | нет шпинделя |
| Рабочий орган по умолчанию | Захват — Схват (пневматический или сервоприводной): берёт заготовку, переносит, ставит. Датчик зажима подтверждает, что деталь действительно взята. |
| E-STOP · щуп | есть · нет |
| Что печатает конструктор | .ini · .hal · tools.tbl · kuka_kr16.tbl |
Шесть блоков карточки одинаковы у всех пород; поля ниже — те, что читает конструктор этого типа станка (имена из реестра, 30 полей).
cartesian_reach_mm · clamp_max_acceleration_mm_s2 · clamp_max_velocity_mm_s · dh_a · dh_alpha_deg · dh_d · joint_limits_deg · max_joint_acceleration_deg_s2 · max_joint_velocity_deg_s · max_linear_acceleration_mm_s2 · max_linear_velocity_mm_s · servo_period_us
bench_no_gearbox · spindle_max_rpm
axis_drives · bus_identities · io_coupler_slave
has_probe · io_coupler_modules · machine_outputs
cartesian_rot_limit_deg · effector_kind · effector_tcp_offset_mm · end_effector · headless · home_deg · kinematics_boot · machine_name · simulation_mode · var_file
Эталон породы: род motion, заготовка 40 × 30 × 10 мм. Проходит preflight без предупреждений и отправку без замечаний — иначе порода не настроена.
// ПЕРЕНОС БЕЗ ПЕРЕВОРОТА: взять деталь в точке A и положить в B.
// Ни болванки, ни фрезы: у рода `motion` автор называет ПУТЬ.
const a = [900, -300, 300]; // координаты ЯЧЕЙКИ, не детали
const b = [900, 300, 300];
const h = 150; // высота переноса над захватом, мм
orient([180, 0, 0]); // инструмент вниз
phase('подход');
moveTo([a[0], a[1], a[2] + h]);
jaws('open', { onTheMove: true }); // разводим НА ХОДУ
phase('захват');
moveTo(a, { feed: 1500 });
jaws('close'); // сомкнуть на пролёт детали
dwell(0.3); // дать зажиму сработать до подъёма
phase('перенос');
moveTo([a[0], a[1], a[2] + h], { feed: 1500 });
moveTo([b[0], b[1], b[2] + h]);
phase('укладка');
moveTo(b, { feed: 1500 });
jaws('open'); // отпустить
moveTo([b[0], b[1], b[2] + h], { feed: 1500 });
| операция | движок | слот · Ø | параметры |
|---|---|---|---|
| Перекладка A→B | python_motion_path | — | grasp_from gripper_port home_abc home_xyz path_json |
Сверяется с железом: смены инструмента нет. Все примеры типов станков — одной таблицей.
Руководство «Станки» · Все типы станков и кинематики · Как пишется программа этого рода · От программы к станку · Стенд и железо