Using Plane Detection with ROS 2
In this tutorial, you will learn how to exploit the Plane Detection capabilities of the ZED SDK to detect the planes in the environment where a ZED camera is operating.
Start a plane detection task #
The ZED ROS 2 nodelet subscribes to the topic /clicked_point of type geometry_msgs/PointStamped, usually published by Rviz2.
When a message on the topic /clicked_point is received, the node searches for the first plane hitten by a virtual ray starting from the camera optical center and virtually passing through the received 3D point.
If a plane is found, its position and orientation are calculated, the 3D mesh is extracted and all the useful plane information is published as a custom zed_interfaces/PlaneStamped message on the topic /<camera_model>/<node_name>/plane.
A second message of type visualization_msgs/Marker with information useful for visualization is published on the topic /<camera_model>/<node_name>/plane_marker in order to display the plane using a Marker display plugin in Rviz.


Logging #
When a plane detection is started, the log of the ROS wrapper will show the following information:
[zed_wrapper-2] 1651505097.533702002 [zed2i.zed_node] [INFO] Clicked 3D point [X FW, Y LF, Z UP]: [2.04603,-0.016467,0.32191]
[zed_wrapper-2] 1651505097.533748287 [zed2i.zed_node] [INFO] 'map' -> 'zed2i_left_camera_optical_frame': {0.061,0.010,0.011} {0.495,-0.534,0.466,0.503}
[zed_wrapper-2] 1651505097.533775284 [zed2i.zed_node] [INFO] Point in camera coordinates [Z FW, X RG, Y DW]: {0.044,-0.436,2.034}
[zed_wrapper-2] 1651505097.533812591 [zed2i.zed_node] [INFO] Clicked point image coordinates: [655.536,231.765]
[zed_wrapper-2] 1651505097.592107647 [zed2i.zed_node] [INFO] Found plane at point [2.046,-0.016,0.322] -> Center: [1.909,-0.760,-0.007], Dims: 1.681x2.519
Rviz2 #
The Rviz2 GUI allows one to easily start a plane detection task and displays the results of the detection.
Start a plane detection #
To publish a /clicked_point point message and start a plane detection the Publish Point button must be enabled and a point of the 3D view or the camera view must be clicked.

Configure Rviz to display the results #
The Marker plugin allows you to visualize the information of the detected planes.

Key parameters:
- Topic: The topic that contains the information relative to the detected planes: e.g.- /zed/zed_node/plane_marker
- Depth: The size of the message queue. Use at least a value of- 2to not lose messages.
- History policy: Set the QoS history policy.- Keep Lastis suggested for performance and compatibility.
- Reliability Policy: Set the QoS reliability policy.- Best Effortis suggested for performance and compatibility.
- Durability Policy: Set the QoS durability policy.- Volatileis suggested for compatibility.
- Namespaces: The list of available information:- plane_hit_points: Select to display a sphere where the click has been received.
- plane_meshes: Select to display all the meshes of the detected planes.
 
Detected Plane message #
The custom zed_interfaces/PlaneStamped message is defined in the zed-ros2-interfaces repository.