1. 项目概述:为什么选择这个方案?
最近在Mac M4上折腾ROS2 Jazzy的开发环境,试过几种方案后,最终选择了Ubuntu 24.04虚拟机方案。这个组合有几个明显优势:首先是硬件兼容性,M4芯片的ARM架构通过UTM虚拟化运行Ubuntu 24.04非常流畅;其次是系统配套完善,Ubuntu 24.04 LTS作为最新长期支持版本,对ROS2 Jazzy的支持最完整;最重要的是开发隔离性,虚拟机环境不会污染主机系统,特别适合新手做各种尝试。
我实测下来,这套环境配置成功后运行ROS2基础功能包(如Turtlesim)帧率能稳定在60FPS,性能完全够用。相比Docker方案,虚拟机在图形界面支持和硬件访问上更有优势;而对比双系统方案,又免去了重启切换的麻烦。对于刚接触ROS2的开发者,这可能是目前Mac平台最友好的入门方式。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与工具选型
2.1 硬件与软件基础要求
我的测试设备是MacBook Pro M4/16GB版本,建议至少满足:
- Apple Silicon芯片(M1/M2/M3/M4)
- 16GB以上内存(给虚拟机分配8GB)
- 100GB可用存储空间(虚拟机磁盘建议60GB)
软件方面需要准备:
- UTM 4.4.3(免费开源,比VMware对ARM支持更好)
- Ubuntu 24.04 LTS ARM64镜像(官方ISO)
- ROS2 Jazzy官方安装包
注意:不要使用Rosetta转译的x86镜像,ARM原生性能更好且兼容性更佳
2.2 虚拟机配置要点
创建虚拟机时这几个参数很关键:
bash复制架构:ARM64 (aarch64)
内存:建议8192MB
CPU:4核心以上
磁盘:QCOW2格式,动态分配,最小60GB
显示:启用3D加速,分辨率2560x1600
网络:共享网络(NAT)即可
特别要注意勾选"使用Apple Virtualization"选项,这能显著提升性能。安装过程中遇到显示异常时,可以临时切换到SPICE显示协议。
3. Ubuntu 24.04系统配置
3.1 基础环境调优
安装完成后首先执行:
bash复制sudo apt update && sudo apt upgrade -y
sudo apt install -y build-essential curl git python3-pip
然后配置SSH访问(方便后续文件传输):
bash复制sudo apt install openssh-server
sudo systemctl enable --now ssh
3.2 图形界面问题排查
Ubuntu 24.04默认使用Wayland,在虚拟机中可能出现鼠标漂移问题。切换回X11的方法:
bash复制sudo nano /etc/gdm3/custom.conf
取消注释WaylandEnable=false,然后重启:
bash复制sudo systemctl restart gdm3
4. ROS2 Jazzy安装全流程
4.1 源配置与核心安装
按官方推荐步骤:
bash复制# 设置locale
sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8
# 添加ROS2源
sudo apt install -y software-properties-common
sudo add-apt-repository universe
sudo apt update && sudo apt install -y curl gnupg lsb-release
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
# 安装完整版ROS
sudo apt update
sudo apt install -y ros-jazzy-desktop
4.2 环境变量配置
在~/.bashrc末尾添加:
bash复制source /opt/ros/jazzy/setup.bash
export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
export CYCLONEDDS_URI=file://$HOME/cyclonedds.xml
创建CycloneDDS配置文件:
bash复制cat <<EOF > ~/cyclonedds.xml
<CycloneDDS>
<Domain>
<General>
<NetworkInterfaceAddress>auto</NetworkInterfaceAddress>
</General>
</Domain>
</CycloneDDS>
EOF
5. 验证与测试
5.1 基础功能测试
启动经典demo:
bash复制ros2 run turtlesim turtlesim_node
新开终端运行:
bash复制ros2 run turtlesim turtle_teleop_key
正常应该能看到乌龟窗口,且键盘控制流畅。如果出现卡顿,可以尝试:
bash复制export LIBGL_ALWAYS_SOFTWARE=1
5.2 性能优化技巧
- 内存分配:在UTM设置中给虚拟机分配更多内存(建议不低于8GB)
- CPU核心:分配4个以上vCPU
- 图形加速:启用3D加速并安装VirGL驱动:
bash复制sudo apt install -y mesa-utils mesa-utils-extra
glxinfo | grep "OpenGL renderer"
- 网络优化:使用virtio-net网络设备
6. 常见问题解决方案
6.1 安装失败排查
问题现象:sudo apt install时出现404错误
解决方案:
bash复制sudo rm /etc/apt/sources.list.d/ros2.list
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu jammy main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
sudo apt update
6.2 图形界面异常
问题现象:Gazebo等3D工具闪退
解决方案:
bash复制sudo apt install -y mesa-utils mesa-utils-extra
echo "export LIBGL_ALWAYS_SOFTWARE=1" >> ~/.bashrc
6.3 网络通信问题
问题现象:ROS2节点间无法通信
解决方案:
bash复制sudo ufw disable
export ROS_LOCALHOST_ONLY=0
7. 开发环境进阶配置
7.1 工作空间创建
推荐使用colcon构建系统:
bash复制mkdir -p ~/ros2_ws/src
cd ~/ros2_ws
colcon build
echo "source ~/ros2_ws/install/setup.bash" >> ~/.bashrc
7.2 常用工具安装
开发必备工具包:
bash复制sudo apt install -y \
python3-colcon-common-extensions \
python3-rosdep \
python3-vcstool \
ros-dev-tools
7.3 可视化工具
安装RVIZ2和PlotJuggler:
bash复制sudo apt install -y \
ros-jazzy-rviz2 \
ros-jazzy-plotjuggler
8. 性能实测数据
在我的M4/16GB设备上测试结果:
| 测试项目 | 原生Mac | UTM虚拟机 |
|---|---|---|
| turtlesim帧率 | N/A | 58-60 FPS |
| rviz2启动时间 | N/A | 4.2秒 |
| 构建测试包(empty_node) | N/A | 28秒 |
| 内存占用峰值 | - | 6.8GB |
虚拟机环境下ROS2基础功能完全可用,但复杂SLAM等计算密集型任务建议考虑实体机方案。
