You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ROS包抛出std::logic_error终止,Jetson TX2运行失败X86正常如何排查?

问题排查方案

这个报错的根本原因是代码中尝试用空指针初始化std::string,不同架构下的字符串处理、编译逻辑、依赖库实现差异会导致x86平台正常运行的代码在ARM平台触发异常,可按以下步骤逐一排查:

  • 检查launch参数配置
    所有传入local_planner_node的字符串类型参数必须显式赋值,哪怕是填空字符串""。x86平台下未定义的字符串参数会默认初始化为空字符串,而ARM平台下未定义的字符串参数会返回空指针,直接触发该异常。你可以逐一核对launch文件中所有<param>、<arg>标签的字符串类型参数,确保没有遗漏赋值的项。
  • 重新指定编译标准编译工作空间
    PX4-Avoidance的部分代码在ARM64架构下需要C++17及以上标准编译,否则字符串处理的底层实现会有兼容问题,可清理工作空间后重新编译:
    cd ~/catkin_ws
    rm -rf build devel
    catkin_make -DCMAKE_CXX_FLAGS="-std=c++17 -O2"
    
  • 核对libstdc++版本
    该异常和C标准库的字符串实现直接相关,可分别在两台设备上运行如下命令查看libstdc6的版本:
    dpkg -l | grep libstdc++6
    
    如果Jetson TX2上的版本低于英特尔笔记本上的版本,可执行如下命令升级:
    sudo apt update
    sudo apt install --only-upgrade libstdc++6
    
  • 定位具体出错代码行
    如果上述操作都无法解决问题,可用gdb运行节点打印崩溃调用栈,直接定位到传入空指针的代码位置:
    rosrun --prefix 'gdb -ex run --args' local_planner local_planner_node
    
    节点崩溃后在gdb交互界面输入bt即可打印完整调用栈。

内容的提问来源于stack exchange,提问作者aamir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 00:54:03