powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / AR.Drone квадрокоптер. Программирование на java и С
25 сообщений из 92, страница 3 из 4
AR.Drone квадрокоптер. Программирование на java и С
    #38071043
erbolg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разобрался как можно понизить прошивку drone с помощью программы DroneControl HD 2.1

1. Устанавливаем соединение с internet
2. Входим в программу
3. Выбираем Tools Firmware
4. Выбираем Firmwate Manager
5. Выбираем Downloader
6. Затем выбираем нужную прошивку для AR.Drone 2

Затем подключаемся к сети AR.Drone и устанавливаем нужную прошивку
...
Рейтинг: 0 / 0
AR.Drone квадрокоптер. Программирование на java и С
    #38096477
erbolg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда мне надоедает разбираться с проблемами в программировании drone я читаю тему про multiwii

http://forum.rcdesign.ru/f123/thread221574.html

Вот это настоящая мутота и сильно вдохновляюсь
...
Рейтинг: 0 / 0
AR.Drone квадрокоптер. Программирование на java и С
    #38101343
erbolg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема управляемости drone

Направление вертолет берет у датчиков - гироскопа, магнитометра и акселерометра

Нуль у датчиков плывет в определенных пределах, то есть если вчера это был нуль, то сегодня это может быть плюс/минус 10 градусов. Кроме того что нуль плывет этот нуль еще и смещен относительно настоящего нуля
...
Рейтинг: 0 / 0
AR.Drone квадрокоптер. Программирование на java и С
    #38110446
erbolg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пусть нам надо передать видео по сети (с вертолета на ipad). Чтобы видео не "тормозило" надо "сжать" его

Пусть надо передать квадрат пикселов 2*2. Каждый пиксел имеет три цветовые координаты R,G,B. Информацию необходимую для передачи цвета 4 пикселов можно представить в виде трех массивов

R1, R2, R3, R4

G1...G4

B1...B4

Пусть каждое значение имеет размер один байт, т.е.для передачи информации о цвете пикселов нужно 12 байтов

Более экономно передавать цветовую информацию с помощью цветового пространства YCrCb

Структура дискретизации описывается соотношением x:a:b

где x - частота дискретизации яркостного канала, a - число выборок каналов Cr, Cb в вертикальном направлении в первой строке, b - то же самое во второй строке

Если используется схема 4:2:0 , то для кодирования пикселов нужно 6 байт

Экономия в 2 раза
...
Рейтинг: 0 / 0
AR.Drone квадрокоптер. Программирование на java и С
    #38111428
erbolg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С помощью цветового пространства можно уменьшить количество байтов необходимых для кодирования цвета пиксела.

Кроме того если формально подойти к передаваемой информации то можно заметить, что некоторые символы в сообщении повторяются. Число повторяющихся символов может быть значительным

Например

WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWW
WWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW

Если мы применим простое кодирование длин серий к этой строке, то получим следующее:

12W1B12W3B24W1B14W

" http://ru.wikipedia.org/wiki/Кодирование_длин_серий " target="_blank"> http://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B4%D0%BB%D0%B8%D0%BD_%D1%81%D0%B5%D1%80%D0%B8%D0%B9%22%5Dhttp://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B4%D0%BB%D0%B8%D0%BD_%D1%81%D0%B5%D1%80%D0%B8%D0%B9]http://ru.wikipedia.org/wiki/Кодирование_длин_серий"]http://ru.wikipedia.org/wiki/Кодирование_длин_серий

Отлично. Надо только найти схему преобразования кодов пикселов к форме где много повторяющихся символов. И такая форма есть, так называемое дискретно-косинусное преобразование

http://habrahabr.ru/post/102521/

http://en.wikipedia.org/wiki/JPEG

В результате получаем матрицу коэффициентов в которой после квантования нули скапливаются в правом нижнем углу

[img] http://e.bunker.kz/uploads/1355840426/gallery_13_4_425.png [/img]
...
Рейтинг: 0 / 0
AR.Drone квадрокоптер. Программирование на java и С
    #38111508
erbolg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теперь надо найти способ записи элементов матрицы в строку. Для этого используется Zigzag-упорядочение.







Довольно существенное сокращение длины блока
...
Рейтинг: 0 / 0
AR.Drone квадрокоптер. Программирование на java и С
    #38116756
erbolg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Компания КРОК организует конкурс летающих роботов для продвижения робототехники и темы беспилотных летающих аппаратов среди подрастающего поколения, молодых специалистов и любителей технических новинок. Главный приз – 1.000.000 рублей.

«Для всех организаторов проект стал настоящим зарядом позитива: столько у нас интересных, азартных и технически одаренных людей… Мы получили свыше 500 заявок, а именно 295 командных заявки и 241 от индивидуальных участников; проект активно обсуждается – и в Интернете, и в офлайне мы получаем массу вопросов. Очень надеюсь на то, что у участников все получится!», – поделился своими впечатлениями Алексей Добровольский, директор по разработке программного обеспечения компании КРОК.

