depthscan takes in protobuf packets from the fathom depth sensor, and generates laser scans, point clouds, and cliff messages, to be used in may_nav (navigation), lifelong_mapping (SLAM), and fathom_obstacle_finder (low/high obstacle cloud generation).

If you activate the depth and/or amplitude images via the fathom curl-command interface, it will broadcast those as ROS images.

The node also safety-stops the robot and hard-resets the depth sensor if no data is seen for 0.5 and 10 seconds, respectively.

Also, if the depth sensor has not time synced to the high-speed board yet (incoming data time stamp is more than 1 second away from current time), the outgoing ROS messages will be stamped with current time - 0.2 secs.


Published Topics


The laser scan from the depth sensor (created from the main beam portion
of the point cloud, with “ghost points” from external reflections removed)
contains 360 readings over 180 degrees (one reading every 0.5 deg)


Same as /scan, but with every other reading removed (one beam every 1 deg)
used for mapping


Same as /scan (published for legacy reasons, used for nav)


The full point cloud from the depth sensor, in the frame of the sensor
Points are (x,y,z)


If activated via curl commands on the robot, the sensor’s depth image


If activated via curl commands on the robot, the sensor’s amplitude image


Readings from the front “cliff sensors,” generated on the sensor from the low/cliff beam’s point cloud (for feeding to may_nav)


For debugging, the portion of the cloud used in cliff detection


If the depth sensor stops responding for 0.5 seconds, goes false to stop the robot from driving (safety check)


Latched node status publisher that goes true when it gets the first message, just for making startup order predictable

Service Calls

Used to hard-reset the depth sensor, if no data is seen for 10 seconds



Used to broadcast ROS topics based on a saved protobuf file


double, default 0.4 Only broadcast cliff messages if something changes, or every time_between_cliff_msgs secs


int, default 0 (but default-set to 1 in depthsensor.launch’s args) Number of (potentially false-positive) cliffs to ignore before broadcasting on /depthscan/front_cliff

Launch File