Заказал недавно у вас трехосный компас. Все бы ничего но он реагирует на моторы, на ардуино, на аккумуляторы, короче на весь другой обвес моего робота. Единственный выход который я нашел это прикрепить его на длинной палке высоко над роботом. Но такой расклад меня не устраивает. Я почти уверен что работу компаса можно скорректировать программно, но как это сделать не очень понимаю. Подскажите кто нибудь)
Не поможет. Он на любые железки реагирует. Например, я вынес его на пластиковой линейке подальше от всего остального. Так он даже на винтики которыми я его прикрутил реагирует. Когда убрал винтики и приклеил на двухсторонний скотч, все заработало, но меня опять же не очень устраивает вариант с выносом его на палке.
Егор! Посмотрите внимательно не картинку: На стержне ПРИКЛЕЕН белый диск. Это компас. Его цена приблизительно такая. Кроме того, его работа поддерживается серьезным программным обеспечением. И все равно он монтируется на штанге. Это обычная практика. Думаю, у Вас все нормально с компасом.
С этим разобрался. Теперь помогите со следующим) Компас выдает значения от 0 до 360. Платформа miniQ. Помогите с кодом для езды в заданном направлении. То бишь если я задаю угол 23,5 градуса, робот именно туда и едет. Энкодеров у меня нет. то бишь робот должен регулировать скорость врашения колес в зависимости от того, справа или слева целевое направление. В теории все просто, на практике голову сломал
Если реальное значение показаний компаса "левее" заданного, притормозить правое колесо. Если реальное значение показаний компаса "правее" заданного, притормозить левое колесо. При определении, насколько значение "левее" или "правее", нужно учитывать переход через 0 градусов. Как-то так. Ну и небольшой гистерезис наверное не повредит.
Дело в том что я не знаю как реализовать. Если например ему нужно ехать в направлении 10 градусов, смещение происходит в отрицательную сторону, то бишь 9, 8, 7 и тд. В определенный момент компас словит 360 градусов и робот начнет через другую сторону вертеться. Я хочу сделать чтобы он весь диапазон делил на 2 части, одна в которой он вертится влево, одна в которой вправо. То бишь в примере с 10 градусами, в диапазоне от 10 до 190 крутится влево, а от 0 до 10 и от 190 до 360 вправо. И вот я и ломаю голову, как программно реализовать эти две "половины" диапазона, и так чтобы алгоритм для любого угла направления подходил. Есть варианты?)
Конечно энкодеры это идеальный выход, но с ними меня отшили, сказали по наличию только один, а мне два нужно. Вот и изобретаю велосипед теперь
Сходу такая мысль появилась: Допустим, нужно ехать на 10 градусов. Сделаем смещение на 180 - 10 = 170 градусов и запомним его. Тогда "виртуальное" направление станет 180 градусов. Будем прибавлять смещение к измерениям и всегда попадем на середину диапазона. Переход через 0 градусов вычислить просто: если угол + смещение > 360, отнимем 360. если меньше нуля - прибавим 360. Годится?
Ну что то похожее, в развалочку катится, прямую держит. Правда ко всему металическому притягивается. Короче энкодеры надо ждать