Launch the node

Launch the camera node (assuming you are in ~/colcon_ws/):

$ source install/setup.bash
$ ros2 launch ifm3d_ros2 camera.launch.py

This will launch the /ifm3d/camera/ node with default arguments, using the default YAML configuration file camera_default_parameters.yaml. Depending on the specified pcic_port, the node will initialize either a 3D camera (if the port corresponds to a 3D camera) or a 2D camera.

The respective node information should look like this:

$ ros2 node info /ifm3d/camera

/ifm3d/camera
  Subscribers:
    /parameter_events: rcl_interfaces/msg/ParameterEvent
  Publishers:
    /diagnostics: diagnostic_msgs/msg/DiagnosticArray
    /ifm3d/camera/amplitude: sensor_msgs/msg/Image
    /ifm3d/camera/camera_info: sensor_msgs/msg/CameraInfo
    /ifm3d/camera/cloud: sensor_msgs/msg/PointCloud2
    /ifm3d/camera/confidence: sensor_msgs/msg/Image
    /ifm3d/camera/distance: sensor_msgs/msg/Image
    /ifm3d/camera/distance_noise: sensor_msgs/msg/Image
    /ifm3d/camera/extrinsics: ifm3d_ros2/msg/Extrinsics
    /ifm3d/camera/intrinsic_calib: ifm3d_ros2/msg/Intrinsics
    /ifm3d/camera/inverse_intrinsic_calibration: ifm3d_ros2/msg/InverseIntrinsics
    /ifm3d/camera/reflectivity: sensor_msgs/msg/Image
    /ifm3d/camera/tof_info: ifm3d_ros2/msg/TOFInfo
    /ifm3d/camera/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/camera/Config: ifm3d_ros2/srv/Config
    /ifm3d/camera/Dump: ifm3d_ros2/srv/Dump
    /ifm3d/camera/GetDiag: ifm3d_ros2/srv/GetDiag
    /ifm3d/camera/Softoff: ifm3d_ros2/srv/Softoff
    /ifm3d/camera/Softon: ifm3d_ros2/srv/Softon
    /ifm3d/camera/change_state: lifecycle_msgs/srv/ChangeState
    /ifm3d/camera/describe_parameters: rcl_interfaces/srv/DescribeParameters
    /ifm3d/camera/get_available_states: lifecycle_msgs/srv/GetAvailableStates
    /ifm3d/camera/get_available_transitions: lifecycle_msgs/srv/GetAvailableTransitions
    /ifm3d/camera/get_parameter_types: rcl_interfaces/srv/GetParameterTypes
    /ifm3d/camera/get_parameters: rcl_interfaces/srv/GetParameters
    /ifm3d/camera/get_state: lifecycle_msgs/srv/GetState
    /ifm3d/camera/get_transition_graph: lifecycle_msgs/srv/GetAvailableTransitions
    /ifm3d/camera/list_parameters: rcl_interfaces/srv/ListParameters
    /ifm3d/camera/set_parameters: rcl_interfaces/srv/SetParameters
    /ifm3d/camera/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomically
  Service Clients:

  Action Servers:

  Action Clients:

Optional uncompressed RGB topic

For visualization purposes, the camera launch file can optionally provide uncompressed RGB images. For detailed information on configuring and using uncompressed RGB topics, see the Visualization documentation.

Note

We also provide a helper launch file to start multiple camera nodes. See the documentation here.

To visualize the data with RViz, set the visualization argument of the launch script to true:

$ ros2 launch ifm3d_ros2 camera.launch.py visualization:=true

rviz1

Congratulations! You can now have complete control over the O3R perception platform from inside ROS2.