Hit enter to search or ESC to close

Watch and Learn: How an Autonomous Vehicle Successfully Negotiates Narrow Streets With Oncoming Traffic

A colorful border of cyclists, pedestrians, moped riders and an Argo autonomous vehicle surrounding a screentshot from a video of an AV test ride

Driving in Pittsburgh, Pennsylvania, can sometimes feel like trying to thread a needle. The “Steel City” is filled with numerous narrow streets, often on steep hills, that offer limited space for vehicles creating many instances in which drivers must negotiate with one another.

They may signal one another with their cars’ headlights, hand gestures, and eye contact to indicate who has right-of-way — or simply infer what other vehicles are doing based on their positions and speed.

So, what does an autonomous vehicle (AV) do in these cases?

The following video from Argo AI, a leading self-driving technology company headquartered in Pittsburgh, shows one example of an AV successfully navigating an ambiguous situation on a narrow road with two oncoming drivers, weaving around them both despite both cars displaying radically different behavior.

Read on for an explanation of how the AV does this from Constantin Savtchenko, an Argo Senior Staff Engineer.

As the example shows, this deceptively simple roadway interaction requires a complex chain of perception and reasoning by the AV. It is only possible thanks to multiple sophisticated computer systems working together, each of them designed, tested, evaluated and improved by dozens of engineers and other dedicated employees.

The Situation

In this video of a real world test drive in Pittsburgh, we see an Argo AV traveling in autonomous mode down a narrow two-way street, taking care to avoid cars parked on both sides.

The AV happens upon two oncoming vehicles. The first oncoming vehicle doesn’t slow down and continues toward the AV.

However, there is not enough road space for both vehicles to keep moving past one another side-by-side.

As a result, the AV yields to allow the first oncoming car space to pass safely.

Once this car clears the area, the AV proceeds forward and encounters the second oncoming car.

The second oncoming vehicle stops and waits for the AV. The AV assesses the situation, seizes the opportunity and moves around the vehicle continuing on its way.

It’s a simple, innocuous exchange — the AV successfully weaves around oncoming traffic — but a surprisingly complex one, involving careful decision-making from all the drivers involved, human and artificial alike.


In order to get around the oncoming traffic safely and smoothly, the AV first detects the dimensions of the road, the parked cars on either side, and the two oncoming cars. It also detects the amount of “free space” on the road that’s not occupied by any vehicle or person.

How does the AV do this? Using a suite of sensors mounted on its exterior, including cameras, radar, and lidar.

The Argo Self-Driving System (SDS), the collection of hardware and software that controls the AV, is able to combine data from all these sensors to create a far more detailed awareness of the roadway environment than any single type of sensor could on its own (say, cameras only).

Importantly in this scenario, the road is unmarked: there are no distinct lane lines or arrows on this segment. Instead, the drivers must decide on their own where to position their vehicles to stay safe and keep traffic moving.

The lack of lane markings creates ambiguity for the drivers: Can the cars keep moving at the same time or not, and if not, who goes first?


In the AV, that decision comes from another part of the SDS called the motion planning and controls (MPC) system. The MPC is artificial intelligence software that uses a technique called “motion forecasting” to accurately predict what other vehicles will do several seconds into the future based on their current and prior speed, trajectory, and behaviors.

The MPC creates and updates forecasted paths for these other vehicles (and in other cases, pedestrians) many times per second. It also ranks them by probability, in terms of likeliest to least likely. The likeliest paths are illustrated in a simplified format as blue arrows in the video above.

The MPC also generates safe responses for the AV to all the potential paths of the other moving vehicles, from the likeliest to least likely.

So, no matter what the other drivers choose to do, “we know what the AV is going to do,” Savtchenko says. “It’s going to take a safe option,” whether that means braking or continuing onward.


Once the MPC has forecasted the likeliest path of the first oncoming vehicle in this video, it sends an instruction to the AV’s controls for steering, brakes, engine, etc. — the same as human drivers have — telling the AV to stop and wait.

The AV follows the instruction and applies the brakes, coming to a smooth stop. Then, using its sensors to see what’s happening, it waits for the first car to pass before resuming forward.

The process repeats for the second oncoming car, only in this case, the SDS reaches a different forecast: when the second car stops and waits, the AV ascertains it is likely forfeiting the right-of-way and takes the opportunity to proceed.

“The trick is that sometimes the AV has to assert itself while being cautious,” Savtchenko says. “That’s where narrow road negotiation is necessary, it requires us to drive in other people’s lanes with purpose and agreement.”

Responding In Real Time

This real world scenario shows how the Argo SDS is able to respond to oncoming traffic on a narrow road, successfully negotiating with two human drivers with different behaviors in a tight space, keeping everyone moving safely and smoothly through the city — despite the ambiguity of the situation.

It’s this kind of confident, smooth and safe approach that enables Argo to test autonomous vehicles on public roads in eight cities in the U.S. and Germany today, and to begin accepting passengers and goods delivery orders in several select cities — with more on the way.

Must Reads