pyros_interfaces_ros package from pyros_interfaces_ros repo


Package Summary

Tags No category tags.
Version 0.4.2
License BSD
Build type CATKIN

Repository Summary

Checkout URI
VCS Type git
VCS Version master
Last Updated 2018-04-21
CI status No Continuous Integration
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Dynamic ROS interface for Pyros

Additional Links


  • AlexV


  • AlexV


ROS Interface sub-package for Pyros

This package provides an interface to the multiprocess ROS system, from python.

It is usable from a usual python virtual environment, following the normal python flow.

If required, it could also be used from ROS itself (to allow ROS packaging of pyros apps)


  • OS is Ubuntu Xenial
  • ROS is already known. If not, get informations and tutorials on

ROS Indigo System Setup

  • Install useful python packages if you don't already have them :
$ sudo apt-get install virtualenvwrapper

$ sudo sh -c 'echo "deb $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
$ sudo apt-key adv --keyserver hkp:// --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
$ sudo apt-get update
$ sudo apt-get install ros-kinetic-desktop
$ sudo rosdep init

ROS Talker Launch

Run the ROS talker and listener nodes as usual using roslaunch, in a separate terminal :

$ source /opt/ros/indigo/setup.bash 
$ roslaunch roscpp_tutorials talker_listener.launch 

Now you can run the pyros ROS interface node : - from ROS itself (using the launcher provided), - OR from a separate python virtual environment, that will access your ROS environment via pyros-setup.

Launching on ROS


TODO : using dynamic_reconfigure you can dynamically adjust what is exposed or not, without restarting the node.

Running from python

