diff --git a/README.md b/README.md
index d2b97ffd4..b0483900b 100644
--- a/README.md
+++ b/README.md
@@ -8,6 +8,8 @@ Galactic | Edifice | [galactic](https://github.com/gazebosim/ros_gz/tree/galacti
Galactic | Fortress | [galactic](https://github.com/gazebosim/ros_gz/tree/galactic) | only from source
Humble | Fortress | [humble](https://github.com/gazebosim/ros_gz/tree/humble) | https://packages.ros.org
Humble | Garden | [humble](https://github.com/gazebosim/ros_gz/tree/humble) | only from source
+Iron | Fortress | [humble](https://github.com/gazebosim/ros_gz/tree/iron) | https://packages.ros.org
+Iron | Garden | [humble](https://github.com/gazebosim/ros_gz/tree/iron) | only from source
Rolling | Edifice | [ros2](https://github.com/gazebosim/ros_gz/tree/ros2) | only from source
Rolling | Fortress | [ros2](https://github.com/gazebosim/ros_gz/tree/ros2) | https://packages.ros.org
Rolling | Garden | [ros2](https://github.com/gazebosim/ros_gz/tree/ros2) | only from source
@@ -51,11 +53,11 @@ This repository holds packages that provide integration between
## Install
-This branch supports ROS Rolling. See above for other ROS versions.
+This branch supports ROS Iron. See above for other ROS versions.
### Binaries
-Rolling binaries are available for Fortress.
+Iron binaries are available for Fortress.
They are hosted at https://packages.ros.org.
1. Add https://packages.ros.org
@@ -66,14 +68,14 @@ They are hosted at https://packages.ros.org.
1. Install `ros_gz`
- sudo apt install ros-rolling-ros-ign
+ sudo apt install ros-iron-ros-gz
### From source
#### ROS
Be sure you've installed
-[ROS Rolling](https://index.ros.org/doc/ros2/Installation/)
+[ROS Iron](https://docs.ros.org/en/iron/Installation.html)
(at least ROS-Base). More ROS dependencies will be installed below.
#### Gazebo
@@ -121,3 +123,10 @@ The following steps are for Linux and OSX.
cd ~/ws
colcon build
```
+
+## ROSCon 2022
+
+[![](img/video_img.png)](https://vimeo.com/showcase/9954564/video/767127300)
+
+## Project Template
+[A template project integrating ROS and Gazebo simulator](https://github.com/gazebosim/ros_gz_project_template)
diff --git a/ros_gz/CHANGELOG.rst b/ros_gz/CHANGELOG.rst
index 60541f530..12875b00f 100644
--- a/ros_gz/CHANGELOG.rst
+++ b/ros_gz/CHANGELOG.rst
@@ -2,6 +2,9 @@
Changelog for package ros_gz
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+0.247.0 (2023-11-02)
+--------------------
+
0.245.0 (2023-05-23)
--------------------
diff --git a/ros_gz/package.xml b/ros_gz/package.xml
index 323c8e857..f7c4d786e 100644
--- a/ros_gz/package.xml
+++ b/ros_gz/package.xml
@@ -4,7 +4,7 @@
ros_gz
- 0.245.0
+ 0.247.0
Meta-package containing interfaces for using ROS 2 with Gazebo simulation.
Louise Poubel
Apache 2.0
diff --git a/ros_gz_bridge/CHANGELOG.rst b/ros_gz_bridge/CHANGELOG.rst
index 4a086e268..158ce6ce1 100644
--- a/ros_gz_bridge/CHANGELOG.rst
+++ b/ros_gz_bridge/CHANGELOG.rst
@@ -2,6 +2,21 @@
Changelog for package ros_gz_bridge
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+0.247.0 (2023-11-02)
+--------------------
+* Fix double wait in ros_gz_bridge (`#347 `_) (`#449 `_)
+ Co-authored-by: ymd-stella <7959916+ymd-stella@users.noreply.github.com>
+* [backport iron] SensorNoise msg bridging (`#417 `_) (`#425 `_)
+ Co-authored-by: Aditya Pande
+* Merge pull request `#420 `_ from gazebosim/ahcorde/iron/backport/411
+ [backport iron] Update README.md (`#411 `_)
+* Merge branch 'iron' into ahcorde/iron/backport/411
+* [backport Iron] Added Altimeter msg bridging (`#413 `_) (`#414 `_)
+ Co-authored-by: Aditya Pande
+* Update README.md (`#411 `_)
+ The ROS type for gz.msgs.NavSat messages should be **sensor_msgs/msg/NavSatFix** instead of **sensor_msgs/msg/NavSatFixed**
+* Contributors: Alejandro Hernández Cordero, Arjun K Haridas
+
0.245.0 (2023-05-23)
--------------------
* Backport: Add missing rosidl_cmake dep to ros_gz_bridge (`#391 `_) (`#396 `_)
diff --git a/ros_gz_bridge/README.md b/ros_gz_bridge/README.md
index 08743a66b..11135cdbb 100644
--- a/ros_gz_bridge/README.md
+++ b/ros_gz_bridge/README.md
@@ -32,19 +32,21 @@ The following message types can be bridged for topics:
| geometry_msgs/msg/TwistWithCovariance| ignition::msgs::TwistWithCovariance |
| nav_msgs/msg/Odometry | ignition::msgs::Odometry |
| nav_msgs/msg/Odometry | ignition::msgs::OdometryWithCovariance |
-| rcl_interfaces/msg/ParameterValue | ignition::msgs::Any |
+| rcl_interfaces/msg/ParameterValue | ignition::msgs::Any |
+| ros_gz_interfaces/msg/Altimeter | ignition::msgs::Altimeter |
| ros_gz_interfaces/msg/Contact | ignition::msgs::Contact |
| ros_gz_interfaces/msg/Contacts | ignition::msgs::Contacts |
-| ros_gz_interfaces/msg/Dataframe | ignition::msgs::Dataframe |
+| ros_gz_interfaces/msg/Dataframe | ignition::msgs::Dataframe |
| ros_gz_interfaces/msg/Entity | ignition::msgs::Entity |
| ros_gz_interfaces/msg/Float32Array | ignition::msgs::Float_V |
| ros_gz_interfaces/msg/GuiCamera | ignition::msgs::GUICamera |
| ros_gz_interfaces/msg/JointWrench | ignition::msgs::JointWrench |
| ros_gz_interfaces/msg/Light | ignition::msgs::Light |
+| ros_gz_interfaces/msg/SensorNoise | ignition::msgs::SensorNoise |
| ros_gz_interfaces/msg/StringVec | ignition::msgs::StringMsg_V |
| ros_gz_interfaces/msg/TrackVisual | ignition::msgs::TrackVisual |
-| ros_gz_interfaces/msg/VideoRecord | ignition::msgs::VideoRecord |
-| ros_gz_interfaces/msg/WorldControl | ignition::msgs::WorldControl |
+| ros_gz_interfaces/msg/VideoRecord | ignition::msgs::VideoRecord |
+| ros_gz_interfaces/msg/WorldControl | ignition::msgs::WorldControl |
| rosgraph_msgs/msg/Clock | ignition::msgs::Clock |
| sensor_msgs/msg/BatteryState | ignition::msgs::BatteryState |
| sensor_msgs/msg/CameraInfo | ignition::msgs::CameraInfo |
@@ -52,10 +54,10 @@ The following message types can be bridged for topics:
| sensor_msgs/msg/Imu | ignition::msgs::IMU |
| sensor_msgs/msg/Image | ignition::msgs::Image |
| sensor_msgs/msg/JointState | ignition::msgs::Model |
-| sensor_msgs/msg/Joy | ignition::msgs::Joy |
+| sensor_msgs/msg/Joy | ignition::msgs::Joy |
| sensor_msgs/msg/LaserScan | ignition::msgs::LaserScan |
| sensor_msgs/msg/MagneticField | ignition::msgs::Magnetometer |
-| sensor_msgs/msg/NavSatFixed | ignition::msgs::NavSat |
+| sensor_msgs/msg/NavSatFix | ignition::msgs::NavSat |
| sensor_msgs/msg/PointCloud2 | ignition::msgs::PointCloudPacked |
| tf2_msgs/msg/TFMessage | ignition::msgs::Pose_V |
| trajectory_msgs/msg/JointTrajectory | ignition::msgs::JointTrajectory |
@@ -64,7 +66,7 @@ And the following for services:
| ROS type | Gazebo request | Gazebo response |
|--------------------------------------|:--------------------------:| --------------------- |
-| ros_gz_interfaces/srv/ControlWorld | ignition.msgs.WorldControl | ignition.msgs.Boolean |
+| ros_gz_interfaces/srv/ControlWorld | ignition.msgs.WorldControl | ignition.msgs.Boolean |
Run `ros2 run ros_gz_bridge parameter_bridge -h` for instructions.
diff --git a/ros_gz_bridge/include/ros_gz_bridge/convert/ros_gz_interfaces.hpp b/ros_gz_bridge/include/ros_gz_bridge/convert/ros_gz_interfaces.hpp
index 9a71beb91..9b0f5c10d 100644
--- a/ros_gz_bridge/include/ros_gz_bridge/convert/ros_gz_interfaces.hpp
+++ b/ros_gz_bridge/include/ros_gz_bridge/convert/ros_gz_interfaces.hpp
@@ -16,6 +16,7 @@
#define ROS_GZ_BRIDGE__CONVERT__ROS_GZ_INTERFACES_HPP_
// Gazebo Msgs
+#include
#include
#include
#include
@@ -25,12 +26,14 @@
#include
#include
#include
+#include
#include
#include
#include
#include
// ROS 2 messages
+#include
#include
#include
#include
@@ -39,6 +42,7 @@
#include
#include
#include
+#include
#include
#include
#include
@@ -69,6 +73,18 @@ convert_gz_to_ros(
const ignition::msgs::JointWrench & gz_msg,
ros_gz_interfaces::msg::JointWrench & ros_msg);
+template<>
+void
+convert_ros_to_gz(
+ const ros_gz_interfaces::msg::Altimeter & ros_msg,
+ ignition::msgs::Altimeter & gz_msg);
+
+template<>
+void
+convert_gz_to_ros(
+ const ignition::msgs::Altimeter & gz_msg,
+ ros_gz_interfaces::msg::Altimeter & ros_msg);
+
template<>
void
convert_ros_to_gz(
@@ -143,6 +159,18 @@ convert_gz_to_ros(
const ignition::msgs::Light & gz_msg,
ros_gz_interfaces::msg::Light & ros_msg);
+template<>
+void
+convert_ros_to_gz(
+ const ros_gz_interfaces::msg::SensorNoise & ros_msg,
+ ignition::msgs::SensorNoise & gz_msg);
+
+template<>
+void
+convert_gz_to_ros(
+ const ignition::msgs::SensorNoise & gz_msg,
+ ros_gz_interfaces::msg::SensorNoise & ros_msg);
+
template<>
void
convert_ros_to_gz(
diff --git a/ros_gz_bridge/package.xml b/ros_gz_bridge/package.xml
index d0692d43b..681a4cc7f 100644
--- a/ros_gz_bridge/package.xml
+++ b/ros_gz_bridge/package.xml
@@ -2,7 +2,7 @@
ros_gz_bridge
- 0.245.0
+ 0.247.0
Bridge communication between ROS and Gazebo Transport
Louise Poubel
diff --git a/ros_gz_bridge/ros_gz_bridge/mappings.py b/ros_gz_bridge/ros_gz_bridge/mappings.py
index 3968ed6e1..2a6a60bca 100644
--- a/ros_gz_bridge/ros_gz_bridge/mappings.py
+++ b/ros_gz_bridge/ros_gz_bridge/mappings.py
@@ -53,6 +53,7 @@
Mapping('ParameterValue', 'Any'),
],
'ros_gz_interfaces': [
+ Mapping('Altimeter', 'Altimeter'),
Mapping('Contact', 'Contact'),
Mapping('Contacts', 'Contacts'),
Mapping('Entity', 'Entity'),
@@ -62,6 +63,7 @@
Mapping('Light', 'Light'),
Mapping('ParamVec', 'Param'),
Mapping('ParamVec', 'Param_V'),
+ Mapping('SensorNoise', 'SensorNoise'),
Mapping('StringVec', 'StringMsg_V'),
Mapping('TrackVisual', 'TrackVisual'),
Mapping('VideoRecord', 'VideoRecord'),
diff --git a/ros_gz_bridge/src/convert/ros_gz_interfaces.cpp b/ros_gz_bridge/src/convert/ros_gz_interfaces.cpp
index 6081f68b1..844c9c376 100644
--- a/ros_gz_bridge/src/convert/ros_gz_interfaces.cpp
+++ b/ros_gz_bridge/src/convert/ros_gz_interfaces.cpp
@@ -47,6 +47,30 @@ convert_gz_to_ros(
convert_gz_to_ros(gz_msg.body_2_wrench(), ros_msg.body_2_wrench);
}
+template<>
+void
+convert_ros_to_gz(
+ const ros_gz_interfaces::msg::Altimeter & ros_msg,
+ ignition::msgs::Altimeter & gz_msg)
+{
+ convert_ros_to_gz(ros_msg.header, (*gz_msg.mutable_header()));
+ gz_msg.set_vertical_position(ros_msg.vertical_position);
+ gz_msg.set_vertical_velocity(ros_msg.vertical_velocity);
+ gz_msg.set_vertical_reference(ros_msg.vertical_reference);
+}
+
+template<>
+void
+convert_gz_to_ros(
+ const ignition::msgs::Altimeter & gz_msg,
+ ros_gz_interfaces::msg::Altimeter & ros_msg)
+{
+ convert_gz_to_ros(gz_msg.header(), ros_msg.header);
+ ros_msg.vertical_position = gz_msg.vertical_position();
+ ros_msg.vertical_velocity = gz_msg.vertical_velocity();
+ ros_msg.vertical_reference = gz_msg.vertical_reference();
+}
+
template<>
void
convert_ros_to_gz(
@@ -356,6 +380,55 @@ convert_gz_to_ros(
ros_msg.intensity = gz_msg.intensity();
}
+template<>
+void
+convert_ros_to_gz(
+ const ros_gz_interfaces::msg::SensorNoise & ros_msg,
+ ignition::msgs::SensorNoise & gz_msg)
+{
+ convert_ros_to_gz(ros_msg.header, *gz_msg.mutable_header());
+ if (ros_msg.type == 0) {
+ gz_msg.set_type(ignition::msgs::SensorNoise_Type::SensorNoise_Type_NONE);
+ } else if (ros_msg.type == 2) {
+ gz_msg.set_type(ignition::msgs::SensorNoise_Type::SensorNoise_Type_GAUSSIAN);
+ } else if (ros_msg.type == 3) {
+ gz_msg.set_type(ignition::msgs::SensorNoise_Type::SensorNoise_Type_GAUSSIAN_QUANTIZED);
+ }
+
+ gz_msg.set_mean(ros_msg.mean);
+ gz_msg.set_stddev(ros_msg.stddev);
+ gz_msg.set_bias_mean(ros_msg.bias_mean);
+ gz_msg.set_bias_stddev(ros_msg.bias_stddev);
+ gz_msg.set_precision(ros_msg.precision);
+ gz_msg.set_dynamic_bias_stddev(ros_msg.dynamic_bias_stddev);
+}
+
+template<>
+void
+convert_gz_to_ros(
+ const ignition::msgs::SensorNoise & gz_msg,
+ ros_gz_interfaces::msg::SensorNoise & ros_msg)
+{
+ convert_gz_to_ros(gz_msg.header(), ros_msg.header);
+
+ if (gz_msg.type() == ignition::msgs::SensorNoise_Type::SensorNoise_Type_NONE) {
+ ros_msg.type = 0;
+ } else if (gz_msg.type() == ignition::msgs::SensorNoise_Type::SensorNoise_Type_GAUSSIAN) {
+ ros_msg.type = 2;
+ } else if (gz_msg.type() == // NOLINT
+ ignition::msgs::SensorNoise_Type::SensorNoise_Type_GAUSSIAN_QUANTIZED) // NOLINT
+ { // NOLINT
+ ros_msg.type = 3;
+ }
+
+ ros_msg.mean = gz_msg.mean();
+ ros_msg.stddev = gz_msg.stddev();
+ ros_msg.bias_mean = gz_msg.bias_mean();
+ ros_msg.bias_stddev = gz_msg.bias_stddev();
+ ros_msg.precision = gz_msg.precision();
+ ros_msg.dynamic_bias_stddev = gz_msg.dynamic_bias_stddev();
+}
+
template<>
void
convert_ros_to_gz(
diff --git a/ros_gz_bridge/src/parameter_bridge.cpp b/ros_gz_bridge/src/parameter_bridge.cpp
index 49f27e6e1..12aac8ab6 100644
--- a/ros_gz_bridge/src/parameter_bridge.cpp
+++ b/ros_gz_bridge/src/parameter_bridge.cpp
@@ -172,8 +172,5 @@ int main(int argc, char * argv[])
// ROS 2 spinner
rclcpp::spin(bridge_node);
- // Wait for gz node shutdown
- ignition::transport::waitForShutdown();
-
return 0;
}
diff --git a/ros_gz_bridge/src/static_bridge.cpp b/ros_gz_bridge/src/static_bridge.cpp
index bc2ab5d44..bf5cd38d6 100644
--- a/ros_gz_bridge/src/static_bridge.cpp
+++ b/ros_gz_bridge/src/static_bridge.cpp
@@ -44,8 +44,5 @@ int main(int argc, char * argv[])
rclcpp::spin(bridge_node);
- // Wait for gz node shutdown
- ignition::transport::waitForShutdown();
-
return 0;
}
diff --git a/ros_gz_bridge/test/utils/gz_test_msg.cpp b/ros_gz_bridge/test/utils/gz_test_msg.cpp
index 9ac737cf7..11330bc64 100644
--- a/ros_gz_bridge/test/utils/gz_test_msg.cpp
+++ b/ros_gz_bridge/test/utils/gz_test_msg.cpp
@@ -247,6 +247,54 @@ void compareTestMsg(const std::shared_ptr & _msg)
EXPECT_EQ(expected_msg.z(), _msg->z());
}
+void createTestMsg(ignition::msgs::Altimeter & _msg)
+{
+ createTestMsg(*_msg.mutable_header());
+ _msg.set_vertical_position(100);
+ _msg.set_vertical_velocity(200);
+ _msg.set_vertical_reference(300);
+}
+
+void compareTestMsg(const std::shared_ptr & _msg)
+{
+ ignition::msgs::Altimeter expected_msg;
+ createTestMsg(expected_msg);
+
+ EXPECT_EQ(expected_msg.vertical_position(), _msg->vertical_position());
+ EXPECT_EQ(expected_msg.vertical_velocity(), _msg->vertical_velocity());
+ EXPECT_EQ(expected_msg.vertical_reference(), _msg->vertical_reference());
+ compareTestMsg(std::make_shared(_msg->header()));
+}
+
+void createTestMsg(ignition::msgs::SensorNoise & _msg)
+{
+ createTestMsg(*_msg.mutable_header());
+ _msg.set_type(ignition::msgs::SensorNoise_Type::SensorNoise_Type_GAUSSIAN_QUANTIZED);
+ _msg.set_mean(100);
+ _msg.set_stddev(200);
+ _msg.set_bias_mean(300);
+ _msg.set_bias_stddev(400);
+ _msg.set_precision(500);
+ _msg.set_dynamic_bias_stddev(600);
+}
+
+void compareTestMsg(const std::shared_ptr & _msg)
+{
+ ignition::msgs::SensorNoise expected_msg;
+ createTestMsg(expected_msg);
+
+ EXPECT_EQ(
+ expected_msg.type(),
+ ignition::msgs::SensorNoise_Type::SensorNoise_Type_GAUSSIAN_QUANTIZED);
+ EXPECT_EQ(expected_msg.mean(), _msg->mean());
+ EXPECT_EQ(expected_msg.stddev(), _msg->stddev());
+ EXPECT_EQ(expected_msg.bias_mean(), _msg->bias_mean());
+ EXPECT_EQ(expected_msg.bias_stddev(), _msg->bias_stddev());
+ EXPECT_EQ(expected_msg.precision(), _msg->precision());
+ EXPECT_EQ(expected_msg.dynamic_bias_stddev(), _msg->dynamic_bias_stddev());
+ compareTestMsg(std::make_shared(_msg->header()));
+}
+
void createTestMsg(ignition::msgs::Param & _msg)
{
createTestMsg(*_msg.mutable_header());
diff --git a/ros_gz_bridge/test/utils/gz_test_msg.hpp b/ros_gz_bridge/test/utils/gz_test_msg.hpp
index 6ae8b41f8..582954e87 100644
--- a/ros_gz_bridge/test/utils/gz_test_msg.hpp
+++ b/ros_gz_bridge/test/utils/gz_test_msg.hpp
@@ -16,6 +16,7 @@
#define UTILS__GZ_TEST_MSG_HPP_
#include
+#include
#include
#include
#include
@@ -53,6 +54,7 @@
#include
#include
#include
+#include
#include
#include
#include
@@ -166,6 +168,14 @@ void compareTestMsg(const std::shared_ptr & _msg);
/// \param[out] _msg The message populated.
void createTestMsg(ignition::msgs::StringMsg & _msg);
+/// \brief Create a message used for testing.
+/// \param[out] _msg The message populated.
+void createTestMsg(ignition::msgs::SensorNoise & _msg);
+
+/// \brief Compare a message with the populated for testing.
+/// \param[in] _msg The message to compare.
+void compareTestMsg(const std::shared_ptr & _msg);
+
/// \brief Compare a message with the populated for testing.
/// \param[in] _msg The message to compare.
void compareTestMsg(const std::shared_ptr & _msg);
@@ -258,6 +268,14 @@ void createTestMsg(ignition::msgs::JointWrench & _msg);
/// \param[in] _msg The message to compare.
void compareTestMsg(const std::shared_ptr & _msg);
+/// \brief Create a message used for testing.
+/// \param[out] _msg The message populated.
+void createTestMsg(ignition::msgs::Altimeter & _msg);
+
+/// \brief Compare a message with the populated for testing.
+/// \param[in] _msg The message to compare.
+void compareTestMsg(const std::shared_ptr & _msg);
+
/// \brief Create a message used for testing.
/// \param[out] _msg The message populated.
void createTestMsg(ignition::msgs::Joy & _msg);
diff --git a/ros_gz_bridge/test/utils/ros_test_msg.cpp b/ros_gz_bridge/test/utils/ros_test_msg.cpp
index 9f2d880a7..0c0c59c8c 100644
--- a/ros_gz_bridge/test/utils/ros_test_msg.cpp
+++ b/ros_gz_bridge/test/utils/ros_test_msg.cpp
@@ -601,6 +601,33 @@ void compareTestMsg(const std::shared_ptr & _m
EXPECT_EQ(expected_msg.params[0].value.string_value, _msg->params[0].value.string_value);
}
+void createTestMsg(ros_gz_interfaces::msg::SensorNoise & _msg)
+{
+ createTestMsg(_msg.header);
+
+ _msg.type = 3;
+ _msg.mean = 100;
+ _msg.stddev = 200;
+ _msg.bias_mean = 300;
+ _msg.bias_stddev = 400;
+ _msg.precision = 500;
+ _msg.dynamic_bias_stddev = 600;
+}
+
+void compareTestMsg(const std::shared_ptr & _msg)
+{
+ ros_gz_interfaces::msg::SensorNoise expected_msg;
+ createTestMsg(expected_msg);
+
+ compareTestMsg(_msg->header);
+ EXPECT_EQ(expected_msg.mean, _msg->mean);
+ EXPECT_EQ(expected_msg.stddev, _msg->stddev);
+ EXPECT_EQ(expected_msg.bias_mean, _msg->bias_mean);
+ EXPECT_EQ(expected_msg.bias_stddev, _msg->bias_stddev);
+ EXPECT_EQ(expected_msg.precision, _msg->precision);
+ EXPECT_EQ(expected_msg.dynamic_bias_stddev, _msg->dynamic_bias_stddev);
+}
+
void createTestMsg(ros_gz_interfaces::msg::StringVec & _msg)
{
createTestMsg(_msg.header);
@@ -700,6 +727,26 @@ void compareTestMsg(const std::shared_ptr &
compareTestMsg(std::make_shared(_msg->body_2_wrench));
}
+void createTestMsg(ros_gz_interfaces::msg::Altimeter & _msg)
+{
+ createTestMsg(_msg.header);
+ _msg.vertical_position = 100;
+ _msg.vertical_velocity = 200;
+ _msg.vertical_reference = 300;
+}
+
+void compareTestMsg(const std::shared_ptr & _msg)
+{
+ ros_gz_interfaces::msg::Altimeter expected_msg;
+ createTestMsg(expected_msg);
+
+ EXPECT_EQ(expected_msg.vertical_position, _msg->vertical_position);
+ EXPECT_EQ(expected_msg.vertical_velocity, _msg->vertical_velocity);
+ EXPECT_EQ(expected_msg.vertical_reference, _msg->vertical_reference);
+
+ compareTestMsg(_msg->header);
+}
+
void createTestMsg(ros_gz_interfaces::msg::Entity & _msg)
{
_msg.id = 1;
diff --git a/ros_gz_bridge/test/utils/ros_test_msg.hpp b/ros_gz_bridge/test/utils/ros_test_msg.hpp
index 5220d916b..f48a61ea0 100644
--- a/ros_gz_bridge/test/utils/ros_test_msg.hpp
+++ b/ros_gz_bridge/test/utils/ros_test_msg.hpp
@@ -44,6 +44,7 @@
#include
#include
#include
+#include
#include
#include
#include
@@ -55,6 +56,7 @@
#endif // HAVE_DATAFRAME
#include
#include
+#include
#include
#include
#include
@@ -348,6 +350,14 @@ void createTestMsg(ros_gz_interfaces::msg::JointWrench & _msg);
/// \param[in] _msg The message to compare.
void compareTestMsg(const std::shared_ptr & _msg);
+/// \brief Create a message used for testing.
+/// \param[out] _msg The message populated.
+void createTestMsg(ros_gz_interfaces::msg::Altimeter & _msg);
+
+/// \brief Compare a message with the populated for testing.
+/// \param[in] _msg The message to compare.
+void compareTestMsg(const std::shared_ptr & _msg);
+
/// \brief Create a message used for testing.
/// \param[out] _msg The message populated.
void createTestMsg(ros_gz_interfaces::msg::Light & _msg);
@@ -406,6 +416,14 @@ void createTestMsg(ros_gz_interfaces::msg::ParamVec & _msg);
/// \param[in] _msg The message to compare.
void compareTestMsg(const std::shared_ptr & _msg);
+/// \brief Create a message used for testing.
+/// \param[out] _msg The message populated.
+void createTestMsg(ros_gz_interfaces::msg::SensorNoise & _msg);
+
+/// \brief Compare a message with the populated for testing.
+/// \param[in] _msg The message to compare.
+void compareTestMsg(const std::shared_ptr & _msg);
+
/// \brief Create a message used for testing.
/// \param[out] _msg The message populated.
void createTestMsg(ros_gz_interfaces::msg::StringVec & _msg);
diff --git a/ros_gz_image/CHANGELOG.rst b/ros_gz_image/CHANGELOG.rst
index a647f0cfa..1d3a4bcff 100644
--- a/ros_gz_image/CHANGELOG.rst
+++ b/ros_gz_image/CHANGELOG.rst
@@ -2,6 +2,12 @@
Changelog for package ros1_ign_image
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+0.247.0 (2023-11-02)
+--------------------
+* Fix double wait in ros_gz_bridge (`#347 `_) (`#449 `_)
+ Co-authored-by: ymd-stella <7959916+ymd-stella@users.noreply.github.com>
+* Contributors: Alejandro Hernández Cordero
+
0.245.0 (2023-05-23)
--------------------
diff --git a/ros_gz_image/package.xml b/ros_gz_image/package.xml
index f6d48c51a..27051fb46 100644
--- a/ros_gz_image/package.xml
+++ b/ros_gz_image/package.xml
@@ -1,6 +1,6 @@
ros_gz_image
- 0.245.0
+ 0.247.0
Image utilities for Gazebo simulation with ROS.
Apache 2.0
Louise Poubel
diff --git a/ros_gz_image/src/image_bridge.cpp b/ros_gz_image/src/image_bridge.cpp
index 6839e295b..c7edf9dcb 100644
--- a/ros_gz_image/src/image_bridge.cpp
+++ b/ros_gz_image/src/image_bridge.cpp
@@ -97,7 +97,5 @@ int main(int argc, char * argv[])
// Spin ROS and Gz until shutdown
rclcpp::spin(node_);
- ignition::transport::waitForShutdown();
-
return 0;
}
diff --git a/ros_gz_interfaces/CHANGELOG.rst b/ros_gz_interfaces/CHANGELOG.rst
index 8a7dcfb89..f734c4a2c 100644
--- a/ros_gz_interfaces/CHANGELOG.rst
+++ b/ros_gz_interfaces/CHANGELOG.rst
@@ -2,6 +2,15 @@
Changelog for package ros_gz_interfaces
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+0.247.0 (2023-11-02)
+--------------------
+* [backport iron] SensorNoise msg bridging (`#417 `_) (`#425 `_)
+ Co-authored-by: Aditya Pande
+* Merge branch 'iron' into ahcorde/iron/backport/411
+* [backport Iron] Added Altimeter msg bridging (`#413 `_) (`#414 `_)
+ Co-authored-by: Aditya Pande
+* Contributors: Alejandro Hernández Cordero
+
0.245.0 (2023-05-23)
--------------------
diff --git a/ros_gz_interfaces/CMakeLists.txt b/ros_gz_interfaces/CMakeLists.txt
index 255736cf4..49c49126f 100644
--- a/ros_gz_interfaces/CMakeLists.txt
+++ b/ros_gz_interfaces/CMakeLists.txt
@@ -17,6 +17,7 @@ find_package(geometry_msgs REQUIRED)
find_package(rosidl_default_generators REQUIRED)
set(msg_files
+ "msg/Altimeter.msg"
"msg/Contact.msg"
"msg/Contacts.msg"
"msg/Dataframe.msg"
@@ -27,6 +28,7 @@ set(msg_files
"msg/JointWrench.msg"
"msg/Light.msg"
"msg/ParamVec.msg"
+ "msg/SensorNoise.msg"
"msg/StringVec.msg"
"msg/TrackVisual.msg"
"msg/VideoRecord.msg"
diff --git a/ros_gz_interfaces/msg/Altimeter.msg b/ros_gz_interfaces/msg/Altimeter.msg
new file mode 100644
index 000000000..5f820c2b8
--- /dev/null
+++ b/ros_gz_interfaces/msg/Altimeter.msg
@@ -0,0 +1,13 @@
+# A message for Altimeter readings.
+
+# Optional header data.
+std_msgs/Header header
+
+# Vertical position data, in meters.
+float64 vertical_position
+
+# Vertical velocity data, in meters/second.
+float64 vertical_velocity
+
+# Vertical reference.
+float64 vertical_reference
diff --git a/ros_gz_interfaces/msg/SensorNoise.msg b/ros_gz_interfaces/msg/SensorNoise.msg
new file mode 100644
index 000000000..0b1e5cec4
--- /dev/null
+++ b/ros_gz_interfaces/msg/SensorNoise.msg
@@ -0,0 +1,43 @@
+# A message for specifying sensor noise.
+
+# Noise type
+uint8 NONE = 0
+uint8 GAUSSIAN = 2
+uint8 GAUSSIAN_QUANTIZED = 3
+
+# Optional header data.
+std_msgs/Header header
+
+# The type of noise
+uint8 type
+
+# Noise mean
+# Used by GAUSSIAN and GAUSSIAN_QUANTIZED
+float64 mean
+
+# Noise standard deviation
+# Used by GAUSSIAN and GAUSSIAN_QUANTIZED
+float64 stddev
+
+# Noise mean bias
+# Used by GAUSSIAN and GAUSSIAN_QUANTIZED
+float64 bias_mean
+
+# Noise standard deviation bias
+float64 bias_stddev
+
+# Noise precision
+# Used by GAUSSIAN_QUANTIZED
+float64 precision
+
+# For type "gaussian*", the standard deviation of the noise used to
+# drive a process to model slow variations in a sensor bias.
+float64 dynamic_bias_stddev
+
+# For type "gaussian*", the correlation time in seconds of the
+# noise used to drive a process to model slow variations in a sensor bias.
+# A typical value, when used, would be on the order of
+# 3600 seconds (1 hour).
+float64 dynamic_bias_correlation_time
+
+
diff --git a/ros_gz_interfaces/package.xml b/ros_gz_interfaces/package.xml
index 7231709db..81a8e2950 100644
--- a/ros_gz_interfaces/package.xml
+++ b/ros_gz_interfaces/package.xml
@@ -1,6 +1,6 @@
ros_gz_interfaces
- 0.245.0
+ 0.247.0
Message and service data structures for interacting with Gazebo from ROS2.
Apache 2.0
Louise Poubel
diff --git a/ros_gz_sim/CHANGELOG.rst b/ros_gz_sim/CHANGELOG.rst
index 5c74d0346..617541be1 100644
--- a/ros_gz_sim/CHANGELOG.rst
+++ b/ros_gz_sim/CHANGELOG.rst
@@ -2,6 +2,12 @@
Changelog for package ros_gz_sim
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+0.247.0 (2023-11-02)
+--------------------
+* set on_exit_shutdown argument for gz-sim ExecuteProcess (`#355 `_) (`#452 `_)
+ Co-authored-by: andermi
+* Contributors: Michael Carroll
+
0.245.0 (2023-05-23)
--------------------
diff --git a/ros_gz_sim/launch/gz_sim.launch.py.in b/ros_gz_sim/launch/gz_sim.launch.py.in
index 659e238c2..7bed5243e 100644
--- a/ros_gz_sim/launch/gz_sim.launch.py.in
+++ b/ros_gz_sim/launch/gz_sim.launch.py.in
@@ -18,7 +18,7 @@ from os import environ
from launch import LaunchDescription
from launch.actions import DeclareLaunchArgument, OpaqueFunction
-from launch.actions import ExecuteProcess
+from launch.actions import ExecuteProcess, Shutdown
from launch.substitutions import LaunchConfiguration
def launch_gz(context, *args, **kwargs):
@@ -34,6 +34,7 @@ def launch_gz(context, *args, **kwargs):
ign_args = LaunchConfiguration('ign_args').perform(context)
ign_version = LaunchConfiguration('ign_version').perform(context)
debugger = LaunchConfiguration('debugger').perform(context)
+ on_exit_shutdown = LaunchConfiguration('on_exit_shutdown').perform(context)
if not len(gz_args) and len(ign_args):
print("ign_args is deprecated, migrate to gz_args!")
@@ -54,12 +55,18 @@ def launch_gz(context, *args, **kwargs):
else:
debug_prefix = None
+ if on_exit_shutdown:
+ on_exit = Shutdown()
+ else:
+ on_exit = None
+
return [ExecuteProcess(
cmd=[exec, exec_args, '--force-version', gz_version],
output='screen',
additional_env=env,
shell=True,
- prefix=debug_prefix
+ prefix=debug_prefix,
+ on_exit=on_exit
)]
@@ -84,5 +91,8 @@ def generate_launch_description():
DeclareLaunchArgument(
'debugger', default_value='false',
description='Run in Debugger'),
+ DeclareLaunchArgument(
+ 'on_exit_shutdown', default_value='false',
+ description='Shutdown on gz-sim exit'),
OpaqueFunction(function = launch_gz),
])
diff --git a/ros_gz_sim/package.xml b/ros_gz_sim/package.xml
index acda06c8e..d506d997e 100644
--- a/ros_gz_sim/package.xml
+++ b/ros_gz_sim/package.xml
@@ -2,7 +2,7 @@
ros_gz_sim
- 0.245.0
+ 0.247.0
Tools for using Gazebo Sim simulation with ROS.
Alejandro Hernandez
diff --git a/ros_gz_sim_demos/CHANGELOG.rst b/ros_gz_sim_demos/CHANGELOG.rst
index 61bc84ca5..a75390c3a 100644
--- a/ros_gz_sim_demos/CHANGELOG.rst
+++ b/ros_gz_sim_demos/CHANGELOG.rst
@@ -2,6 +2,14 @@
Changelog for package ros1_gz_sim_demos
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+0.247.0 (2023-11-02)
+--------------------
+* Merge branch 'iron' into ahcorde/iron/backport/411
+* Added more topic to the bridge (`#422 `_) (`#423 `_)
+* Fix incorrect subscription on demo (`#405 `_) (`#407 `_)
+ Co-authored-by: Arjo Chakravarty
+* Contributors: Alejandro Hernández Cordero
+
0.245.0 (2023-05-23)
--------------------
diff --git a/ros_gz_sim_demos/launch/rgbd_camera_bridge.launch.py b/ros_gz_sim_demos/launch/rgbd_camera_bridge.launch.py
index 9719c2c91..fbb8e4442 100644
--- a/ros_gz_sim_demos/launch/rgbd_camera_bridge.launch.py
+++ b/ros_gz_sim_demos/launch/rgbd_camera_bridge.launch.py
@@ -49,16 +49,22 @@ def generate_launch_description():
condition=IfCondition(LaunchConfiguration('rviz'))
)
+ remappings = [('/camera', '/camera/image'),
+ ('/camera_info', '/camera/camera_info')]
# Bridge
bridge = Node(
package='ros_gz_bridge',
executable='parameter_bridge',
arguments=[
+ '/camera@sensor_msgs/msg/Image@gz.msgs.Image',
+ '/camera_info@sensor_msgs/msg/CameraInfo@gz.msgs.CameraInfo',
'/rgbd_camera/image@sensor_msgs/msg/Image@gz.msgs.Image',
+ '/rgbd_camera/camera_info@sensor_msgs/msg/CameraInfo@gz.msgs.CameraInfo',
'/rgbd_camera/depth_image@sensor_msgs/msg/Image@gz.msgs.Image',
'/rgbd_camera/points@sensor_msgs/msg/PointCloud2@gz.msgs.PointCloudPacked'
],
- output='screen'
+ output='screen',
+ remappings=remappings,
)
return LaunchDescription([
diff --git a/ros_gz_sim_demos/package.xml b/ros_gz_sim_demos/package.xml
index 6fb90793e..5b0062e5d 100644
--- a/ros_gz_sim_demos/package.xml
+++ b/ros_gz_sim_demos/package.xml
@@ -1,6 +1,6 @@
ros_gz_sim_demos
- 0.245.0
+ 0.247.0
Demos using Gazebo Sim simulation with ROS.
Apache 2.0
Louise Poubel
diff --git a/ros_gz_sim_demos/rviz/gpu_lidar_bridge.rviz b/ros_gz_sim_demos/rviz/gpu_lidar_bridge.rviz
index 42968c2bb..318229b33 100644
--- a/ros_gz_sim_demos/rviz/gpu_lidar_bridge.rviz
+++ b/ros_gz_sim_demos/rviz/gpu_lidar_bridge.rviz
@@ -98,7 +98,7 @@ Visualization Manager:
Size (Pixels): 3
Size (m): 0.009999999776482582
Style: Flat Squares
- Topic: /lidar
+ Topic: /lidar/points
Unreliable: false
Use Fixed Frame: true
Use rainbow: true
diff --git a/ros_ign/CHANGELOG.rst b/ros_ign/CHANGELOG.rst
index d435630d9..5ee3a4509 100644
--- a/ros_ign/CHANGELOG.rst
+++ b/ros_ign/CHANGELOG.rst
@@ -2,6 +2,9 @@
Changelog for package ros_ign
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+0.247.0 (2023-11-02)
+--------------------
+
0.245.0 (2023-05-23)
--------------------
diff --git a/ros_ign/package.xml b/ros_ign/package.xml
index 550b89919..eef8b3f12 100644
--- a/ros_ign/package.xml
+++ b/ros_ign/package.xml
@@ -2,7 +2,7 @@
ros_ign
- 0.245.0
+ 0.247.0
Shim meta-package to redirect to ros_gz.
Brandon Ong
Apache 2.0
diff --git a/ros_ign_bridge/CHANGELOG.rst b/ros_ign_bridge/CHANGELOG.rst
index 87e1e6324..1eaa0033d 100644
--- a/ros_ign_bridge/CHANGELOG.rst
+++ b/ros_ign_bridge/CHANGELOG.rst
@@ -2,6 +2,9 @@
Changelog for package ros_ign_bridge
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+0.247.0 (2023-11-02)
+--------------------
+
0.245.0 (2023-05-23)
--------------------
diff --git a/ros_ign_bridge/package.xml b/ros_ign_bridge/package.xml
index 83b2ba75c..e16b23ca2 100644
--- a/ros_ign_bridge/package.xml
+++ b/ros_ign_bridge/package.xml
@@ -2,7 +2,7 @@
ros_ign_bridge
- 0.245.0
+ 0.247.0
Shim package to redirect to ros_gz_bridge.
Brandon Ong
diff --git a/ros_ign_gazebo/CHANGELOG.rst b/ros_ign_gazebo/CHANGELOG.rst
index 23e70f078..a687fe796 100644
--- a/ros_ign_gazebo/CHANGELOG.rst
+++ b/ros_ign_gazebo/CHANGELOG.rst
@@ -2,6 +2,9 @@
Changelog for package ros_ign_gazebo
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+0.247.0 (2023-11-02)
+--------------------
+
0.245.0 (2023-05-23)
--------------------
diff --git a/ros_ign_gazebo/package.xml b/ros_ign_gazebo/package.xml
index 82f8425a4..91011f29a 100644
--- a/ros_ign_gazebo/package.xml
+++ b/ros_ign_gazebo/package.xml
@@ -2,7 +2,7 @@
ros_ign_gazebo
- 0.245.0
+ 0.247.0
Shim package to redirect to ros_gz_sim.
Brandon Ong
diff --git a/ros_ign_gazebo_demos/CHANGELOG.rst b/ros_ign_gazebo_demos/CHANGELOG.rst
index 940860baf..4c6c2fb86 100644
--- a/ros_ign_gazebo_demos/CHANGELOG.rst
+++ b/ros_ign_gazebo_demos/CHANGELOG.rst
@@ -2,6 +2,9 @@
Changelog for package ros_ign_gazebo_demos
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+0.247.0 (2023-11-02)
+--------------------
+
0.245.0 (2023-05-23)
--------------------
diff --git a/ros_ign_gazebo_demos/package.xml b/ros_ign_gazebo_demos/package.xml
index cbe829acb..a69e425fe 100644
--- a/ros_ign_gazebo_demos/package.xml
+++ b/ros_ign_gazebo_demos/package.xml
@@ -1,6 +1,6 @@
ros_ign_gazebo_demos
- 0.245.0
+ 0.247.0
Shim package to redirect to ros_gz_sim_demos.
Apache 2.0
Brandon Ong
diff --git a/ros_ign_image/CHANGELOG.rst b/ros_ign_image/CHANGELOG.rst
index 7f6c6fe8f..eb889956b 100644
--- a/ros_ign_image/CHANGELOG.rst
+++ b/ros_ign_image/CHANGELOG.rst
@@ -2,6 +2,9 @@
Changelog for package ros_ign_image
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+0.247.0 (2023-11-02)
+--------------------
+
0.245.0 (2023-05-23)
--------------------
diff --git a/ros_ign_image/package.xml b/ros_ign_image/package.xml
index 4b772d4c2..f94db040a 100644
--- a/ros_ign_image/package.xml
+++ b/ros_ign_image/package.xml
@@ -2,7 +2,7 @@
ros_ign_image
- 0.245.0
+ 0.247.0
Shim package to redirect to ros_gz_image.
Brandon Ong
diff --git a/ros_ign_interfaces/CHANGELOG.rst b/ros_ign_interfaces/CHANGELOG.rst
index 4de73f5c5..5544f349a 100644
--- a/ros_ign_interfaces/CHANGELOG.rst
+++ b/ros_ign_interfaces/CHANGELOG.rst
@@ -2,6 +2,9 @@
Changelog for package ros_ign_interfaces
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+0.247.0 (2023-11-02)
+--------------------
+
0.245.0 (2023-05-23)
--------------------
diff --git a/ros_ign_interfaces/package.xml b/ros_ign_interfaces/package.xml
index 1f939eda7..e8a7b1a93 100644
--- a/ros_ign_interfaces/package.xml
+++ b/ros_ign_interfaces/package.xml
@@ -1,6 +1,6 @@
ros_ign_interfaces
- 0.245.0
+ 0.247.0
Shim package to redirect to ros_gz_interfaces.
Apache 2.0
Brandon Ong