目录
引言
在实际中想要测试一架无人机时在室外一旦出现错误将会带来非常大的损失,为此在真实场景测试前需要进行gazebo仿真操作,然而程序和环境在Jetson机载电脑中,需要Jetson发送ros命令给电脑虚拟机进行仿真,为此需要设置Jetson和虚拟机进行通信仿真。
1.PX4虚拟环境的安装
1.更新源
sudo apt-get update
sudo apt-get install git
2.拉取源代码
git clone https://github.com/Minderring/PX4-Autopilot.git
3.安装PX4
cd PX4-Autopilot
sudo bash ./Tools/setup/ubuntu.sh
sudo apt-get install libjpeg-dev zlib1g-dev
sudo -H python3 -m pip install kconfiglib
sudo -H python3 -m pip install pyros-genmsg
sudo -H python3 -m pip install toml
sudo -H python3 -m pip install numpy
sudo -H python3 -m pip install jinja2
sudo -H python3 -m pip install em
sudo -H python3 -m pip install jsonschema
sudo -H python3 -m pip install packaging
sudo -H python3 -m pip install --ignore-installed empy
sudo -H python3 -m pip install --ignore-installed future
如果上面的命令安装后还是报错,可以用下面的命令安装:
pip3 install kconfiglib
pip3 install --user empy
pip3 install --user jsonschema
pip3 install --user jinja2
pip3 install --user pyros-genmsg
pip3 install --user packaging
pip3 install --user toml
pip3 install --user numpy
sudo apt-get install gcc-arm-none-eabi
sudo chmod 777 /usr/include/newlib/math.h
sudo apt-get install libgazebo9-dev
sudo apt install libopencv-dev python3-opencv
sudo apt-get install libeigen3-dev
pip3 install kconfiglib
pip3 install --user jsonschema
sudo apt install python3-pip
pip3 install kconfiglib
sudo pip3 install jinja2
pip3 install --user jsonschema
4.PX4编译操作
make list_config_targets 查看所有可以用的编译命令
make distclean 重新清除或者将build文件夹删除
make clean 先清理编译缓存,再重新编译,
make micoair_h743-v2_bootloader 编译Bootloader
make micoair_h743-v2_default 编译固件
make px4_sitl_default 启动SITL (Software In The Loop) 仿真环境
make px4_sitl_default gazebo 安装完环境后编译生成gazebo仿真所需的sdf文件
1. px4_sitl_allyes
作用: 启动一个包含所有可能硬件和传感器的完整仿真配置。这个配置会启用所有的硬件模拟(传感器、飞控板、各种外设等)。
适用场景: 如果你需要一个完整的仿真环境来测试系统的各个方面,尤其是在没有实际硬件的情况下,适用于所有硬件都需要仿真的情况。
2. px4_sitl_default
作用: 启动一个默认的仿真环境,通常只包含飞行控制器和一些基本的传感器。相比 px4_sitl_allyes,它的功能和硬件支持会少一些,但速度通常会更快。
适用场景: 适用于大多数普通的仿真场景,只需要基础的飞行控制器和传感器仿真时使用。
3. px4_sitl_nolockstep
作用: 启动一个不使用锁步(lockstep)同步的仿真模式。锁步模式通常会保证仿真中的所有组件(比如飞控、传感器)在同一时间步同步执行,但在某些情况下,禁用锁步同步可以提高仿真的速度或处理特定问题。
适用场景: 如果你不需要严格的时间同步,或者在特定情况下禁用锁步同步可以提升性能或解决某些问题,可以使用这个模式。
4. px4_sitl_replay
作用: 这个命令允许你回放之前记录的仿真数据。它通常用于回放先前的仿真记录,以便分析飞行控制器的表现或调试。
适用场景: 用于调试、分析或者验证某次仿真中的问题,特别是当你已经有了仿真日志时。
5. px4_sitl_test
作用: 这个命令用于运行一些自动化测试,通常是测试系统中的某些功能是否正常。它可能会启动一个轻量级的仿真环境,专注于特定的测试用例。
适用场景: 用于单元测试、功能验证等场景,适合检查特定功能或测试模块的正确性。
6. px4_sitl_zenoh
作用: 启动基于 Zenoh 的仿真。Zenoh 是一个分布式的数据流平台,通常用于低延迟、高可靠性的数据传输。在仿真环境中,启用 Zenoh 可以模拟复杂的网络传输和通信。
适用场景: 如果你需要测试高效的数据传输和网络系统,或者在仿真环境中模拟更复杂的网络通信,使用这个命令是合适的。
2.QGC地面站的安装
1.首次安装QGroundControl之前:在终端依次输入一下命令
sudo usermod -a -G dialout $USER
sudo apt-get remove modemmanager -y
sudo apt install gstreamer1.0-plugins-bad gstreamer1.0-libav gstreamer1.0-gl -y
sudo apt install libfuse2 -y
sudo apt install libxcb-xinerama0 libxkbcommon-x11-0 libxcb-cursor-dev -y
newgrp dialout
2.下载.AppImage 文件
(1)可以直接从QGroundControl 官方网站下载或者命令行下载如下:
(2)命令行下载:
wget https://d176tv9ibo4jno.cloudfront.net/latest/QGroundControl.AppImage -O QGroundControl.AppImage
3.在下载好的文件位置处打开终端运行以下命令:
chmod +x ./QGroundControl.AppImage
./QGroundControl.AppImage
完成后即可打开QGC地面站,如下图所示:
3.mavros无线通信设置
1.Jetson机载电脑操作
进入px4.launch进行更改
<arg name="fcu_url" default="udp://@192.168.111.99:14557" />
IP地址为虚拟机地址,@表示只发不收,Jetson发送给PX4。
2.虚拟机设置
cd PX4-Autopilot
nano ~/PX4-Autopilot/ROMFS/px4fmu_common/init.d-posix/rcS
-u 14550
:让 PX4 监听 UDP 14550 端口(Jetson 会向这个端口发送数据)
-r 40000
:数据发送速率
-m onboard
:运行在板载模式(也可使用 external
,区别在于权限与心跳机制)
在文件后面加入
mavlink start -u 14557 -r 40000 -m onboard
这里面需要注意UDP端口要对应上,否则不报错但是接收不到消息
输入完成后ctrl+o保存、enter确认、ctrl+x退出
测试
Jetson端测试
roslaunch robot_bringup px4.launch fcu_url:=udp://@192.168.111.99:14557
192.168.180.99:14557
:是飞控的 MAVLink 数据发送地址。
虚拟机端测试
使用netcat测试是否收到了MAVLink
cd PX-Autopilot
make px4_sitl_default gazebo
nc -u -l 14557
测试结果
Jetson机载电脑端发送数据
虚拟机仿真端接收数据
虚拟机端出现乱码并且不停的跳动说明通信正常!!!