This tutorial provides step-by-step instructions for developing a Intel-based autonomous vehicle platform running an Ardupilot software stack. Steps include: assembling computation and sensor hardware, building an operating system distribution, and building software on the system. The base system consists of an Intel UP board, which is augmented by the PXFMini autopilot HAT developed by Erle Robotics.
Note: this tutorial is a work in progress. This document will be updated as the build process becomes more refined and bugs are resolved.
The following parts are needed to construct the autopilot:
TODO: Schematic and instruction for RC input processor
TODO: Add diagrams and design for 3D-printed case
poky
and cd into the directory:
git clone -b krogoth-15.0.2 git://git.yoctoproject.org/poky.git
cd poky
git clone -b krogoth https://github.com/openembedded/meta-openembedded
git clone -b krogoth git://git.yoctoproject.org/meta-intel.git
git clone -b krogoth https://github.com/emutex/meta-up-board
meta-up-board/recipes-kernel/linux/linux-yocto-rt_4.4.bbappend
:
FILESEXTRAPATHS_prepend := "${THISDIR}/files:" PR := "${PR}.7" COMPATIBLE_MACHINE_up-board = "up-board" KERNEL_FEATURES_append_up-board += " cfg/smp.scc" # aufs is needed for the live-boot feature KERNEL_FEATURES_append_up-board += "${@bb.utils.contains('DISTRO_FEATURES', 'aufs', ' features/aufs/aufs-disable.scc', '', d)}" SRC_URI += "file://up-board-preempt-rt.scc \ file://up-board-user-config.scc \ file://up-board-user-patches.scc \ file://up-board-user-features.scc \ "
build
directory):
TEMPLATECONF=meta-up-board/conf source oe-init-build-env
yocto-kernel patch rm up-boardEnter the number of the patch related to spidev1 and press return
conf/bblayers.conf
to include the following BBLAYERS (be sure to provide the appropriate paths):
BBLAYERS ?= " \ /path/to/poky/meta \ /path/to/poky/meta-poky \ /path/to/poky/meta-yocto-bsp \ /path/to/poky/meta-openembedded/meta-oe \ /path/to/poky/meta-openembedded/meta-python \ /path/to/poky/meta-intel \ /path/to/poky/meta-up-board \ "
conf/local.conf
and add the following lines to the end of the file:
PREFERRED_PROVIDER_virtual/kernel = "linux-yocto-rt" IMAGE_INSTALL_append = " git python-pip linux-firmware"
bitbake core-image-sato-sdk
tmp/deploy/images/up-board/core-image-sato-sdk-up-board.iso
)
to a flash drive.
Advanced > HAP Configuration
has the following settings:
LPSS I2C #1 Support [ACPI Mode] I2C #1 Speed [400KHz] LPSS I2C #2 Support [ACPI Mode] I2C #2 Speed [400KHz] LPSS PWM #1 Support [ACPI Mode] LPSS PWM #2 Support [ACPI Mode] LPSS SPISupport [ACPI Mode] LPSS HSUART #1 Suppor [ACPI Mode] SCC SDIO Support [ACPI Mode] I2CO/GPIO Selection [GPIO] I2S/GPI Selection [GPIO]Save and exit configuration
git
:
git clone https://github.com/git/git cd git git checkout v2.11.3 make configure ./configure --prefix=/usr make all -j4 make install
cd ~ git clone https://bitbucket.org/kevinaangstadt/ardupilot cd ardupilot git checkout upboard git submodule update --init ./waf configure --board=upboard ./waf build
build/up-board/bin
Ardupilot binaries require several flags to configure external devices:
-A
the console output (this generally spits out garbage)-B
the primary GPS (located at /dev/ttyS1
on the UP Board)-C
the primary telemetry radio (located at /dev/ttyUSB0
on the UP Board)Execution of ardupilot might then look something like the following:
~/ardupilot/build/up-board/ardurover -A /dev/null -B /dev/ttyS1 -C /dev/ttyUSB0
Last modified: 2017-09-29