| Home | Trees | Indices | Help |
|---|
|
|
1 #!/usr/bin/env python
2 # Software License Agreement (BSD License)
3 #
4 # Copyright (c) 2010, Willow Garage, Inc.
5 # All rights reserved.
6 #
7 # Redistribution and use in source and binary forms, with or without
8 # modification, are permitted provided that the following conditions
9 # are met:
10 #
11 # * Redistributions of source code must retain the above copyright
12 # notice, this list of conditions and the following disclaimer.
13 # * Redistributions in binary form must reproduce the above
14 # copyright notice, this list of conditions and the following
15 # disclaimer in the documentation and/or other materials provided
16 # with the distribution.
17 # * Neither the name of Willow Garage, Inc. nor the names of its
18 # contributors may be used to endorse or promote products derived
19 # from this software without specific prior written permission.
20 #
21 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24 # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25 # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
27 # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31 # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32 # POSSIBILITY OF SUCH DAMAGE.
33 #
34 # Revision $Id: __init__.py 11676 2010-10-22 02:06:13Z kwc $
35 """
36 ROS Shell (rosh).
37
38 Higher-level, interactive scripting environment for ROS.
39 """
40
41 from __future__ import with_statement
42 import roslib; roslib.load_manifest('rosh')
43
44 import os
45 import sys
46
47 import roslib.packages
48 import roslib.rosenv
49
50 # declare shell globals
51
52 # These are initialized by rosh.impl.ros_graph but declared here due
53 # to get_*() accessors
54 nodes = topics = services = parameters = msg = srv = None
55
56 # - by default, all publishers latch
57 latching = True
58
59 import rosh.plugin
60 import rosh.impl.ros_packages
61 import rosh.impl.ros_graph
62 import rosh.impl.ipy
63 import rosh.impl.namespace
64
65 from rosh.impl.namespace import rostype, info
66 from rosh.impl.show import show
67 from rosh.impl.props import props
68
69 # NOTE: this shadows the rosparam module. Is this an issue?
70 from rosh.impl.param import rosparam, rosparam_str
71
72 # client symbols
73 from rosh.impl.exceptions import ROSHException
74 from rosh.impl.library import findros
75 from rosh.impl.bagy import Bagy, MapBagy
76 from rosh.impl.bag import Bag
77
78 from rosh.impl.service import Service
79 # from roslaunch.core import Node
80
82 if hasattr(obj, '_kill'):
83 obj._kill()
84 elif type(obj) in (list, tuple):
85 for x in obj:
86 kill(x)
87 else:
88 raise ValueError("Not a kill-able object")
89
91 """
92 Load plugin. This loads the plugin into the rosh global symbol
93 table. If globals_ is specified, plugin symbols will also be
94 loaded into the provided dictionary. Common usage is::
95
96 load_plugin('plugin_name', globals())
97
98 @param globals_: global symbol table to additionally load plugin to.
99 @type globals_: dict
100 """
101 rosh.plugin.load_plugin(name, _plugin_context, globals_)
102
103 _plugin_context = None
105 return _plugin_context
106
108 """
109 @return: True if ok to keep executing, False if script should exit.
110 """
111 return rosh.impl.ros_graph.ok()
112
114 # context is the heart of the rosh namespace logic
115 global _ctx, _rosh_lock
116
117 _ctx = rosh.impl.namespace.Context()
118
119 import threading
120 _rosh_lock = threading.RLock()
121
122 # plugin context is the loading mechanism for ROSH plugins
123 global _plugin_context
124 _plugin_context = rosh.plugin.PluginContext(globals(), _ctx, _rosh_lock)
125
126 # load symbols for ROS packages layer
127 rosh.impl.ros_packages.load_rosh_plugin('rosh.impl.ros_packages', _plugin_context)
128
129 # load symbols for ROS graph layer. Note: graph layer and package
130 # layer are coupled by both msg/srv and roslaunch, which makes
131 # separating rosh less than useful right now.
132 rosh.impl.ros_graph.load_rosh_plugin('rosh.impl.ros_graph', _plugin_context)
133
134 # initialize IPython Magic
135 rosh.impl.ipy.ipy_magic_init()
136
137 # initialize privates
138
139 # lock for member/global initialization
140 _rosh_lock = None
141 # ROSH shared context
142 ctx = None
143
| Home | Trees | Indices | Help |
|---|
| Generated by Epydoc 3.0.1 on Thu Jan 2 11:54:36 2014 | http://epydoc.sourceforge.net |