ArrangePlugin.hh
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2014 Open Source Robotics Foundation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16 */
17 
18 #ifndef GAZEBO_PLUGINS_ARRANGEPLUGIN_HH_
19 #define GAZEBO_PLUGINS_ARRANGEPLUGIN_HH_
20 
21 #include <map>
22 #include <memory>
23 #include <string>
24 
25 #include <sdf/sdf.hh>
26 #include <ignition/math/Pose3.hh>
27 #include <ignition/transport/Node.hh>
28 
29 #include <gazebo/common/Plugin.hh>
30 #include <gazebo/transport/transport.hh>
32 #include <gazebo/util/system.hh>
33 #include <gazebo/msgs/msgs.hh>
34 
35 namespace gazebo
36 {
37  class GZ_PLUGIN_VISIBLE ArrangePlugin : public WorldPlugin
38  {
40  public: ArrangePlugin();
41 
43  public: ~ArrangePlugin();
44 
48  public: virtual void Load(physics::WorldPtr _world, sdf::ElementPtr _sdf);
49 
51  public: virtual void Init();
52 
54  public: virtual void Reset();
55 
59  public: bool SetArrangement(const std::string &_arrangement);
60 
62  public: void ArrangementCallback(ConstGzStringPtr &_msg);
63 
66 
68  protected: sdf::ElementPtr sdf;
69 
71  protected: class Object
72  {
75 
77  public: ignition::math::Pose3d pose;
78  };
79  typedef std::shared_ptr<Object> ObjectPtr;
80 
82  typedef std::map<std::string, ObjectPtr> Object_M;
83 
85  protected: Object_M objects;
86 
88  typedef std::map<std::string, ignition::math::Pose3d> Pose_M;
89 
91  typedef std::map<std::string, Pose_M> Arrangement_M;
92 
94  protected: Arrangement_M arrangements;
95 
97  protected: std::string initialArrangementName;
98 
100  protected: std::string currentArrangementName;
101 
103  protected: std::string eventTopicName;
104 
107 
110 
111  // Place ignition::transport objects at the end of this file to
112  // guarantee they are destructed first.
113 
115  protected: ignition::transport::Node nodeIgn;
116  };
117 }
118 #endif
physics::WorldPtr world
World pointer.
Definition: ArrangePlugin.hh:65
boost::shared_ptr< World > WorldPtr
Definition: PhysicsTypes.hh:90
std::string eventTopicName
Topic to listen on for changing arrangments.
Definition: ArrangePlugin.hh:103
Forward declarations for the common classes.
Definition: Animation.hh:26
physics::ModelPtr model
Model pointer.
Definition: ArrangePlugin.hh:74
boost::shared_ptr< Subscriber > SubscriberPtr
Definition: TransportTypes.hh:53
A plugin with access to physics::World.
Definition: Plugin.hh:278
transport::SubscriberPtr sub
Subscriber for listening to changing arrangements.
Definition: ArrangePlugin.hh:109
std::map< std::string, Pose_M > Arrangement_M
Map of strings to Pose_M (arrangement map).
Definition: ArrangePlugin.hh:91
boost::shared_ptr< Node > NodePtr
Definition: TransportTypes.hh:57
Definition: ArrangePlugin.hh:37
default namespace for gazebo
std::map< std::string, ObjectPtr > Object_M
Map of strings to model pointers.
Definition: ArrangePlugin.hh:82
ignition::transport::Node nodeIgn
Ignition node for Gazebo transport.
Definition: ArrangePlugin.hh:115
transport::NodePtr node
Node for Gazebo transport.
Definition: ArrangePlugin.hh:106
std::map< std::string, ignition::math::Pose3d > Pose_M
Map of strings to model poses.
Definition: ArrangePlugin.hh:88
Object_M objects
Collection of models.
Definition: ArrangePlugin.hh:85
Class to store info about each object.
Definition: ArrangePlugin.hh:71
ignition::math::Pose3d pose
Initial object pose.
Definition: ArrangePlugin.hh:77
boost::shared_ptr< Model > ModelPtr
Definition: PhysicsTypes.hh:94
GAZEBO_VISIBLE void Init(google::protobuf::Message &_message, const std::string &_id="")
Initialize a message.
sdf::ElementPtr sdf
SDF pointer.
Definition: ArrangePlugin.hh:68
std::string initialArrangementName
Initial arrangement name.
Definition: ArrangePlugin.hh:97
std::string currentArrangementName
Current arrangement name.
Definition: ArrangePlugin.hh:100
std::shared_ptr< Object > ObjectPtr
Definition: ArrangePlugin.hh:79
Arrangement_M arrangements
Information about arrangements.
Definition: ArrangePlugin.hh:94