px4_msgs编译报错问题解决,TypeError: canonicalize_version() got an unexpected keyword argument ‘strip_trailin

描述

最近在看官方教程,装PX4板外控制时,遇到px4_msgs包编译错误问题,如下:

 TypeError: canonicalize_version() got an unexpected keyword argument 'strip_trailing_zero'

当时很蒙逼,我是按官方给的步骤来的,怎么回报错。

经过查资料发现是系统自带的setuptools的版本问题,或者是没有这个东西。

解决办法

安装 setuptools==70.0.0的版本。

没有这个包的用户以及版本问题的用户直接执行以下命令,都可解决问题,这些可能需要科学上网

pip install --upgrade pip wheel pip-tools    //升级pip/安装pip工具
pip install --upgrade setuptools==70.0.0     //指定安装的版本
pip-compile requirements-dev.in              //更新配置

再编译就不会报错了

参考资料:https://github.com/pypa/setuptools/issues/4483

<think>嗯,用户遇到了“make px4_sitl gazebo”报错“no target gazebo”的问题。我需要仔细分析可能的原因。首先,我应该回忆PX4编译流程和相关依赖。通常,这个命令用于启动PX4的软件在环仿真(SITL)并连接Gazebo模拟器。出现“no target gazebo”说明编译系统找不到gazebo相关的目标。 可能的原因有几个方面。首先是PX4的代码仓库是否完整,特别是子模块有没有正确初始化。因为PX4依赖很多子模块,比如gazebo模型可能在Tools/sitl_gazebo目录下,如果子模块没有拉取,会导致缺少必要的文件。 其次是编译环境的问题,可能用户没有安装必要的依赖包。Gazebo本身需要一些ROS相关的包,或者PX4特定的依赖,比如gazebo_ros_pkgs或者px4_sitl相关的依赖没有安装。 另外,用户可能没有正确设置环境变量,比如GAZEBO_PLUGIN_PATH或者GAZEBO_MODEL_PATH,这些路径指向PX4的插件和模型目录,如果设置不正确,Gazebo无法找到相关资源,导致编译目标失败。 还有可能是用户使用的PX4版本和Gazebo版本不兼容。比如PX4的某个版本可能需要Gazebo7,而用户安装了Gazebo9,或者反过来,导致编译时找不到对应的目标。 我应该建议用户按照步骤排查。首先检查子模块是否初始化,使用git submodule update --init --recursive。然后确认依赖是否安装,特别是针对Gazebo的依赖。接着检查环境变量是否设置正确,可能需要手动添加路径。最后,确认PX4和Gazebo的版本兼容性,可能需要切换分支或更新代码。 另外,用户可能没有正确执行make clean或者重新配置,导致残留文件影响编译。建议用户清理构建目录并重新编译。如果问题依旧,查看详细的错误日志,确定具体缺失的文件或配置,进一步解决。</think>遇到`make px4_sitl gazebo`报错**"no target gazebo"**,通常是由以下原因导致: --- ### **原因分析** 1. **子模块未正确初始化** PX4源码依赖`Tools/sitl_gazebo`子模块(包含Gazebo仿真模型和插件),若未初始化或更新子模块,编译时会无法识别`gazebo`目标。 2. **依赖项缺失** Gazebo仿真需要额外依赖库(如`gazebo-dev`、`libgazebo*-dev`),若未安装会导致编译系统找不到目标。 3. **编译环境配置错误** - 未正确设置`GAZEBO_PLUGIN_PATH`或`GAZEBO_MODEL_PATH`环境变量。 - PX4与Gazebo版本不兼容(如PX4 v1.14+需要Gazebo 11)。 --- ### **解决方案** #### 步骤 1:初始化子模块 ```bash cd ~/PX4-Autopilot # 进入PX4源码目录 git submodule update --init --recursive # 强制更新所有子模块 ``` #### 步骤 2:安装Gazebo依赖 ```bash # 安装PX4仿真通用依赖 sudo apt-get install protobuf-compiler libeigen3-dev libopencv-dev -y # 安装Gazebo相关依赖(以Gazebo 11为例) sudo apt-get install gazebo11 libgazebo11-dev -y ``` #### 步骤 3:设置环境变量 ```bash # 临时生效(仅当前终端) export GAZEBO_PLUGIN_PATH=${GAZEBO_PLUGIN_PATH}:~/PX4-Autopilot/build/px4_sitl_default/build_gazebo export GAZEBO_MODEL_PATH=${GAZEBO_MODEL_PATH}:~/PX4-Autopilot/Tools/sitl_gazebo/models # 永久生效(写入.bashrc) echo "export GAZEBO_PLUGIN_PATH=\$GAZEBO_PLUGIN_PATH:~/PX4-Autopilot/build/px4_sitl_default/build_gazebo" >> ~/.bashrc echo "export GAZEBO_MODEL_PATH=\$GAZEBO_MODEL_PATH:~/PX4-Autopilot/Tools/sitl_gazebo/models" >> ~/.bashrc source ~/.bashrc ``` #### 步骤 4:清理并重新编译 ```bash make clean # 清理旧编译文件 make px4_sitl gazebo # 重新编译 ``` --- ### **扩展检查** - **版本兼容性**:确认PX4分支与Gazebo版本匹配(如`master`分支通常适配最新Gazebo)。 - **权限问题**:确保对`PX4-Autopilot`目录有读写权限。 - **网络问题**:子模块更新需访问GitHub,若网络不稳定可尝试使用代理。 --- 如果仍报错,建议附上完整终端输出,以便进一步排查!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值