Среди участников работники авиационного КБ, космической компании "Энергия" и пр.

Представление участников с ссылками на их страницы в vk.com
http://www.robots.croc.ru/heroes/team.php
...
Рейтинг: 0 / 0
AR.Drone квадрокоптер. Программирование на java и С
    #38116758
erbolg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Представление своего проекта участия в конкурсе от Гудина Владимира

http://robots.croc.ru/heroes/detail.php?ID=189
...
Рейтинг: 0 / 0
AR.Drone квадрокоптер. Программирование на java и С
    #38116759
erbolg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YouTube Video
...
Рейтинг: 0 / 0
AR.Drone квадрокоптер. Программирование на java и С
    #38118294
erbolg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YouTube Video
...
Рейтинг: 0 / 0
AR.Drone квадрокоптер. Программирование на java и С
    #38120779
erbolg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С программой YADrone я могу анализировать видео с drone

https://projects.ardrone.org/boards/1/topics/show/5259

src/com.shigeodayo.ardrone.video/VideoManager.java

@
// And finally, convert the BGR24 to an Java buffered image
BufferedImage javaImage = Utils.videoPictureToImage(newPic);
int crgb = javaImage.getRGB(10, 10);
//String srgb = Integer.toString(crgb);
String srgb = Integer.toHexString(crgb);
System.out.println("RGB: " + srgb);
@
...
Рейтинг: 0 / 0
AR.Drone квадрокоптер. Программирование на java и С
    #38122838
erbolg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что и как. О программе YADrone

https://projects.ardrone.org/boards/1/topics/show/5259


Всю конкретную работу по декодированию и оформлению приходящему с вертолета потоку видеоданных выполняет класс VideoManager, который является потомком класса AbstractTCPManager

У класса AbstractTCPManager четыре метда

public void connect(int port)
public void close()
protected void ticklePort(int port)
protected InputStream getInputStream()
...
Рейтинг: 0 / 0
AR.Drone квадрокоптер. Программирование на java и С
    #38125625
erbolg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обсуждение алгоритма перемещения по полигону



1. Задача локализации вертолета на готовой модели (карте) полигона сориентированной по компасу и GPS
2. Построение части карты - препятствие и квадрат посадки
...
Рейтинг: 0 / 0
AR.Drone квадрокоптер. Программирование на java и С
    #38126716
erbolg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня ipad 3, AR.Drone 2, AR.DroneFreeFlight 2.2 v. 2.2.7, Firmware 2.3.3

В начале полета показания высотомера похожи на правду, но в конце на высоте полуметра показывает три метра
...
Рейтинг: 0 / 0
AR.Drone квадрокоптер. Программирование на java и С
    #38134751
erbolg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предполагается использовать алгоритм Хафа для нахождения высоты забора, т.е. для нахождения верхней и нижней линии стенки коридора, а также для нахождения места посадки (кругов с крестами)

Входные параметры для алгоритма Хафа

1. входное изображение. Оно должно быть 8-битным, но будет трактоваться как двоичное изображение (т.е. все ненулевые значения пикселей будут восприниматься как равные единичные величины).

2. Количество возвращаемых линий

3. Следующие два параметра, rho и theta, устанавливают желательное разрешение для линий (т.е. разрешение плоскости накопителя). Параметр rho вычисляется в пикселях, а параметр theta – в радианах, поэтому плоскость накопителя можно рассматривать как двухмерную гистограмму с ячейками размерностью rho пикселей на theta радиан.

4. Значение параметра threshold определяет величину, которая должна быть достигнута на плоскости накопителя, чтобы сообщить о нахождении линии. Этот последний параметр на практике несколько мудрёный, при чем он не нормализуется, поэтому ожидается, что пользователь сам будет его масштабировать с ростом размерности входного изображения для алгоритма SHT. Этот параметр, в действительности, определяет количество точек (на входном изображении), которые должны поддерживать линию, чтобы линия была добавлена в возвращаемый список.

http://locv.ru/wiki/6.6.1_Преобразование_Хафа_для_линий

Пусть наше изображение состоит из пикселов двух типов - "фоновых" и "точек интереса". Допустим фоновые пикселы имеют белый цвет, а точки интереса - черный

Задача алгоритма Хафа состоит в нахождении прямых образованных точками интереса. Идея алгоритма состоит в нахождении прямых проходящих через "достаточное" количество точек интереса

Сканируем изображение сверху-вниз, слева-направо в поисках точек интереса, пикселов имеющих черный цвет

Если нашли "черный пиксел" то надо построить множество пар R, teta для прямых которые проходят через этот пиксел

