鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    lauch命令启动2个ros2节点,但会马上自动关闭这2个ros2的节点,为何?

    已定时 已固定 已锁定 已移动 已解决
    综合问题
    launch 失败 ros-args
    3
    5
    427
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • F
      flashman2002
      最后由 编辑

      问题描述:

      使用lauch命令启动2个ros2节点,但会马上自动关闭这2个ros2的节点,原因是什么?为何有错误提示:undefined bool flag -r in -ros-args,如何消除?

      [在这里详细描述您遇到的问题。请确保您提供了足够的背景信息,以便其他人能够理解您的问题。]

      具体细节和上下文:

      虚拟机:ubuntu22.04.4
      ros2版本:hubmle

      单个ros2的节点可以在各自的terminal中成功启动。

      log文件:
      1724825223.1759136 [INFO] [launch]: All log files can be found below /home/ah/.ros/log/2024-08-28-14-07-03-174888-ubuntu2204-51926
      1724825223.1760838 [INFO] [launch]: Default logging verbosity is set to INFO
      1724825223.2611883 [INFO] [canbus_node-1]: process started with pid [51930]
      1724825223.2614608 [INFO] [alarmlight_node-2]: process started with pid [51932]
      1724825223.2634103 [canbus_node-1] undefined bool flag -r in -ros-args
      1724825223.2639744 [INFO] [canbus_node-1]: process has finished cleanly [pid 51930]
      1724825223.2666111 [alarmlight_node-2] undefined bool flag -r in -ros-args
      1724825223.2681978 [INFO] [alarmlight_node-2]: process has finished cleanly [pid 51932]

      launch文件内容:
      def generate_launch_description():
      action_canbus_node = Node(
      package='cc_canbus',
      executable='canbus_node',
      output='log',
      )

      action_alarmlight_node = Node(
          package='cc_canbus',
          executable='alarmlight_node',
          output='log',
      )
      
      launch_description = LaunchDescription ([
          action_canbus_node,
          action_alarmlight_node
      ])
      
      return launch_description
      

      尝试过的解决方法:

      目前在社区中没有搜索到答案。

      小鱼小 1 条回复 最后回复 回复 引用 0
      • 小鱼小
        小鱼 技术大佬 @flashman2002
        最后由 编辑

        @flashman2002 https://fishros.org.cn/forum/topic/151/提问前必看-不符合要求的问题拒绝回答

        注意格式啊喂

        @flashman2002 在 lauch命令启动2个ros2节点,但会马上自动关闭这2个ros2的节点,为何? 中说:

        1724825223.2634103 [canbus_node-1] undefined bool flag -r in -ros-args

        参数冲突了啊喂

        换个启动方式啊喂

        action_alarmlight_node = Node(
        package='cc_canbus',
        executable='alarmlight_node',
        output='log',
        )

        参考这里啊喂:https://gitee.com/ohhuo/ros2bookcode/blob/master/chapt6/chapt6_ws/src/fishbot_description/launch/gazebo_sim.launch.py

        action_alarmlight_node = launch.actions.ExecuteProcess(
            cmd=['ros2', 'run', 'cc_canbus', alarmlight_node'],
            output='screen'
        )
        

        新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

        F 1 条回复 最后回复 回复 引用 0
        • 小伊小
          机器人小伊
          最后由 编辑

          根据你提供的日志和launch文件内容,问题出现在ROS 2的节点启动参数上,尽管在你的launch文件中并没有直接指定任何-ros-args。然而,这个错误提示通常意味着ROS 2的某个组件(可能是节点本身或其依赖的库)试图解析一个不存在的布尔型命令行参数(-r)。

          分析问题

          1. 检查节点代码:
            检查canbus_node和alarmlight_node的代码,特别是它们如何处理命令行参数。可能在这些节点的某个地方(如main()函数或其他初始化代码中)使用了rclcpp::get_node_options()或类似机制来解析命令行参数,并且错误地假设了-r参数的存在。

          2. 检查依赖库:
            如果这两个节点使用了外部库,特别是那些可能自动添加命令行参数的库,这些库可能尝试解析-r参数。

          3. 环境变量:
            检查是否有环境变量(如ROS_ARGS)被设置,该环境变量可能包含了-r参数。

          解决步骤

          1. 修改节点代码:
            如果节点代码中确实存在对-r参数的引用,你需要删除或修改这些代码。如果这是不必要的,简单地移除对-r的引用即可。如果-r参数是必需的,你需要确保在启动节点时通过-ros-args正确传递它。

            例如,如果节点确实需要-r参数,你可以在launch文件中这样添加它:

            action_canbus_node = Node(
                package='cc_canbus',
                executable='canbus_node',
                output='log',
                arguments=['--ros-args', '-r', 'true']  # 假设-r是布尔型参数
            )
            

            但根据你的launch文件,你并没有这样做,所以这一步可能不是必需的。

          2. 检查并修改外部库:
            如果问题是由外部库引起的,你可能需要更新这些库,或者找到一种方法来禁用它们对命令行参数的解析。

          3. 清除环境变量:
            如果ROS_ARGS环境变量被设置,并且包含了-r参数,尝试清除或修改这个环境变量。你可以在启动节点之前运行:

            unset ROS_ARGS
            
          4. 重新编译和测试:
            在做出任何更改后,重新编译你的ROS 2包,并使用修改后的launch文件再次尝试启动节点。

          5. 查看文档和社区:
            如果问题仍然存在,查看相关ROS 2包或库的文档,或搜索ROS 2社区(如ROS Answers, ROS Discourse等)是否有其他人遇到并解决了类似的问题。

          通过这些步骤,你应该能够诊断并解决节点自动关闭的问题。


          以上为生成回答,仅供参考~

          我是小伊,已接入ChatGpt,所有回复,仅供参考~

          1 条回复 最后回复 回复 引用 0
          • 小鱼小
            小鱼 技术大佬 @flashman2002
            最后由 编辑

            @flashman2002 https://fishros.org.cn/forum/topic/151/提问前必看-不符合要求的问题拒绝回答

            注意格式啊喂

            @flashman2002 在 lauch命令启动2个ros2节点,但会马上自动关闭这2个ros2的节点,为何? 中说:

            1724825223.2634103 [canbus_node-1] undefined bool flag -r in -ros-args

            参数冲突了啊喂

            换个启动方式啊喂

            action_alarmlight_node = Node(
            package='cc_canbus',
            executable='alarmlight_node',
            output='log',
            )

            参考这里啊喂:https://gitee.com/ohhuo/ros2bookcode/blob/master/chapt6/chapt6_ws/src/fishbot_description/launch/gazebo_sim.launch.py

            action_alarmlight_node = launch.actions.ExecuteProcess(
                cmd=['ros2', 'run', 'cc_canbus', alarmlight_node'],
                output='screen'
            )
            

            新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

            F 1 条回复 最后回复 回复 引用 0
            • 小鱼小 小鱼 将这个主题标记为已解决,在
            • F
              flashman2002 @小鱼
              最后由 编辑

              @小鱼 在 lauch命令启动2个ros2节点,但会马上自动关闭这2个ros2的节点,为何? 中说:

              action_alarmlight_node = launch.actions.ExecuteProcess(
              cmd=['ros2', 'run', 'cc_canbus', alarmlight_node'],
              output='screen'
              )

              现在的问题是用launch启动1个节点也会启动后马上关闭这1个节点,看来不是启动后参数冲突的原因。

              小鱼小 1 条回复 最后回复 回复 引用 0
              • 小鱼小
                小鱼 技术大佬 @flashman2002
                最后由 编辑

                @flashman2002 一定是这个原因,那就是不能ROS2 Run ,代码里获取参数的方法有bug

                新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

                1 条回复 最后回复 回复 引用 0
                • 第一个帖子
                  最后一个帖子
                皖ICP备16016415号-7
                Powered by NodeBB | 鱼香ROS