This is my repo for working through Udacity's Robotics Software Engineer nanodegree.
This project is developed inside a Parallels VM running Ubuntu 24.04 LTS on an Apple Silicon Mac (M1/M2). The VM provides a Linux-native environment needed for robotics development with ROS1 (Noetic) and Gazebo Classic, as used in the Udacity Robotics Software Engineer Nanodegree.
Development inside the VM uses:
- Docker for isolated ROS/Gazebo environments, including GUI apps like
gazebo(via X11 inside the VM) - Vim with a custom
.vimrcand plugins for editing.sdf,.urdf,.launch, and source code - SSH with a dedicated key and
ssh-agentto enable seamless GitHub integration - Mounted host folders in Docker for persistent storage of Gazebo models and source files
This setup keeps development reproducible, isolated from the host macOS, and (according to ChatGPG) aligned with common robotics workflows.
This project runs inside a Parallels VM with Ubuntu 24.04 on an Apple Silicon Mac. It uses Docker to run ROS1 Noetic and Gazebo Classic in a reproducible containerized environment.
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release
# Add Docker’s official GPG key
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# Add Docker’s repository
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Install Docker Engine
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.ioTo run Docker without sudo, add your user to the docker group:
sudo usermod -aG docker $USER
newgrp docker # or log out and log back incd VMDocker
docker build -t ros-noetic-gazebo ../run_gazebo.shThis script starts the container with:
- GUI support via X11
- Host networking for ROS/Gazebo communication
- A mounted volume for persistent model storage
- Non-root user access for smoother X11 permissions
gazeboThe container includes Vim preconfigured with plugins for editing .sdf, .urdf, .launch, and ROS source files.
To install plugins:
vim +PlugInstall +qall" (If needed: inside Vim)
:PlugInstallI'm using an AI assistant (ChatGPT, Claude Code) to help navigate tooling and answer clarifying questions like
- How can I run Gazebo Classic and ROS1 in Parallels on Ubuntu 24 on a Mac M1 with GUI support?
- “Should I define behavior in ROS or Gazebo?”
- “How do I configure Vim for editing
.sdf,.urdf, and ROS files?” - Which files should be in .gitignore
and it has been tremendously helpful.