ROS Noetic启动Septentrio GNSS驱动节点报错:无法定位septentrio_gnss_driver_node
ROS Noetic启动Septentrio GNSS驱动节点报错:无法定位septentrio_gnss_driver_node
你遇到的问题是在执行启动命令时,系统找不到指定的节点可执行文件,咱们一步步来排查解决:
你当前的场景信息
- 执行的启动命令:
roslaunch septentrio_gnss_driver rover.launch param_file_name:=rover - 使用的
rover.launch文件内容:<?xml version="1.0" encoding="UTF-8"?> <launch> <arg name="node_name" default="septentrio_gnss" /> <arg name="param_file_name" /> <arg name="output" default="screen" /> <arg name="respawn" default="false" /> <arg name="clear_params" default="true" /> <node pkg="tf2_ros" type="static_transform_publisher" name="tf_imu" args="0 0 0 0 0 0 base_link imu" /> <node pkg="tf2_ros" type="static_transform_publisher" name="tf_gnss" args="0 0 0 0 0 0 imu gnss" /> <node pkg="tf2_ros" type="static_transform_publisher" name="tf_vsm" args="0 0 0 0 0 0 imu vsm" /> <node pkg="tf2_ros" type="static_transform_publisher" name="tf_aux1" args="0 0 0 0 0 0 imu aux1" /> <node pkg="septentrio_gnss_driver" type="septentrio_gnss_driver_node" name="$(arg node_name)" output="$(arg output)" clear_params="$(arg clear_params)" respawn="$(arg respawn)"> <rosparam command="load" file="$(find septentrio_gnss_driver)/config/$(arg param_file_name).yaml" /> </node> </launch> - 收到的错误信息:
ERROR: cannot launch node of type [septentrio_gnss_driver/septentrio_gnss_driver_node]: Cannot locate node of type [septentrio_gnss_driver_node] in package [septentrio_gnss_driver]. Make sure file exists in package path and permission is set to executable (chmod +x)
问题根源排查
这个报错的核心是:系统在septentrio_gnss_driver包的可执行文件目录里,找不到名为septentrio_gnss_driver_node的程序。大概率是你在launch文件里写的节点类型名称不对——apt安装的包,节点可执行文件名可能和源码仓库里的命名不一致。
解决方案步骤
1. 确认包内的可执行文件名称
打开终端,执行以下命令,查看septentrio_gnss_driver包下的所有可执行程序:
ls /opt/ros/noetic/lib/septentrio_gnss_driver/
执行后你会看到实际的节点文件名,比如可能是septentrio_gnss_driver(而非你launch文件里的septentrio_gnss_driver_node)。
2. 修改launch文件中的节点类型
把rover.launch文件里的节点类型替换成你查到的实际文件名:
将这一行的type="septentrio_gnss_driver_node"替换为实际名称:
<node pkg="septentrio_gnss_driver" type="实际节点文件名" name="$(arg node_name)" output="$(arg output)" clear_params="$(arg clear_params)" respawn="$(arg respawn)">
3. 验证节点可用性
修改完成后,先尝试直接用rosrun启动节点,确认没问题:
rosrun septentrio_gnss_driver 实际节点文件名
如果能正常启动,再重新执行你的launch命令即可。
额外提示
如果你是apt安装的包,也可以去系统默认的launch文件目录/opt/ros/noetic/share/septentrio_gnss_driver/launch/参考官方配置,避免自己写错节点名称。
备注:内容来源于stack exchange,提问作者Mubashir
相关产品推荐
相关产品推荐

