Skip to content

Commit a28ddc5

Browse files
Rebase
Signed-off-by: ElSayed ElSheikh <[email protected]>
1 parent 78b1ec9 commit a28ddc5

File tree

6 files changed

+23
-5
lines changed

6 files changed

+23
-5
lines changed

nav2_collision_monitor/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ find_package(tf2 REQUIRED)
1616
find_package(tf2_ros REQUIRED)
1717
find_package(visualization_msgs REQUIRED)
1818
find_package(nav2_ros_common REQUIRED)
19+
find_package(point_cloud_transport REQUIRED)
1920

2021
nav2_package()
2122

@@ -53,6 +54,7 @@ target_link_libraries(${monitor_library_name} PUBLIC
5354
tf2::tf2
5455
tf2_ros::tf2_ros
5556
${visualization_msgs_TARGETS}
57+
point_cloud_transport::point_cloud_transport
5658
)
5759
target_link_libraries(${monitor_library_name} PRIVATE
5860
rclcpp_components::component
@@ -87,6 +89,7 @@ target_link_libraries(${detector_library_name} PUBLIC
8789
tf2_ros::tf2_ros
8890
tf2::tf2
8991
${visualization_msgs_TARGETS}
92+
point_cloud_transport::point_cloud_transport
9093
)
9194
target_link_libraries(${detector_library_name} PRIVATE
9295
rclcpp_components::component
@@ -168,6 +171,7 @@ ament_export_dependencies(
168171
tf2_ros
169172
nav2_ros_common
170173
visualization_msgs
174+
point_cloud_transport
171175
)
172176
ament_export_targets(export_${PROJECT_NAME})
173177

nav2_collision_monitor/include/nav2_collision_monitor/pointcloud.hpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include <string>
2121

2222
#include "sensor_msgs/msg/point_cloud2.hpp"
23+
#include "point_cloud_transport/point_cloud_transport.hpp"
2324

2425
#include "nav2_collision_monitor/source.hpp"
2526

@@ -98,7 +99,9 @@ class PointCloud : public Source
9899
// ----- Variables -----
99100

100101
/// @brief PointCloud data subscriber
101-
nav2::Subscription<sensor_msgs::msg::PointCloud2>::SharedPtr data_sub_;
102+
std::shared_ptr<point_cloud_transport::PointCloudTransport> pct_;
103+
point_cloud_transport::Subscriber data_sub_;
104+
std::string transport_type_;
102105

103106
// Minimum and maximum height of PointCloud projected to 2D space
104107
double min_height_, max_height_;

nav2_collision_monitor/package.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
<depend>tf2_ros</depend>
2525
<depend>visualization_msgs</depend>
2626
<depend>nav2_ros_common</depend>
27+
<depend>point_cloud_transport</depend>
28+
<depend>point_cloud_transport_plugins</depend>
2729

2830
<test_depend>ament_cmake_gtest</test_depend>
2931
<test_depend>ament_lint_common</test_depend>

nav2_collision_monitor/params/collision_detector_params.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ collision_detector:
2323
pointcloud:
2424
type: "pointcloud"
2525
topic: "/intel_realsense_r200_depth/points"
26+
transport_type: "raw" # Options: raw, zlib, draco, zstd
2627
min_height: 0.1
2728
max_height: 0.5
2829
enabled: True

nav2_collision_monitor/params/collision_monitor_params.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ collision_monitor:
9696
pointcloud:
9797
type: "pointcloud"
9898
topic: "/intel_realsense_r200_depth/points"
99+
transport_type: "raw" # Options: raw, zlib, draco, zstd
99100
min_height: 0.1
100101
max_height: 0.5
101102
enabled: True

nav2_collision_monitor/src/pointcloud.cpp

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ PointCloud::PointCloud(
4545
PointCloud::~PointCloud()
4646
{
4747
RCLCPP_INFO(logger_, "[%s]: Destroying PointCloud", source_name_.c_str());
48-
data_sub_.reset();
48+
data_sub_.shutdown();
4949
}
5050

5151
void PointCloud::configure()
@@ -60,10 +60,15 @@ void PointCloud::configure()
6060

6161
getParameters(source_topic);
6262

63-
data_sub_ = node->create_subscription<sensor_msgs::msg::PointCloud2>(
64-
source_topic,
63+
const point_cloud_transport::TransportHints hint(transport_type_);
64+
65+
pct_ = std::make_shared<point_cloud_transport::PointCloudTransport>(*node);
66+
67+
data_sub_ = pct_->subscribe(
68+
source_topic, nav2::qos::SensorDataQoS(),
6569
std::bind(&PointCloud::dataCallback, this, std::placeholders::_1),
66-
nav2::qos::SensorDataQoS());
70+
{}, &hint
71+
);
6772

6873
// Add callback for dynamic parameters
6974
dyn_params_handler_ = node->add_on_set_parameters_callback(
@@ -131,6 +136,8 @@ void PointCloud::getParameters(std::string & source_topic)
131136
nav2::declare_parameter_if_not_declared(
132137
node, source_name_ + ".min_range", rclcpp::ParameterValue(0.0));
133138
min_range_ = node->get_parameter(source_name_ + ".min_range").as_double();
139+
node, source_name_ + ".transport_type", rclcpp::ParameterValue(std::string("raw")));
140+
transport_type_ = node->get_parameter(source_name_ + ".transport_type").as_string();
134141
}
135142

136143
void PointCloud::dataCallback(sensor_msgs::msg::PointCloud2::ConstSharedPtr msg)

0 commit comments

Comments
 (0)