Skip to content

ROS 2 Jazzyでlaunch経由でIMUノードが起動できない #64

Open
@atinfinity

Description

@atinfinity

不具合の概要

ROS 2 Jazzyでlaunch経由でIMUノードを起動しようとしていますがエラーになります。

実行環境

  • OS: Ubuntu 24.04
  • ソフトのバージョン: ros-jazzy-rt-usb-9axisimu-driver 3.0.0-1noble.20250430.001406

再現方法

sudo apt install ros-jazzy-rt-usb-9axisimu-driver

でインストールした後、以下のlaunchを起動する。

import os

import launch
from launch import LaunchDescription
from launch.actions import DeclareLaunchArgument, EmitEvent, RegisterEventHandler
from launch.substitutions import LaunchConfiguration
from launch.event_handlers.on_process_start import OnProcessStart
from launch_ros.actions import LifecycleNode
import launch_ros.events
import lifecycle_msgs.msg


def generate_launch_description():
    imu_node = LifecycleNode(
        namespace='',
        package='rt_usb_9axisimu_driver',
        executable='rt_usb_9axisimu_driver',
        name='rt_usb_9axisimu_driver',
        parameters=[{
            'port': '/dev/rt9axisimu'
        }]
    )

    configure_state_handler = RegisterEventHandler(
        OnProcessStart(
            target_action=imu_node,
            on_start=[
                EmitEvent(
                    event=launch_ros.events.lifecycle.ChangeState(
                        lifecycle_node_matcher=launch.events.matches_action(imu_node),
                        transition_id=lifecycle_msgs.msg.Transition.TRANSITION_CONFIGURE,
                    )
                )
            ]
        )
    )

    active_state_handler = RegisterEventHandler(
        launch_ros.event_handlers.OnStateTransition(
            target_lifecycle_node=imu_node,
            start_state='configuring', goal_state='inactive',
            entities=[
                EmitEvent(
                    event=launch_ros.events.lifecycle.ChangeState(
                        lifecycle_node_matcher=launch.events.matches_action(imu_node),
                        transition_id=lifecycle_msgs.msg.Transition.TRANSITION_ACTIVATE,
                    )
                )
            ]
        )
    )    

    return LaunchDescription([
          imu_node,
          configure_state_handler,
          active_state_handler,
    ])

期待する動作

以下のトピックが購読できる。

ros2 topic echo /imu/data_raw

ログ・画像

launch実行すると以下のエラーが出ます。

[rt_usb_9axisimu_driver-1] [INFO] [1747284437.316351876] [rt_usb_9axisimu_driver]: on_configure() is called.
[rt_usb_9axisimu_driver-1] [INFO] [1747284437.334739567] [rt_usb_9axisimu_driver]: Data format is ascii.
[rt_usb_9axisimu_driver-1] [INFO] [1747284437.337637029] [rt_usb_9axisimu_driver]: on_activate() is called.
[rt_usb_9axisimu_driver-1] [ERROR] [1747284437.337651309] [rt_usb_9axisimu_driver]: readSensorData() returns FAILURE, please check your devices.
[rt_usb_9axisimu_driver-1] [WARN] [1747284437.337673361] [rt_usb_9axisimu_driver]: Error occurred while doing error handling.
[rt_usb_9axisimu_driver-1] [INFO] [1747284437.337675954] [rt_usb_9axisimu_driver]: on_error() is called.
[ERROR] [launch_ros.utilities.lifecycle_event_manager]: Failed to make transition 'TRANSITION_ACTIVATE' for LifecycleNode '/rt_usb_9axisimu_driver'

その他

ros2 runから実行すると問題なくキャプチャできています。

ros2 run rt_usb_9axisimu_driver rt_usb_9axisimu_driver --ros-args -p port:=/dev/rt9axisimu
ros2 lifecycle set rt_usb_9axisimu_driver configure
ros2 lifecycle set rt_usb_9axisimu_driver activate

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions