Здравствуйте ,
Я раньше вел эту тему на форуме bunker.kz
http://i.bunker.kz/i...20
Попробую здесь публиковать свои материалы по программированию поведения вертолета
![Фотография](https://vse.kz/public/style_images/osnovnoi34/profile/default_large.png)
Программирование на квадрокоптере AR.Drone
Автор erbol, 07.03.2013, 17:42
#2
Отправлено 08.03.2013, 09:20:58
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
Компания КРОК организует конкурс летающих роботов для продвижения робототехники и темы беспилотных летающих аппаратов среди подрастающего поколения, молодых специалистов и любителей технических новинок. Главный приз – 1.000.000 рублей.
«Для всех организаторов проект стал настоящим зарядом позитива: столько у нас интересных, азартных и технически одаренных людей… Мы получили свыше 500 заявок, а именно 295 командных заявки и 241 от индивидуальных участников; проект активно обсуждается – и в Интернете, и в офлайне мы получаем массу вопросов. Очень надеюсь на то, что у участников все получится!», – поделился своими впечатлениями Алексей Добровольский, директор по разработке программного обеспечения компании КРОК.
Среди участников работники авиационного КБ, космической компании "Энергия" и пр.
Представление участников с ссылками на их страницы в vk.com
http://www.robots.cr...heroes/team.php
«Для всех организаторов проект стал настоящим зарядом позитива: столько у нас интересных, азартных и технически одаренных людей… Мы получили свыше 500 заявок, а именно 295 командных заявки и 241 от индивидуальных участников; проект активно обсуждается – и в Интернете, и в офлайне мы получаем массу вопросов. Очень надеюсь на то, что у участников все получится!», – поделился своими впечатлениями Алексей Добровольский, директор по разработке программного обеспечения компании КРОК.
Среди участников работники авиационного КБ, космической компании "Энергия" и пр.
Представление участников с ссылками на их страницы в vk.com
http://www.robots.cr...heroes/team.php
Сообщение отредактировал erbol: 08.03.2013, 09:21:26
#4
Отправлено 08.03.2013, 09:26:25
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
Для ориентации в пространстве и выборе маршрута движения летающего робота большое значение имеет компьютерное зрение.
Как извлечь нужную информацию из картинки которую мы получаем из видео которое получаем с камеры установленной на роботе ?
Такого рода вопросы будут решаться в этой теме.
Как извлечь нужную информацию из картинки которую мы получаем из видео которое получаем с камеры установленной на роботе ?
Такого рода вопросы будут решаться в этой теме.
#6
Отправлено 08.03.2013, 14:19:01
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
Вот собственно код для выделения зоны посадки из рисунка
Получаем такой рисунок для таблицы градиентов
import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; public class Cross { // В методе main создаем имидж картинки в формате GRAY // (градации серого) public static void main(String[] args) throws Exception { // Читаем цветной файл с диска и // помещаем его в экземпляр объекта BufferedImage BufferedImage image = ImageIO.read(new File("C://temp/example/image9.bmp")); int height = image.getHeight(); int width = image.getWidth(); BufferedImage imageJava = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_GRAY); // Копируем содержимое цветного буфера в буфер с "градациями серого" Graphics g = imageJava.getGraphics(); g.drawImage(image, 0, 0, null); g.dispose(); // Используем метод gauss_canny1() для обработки изображения // фильтром Гаусса, результат помещаем в матрицу b sobel_cross(imageJava); /* // Помещаем содержимое матрицы b в буфер im3 и сохраняем его // на диск for (int x = 0; x < height-4; x++) { for (int y = 0; y < width-4; y++) { int gray=255-b[x][y]; im3.setRGB(y, x, gray << 16 | gray << 8 | gray); }} ImageIO.write(im3, "bmp", new File("C://temp/example/sobel_cross.bmp")); */ } public static void sobel_cross(BufferedImage imageJava) throws Exception{ int height = imageJava.getHeight(); int width = imageJava.getWidth(); int[] lineData = new int[width * height]; // таблица пикселов рисунка int[][] a = new int[height][width]; // таблица градиентов рисунка int[][] b = new int[height-2][width-2]; // Помещаем содержимое буфера im2 (в градациях серого) // в список LineData imageJava.getRaster().getPixels(0, 0, width, height, lineData); // Помещаем содержимое списка в матрицу а int k = 0; for (int y=0; y < height; y++){ for (int x=0; x < width; x++){ a[y][x]=lineData[k]; k++; }} for (int m=1; m < height-1; m++){ for (int n=1; n < width-1; n++){ // Вычисляем проекции градиента на оси X и Y int Gx = a[m-1][n-1] + 2*a[m][n-1] + a[m+1][n-1] - (a[m-1][n+1]+2*a[m][n+1]+a[m+1][n+1]); int Gy = -(a[m-1][n-1] + 2*a[m-1][n] + a[m-1][n+1]) + a[m+1][n-1]+2*a[m+1][n]+a[m+1][n+1]; // Значение градиента помещаем в матрицу d b[m-1][n-1] = (int) Math.sqrt(Gx*Gx + Gy*Gy)/4; }} // Фильтр "Двойной порог" int max=0; int min=255; for (int m=0; m < height-2; m++){ for (int n=0; n < width-2; n++){ //if (d[m][n]>val1) d[m][n]=255; if (b[m][n]!=0) { if (b[m][n]>max) max = b[m][n]; // 255 это черный цвет, 0 - это белый if (b[m][n]<min) min = b[m][n]; // 0 это белый цвет } }} // Оставляем только элементы, которые меньше максимума не больше // чем на треть разности между максимальным и минимальным градиентами int r = max - min; int r1 = max - r/3; int r2 = max - r/2; System.out.println("max: " + max); System.out.println("r1: " + r1); for (int m=0; m < height-2; m++){ for (int n=0; n < width-2; n++){ //if (d[m][n]>val1) d[m][n]=255; if (b[m][n]!=0) { //if (b[m][n]>r1) b[m][n] = 255; // 255 это черный цвет, 0 - это белый // Убираем с рисунка очень светлые пикселы // то есть делаем их белыми // Главный вопрос состоит в том чтобы выбрать минимальное // пороговое значеие чтобы все точки контура посадки не // были стерты // Где то от нуля до 180 это значение находится if (b[m][n]<=180) b[m][n] = 0; // 0 это белый цвет } }} int p = 0; int s = 0; int z = 0; for (int m=0; m < height-2; m++){ for (int n=0; n < width-2; n++){ if (b[m][n]!=0) { s = s + b[m][n]; p = p + 1; } }} if (p>0) z = s/p; System.out.println("z: " + z); BufferedImage imageGrad = new BufferedImage(width-2, height-2, BufferedImage.TYPE_BYTE_GRAY); for (int x = 0; x < height-2; x++) { for (int y = 0; y < width-2; y++) { int gray=255-b[x][y]; imageGrad.setRGB(y, x, gray << 16 | gray << 8 | gray); }} ImageIO.write(imageGrad, "bmp", new File("C://temp/example/cross_drad.bmp")); } }
Получаем такой рисунок для таблицы градиентов
![Изображение](http://e.bunker.kz/uploads/1360734462/gallery_13_4_1178.png)
#8
Отправлено 09.03.2013, 19:02:20
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
Как я устанавливал URBI
Чтобы этот пакет работал надо установить Microsoft Visual C++ 2008
Пошел по ссылке http://www.microsoft...ails.aspx?id=29 и скачал распостраняемый пакет vcredist_x86.exe
Потом скачал сам пакет по ссылке http://www.gostai.co...d/urbi_2_7_bin/
Urbi — кросс-платформенная открытая программная платформа на C++, используемая для разработки приложений для робототехники и сложных систем.
http://robocraft.ru/...orithm/288.html
Чтобы этот пакет работал надо установить Microsoft Visual C++ 2008
Пошел по ссылке http://www.microsoft...ails.aspx?id=29 и скачал распостраняемый пакет vcredist_x86.exe
Потом скачал сам пакет по ссылке http://www.gostai.co...d/urbi_2_7_bin/
Urbi — кросс-платформенная открытая программная платформа на C++, используемая для разработки приложений для робототехники и сложных систем.
http://robocraft.ru/...orithm/288.html
#9
Отправлено 10.03.2013, 16:37:53
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
Подумываю насчет ардрона второго, если не возражаете задам пару вопросов. Насколько большой вес он поднимает? Насколько велик шанс сломать что-то? Ибо 300 баксов + доставка не так уж и много, а если брать сразу repair kit + двигатли+доп. винты на случай поломки - уже начинает жаба душить.
Код который вы привели - я так понимаю, он запускается на PC, писать код для прошивки в бортовой комп возможно? Или он исполняется на бортовом компе ардрона? Просто меня смутил импорт awt, неужели там полноценная jvm стоит со всеми либами?
Код который вы привели - я так понимаю, он запускается на PC, писать код для прошивки в бортовой комп возможно? Или он исполняется на бортовом компе ардрона? Просто меня смутил импорт awt, неужели там полноценная jvm стоит со всеми либами?
#10
Отправлено 11.03.2013, 09:23:40
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
Сегодня мы используя роботов часто встречаем решения в которых используются интегрированные системы для управления роботами.
Эти системы включают в себя драйверы для обмена информацией с роботами, драйверы для подключения различных сенсоров и манипуляторов, пакеты для обработки информации, типа систем компьютерного зрения, распознавания речи и так далее
В общем предоставляют множество очень необходимых для разработки конкретных задач управления услуг
Эти системы включают в себя драйверы для обмена информацией с роботами, драйверы для подключения различных сенсоров и манипуляторов, пакеты для обработки информации, типа систем компьютерного зрения, распознавания речи и так далее
В общем предоставляют множество очень необходимых для разработки конкретных задач управления услуг
#11
Отправлено 11.03.2013, 09:31:25
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
Зул,
Да , на ПК код работает. На drone виртуальной машины java нет. Операционная система linux.
Насчет веса поднимаемого точно ответить не смогу, не экспериментировал. На rcdesign.ru есть большая компания которая летает на drone, можно у них спросить. А вообще вещь надежная. Я уже давно летаю по квартире, пока все работает штатно
Да , на ПК код работает. На drone виртуальной машины java нет. Операционная система linux.
Насчет веса поднимаемого точно ответить не смогу, не экспериментировал. На rcdesign.ru есть большая компания которая летает на drone, можно у них спросить. А вообще вещь надежная. Я уже давно летаю по квартире, пока все работает штатно
#12
Отправлено 11.03.2013, 09:33:22
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
Проблемы были с загрузкой программы Visual Studio
Поэтому загрузил образ инсталляционного диска с сайта
http://freewareupdat...xpress-editions
И при запуске инсталляции выбрал в меню Visual C++
Это относительно установки URBI на ноутбук
Поэтому загрузил образ инсталляционного диска с сайта
http://freewareupdat...xpress-editions
И при запуске инсталляции выбрал в меню Visual C++
Это относительно установки URBI на ноутбук
Сообщение отредактировал erbol: 11.03.2013, 09:34:16
#13
Отправлено 11.03.2013, 12:49:22
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
Полезные ссылки для тех кто использует URBI
Gostai Studio 2.7 for Windows and Linux
http://www.gostai.co...iew/9vrwXQKtwA/
Gostai Lab 2.7.4 for Windows and Linux with Trial License (коммерческий продукт)
http://www.gostai.co...iew/nwpMDLDema/
Gostai Studio 2.7 for Windows and Linux
http://www.gostai.co...iew/9vrwXQKtwA/
Gostai Lab 2.7.4 for Windows and Linux with Trial License (коммерческий продукт)
http://www.gostai.co...iew/nwpMDLDema/
#14
Отправлено 11.03.2013, 13:30:08
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
Архитектура URBI
робот <-> UObject <-> сервер URBI <-> urbiScript
Итак, задача понятна:
— разобраться с написанием UObject и его подключением к серверу URBI
— разобраться с urbiScript
http://robocraft.ru/...orithm/290.html
робот <-> UObject <-> сервер URBI <-> urbiScript
Итак, задача понятна:
— разобраться с написанием UObject и его подключением к серверу URBI
— разобраться с urbiScript
http://robocraft.ru/...orithm/290.html
#16
Отправлено 12.03.2013, 14:17:08
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
#17
Отправлено 12.03.2013, 17:51:37
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
По умолчанию программа Urbi устанавливается в папку С:\Program Files\Gostai Engine Runtime\
Для запуска и общения с сервером надо ввести с консоли команду
urbi.exe -i
Сама программа urbi.exe находится в папке С:\Program Files\Gostai Engine Runtime\bin
Например, если ввести инструкцию - "2+5;" сервер выдаст ответ
[00002332] 7
http://robocraft.ru/...orithm/290.html
Для запуска и общения с сервером надо ввести с консоли команду
urbi.exe -i
Сама программа urbi.exe находится в папке С:\Program Files\Gostai Engine Runtime\bin
Например, если ввести инструкцию - "2+5;" сервер выдаст ответ
[00002332] 7
http://robocraft.ru/...orithm/290.html
#18
Отправлено 12.03.2013, 18:01:46
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
Для того чтобы выполнить на сервере программу на языке UrbiScript можно воспользоваться программой UrbiConsole
При установке urbi SDK 2.1 по запросу устанавливается urbiConsole в папку С:\Program Files\Gostai urbiConsole 2.1\
Например, создадим файл
test.u
со следующим содержанием:
var i=0;
while(i<=3)
{
echo(i);
i++;
};
Запускаем консоль и выбираем этот файл через меню
Console — Send urbiScript file…
http://robocraft.ru/...orithm/290.html
При установке urbi SDK 2.1 по запросу устанавливается urbiConsole в папку С:\Program Files\Gostai urbiConsole 2.1\
Например, создадим файл
test.u
со следующим содержанием:
var i=0;
while(i<=3)
{
echo(i);
i++;
};
Запускаем консоль и выбираем этот файл через меню
Console — Send urbiScript file…
http://robocraft.ru/...orithm/290.html
Сообщение отредактировал erbol: 12.03.2013, 18:22:03
#19
Отправлено 14.03.2013, 15:57:09
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
Зачем программисту URBI ?
Есть же универсальные языки на которых можно написать все что хочется. Оказывается ради удобства
Urbi представляет робота как абстракцию функций управления и сенсров
То есть для него робот это совокупность рычагов и кнопок. Типа повернуть вправо, увеличит/уменьшить скорость и так далее
Точно также и информация полученная от сенсоров робота обрабатывается библиотеками соответствующими и попадает к нам в уже структурированном виде
Например видео с камеры робота обработанное графическими библиотеками выделяет на картинке нужный объект и сообщает уже только заданные параметры этого объекта
Есть же универсальные языки на которых можно написать все что хочется. Оказывается ради удобства
Urbi представляет робота как абстракцию функций управления и сенсров
То есть для него робот это совокупность рычагов и кнопок. Типа повернуть вправо, увеличит/уменьшить скорость и так далее
Точно также и информация полученная от сенсоров робота обрабатывается библиотеками соответствующими и попадает к нам в уже структурированном виде
Например видео с камеры робота обработанное графическими библиотеками выделяет на картинке нужный объект и сообщает уже только заданные параметры этого объекта
#20
Отправлено 15.03.2013, 02:07:45
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
Голосовое управление квадрокоптером ArDrone 2.0 через ROS. Часть 1
http://robocraft.ru/blog/2882.html
Всего 4 статьи на эту тему опубликовано на этом сайте
http://robocraft.ru/blog/2882.html
Всего 4 статьи на эту тему опубликовано на этом сайте
Количество пользователей, читающих эту тему: 1
пользователей: 0, неизвестных прохожих: 1, скрытых пользователей: 0