Awesome
Full environment to run the Norfair ROS node
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