First of all, I am pretty new to the robotics scene, so please forgive me if I end up saying something wrong.
I am running a simulation on Gazebo+ROS2 Jazzy (Ubuntu Noble + Python 3.11) that contains a robot with a 360º LiDAR sensor and an RGB camera. My eventual goal is to be able to create an RGBD image using the pointcloud as a depth map, and the camera image as RGB data. I plan on using the Open3D library for this (with the RGBDImage.create_from_color_and_depth()
function) - and from what I have read, it can also help me in making a depth map using a pointcloud (with the PointCloud.project_to_depth_image()
function).
I am already able to collect both the RGB image and the pointcloud data through their corresponding topics in ROS2 (as sensor_msgs/Image
and sensor_msgs/PointCloud2
messages, respectively). But now I need to filter the pointcloud, so it represents only what the camera is able to capture/see.
I am aware that there are libraries for pointcloud filtering in C++, like the pcl_ros
library, but I have zero experience with the language, so I'm looking for a solution in Python. Any ideas on how I can tackle this problem?