Launch the IMU node

To launch the IMU node, you can use the provided launch file imu.launch.py:

$ ros2 launch ifm3d_ros2 imu.launch.py
[INFO] [launch]: All log files can be found below /home/user/.ros/log/2025-11-25-18-02-48-851732-ids-ackerman-890653
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [imu_standalone-1]: process details: cmd='/home/user/checkout/ifm/colcon_ws/install/ifm3d_ros2/lib/ifm3d_ros2/imu_standalone --ros-args --log-level info --ros-args -r __node:=imu -r __ns:=/ifm3d --params-file /home/user/checkout/ifm/colcon_ws/install/ifm3d_ros2/share/ifm3d_ros2/config/imu_default_parameters.yaml', cwd='None', custom_env?=True
[INFO] [imu_standalone-1]: process started with pid [890664]
[imu_standalone-1] [INFO] namespace: /ifm3d  (ifm3d.imu ImuNode:45)
[imu_standalone-1] [INFO] node name: imu  (ifm3d.imu ImuNode:46)
[imu_standalone-1] [INFO] middleware: rmw_fastrtps_cpp  (ifm3d.imu ImuNode:47)
[imu_standalone-1] [INFO] Declaring parameters...  (ifm3d.imu ImuNode:52)
[imu_standalone-1] [INFO] After the parameters declaration  (ifm3d.imu ImuNode:54)
[imu_standalone-1] [INFO] node created, waiting for `configure()`...  (ifm3d.imu ImuNode:58)
[imu_standalone-1] [INFO] on_configure(): unconfigured -> configuring  (ifm3d.imu on_configure:68)
[imu_standalone-1] [INFO] Parsing parameters...  (ifm3d.imu on_configure:74)
[imu_standalone-1] [INFO] Config file:   (ifm3d.imu parse_params:356)
[imu_standalone-1] [INFO] ip: 192.168.0.69  (ifm3d.imu parse_params:359)
[imu_standalone-1] [INFO] pcic_port: 50016  (ifm3d.imu parse_params:362)
[imu_standalone-1] [INFO] xmlrpc_port: 80  (ifm3d.imu parse_params:365)
[imu_standalone-1] [INFO] Parameters parsed.  (ifm3d.imu on_configure:76)
[imu_standalone-1] [INFO] Adding callbacks to handle parameter changes at runtime...  (ifm3d.imu on_configure:81)
[imu_standalone-1] [INFO] Callbacks set.  (ifm3d.imu on_configure:83)
[imu_standalone-1] [INFO] Initializing Device  (ifm3d.imu on_configure:94)
[imu_standalone-1] [INFO] Initializing FrameGrabber for data  (ifm3d.imu on_configure:96)
[imu_standalone-1] [INFO] Creating ImuModule...  (ifm3d.imu on_configure:127)
[imu_standalone-1] [INFO] FunctionModule contructor called.  (ifm3d.imu FunctionModule:13)
[imu_standalone-1] [INFO] ImuModule contructor called.  (ifm3d.imu ImuModule:21)
[imu_standalone-1] [INFO] ImuModule created.  (ifm3d.imu on_configure:129)
[imu_standalone-1] [INFO] Creating DiagModule...  (ifm3d.imu on_configure:133)
[imu_standalone-1] [INFO] FunctionModule contructor called.  (ifm3d.imu FunctionModule:13)
[imu_standalone-1] [INFO] hardware_id: /ifm3d/diag_module  (ifm3d.imu DiagModule:25)
[imu_standalone-1] [INFO] DiagModule created.  (ifm3d.imu on_configure:135)
[imu_standalone-1] [INFO] ImuModule: on_configure called  (ifm3d.imu on_configure:253)
[imu_standalone-1] [INFO] tf.base_frame_name: ifm_base_link  (ifm3d.imu parse_parameters:176)
[imu_standalone-1] [INFO] tf.mounting_frame_name: vpu_mounting_link  (ifm3d.imu parse_parameters:180)
[imu_standalone-1] [INFO] tf.imu_frame_name: imu_link  (ifm3d.imu parse_parameters:184)
[imu_standalone-1] [INFO] tf.publish_base_to_mounting: true  (ifm3d.imu parse_parameters:188)
[imu_standalone-1] [INFO] tf.publish_mounting_to_imu: true  (ifm3d.imu parse_parameters:192)
[imu_standalone-1] [INFO] Parameter imu.publish_averaged_data set to 'false'  (ifm3d.imu on_configure:259)
[imu_standalone-1] [INFO] Parameter imu.publish_bulk_data set to 'true'  (ifm3d.imu on_configure:263)
[imu_standalone-1] [INFO] Creating BaseServices...  (ifm3d.imu on_configure:156)
[imu_standalone-1] [INFO] BaseServices constructor called.  (ifm3d.imu BaseServices:19)
[imu_standalone-1] [INFO] Services created;  (ifm3d.imu BaseServices:44)
[imu_standalone-1] [INFO] BaseServices created.  (ifm3d.imu on_configure:159)
[imu_standalone-1] [INFO] Configuration complete.  (ifm3d.imu on_configure:161)
[imu_standalone-1] [INFO] on_activate(): inactive -> activating  (ifm3d.imu on_activate:167)
[imu_standalone-1] [INFO] Starting the Framegrabbers...  (ifm3d.imu on_activate:182)
[imu_standalone-1] [INFO] Diagnostic monitoring active.  (ifm3d.imu on_activate:187)
[imu_standalone-1] [INFO] ImuModule: on_activate called  (ifm3d.imu on_activate:302)

