PX4软/硬件(SITL/HITL)SLAM在环仿真

介绍

https://blog.csdn.net/weixin_41469272/article/details/117919845的补充篇

主要介绍px4 的软硬件在环仿真,可以实现仿真世界的slam定位,以及仿真世界的遥控飞行(HITL)。
mavros使用的坐标系是ENU,与gazebo相同,可以通过gazebo世界中看坐标系(红绿蓝分别指xyz)观察无人机的世界坐标系。默认无人机机头朝向x方向,则无人机惯性体坐标系通常为(前左上)。

依赖

  • Dependencies:
    PX4 Firmware v1.8.0
    地面站:QGC
    视景:gazabo
    通信:mavros
PX4 Firmware:

下载:

git clone https://github.com/PX4/PX4-Autopilot.git --recursive

编译固件:

cd [PX4-Autopilot]
# 编译v1.8.0
#git checkout v1.8.0
#编译对应硬件版本的v1.8。0的固件,以下以v5为例,vx与飞控硬件版本号对应
make px4_fmu-v5_default
#编译sitl仿真程序
DONT_RUN=1 make px4_sitl_default gazebo-classic
或
make px4_sitl gazebo 

烧录v1.8.0固件
1)USB连接飞控ACM口
2)打开QGC,设置->固件
3)重新拔插USB-》弹出固件设置->勾选高级设置-》下拉框选择自定义固件-》弹出文件管理框-》找到编译好的固件px4_fmu-vx_default.px4
固件路径默认在[PX4-Autopilot]/build/nuttx_px4fmu-vx_default
sitl程序默认在[PX4-Autopilot]/build/posix_sitl_default
在这里插入图片描述

软件在环(SITL)仿真

Gazebo 软件无人机

  1. 更新环境变量
source [PX4-Autopilot]/Tools/setup_gazebo.bash [PX4-Autopilot] [PX4-Autopilot]/build/posix_sitl_default
  1. launch mavros sitl
    (1)仅启动STIL
cd [PX4-Autopilot]/launch
#仅启动gazebo和仿真无人机
roslaunch posix_sitl.launch

posix_sitl.launch文件内容

<?xml version="1.0"?>
<launch>
    <!-- Posix SITL environment launch script -->
    <!-- launches PX4 SITL, Gazebo environment, and spawns vehicle -->
    <!-- vehicle pose -->
    <arg name="x" default="0"/>
    <arg name="y" default="0"/>
    <arg name="z" default="0"/>
    <arg name="R" default="0"/>
    <arg name="P" default="0"/>
    <arg name="Y" default="0"/>
    <!-- vehicle model and world -->
    <arg name="est" default="ekf2"/>
    <arg name="vehicle" default="iris"/>
    <arg name="world" default="$(find mavlink_sitl_gazebo)/worlds/empty.world"/>
    <arg name="sdf" default="$(find mavlink_sitl_gazebo)/models/$(arg vehicle)/$(arg vehicle).sdf"/>
    <arg name="rcS" default="$(find px4)/posix-configs/SITL/init/$(arg est)/$(arg vehicle)"/>
    <!-- gazebo configs -->
    <arg name="gui" default="true"/>
    <arg name="debug" default="false"/>
    <arg name="verbose" default="false"/>
    <arg name="paused" default="false"/>
    <arg name="respawn_gazebo" default="false"/>
    <!-- PX4 configs -->
    <arg name="interactive" default="true"/>
    <!-- PX4 SITL -->
    <arg unless="$(arg interactive)" name="px4_command_arg1" value="-d"/>
    <arg     if="$(arg interactive)" name="px4_command_arg1" value=""/>
    <node name="sitl" pkg="px4" type="px4" output="screen" args="$(find px4) $(arg rcS) $(arg px4_command_arg1)" required="true"/>
    <!-- Gazebo sim -->
    <include file="$(find gazebo_ros)/launch/empty_world.launch">
        <arg name="gui" value="$(arg gui)"/>
        <arg name="world_name" value="$(arg world)"/>
        <arg name="debug" value="$(arg debug)"/>
        <arg name="verbose" value="$(arg verbose)"/>
        <arg name="paused" value="$(arg paused)"/>
        <arg name="respawn_gazebo" value="$(arg respawn_gazebo)"/>
    </include>
    <!-- gazebo model -->
    <node name="$(anon vehicle_spawn)" pkg="gazebo_ros" type="spawn_model" output="screen" args="-sdf -file $(arg sdf) -model $(arg vehicle) -x $(arg x) -y $(arg y) -z $(arg z) -R $(arg R) -P $(arg P) -Y $(arg Y)"/>
