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话题就算仿真成功。

浙公网安备 33010602011771号