# Why are ROS and Ignition/Gazebo diverging (or not converging)?

**URL:** <https://discourse.openrobotics.org/t/why-are-ros-and-ignition-gazebo-diverging-or-not-converging/9513>\
**Category:** ROS General\
**Tags:** gazebo\
**Created:** [June 12, 2019, 11:19pm UTC](https://discourse.openrobotics.org/t/why-are-ros-and-ignition-gazebo-diverging-or-not-converging/9513 "2019-06-12T23:19:15Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![peci1](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/peci1/32/10145_2.png) [@peci1](https://discourse.openrobotics.org/u/peci1)\
**Post date:** [June 12, 2019, 11:19pm UTC](https://discourse.openrobotics.org/t/why-are-ros-and-ignition-gazebo-diverging-or-not-converging/9513/1 "2019-06-12T23:19:15Z")

</div>

I’m preparing a presentation for novel ROS programmers, and during preparation of the presentation, I just started asking myself why doesn’t ROS integrate with Ignition at all?

If I get it right, both ROS and Ignition are developed by Open Robotics (and community!), and Ignition is a set of tools for roboticists. So why is it completely omitted in ROS?

I can see a lot of parallel implementations of basically the same stuff (Transport, Math, CMake, Rendering, Plugin, Msgs, Gui). Because the developers of both are more or less “under one roof”, I just don’t get it…

It would be super-nice to have e.f. ign-math used by basic ROS tools and readily available for anyone working in ROS. I can’t count how many times I’ve seen people converting quaternions to RPY angles by snippets of math they don’t understand… With Ignition, it’d be so much simpler…

---

<div class="post-metadata">

**Author:** ![gavanderhoorn](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/gavanderhoorn/32/969_2.png) [@gavanderhoorn](https://discourse.openrobotics.org/u/gavanderhoorn)\
**Post date:** [June 13, 2019, 7:46am UTC](https://discourse.openrobotics.org/t/why-are-ros-and-ignition-gazebo-diverging-or-not-converging/9513/2 "2019-06-13T07:46:21Z")

</div>

A related question on ROS Answers: [Why do we use Rviz when we have Gazebo ?](https://answers.ros.org/question/316396) (specifically about Gazebo vs RViz, but fits the issue raised here).

> [@peci1](#):
>
> It would be super-nice to have e.f. ign-math used by basic ROS tools and readily available for anyone working in ROS. I can’t count how many times I’ve seen people converting quaternions to RPY angles by snippets of math they don’t understand… With Ignition, it’d be so much simpler…

There is quite a bit of support for lin alg and the kind of conversions you mention in TF2, so I’m not sure Ignition math would be needed here, but that doesn’t change the validity of your question.

---

<div class="post-metadata">

**Author:** ![gbiggs](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/gbiggs/32/30361_2.png) [@gbiggs](https://discourse.openrobotics.org/u/gbiggs)\
**Post date:** [June 13, 2019, 8:31am UTC](https://discourse.openrobotics.org/t/why-are-ros-and-ignition-gazebo-diverging-or-not-converging/9513/3 "2019-06-13T08:31:47Z")

</div>

Being in need of a math-and-only-math library that I can potentially certify, I’ve had my eye on ignition-math for a little while now. It would be great to see it become the standard math-and-only-math library for ROS as well as Gazebo, and then for tf to use it.

---

<div class="post-metadata">

**Author:** ![gavanderhoorn](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/gavanderhoorn/32/969_2.png) [@gavanderhoorn](https://discourse.openrobotics.org/u/gavanderhoorn)\
**Post date:** [June 13, 2019, 8:58am UTC](https://discourse.openrobotics.org/t/why-are-ros-and-ignition-gazebo-diverging-or-not-converging/9513/4 "2019-06-13T08:58:15Z")

</div>

Off-topic, but: `tf2` (and `tf` before it) does not mandate using any math library per se. AFAIU the idea is to provide packages that support to-from conversion for specific libraries (potentially using type masquerading).

Compare `tf2_eigen`, `tf2_bullet`, etc.

Perhaps a `tf2_ignition_math` could be created, if that would be desirable, but I don’t necessarily see a need to standardise on ignition.

Even more off-topic: ignition math appears to contain concepts and functionality that many other libraries already support (Eigen, Bullet, RBDL, DART, KDL, MRPT and others). I fully understand the convenience of using your own library (in terms of control and development), but ignition math seems like “just-another-math-library”.

---

<div class="post-metadata">

**Author:** ![peci1](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/peci1/32/10145_2.png) [@peci1](https://discourse.openrobotics.org/u/peci1)\
**Post date:** [June 13, 2019, 9:07am UTC](https://discourse.openrobotics.org/t/why-are-ros-and-ignition-gazebo-diverging-or-not-converging/9513/5 "2019-06-13T09:07:33Z")

</div>

That’s already been asked: [Ignition Math to TF? - ROS General - Open Robotics Discourse](http://discourse.ros.org/t/ignition-math-to-tf/2754) .

---

<div class="post-metadata">

**Author:** ![gbiggs](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/gbiggs/32/30361_2.png) [@gbiggs](https://discourse.openrobotics.org/u/gbiggs)\
**Post date:** [June 13, 2019, 9:44am UTC](https://discourse.openrobotics.org/t/why-are-ros-and-ignition-gazebo-diverging-or-not-converging/9513/6 "2019-06-13T09:44:04Z")

</div>

> [@gavanderhoorn](#):
>
> `tf2` (and `tf` before it) does not mandate using any math library per se. AFAIU the idea is to provide packages that support to-from conversion for specific libraries (potentially using type masquerading).

I did not know that.

> [@gavanderhoorn](#):
>
> Even more off-topic: ignition math appears to contain concepts and functionality that many other libraries already support (Eigen, Bullet, RBDL, DART, KDL, MRPT and others). I fully understand the convenience of using your own library (in terms of control and development), but ignition math seems like “just-another-math-library”.

From the point of view of certification, such a thing can be beneficial if it has _just_ the stuff you need. I haven’t looked at if IM is that, though, and libraries like Eigen have the benefit of being extremely well used to balance out having more than you might need.

> [@peci1](#):
>
> That’s already been asked

And I even replied!

Alas my head is too full of now to hold memories of 2017. 😉 Thanks for the pointer!

---

<div class="post-metadata">

**Author:** ![gavanderhoorn](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/gavanderhoorn/32/969_2.png) [@gavanderhoorn](https://discourse.openrobotics.org/u/gavanderhoorn)\
**Post date:** [June 17, 2019, 9:47am UTC](https://discourse.openrobotics.org/t/why-are-ros-and-ignition-gazebo-diverging-or-not-converging/9513/7 "2019-06-17T09:47:47Z")

</div>

@peci1: apologies for side-tracking this thread.

I’d also be interested in knowing why there is this divide while there appear to be some opportunities for re-use and sharing.

---

<div class="post-metadata">

**Author:** ![Nate\_Koenig](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/nate_koenig/32/4940_2.png) [@Nate\_Koenig](https://discourse.openrobotics.org/u/Nate_Koenig)\
**Post date:** [June 18, 2019, 7:03pm UTC](https://discourse.openrobotics.org/t/why-are-ros-and-ignition-gazebo-diverging-or-not-converging/9513/8 "2019-06-18T19:03:39Z")

</div>

There are a few reasons to the perception that ROS is not converging with Ignition. The reasons on the top of my head are:

1. ROS and Ignition have different needs. For example, most of the time simulation is run self-contained on a single PC, and the features contained in DDS are not needed in this type of setup. Instead, we opted for the performance and open-source nature of ZeroMQ and Protobuf. This particular example may not be the best because Ignition Transport was need back in 2014, before ROS2 & DDS was a viable option.

2. Many ROS packages are not available in the official distribution of an OS, which prevents Ignition from making use of these packages. This is not always the case, for example URDF is in Ubuntu.

3. Diversity can be a good thing. As an example, we have made use of both ROS and Ignition transport in the same application in order to control/limit communication capabilities. This comes up in simulation competitions. For better or worse, there are also people and organizations who do not want to use specific features of ROS or Ignition.

4. It’s hard to overcome history. ROS has a way to doing things, and Gazebo has a way of doing things. Gaining the momentum to overcome the past is non-trivial. There is probably some term from economics that succinctly captures this. The sunk cost fallacy is close, but not quite right.

That being said, there have been discussions about using some Ignition software within ROS. Rendering could be used by rviz, which would allow us to maintain one code base that supplies 3D rendering capabilities to Gazebo, Rviz, and others. So far, progress has mostly petered out due to lack of resources (time and people) and urgency.

---

<div class="post-metadata">

**Author:** ![gavanderhoorn](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/gavanderhoorn/32/969_2.png) [@gavanderhoorn](https://discourse.openrobotics.org/u/gavanderhoorn)\
**Post date:** [June 18, 2019, 7:52pm UTC](https://discourse.openrobotics.org/t/why-are-ros-and-ignition-gazebo-diverging-or-not-converging/9513/9 "2019-06-18T19:52:23Z")

</div>

> [@Nate\_Koenig](#):
>
> It’s hard to overcome history. ROS has a way to doing things, and Gazebo has a way of doing things. Gaining the momentum to overcome the past is non-trivial. There is probably some term from economics that succinctly captures this. The sunk cost fallacy is close, but not quite right.

Perhaps a mild form of NIH?

Happens everywhere.

---

<div class="post-metadata">

**Author:** ![emersonknapp](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/emersonknapp/32/2969_2.png) [@emersonknapp](https://discourse.openrobotics.org/u/emersonknapp)\
**Post date:** [June 18, 2019, 8:25pm UTC](https://discourse.openrobotics.org/t/why-are-ros-and-ignition-gazebo-diverging-or-not-converging/9513/10 "2019-06-18T20:25:24Z")

</div>

> [@gavanderhoorn](#):
>
> Perhaps a mild form of NIH?

I’d maybe just call it “momentum” - there’s a lot of code towards each of their more specific goals, and wrangling that into a common use case is a lot of work without immediate reward so there’s not investment in that direction.

---

<div class="post-metadata">

**Author:** ![peci1](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/peci1/32/10145_2.png) [@peci1](https://discourse.openrobotics.org/u/peci1)\
**Post date:** [June 18, 2019, 9:51pm UTC](https://discourse.openrobotics.org/t/why-are-ros-and-ignition-gazebo-diverging-or-not-converging/9513/11 "2019-06-18T21:51:00Z")

</div>

Thanks for your insights, Nate.

---

<div class="post-metadata">

**Author:** ![gbiggs](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/gbiggs/32/30361_2.png) [@gbiggs](https://discourse.openrobotics.org/u/gbiggs)\
**Post date:** [June 18, 2019, 11:43pm UTC](https://discourse.openrobotics.org/t/why-are-ros-and-ignition-gazebo-diverging-or-not-converging/9513/12 "2019-06-18T23:43:12Z")

</div>

> [@Nate\_Koenig](#):
>
> most of the time simulation is run self-contained on a single PC

I’m not going to claim this is even close to the majority use case for simulators overall, but in autonomous driving, running distributed simulations in the cloud is significantly more important than running on a single PC. Of course, this probably isn’t a common use of Gazebo, but I imagine that the growing fleets of mobile warehouse robots, autonomous forklifts, etc. are going to want something similar.

This isn’t a reason to use ROS or even DDS, because in this use case determinism is more important than real-time simulation. In fact I’d go as far as to say that real-time simulation is completely unnecessary and a hindrance. That means that using ZeroMQ or any other protocol is perfectly valid.

---

<div class="post-metadata">

**Author:** ![felixvd](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/felixvd/32/2279_2.png) [@felixvd](https://discourse.openrobotics.org/u/felixvd)\
**Post date:** [June 24, 2019, 7:11am UTC](https://discourse.openrobotics.org/t/why-are-ros-and-ignition-gazebo-diverging-or-not-converging/9513/13 "2019-06-24T07:11:51Z")

</div>

Personally I think distributed simulation is quite common for learning applications, and will become even more common. Better to have it on the radar.
