macOS Installation#

Note: the following has not been fully tested yet. Please @frankie on Slack if there are any issues with the installation or setup.


Setting Up#

  1. Install UTM using brew: brew install --cask utm

  • If you don’t have Homebrew yet, install from here

  1. Download the UTM .zip from the Google Drive

  • (make sure you have access to the Penn Aerial Robotics Main Drive)

  1. Unzip the image in Finder. There should be a file with a .utm extension

  • The image has the following pre-applied configurations:

    • 12 GB RAM

      • If you have 8 GB RAM, consider using 6 GB RAM, but do know that the host (MacOS) might be unusable

    • 64 GB pre-allocated disk space

  1. Import the image using UTM –> File –> Open, and select the unzipped UTM image

  2. Double-click the image or click on the play button to start the VM

  • First boot is expected to take awhile

  1. Log in to the system

  2. Make sure to edit the network service to prevent long boot times:

  • Edit systemd-networkd-wait-online.service using the following command: sudo systemctl edit systemd-networkd-wait-online.service

  • Insert the following content before ### Edits below this comment will be discarded:

[Service]
ExecStart= # this line is left intentionally blank to clear Ubuntu's defaults
ExecStart=/usr/lib/systemd/systemd-networkd-wait-online --any --timeout=5

First Run#

  1. Install QGroundControl on the MacOS host: brew install --cask qgroundcontrol

  2. Open a Terminal in the VM. cd into the monorepo and into monorepo/controls/sae_2025_ws

  3. Run colcon build, followed by source install/setup.bash and ros2 launch uav main.launch.py

  • Verify that the UAV is able to take off and land. UTM Simulation Takeoff

  1. The VM should be ready!

Next Steps#

  • Please please change the password using passwd and following the instructions

  • Set up GitHub authentication to push to the monorepo (recommended: SSH authentication)

  • Look at the Ubuntu Installation for further instructions

Note

The UTM image contains a frozen snapshot of the dependencies and codebase at the time it was created and uploaded to the drive. It is usually updated infrequently due to the hassle of uploading and compressing the large file to our drive.

Please run git pull origin main and git submodule update --recursive to make sure monorepo is up-to-date. Then follow the Ubuntu Installation starting from PX4 Installation to make sure no dependencies are missing.

Warning

If you’re getting slow boot times after setting up UTM and past the first boot, make sure to follow step 6 in Setting Up