Программируем управление манипулятором робота ARM Mini (видео). Часть 4 KosachenkoSV's blog / 03.06.2012 Итак, мы собрали механическую часть манипулятора ARM Mini, успешно заменили неисправный «родной» контроллер на Freeduino 2009 и даже спаяли на основе ProtoShield плату для удобного подключения шести серводвигателей манипулятора к Freeduino. Теперь переходим к логике, точнее, к программной части. Их у нас будет две: первая часть - «прошивка» для Freeduino должна будет через серийный порт получать данные для управления серводвигателями и, получив их, управлять поворотами серводвигателями, вторая часть — для персонального компьютера должна получать команды от человека (оператора манипулятором) и передавать их через серийный порт Freeduino в «понятном» виде, опционно получать от Freeduino «текущие» значения поворотов всех серводвигателей. Вторую программную часть мы с ребятами первоначально даже не задумывали, т. к. Freeduino вполне обладает ресурсами для управления манипулятором и у него еще остается много незадействованных портов, к которым вполне возможно присоединить органы управления (кнопки, джойстики, ту же PS/2 мышку и т. д.). Однако, мои ребята еще не так сильны в микроэлектронике, поэтому такой проект я им «заготовил» на будущее, а пока предложил написать программу для управления манипулятором ARM Mini человеком-оператором «вручную» в реальном режиме времени. Схема общей системы управления должна выглядеть так: Код прошивки для Freeduino переписали таким образом, чтобы повороты теперь стали более медленными и плавными — это по моему мнению должно увеличить срок службы капроновых шестеренок в серводвигателях. Добавили прием данных через серийный порт и отправку по серийному порту текущих значений углов серводвигателей ARM Mini. Для программирования кода, который будет работать на стороне персонального компьютера, выбрали язык программирования Processing. Причин для нашего выбора есть несколько: Он кроссплатформенный, т. е. код, написанный на нем, будет работать в разных операционных системах: и в Windows, и в Linux, и в MacOS. Он использовался для создания среды программирования IDE Arduino, поэтому интерфейс у него для нас будет привычным. Он бесплатный и свободно распространяется, поэтому в Сети имеется множество примеров и многочисленное сообщество пользователей. Десятиклассник, тяготеющий к языкам программирования, изучив примеры, набросал основу элементов будущего интерфейса — окно с шестью полосами прокрутки. Для информативности вывели текстовые показания переданных во Freeduino углов серводвигателей в градусах, и в нижней строке выводим показания углов, полученные от Freeduino. Для обмена ПКFreeduino используем эмуляцию серийного порта (эта возможность встроена аппаратно во Freeduino), а физически подключение осуществляется USB-кабелем. Программа при старте будет опрашивать все имеющиеся серийные порты и с первым найденным начнет работу. Конечно, этот подход не сработает, если будут несколько ардуин подключено к ПК, но если только одна, то этот подход гарантировано сработает и в Windows, и в Linux, несмотря на разные обозначения серийных портов в этих системах. Придумали простейший протокол для передачи данных, т.к. управлять на экране компьютера мышкой оператор может только одним серводвигателем и угол максимального поворота у серводвигателей в нашем манипуляторе 180 градусов, то решили пересылать команду для поворота серводвигателя (для которого оператор изменил угол) двумя байтами таким образом: первый байт — 200+№ серводвигателя, второй байт — угол поворота (от 0 до 180).Если Freeduino получает число, больше 200 - она вычисляет номер серводвигателя (вычитая 200) и ждет следующее число, чтобы повернуть серводвигатель на заданный градус.Полный архив с прошивкой для Arduino и программой управления ARM Mini на Processing ARM_Mini_Arduino_Processing.zip ( 19.73 килобайт ) Кол-во скачиваний: 383 Теперь при соединении всех компонентов и запуске программ, можно мышкой на компьютере вручную управлять движениями манипулятора ARM Mini посредством Freeduino 2009.Что в перспективе? Хотелось бы, чтобы ребята научились управлять манипулятором ARM Mini через контроллер Freeduino, исключив компьютер, чтобы научились рассчитывать координаты и траектории движения захвата в пространстве по углам серводвигателей, чтобы научились сопрягать манипулятор ARM Mini с другими компонентами будущих роботов, например, с контроллером LEGO Mindstorms NXT 2.0 по протоколу I2C... Мне и самому все это интересно освоить .PS: В Томском государственном педагогическом университете 2 июня 2012 состоялась практическая конференция по образовательной робототехнике, главными гостями на которой были школьники, увлекающиеся робототехникой (преимущественно на основе LEGO в силу сложившихся традиций). Мне представилась возможность провести мастер-класс с практической демонстрации перед ними нашего манипулятора и рассказом о контроллере Freeduino. Я умышленно попросил помочь мне с демонстрацией знакомого семиклассника, а именно: предложил, управляя мышкой на ноутбуке под управлением Linux Ubuntu в написанной нами программе управления роботом, выполнить довольно непростую операцию по перекладыванию шарика от пинг-понга со стола в контейнер. Он с управлением освоился довольно быстро и хоть не сразу, но успешно справился! А потом "порулить" подходили другие ребята, и даже девочка лет пяти-шести поуправляла этим роботом, успешно переложив манипулятором шарик в контейнер.Ссылки по теме:Мышка, Freeduino и рука робота (ARM-манипулятор)«Оживляем» руку-манипулятор для робота с Arduino/Freeduino. Часть 2. Делаем Shield для ARM Mini и Freeduino. Часть 3. ARM Processing arduino freeduino servo комплект микроэлектроника робототехника