Regarding MacOS Compatibility - Carleton-SRCL/SPOT GitHub Wiki

Introduction

The intention behind this entry is to provide some additional context around the incompatibility of MacOS with the SPOT software. Specifically, the MATLAB/Simulink support for NVIDIA Jetson add-on is used to compile the SPOT Simulink diagram into a Linux executable, which can be run on the Jetson Xavier boards - however, there are some compatibility issues. It should also be noted here that as the primary developer, I do not have access to computer with MacOS, and thus I do not have the ability to develop the software for use on MacOS.

System Requirements

Please be aware of the following system requirements as specified by the Jetson add-on:

  • OS: Windows 10/11 or Linux (Ubuntu 18.04 or later)
  • MATLAB Version: R2021a or later
  • Required Toolchain: NVIDIA CUDA Toolkit, compilers, and other dependencies

Overview of Compatibility

The SPOT software should be compatible on MacOS for general computation and simulation tasks. However, the main hardware package used is not supported due to the following reasons:

  • Unsupported Toolchains: The NVIDIA CUDA Toolkit and some other necessary compilers used to compile Simulink code are not officially supported by Apple.
  • Cross-Compilation Issues: The toolchains that are required to cross-compile code for Jetsons from MacOS are also not supported by Apple.

Official Recommendation

For the time being, using MacOS is not recommended. Even if the software runs on MacOS, the fact that it does not compile means you will need to switch to a Windows or Linux machine at some point, and thus you may as well develop on a Windows machine from day one.

[!WARNING] These steps intended for SPOT 4.0 and will not necessarily apply for any future versions. This entry will also not be regularly updated as our stance on MacOS use is that it should not be used.

If you absolutely MUST run simulations using MacOS, some changes are required. You will need to be an intermediate MATLAB user to comfortably make these changes:

  1. HardwareBoard lines in GUI_v4_XX_Main.mlapp
  2. In the project *.slx file, blocks corresponding to experiment logic and the NVIDIA interface.

Specifically, comment these lines in the GUI:

setParam(activeConfigObj,'HardwareBoard','None');

setParam(activeConfigObj,'HardwareBoard','NVIDIA Jetson');

In the Simulink diagram, comment out these Simulink blocks:

  • Check Connection
  • PhaseSpace Camera Code > Use Hardware to Obtain States
  • Send Data to TX2
  • Thruster Control Code > UDP Send