Ekumen-OS / beluga

A general implementation of Monte Carlo Localization (MCL) algorithms written in C++17, and a ROS package that can be used in ROS 1 and ROS 2.
https://ekumen-os.github.io/beluga/
Apache License 2.0
165 stars 10 forks source link

Development containers should build in AARCH64 #382

Open glpuga opened 1 month ago

glpuga commented 1 month ago

Feature description

In order to be able to build and debug portability issues, it would be helpful if the development container built in ARM AARCH64 hosts (e.g. Raspberry Pi, Graviton instances, etc.).

This should also be supported by CI, to ensure the continuity of this feature.

Implementation considerations

The current development container is not far from being usable in AARCH64 as it stands today. A number of fixable issues have already been identified:

hidmic commented 1 week ago

This should also be supported by CI, to ensure the continuity of this feature.

There's a catch though. Github provides no cloud hosted, aarch64 runners, QEMU virtualization is painfully slow, and AWS Graviton instances are expensive. That leaves us to self-hosted runners on SBCs (e.g. RPi4, Jetson's, etc.), which are entirely feasible but some work to setup.

tulku commented 1 week ago

This should also be supported by CI, to ensure the continuity of this feature.

There's a catch though. Github provides no cloud hosted, aarch64 runners, QEMU virtualization is painfully slow, and AWS Graviton instances are expensive. That leaves us to self-hosted runners on SBCs (e.g. RPi4, Jetson's, etc.), which are entirely feasible but some work to setup.

There is an Oracle Cloud free tier that includes ARM Ampere A1 CPUs. It might be hard to find free slots (some time ago it was easy - and I have some services running there and works nicely. I tried not so long ago to get another server and there were no available instances), but you might give it shot.

glpuga commented 1 week ago

There's a catch though. Github provides no cloud hosted, aarch64 runners, QEMU virtualization is painfully slow, and AWS Graviton instances are expensive. That leaves us to self-hosted runners on SBCs (e.g. RPi4, Jetson's, etc.), which are entirely feasible but some work to setup.

As a datapoint, the kobuki repo's only CI builds the docker image (very much like the one in Beluga but a lot more dependencies) in AARCH64 using QEMU/dockerx, and it takes 32 minutes to run. That's not too bad for something that does not need for every MR.

For the record, the fixes addressing this issue are already in glpuga/fixes_arm_docker