Launch the ODS node

To launch the ODS node, you can use the provided launchfile ods.launch.py:

$ ros2 launch ifm3d_ros2 ods.launch.py
[INFO] [launch]: Default logging verbosity is set to INFO                                                                                                                                                          
[INFO] [ods_standalone-1]: process details: cmd='/home/usmasslo/ROS/ROS2/colcon_ws/install/ifm3d_ros2/lib/ifm3d_ros2/ods_standalone --ros-args --log-level info --ros-args -r __node:=ods -r __ns:=/ifm3d --params-
file ~/colcon_ws/install/ifm3d_ros2/share/ifm3d_ros2/config/ods_default_parameters.yaml', cwd='None', custom_env?=True                                                                       
[INFO] [ods_standalone-1]: process started with pid [486398]                                                                                       
[ods_standalone-1] [INFO] [1728931867.359101479] [ifm3d.ods]: namespace: /ifm3d                                                                                          
[ods_standalone-1] [INFO] [1728931867.359179144] [ifm3d.ods]: node name: ods                                                                                            
[ods_standalone-1] [INFO] [1728931867.359186657] [ifm3d.ods]: middleware: rmw_fastrtps_cpp                                                                               
[ods_standalone-1] [INFO] [1728931867.359190490] [ifm3d.ods]: Declaring parameters...                                                                                  
[ods_standalone-1] [INFO] [1728931867.359323428] [ifm3d.ods]: After the parameters declaration                                                                                    
[ods_standalone-1] [INFO] [1728931867.359406942] [ifm3d.ods]: node created, waiting for `configure()`...                                                                                           
[ods_standalone-1] [INFO] [1728931867.521751135] [ifm3d.ods]: on_configure(): unconfigured -> configuring                                                                                   
[ods_standalone-1] [INFO] [1728931867.521862570] [ifm3d.ods]: Parsing parameters...             [ods_standalone-1] [INFO] [1728931867.521944451] [ifm3d.ods]: ip: 192.168.0.69
[ods_standalone-1] [INFO] [1728931867.521980451] [ifm3d.ods]: pcic_port: 51010
[ods_standalone-1] [INFO] [1728931867.521997881] [ifm3d.ods]: xmlrpc_port: 80
[ods_standalone-1] [INFO] [1728931867.522012697] [ifm3d.ods]: Parameters parsed.
[ods_standalone-1] [INFO] [1728931867.522028686] [ifm3d.ods]: Adding callbacks to handle parameter changes at runtime...
[ods_standalone-1] [INFO] [1728931867.525109429] [ifm3d.ods]: Callbacks set.
[ods_standalone-1] [INFO] [1728931867.525177112] [ifm3d.ods]: Initializing Device
[ods_standalone-1] [INFO] [1728931867.525325450] [ifm3d.ods]: Initializing FrameGrabber for data
[ods_standalone-1] [INFO] [1728931868.040227637] [ifm3d.ods]: Creating OdsModule...
[ods_standalone-1] [INFO] [1728931868.040519950] [ifm3d.ods]: FunctionModule contructor called.
[ods_standalone-1] [INFO] [1728931868.040545387] [ifm3d.ods]: OdsModule contructor called.
[ods_standalone-1] [INFO] [1728931868.040638930] [ifm3d.ods]: OdsModule created.
[ods_standalone-1] [INFO] [1728931868.040644930] [ifm3d.ods]: Creating DiagModule...
[ods_standalone-1] [INFO] [1728931868.040675690] [ifm3d.ods]: FunctionModule contructor called.
[ods_standalone-1] [INFO] [1728931868.040736808] [ifm3d.ods]: hardware_id: /ifm3d/diag_module
[ods_standalone-1] [INFO] [1728931868.040756934] [ifm3d.ods]: DiagModule created.
[ods_standalone-1] [INFO] [1728931868.040803035] [ifm3d.ods]: OdsModule: on_configure called
[ods_standalone-1] [INFO] [1728931868.055527902] [ifm3d.ods]: Parameter ods.frame_id set to 'ods_frame'
[ods_standalone-1] [INFO] [1728931868.055542337] [ifm3d.ods]: DiagModule: on_configure called
[ods_standalone-1] [INFO] [1728931868.057683191] [ifm3d.ods]: Creating BaseServices...
[2]
[ods_standalone-1] [INFO] [1728931868.057733035] [ifm3d.ods]: BaseServices constructor called.
[ods_standalone-1] [INFO] [1728931868.060201097] [ifm3d.ods]: Services created;
[ods_standalone-1] [INFO] [1728931868.060224508] [ifm3d.ods]: BaseServices created.
[ods_standalone-1] [INFO] [1728931868.060237899] [ifm3d.ods]: Configuration complete.
[ods_standalone-1] [INFO] [1728931868.061711296] [ifm3d.ods]: on_activate(): inactive -> activating                                                                                                        [89/139]
[ods_standalone-1] [INFO] [1728931868.061807873] [ifm3d.ods]: Starting the Framegrabbers...
[ods_standalone-1] [INFO] [1728931868.187758863] [ifm3d.ods]: Diagnostic monitoring active.
[ods_standalone-1] [INFO] [1728931868.187814195] [ifm3d.ods]: OdsModule: on_activate called
[ods_standalone-1] [INFO] [1728931868.187832369] [ifm3d.ods]: DiagModule: on_activate called

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

