воскресенье, 23 декабря 2012 г.

Баг Qt 5

Ура! Долгожданная новость! Вышел Qt 5!
Как только я узнал об этом событии, сразу же скачал установочник и...
Попытка собрать стандартный проект завершилась неудачей с следующим недвусмысленным сообщением:


"cl" ­Ґ пў«пҐвбп ў­гв७­Ґ© Ё«Ё ў­Ґи­Ґ©
Є®¬ ­¤®©, ЁбЇ®«­пҐ¬®© Їа®Ја ¬¬®© Ё«Ё Ї ЄҐв­л¬ д ©«®¬.
jom: C:\Projects\cameratest-build-Desktop_Qt_5_0_0_MSVC2010_32bit_SDK-_______\Makefile.Debug [debug\widget.obj] Error 1"

Qt что-то требовал от меня, однако, какие могут быть ошибки в стандартном проекте?

Не знаю, в чем причина такого поведения, но в интернете было найдено решение.
В консоле необходимо запустить следующий батник:
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat

Затем из этой же консоли запускаем Qt Creator. У меня:
C:\root\dvlp\QTVS5\Tools\QtCreator\bin\qtcreator.exe

Запускаем проект и всё собирается! =)

понедельник, 26 ноября 2012 г.

Красота-то какая!

Решил погуглить сегодня про WebGL.
И второй ссылкой в запросе оказался этот сайт - Chrome Experiments



Если у вас Гугл Хром или иной браузер, поддерживающий WebGL - перейдите по ссылкам, например, по этим:
Огромный глаз
Визуализация музыки
Обработка видео с вебки
Солнечная система
Звезды

среда, 7 ноября 2012 г.

Дизассемблер .Net

Оказывается с помощью стандартных средств Visual Studio можно дизассемблировать PE-файлы(exe,dll,mod,mdl) скомпилированные .Net компилятором. Для этого нам понадобится утилита ildasm.exe. 
У меня она находится в папке  C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin
Выбираем файл и смотрим=)


вторник, 23 октября 2012 г.

О проекте "Mobilebot"

Сделали небольшую презентацию нашего робота для конкурса. В которой вкратце описывается для чего всё это нужно и как будет работать.

вторник, 25 сентября 2012 г.

Простой способ работы с I2C в STM32

Оказывается многие сложные вещи можно сделать значительно проще.
Недавно пришлось работать вот с чем - необходимо реализовать обработку данных с платы Pololu MinIMU-9, включающей в себя акселерометр-магнитометр LSM303DLM и гироскоп L3G4200D. Как оказалось, для обмена данными есть только один путь - протокол I2C. 

Как и полагается, к плате есть документация. Однако, в данном устройстве разделены его составные части -  отдельно гироскоп и отдельно акселерометр-магнитометр. Поэтому, в документации были представлены ссылки на мануалы к каждой из частей. И самое главное - в комплекте были ссылки на исходные коды и даже скриншот работающей десктопной программы, которая принимала значения с платы и прорисовывала текущие углы наклона, азимут и проч.
Однако после скачивания директорий с github меня ждало разочарование. Рабочая программа из двух частей - одна на десктопе, получает данные по com-порту, всё визуализирует. Другая часть - работа с собственно платой, все математические расчеты, но... для Arduino.
И самая главная загвоздка - все операции с протоколом I2C в этих сырцах сводились к красочным и высокоуровневым:
Wired.Begin()
Wired.Read()
и так далее...

В первоначальную задачу ставилось хотя бы что-то прочитать с платы. Однако все запросы в гугле ("stm32 i2c" и проч.) сводились либо к описаниям работы протокола, либо к огромному  объёма кода. 
В конце концов, было найдено вот что:
AN2824
Application note
STM32F10xxx I2C optimized examples
ну и соответствующий этому архив с проектом для Keil`а.

Открываем проект, настраиваем как нам необходимо. Вот нужные функции - 
NVIC_Configuration();
I2C_LowLevel_Init(I2C1);
 - вызываем для инициализации (в данном случае I2C 1).
I2C_Master_BufferWrite(I2C1, Buffer_Tx1,1,Interrupt, _ADDRESS); 
I2C_Master_BufferRead(I2C1,Buffer_Rx1,1,Polling, _ADDRESS);
- соответственно функции записи и чтения. 
Параметры:
  1. Выбираем I2C1 или I2C2 - в зависимости от того, куда подключили устройство
  2. Буфер - массив unsigned char  (откуда читаем или куда записываем).
  3. Число байт для чтения или записи
  4. Тип работы - Interrupt, Polling или DMA.
  5. Адрес устройства
Естественно, функции чтения\записи используются, если STM32 работает в режиме Master.
В случае успешного обмена данными эти функции возвращают Success, в противном - Error.

Ну вот, собственно, и всё =)


воскресенье, 16 сентября 2012 г.

Mobilebot побывал на СелиАсе

Недавно привезли робота на форум "СелиАс-2012". На одной из аллей лагеря "Чудотворы" , где форум проходил, он бодро катался, встречая участников и гостей фразами "Здравствуйте всем", "Вперед, роботы!", "Мы уже среди вас"=)
Впервые продемонстрировали остановку по датчикам и автономное движение.




понедельник, 23 июля 2012 г.

Mobilebot в действии!

Решили мы снять пару видео.
На первом демонстрируется голосовое управление - робот здоровается, проезжает вперед, поворачивает и включает музыку. Движение пока что - по таймеру (можно и без него, но тогда придется останавливать=)) - говорим куда и на сколько секунды. Через заданное время робот остановится для ввода следующей команды.

На втором - управление по датчикам.
Идея такова - держим руки на заданном расстоянии от датчиков - робот не движется. Приближаем - едет назад. Отдаляем или выходим из зоны видимости - едет вперед. Так отдельно для каждого колеса.