Всем привет. Вот делаю робота с автономной системой путешествия из точки А в точку Б.. Координаты есть, одна загвоздка я где то читал что электронный компас нужно держать идеально ровно, чтобы он показывал верное направление, что конечноже невозможно в подвижной модели. Итак сама суть есть 3х осный акселерометр и компас все в плате GY80 вот вид получаемых данных Axelerate: X=62; Y=53; Z=160; Temperature: 293 *0.1 deg C Pressure: 101006 Pa Compass 148.00 Axelerate: X=69; Y=165; Z=51; Temperature: 294 *0.1 deg C Pressure: 101003 Pa Compass 132.00 Axelerate: X=167; Y=27; Z=84; Temperature: 296 *0.1 deg C Pressure: 100997 Pa Compass 50.00 датчик кручу немножко, так вот акслерометр както должен компенсировать неровности расположения, чтобы получить мы могли получить верное направление.(НЕ ЗНАЮ КАК ИХ ВМЕСТЕ СОЕДИНИТЬ) Помогите плиз
Вам нужно с компаса считывать показания по всем трем осям. Акселерометр вам дает проекции вектора ускорения свободного падения g на оси X,Y,Z, т.е. gx,gy,gz. Компас вам дает проекцию вектора индукции магнитного поля B на оси X,Y,Z, т.е. Bx,By,Bz. Векторное произведение [B,g] даст вам вектор L, который всегда должен смотреть на восток или запад, если B определяется магнитным полем Земли. Далее из взаимного расположения тройки векторов g,B,L и орт локальной системы координат ex,ey,ez можно восстановить углы курса, крена и рысканья.
Тоесть по этой формуле мы перемножаем векторы [gx,Bx]/[gy,By]/[gz,Bz] и мы получим углы курса, крена и рысканья? Я все правильно понял?
Все шикарно http://www.loveelectronics.co.uk/Tutorials/13/tilt-compensated-compass-arduino-tutorial ))
Вот только проблема с библеотекой HMC5883L он не хочет работать с ардуино 1.5.2 ток с 1.0 . можете подсказать как исправить ету гадость ибо в 1.0 нет моей дуины(((
ну с того сайта скачанная вот ошибки D:\Пишем проги\arduino-1.5.2\libraries\HMC5883L\HMC5883L.cpp: In member function 'void HMC5883L::Write(int, int)': D:\Пишем проги\arduino-1.5.2\libraries\HMC5883L\HMC5883L.cpp:123: error: 'class TwoWire' has no member named 'send' D:\Пишем проги\arduino-1.5.2\libraries\HMC5883L\HMC5883L.cpp:124: error: 'class TwoWire' has no member named 'send' D:\Пишем проги\arduino-1.5.2\libraries\HMC5883L\HMC5883L.cpp: In member function 'uint8_t* HMC5883L::Read(int, int)': D:\Пишем проги\arduino-1.5.2\libraries\HMC5883L\HMC5883L.cpp:131: error: 'class TwoWire' has no member named 'send' D:\Пишем проги\arduino-1.5.2\libraries\HMC5883L\HMC5883L.cpp:142: error: 'class TwoWire' has no member named 'receive'