ROS Resources: Documentation | Support | Discussion Forum | Service Status | Q&A answers.ros.org

Releasing GStreamer

Dear ROS maintainers,
I’ve used and adapted Mike ferguson’s package for my “kinetic+GStreamer1.0+python2.7+GTK3.0” mix in order to soon drive by voice a Turtlebot3.
I’m rather new to ROS and never added a package, so my question is probably one of a “noob”.
Would it be a good idea to add my version of Mike ferguson’s package to kinetic ?
If you think it is worth it, could you just send me a few pointers to the good docs ?
Many thanks for all the job (huge) done, it is a pleasure to work with ROS.
Sincerely, Pierre Bomel

I moved this to it’s own topic instead of discussing this as a reply to the about page.

You’re not clear about what package you’re actually talking about so it’s hard to give you much answers. Mike Ferguson has released a lot of packages.

In general if you’ve extended support for a package the best thing to do is to open a pull request to improve the package with the uptream development process and let the existing maintainer(s) continue to release the package. If the upstream maintainers are not interested in continuing to maintain or support it then there’s a process by which you can adopt a package for maintenance. But to do that you should be ready to pick up the mantle of maintainership which is not something that we recommend for new community members. It’s both a large commitment as well as requires becoming familiar with more of the release pipeline.

Thank you very much for your quick answer.

I was talking about the ROS pocketsphinx package written by Mike Ferguson.
It has been initialy written for:

  • Xenial Ubuntu 16.04
  • ROS kinetic
  • GStreamer0.10 and pygst0.10
  • pocketsphinx plugin for GSrreamer0.10
  • python 2.7
    and GTK/GObject (I don’t know what version)

Unfortunately, I have not been able to use it “as is” because some dependant sw have evolved:

  • python 2.7 -> 3++
  • GStreamer0.10 -> GStreamer1.0 (and also its pygst companion python module), for python3
  • pocketSphinx 0.10 “vanished”, I could only find pocketsphinx1.0 version on Ubuntu repositories
  • GTK 3.0
    To be precise : the ~/nodes/recognizer.py file does not compile (or is interpretable by the python shell) any more. Even with the python GST “compatibility package”.

Because I want to continue working with ROS “1”, I must keep my “outdated” python2.7
The only possibility was:
1/ to install the right python modules and Xenial libs for:

  • GSTreamer and pygst
  • GTK3
    2/ to rewrite ~/nodes/recognizer.py

To end, coding with C/C++ or python for the new GStreamer pipeline is not strictly compatible between 0.10 and 1.0 versions. Nervertheless, there is a lot of docs about “porting from 0.10 to 1.0 on the net”. But, trust me, this is not a beginner’s work.

So I rewrote the file ~/nodes/recovery.py with the current GStreamer1.0 API standard, and it seems to work now.

Of course, I do not pretend to be as experienced as you (I mean the ROS maintainers).
To make a long story short, I’ve been working for long (more than 30 years) with OS kernels, drivers, embedded software/firmware as well as IC design with HDLs (VHDL, Verilog, SystemC). I’m not a “dev-noob” at all.
Anyway, a bit more testing would be needed to be sure that is works as expected in all conditions, I totaly agree.
Becoming a ROS maintainer ?
If I had an idea about the amount of work required to failry support a package, why not ?
Help me to make my mind about it.

I made a mistake …
The original pocketshpinx package (Mike Ferguson’s) has been written for ROS Jade, not kinetic, of course.

It sounds like you’ve gotten pretty deep into this. And the best place to follow up on this is on it’s github repository.

I see that there’s interest in newer releases. So to start with for visibility I’d recommend opening a pull request there with your changes so others can review them. And that also would be a great place to discuss with @mikeferguson about contributing your changes back. If you’re interested you could also offer to help with maintenance. Often it works better to contribute to the maintenance of a package before taking over. The existing maintainer can be a good guide and mentor to help you learn the system and capture some of our best practices. As you gain more experience you can take over more and more of the responsibilities.

Thanks Tully, this is a wise advice. I’ll see what I can do.
I have been very happy to find a bit of helping code.
I may help the others in the future.

Yes, please open a Pull Request if you have a version that works with Gstreamer 1.0 - there was a previous PR for a similar port, but it had a number of issues. We can spin up a new branch for the newer version of gstreamer.

1 Like