This node provides the following interfaces:

$ ros2 node info /ifm3d/ods                                                
/ifm3d/ods           
  Subscribers:           
    /parameter_events: rcl_interfaces/msg/ParameterEvent
  Publishers:
    /diagnostics: diagnostic_msgs/msg/DiagnosticArray
    /ifm3d/ods/ods_info: ifm3d_ros2/msg/Zones
    /ifm3d/ods/ods_occupancy_map_ifm: ifm3d_ros2/msg/OccGrid
    /ifm3d/ods/ods_occupancy_map_ros: nav_msgs/msg/OccupancyGrid
    /ifm3d/ods/transition_event: lifecycle_msgs/msg/TransitionEvent
    /parameter_events: rcl_interfaces/msg/ParameterEvent
    /rosout: rcl_interfaces/msg/Log
  Service Servers:
    /ifm3d/ods/Config: ifm3d_ros2/srv/Config
    /ifm3d/ods/Dump: ifm3d_ros2/srv/Dump
    /ifm3d/ods/GetDiag: ifm3d_ros2/srv/GetDiag
    /ifm3d/ods/Softoff: ifm3d_ros2/srv/Softoff
    /ifm3d/ods/Softon: ifm3d_ros2/srv/Softon
    /ifm3d/ods/change_state: lifecycle_msgs/srv/ChangeState
    /ifm3d/ods/describe_parameters: rcl_interfaces/srv/DescribeParameters
    /ifm3d/ods/get_available_states: lifecycle_msgs/srv/GetAvailableStates
    /ifm3d/ods/get_available_transitions: lifecycle_msgs/srv/GetAvailableTransitions
    /ifm3d/ods/get_parameter_types: rcl_interfaces/srv/GetParameterTypes
    /ifm3d/ods/get_parameters: rcl_interfaces/srv/GetParameters
    /ifm3d/ods/get_state: lifecycle_msgs/srv/GetState
    /ifm3d/ods/get_transition_graph: lifecycle_msgs/srv/GetAvailableTransitions
    /ifm3d/ods/get_type_description: type_description_interfaces/srv/GetTypeDescription
    /ifm3d/ods/list_parameters: rcl_interfaces/srv/ListParameters
    /ifm3d/ods/set_parameters: rcl_interfaces/srv/SetParameters
    /ifm3d/ods/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomically
  Service Clients:

  Action Servers:

  Action Clients: