РЕКЛАМА НА ФОРУМХАУС Пришли ко мне модули камеры для Arduino OV7670 [0.3mpx] и модули камеры OV3640 [3Mpx]. Буду их к FPGA прикручивать. Попробую моно а позже и стерео модуль сделать. На выходе предполагаю разные интерфейсы. FPGA модуль будет заниматься потоковым видео, а впоследствии и более интеллектуальной обработкой видеоинформации в реалтайме.
Видел на Али камеру уже заточенной на openCV. Денег конечно стоит, но упрощает работу с компьютерном зрением в разы.
Вот только сейчас удалось в терминале через UART получить взаимодействие с интерпретатором Форта в процессоре J1. Что-то я сильно устал от бодания с фортовским кодом. Все прошедшее время - более двух месяцев, боролся с ошибками и моим непониманием прототипа. Нужно еще много чего поправить, но что-то уже дышит и живет. Пока имеются вот такие слова: init quit blink. s does> evaluate refill accept char ' postpone literal abort chars char+ r@ r> >r depth io@ @ nip over drop dup swap u< < = invert or and xor + hex decimal unloop j i +loop loop? do leave do recurse does> until again then begin if ahead; exit: noname: [ ] immediate sliteral s, compile, c, allot parse parse-name \ source 2! 2@ cmove> cmove fill >number sfind align um/mod m* *um* d2* d0= m+ s>d dabs dnegate d+ aligned /string here abs words forth tth >in state base type bounds count c! c@ max min 2over 2swap +! 2dup ?dup 2drop tuck -rot rot true false execute. x. x2 bl cr space emit key key? leds io! ! u> 0> 0< > 0<> <> cells cell+ 0= 1- 2/ 2* - negate 1+ Форт - это некий гибрид языка высокого уровня и ассемблера. Процессор J1, который я реализовал в FPGA Max10 фирмы Altera, аппаратно исполняет часть операторов этого языка. И вдобавок в нем встроен интерпретатор для диалога с пользователем. Поэтому не требуется никакой операционой системы. С этим процессором я теперь могу двигаться дальше и реализовать захват видео с камерного модуля и вывод контрольного изображения на HDMI монитор. И все это силами всего одной микросхемы. Таких процессоров в этой FPGA можно разместить несколько.
Все последние три месяца я продолжал работать над моим автономным роботом. Полностью отладил работу FPGA с камерой OV7670. Пришлось переписать драйвер из Linux на Forth. Очень потрепала нервы отладка всяких временных диаграмм. Несколько дней назад я взялся за 3G модем SIM5360E. У меня имеется отладочная плата SIM5360E-EVM. Кроме беспроводного интернета с ее помощью можно получить GPS/ГЛОНАСС навигацию. Начал стыковать этот модуль с моим FPGA проектом.
@Patison, @Patison, очень всё здорово, нескромный вопрос, что за синтезатор речи такой хороший? Раньше программы для чтения книг ужасно читали, невозможно было слушать на трезвую голову)
Синтезатор довольно древний - Alyona: https://www.acapela-group.com Прямо на этой страничке вставляю текст и записываю полученные короткие фрагменты речи, которые потом монтирую в видео.
Алена - хороший синтезатор. И совсем не старый. Жалко, украинский она не знает, приходится извращаться. У них есть специальный сайт - acapela-box.com, на котором каждый может легко синтезировать и скачивать нужные фразы на нужном языке и нужном формате и качестве. У нас для коммерческой разработки я купил тысячу букв за 5€ и поозвучивал нужные мне фразы. Скачанные ролики в PCM формате я записал на SD карту, с которой их читает обычный STM32 и с помощью PWM модуляции и усилителя выдает эти куски речи на 1-ваттный динамик на плате. Получилось очень неплохое качество звука и достаточно просто.
1 сентября я полностью завершил разработку и испытания программно-аппаратного стенда, в котором изображение с камеры поступает в FPGA, а оттуда в 3G модем, из которого по UDP протоколу через интернет пересылается на сервер где-то в Голландии. На этом сервере работает моя эхо-программа, посылающая назад все поступившие к ней UDP пакеты. Этот же имеющийся у меня 3G модем принимает пакеты, передает их обратно в FPGA. В свою очередь внутри FPGA все пришедшие из интернета UDP пакеты преобразуются в видеоданные и направляются через HDMI порт на монитор, на котором я наблюдаю с некоторой задержкой то, что поступает в камеру. Испытания показали вполне предсказуемые результаты: 1. Видеоданные нужно очень и очень хорошо сжимать перед пересылкой через интернет-канал. 2. Суммарные задержки транспортировки видеосигнала могут достигать критических зачений, не позволяющих сделать комфортную систему телеприсутствия наподобие той, макет которой я приводил выше на видео в данной теме. Однако в качестве беспроводного средства общения с помощью высокоуровневых команд с автономным роботом разработанная система очень даже годится.
Сейчас только ленивый не занимается беспилотными автомобилями. То, чем я занимаюсь сейчас, можно отнести к этому же роду занятий. Если удастся создать автономного передвигающегося робота, то впоследствии, установив на него манипуляторы, можно получить робокентавра и продолжить работы с манипулятором. Про двуногих роботов можно на время забыть, т. к. это очень непростая задача - сделать в домашних условиях робота, обладающего способностью ходить как человек, а не как механическая кукла. Да это мне пока и не требуется. Разработкой автономного транспортного средства (АТС) я занялся в начале сентября. Первой задачей я для себя поставил создание простейшего экспериментального движущегося робота для разработки его "мозгов". Поэтому на внешний облик, механическую составляющую проекта на данном этапе буду обращать мало внимания. В качестве основы я взял гусеничное шасси от игрушки - вездехода, который валялся без дела у меня около 20 лет: Отдельно я сначала на большом компьютере, а затем и на микрокомпьютере Raspberry Pi3 установил операционную систему для роботов ROS. Сложным оказался процесс установки требуемых программных пакетов в Raspberry. В настоящее время у меня заработала распределенная система, состоящая из 3D сканера пространства Kinect XBox360, микрокомпьютера Raspberry Pi3 с ROS и стационарного компьютера, на который также установлен ROS. Компьютеры объединены по локальной сети в единое целое и позволяют запускать под ROS систему навигации RTABMap. В 3D окне на экране большого компьютера теперь видно, как, вращая и перемещая Kinect, который подключен к Raspberry Pi3, строится объемная карта всего того, что видит Kinect, а также видна траектория движения самого Kinect в этом пространстве. Теперь нужно к Raspberry Pi подключить другие сенсоры, а также двигатели гусеничного шасси. И только после этого можно будет все соединять воедино на мобильной платформе.
Ленивый говорите (чтобы таким заниматься надо мозгов, ну время конечно тоже. У меня вот хоть и Политех, но черепушка всё равно в этом не сильно варит. Спасибо, вам за ответ, действительно интересно.
dima228 Я же не каждый день получаю значимые результаты. Основное время уходит на рутину. Сейчас, например, соединяю Raspberry PI 3 c Arduino, а ее, в свою очередь, с драйвером двигателей. И все бы ничего, если бы разработчики новой версии компьютера Raspberry не подключили к аппаратному UART контроллер BlueTooth. И теперь приходится изворачиваться, выкорчевывая программно UART. Такой всякой рутинной работы 99% и вряд ли кому-то интересно ее описание. Вот дойду до более интеллектуальных функций, напишу.