前言:唉,原本是能正常打开px4仿真的,但由于我的谜之操作,它就出现了这个错误,搜索了很多资料但关于这个的问题的我没找到,困住了我很久,我也发现也有一些人也会遇到这种问题,所以我就写了我第一篇博客!(我是一个刚入门不久的小白,如有不正确的地方,请多多包涵,谢谢)
我解决了这个问题多亏了豆包,在我不断的追问下解决了,所以下面内容都复制于豆包
1.
# 进入 PX4 源码目录
cd ~/PX4-Autopilot
# 查看所有子模块的状态
git submodule status
正常状态:输出会显示每个子模块的commit哈希值如(5f54b5asrc/drivers/...),没有特殊标记。)异常状态:前缀为-:子模块未初始化(未克隆)。前缀为+:子模块本地版本与主仓库指定版本不匹配(可能需要更新)。报错提示 error:Submodule ... not registered for path :子模块配置缺失。
2.
如果是正常状态请继续往下走,如果是异常状态可以问问豆包基本上可以解决
进一步验证关键子模块完整性虽然状态显示正常,可通过以下命令确认 Gazebo (gz) 仿真子模块(之前报错相关)的核心文件是否存在,排除“状态正常但文件缺失”的极端情况:
# 检查 gz 子模块的 CMakeLists.txt(之前报错缺失的文件)
ls -l Tools/simulation/gz/CMakeLists.txt
# 检查 gz 子模块的核心配置文件
ls -l Tools/simulation/gz/package.xml
- 若输出类似 -rw-rw-r-- 1 bpu bpu 1234 May 1 10:00 Tools/simulation/gz/CMakeLists.txt ,说明文件存在,子模块完整。
- 若仍提示“文件不存在”,可能是本地文件损坏,可执行以下命令强制重新拉取该子模块:
# 进入 gz 子模块目录
cd Tools/simulation/gz
# 重置并重新拉取该子模块
git reset --hard HEAD
git pull origin main
# 返回 PX4 主目录
cd ~/PX4-Autopilot
后续建议
既然子模块已完整,之前 make px4_sitl gz 报错“缺少 CMakeLists.txt”可能是构建缓存残留或Gazebo 仿真器未正确安装导致,可按以下步骤继续排查:
1. 彻底清理构建缓存(比 make clean 更彻底):
# 删除整个 build 目录(PX4 编译生成的所有文件)
rm -rf build/
2. 确认 Gazebo Sim 已正确安装:
# 检查 Gazebo 版本(需 >= 7.0,推荐 Fortress 或 newer)
gz sim --version
- 若提示“命令未找到”,需重新安装 Gazebo
3. 重新构建仿真目标:
# 直接指定具体机型(避免通用目标可能的配置问题)
make px4_sitl gz_x500
793

被折叠的 条评论
为什么被折叠?



