utils.py
Go to the documentation of this file.
00001 #!/usr/bin/env python
00002 
00003 # Software License Agreement (BSD License)
00004 #
00005 # Copyright (c) 2013, Tokyo Opensource Robotics Kyokai Association
00006 # All rights reserved.
00007 #
00008 # Redistribution and use in source and binary forms, with or without
00009 # modification, are permitted provided that the following conditions
00010 # are met:
00011 #
00012 # * Redistributions of source code must retain the above copyright
00013 # notice, this list of conditions and the following disclaimer.
00014 # * Redistributions in binary form must reproduce the above
00015 # copyright notice, this list of conditions and the following
00016 # disclaimer in the documentation and/or other materials provided
00017 # with the distribution.
00018 # * Neither the name of Tokyo Opensource Robotics Kyokai Association. nor the
00019 # names of its contributors may be used to endorse or promote products
00020 # derived from this software without specific prior written permission.
00021 #
00022 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
00023 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
00024 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
00025 # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
00026 # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
00027 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
00028 # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
00029 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
00030 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
00031 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
00032 # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00033 # POSSIBILITY OF SUCH DAMAGE.
00034 #
00035 # Author: Jonathan Mace, Jihoon Lee, Isaac Isao Saito
00036 
00037 #############################################
00038 # Methods
00039 #############################################
00040 import subprocess
00041 
00042 def get_packages():
00043     '''
00044     Find the names and locations of all ROS packages
00045 
00046     @rtype: {str, str}
00047     @return: name and path of ROS packages
00048     '''
00049     lines = split_words(run_shellcommand('rospack', 'list'))
00050     packages = [{'name': name, 'path': path} for name, path in lines]
00051     return packages
00052 
00053 def run_shellcommand(*args):
00054     '''run the provided command and return its stdout'''
00055     args = sum([(arg if type(arg) == list else [arg]) for arg in args], [])
00056     return subprocess.Popen(args,
00057                             stdout=subprocess.PIPE).communicate()[0].strip()
00058 
00059 def split_words(text):
00060     '''return a list of lines where each line is a list of words'''
00061     return [line.strip().split() for line in text.split('\n')]
00062 


roswww
Author(s): Jonathan Mace, Jihoon Lee
autogenerated on Fri Aug 28 2015 12:45:19