PX4/Pixhawk 教程 - 可视化参数配置和自启动 - param

px4常见的设置模块自启动的方式有两种,一种是在rx.xxx文件中添加需要启动的项,另一种是通过yaml参数配置文件。

通过添加系统启动项

通过修改系统的启动项实现模块的自启动:

px4/ROMFS/px4fmu_common/init.d/rc.xxx,xxx为类别的名称,目录截图如下:
在这里插入图片描述

这种方式的优点是可以为不同的机型设置不同的启动项,缺点是如果启动指令添加可变参数角为困难。

通过yaml文件配置参数

在模块的目录(CMakeLists)下新建module.yaml文件,例子如下:

module_name: Lanbao PSK-CM8JL65-CC5
serial_config:
    - command: cm8jl65 start -d ${SERIAL_DEV} -R p:SENS_CM8JL65_R_0
      port_config_param:
        name: SENS_CM8JL65_CFG
        group: Sensors

parameters:
    - group: Sensors
      definitions:
        SENS_CM8JL65_R_0:
            description:
                short: Distance Sensor Rotation
                long: |
                    Distance
make px4_sitl gazebo-classic_iris [0/4] Performing build step for 'sitl_gazebo-classic' ninja: no work to do. [3/4] cd /home/lsh/PX4-Autopilot/build...h/PX4-Autopilot/build/px4_sitl_default SITL ARGS sitl_bin: /home/lsh/PX4-Autopilot/build/px4_sitl_default/bin/px4 debugger: none model: iris world: none src_path: /home/lsh/PX4-Autopilot build_path: /home/lsh/PX4-Autopilot/build/px4_sitl_default GAZEBO_PLUGIN_PATH :/home/lsh/PX4-Autopilot/build/px4_sitl_default/build_gazebo-classic:/home/lsh/PX4-Autopilot/build/px4_sitl_default/build_gazebo-classic GAZEBO_MODEL_PATH :/home/lsh/PX4-Autopilot/Tools/simulation/gazebo-classic/sitl_gazebo-classic/models:/home/lsh/PX4-Autopilot/Tools/simulation/gazebo-classic/sitl_gazebo-classic/models LD_LIBRARY_PATH /home/lsh/catkin_ws/devel/lib:/opt/ros/noetic/lib:/home/lsh/PX4-Autopilot/build/px4_sitl_default/build_gazebo-classic:/home/lsh/PX4-Autopilot/build/px4_sitl_default/build_gazebo-classic empty world, setting empty.world as default Using: /home/lsh/PX4-Autopilot/Tools/simulation/gazebo-classic/sitl_gazebo-classic/models/iris/iris.sdf SITL COMMAND: "/home/lsh/PX4-Autopilot/build/px4_sitl_default/bin/px4" "/home/lsh/PX4-Autopilot/build/px4_sitl_default"/etc ______ __ __ ___ | ___ \ \ \ / / / | | |_/ / \ V / / /| | | __/ / \ / /_| | | | / /^\ \ \___ | \_| \/ \/ |_/ px4 starting. INFO [px4] startup script: /bin/sh etc/init.d-posix/rcS 0 INFO [init] found model autostart file as SYS_AUTOSTART=10015 INFO [param] selected parameter default file parameters.bson INFO [param] importing from 'parameters.bson' INFO [parameters] BSON document size 396 bytes, decoded 396 bytes (INT32:15, FLOAT:5) INFO [param] selected parameter backup file parameters_backup.bson INFO [dataman] data manager file './dataman' size is 1208528 bytes INFO [init] PX4_SIM_HOSTNAME: localhost INFO [simulator_mavlink] Waiting for simulator to accept connection on TCP port 4560 Gazebo multi-robot simulator, version 11.15.1 看不到飞机
最新发布
10-07
<think>我们正在解决用户的问题:使用`make px4_sitl gazebo-classic_iris`构建并启动PX4 SITL仿真时看不到飞机。 根据用户提供的引用[1]引用[2]以及用户的上一个问题,我们可以推断用户可能是在进行PX4仿真环境的搭建,并且遇到了模型加载的问题。 用户提供的引用[1]中提到了创建传感器模型目录模型文件,引用[2]提到了启动命令的另一种形式。 常见的原因解决方法: 1. 模型文件缺失:Gazebo在启动时需要加载相应的模型(例如iris无人机模型),如果模型文件缺失,则无法显示。 2. 环境变量设置问题:Gazebo需要正确设置模型路径以找到模型。 3. 启动命令参数错误:可能命令参数有误,导致加载了不存在的世界或模型。 步骤: 1. 检查模型文件是否存在: 根据引用[1],PX4的模型通常位于`~/PX4-Autopilot/Tools/simulation/gazebo-classic/sitl_gazebo-classic/models`目录下。 特别是iris模型应该在`iris`文件夹中(注意:引用[1]中创建的是`iris_fusion`等,但标准的iris模型应该在`iris`文件夹)。 如果没有,可能需要从PX4源码中获取或者创建。 2. 设置Gazebo模型路径: 确保Gazebo知道到PX4的模型目录中寻找模型。可以通过设置环境变量`GAZEBO_MODEL_PATH`来实现。 例如,在启动前执行: export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:~/PX4-Autopilot/Tools/simulation/gazebo-classic/sitl_gazebo-classic/models 3. 检查启动命令: 用户使用的命令是`make px4_sitl gazebo-classic_iris`,但根据PX4的文档,正确的命令可能是`make px4_sitl gazebo-classic iris`(注意下划线的位置)。 实际上,PX4的标准命令是: make px4_sitl gazebo-classic 或者指定特定的机型(如iris)世界: make px4_sitl gazebo-classic_iris 但是,在引用[2]中,用户提到了一种格式:`make px4_sitl_default gazebo_iris__warehouse`,这里有两个下划线,注意PX4的命令格式是: make [PX4_CONFIG] [MODEL]_[WORLD] 所以,用户命令中的`gazebo-classic_iris`可能是将`gazebo-classic`作为配置,而`iris`作为机型?实际上,标准的命令应该是: make px4_sitl_default gazebo-classic_iris 注意:PX4的make命令格式是:`make [config]_[model] [viewer]`,其中`[config]`是配置(如`px4_sitl_default`),`[model]`是模型(如`iris`),`[viewer]`是查看器(如`gazebo-classic`)。 因此,正确的命令可能是: make px4_sitl_default gazebo-classic iris 或者 make px4_sitl_default iris gazebo-classic 但是,根据PX4官方文档,更常见的写法是: make px4_sitl_default gazebo-classic 然后,它会默认使用iris模型。或者,指定模型世界: make px4_sitl_default gazebo-classic_iris_ide 所以,用户命令中的`gazebo-classic_iris`可能是一个组合目标,但实际在PX4中,这个组合目标可能并不存在,因此需要检查。 4. 查看日志信息: 启动时,注意Gazebo的终端输出,看是否有关于模型加载失败的错误信息。 解决方案建议: 1. 确保模型存在: 检查`~/PX4-Autopilot/Tools/simulation/gazebo-classic/sitl_gazebo-classic/models`目录下是否有名为`iris`的文件夹,并且里面有model.sdf等文件。 2. 尝试使用标准命令: 使用以下命令启动: cd ~/PX4-Autopilot export GAZEBO_MODEL_PATH=${GAZEBO_MODEL_PATH}:$(pwd)/Tools/simulation/gazebo-classic/sitl_gazebo-classic/models make px4_sitl_default gazebo-classic 或者,如果指定iris模型: make px4_sitl_default gazebo-classic_iris 3. 如果模型缺失,可以从源码中添加: 如果发现缺失,可以从PX4的源码仓库中获取这些模型,或者重新运行`make px4_sitl gazebo-classic`,它应该会自动构建设置。 4. 更新PX4固件子模块: 确保所有子模块已经更新: cd ~/PX4-Autopilot git submodule update --init --recursive 5. 清理编译: 尝试清理后重新编译: make clean make px4_sitl_default gazebo-classic 注意:用户的问题中命令是`make px4_sitl gazebo-classic_iris`,而标准命令中通常使用`px4_sitl_default`作为配置。用户可能漏掉了`_default`,但PX4有时允许省略(因为`px4_sitl`是`px4_sitl_default`的别名)。所以命令本身可能是正确的,但模型路径问题更常见。 由于用户之前提到过创建传感器模型的目录,可能用户自己添加了一些模型,但标准模型(如iris)应该已经存在。所以首先检查标准模型是否存在。 总结解决方法: 1. 检查并设置GAZEBO_MODEL_PATH环境变量,确保包含PX4的模型目录。 2. 确认iris模型文件存在。 3. 使用正确的命令启动。 如果以上步骤不能解决,请提供启动时的错误日志。 根据用户引用问题,我们给出如下回答: </think>### 解决无法显示Gazebo仿真飞机的方案 根据您提供的引用信息PX4开发经验[^1][^2],当执行`make px4_sitl gazebo-classic_iris`后看不到飞机模型时,可按以下步骤排查: #### 1. **验证模型文件完整性** - 检查Iris无人机模型是否存在: ```bash ls ~/PX4-Autopilot/Tools/simulation/gazebo-classic/sitl_gazebo-classic/models/iris ``` 若缺失模型文件,需重新下载或创建: ```bash git submodule update --init --recursive # 更新PX4子模块 mkdir -p ~/PX4-Autopilot/Tools/simulation/gazebo-classic/sitl_gazebo-classic/models/iris ``` #### 2. **设置Gazebo模型路径** 在终端执行(临时生效): ```bash export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:~/PX4-Autopilot/Tools/simulation/gazebo-classic/sitl_gazebo-classic/models ``` 永久生效可添加到`~/.bashrc`文件底部。 #### 3. **清理并重新编译** ```bash cd ~/PX4-Autopilot make clean # 清理旧编译 make px4_sitl gazebo-classic_iris # 重新编译 ``` #### 4. **检查Gazebo启动日志** 启动时观察终端输出: - 若出现 `[Err] [ModelDatabase.cc:340] Unable to find model[iris]` → 模型路径错误 - 若出现 `[Wrn] [SystemPaths.cc:459] File or path does not exist` → 依赖缺失 #### 5. **替代启动方案尝试** 改用带世界文件的启动命令[^2]: ```bash make px4_sitl_default gazebo_iris__empty # 启动空场景 ``` #### 6. **验证Gazebo环境** 单独启动Gazebo测试模型加载: ```bash gazebo --verbose worlds/empty.world # 手动插入iris模型检查显示 ``` > **排查流程图**: > ``` > 看不到飞机 → 检查GAZEBO_MODEL_PATH → 验证/models/iris目录 → 清理重编译 → 查看Gazebo日志 > │ │ │ └─▶ 成功显示 > └─▶ 路径错误 ─────┘ └─▶ 文件缺失 → 补全模型 → 重试 > ``` ### 常见原因总结 | 现象 | 可能原因 | 解决方案 | |------|----------|----------| | 黑屏/Gazebo未启动 | 依赖缺失 | `sudo apt install gazebo11 libgazebo-dev` | | 只有地面无飞机 | 模型路径错误 | 正确设置`GAZEBO_MODEL_PATH` | | 终端报`Model iris not found` | 模型文件缺失 | 重新初始化子模块 | 如果以上步骤仍无效,建议提供完整的终端启动日志以便进一步分析。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值