06.12.2016, 14:32 | #31 | |
Member
Регистрация: 06.12.2016
Сообщений: 35
Вес репутации: 0 |
Re: Робот объезжающий препятствия
Цитата:
1. Что такое сторожевой таймер и где об этом почитать? 2 Тогда можно пояснить на пальцах каким именно способом вы выравниваете курс? Неужели полным торможением одно стороны или еще тем паче остановкой и вращением на месте? 3. Как с точки зрения вашего богатого опыта: управлять поворотами заданием градуса поворота или не стоит усложнять? Последний раз редактировалось Paul_B; 06.12.2016 в 15:21. |
|
06.12.2016, 17:56 | #32 | |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Re: Робот объезжающий препятствия
Цитата:
Или в datasheet на контреллер 2-без всяких остановок, на ходу 3-если Вы планируете наделить робота автономной навигацией, то тогда следует высчитывать градус |
|
06.12.2016, 21:33 | #33 |
Member
Регистрация: 06.12.2016
Сообщений: 35
Вес репутации: 0 |
Re: Робот объезжающий препятствия
Более оптимальный алгоритм поиска совпадений
Код:
//**************Поиск макс повторяющегося элемента в массиве **************************** uint16_t find_similar(uint16_t *buf, uint8_t size_buff, uint8_t range) { uint8_t maxcomp=0; //счётчик максимального количества совпадений uint16_t mcn=0; //максимально часто встречающийся элемент массива uint16_t comp; //временная переменная uint8_t i,j,n; //счётчик совпадении uint8_t i_numb, i_mas[256]; // индекс интервала и показатель принадлежности к заданному интервалу отклонений range++; //допустимое отклонение for (i=0; i<256; i++) i_mas[i]=0; // задаем начальные нули. чтобы сэкономить можно задать static uint8_t i_mas[256]; i_numb=1; // задаем номер интервала. если измерение будет лежать в этом интервале, то в индексном массиве присваиваем этот номер for (i=0; i<size_buff; i++) if(i_mas[i]==0) // если элемент не попал ни в чей интервал { comp=buf[i]; //кладем элемент массива в comp n=0; //счётчик совпадении for (j=i; j<size_buff; j++) if(i_mas[j]==0) // если раньше этот элемент не попал в какой-то интервал, то его рассматриваем { if (buf[j]>comp-range) if(buf[j]<comp+range) {i_mas[j]=i_numb; n++;} } if (n > maxcomp) //если число повторов больше чем было найдено ранее { maxcomp=n; //сохраняем счетяик повторов mcn=comp; //сохраняем повторяемый элемент } i_numb++; // тут в итоге будет количество непересекающихся интервалов измерений } return mcn; } Последний раз редактировалось Paul_B; 06.12.2016 в 22:05. |
06.12.2016, 21:34 | #34 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Re: Робот объезжающий препятствия
Для более читаемого вида кода, есть теги
PHP код:
Код:
... Только не понятно в чем вопрос? |
06.12.2016, 21:44 | #35 |
Member
Регистрация: 06.12.2016
Сообщений: 35
Вес репутации: 0 |
Re: Робот объезжающий препятствия
|
06.12.2016, 21:49 | #36 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Re: Робот объезжающий препятствия
В каком месте?
|
06.12.2016, 21:57 | #37 |
Member
Регистрация: 06.12.2016
Сообщений: 35
Вес репутации: 0 |
Re: Робот объезжающий препятствия
Последний раз редактировалось Paul_B; 06.12.2016 в 22:14. |
06.12.2016, 22:16 | #38 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Re: Робот объезжающий препятствия
А как ты найдешь значения которые не совпали ни с чем?
|
06.12.2016, 22:21 | #39 |
Member
Регистрация: 06.12.2016
Сообщений: 35
Вес репутации: 0 |
Re: Робот объезжающий препятствия
|
06.12.2016, 22:22 | #40 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Re: Робот объезжающий препятствия
В начале кода в define
PHP код:
|
Здесь присутствуют: 10 (пользователей: 0 , гостей: 10) | |
|
|