Windouws11下WSL2的Ubuntu22.04安装及ROS2+PX4环境配置

一、准备工作

1.开启windows相关功能

开始 \(\rightarrow\) 搜索 \(\rightarrow\) 程序与功能 \(\rightarrow\) 启动或关闭Windows功能 \(\rightarrow\) 勾选 "适用于LInux的Windows子系统""虚拟机平台"

保存当前工作后,按要求重启即可

2.安装内核更新包

https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

  • 不安装内核更新包可能出现错误安装Linux子系统失败提示错误代码0x800701bc

3.在命令提示符(Command Prompt,也俗称为控制台)中设置wsl默认版本为2并更新wsl

wsl --set-default-version 2
wsl --update

4.下载子系统

开始 \(\rightarrow\) 搜索 \(\rightarrow\) PowShell

#查看可安装banben
wsl --list --online 
#开始安装
wsl --install -d Ubuntu-22.04

选择需要的版本安装(我在这里选的是Ubuntu22.04)

二、安装子系统

1.Ubuntu 系统安装

开始 \(\rightarrow\) 搜索 \(\rightarrow\) Ubuntu22.04 运行会自动安装子系统ubuntu22.04

安装完以后输入用户名和密码(Ubuntu22.04界面与Ubuntu18.04、Ubuntu20.04不同,但是内容大体相仿

  • 用户名首字母不要含有大写
  • 密码输入以后是不可见
  • 重新输入密码仍然是不可见

在PowerShell中使用wsl -l -v命令则可以查看当前的子系统信息

进入系统以后换源

sudo vim /etc/apt/sources.list

输入键盘上的“I”,进入插入模式

内容替换为

deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

按键盘上的“ESC”,然后输入:wq(注意冒号为半角)即可完成换源

更换完成后输入sudo apt-get update更新软件源列表即可

2.系统从C盘迁出

打开PowerShell,终止正在运行的分发或虚拟机:

wsl --shutdown

对需要迁移的分发或虚拟机导出(我安装的版本是Ubuntu-22.04):

wsl --export Ubuntu-22.04 path

我这里的path给的是D:\WSL2\wsl2_Ubuntu_2204
完整指令则是

wsl --export Ubuntu-22.04 D:\WSL2\wsl2_Ubuntu_2204

卸载分发版或虚拟机

wsl --unregister Ubuntu-22.04

导入新的分发版或虚拟机:

wsl --import Ubuntu-22.04  path --version 2

我这里的path给的是D:\WSL2\wsl2_Ubuntu_2204
完整指令则是

wsl --import Ubuntu-22.04 D:\WSL2 D:\WSL2\wsl2_Ubuntu_2204 --version 2

接下来需要找回一下账户:

ubuntu2204.exe config --default-user username

这里的username即为之前输入的用户名

  • 若报错安装其中一个文件系统时出现错误。有关详细信息,请运行'dmesg'。

    打开PowerShell运行wsl --shutdown后重启Ubuntu18.04即可。

  • 若出现错误系统找不到指定的文件需要重新安装ubuntu

3.重新安装Ubuntu(想卸载的时候使用这一节)

首先需要卸载Ubuntu,Microsoft Store中无法卸载,可以在控制面板中对Ubuntu卸载

查看当前环境安装的wsl

wsl --list

注销(卸载)当前安装的Linux的Windows子系统(名称要与list获取的一致)

wsl --unregister Ubuntu-22.04

卸载成功,查看当前安装的Linux的Windows子系统

wsl --list

再重新安装即可

三、环境配置

1.ROS安装(翻译自ROS2官方教程

设置本地化环境

locale  # 检查UTF-8
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
locale  # 验证设置

设置软件源

你需要将ROS2 apt仓库添加到你的系统中。

首先确保Ubuntu Universe仓库已启用。

sudo apt install software-properties-common
sudo add-apt-repository universe

ros-apt-source 软件包为各种ROS仓库提供密钥和apt源配置。

安装ros2-apt-source软件包将为你的系统配置ROS2仓库。当新版本的软件包发布到ROS仓库时,仓库配置的更新将自动进行。

sudo apt update && sudo apt install curl -y
export ROS_APT_SOURCE_VERSION=$(curl -s https://api.github.com/repos/ros-infrastructure/ros-apt-source/releases/latest | grep -F "tag_name" | awk -F\" '{print $4}')
curl -L -o /tmp/ros2-apt-source.deb "https://github.com/ros-infrastructure/ros-apt-source/releases/download/${ROS_APT_SOURCE_VERSION}/ros2-apt-source_${ROS_APT_SOURCE_VERSION}.$(. /etc/os-release && echo ${UBUNTU_CODENAME:-${VERSION_CODENAME}})_all.deb"
sudo dpkg -i /tmp/ros2-apt-source.deb

安装ROS2软件包

设置仓库后,更新你的apt仓库缓存。

sudo apt update

ROS2软件包是在经常更新的 Ubuntu 系统上构建的。在安装新软件包之前,建议始终确保你的系统是最新的。

sudo apt upgrade
警告

由于 Ubuntu 22.04 的早期更新,在安装 ROS 2 之前更新 systemd 和 udev 相关的软件包非常重要。在没有升级的情况下全新安装的系统上安装 ROS 2 的依赖项可能会触发关键系统软件包的删除。

更多信息请参考 ros2/ros2#1272 和 Launchpad #1974196。

桌面版安装(推荐):包含 ROS、RViz、演示和教程。

sudo apt install ros-humble-desktop

开发工具:用于构建 ROS 包的编译器和其他工具。

sudo apt install ros-dev-tools

执行设置脚本

通过执行以下文件来设置你的环境。

source /opt/ros/humble/setup.bash

初始化rosdep

初始化rosdep与网络环境关系很大,直接使用下面这个命令,选3就行

wget http://fishros.com/install -O fishros && . fishros

这行代码来源于这个网站

验证安装是否成功

新开两个终端,分别输入

ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key

出现小乌龟图标并且能控制(控制需要点中turtle_teleop_key所在的终端),说明ROS安装成功

2.PX4安装

从Github上Clone源码

git clone -b v1.16.0 https://github.com/PX4/PX4-Autopilot.git --recursive #Ubuntu22.04用这个v1.16.0版本,然后直接运行ubuntu.sh组件即可

进入PX4-Autopilot文件夹,继续下载未下载完的组件(一般是下完了,不放心可以运行一下这步)

cd PX4-Autopilot/
git submodule update --init --recursive

执行ubuntu.sh脚本

bash ./PX4-Autopilot/Tools/setup/ubuntu.sh

如果过程中有安装失败的地方,可以再用:

bash ./PX4-Autopilot/Tools/setup/ubuntu.sh --fix-missing
  • 更新一下,完成后一定要重启系统

测试PX4

进入你下载的PX4-Autopilot文件夹内,进行编译

cd PX4-Autopilot

make px4_sitl gz_x500

终端输入commander takeoff,可以看到无人机起飞

终端输入commander land, 可以看到无人机降落

个人感觉和ROS1最大的区别是更新到ROS2以后,PX4原生支持ROS2,不需要再安装MAVROS,但是需要一个组件micro-ROS Agent,这个组件将和ROS2使用同样的RTPS/DDS(ROS 2 的底层通信)直接将 PX4 的 uORB 消息(PX4 内部的主题)桥接到 ROS 2 主题。

但是这并不代表MAVROS不能用

Github上的MAVROS仓库有ROS2分支就能看出这一点,其次MAVROS将很多功能打包成ROS接口方便使用,同时考虑到兼容先前的代码,所以这里给出二进制安装的MAVROS版本教程,另一种飞控交互方式感兴趣的同学可以去自行探索。

3.MAVROS安装

sudo apt install ros-humble-mavros

然后运行以下命令测试

wget https://raw.githubusercontent.com/mavlink/mavros/ros2/mavros/scripts/install_geographiclib_datasets.sh

尝试运行

sudo chmod a+x ./install_geographiclib_datasets.sh
sudo ./install_geographiclib_datasets.sh  #这步需要装一段时间,请耐心等待PX4配置

再运行

roslaunch mavros px4.launch

能够通过ros2 topic list看到MAVROS话题就算仿真成功。

posted @ 2025-11-03 11:28  Soapen  阅读(601)  评论(2)    收藏  举报