Pyros-Setup¶
Toolsuite for running ROS environments directly from python code, without any specific requirements outside of usual python.
This is a pure python package, to be installed in your system, in order to allow easy ROS access from your python environment.
Contents:
Pyros-setup¶
Toolsuite for using ROS environments directly from python code, without any specific requirements outside of usual python.
This is a pure python package, to be installed in your system, in order to allow easy ROS access from your python environment.
Note : If instead you prefer doing things the other way around, to embed existing python packages in the ROS environment, this is possible thanks to [catkin_pip](https://github.com/asmodehn/catkin_pip)
Prerequisites¶
ROS should be installed on your system. Example with ROS melodic on Ubuntu Bionic:
sudo apt install ros-melodic-ros-base
This will setup everything you need for using ROS with python2.7 More information there : http://wiki.ros.org/melodic/Installation/Ubuntu
Then you need to make sure the Python2 virtual environment in which you are working allows access to system packages. More information there : https://virtualenv.pypa.io/en/latest/userguide/#the-system-site-packages-option
HowTo install¶
To install it:
pip install pyros_setup
You need to be careful which environmnt you install this package in:
- If you are running in a virtual environment myvenv, and you want to access ROS packages outside this environment (since they should be installed on the system in /opt/ros/$ROS_DISTRO), you need to install pyros-setup in the virtual environment myvenv. Please report bugs you may encounter, this is the proper way to setup the environment without risks to break your system python, but likely not the most tested…
- If you are running the system python interpreter (not in a virtual environment), you should then install this package on your system (in /usr/local/lib/python2.7/site-packages, also via the same pip command). Although this is definitely not a recommended way to setup python packages, it is the defacto standard way for ROS.
To run the self tests, using entry_points defined in setup.py:
pyros_setup --pytest
OR using the python package directly:
python -m pyros_setup --pytest
OR using pytest specifically, optionally specifying the distro you want to use
py.test -s --pyargs pyros_setup --distro=indigo
OR via tox to test multiple env at once (with only one ROS distro)
tox -- --distro=indigo
It can also be used from source inside a catkin workspace in the same way. The workspace act as a virtual environment (using https://github.com/asmodehn/catkin_pip). This is useful for development along with ROS packages:
$ catkin_make
$ source devel/setup.bash
$ python -m pyros_setup
$ pyros_setup
$ py.test -s --pyargs pyros_setup --distro=indigo
HowTo develop¶
After cloning the repository, you can use pipenv to setup your development environment. Be careful to allow access to system packages:
pipenv --two --system-packages
HowTo use¶
Basically pyros_setup allows you to do this:
try:
import rospy
import roslaunch
import rosgraph
import rosnode
except ImportError: # if ROS environment is not setup, we emulate it.
import pyros_setup
pyros_setup.configurable_import().configure('mysetup.cfg').activate() # this will use mysetup.cfg from pyros-setup instance folder
import rospy
import roslaunch
import rosgraph
import rosnode
With mysetup.cfg in pyros-setup instance folder containing:
import os
WORKSPACES=[os.path.join('home', 'user', 'ROS', 'workspace', 'devel')]
DISTRO='indigo'
Note: If you know any easier / less tricky / more pythonic way of handling configurable dynamic imports, let me know!
HowTo deploy¶
If you want to use pyros-setup as a dependency of your package, you should depend on the pip package. Afterall, the whole point is to provide access to ROS from a pure python environment.
Python3¶
DISCLAIMER: This is not compatible with catkin_pip usage. Also NOT SUPPORTED. Attempt this at your own risk.
But since python2 is almost dead, we might want to move to python3 already. Just remember that ROS does not support python3 out of the box, and significant tinkering is required.
For python3, you will need to install dependent python packages in your python3 virtual environment. For example, pyros-setup itself only requires rospkg and pyyaml for the tests to pass:
pip3 install pyyaml rospkg
More information there : https://answers.ros.org/question/237613/how-to-define-ros-kinetic-to-use-python3-instead-of-python27/
Remarks¶
Although it would technically be possible to build a ROS package from this source, this will NOT be done. The catkin_pip build system that was here once, was only here to help having pyros-setup in a source workspace while developing on it. When using ROS directly this package is not needed, and having it installed among ROS packages would cause much useless confusion with python import mechanism.
Roadmap¶
- The way forward seems to build a ROS wheel from source, with the basic packages inside…
This will make it compatible with any python environment, easily installable, and isolate it from the operating system.
- This code might eventually be migrated into rosimport, which, as a larger scope, focuses on python environments interoparability with ROS.
Troubleshooting¶
- Wrong ROS Distro
If you run self tests like this
$ pyros_setup --pytestYou might get
========================================================================================================= test session starts ========================================================================================================= platform linux2 -- Python 2.7.6, pytest-3.0.1, py-1.4.31, pluggy-0.3.1 rootdir: /home/alexv/Projects/pyros-setup, inifile: collected 1 items pyros_setup/tests/test_setup.py WARNING:root:Error detected while importing ROS python modules. Attempting fix via ROS setup emulation... WARNING:root: => Pyros_setup v0.1.99 Emulating ROS setup now for distro kinetic and workspaces () WARNING:root:Configured workspace /opt/ros/kinetic not found. Please double check your configuration. Skipping... WARNING:root: => ROS setup emulation done. [...] E ImportError: No module named rospy /usr/lib/python2.7/importlib/__init__.py:37: ImportError ====================================================================================================== 1 failed in 0.02 seconds =======================================================================================================This is what happens when the configuration (default) tries to use a ROS distro you do NOT have on your system rospy just cannot be found.
To try detecting multiple ROS distro on your system you can pass the –distro option.
- VirtualEnv not using system packages
If, upon running test with
$ pyros_setup --pytest --distro=indigoYou get
========================================================================================================= test session starts ========================================================================================================= platform linux2 -- Python 2.7.6, pytest-3.0.1, py-1.4.31, pluggy-0.3.1 rootdir: /home/alexv/Projects/pyros-setup, inifile: collected 1 items pyros_setup/tests/test_setup.py WARNING:root:Error detected while importing ROS python modules. Attempting fix via ROS setup emulation... WARNING:root: => Pyros_setup v0.1.99 Emulating ROS setup now for distro indigo and workspaces () WARNING:root:Prepending path /opt/ros/indigo to CMAKE_PREFIX_PATH WARNING:root:Prepending path /opt/ros/indigo/bin to PATH WARNING:root:Prepending path /opt/ros/indigo/lib to LD_LIBRARY_PATH WARNING:root:Prepending path /opt/ros/indigo/lib/pkgconfig to PKG_CONFIG_PATH WARNING:root:Prepending path /opt/ros/indigo/lib/python2.7/dist-packages to PYTHONPATH WARNING:root: => ROS setup emulation done. ERROR:root:importlib.import_module(rospy) FAILED : No module named yaml ERROR:root:Make sure you have installed the yaml python package [...] E ImportError: No module named yaml /opt/ros/indigo/lib/python2.7/dist-packages/rospy/client.py:47: ImportError ====================================================================================================== 1 failed in 0.03 seconds =======================================================================================================This means your virtualenv cannot access system (and ROS) packages.
This is easily fixed by removing <virtualenv_dir>/lib/pythonX.Y/no-global-site-packages.txt to allow your virtualenv to also include system (and ROS) packages.
Pyros-setup¶
Development guide¶
Pyros-setup is a pure python to ROS interface. It can dynamically discover a ROS setup, and a user can develop normal python packages that interract with ROS, without needing to know anything about ROS. Only using pyros from its pip package should be enough.
Developing such interfacing code needs to be done carefully :
- pyros-setup needs to be fully functional as a pip package. dynamically discovering ROS environment and dependencies, and providing them to python users.
=> a pip package is provided
- pyros-setup needs to be usable in ROS as a normal ros package as much as possible, so that developing it along with ROS is as painless as possible.
=> pyros-setup should be usable from source as a usual catkin package in a catkin workspace. => pyros-setup pip package should be installable via rosdep, so that other packages can depend on it. It is currently not possible for a normal python package to fully integrate with catkin deb packages without heavy ROS specific modifications, so a deb package will not be provided. Instead, packages who want to depend on it, should use the rosdep pip dependency. Note : The mid-term consequences are still widely unknown…
Development Environment Setup¶
To work on lowlevel package like pyros-setup and guarantee close compatibility both with ros and python, it is better to install only a minimal ROS system. And to be able to quickly learn the code and identify issues in underlying dependencies, sources are always better.
ROS From Source (ubuntu)¶
- Setting up ROS package repositories (maybe not needed if we get everything from source. better to skip this to make sure we know when rosdep wants to grab ROS packages)
- $ sudo apt-key adv –keyserver hkp://ha.pool.sks-keyservers.net –recv-key 0xB01FA116 $ sudo sh -c ‘echo “deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main” > /etc/apt/sources.list.d/ros-latest.list’
- Getting ROS dependencies from source
$ sudo apt-get update $ sudo apt-get install build-essential
$ git clone https://github.com/vcstools/wstool.git $ git clone https://github.com/vcstools/rosinstall.git $ git clone https://github.com/ros-infrastructure/rosinstall_generator.git $ git clone https://github.com/ros-infrastructure/rosdep $ cd rosdep $ source setup.sh
$ sudo rosdep init $ rosdep update
- Getting minimal ROS
- $ mkdir ~/ros_catkin_ws $ cd ~/ros_catkin_ws $ rosinstall_generator ros_comm –rosdistro indigo –deps –wet-only –tar > indigo-ros_comm-wet.rosinstall $ wstool init -j8 src indigo-ros_comm-wet.rosinstall $ rosdep install –from-paths src –ignore-src –rosdistro indigo -y $ ./src/catkin/bin/catkin_make_isolated –install -DCMAKE_BUILD_TYPE=Debug
- Updating minimal ROS
- $ mv -i indigo-ros_comm-wet.rosinstall indigo-ros_comm-wet.rosinstall.old $ rosinstall_generator ros_comm –rosdistro indigo –deps –wet-only –tar > indigo-ros_comm-wet.rosinstall $ diff -u indigo-ros_comm-wet.rosinstall indigo-ros_comm-wet.rosinstall.old $ wstool merge -t src indigo-ros_comm-wet.rosinstall $ wstool update -t src $ ./src/catkin/bin/catkin_make_isolated –install
- Sourcing ROS setup (and dropping into usual ROS setup)
- $ source ~/ros_catkin_ws/install_isolated/setup.bash
Changelog¶
0.3.0 (2019-07-23)¶
Adding doc index. [alexv]
Fixing typo on doc/conf.py. [alexv]
Fixing doc conf.py for rtfm without catkin_pkg. [alexv]
Adding example usage script. [alexv]
Adding pipfile lock in ignore list (multi python version). [alexv]
Adding lunar tests for travis (#59) [AlexV]
- adding lunar tests for travis
- improved the case when we do not have distro installed, or when we want to use install_isolated space.
remove lunar tests, since docker is not available yet
- fixing distro install path to be absolute
Cleaning up package description and dependencies… [AlexV]
Dropping travis attempt for python3. unsupported by ROS. attempting to improve pipfile to allow site packages access… [AlexV]
Fixing setuptools dependency in travis venv. [AlexV]
Attempting to install recent setuptools in travis. [AlexV]
Fixing travis python versions depending on distro. [AlexV]
Fixing travis command to create virtualenv from specific python. [AlexV]
Removing tox-travis requirement. We realistically cannot test this in virtual env isolation, since it heavily depends on the system to access ROS packages. [AlexV]
Transitioning from requirements.txt to pipfile. [AlexV]
Importing print function from __future__. fixing python in travis venv. [AlexV]
Adding melodic as priority distro when detecting. [AlexV]
Rewriting print as function in error case. [AlexV]
Adding melodic to travis tests. [AlexV]
Adding more python versions for tox testing. [AlexV]
Adding pipenv Pipfile for environment with direnv to make it implicit. [AlexV]
Pin twine to latest version 1.11.0 (#63) [pyup.io bot]
Now allowing update on dev-requirements. [AlexV]
Trying to pin six dependency high enough, since we do not need to rely on system debs. [AlexV]
Adding pyup config. [AlexV]
Pin wheel to latest version 0.30.0. [pyup-bot]
Update gitchangelog from 2.5.1 to 3.0.3. [pyup-bot]
Comment fixes. [AlexV]
Added twine and wheel to dev-requirements. [AlexV]
0.2.1 (2017-03-30)¶
- V0.2.1. [AlexV]
- Enforcing pyros_config >=0.2 requirement. [AlexV]
- Fixup to get it to work with namespace packages as well. added some comments. [AlexV]
0.2.0 (2017-02-21)¶
- V0.2.0. [AlexV]
- Fixing CI bugs… [AlexV]
- Getting rid of hackish module relay. new API allows much simpler code, with similar usage. [AlexV]
- Cleaning up and fixing PYTHONPATH environment setup to match sys.path. [AlexV]
0.1.6 (2017-02-20)¶
- V0.1.6. [AlexV]
- Implemented readdsitedir and readdpackage, inspired from site.py. [AlexV]
- Removing our pyros-setup.cfg from source since pyros_setup should not be run directly from source. [AlexV]
- Bumping version number to denote a change. added class comment for WrappedList. [AlexV]
- Now using site.addsitedir to parse .pth files correctly when adding site-packages and dist-packages into sys.path. [AlexV]
- Update gitchangelog from 2.4.1 to 2.5.1. [pyup-bot]
- Improved README. [alexv]
- Pin gitchangelog to latest version 2.4.1. [pyup-bot]
- Adjusted release flow description. [alexv]
0.1.5 (2016-09-02)¶
- V0.1.5. [alexv]
- Now doing virtualenvwrapper setup in container at each step. [alexv]
- Now doing virtualenvwrapper setup inside container. [alexv]
- Checking if explicit virtualenv setup is actually needed. [alexv]
- Attempting travis docker build and enabling kinetic check. [alexv]
- Fixed ROS_ETC_DIR and ROS_PACKAGE_PATH setup. adding debug logs. cosmetics. [alexv]
- Running release commands from setup.py using subprocess shell call. [alexv]
0.1.4 (2016-08-31)¶
- Updated changelog. [alexv]
- Fixing travis python checks. [alexv]
- Now checking exit status during release process. added gitchangelog config, not logging merge anymore. [alexv]
- Commenting travis check breaking because of pytest bug with installed tests. [alexv]
- Bumping pyros-config requirement. fixed release flow description. [alexv]
- Tagging changelog. [alexv]
- V0.1.4. [alexv]
- Updating changelog and setup.py release flow comment. [alexv]
- Improved travis test to catch config file errors. [alexv]
- Refined release flow in setup.py comments. [alexv]
- Fixed quoting distro in generated config file. [alexv]
0.1.3 (2016-08-31)¶
- V0.1.3. [alexv]
- Generating changelog. [alexv]
- Attempting to get travis to workaround https://github.com/pytest- dev/pytest/issues/1889. [alexv]
- Now detecting ros distro on config generation. increased pyros_config requirement to support config generation. [alexv]
- Reviewed test and logging configuration. [alexv]
- Now using pyros_setup command to run self test instead of pytest. simplified travis check, dropping ros workflow. [alexv]
- Attempting default config file generation. added troubleshooting section to README. [alexv]
- Remove __init__.py from test folder as detailed in pytest doc. bumped version to 0.1.99 to denote devel. [alexv]
- Improved setup.py with custom commands. Reviewed test, now using py.test -s. Fixed some details in README. [alexv]
- Adding method to generate config file in instance folder. [alexv]
- Adding instructions for running tox. [alexv]
- Following pip format to display version. [alexv]
- Refining config and tests, to fail tests if default config is wrong for user setup. [alexv]
- Adding kinetic configs. [alexv]
- Comments for release workflow. [alexv]
- Fix typo in log message. [alexv]
0.1.2 (2016-08-11)¶
- V0.1.2. [alexv]
- Changelog. [alexv]
- Turning pyros-setup in a pure python package, since it should never be used with ROS environment setup anyway. [alexv]
- Added __file__ and __version__ to pyros_setup import relay class. improved deprecated decorator. improved warnings. [alexv]
- Improving main entrypoint with –version and –help. [alexv]
- Improved main entry point for self test. [alexv]
- Added site-packages to PYTHONPATH to support catkin_pip hybrid workspaces. replaced deprecated logging methods. [alexv]
0.1.1 (2016-08-11)¶
- Preparing 0.1.1. [alexv]
- Quick docs cleanup. [alexv]
- Cosmetics. [alexv]
- Requiring catkin_pip minimum 0.1.10, in order to fail on ros install flow since some of our pip dependencies are not satisfied by ros debs (and we dont want them to in this python package). [alexv]
- Disabling travis checks for ros install flow since this package is not aimed at being installed or released as a ROS package. [alexv]
- Review documentation. fixing travis test. [alexv]
- Renaming DISTRO -> CI_ROS_DISTRO variable from travis config. [alexv]
- Separating devel and install flow for ros travis checks. added publish and tag methods to setup.py an removed pypi_release script. improved setup.cfg and added doc requirements. [alexv]
- Reviewing travis for test and cosmetics. [AlexV]
- Reviewing tox and tests. [AlexV]
- Comments for tox. [AlexV]
- New test strategy for travis. since we need to use system packages, we cant use travis python language build environment. [AlexV]
- Forcing travis to get latest tox. [AlexV]
- Fixed tox.ini to set venvs properly and make tests pass. [AlexV]
- Fixing tests to be run with pytest from catkin. [AlexV]
- Fixed main entrypoint for pytest. fixed pyros-utils and pyros-config dependencies version. [AlexV]
- Now adding path to ROS_PACKLAGE_PATH only if it exists. [alexv]
- Fixing test for pytest. [alexv]
- Travis now using py.test directly since tox doesnt work refined tox.ini improving gitignore. [alexv]
- Now using pytest for self test. [alexv]
- Using renamed catkin_pip. [alexv]
- Setting up python environments and tox. fixing version in setup.py. [alexv]
- Restructuring to a pure python package with pytest and tox testing, on indigo and jade. pytest passing (remove *.pyc). tox failing. [alexv]
- Cleaning up pyros_utils related code. [alexv]
- Cleaning up pyros_config related code. [alexv]
- Now requiring catkin_pure_python 0.1.2. comments. [alexv]
- Updating for catkin_pure_python 0.1.0. [AlexV]
- Bumping minimum required catkin_pure_python version to 0.0.8 to not write to install workspace before make install. [alexv]
- Improved readme, mentioning to use pip package and catkin_pure_python. [alexv]
- Hopefully fixing travis build dependencies problem, for now… [alexv]
- Improved error message when import fails. [alexv]
- Fixing rosdep install step in travis. [alexv]
- Now installing ros dependencies in ros build script to check ros dependencies can also be retrieved from python workflow. [alexv]
- Added doc about config file contents. [alexv]
- Updated docs. cosmetics. [alexv]
0.1.0 (2016-05-10)¶
- Generating changelog. [alexv]
- Adding missing config package to setup.py. [alexv]
- Ros package still depending on catkin afterall. [alexv]
- Modifying ros utils script to improve debug for python and pip behavior. [AlexV]
- Helping debug of rosutils scripts. [alexv]
- Rosutils scripts changing to build directory before doing anything else. [AlexV]
- Now using package v2 format. [alexv]
- Fixed logic for ros_package_path when not a devel workspace. cosmetics. [alexv]
- Master is now default branch. fixing travis badge url. [alexv]
- Fixing rosutils scripts. [alexv]
- Adding package version. [alexv]
- Mention shadowrobot buildtools in readme. [alexv]
- Attempting matrix build. [alexv]
- Fixing virtualenvwrapper setup script path on ubuntu. removed debian_frontend already setup on travis trusty image. [alexv]
- Fixing virtualenvwrapper setup. [alexv]
- Force yes for python virtualenv install. [alexv]
- Adding shell script to isolate ros setup during travis test. improved travis build to test usage from both python venv and ROS. [alexv]
- Now running python test (in venvs) from travis. [alexv]
- Set next version number. cosmetics. [alexv]
- Added a default config file to be used by client programs for default ros configuration. now using importlib instead of custom import_string() separated packagebound, confighandler, and config import classes simplified setup fixed tests. [alexv]
- Fiddling around with configuration to make it usable from pyros. [alexv]
- First version after refactor to handle config file. good enough for self tests to use it. [alexv]
- Fixes for latest catkin_pure_python. readme improvements. [alexv]
- Improving readme. [alexv]
- Cleanup doc and comments. [alexv]
- Now depending on catkin_pure_python. [alexv]
- Working pip install requirements in catkin workspace. [alexv]
- Added simple method to get ros_home. [alexv]
- First experiment with using a virtualenv in devel workspace. [AlexV]
- First verison of cmake creating a venv to store packages. [AlexV]
- Added comments… [alexv]
- Fixing pip install command. [alexv]
- Trying to install pip requirements ni devel space. notworking yet. [AlexV]
- Comments. [AlexV]
- Broken cmake stub for catkin-pip. [AlexV]
- Setting cmake as buildtool. [AlexV]
- Improved error message when ROs setup fails. [AlexV]
0.0.12 (2016-02-10)¶
- V0.012. [AlexV]
- Fixing nose dependency version and removing test pip dependency on catkin package pyros_test. [alexv]
0.0.11 (2016-01-26)¶
- Preparing 0.0.11. [AlexV]
- Adding simple entrypoint to run nose tests. [AlexV]
- Now running setup.py only with setuptools. adding nose.collector as test runner for setup.py. shutting down roslaunch before exiting tests. [AlexV]
0.0.10 (2016-01-25)¶
Revert “removing executable flag from test_rostest_nose since it can now be executed with nose as well as rostest” [alexv]
This reverts commit b915beba3731eb03c1bd187bba05af1c337e8034.
Removing executable flag from test_rostest_nose since it can now be executed with nose as well as rostest. [alexv]
Improving travis tests to run on devel and install version. [alexv]
Replacing talker test node by a pyros_test node to not change dependency list. also make rostest wait on it, otherwise it can fail. [alexv]
Preparing v0.0.10. [alexv]
Improved tests for rostest_nose module to make sure rostest still works. [alexv]
0.0.9 (2016-01-09)¶
- Prepring 0.0.9. [AlexV]
- Adding nose in requirements.txt removing unprotected catkin import in setup.py. [AlexV]
0.0.8 (2016-01-08)¶
- Preparing 0.0.8. [alexv]
- Adding catkin_package() cmake command. [alexv]
0.0.7 (2016-01-08)¶
- Preparing 0.0.7. [alexv]
- Cleaning up dependencies since uneeded python-six breaks buildfarm for EOLed saucy. [alexv]
0.0.6 (2016-01-08)¶
- Preparing 0.0.6. [alexv]
- Adding parameter to get_master in the case delayed_import is not called. [alexv]
- Improved dynamic module behavior. [alexv]
- Improving module for delayed import. [alexv]
- Improved README rst formatting. [alexv]
- Added code samples to README to make aim clear. [alexv]
- Change doc in README to explicitely target python package. [alexv]
0.0.5 (2016-01-08)¶
- Version to 0.0.5. [alexv]
- Readding package.xml in egg while we use catkin_pkg to break the egg. [alexv]
0.0.4 (2016-01-07)¶
Preparing for 0.0.4 pypi release. [alexv]
Using shadow-fixed repo for travis. [AlexV]
This way we can get latest dependency to test latest version of source, which probably makes more sense than testing stable.
Adding gitignore to hide those .pyc. [alexv]
Adding useful files for pypi release. [alexv]
Playing with python sdist and eggs for release on pypi. [alexv]
0.0.2 (2016-01-07)¶
- Changing package version to 0.0.2. [alexv]
- Todo comment for detecting default distro. [alexv]
- Added delayed_import_auto to make workspace discovery explicit. simplified implementation (most methods deal with only one workspace at a time) improved tests. [alexv]
- Fixing tests. [alexv]
- Better workaround for ros_comm issue 711. [alexv]
- Adding check to teardown module, to make sure roscore is really dead. [alexv]
- Fixing tests, no matter the time it takes to start/stop processes. [alexv]
- Adding pyros_test as test dependency. [alexv]
- Adding finally clause to test to cleanup even if tests fail. [alexv]
- Cosmetics. [alexv]
- Adding travis badge. [alexv]
0.0.1 (2016-01-04)¶
- Adding rosnode as testdependency. cosmetics. [alexv]
- Fixing tests shutting down properly. [alexv]
- Fix direct import when ROS is already setup now returning roscore_process when getting master to allow termination. tests still broken. [alexv]
- Adding nosetests command to travis file. [AlexV]
- Adding travis file. [AlexV]
- Renamed ROS_Master to get_master since we return the same as the rospy function. [alexv]
- Improved delayed import to work recursively if needed. [alexv]
- Fixed ordered dict to keep env vars ordering and remove checks that might break this ordering. [alexv]
- Improved __init__ to delay setup and imports. now testing node starting. moved testpkg in separate repo. [alexv]
- Adding test for core and launch. added base structure for test pkg. [alexv]
- Addded rospy import test. [alexv]
- First commit, extracted code from pyros. [alexv]
\ Sort by:\ best rated\ newest\ oldest\
\\
Add a comment\ (markup):
\``code``
, \ code blocks:::
and an indented block after blank line