按照这篇教程https://blog.csdn.net/wxm__/article/details/126510527
在airsim环境中运行openvins时,
配置文件配好以后
在启动模拟器,并运行roslaunch ov_msckf airsim.launch时,有如下报错:
run_subscribe_msckf.cpp:97 unable to parse all parameters, please fix
terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::lock_error> >'
what(): boost: mutex lock failed in pthread_mutex_lock: Invalid argument
================================================================================REQUIRED process [ov_msckf-1] has died!
process has died [pid 2589, exit code -6, cmd /root/openvins/catkin_ws_ov/devel/lib/ov_msckf/run_subscribe_msckf /cam0/image_raw:=/airsim_node/drone_1/front_left/Scene /cam1/image_raw:=/airsim_node/drone_1/front_right/Scene /imu0:=/airsim_node/drone_1/imu/imu __name:=ov_msckf __log:=/root/.ros/log/f371f9f8-3e74-11ee-84f4-00155def5884/ov_msckf-1.log].
log file: /root/.ros/log/f371f9f8-3e74-11ee-84f4-00155def5884/ov_msckf-1*.log
Initiating shutdown!
================================================================================
[recorder_estimate-2] killing on exit
[ov_msckf-1] killing on exit
shutting down processing monitor...
... shutting down processing monitor complete
done
运行环境为WSL下的Ubuntu18.04
这个错误提示是说在运行 run_subscribe_msckf.cpp 文件时,无法解析所有的参数。
检查是否漏掉了某些必需的参数或者是否提供了错误的参数。
这个报错问题可能很多方面导致的,首先,确保您的配置文件中的所有参数格式和值都正确。可能有某些参数不符合预期,导致参数解析失败。检查每个参数,并与文档中的示例进行对比。还有就是你的报错信息中显示了关于互斥锁操作失败的问题。这可能是由于线程同步问题引起的。确保代码中使用互斥锁的地方是正确的,并且没有死锁等问题。然后你再看看在运行命令中配置了不同的图像和IMU话题。确保这些话题在AirSim中存在,并且命名正确。如果话题名称不正确,将导致订阅失败。
unable to parse all parameters
就这句话的问题
参考结合GPT4.0、文心一言,如有帮助,恭请采纳。
报错日志中提到了一个名为"boost::lock_error"的异常,这通常意味着在尝试获取一个互斥锁(mutex)时发生了无效的操作,怀疑是线程同步问题导致的。
建议检查所有需要的参数,并且没有遗漏或错误。
使用调试工具来检查代码中的问题。可以的话尽量设置断点并逐步执行代码,以查看是否有任何异常或错误。
如果可能的话,优化代码以提高性能和稳定性。这可能包括减少内存使用、避免不必要的计算和减少线程之间的通信等。
最后,还可更新库和驱动程序
仔细看一下参数吧,再看一下有没有转换
OpenVins可能依赖于某些库或软件包。或者出现在多线程或互斥锁方面的问题。检查roslaunch文件中的节点和参数是否正确,并确保ROS环境正常工作。
可能是漏掉某些参数了
版本兼容问题,确保你所使用的OpenVINS和AirSim版本兼容,并且安装了所有所需的依赖项
检查一下airsim.launch 参数ov_msckf的路径需不需要调整.
ov_msckf-1*.log把你输出的这个文件打开看看,里面应该有错误的关键信息