</launch>
~          

在这里插入图片描述
此时在终端回车,可以使用pxh命令,即px4的终端指令。
commander takeoff让飞机起飞
以及一些常用的mavlink命令,如启用飞控硬件串口,修改串口波特率等等。
eg;

mavlink start -d /dev/ttyS2 -b 1000000 -r 1000 -m onboard
mavlink stream -d /dev/ttyS2 -s ATTITUDE -r 1000
mavlink stream -d /dev/ttyS2 -s VISION_POSE_ESTIMATE -r 400 
mavlink stream -d /dev/ttyS2 -s LOCAL_POSITION_NED -r 1000

更多指令见本博客后续的介绍

(2)启动STIL,及mavros 地面站

cd [PX4-Autopilot]/launch
#启动gazebo和仿真无人机,以及mavros
roslaunch mavros_posix_sitl.launch

mavros_posix_sitl.launch

<?xml version="1.0"?>
<launch>
    <!-- MAVROS posix SITL environment launch script -->
    <!-- launches MAVROS, PX4 SITL, Gazebo environment, and spawns vehicle -->
    <!-- vehicle pose -->
    <arg name="x" default="0"/>
    <arg name="y" default="0"/>
    <arg name="z" default="0"/>
    <arg name="R" default="0"/>
    <arg name="P" default="0"/>
    <arg name="Y" default="0"/>
    <!-- vehicle model and world -->
    <arg name="est" default="ekf2"/>
    <arg name="vehicle" default="iris"/>
    <arg name="world" default="$(find mavlink_sitl_gazebo)/worlds/empty.world"/>
    <arg name="sdf" default="$(find mavlink_sitl_gazebo)/models/$(arg vehicle)/$(arg vehicle).sdf"/>
    <arg name="rcS" default="$(find px4)/posix-configs/SITL/init/$(arg est)/$(arg vehicle)"/>
    <!-- gazebo configs -->
    <arg name="gui" default="true"/>
    <arg name="debug" default="false"/>
    <arg name="verbose" default="false"/>
    <arg name="paused" default="false"/>
    <arg name="respawn_gazebo" default="false"/>
    <!-- MAVROS configs -->
    <arg name="fcu_url" default="udp://:14540@localhost:14557"/>
    <arg name="respawn_mavros" default="false"/>
    <!-- PX4 configs -->
    <arg name="interactive" default="true"/>
    <!-- PX4 SITL and Gazebo -->
    <include fil
