问题描述
在 Gazebo 中进行 PX4 的软件在环仿真时,执 make px4_sitl gazebo命令时,整个编译过程都没问题,但是编译完成后,在启动 gazebo 时出现黑屏,报错如下:
gzserver: symbol lookup error: ~/Firmware/build/px4_sitl_default/build_gazebo/libgazebo_multirotor_base_plugin.so: undefined symbol: _ZN8mav_msgs4msgs10MotorSpeedC1Ev
原因分析
初步分析:
- 能成功编译但是启动时出错,说明这是运行时错误。
- 根据错误信息,可确定是与
libgazebo_multirotor_base_plugin插件有关,具体来说是与mav_msgs有关。
经过反复的研究,确定具体错误如下:
libgazebo_multirotor_base_plugin.cpp源代码中使用了mav_msgs::msgs::MotorSpeed消息,Firmware/Tools/sitl_gazebo/msgs目录中存有 MotorSpeed.proto消息的定义文件。该消息实际上并不是mav_msgs功能包中定义的,在sitl_gazebo目录中的CMakeLists.txt文件中部分代码如下:
set

本文详细解析了在Gazebo中进行PX4软件在环仿真时,libgazebo_multirotor_base_plugin插件运行时出现的错误原因。问题源于mav_msgs::msgs::MotorSpeed消息的冲突,具体为sitl_gazebo和rotors_simulator功能包之间的动态库冲突。解决方法是移除重复的libmav_msgs.so库文件。
最低0.47元/天 解锁文章
4009





