Windouws11下WSL2的Ubuntu18.04安装及ROS+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-18.04 # 安装Ubuntu-18.04
选择需要的版本安装(我在这里选的是Ubuntu18.04)
二、安装子系统
1.Ubuntu 系统安装
开始 \(\rightarrow\) 搜索 \(\rightarrow\) Ubuntu18.04 运行会自动安装子系统ubuntu18.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-18.04):
wsl --export Ubuntu-18.04 path
我这里的path给的是D:\WSL2\wsl2_Ubuntu_1804
完整指令则是
wsl --export Ubuntu-18.04 D:\WSL2\wsl2_Ubuntu_1804
卸载分发版或虚拟机
wsl --unregister Ubuntu-18.04
导入新的分发版或虚拟机:
wsl --import Ubuntu-18.04 path --version 2
我这里的path给的是D:\WSL2\wsl2_Ubuntu_1804
完整指令则是
wsl --import Ubuntu-18.04 D:\WSL2 D:\WSL2\wsl2_Ubuntu_1804 --version 2
接下来需要找回一下账户:
ubuntu1804.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-18.04
卸载成功,查看当前安装的Linux的Windows子系统
wsl --list
再重新安装即可
三、环境配置
1.ROS安装
添加ROS软件源
将下面这条命令复制到ubuntu的终端执行
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'
添加密钥
将以下命令复制到ubuntu的终端执行
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
- 如果公钥无法验证,就在网上搜相关的公钥替换上去即可
更新软件源
将以下命令复制到ubuntu的终端执行
sudo apt update
安装ROS
ubuntu18.04 执行下面的命令来安装
sudo apt install ros-melodic-desktop-full
如果提示有没安上的依赖,可以使用下面命令来安装
sudo apt-get install ros-melodic-rqt*
安装完再执行一下,确保安装成功
sudo apt install ros-melodic-desktop-full
初始化rosdep
初始化rosdep与网络环境关系很大,直接使用下面这个命令,选3就行
wget http://fishros.com/install -O fishros && . fishros
这行代码来源于这个网站
设置环境变量
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
验证安装是否成功
新开三个终端,分别输入
roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key
出现小乌龟图标并且能控制,说明ROS安装成功
2.PX4安装
从github上clone源码
git clone -b v1.11.1 https://github.com/PX4/PX4-Autopilot.git --recursive #Ubuntu18.04用这个v1.11.1版本,然后直接运行ubuntu.sh组件即可
进入PX4-Autopilot文件夹,继续下载未下载完的组件(一般是下完了,不放心可以运行一下这步)
cd PX4-Autopilot/
git submodule update --init --recursive
执行ubuntu.sh脚本
bash ./PX4-Autopilot/Tools/setup/ubuntu.sh
中间出错的话执行指令
python3 -m pip install --upgrade pip
python3 -m pip install --upgrade Pillow
如果过程中有安装失败的地方,可以再用:
bash ./PX4-Autopilot/Tools/setup/ubuntu.sh --fix-missing
- 更新一下,完成后一定要重启系统
测试PX4
进入你下载的PX4-Autopilot文件夹内,进行编译
cd PX4-Autopilot
make px4_sitl_default gazebo
若遇到类似的错误
FAILED: /home/xxxx/catkin_ws/Firmware/Tools/sitl_gazebo/models/iris/iris.sdf
则运行
sudo apt upgrade
再次编译即可成功:
make px4_sitl_default gazebo
若出现其它如.so文件缺失的错误,请删除X4-Autopilot文件夹后,重新git clone PX4源码
终端输入commander takeoff
,可以看到无人机起飞
终端输入commander land
, 可以看到无人机降落
添加环境变量
将这三行放入./.bashrc的最后面,作为./.bashrc的最后三排
Ubuntu18.04用下面这三行
source ~/PX4-Autopilot/Tools/setup_gazebo.bash ~/PX4-Autopilot/ ~/PX4-Autopilot/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4-Autopilot
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4-Autopilot/Tools/sitl_gazebo
3.MAVROS安装
sudo apt-get install ros-melodic-mavros ros-melodic-mavros-extras
然后运行以下命令测试
roslaunch mavros px4.launch
若出现以下报错
UAS: GeographicLib exception: File not readable /usr/share/GeographicLib/geoids/egm96-5.pgm | Run install_geographiclib_dataset.sh script in order to install Geoid Model dataset!
尝试运行
# sudo apt install ros-melodic-mavros ros-melodic-mavros-extras # for ros-melodic
wget https://gitee.com/robin_shaun/XTDrone/raw/master/sitl_config/mavros/install_geographiclib_datasets.sh
sudo chmod a+x ./install_geographiclib_datasets.sh
sudo ./install_geographiclib_datasets.sh #这步需要装一段时间,请耐心等待PX4配置
若出现以下报错
FCU: DeviceError:serial:open: No such file or directory
需要roscd到mavros下的launch下的px4.launch(apm.launch我也改了)
将串口修改为存在的串口(用这个命令来查看ls -l /dev/
)
<arg name="fcu_url" default="/dev/ttyACM0:57600" />
//改为我存在的串口,比如tty0
<arg name="fcu_url" default="/dev/tty0:57600" />
若再出现以下报错
FCU: DeviceError:serial:open: Permission denied
给串口权限即可
sudo chmod 666 /dev/ttyUSB0 #临时权限
永久打开串口权限
首先查看用户组
ls -l /dev/ttyUSB0
终端输出:
crw-rw-rw- 1 root dialout 188, 0 12月 19 14:47 /dev/ttyUSB0
可以看到用户 root ,所属用户组为 dialout, 因此一种方法是把我们的当前用户名 加入到这个用户组。
$ whoami
username
sudo usermod -aG dialout username
最后,logout 再登入系统,登陆名username就可以使用该串口了。
再运行
roslaunch mavros px4.launch
没有报错出现了。
运行
roslaunch px4 mavros_posix_sitl.launch
仿真成功
四、Fast-Planner工程实例
1.创建一个工作文件夹方便管理
mkdir work_sp
2.创建工作空间
# 创建工作空间
cd work_sp
mkdir -p catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
# 编译工作空间
cd ~/catkin_ws/
catkin_make # 编译src下面所有源码,但是不会生成install空间,如果需要生成install,catkin_make install
3.安装该工程的必要依赖
sudo apt-get install libarmadillo-dev ros-melodic-nlopt
cd work_sp/catkin_ws/src
git clone https://github.com/HKUST-Aerial-Robotics/Fast-Planner.git
cd ../
catkin_make
4.运行该实例
source devel/setup.bash && roslaunch plan_manage rviz.launch
新开一个终端
source devel/setup.bash && roslaunch plan_manage kino_replan.launch