Home Perception & Mapping/mrg/

Marine Robotics Group  ·  active

Perception & Mapping

Designed a tracking system that sits in between filtered data and high-level semantic autonomy information to have a probabilistic approach to estimating the pose, existence, and class of objects within our USVs environment. This is a part of the software stack for the RobotX competition where we have to autonomously complete tasks such as: navigating through buoy fields filled with debris, or docking the USV in specific cleared docks in tight spaces.

The USV has two cameras and a lidar, so the tracking system is a way to combine these data sources (and technically any others later if we want as the algorithm doesn’t care) from a probabilistic perspective so that we can minimize our uncertainty for the important semantic information needed for autonomy. There’s a presentation and a demo below outlining the algorithm/system we use for this that I’ve developed.

I.

On the Water

This is a playback of a rosbag through rviz of the entire mapping system working alongside the live yolo feeds. The visualized rays are bearing rays derived from getting the centroid of a bounding box and using the pinhole camera model to see where in space that object would be along an infinitely long ray. The thicker cylinders that appear are tracks (so estimates of currently unclassified objects) they initialize as grey since the class belief has not yet changed enough towards green or red buoy. The tracks turn red or green after a certain threshold is passed and the thin tall cylinders are the permanent versions of the semantic objects in the semantic map. The white line connecting a red buoy and green buoy in the semantic map represent the identification of a gate to pass through. The reason the bearing rays are behind the boat is that is the delay in camera feed and yolo detection. The videos on the bottom have been resynced up for the video, but were actually that behind in detections being processed. You also might be able to catch, if you look closely, lidar cluster centroids that appear as cubes with a circle around them representing the covariance of the cluster.

fig.00 · a rosbag replayed through the tracker. RViz above, both camera feeds below.
II.

How It Works

The deck I put together to explain the tracker to the rest of the team. It builds up from what a track actually is, through how a lidar cluster and a camera bearing get matched against every track already on the board, to how a track finally earns its way onto the map. The pdf is in the rail if you would rather page through it.

Title slide: Tracking System, Paul Dubrulle, MRG.
01 / 10
Where the tracking system sits: raw camera and lidar feed YOLO and DBSCAN, which feed the tracking core, which feeds the semantic map and behavior tree.
02 / 10
What is a track: position, velocity, existence and class belief, with the initial state of each.
03 / 10
Lidar measurements and the uncertainty each cluster carries.
04 / 10
Gating, and the assignments JIPDA scores across the scene.
05 / 10
Updating position, existence and class belief in proportion to beta.
06 / 10
Camera detections run the same JIPDA in angle space: bearing only, a wedge-shaped gate, ambiguity broken by visibility.
07 / 10
Existence decay: tracks that go unexplained lose confidence and die.
08 / 10
Promoting confident tracks into the semantic map.
09 / 10
Recap of one cycle end to end: detect, match, update, commit.
10 / 10