Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ionic Release Notes and Highlights #4

Merged
merged 36 commits into from
Sep 26, 2024
Merged
Show file tree
Hide file tree
Changes from 9 commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
77ccb17
Add raw list of merged PRs
azeey Sep 18, 2024
d7a481a
Add notes for gz-utils
azeey Sep 18, 2024
52e71d3
Add bullet-featherstone and mesh optimization features in highlights …
iche033 Sep 20, 2024
932268b
Add documentation website improvements
azeey Sep 23, 2024
b1d8755
Add highlight for specifying plugins in SDF without overriding default
azeey Sep 23, 2024
d254784
Add ros_gz improvements
azeey Sep 23, 2024
3be89cf
gz-transport improvements
caguero Sep 23, 2024
3ae181a
gz-transport improvements
caguero Sep 23, 2024
e015d72
Conflict
caguero Sep 23, 2024
f565fb9
Add cone, track cam, topic freq, dynamic material color.
bperseghetti Sep 23, 2024
7793da6
Add the gz-cmake release notes (#7)
j-rivero Sep 23, 2024
5a14089
Include a note about setup-gazebo github action (#6)
j-rivero Sep 23, 2024
83baca3
Small formatting changes
azeey Sep 23, 2024
a665834
Highlights: FT sensor determinist, system execution order (#8)
scpeters Sep 23, 2024
b7e451b
Add some note about hydrodynamics deprecations and few other importan…
arjo129 Sep 25, 2024
5208be5
Address reviewer feedback about gz:policies
azeey Sep 26, 2024
527c9f4
Add highlight about package.xml
azeey Sep 26, 2024
c4991a2
Add docs
azeey Sep 26, 2024
6fd8b44
Update gz-common
azeey Sep 26, 2024
ddc85fd
Add gz-fuel-tools
azeey Sep 26, 2024
113bc62
Update gz-gui
azeey Sep 26, 2024
c262dd8
Add gz-launch
azeey Sep 26, 2024
132f246
Add gz-math
azeey Sep 26, 2024
fe93ded
Add gz-msgs
azeey Sep 26, 2024
9765134
Update gz-physics
azeey Sep 26, 2024
d80563e
Add gz-plugin
azeey Sep 26, 2024
e1ef919
Add gz-rendering
azeey Sep 26, 2024
2a07553
Add gz-sensors
azeey Sep 26, 2024
61168e0
Update gz-sim
azeey Sep 26, 2024
6d1d576
Add gz-tools
azeey Sep 26, 2024
dfad336
Add gz-transport
azeey Sep 26, 2024
8d12832
Add gz-usd
azeey Sep 26, 2024
a974256
Add ros_gz
azeey Sep 26, 2024
bca57f5
Add ros_gz_project_template
azeey Sep 26, 2024
7fb31ba
Update sdformat
azeey Sep 26, 2024
3fc4ff3
Alphabetize
azeey Sep 26, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
169 changes: 169 additions & 0 deletions highlights.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,178 @@

## New Features

- [Add new console logging functionality based on `spdlog`](https://github.com/gazebosim/gz-common/pull/615).
Also see [gz-utils#134](https://github.com/gazebosim/gz-utils/pull/134)

- Console logging has been reimplemented using `spdlog`. While the existing
macros such as `gzerr`, `gzwarn`, and `gzmsg` continue to work as before,
you can now get access to the raw `spdlog` logger, which provides greater
control and flexibility. A new macro, `gztrace` is also provided, which can
be useful in debugging or data collection scenarios. With `spdlog`, you also
get the ability to use format strings. Here's a quick example:

```c++
auto logger = gz::common::Console::Root().RawLoggerPtr();
logger->trace("π to 5th decimal = {:.5f}\n", M_PI);
```

- Improvements to the bullet-featherstone physics plugin

- Many new features and bugfixes were made to the bullet-featherstone plugin
in gz-physics, which include support for nested models,
off-diagonal inertia, enforcing joint velocity and effort limits,
configuring solver iterations, and more. There are also features for
performance improvements and physics stability such as auto-deactivation,
static object collision optimization, and use of convex hull shapes for
convex decomposed meshes.

- [Support for mesh optimization](https://github.com/gazebosim/gz-sim/pull/2417),
[gzsim#2352](https://github.com/gazebosim/gz-sim/pull/2352),
[gz-common#585](https://github.com/gazebosim/gz-common/pull/585),
[sdformat#1382](https://github.com/gazebosim/gz-common/pull/585), and
[gz-physics#606](https://github.com/gazebosim/gz-physics/pull/606)

- Added support for mesh optimization on the collision mesh. Users can now
specify whether or not to perform mesh optimization on a
collision mesh in SDF (requires SDF spec version >= 1.11). Two optimization
methods are currently supported: `convex_decomposition` and `convex_hull`.
Gazebo uses the open source
[V-HACD](https://github.com/kmammou/v-hacd) library to perform
convex decomposition to split the mesh into multiple submeshes.
Example SDF usage:

```xml
<collision>
<mesh optimization="convex_decomposition">
<convex_decomposition>
<max_convex_hulls>16</max_convex_hulls>
<voxel_resolution>400000</voxel_resolution>
</convex_decomposition>
<uri>/path/to/mesh.dae</uri>
</mesh>
</collision>
```

- [Support specifying plugins in SDF files without overriding default
plugins](https://github.com/gazebosim/gz-sim/pull/2497) and [gz-gui#631](https://github.com/gazebosim/gz-gui/pull/631)

- In prior Gazebo versions, if a user specified a server plugin at the
world level, it would override all default plugins. This required
users to have in-depth knowledge and specify every plugin necessary
for a simulation to run correctly. Omitting critical plugins would
lead to unexpected simulation behavior, causing confusion,
particularly for new Gazebo users.

- Gazebo Ionic addresses this issue by loading default plugins even when
users specify additional plugins. Gazebo Ionic also introduces
`<gz:policy>` settings to revert this behavior to how it functioned in
azeey marked this conversation as resolved.
Show resolved Hide resolved
previous Gazebo versions, if desired. For example, the
`contact_sensor.sdf` example can now include just the additional Contact
system:

```xml
<world name="contact_sensor">
<plugin filename="gz-sim-contact-system" name="gz::sim::systems::Contact"/>
...
</world>

```

whereas previously, the SDF file has all the default plugins:

```xml
<world name="contact_sensor">
<plugin
filename="gz-sim-physics-system"
name="gz::sim::systems::Physics">
</plugin>
<plugin
filename="gz-sim-contact-system"
name="gz::sim::systems::Contact">
</plugin>
<plugin
filename="gz-sim-user-commands-system"
name="gz::sim::systems::UserCommands">
</plugin>
<plugin
filename="gz-sim-scene-broadcaster-system"
name="gz::sim::systems::SceneBroadcaster">
</plugin>

...
</world>

```

- Gazebo Transport improvements.
See [gz-transport#477](https://github.com/gazebosim/gz-transport/pull/477), [gz-transport#486](https://github.com/gazebosim/gz-transport/pull/486), [gz-transport#487](https://github.com/gazebosim/gz-transport/pull/487) and [gz-transport#506](https://github.com/gazebosim/gz-transport/pull/506/).

- An extra option has been added to the `SubscriberOptions` class allowing the ability to ignore messages when publisher
and subscriber share the same node. This feature was particularly interesting to avoid loops in the `ros_gz` bridge.
See more context [here](https://github.com/gazebosim/ros_gz/issues/555).

- Most of the gz-transport functionality can be exercised via command line with the `gz topic` or `gz service` subcommands.
We've reduced the amount of typing needed to request certain services from CLI. Here's a summary:
- Gazebo Ionic allows to request one-way service requests directly from the command line. In prior Gazebo versions, users
had to specify `--reptype gz.msgs.Empty ` to simulate one-way service requests.
- The synchronous service requests have now a default timeout, reducing the amount of typing from the CLI.
- Gazebo Ionic allows to request no-input service requests directly from the command line. In prior Gazebo versions, users
had to specify `--reqtype gz.msgs.Empty ` to simulate no-input service requests.


- Gazebo/ROS Vendor Packages

Gazebo libraries and simulator are now available directly from
packages.ros.org via vendor packages. The packages are built in the ROS
buildfarm and as part of their build process, fetch the sources of the
underlying Gazebo library and build it. In addition, the vendor packages
provide CMake shims that make it possible to use CMake targets without
version numbers. See the documentation for full details.

- Improved ros_gz Launch Files

ROS launch files used to start Gazebo, spawn models in simulation, and
start the ros_gz bridge are now much simpler and more idiomatic. New XML
and YAML elements are available to simplify the creation of launch files.
As an example, here's how you can start gzserver and the bridge from an
XML file:

```xml
<launch>
<gz_server world_sdf_file="$(find-pkg-share my_package)/worlds/my_world.sdf" />
<ros_gz_bridge config_file="$(find-pkg-share my_package)/config/bridge_config.yaml" />
</launch>
```

- Improved ros_gz_bridge performance

A new parameter use_composition is also available all the new launch
files to leverage the ability to launch composable nodes. This feature
allows us to run Gazebo, the ros_gz_bridge, and other potential ROS
composable nodes within the same process. This improves performance by
avoiding message serialization and network transport between Gazebo and
ROS.


## Bug Fixes

## Breaking Changes

## Documentation

- [Improved Gazebo Documentation Website](https://github.com/gazebosim/docs/pull/441)
- The main documentation [website](https://gazebosim.org/docs) has been
migrated to a statically generated site built with
[Sphinx](https://sphinx-doc.org/). This adds a number of features and solves
a number of problems with the previous website, namely:
- Documentation authors can easily preview their changes by downloading the
generated website instead of having to set up a local development
environment
- The website is updated automatically instead of being manually triggered
after each PR.
- Search functionality is now available
- Improved layout and UX on mobile devices
- Dark and light modes
- Improved SEO as the content is now more easily accessible to search
engines.
- Use of Sphinx as a common documentation tool for both Gazebo and ROS.
Loading
Loading