ros-acceleration / community

ROS 2 Hardware Acceleration Working Group community governance model & list of projects
60 stars 9 forks source link

Simplifying ROS 2 embedded flows with colcon extensions. #13

Closed vmayoral closed 3 years ago

vmayoral commented 3 years ago

An extension for colcon-core to include Hardware Acceleration capabilities and simplify acceleration flows. Initially targeting the following mechanisms:

vmayoral commented 3 years ago

Contributed to 👍 https://github.com/ros-acceleration/colcon-acceleration and validated with KV260 official reference hardware platform:

Initial list of capabilities:

verb quick peek description
select asciicast The select verb allows to easily select and configure a specific target firmware for hardware acceleration, and default to it while producing binaries and accelerators.
list asciicast The list verb allows to inspect the acceleration firmware available in the ROS workspace, marking with a * the currently selected option.
linux asciicast The linux verb helps configure the Linux kernel in the raw SD card image produced by the firmware. E.g. colcon acceleration linux vanilla will produce a Linux vanilla kernel, whereas colcon acceleration linux preempt_rt will instead use a pre-built kernel and kernel modules for improved determinism (fully preemptible kernel).
hypervisor asciicast The hypervisor verb helps configure the Xen hypervisor in the raw SD card image produced by the firmware. E.g. colcon acceleration hypervisor --dom0 vanilla --domU vanilla --dom0less preempt_rt will produce a raw image leveraging Xen with 3 VMs. The first, dom0, uses a vanilla kernel. The second, domU, uses a vanilla kernel. The third is a dom0less VM and uses a fully preemtible kernel (preemt_rt). Unless otherwise specified, all VMs use the default ROS 2 configuration, PetaLinux-based rootfs, the LNS and an Ethernet link layer.
emulation asciicast The emulation verb helps manage the emulation capabilities with QEMU open source machine emulator and virtualizer. This way, developers can test their setups and algorithms without the hardware, which facilitates testing and speeds up the development process allowing for CI/CD pipelines. Emulation boots the same SD card image produced by previous commands and including the ROS 2 development workspace, providing a unified development approach.
platform asciicast The platform verb helps reports Vitis platform enabled in the firmware deployed in the ROS 2 workspace.
mkinitramfs asciicast The mkinitramfs verb creates compressed cpio initramfs (ramdisks). These can then be used to back up the current rootfs or to create dom0less VMs in Xen easily.
mount / umount asciicast The mount and umount verbs help mount/umount the raw SD card image produced by previous steps. This way, developers can easily access the embedded rootfs directly, across the various partitions of the raw image (e.g. as in the case of multi-VMs in Xen).