<think>好的,我现在需要处理用户关于PX4开发入门教程或自动驾驶框架开发指南的请求。首先,用户提到了PX4,我需要确认PX4的基本信息。根据用户提供的引用[1],PX4是无人机和其他无人驾驶车辆的开源飞行控制件,为开发者提供灵活的工具。因此,核心信息应该在引用[1]里。 接下来,用户需要教程或开发指南。我需要先整理PX4开发的基础步骤,可能包括境搭建、代码结构、仿真工具等。同时,用户提到了自动驾驶框架,可能需要结合ROS或其他自动驾驶相关的工具,比如引用[3]提到的分布式对象检测和分类可能与自动驾驶相关,但引用[3]主要讨论数据集的代表性问题,可能关联性不大。需要看看是否有其他引用相关的内容。 查看用户提供的引用,引用[2]提到Nvidia的硬件如Jetson在自动驾驶中的应用,但用户的问题是关于PX4的,可能PX4更多用于无人机,而自动驾驶框架可能涉及地面车辆。不过PX4本身支持多种无人载具,所以可能需要涵盖其在自动驾驶中的应用。 现在需要组织回答结构,按照用户的要求分步骤清晰说明。可能包括:境搭建、代码结构分析、仿真工具使用、与自动驾驶框架的集成(如ROS)。同时,用户提供的引用中,引用[1]直接关联PX4,引用[2]和[3]可能作为扩展,比如在自动驾驶中使用的硬件或OOD感知方面。 然后,生成相关问题,用户示例中有三个问题,这里也需要三个相关问题,可能需要涵盖PX4的学习资源、硬件选型、自动驾驶集成挑战等。 需要注意的是,回答中如果引用到提供的资料,需要在末尾添加引用标识。比如引用[1]关于PX4的描述,引用[2]关于硬件成本的问题,引用[3]关于数据集或OOD检测的内容是否相关可能需要判断。 现在整理步骤: 1. PX4开发入门步骤:安装境、学习基本概念、代码结构。 2. 自动驾驶框架开发:可能需要结合PX4的导航堆栈、与ROS的集成。 3. 教程资源推荐:官方文档、社区资源。 4. 硬件选择:如引用[2]提到的低成本设备如Jetson。 5. 仿真工具:如Gazebo、QGroundControl。 6. 应用场景:无人机自动驾驶,可能扩展到其他载具。 最后,生成相关问题,比如如何选择硬件PX4与ROS集成方法,自动驾驶算法开发挑战等。</think>### PX4开发入门与自动驾驶框架开发指南 #### 1. PX4开发入门教程 **步骤一:境搭建与工具链安装** - **操作系统支持**:PX4支持Linux(推荐Ubuntu)、macOS和Windows(需配合WSL2或虚拟机)。 - **依赖安装**:使用官方脚本快速安装: ```bash bash ./Tools/setup/ubuntu.sh ``` 此脚本会自动安装编译器、仿真工具(如Gazebo)和通信库(如MAVLink)[^1]。 **步骤二:代码结构与基本概念** - **代码仓库**:PX4核心代码位于GitHub仓库:[PX4/Firmware](https://github.com/PX4/Firmware),包含飞控算法、传感器驱动和通信模块。 - **关键模块**: - `src/modules/`:飞行控制逻辑(如姿态估计、导航)。 - `msg/`:自定义消息格式(基于uORB通信机制)。 - `ROMFS/`:硬件配置文件(如无人机机型定义)。 **步骤三:仿真与测试** - **硬件HITL)**:通过Gazebo或JMAVSim进行无人机行为仿真。 ```bash make px4_sitl gazebo_iris ``` - **地面控制站(QGC)**:使用QGroundControl监控飞行状态并调试参数。 --- #### 2. PX4自动驾驶框架开发 **核心组件** - **导航堆栈(Navigation Stack)**:基于全局路径规划(如A*算法)和局部避障(如VFH+)。 - **与ROS集成**:通过`MAVROS`包实现PX4与ROS的通信,支持传感器数据订阅和指令下发: ```python # 示例:通过ROS发送目标位置 from mavros_msgs.msg import PositionTarget pub = rospy.Publisher('/mavros/setpoint_raw/local', PositionTarget, queue_size=10) ``` 引用[3]提到自动驾驶需关注非分布数据的鲁棒性,开发者需结合多模态传感器提升境感知能力[^3]。 **硬件选型建议** - 低成本方案:Nvidia Jetson系列(如Jetson Nano)适合部署轻量级SLAM算法[^2]。 - 高性能需求:选用PX4支持的Pixhawk系列飞控,搭配激光雷达或双目摄像头。 --- #### 3. 学习资源推荐 - **官方文档**:[PX4 User Guide](https://docs.px4.io/master/en/)提供从入门到高级开发的详细教程。 - **社区支持**:参与[PX4 Discuss](https://discuss.px4.io/)论坛,获取实时问题解答。 - **案例实践**:参考官方示例代码(如`Firmware/src/examples/`),逐步实现定高飞行、自动巡航等功能。 --- ###
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值