This repo builds a dev environment for the development of the Norfair ROS package.
To build the environment Docker and Docker Compose are required.
We use the ros:noetic image. This image is built on Ubuntu 20.04.
In the norfair-ros repository you can find a piece of more detailed information about this package.
This environment has 3 ROS packages: publisher, darknet_ros, and norfair_ros.
publisher: Iterate over a video and publishes each frame into the camera/rgb/image_raw topic, the darknet_ros node is subscribed to this topic.
darknet_ros: Yolo Detector publishes the detections on the darknet_ros/bounding_boxes topic.
norfair_ros: Norfair ROS node has a converter node to unify different types of input messages to the one accepted by Norfair. Internally Norfair is subscribe to the norfair/input topic and publishes the Norfair tracking results on the norfair/output topic.
Build the Docker Image and run the container
docker-compose build
docker-compose up
Inside the Docker container run the following commands
# Set environment variables used by ROS
source /opt/ros/noetic/setup.bash
# Compile
catkin_make
# Build ROS messages
. devel/setup.bashBefore running the entire environment you need to load a video to process. Keep in mind that this environment is based on a video file and not on a camera. You can easily change the publisher loop to publish a frame from a camera.
To load a video you need to upload it to the publisher/src folder and adapt the parameter input_video in the config file. Now, mp4 and avi are supported.
Another required step is to download the model weights for the darknet_ros package. To do that you need to run the following command inside the docker container:
wget http://pjreddie.com/media/files/yolov2-tiny.weights -P /root/catkin_ws/src/darknet_ros/darknet_ros/yolo_network_config/weights
You can find more information to select other models in the darknet_ros repository.
If you like to start the three packages with only one command, you can run the following inside the docker container
roslaunch startup dev.launch
This command launches the 3 packages and starts the tracking process to the detections provided by the detector.
⚠️ Make the setup before running this command.
To start the darknet_ros package you can execute the following command:
roslaunch darknet_ros darknet_ros.launch
If the execution is fine, you can start the norfair_ros package to generate the tracking process with the output of the detector.
To start the norfair_ros package run the following command:
roslaunch norfair_ros norfair_node.launch
At this time you can start the publisher package to publish into the detector topic and generate detections to be processed with the norfair_ros package.
To start the publisher package run the following command:
roslaunch publisher publisher_node.launch