Для примера имеем матрицу 7*7 пикселов. Для каждой точки интереса строим 20 прямых, с углами по отношению к оси x - 0.314, 0.628 и так далее с интервалом дискретизации по углу равным 0.314

Для каждой прямой ищем ортогональный к ней вектор из центра координат из уравнения

R = x*cos (teta) + y*sin (teta) , где x и y координаты точки интереса

Теперь собственно алгоритм заполнения аккумуляторной матрицы

Цикл по j от нуля до 2*PI с шагом dteta
teta = j*dteta
R = j*dteta
R1 = 0
k = 0
Пока |R1 - R| > dR/2
R1 = R1 +dR
k = k+1
Конец Пока
A[k][j] = A[k][j] + 1
Конец цикла по j

http://masters.donntu.edu.ua/2012/iii/lidke/diss/index.htm
http://www.ict.edu.ru/ft/002407/num1degt.pdf
...
Рейтинг: 0 / 0
AR.Drone квадрокоптер. Программирование на java и С
    #38134759
erbolg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибка в алгоритме

R = Xi*cos(dteta) + Yi*sin(dteta)

вместо

R = j*dteta
...
Рейтинг: 0 / 0
AR.Drone квадрокоптер. Программирование на java и С
    #38134767
erbolg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приложение для управления drone

http://www.msh-tools.com/ardrone/
...
Рейтинг: 0 / 0
AR.Drone квадрокоптер. Программирование на java и С
    #38135259
erbolg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для рисунка



имеем следующую табличку

...
Рейтинг: 0 / 0
AR.Drone квадрокоптер. Программирование на java и С
    #38144914
erbolg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алгоритм полета

1. Взлет и движение в коридоре1. Определяем и контролируем во время движения расстояние до боковой стенки коридора и высоту полета робота. Для этого используем горизонтальную камеру и компас

2. Пролетаем через боковой проем в коридор2

3. Определяем расстояние до препятствия и положение проема в препятствии. Перемещаем робота прямо напротив проема и начинаем движение к препятствию

4. На расстоянии нескольких метров от препятствия снова позиционируем робота посередине проема и продолжаем движение с контролем расстояния от боковой стенки коридора

5. После преодоления препятствия ищем с помощью горизонтальной камеры место посадки. Позиционируем робота посередине места посадки, определяем расстояние до него и его положение на карте

6. Подлет к месту промежуточной посадки. На расстоянии нескольких метров от него снова позиционируем робота посередине места посадки. Посадку выполняем с помощью нижней камеры

7. Взлет и движение по камере

8. Посадка
...
Рейтинг: 0 / 0
AR.Drone квадрокоптер. Программирование на java и С
    #38160070
erbolg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Определен список участников, прошедших во второй тур конкурса летающих роботов, организованного компанией КРОК. По итогам первой контрольной точки, в гонке остается 150 команд и 87 индивидуальных участников. В марте, мае и июле участники должны будут пройти еще три контрольные точки, а финальное соревнование состоится в августе 2013 года. Главный приз конкурса – 1 000 000 рублей*

http://www.robots.croc.ru/news/detail.php?ID=847
...
Рейтинг: 0 / 0
AR.Drone квадрокоптер. Программирование на java и С
    #38282402
erbolg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бывает такое , пишешь сообщение на форум , включаешь в него код и коротко описываешь алгоритм, кажется что все понятно читателю и нет необходимости подробно описывать алгоритм (идею) кода

Через некоторое время читаешь свое сообщение и ничего не понимаешь. Вот такая вот польза от чтения своих прошлых сообщений. Приходится переписывать сообщение и более подробно описывать алгоритм кода

Сейчас пишу программу для вертолета чтобы он летал по квадрату и решил воспользоваться кодом для поворота на фиксированный угол

Алгоритм такой

Постановка: Допустим нужно повернуться справа-налево (против часовой стрелки) на определенный угол.

Решение: Сначала измеряем текущий (начальный) угол, потом вычисляем конечный, то есть прибавляем к начальному углу значение угла на который требуется повернуть вертолет. Начинаем поворот, в цикле все время проверяем условие, что текущий угол меньше конечного. Если условие истинно то продолжаем поворот, если ложно то выходим из цикла

Такой способ работает если в процессе поворота не встретилась особая точка в которой угол поворота меняется скачком от плюс 180 до минус 180 градусов.

Что же делать если это случилось?

Допустим начальный угол равен 100 градусам, а повернуться надо на угол 90 градусов. Следуя нашему алгоритму складываем 100 и 90, получаем 190

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

Хотя это условие корректно с логической точки зрения при вращательном движении, в реальности, перед началом вращения, когда вертолет еще не среагировал на команду move3D(vx, vy, vz, vr), он будет шарахаться в разные стороны от своего начального направления в режиме hover (зависания в точке) и поэтому может случится, что условие будет выполнено в самом начале поворота и произойдет выход из цикла. Визуально это выглядит как микродерганье вертолета

