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.bash
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.
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