mirror of
https://github.com/introlab/rtabmap_ros.git
synced 2026-10-12 12:39:50 +08:00
Supporting image compression formats passthrough (#1461)
* Supporting ros depth compression formats passthrough * Added image_compression_format (support jpg,png). Use Compression.h constants. * Bridging gap with #1457 * CoreWrapper: decode_images_on_demand * rgbd_sync->rgbd_split encoding/decoding test with image_transport validation. rgbd_split color passthrough * more tests * fixing ci on kilted+ * fixing test * fixing lyrical tests * fixing rolling ci * Improved test coverage * fixing some tf waitForTransform deadlocks when sim time is used in tests * CI: build rtabmap_slam on rolling rtabmap_slam builds without nav2_msgs, which is not on resolute yet: skip its key instead of leaving the package out. Only rtabmap_costmap_plugins (and the rtabmap_ros metapackage pulling it in) still need nav2.
This commit is contained in:
@@ -4,6 +4,7 @@ All rights reserved. (BSD-3-Clause, see the repository root.)
|
||||
*/
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
#include <rtabmap_msgs/msg/rgbd_image.hpp>
|
||||
|
||||
#include <tf2_ros/static_transform_broadcaster.hpp>
|
||||
|
||||
@@ -584,6 +585,28 @@ TEST_F(IcpOdometryTest, publishes_an_identity_pose_for_the_first_scan_cloud)
|
||||
EXPECT_NEAR(0.0, msg.pose.pose.position.z, 1e-6);
|
||||
}
|
||||
|
||||
/// Without a camera there is no RGBDImage to republish: odom_rgbd_image stays silent,
|
||||
/// while the odometry itself is published.
|
||||
TEST_F(IcpOdometryTest, does_not_publish_an_rgbd_image_without_a_camera)
|
||||
{
|
||||
publishSensorTf();
|
||||
std::shared_ptr<Collector<nav_msgs::msg::Odometry>> odom =
|
||||
collect<nav_msgs::msg::Odometry>("odom");
|
||||
std::shared_ptr<Collector<rtabmap_msgs::msg::RGBDImage>> frames =
|
||||
collect<rtabmap_msgs::msg::RGBDImage>("odom_rgbd_image");
|
||||
makeNode(icpTestParameters());
|
||||
|
||||
rclcpp::Publisher<sensor_msgs::msg::PointCloud2>::SharedPtr pub =
|
||||
helper()->create_publisher<sensor_msgs::msg::PointCloud2>("scan_cloud", 10);
|
||||
ASSERT_TRUE(waitForSubscriber(pub));
|
||||
ASSERT_TRUE(waitForPublisher(frames->subscription));
|
||||
|
||||
pub->publish(makeXYZCloud("lidar", 1.0, corner3D()));
|
||||
ASSERT_TRUE(spinUntil([&]() { return !odom->empty(); }));
|
||||
spinFor(std::chrono::milliseconds(200));
|
||||
EXPECT_TRUE(frames->empty());
|
||||
}
|
||||
|
||||
/// A 2D lidar goes in on `scan` instead of `scan_cloud`, and reaches the same odometry.
|
||||
TEST_F(IcpOdometryTest, accepts_a_laser_scan)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user