Поэтому я использовал другое для установки флажка, который устанавливается в true при проходе "особой точки"

Код: sql
1.
2.
3.
4.
			if (angle_current < 0 && angle_prev > 170) {
				angle_current = angle_current + 360;
				flag = true;
			}



Это ключевое условие которое позволяет нам зафиксировать факт наличия "особой точки" в процессе измерения углов поворота и путем прибавления к измеренному отрицательному углу числа 360, получить положительное значение угла которое будет больше чем предыдущее значение

Зафиксировать наличие "особой точки" в программе можно с помощью логической переменной, которая будет менять свое значение если точка пройдена в процессе поворота. И далее для получения значения угла поворота к измеренному отрицательному значению будем прибавлять число 360

Сама процедура поворота на заданный угол выглядит следующим образом

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
// Поворот на заданный угол
void ARDrone::loopCommand5(void)
{

	double angle_start, angle_finish, angle, angle_current, angle_prev;
	angle = 90; // угол поворота
	angle_start = getYaw()*RAD_TO_DEG; // начальный угол
	angle_prev = angle_start;
	angle_finish = angle_start + angle - 10; // конечный угол
	double vx = 0.0, vy = 0.0, vz = 0.0, vr = 1.0;
	boolean flag = false;

	while (1) {
		

		move3D(vx, vy, vz, vr);
		angle_current = getYaw()*RAD_TO_DEG; // текущий угол
		// если "особая точка" пройдена, то прибавляем к измеренному значению число 360
		if (flag) angle_current = angle_current + 360;
		// Если текущее и предыдущее значение углов не равны

		if (angle_current != angle_prev) {

			if (angle_current < 0 && angle_prev > 170) {
				angle_current = angle_current + 360;
				flag = true;
			}

			if (angle_current >= angle_finish) break;
			
		}
		angle_prev = angle_current;

		msleep(1);
	}
	vx = 0.0, vy = 0.0, vz = 0.0, vr = 0.0;
	move3D(vx, vy, vz, vr);
}



Еще нужно сделать такое замечание. Хотя повернуть в данном случае вертолет нужно на 90 градусов, формула для расчета конечного угла выглядит так

angle_finish = angle_start + angle - 10; // конечный угол

Видно что из угла вычитается 10 градусов. Это связано с инерцией срабатывания двигателей вертолета. То есть команда остановки выполняется не сразу, с запозданием. Поэтому нужно выдавать с упреждением
...
Рейтинг: 0 / 0
AR.Drone квадрокоптер. Программирование на java и С
    #38289085
erbolg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смысл параметров функции cvHoughLines2

Параметры rho и theta функции cvHoughLines2, используются при создании аккумуляторной матрицы. Определяют число элементов матрицы.

Из всех параметров функции самым важным для нахождения линий на рисунке является параметр threshold.

threshold — пороговый параметр. Линия возвращается, если аккумулирующий параметр больше порогового значения. Изменяя его значение изменяем чувствительность функции к линиям отображенным на рисунке

С помощью алгоритма Canny можно искать границы (контуры) предметов изображенных на рисунке.

Если на рисунке провести линию, то ее контуром будет прямоугольник. Вот так

Сам рисунок



Результат , после обработки функцией cvCanny



В данном случае интенсивность пиксела меняется сверху и снизу от прямой , поэтому Canny рисует две линии, сверху и снизу от исходной линии.

Если исходная картинка такая



то после обработки функцией cvCanny получим

...
Рейтинг: 0 / 0
AR.Drone квадрокоптер. Программирование на java и С
    #38308928
erbolg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Визуализация данных получаемых с сенсоров вертолета (скорость, высота, заряд аккумулятора) , а также вычисление вектора перемещения и его визуализация



Вот картинка с изображением полученная с вертолета и на нее выводятся данные с сенсоров

Хочу еще сделать окно в которое будет выводится информация в виде векторов мгновенной скорости и текущего значения вектора перемещения
...
Рейтинг: 0 / 0
AR.Drone квадрокоптер. Программирование на java и С
    #38346214
erbolg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
puku0x обновил свой проект cvdrone. Библиотеки используемые для работы с изображениями и для работы с видео обновил и изменил код класса ardrone для работы с новыми библиотеками. Добавлена новая структура данных в описание пакета навигационных данных для работы с GPS

https://github.com/puku0x/cvdrone
...
Рейтинг: 0 / 0
AR.Drone квадрокоптер. Программирование на java и С
    #38367005
erbolg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Китайцы победили

http://iarc.angel-strike.com/

YouTube Video
...
Рейтинг: 0 / 0
25 сообщений из 92, страница 3 из 4
Форумы / Java [игнор отключен] [закрыт для гостей] / AR.Drone квадрокоптер. Программирование на java и С
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]