This will launch the /ifm3d/imu node, using the default parameters defined in config/imu_default_parameters.yaml.

This node provides the following interfaces:

$ ros2 node info /ifm3d/imu 
/ifm3d/imu
  Subscribers:
    /parameter_events: rcl_interfaces/msg/ParameterEvent
  Publishers:
    /diagnostics: diagnostic_msgs/msg/DiagnosticArray
    /ifm3d/imu/imu_burst: ifm3d_ros2/msg/ImuBurst
    /ifm3d/imu/transition_event: lifecycle_msgs/msg/TransitionEvent
    /parameter_events: rcl_interfaces/msg/ParameterEvent
    /rosout: rcl_interfaces/msg/Log
    /tf_static: tf2_msgs/msg/TFMessage
  Service Servers:
    /ifm3d/imu/Config: ifm3d_ros2/srv/Config
    /ifm3d/imu/Dump: ifm3d_ros2/srv/Dump
    /ifm3d/imu/GetDiag: ifm3d_ros2/srv/GetDiag
    /ifm3d/imu/Softoff: ifm3d_ros2/srv/Softoff
    /ifm3d/imu/Softon: ifm3d_ros2/srv/Softon
    /ifm3d/imu/change_state: lifecycle_msgs/srv/ChangeState
    /ifm3d/imu/describe_parameters: rcl_interfaces/srv/DescribeParameters
    /ifm3d/imu/get_available_states: lifecycle_msgs/srv/GetAvailableStates
    /ifm3d/imu/get_available_transitions: lifecycle_msgs/srv/GetAvailableTransitions
    /ifm3d/imu/get_parameter_types: rcl_interfaces/srv/GetParameterTypes
    /ifm3d/imu/get_parameters: rcl_interfaces/srv/GetParameters
    /ifm3d/imu/get_state: lifecycle_msgs/srv/GetState
    /ifm3d/imu/get_transition_graph: lifecycle_msgs/srv/GetAvailableTransitions
    /ifm3d/imu/list_parameters: rcl_interfaces/srv/ListParameters
    /ifm3d/imu/set_parameters: rcl_interfaces/srv/SetParameters
    /ifm3d/imu/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomically
  Service Clients:

  Action Servers:

  Action Clients: