(最新)ubuntu搭建PX4无人机仿真环境(4) ——仿真环境搭建(以Ubuntu 18.04,ROS1 Melodic 为例)

Ubuntu搭建PX4无人机仿真环境 前言 本教程基于 ROS1 ,在搭建之前,必须把 ROS、MAVROS、QGC 等基础环境安装配置完成。如果没有配置完成,大家可以参考我之前的教程配置。 小白必看 : 本次安装是以 PX4 v1.13.2 为例。 我的配置如下: 虚拟机 Ubuntu 18.04...
(最新)ubuntu搭建PX4无人机仿真环境(4) ——仿真环境搭建(以Ubuntu 18.04,ROS1 Melodic 为例)
(最新)ubuntu搭建PX4无人机仿真环境(4) ——仿真环境搭建(以Ubuntu 18.04,ROS1 Melodic 为例)

Ubuntu搭建PX4无人机仿真环境

前言

本教程基于 ROS1 ,在搭建之前,必须把 ROS、MAVROS、QGC 等基础环境安装配置完成。如果没有配置完成,大家可以参考我之前的教程配置。

小白必看:backhand_index_pointing_down::backhand_index_pointing_down::backhand_index_pointing_down::backhand_index_pointing_down::backhand_index_pointing_down::backhand_index_pointing_down::backhand_index_pointing_down:

本次安装是以 PX4 v1.13.2 为例。
我的配置如下:
虚拟机 Ubuntu 18.04 (运行内存 4G、硬盘内存 80G) 、ROS1 MelodicQGC v4.2.6

( Ubuntu 20.04 、ROS1 Noetic 、PX4 v1.13.2 同样适用;Ubuntu 20.04 、ROS1 Noetic 、PX4 v1.14.0及以上也同样适用)

  1. 禁止无脑复制:首先大部分命令都有先后顺序,就是要上一个命令执行成下一个才能执行成功,对于不熟悉的命令可以直接复制问AI 这样还能顺带学习学习;其次在有些情况下多个命令一起执行会出现奇怪的错误,而且有些命令旁边有注释,有时候复制上去可能也会出现错误。
  2. 建议使用虚拟机:虽然虚拟机得性能有限,但是对于新手入门阶段是完全够用了,后续大型仿真再用双系统也比较熟悉了。而且虚拟机有一个快照功能,可以保存当前虚拟机的状态 (相当于存档),这样如果后面出了问题要重新搭建环境,可以用快照回到上一个状态,这样就不用重头开始(我一般是安装好 ROS 拍一个、安装好 mavros 拍一个…)。
  3. 关于网络:由于一些懂得都得的原因,再加上每个人的网络环境不同,我们下载 GitHub上的资源、安装 Python 包、apt 安装包等会时快时慢,所以大家会换源,比如一开始的换 apt 软件安装源等。但是下载资源一定要耐心,如果是网络问题,可以尝试多执行几次命令,而且有些我也给了相应的解决方案。

px4与ROS仿真关系图

1. 准备

1.1 下载源码

方式一:

从 Github 上下载,但是比较考验个人网速

sudo apt install git
git clone https://github.com/PX4/PX4-Autopilot.git # 下载源码
mv PX4-Autopilot PX4_Firmware  # 更改目录名
cd PX4_Firmware
git checkout v1.13.2  # 切换版本
git submodule update --init --recursive   # 更新下载子模块
方式二:

从提供的网盘里下,或者从QQ群(961297255)里下载

链接: 百度网盘 请输入提取码
提取码: krb5

下载后解压,然后执行下面命令:

cd PX4_Firmware
wget https://gitee.com/tyx6/mytools/raw/main/px4/set_executable.sh
chmod +x set_executable.sh
./set_executable.sh

image-20240713232725611

1.2 安装依赖

cd ~/PX4_Firmware/Tools/setup

修改文件 (就修改了一个 python 包版本和把 pip 安装源换成了清华源),这一步是可做可不做,如果觉得python 包下载太慢了,可以试试

sed -i.bak 's/empy>=3.3/empy==3.3.4/' ./requirements.txt
sed -i.bak 's|\/requirements.txt|\/requirements.txt -i https:\/\/pypi.tuna.tsinghua.edu.cn\/simple|' ./ubuntu.sh
chmod +x ubuntu.sh
./ubuntu.sh --no-nuttx --no-sim-tools
# 这是官方提供的脚本 有两个可选参数
# --no-sim-tools   不安装仿真环境
# --no-nuttx   不安装交叉编译环境
#(如果需要自己编译飞控固件,烧录到飞控中,那就需要交叉编译环境)
# 脚本执行时间,跟个人网络有关,可能需要一段时间

重启 Ubuntu

1.3 安装 Gazebo

Gazebo是一款强大的3D仿真软件,主要用于机器人学的研究和开发。它提供了高度逼真的物理模拟环境,包括动力学、碰撞检测、传感器模型以及与真实世界相似的物理属性如重力、摩擦力等。Gazebo可以模拟各种类型的机器人,从移动机器人、无人机到机械臂,甚至可以模拟整个城市环境。(由于Gazebo版本变化,现在也叫 Gazebo Classic)

注: 使用之前要检查是否已经安装了 gazebo ,建议使用官方推荐的gazebo版本

gazebo --version

image-20230518182923594

如果出现 上图内容,说明没有安装,如果出现了 gazebo的版本信息 说明已经安装了,要卸载,命令如下:

sudo apt-get remove gazebo* 
sudo apt-get remove libgazebo*
sudo apt-get remove ros-$ROS_DISTRO-gazebo*

卸载完后,开始安装**(Ubuntu 18 会安装 gazebo 9.19,Ubuntu 20 会安装 gazebo 11.15.1)**:

cd ~/PX4_Firmware/Tools/setup
./ubuntu.sh --no-nuttx
# 这一步会安装仿真环境,包括gazebo
# 脚本执行时间,跟个人网络有关,可能需要一段时间
sudo apt-get install ros-$ROS_DISTRO-gazebo-ros-pkgs ros-$ROS_DISTRO-gazebo-ros-control
sudo apt update && sudo apt upgrade

重启 Ubuntu ,之后测试一下gazebo

gazebo --version

image-20230518193626719

image-20240613172358718

再运行一下 gazebo

gazebo

image-20230518193458598

如果是在虚拟机上,可能出现上图错误,输入以下命令:

echo "export SVGA_VGPU10=0" >> ~/.bashrc
source ~/.bashrc

重新运行

gazebo

出现类似下图,表示运行成功:

image-20230518193754167

注:
运行Gazebo仿真,可能会缺模型,这时会自动下载,Gazebo模型服务器在国外,自动下载会比较久,所以我们可以先下载到本地。

git clone https://gitee.com/tyx6/gazebo_models.git
# 检测文件夹 ~/.gazebo/models 是否存在,如果不存在就创建文件夹
if [ ! -d "~/.gazebo/models" ]; then mkdir -p ~/.gazebo/models ;fi
mv ./gazebo_models/* ~/.gazebo/models/

或者也可以用下面提供的ZIP压缩包,将该压缩包里的模型文件放在 ~/.gazebo/models/ 路径下,然后可以看到很多模型文件。

如果下载慢,可以从网盘里下,或者从QQ群(961297255)里下载
链接:百度网盘 请输入提取码
提取码:ud28

2. 编译

cd ~/PX4_Firmware
make px4_sitl_default gazebo   # 这步可能有点慢

出现类似下图,表示编译成功 :grinning_face_with_smiling_eyes:

image-20230518200048625

注:如果运行后终端有下图报错,这个不影响仿真,不用管也行。这是因为 gazebo 会检查 models 文件夹下是否有 model.config 文件,但是 .git 文件夹不属于 model 文件,那自然也不会有 model.config 文件。如果觉得难受就从其他model.config文件复制修改一个过来,或者删掉 .git 文件夹。

image-20240713224216214

3. 配置环境

将下面语句添加到 ~/.bashrc(此文件在主目录下,是个隐藏文件) 文件中(前两个source顺序不能颠倒,路径要根据自己的实际路径修改,如果一直按照我的步骤来,应该是不用修改)

gedit ~/.bashrc  # 打开文件
source ~/catkin_ws/devel/setup.bash # 可选
source ~/PX4_Firmware/Tools/setup_gazebo.bash ~/PX4_Firmware ~/PX4_Firmware/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware/Tools/sitl_gazebo

v1.14

source ~/catkin_ws/devel/setup.bash    # 可选
source ~/PX4_Firmware/Tools/simulation/gazebo-classic/setup_gazebo.bash ~/PX4_Firmware ~/PX4_Firmware/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware/Tools/simulation/gazebo-classic/sitl_gazebo-classic

注: 为了方便大家,我做了一个自动添加环境的脚本,效果与手动添加等同,只要有一个成功就行。
首先下载脚本,然后将脚本放入你的 PX4 源码目录下,再执行(以我的为例)

cd ~/PX4_Firmware
wget https://gitee.com/tyx6/mytools/raw/main/px4/setenv.sh
# 添加可执行权限
chmod +x setenv.sh
./setenv.sh

执行完后如下所示

image-20240613182845261

再运行(最好重启一下 Ubuntu ):

source ~/.bashrc

关掉终端,再次打开,会像下图一样:

image-20230518201024131

4. 测试

在终端输入下面命令:

roslaunch px4 mavros_posix_sitl.launch

image-20230525232209841

注: 有时启动Gazebo会出现奇怪的报错,这时可以通过 killall -9 gzclientkillall -9 gzserver 彻底关闭Gazebo,再启动roslaunch尝试解决,或通过重启电脑尝试解决。

打开另一个终端,运行下面命令,查看MAVROS与仿真无人机通信状况。若connected: True,则通信成功,如果是false,一般是因为 .bashrc 里的路径写的不对,请仔细检查。

rostopic echo /mavros/state | grep connected    # 只查看 connected 信息
rostopic echo /mavros/state                     # 只查看全部信息

image-20230525232908577

到这 PX4 无人机基本仿真环境就搭建完成了,大家可以基于此来拓展自己的仿真。

参考

仿真平台基础配置(对应PX4 1.13版) (yuque.com)

PX4 documentation

2 个帖子 - 2 位参与者

阅读完整话题

来源: LinuxDo 最新话题查看原文