методы сервоприводного или шагового синхронизированного многоосевого управления [закрыто]

Я разработал 6-осевой робот. Основное требование к роботу заключается в том, что все оси должны быть высоко синхронизированы, чтобы создавать точные (субмиллиметровые, субградусные) 6DOF (x, y, z, рыскание, тангаж, крен) траектории в пространстве. Я реализовал этого робота, используя:

Аппаратное обеспечение: контроллер NI PCI-7358, усилители NI MID-7604, степперы

Программное обеспечение: NI Labview

Однако я хотел бы перейти от продукции NI к чему-то более компактному, чтобы не таскать компьютерную тележку. Один пример, который я нашел на github, — это робот, создатель которого использовал следующее:

Аппаратное обеспечение: Arduino, шаговые приводы A4988, степперы

Программное обеспечение: питон

Однако с такой настройкой я беспокоюсь, что синхронизированное многоосевое управление не будет поддерживаться из-за задержки обработки Arduino. Может ли кто-нибудь порекомендовать, подходит ли решение Arduino, или представить альтернативные решения (пожалуйста, укажите ваше конкретное оборудование и программное обеспечение)?

Если вы хотите увидеть, что Arduino может сделать с точки зрения многоосевой координации, посмотрите на прошивки для 3D-принтеров с открытым исходным кодом. Но если вы начнете с нуля, у вас будет гораздо больше ресурсов для работы над различными частями ARM. Будьте осторожны, чтобы отделить «запаздывание» от скорости процессора и архитектуры программного обеспечения от интерфейсов связи - если вы уже знаете, что хотите сделать, запустите инструкции, поступающие в исполнительный процессор, немного раньше, чем это необходимо. Но если у вас есть что-то, что решает, что делать в режиме реального времени, вам нужно будет уделять больше времени времени, затрачиваемому на принятие решений и командование.
На самом деле, это, кажется, решение, которое я хочу. 7-осевой шаговый контроллер с использованием Raspberry Pi. roboteurs.com/collections/all/products/slushengine-model-d

Ответы (2)

Итак, мой вопрос: может ли кто-нибудь порекомендовать хорошее оборудование/методы для этого?

Да, возьмите все свои блоки в labview и найдите или напишите фрагменты кода, которые воспроизводят функции блоков. Вы даже можете написать код C в labview и создать собственные блоки , чтобы вы могли тестировать каждый блок по одному и заменять их своими собственными.

Или есть генератор кода C для labview (который я никогда не использовал и, вероятно, стоит больше денег и, вероятно, не очень хорошо конвертирует).

Я бы использовал C, потому что он не интерпретируется и, вероятно, будет лучше работать в реальном времени. Если вы чувствуете необходимость использовать python, я бы сначала написал C, а затем преобразовал его.

Тем не менее, я все равно застрял бы с аппаратным обеспечением NI (PCI-7358), которое, я думаю, ограничивает меня в использовании Labview и всех драйверов и окон NI. Пожалуйста, смотрите мое обновление к вопросу.
Я не отвечаю на вопросы о движущейся цели

Вам понадобится ОС с возможностью работы в реальном времени. Сайт ЧПУ с открытым исходным кодом — LinuxCNC для создания станка с ЧПУ. Разветвленным проектом является Machinekit, который предназначен для создания собственной машины, не связанной со стандартным интерпретатором G-кода.

Если у вас достаточно ресурсов, то лучше всего подойдут диски и ввод-вывод на основе протокола связи Ethercat. Он обеспечивает синхронность, так что все устройства одновременно делают снимок фактических значений, а также одновременно выводятся заданные значения. Кроме того, джиттер прерывания ОС не имеет значения до тех пор, пока новые значения не будут вычисляться в каждом цикле связи, поэтому ОС Linux с вытеснением делает свое дело.

Обратите внимание, что это не проект ЧПУ, а робот. Возможно ли это с компактным компьютером с Linux, таким как Raspberry Pi? Можете ли вы порекомендовать 6-осевой контроллер движения?
Что такое контроллер движения с вашей точки зрения?