在Windows 10/11上安全部署Ubuntu 20.04双系统并运行ego_planner无人机规划器
对于无人机开发者和ROS爱好者来说,性能与稳定性往往是首要考虑因素。虚拟机虽然方便,但在资源占用和实时性方面存在明显短板。本文将带你一步步在Windows 10/11上安全安装Ubuntu 20.04双系统,并快速部署ego_planner无人机规划器,无需担心系统崩溃或数据丢失。
1. 为什么选择双系统而非虚拟机?
在开始安装前,我们需要明确双系统与虚拟机的核心差异。虚拟机通过软件模拟完整硬件环境,而双系统则是直接在物理硬件上运行操作系统。以下是两者的关键对比:
| 特性 | 双系统 | 虚拟机 |
|---|---|---|
| 性能 | 原生性能,无额外开销 | 有10-30%的性能损失 |
| 硬件访问 | 直接访问所有硬件资源 | 受限于虚拟化层 |
| 实时性 | 完全满足实时需求 | 可能因调度产生延迟 |
| 图形性能 | 100%发挥GPU能力 | 通常需要额外配置 |
| 系统隔离 | 完全隔离 | 共享主机资源 |
| 切换便利性 | 需要重启 | 随时切换 |
对于ego_planner这类需要实时响应和高效计算的无人机规划器,双系统显然是更优选择。特别是当你需要:
- 运行高精度仿真
- 处理大量传感器数据
- 进行实时路径规划
- 充分利用GPU加速
提示:如果你只是偶尔使用ROS或进行简单开发,虚拟机可能更方便。但专业开发或性能敏感场景,双系统是必选项。
2. 安全安装双系统的关键准备
安装双系统最令人担忧的莫过于可能影响现有Windows系统。通过以下准备,你可以将风险降至最低。
2.1 必备工具与材料
- 至少8GB容量的U盘(用于制作启动盘)
- Ubuntu 20.04 LTS镜像(推荐从官网下载)
- Rufus工具(用于创建可启动U盘)
- 备份重要数据(至少保留两份不同介质的备份)
2.2 磁盘分区规划
现代UEFI系统下,分区方案已大幅简化,但仍需注意:
- EFI系统分区:Windows已创建,无需改动
- Windows分区:建议保持至少100GB空闲空间
- Ubuntu分区:
/根分区:建议30-50GB(ext4格式)swap交换分区:内存大小的1-2倍(仅当内存<8GB时需要)/home家目录:剩余所有空间(ext4格式)
使用Windows磁盘管理工具压缩现有分区是最安全的方式:
1. 右键"此电脑"→"管理"→"磁盘管理" 2. 选择有足够空间的磁盘(通常是C盘) 3. 右键→"压缩卷",输入要压缩的空间量(建议至少80GB) 4. 点击"压缩"后,会出现未分配空间,留待Ubuntu安装时使用2.3 禁用快速启动和安全启动
Windows的快速启动可能干扰双系统安装:
# 以管理员身份打开PowerShell执行: powercfg /h off安全启动则可能导致Ubuntu安装失败,建议在BIOS中暂时禁用:
- 重启电脑,按制造商指定键(通常是F2、F12或Del)进入BIOS
- 找到"Secure Boot"选项,设置为Disabled
- 保存设置并退出
3. Ubuntu 20.04安装详解
3.1 创建可启动U盘
使用Rufus工具制作启动盘:
- 插入U盘(注意:制作过程会清空U盘所有数据)
- 打开Rufus,选择你的U盘设备
- 点击"选择",浏览并加载下载的Ubuntu 20.04 ISO文件
- 分区方案选择"GPT",目标系统选择"UEFI"
- 点击"开始",等待制作完成
3.2 实际安装步骤
- 插入启动U盘,重启电脑,进入启动菜单(通常是F12)
- 选择UEFI USB设备启动
- 选择"Install Ubuntu"
- 语言选择中文或英文,继续
- 在"安装类型"界面,选择"其他选项"进行手动分区
- 在之前准备的未分配空间上创建分区:
- EFI系统分区:300MB(保持与Windows共用原有EFI分区)
- swap交换分区:8GB(如果内存充足可不设)
- /根分区:40GB(ext4格式,挂载点/)
- /home家目录:剩余空间(ext4格式,挂载点/home)
- 设备引导加载器安装位置选择EFI分区(通常是/dev/sda1)
- 设置用户名密码,继续安装
- 安装完成后重启,移除U盘
注意:如果重启后直接进入Windows,需要进入BIOS调整启动顺序,将Ubuntu启动项置顶。
3.3 安装后优化
首次进入Ubuntu后,建议立即执行以下优化:
# 更新系统 sudo apt update && sudo apt upgrade -y # 安装必要工具 sudo apt install -y git curl wget build-essential # 修复可能的显卡驱动问题 sudo ubuntu-drivers autoinstall4. ROS与ego_planner环境部署
4.1 使用鱼香ROS一键安装
鱼香ROS脚本极大简化了ROS安装过程:
wget http://fishros.com/install -O fishros && . fishros运行后按提示操作:
- 选择"1.安装ROS"
- 选择"ROS1 Noetic"(对应Ubuntu 20.04)
- 选择"桌面完整版(Desktop-Full)"
- 等待安装完成
安装完成后验证ROS环境:
# 初始化rosdep sudo rosdep init rosdep update # 测试核心功能 roscore & rosrun turtlesim turtlesim_node应该能看到乌龟仿真窗口弹出。
4.2 部署ego_planner规划器
4.2.1 安装依赖
# 安装Armadillo库 sudo apt-get install -y libarmadillo-dev # 安装其他必要依赖 sudo apt-get install -y ros-noetic-octomap-* ros-noetic-mavros ros-noetic-mavros-extras4.2.2 克隆代码库
国内用户推荐使用gitee镜像加速:
git clone https://gitee.com/iszhouxin/ego-planner.git或直接从GitHub克隆:
git clone https://github.com/ZJU-FAST-Lab/ego-planner.git4.2.3 编译项目
cd ego-planner catkin_make -DCMAKE_BUILD_TYPE=Release编译过程可能需要10-30分钟,取决于硬件性能。
4.2.4 运行仿真
在三个不同终端中分别执行:
# 终端1:启动ROS核心 roscore # 终端2:启动RViz可视化 source devel/setup.bash roslaunch ego_planner rviz.launch # 终端3:运行规划器仿真 source devel/setup.bash roslaunch ego_planner run_in_sim.launch成功运行后,你将在RViz中看到无人机和规划路径的可视化效果。
5. 常见问题与解决方案
5.1 双系统启动问题
问题:安装Ubuntu后无法看到启动菜单
解决:
# 在Ubuntu中安装并配置grub sudo apt install --reinstall grub-efi-amd64 sudo grub-install /dev/sda sudo update-grub5.2 ROS环境配置问题
问题:rosdep update失败
解决:
# 修改hosts文件 sudo sh -c 'echo "199.232.28.133 raw.githubusercontent.com" >> /etc/hosts' # 重新尝试 rosdep update5.3 ego_planner编译错误
问题:缺少依赖导致编译失败
解决:
# 安装所有可能需要的依赖 sudo apt-get install -y ros-noetic-geographic-msgs ros-noetic-tf2-sensor-msgs ros-noetic-joy5.4 性能优化建议
为获得最佳性能,建议:
- 在BIOS中禁用Intel SpeedShift技术
- 使用
cpufrequtils设置性能模式:sudo apt install cpufrequtils sudo cpufreq-set -g performance - 关闭不必要的图形效果:
然后在"窗口"选项卡中关闭动画效果sudo apt install gnome-tweaks gnome-tweaks
6. 进阶配置与调优
6.1 双系统时间同步问题
Windows和Linux处理硬件时钟的方式不同,会导致时间显示错误:
# 在Ubuntu中修复时间同步 timedatectl set-local-rtc 1 --adjust-system-clock6.2 共享文件夹设置
方便在双系统间交换文件:
# 安装NTFS支持 sudo apt install ntfs-3g # 创建挂载点并设置自动挂载 sudo mkdir /mnt/Windows sudo chmod 777 /mnt/Windows然后在/etc/fstab中添加(替换your_username为实际用户名):
UUID=你的Windows分区UUID /mnt/Windows ntfs-3g defaults,windows_names,locale=en_US.utf8 0 0使用blkid命令查看分区UUID。
6.3 ego_planner参数调优
编辑ego-planner/src/planner/plan_manage/launch/run_in_sim.launch文件,可调整:
<param name="max_vel" value="2.0" /> <!-- 最大速度 --> <param name="max_acc" value="1.0" /> <!-- 最大加速度 --> <param name="resolution" value="0.1" /> <!-- 地图分辨率 -->根据实际需求调整这些参数可以优化规划性能。