Skip to content

Commit 4f35ca8

Browse files
committed
image subscribe
1 parent 80c2990 commit 4f35ca8

File tree

4 files changed

+235
-150
lines changed

4 files changed

+235
-150
lines changed

elevation_mapping_cupy/config/core/core_param.yaml

Lines changed: 25 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
elevation_mapping:
22
ros__parameters:
3-
#### Basic parameters ########
4-
enable_normal_arrow_publishing: false
3+
#### Basic parameters ########
4+
voxel_filter_size: 0.05
5+
enable_normal_arrow_publishing: true
56
cell_n: 40000 # number of cells in the map.
67
data_type: 'float32' # data type for the map.
78
average_weight: 0.5
@@ -11,7 +12,7 @@ elevation_mapping:
1112
min_filter_iteration: 3 # number of iterations for min filter.
1213
initialized_variance: 10.0 # initial variance for each cell.
1314
resolution: 0.1 # resolution in m.
14-
map_length: 20.0 # map's size in m.
15+
map_length: 20.0 # map's size in m.
1516
sensor_noise_factor: 0.05 # point's noise is sensor_noise_factor*z^2 (z is distance from sensor).
1617
mahalanobis_thresh: 2.0 # points outside this distance is outlier.
1718
outlier_variance: 0.01 # if point is outlier, add this value to the cell.
@@ -65,7 +66,7 @@ elevation_mapping:
6566
enable_pointcloud_publishing: false
6667
enable_drift_corrected_TF_publishing: false
6768
enable_normal_color: true # If true, the map contains 'color' layer corresponding to normal. Add 'color' layer to the publishers setting if you want to visualize.
68-
enable_normal: true
69+
6970

7071
#### Traversability filter ########
7172
use_chainer: false # Use chainer as a backend of traversability filter or pytorch. If false, it uses pytorch. pytorch requires ~2GB more GPU memory compared to chainer but runs faster.
@@ -104,23 +105,29 @@ elevation_mapping:
104105
# camera_info_topic_name: '/camera/depth/camera_info'
105106
# channel_info_topic_name: '/camera/channel_info'
106107

108+
107109
subscribers:
108110
pointcloud1:
109-
# topic_name: '/ouster/points'
110-
topic_name: '/a200/sensors/camera_0/points'
111+
# topic_name: '/ouster/points'
112+
topic_name: '/a200/sensors/camera_0/points'
111113
data_type: 'pointcloud'
112-
# image1:
114+
image1:
115+
topic_name: '/feat_processing_node/semantic_seg_feat'
116+
info_name: '/feat_processing_node/a200/sensors/camera_0/color/camera_info_resized'
117+
channel_name: '/feat_processing_node/feat_channel_info'
118+
data_type: 'image'
119+
# image2:
113120
# topic_name: '/a200/sensors/camera_0/color/image'
114121
# info_name: '/a200/sensors/camera_0/color/camera_info'
115122
# data_type: 'image'
116123
# channel_name: '/front_cam/channel_info'
117124

125+
# channel_name: '/front_cam/channel_info'
126+
118127
# image_topic2: '/camera/rgb/image_raw2'
119128
# image_info2: '/camera/depth/camera_info2'
120129
# image_channel_info1: '/front_cam/channel_info'
121130

122-
123-
124131
# image: # for semantic images
125132
# topic_name: '/front_cam/semantic_image'
126133
# camera_info_topic_name: '/front_cam/camera/depth/camera_info_resized'
@@ -135,17 +142,17 @@ elevation_mapping:
135142

136143
publishers:
137144
elevation_map_raw:
138-
layers: ['elevation', 'traversability', 'variance','normal_x', 'normal_y', 'normal_z']
145+
layers: ['elevation', 'traversability', 'variance','rgb', 'normal_x', 'normal_y', 'normal_z', 'feat_0','feat_1','feat_2','feat_3','feat_4']
139146
basic_layers: ['elevation']
140147
fps: 5.0
141-
# elevation_map_recordable:
142-
# layers: ['elevation', 'traversability']
143-
# basic_layers: ['elevation', 'traversability']
144-
# fps: 2.0
145-
# elevation_map_filter:
146-
# layers: ['min_filter', 'smooth', 'inpaint', 'elevation']
147-
# basic_layers: ['min_filter']
148-
# fps: 3.0
148+
elevation_map_recordable:
149+
layers: ['elevation', 'traversability']
150+
basic_layers: ['elevation', 'traversability']
151+
fps: 2.0
152+
elevation_map_filter:
153+
layers: ['min_filter', 'smooth', 'inpaint', 'elevation']
154+
basic_layers: ['min_filter']
155+
fps: 3.0
149156

