0
$\begingroup$

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?

$\endgroup$

1 Answer 1

0
$\begingroup$

You can use PCL's filters feature

$\endgroup$
3
  • 1
    $\begingroup$ But isn't pcl_filters a C++ library? I am looking for a Python alternative, since I don't know how to use C++at the moment. $\endgroup$ Commented Sep 9 at 19:26
  • $\begingroup$ Alternatively you can use pclpy $\endgroup$
    – serkan
    Commented Sep 10 at 8:32
  • $\begingroup$ Just looked it up - pclpy has not received updates since 2020, an only supports up to Python 3.8 on Linux. I've been using Python 3.11 (will update post with this) for my project since that's supported by Open3D. $\endgroup$ Commented Sep 10 at 17:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.