An autonomous cleaning robot comprising: a forward portion having a forward surface extending along a forward plane, a first side surface extending along a first side plane, and a second side surface extending along a second side plane, the forward plane being perpendicular to the first side plane and the second side plane; a drive system configured to support the cleaning robot on a floor surface; a cleaning inlet positioned forward of a center of the cleaning robot and along the forward portion of the cleaning robot between the first side surface and the second side surface, the cleaning inlet configured to collect debris from the floor surface into the cleaning robot; and a controller configured to execute instructions to perform one or more operations comprising: operating the drive system to move the cleaning robot in a forward drive direction along a first obstacle surface with the first side surface of the cleaning robot facing the first obstacle surface, characterized by: then operating the drive system to repeatedly cause the cleaning robot to perform a series of movements comprising: moving in a rearward drive direction a distance along the first obstacle surface, then turning away from the first obstacle surface until the cleaning robot detects contact between a second obstacle surface and a forward surface of the cleaning robot, the second obstacle surface being adjacent to the first obstacle surface and angled relative to the first obstacle surface, and then turning back toward the first obstacle surface, and then operating the drive system to move the cleaning robot in the forward drive direction along the second obstacle surface with the first side surface of the cleaning robot facing the second obstacle surface. a forward portion having a forward surface extending along a forward plane, a first side surface extending along a first side plane, and a second side surface extending along a second side plane, the forward plane being perpendicular to the first side plane and the second side plane; a drive system configured to support the cleaning robot on a floor surface; a cleaning inlet positioned forward of a center of the cleaning robot and along the forward portion of the cleaning robot between the first side surface and the second side surface, the cleaning inlet configured to collect debris from the floor surface into the cleaning robot; and a controller configured to execute instructions to perform one or more operations comprising: operating the drive system to move the cleaning robot in a forward drive direction along a first obstacle surface with the first side surface of the cleaning robot facing the first obstacle surface, characterized by: then operating the drive system to repeatedly cause the cleaning robot to perform a series of movements comprising: moving in a rearward drive direction a distance along the first obstacle surface, then turning away from the first obstacle surface until the cleaning robot detects contact between a second obstacle surface and a forward surface of the cleaning robot, the second obstacle surface being adjacent to the first obstacle surface and angled relative to the first obstacle surface, and then turning back toward the first obstacle surface, and then operating the drive system to move the cleaning robot in the forward drive direction along the second obstacle surface with the first side surface of the cleaning robot facing the second obstacle surface. operating the drive system to move the cleaning robot in a forward drive direction along a first obstacle surface with the first side surface of the cleaning robot facing the first obstacle surface, characterized by: then operating the drive system to repeatedly cause the cleaning robot to perform a series of movements comprising: moving in a rearward drive direction a distance along the first obstacle surface, then turning away from the first obstacle surface until the cleaning robot detects contact between a second obstacle surface and a forward surface of the cleaning robot, the second obstacle surface being adjacent to the first obstacle surface and angled relative to the first obstacle surface, and then turning back toward the first obstacle surface, and then operating the drive system to move the cleaning robot in the forward drive direction along the second obstacle surface with the first side surface of the cleaning robot facing the second obstacle surface. then operating the drive system to repeatedly cause the cleaning robot to perform a series of movements comprising: moving in a rearward drive direction a distance along the first obstacle surface, then turning away from the first obstacle surface until the cleaning robot detects contact between a second obstacle surface and a forward surface of the cleaning robot, the second obstacle surface being adjacent to the first obstacle surface and angled relative to the first obstacle surface, and then turning back toward the first obstacle surface, and moving in a rearward drive direction a distance along the first obstacle surface, then turning away from the first obstacle surface until the cleaning robot detects contact between a second obstacle surface and a forward surface of the cleaning robot, the second obstacle surface being adjacent to the first obstacle surface and angled relative to the first obstacle surface, and then turning back toward the first obstacle surface, and then operating the drive system to move the cleaning robot in the forward drive direction along the second obstacle surface with the first side surface of the cleaning robot facing the second obstacle surface.