Перейти к содержимому
jammer312

Программная навигация для робота с EEPROM

Рекомендуемые сообщения

Сие ( http://pastebin.com/C0S2m3d8 ) является реализацией программной навигации для робота под eeprom.

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

Собственно эта реализация влезает в 780 байт с учетом двух переводов строки после себя (ну мало ли). Имена переменных и функций сокращены настолько, чтобы занимать как можно меньше места, но при этом оставаться осмысленными. Отступы убраны для уменьшения размера. Некоторых проверок "на дурака" нет из тех же соображений.

Значимые переменные: ns,nx,ny,nz - направление и три координаты, где x и y образуют горизонтальную плоскость. Изначально робот смотрит в сторону оси x, ось y направлена направо, ось z - вверх.

Значимые функции:

n_u, n_d - navigation_up/down, движение вверх/вниз;

n_f - navigation_forward, движение вперед;

n_l, n_r - navigation_left/right - поворот налево/направо;

t_t - turn_to, повернуть к, принимает в качестве аргумента число от 0 до 3, задающее новое направление. 0 - направление оси x, далее по порядку по часовой стрелке;

n_t - navigate_to, движение к заданой точке, принимает в качестве аргумента координаты точки, в которую требуется проследовать. Сначала передвигается по оси z, затем x и y.

 

Для использования достаточно скопировать код в вашу программу, далее все описанное будет доступно. Если место позволяет, для удобства можно переназвать планируемые к использованию функции (аля "local turn_left=n_l"). Далее у вас будет более 3Кб под остальную часть программы.

Надеюсь, кому-нибудь будет полезно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я думаю нет особого смысла экономить на названиях функций.

Программа весит 780 байт, да. Но EEPROM даёт место до 4 кб. И кроме твоей программы туда ничего не будет записано.

То есть - остаётся огромный кусок неиспользованного места. Плюс запутанные названия функций.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я думаю нет особого смысла экономить на названиях функций. Программа весит 780 байт, да. Но EEPROM даёт место до 4 кб. И кроме твоей программы туда ничего не будет записано. То есть - остаётся огромный кусок неиспользованного места. Плюс запутанные названия функций.

Тут всё очень субъективно. Невозможно написать идеальную библиотеку навигации на все случаи жизни, да еще с размещением в EEPROM. Всегда приходится жертвовать либо функционалом, либо скоростью, либо размером, либо ясностью кода.

 

Хотя, я бы тоже предпочел более понятные имена функций с комментариями, а затем пропустить код через crunch или его аналоги.

 

@@jammer312:

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...