150157

151158
# plugun info

elevation_mapping_cupy/include/elevation_mapping_cupy/elevation_mapping_ros.hpp

Lines changed: 35 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
#include <pcl/PCLPointCloud2.h>
4949
#include <pcl/point_types.h>
5050
#include <pcl_conversions/pcl_conversions.h>
51+
#include <pcl/filters/voxel_grid.h>
5152

5253
// OpenCV
5354
#include <opencv2/core.hpp>
@@ -89,23 +90,28 @@ class ElevationMappingNode : public rclcpp::Node {
8990
using CameraChannelSyncPtr = std::shared_ptr<CameraChannelSync>;
9091

9192
// Subscriber and Synchronizer for Pointcloud messages
92-
using PointCloudSubscriber = message_filters::Subscriber<sensor_msgs::msg::PointCloud2>;
93-
using PointCloudSubscriberPtr = std::shared_ptr<PointCloudSubscriber>;
94-
using PointCloudPolicy = message_filters::sync_policies::ApproximateTime<sensor_msgs::msg::PointCloud2, elevation_map_msgs::msg::ChannelInfo>;
95-
using PointCloudSync = message_filters::Synchronizer<PointCloudPolicy>;
96-
using PointCloudSyncPtr = std::shared_ptr<PointCloudSync>;
93+
// using PointCloudSubscriber = message_filters::Subscriber<sensor_msgs::msg::PointCloud2>;
94+
// using PointCloudSubscriberPtr = std::shared_ptr<PointCloudSubscriber>;
95+
// using PointCloudPolicy = message_filters::sync_policies::ApproximateTime<sensor_msgs::msg::PointCloud2, elevation_map_msgs::msg::ChannelInfo>;
96+
// using PointCloudSync = message_filters::Synchronizer<PointCloudPolicy>;
97+
// using PointCloudSyncPtr = std::shared_ptr<PointCloudSync>;
9798

9899
private:
99-
void readParameters();
100-
void setupMapPublishers();
101-
void pointcloudCallback(const sensor_msgs::msg::PointCloud2::SharedPtr cloud, const std::string& key);
102-
void inputPointCloud(const sensor_msgs::msg::PointCloud2::SharedPtr cloud, const std::vector<std::string>& channels);
103-
// void inputImage(const sensor_msgs::ImageConstPtr& image_msg, const sensor_msgs::CameraInfoConstPtr& camera_info_msg, const std::vector<std::string>& channels);
100+
void readParameters();
101+
void setupMapPublishers();
102+
void pointcloudCallback(const sensor_msgs::msg::PointCloud2::SharedPtr cloud, const std::string& key);
103+
void inputPointCloud(const sensor_msgs::msg::PointCloud2::SharedPtr cloud, const std::vector<std::string>& channels);
104+
105+
void inputImage(const sensor_msgs::msg::Image::ConstSharedPtr& image_msg,
106+
const sensor_msgs::msg::CameraInfo::ConstSharedPtr& camera_info_msg,
107+
const std::vector<std::string>& channels);
108+
109+
104110
// void imageCallback(const sensor_msgs::msg::Image::SharedPtr image_msg, const sensor_msgs::msg::CameraInfo::SharedPtr camera_info_msg, const std::string& key);
105111
// void imageChannelCallback(const sensor_msgs::msg::Image::SharedPtr image_msg, const sensor_msgs::msg::CameraInfo::SharedPtr camera_info_msg, const elevation_map_msgs::msg::ChannelInfo::SharedPtr channel_info_msg);
106-
void imageCallback(const std::shared_ptr<const sensor_msgs::msg::Image>& image_msg, const std::shared_ptr<const sensor_msgs::msg::CameraInfo>& camera_info_msg, const std::string& key);
107-
void imageChannelCallback(const std::shared_ptr<const sensor_msgs::msg::Image>& image_msg, const std::shared_ptr<const sensor_msgs::msg::CameraInfo>& camera_info_msg, const std::shared_ptr<const elevation_map_msgs::msg::ChannelInfo>& channel_info_msg);
108-
112+
void imageCallback(const sensor_msgs::msg::Image::SharedPtr cloud, const std::string& key);
113+
void imageChannelCallback(const elevation_map_msgs::msg::ChannelInfo::SharedPtr chennel_info, const std::string& key);
114+
void imageInfoCallback(const sensor_msgs::msg::CameraInfo::SharedPtr image_info, const std::string& key);
109115
// void pointCloudChannelCallback(const sensor_msgs::PointCloud2& cloud, const elevation_map_msgs::ChannelInfoConstPtr& channel_info_msg);
110116
// // void multiLayerImageCallback(const elevation_map_msgs::MultiLayerImageConstPtr& image_msg, const sensor_msgs::CameraInfoConstPtr& camera_info_msg);
111117
void publishAsPointCloud(const grid_map::GridMap& map) const;
@@ -139,12 +145,18 @@ visualization_msgs::msg::Marker vectorToArrowMarker(const Eigen::Vector3d& start
139145
rclcpp::Node::SharedPtr node_;
140146
// image_transport::ImageTransport it_;
141147
std::vector<rclcpp::Subscription<sensor_msgs::msg::PointCloud2>::SharedPtr> pointcloudSubs_;
142-
std::vector<ImageSubscriberPtr> imageSubs_;
143-
std::vector<CameraInfoSubscriberPtr> cameraInfoSubs_;
144-
std::vector<ChannelInfoSubscriberPtr> channelInfoSubs_;
145-
std::vector<CameraSyncPtr> cameraSyncs_;
146-
std::vector<CameraChannelSyncPtr> cameraChannelSyncs_;
147-
std::vector<PointCloudSyncPtr> pointCloudSyncs_;
148+
149+
std::vector<rclcpp::Subscription<sensor_msgs::msg::Image>::SharedPtr> imageSubs_;
150+
std::vector<rclcpp::Subscription<sensor_msgs::msg::CameraInfo>::SharedPtr> cameraInfoSubs_;
151+
std::vector<rclcpp::Subscription<elevation_map_msgs::msg::ChannelInfo>::SharedPtr> channelInfoSubs_;
152+
153+
154+
// std::vector<ImageSubscriberPtr> imageSubs_;
155+
// std::vector<CameraInfoSubscriberPtr> cameraInfoSubs_;
156+
// std::vector<ChannelInfoSubscriberPtr> channelInfoSubs_;
157+
// std::vector<CameraSyncPtr> cameraSyncs_;
158+
// std::vector<CameraChannelSyncPtr> cameraChannelSyncs_;
159+
// std::vector<PointCloudSyncPtr> pointCloudSyncs_;
148160
std::vector<rclcpp::Publisher<grid_map_msgs::msg::GridMap>::SharedPtr> mapPubs_;
149161

150162

@@ -206,6 +218,7 @@ visualization_msgs::msg::Marker vectorToArrowMarker(const Eigen::Vector3d& start
206218

207219
double positionAlpha_;
208220
double orientationAlpha_;
221+
double voxel_filter_size_;
209222

210223
double recordableFps_;
211224
std::atomic_bool enablePointCloudPublishing_;
@@ -215,6 +228,9 @@ visualization_msgs::msg::Marker vectorToArrowMarker(const Eigen::Vector3d& start
215228
double initializeTfGridSize_;
216229
bool alwaysClearWithInitializer_;
217230
std::atomic_int pointCloudProcessCounter_;
231+
232+
std::map<std::string, std::pair<sensor_msgs::msg::CameraInfo, bool>> imageInfoReady_;
233+
std::map<std::string, std::pair<elevation_map_msgs::msg::ChannelInfo, bool>> imageChannelReady_;
218234
};
219235

220236
} // namespace elevation_mapping_cupy

0 commit comments

Comments
 (0)