NOTE: Based on duckietown/template-ros.
This repository contains an intersection negotiation functionality for Duckiebots model DB19.
Considerations:
- Road users: vehicles (duckiebtos) and pedestrians (duckies).
- Static road users.
- Intersections of 4 perpendicular wyas, planar ground and given map.
- Vehicles just perform 90° turns.
- Pedestrians only cross the street between adjacent blocks.
- Priority rules accoring to Colombia's National Transit Code.
- Negotiation refers to avoid collisions inside conflict zones without muli-agent communication.
- Duckiebot DB19 equipped with a Raspberry pi 3b+ (ARM32v7, 1.4 GHz, 1G RAM).
To execute this system it is required to have a flashed Duckiebot model DB19, and to follow the Laptop Setup tutorial from Duckietown.
It is required to locate all road users in the scene before executing the system.
Fork this repository to your local machine. Then move to the main directory.
cd /local_path/intersection_nav/
dts devel build -f -H ROBOTNAME.local
build docker image on the robot.
dts devel build -f -H ROBOTNAME.local
run a docker container created from the system's image.
In another terminal run docker -H ROBOTNAME.local exec -it dts-run-intersection_nav bash
to attach to the container.
Once entered to the container run: /launch/intersection_nav
to start autoconfiguration. This command will show the message: Setting up intersection negotiation!.
rostopic pub /ROBOTNAME/chief_node/goal destination: DESIRED_DESTINATION_NUMBER
After setting a destination, the system will wait for the current navigation mode to move robot toward the intersection. At this point the intersection will be being detected, and the system will take control of the robot once it has arrived to the desired stop distance from the intersection.