mowerpilot

This is the repo designated for preparing for an unattended mower. It uses Extended Kalman Filter

prerequisite

Ubuntu 19.04 编译环境

通过如下命令安装编译环境(包含cross compile工具)

apt-get -y update && apt-get -y upgrade
apt-get install -y python3 gcc g++ make cmake autoconf clang python-pip
pip install future
apt-get install -y gcc-arm-linux-gnueabi g++-arm-linux-gnueabi gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf libc6-armel-cross libc6-dev-armel-cross binutils-arm-linux-gnueabi libncurses5-dev 

Mac 编译环境 (不含cross compile工具)

通过Mac App Store安装Xcode

通过以下命令安装brew

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安装cmake

brew install cmake

build (适用于macos和linux)

假设mowerpilot在/home/build/mower目录下,打开Terminal,

cd /home/build/mower
cd build
cmake ..
cd ..
cmake --build build --target Main -- -j 4

build目录下就会生成一个可执行的Main程序,文件名也是Main

run/demo

在mower目录下执行

build/Main

改程序就会读取/home/build/mower目录下的.log文件并根据log文件初始化Extended Kalman Filter,然后进行Update和Predict

当前问题

log文件的GPS和Gyro等数据为从手机记录的,与示例程序所需的传感器数据的格式不一致,因此,当前的程序仅仅是在流程上执行了Filter的初始化、更新和预测步骤,所属出的Predict数据由于log数据原因,无物理意义上的参考价值。

Extended Kalman Filter基本用法

#include <AP_NavEKF2/AP_NavEKF2.h>

NavEKF2 navEKF2; //声明一个NavEKF2变量

//初始化Filter,初始化的时候,需要提供IMU, GPS, Magnetometer数据;而气压数据可不提供
navEKF2.InitialiseFilter(last_time_usec, 10, 1, imuData, gpsData, magnetoData, baroData);

//执行Filter的Update步骤,需要提供IMU, GPS, 磁感数据;而空速、 Range Beacon、和气压可不提供
navEKF2.UpdateFilter(last_time_usec, 0, imuData, gpsData, magnetoData, airSpdData, rngBcnData, baroData);

navEKF2.get* //调用以get开头的方法获取计算后的数据