Комментарии 22
В целом, самая большая проблема — погрешность GPS координат
Нужно использовать L5
с Maps API, делается это бесплатно (пока).
Есть альтернативы вроде OpenstreetMap.
В целом, самая большая проблема — погрешность GPS координат
Можно же считать курс по скорости.
Расчет направления (курса) можно производить по составляющим скорости VN, VE у которых точность лучше чем у координат.
В исходном nmea сообщении есть, и кстати уже "обработанные" в виде курса и скорости. И демон их тоже выдает:
track — numeric Course over ground, degrees from true north.
speed — numeric Speed over ground, meters per second.
А какие проблемы подключить плату c QMC5883L (I2C интерфейс), например?
Определять направление по GPS без компаса — это тупик. Будет все время рыскать, поскольку GPS координата с приемника очень характерно плавает по времени (при фиксированном физическом положении приемника).
Выведите координату с приемника на экран в графическом виде (кривая в 2D координатах) и сразу все поймете (простейшей программой на pyton или чем удобнее).
Но… Хотя, у меня похожая конструкция (https://habr.com/ru/post/424191), но отправлять ее где то шляться я бы не рискнул… сопрут.
Хотя с нынешним блоком аккумуляторов должна минимум 20 км проехать (емкость сборки как у электро самоката)
>>Определять направление по GPS без компаса — это тупик
Да, пришел к такому же выводу.
Ещё можно оценивать погрешность определения своих координат и критерий целесообразности каждого перемещения вычислять в соответствии с:
- допустимой погрешностью координат в точке прибытия
- оценочной погрешностью определения своих координат на текущий момент
- длиной вектора разности координат текущей и целевой точки
- зарядом аккумулятора (видимо роботу стоит быть более ленивым при меньшем заряде?)
Куда эффектиынее подождать пока накопится достаточная точность усреднённых координат и поямается больше спутников, чем в панике метаться по кустам.
А чем I2C лучше USB?
- Ценой платки (копейки стоит, поскольку "для арудуино")
- Размерами разъема (подключение к GPIO) и не занимает дефицитный USB с его ограничениями по току (Hub не нужен).
- Не надо никаких специализированных драйверов искать для USB (не факт что есть вообще). Работает напрямую через I2C (библиотеки для Raspberry есть).
Я бы и GPS подключил прямо к GPIO… (но у меня валяется OEM плата GPS с RS-232 TTL 3.3v)
1. Истинный курс
2. Компасный курс
3. Девиация
4. Движение по азимутам
Я бы делал движение по азумуту, который корректируется раз 10 секунд и gps использовать как справочную систему
Raspberry-pi-танк и GPS навигация