$ mkvirtualenv pyros-ros --system-site-packages
$ workon pyros-ros
(pyros-ros) $ pip install pyros_interfaces_ros
$ python -m pyros_interfaces_ros --sub ".*"
Re-adding /opt/ros/jade/lib/python2.7/dist-packages in front of sys.path
[pyros] Node started as [None <= ipc:///tmp/zmp-pyros-jRbGSV/services.pipe]
[INFO] [WallTime: 1493198579.422698] RosInterface pyros node started with args : []
[INFO] [WallTime: 1493198579.426763] [pyros_interfaces_ros.ros_interface] ROS Interface initialized with:
        -    services : []
        -    publishers : []
        -    subscribers : 
        - .*
        -    params : []
        -    enable_cache : False

[INFO] [WallTime: 1493198580.437716] /pyros Pyros.ros : Adding publisher interface /chatter <class 'std_msgs.msg._String.String'>
[INFO] [WallTime: 1493198580.843025] /pyros Pyros.ros : Adding publisher interface /rosout <class 'rosgraph_msgs.msg._Log.Log'>

TODO : tuning the configuration file will allow you to decide what to expose via the interface

From this point on, you should use the Pyros framework to be able to interract with the ROS system from another process. This will avoid any interference between ROS and your usual python environment.


TODO : using xonsh, you can dynamically access and modify ros internals, from a normal shell...



0.4.2 (2018-04-21)

  • Adding rosservice dependency. [AlexV]
  • Fixing param getval/setval interface. [AlexV]
  • Updating README. [AlexV]
  • Changed travis config to not attempt to build packages. ros build farm will do it. [AlexV]

0.4.1 (2018-04-19)

  • 0.4.1. [AlexV]
  • Updating changelog. [AlexV]
  • Adjusting package version. [AlexV]
  • Merge pull request #10 from pyros-dev/pyros_common_5. [AlexV]

    adating pyros exceptionsto recent pyros_common.exception base class.

  • Fixing super call. [AlexV]

  • Now exposing __version__ as usually done. [AlexV]

  • Bumping packages version. [AlexV]

  • Reviewing rosinstall file for this package. [AlexV]

  • Adapting Pyros Exceptions to new format. [AlexV]

  • Adating pyros exceptionsto recent pyros_common.exception base class. [AlexV]

  • Merge pull request #8 from pyros-dev/improved_logging. [AlexV]

    now logging config values

  • Now logging config values. [alexv]

  • Merge pull request #7 from cehberlin/master. [AlexV]

    Fixed missing forwards that are used by rostful

  • Fixed broken manifest loading in message_conversion and safe api. [Christopher Hrabia]

  • Fixed missing ServiceException forwarding. [Christopher Hrabia]

  • Merge pull request #6 from asmodehn/namespace. [AlexV]


  • Filling up readme. [AlexV]

  • Adding commands to make release easier... [AlexV]

  • Adding main module and launch file to be able to launch pyros node by itself. [AlexV]

  • Removing the debug print of sys.path. [AlexV]

  • Now exposing PyrosROS class from the package. [AlexV]

0.4.0 (2017-04-24)

  • 0.4.0. [AlexV]
  • Preparing for 0.4 release. [AlexV]
  • Comments. [AlexV]
  • Changing pyros_interfaces_ros import name. [AlexV]
  • Fixing pyros_interfaces_common import name. [AlexV]
  • Fixing path to version module. [AlexV]
  • Dropping our idea of namespace packages since we cannot easily make a working ROS deb pkg out of it. [AlexV]
  • Activating dependency retrieval (from dependency link) until pyros-common with namespace is released as deb. [AlexV]
  • Using dependency links to get in progress namespace package pyros_interfaces directly from git. [AlexV]
  • Enforcing usage of pkg-resources, not pkgutil, for namespace packages. moved importe of common out of try catch. [AlexV]
  • Reorganizing to nest everything under pyros_interfaces namespace. [AlexV]
  • WIP reviewing how to handle config... [alexv]
  • Adding pyros_test as test dependency. [alexv]
  • Adding pyros_utils as dependency. cleaning some imports. [alexv]
  • Switching to use shadow fixed ros repositories. [alexv]
  • Fixed tests, version number and dependency to pyros_common. [alexv]
  • Restructuring to simplify things... [alexv]
  • Fixing imports for new pyros structure. [alexv]
  • Adding dependency on catkin_pip. [alexv]
  • Fixing tests paths. [alexv]
  • Setting cmakelists and package.xml. [alexv]
  • Gathering and restructuring ros dependent part of pyros. [alexv]
  • Adding project files. [alexv]
  • Moving rosinstall files to proper directory. [alexv]
  • Merge branch \'master\' into HEAD. [alexv]
  • Initial commit. [AlexV]
  • Moving mock interface outside of ROS, to not depend on ROS for mocks. [alexv]
  • Small file rename to match new name from pub and sub. [alexv]
  • Merge branch \'pub_sub\' of into socket_safety. [alexv]


    : pyros/rosinterface/ pyros/rosinterface/

  • Fixing node interface after pub/sub mixup. simplified stringpub and string sub tests. [alexv]

  • Fixing tests filenames. cleanup debug prints. [alexv]

  • Fixing cross logic between pubs ans subs. [alexv]

  • Improving subscriber / publisher inter interfacing... added timeout to connect a pub/sub. [alexv]

  • Now properly inverting (publisher_if is subscriber and vice versa) [alexv]

  • Fixing broken update loop of ros_interface. [alexv]

  • Skipping failing rosinterface test for now. passing fine independently, more investigation needed... [alexv]

  • Separating pubs and subs. needs pyros_test 0.0.6 for tests. [alexv]

  • Moving all ros api calls into subpackage to make patching easier. cleaned up imports. [AlexV]

  • First version of rospy safe API. [AlexV]

  • Improving travis build to test with cache as well... change version_eq to version_gte since buidfarm doesnt handle version_eq properly (yet?). [alexv]

  • Moving mockinterface into rosinterface.mock since design follows ROS concepts. fixed all tests. bumped pyros minor version to 0.3.0 because of all the changes... [alexv]

  • Merged testRosInterfaceNoCache and testRosInterfaceCache. fixed all issues. [alexv]

  • Fixed tests without cache. [alexv]

  • Basic usecase now working again with cache. needs lots of cleanup... [alexv]

  • Continuing changes in rosinterface, splitting service, topics and params interface pools now rosinterface tests all passing. [alexv]

  • Splitting baseinterface to simplify things. fixed mockinterface and tests. [alexv]

  • Various cleanups. [alexv]

  • Improved profiling script. [alexv]

  • Comments. [alexv]

  • Fixing bwcompat issues. dropping shutdown behavior fix for now. [alexv]

  • Improved management of interface topics and reference counting. still broken for multiprocess because shutdown is not working properly. [alexv]

  • Fixing params and services removal with cache diff input. improved topics interface creation and cleanup. [alexv]

  • Speeding up topic interfacing. [alexv]

  • Fixed logic for removing transients on difference update. now forwarding exception if param type not found small test improvements. [alexv]

  • Fixing param behavior in ros_interface and added unit tests. [alexv]

  • Improving first dynamic ROS import to ros_interface. improved logging. some test clean up since we use python testing framework now. [alexv]

  • Now fails with explanation if ConnectionCacheProxy not available in rocon_python_comms. [alexv]

  • Importing pyros_setup only when imports from ros_interface failed. [alexv]

  • Improved main init to import dependencies from python or from ROS packages. fixed check for unicode strings. started implementing CATKIN_PIP_NO_DEPS for testing. reviewing dependencies version. [alexv]

  • Moved some dependencies out of pyros_setup, to not require pyros_setup if using ROS environment as usual. [alexv]

  • Merge branch \'indigo-devel\' of into config_refactor. [alexv]


    : pyros/rosinterface/

  • Fixing tests. [alexv]

  • Fixed check for early topic detection and stabilize cache diff optimization. [alexv]

  • Reviewing how we use zmp nodes and improving tests... WIP. [alexv]

  • Fix adding available services. improved logging. [alexv]


    : pyros/baseinterface/ pyros/rosinterface/

  • Fixed checking for available transients. now doesnt have to be a dict, just an iterable. [alexv]


    : pyros/rosinterface/

  • Removed useless None in get(smthg, None) [alexv]

  • Added interface cache tests to run by default. reverted debug long timeouts. [alexv]

  • Finished manual merging of connection_cache_diff_callback. fixed all RosInterfaceCache tests, but code really need refactoring... [alexv]

  • Starting manual merge of connection_cache_diff_callback branch. [alexv]

  • Fixes for connection cache with diff optimisation. added pubsub wait for confirm from cache, but deleted pubsub report deleted before confirmation from cache. Not sure if it is the right choice, but extra care is needed when deleting... [alexv]

  • Fix tests for RosInterface especially with cache (but no diff optim) [alexv]

  • Adding yujin underlay as we need it for connectioncache message format. [alexv]

  • Fixing path to current workspace. [alexv]

  • Fixing various minor python issues. [AlexV]

  • Merge branch \'indigo-devel\' of into config_refactor. [AlexV]


    : package.xml pyros/

  • Removed duplicated import. [AlexV]

  • Moved pyros and zmp sources, otherwise pyros was not find through egg link. [alexv]

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Launch files

  • launch/pyros.launch
    • launch file to be able to launch pyros from ROS easily
      • topics [default: ['turtle1/pose']] — a python expression listing the different regex for topics to expose
      • services [default: []] — a python expression listing the different regex for services to expose
      • params [default: []] — a python expression listing the different regex for params to expose
      • enable_cache [default: false]
      • connection_cache_list [default: /rocon/connection_cache/list] — topic to listen for connection cache list of connections
      • connection_cache_diff [default: /rocon/connection_cache/diff] — topic to listen for differences in connection cache list of connections


No message files found.


No service files found


No plugins found.

Recent questions tagged pyros_interfaces_ros at