Full environment to run the Norfair ROS node
December 28, 2022 ยท View on GitHub
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.
Basic information
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.
How to build
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.bash
Setup
Before 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.
How to run all packages
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.
:warning: Make the setup before running this command.
How to run each package
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