Open loganfillo opened 3 years ago
Copying over from teams: "Basically, in the underwater-object-detection repo, we have designed the gate detection algorithm and have tested it on a small data set of images and videos. What we need to is implement it as a ROS2 package in our triton repo. We want to implement it in C++ as python has poor performance with cv algorithms especially if we want them to be executed as fast as possible in our vision system. You can start looking more into how the gate detection algorithm works and get a good idea of it's overall architecture. Check out the method 'detect' in the 'gate_detector.py' class and try to follow along with it as much as you can. You can skip the first two lines as that functionality won't be needed in the ROS2 implementation so start from the line where the variable 'seg' is defined. I will have a project ticket next week about this with more specific details but you can get a head start on learning about the algorithm if you have the time."
We need to implement the gate detection algorithm from this repo into C++ and then into our ROS2 system. We have designed the algorithm in python but we require it to be in C++ for better performance and to better integrate with ROS2. Since the algorithm primarily uses OpenCV functions, it should be relatively straightforward to implement most parts as OpenCV is implemented in both python and C++. The implementation of the algorithm should be integrated into the ROS2 system as a series of one or more component nodes (depending on how much code is needed for each step of the algorithm, we might want each step to be its own node). These component nodes should be able to be launched in the pipeline.
Resources OpenCV Tutorials Python implementation repo Creating a Library in ROS2
Tasks
[ ] Create a package
triton_gate
which will contain the component nodes needed to implement the algorithm.[x] In the python repo, any functions used by the gate detector algorithm from the super class
ObjectDetector
should be put into it's own package calledtriton_vision_utils
. This should contain non ROS2 code and instead should act as a library that can be used as a dependency by other packages (i.e the CMake should export the include folder so other packages can write#include triton_vision_utils/vision_utils.hpp
to gain access to these functions`)[ ] Implement the algorithm in C++ without worrying about ROS2. You can do this by creating an auto generated node when you create the
triton_gate
package and in the main function of the node you can write the algorithm and run it by usingros2 run
.[ ] Integrate the algorithm into a series of one or more ROS2 components nodes and test how they work in the pipeline.