17 #ifndef GAZEBO_PHYSICS_ACTOR_HH_ 18 #define GAZEBO_PHYSICS_ACTOR_HH_ 25 #include <ignition/math/Color.hh> 53 public:
unsigned int id;
81 public:
typedef std::map<std::string, common::SkeletonAnimation *>
89 public:
virtual ~
Actor();
93 public:
void Load(sdf::ElementPtr _sdf);
99 const std::map<std::string, std::string> &_skelMap);
102 public:
virtual void Init();
105 public:
virtual void Play();
108 public:
virtual void Stop();
112 public:
virtual bool IsActive()
const;
115 public:
void Update();
118 public:
virtual void Fini();
122 public:
virtual void UpdateParameters(sdf::ElementPtr _sdf);
126 public:
virtual const sdf::ElementPtr GetSDF();
129 public:
void Reset();
136 public:
void SetScriptTime(
const double _time);
142 public:
double ScriptTime()
const;
169 public:
void ResetCustomTrajectory();
175 public:
virtual bool GetSelfCollide()
const;
182 public:
virtual void SetSelfCollide(
bool _selfCollide);
188 public:
virtual bool WindMode()
const;
195 public:
virtual void SetWindMode(
const bool _enabled);
202 private:
void AddSphereInertia(
const sdf::ElementPtr &_linkSdf,
203 const ignition::math::Pose3d &_pose,
204 const double _mass,
const double _radius);
212 private:
void AddSphereCollision(
const sdf::ElementPtr &_linkSdf,
213 const std::string &_name,
214 const ignition::math::Pose3d &_pose,
215 const double _radius);
223 private:
void AddBoxCollision(
const sdf::ElementPtr &_linkSdf,
224 const std::string &_name,
225 const ignition::math::Pose3d &_pose,
226 const ignition::math::Vector3d &_size);
235 private:
void AddSphereVisual(
const sdf::ElementPtr &_linkSdf,
236 const std::string &_name,
237 const ignition::math::Pose3d &_pose,
const double _radius,
238 const std::string &_material,
239 const ignition::math::Color &_ambient);
248 private:
void AddBoxVisual(
const sdf::ElementPtr &_linkSdf,
249 const std::string &_name,
250 const ignition::math::Pose3d &_pose,
251 const ignition::math::Vector3d &_size,
252 const std::string &_material,
253 const ignition::math::Color &_ambient);
259 private:
void AddActorVisual(
const sdf::ElementPtr &_linkSdf,
260 const std::string &_name,
261 const ignition::math::Pose3d &_pose);
267 private:
bool LoadSkin(sdf::ElementPtr _sdf);
274 private:
void LoadAnimation(sdf::ElementPtr _sdf);
278 private:
void LoadScript(sdf::ElementPtr _sdf);
285 private:
void SetPose(
286 std::map<std::string, ignition::math::Matrix4d> _frame,
287 std::map<std::string, std::string> _skelMap,
331 protected: std::map<unsigned int, common::PoseAnimation *>
trajectories;
353 protected: std::map<std::string, std::map<std::string, std::string> >
383 private:
double scriptTime;
390 private: std::unique_ptr<ActorPrivate> dataPtr;
transport::PublisherPtr bonePosePub
Publisher to send bone info.
Definition: Actor.hh:379
A 3D mesh.
Definition: Mesh.hh:42
boost::shared_ptr< Link > LinkPtr
Definition: PhysicsTypes.hh:110
A skeleton.
Definition: Skeleton.hh:52
Forward declarations for the common classes.
Definition: Animation.hh:26
double startTime
Start time of this keyframe within the trajectory, in seconds.
Definition: Actor.hh:63
ignition::math::Vector3d lastPos
Last position of the actor.
Definition: Actor.hh:364
bool loop
True if the animation should loop.
Definition: Actor.hh:310
std::vector< TrajectoryInfo > trajInfo
A vector of trajectory information, which contains information such as their durations, uniquely identifiable by their IDs.
Definition: Actor.hh:337
Actor class enables GPU based mesh model / skeleton scriptable animation.
Definition: Actor.hh:78
boost::shared_ptr< Publisher > PublisherPtr
Definition: TransportTypes.hh:49
unsigned int id
ID of the trajectory.
Definition: Actor.hh:53
std::shared_ptr< TrajectoryInfo > TrajectoryInfoPtr
Definition: PhysicsTypes.hh:102
double scriptLength
Total time length of the script, in seconds.
Definition: Actor.hh:307
std::string skinFile
Filename for the skin.
Definition: Actor.hh:297
std::map< unsigned int, common::PoseAnimation * > trajectories
Map of all the trajectories (pose animations) and their indices.
Definition: Actor.hh:331
A model is a collection of links, joints, and plugins.
Definition: Model.hh:59
SkeletonAnimation_M skelAnimation
Map of skeleton animations, indexed by their names.
Definition: Actor.hh:343
uint32_t visualId
ID for the visual representing the skin.
Definition: Actor.hh:376
Information about a trajectory for an Actor.
Definition: Actor.hh:47
double endTime
End time of this keyframe within the trajectory, in seconds.
Definition: Actor.hh:66
double duration
Duration of this keyframe in seconds.
Definition: Actor.hh:60
std::string visualName
Name of the visual representing the skin.
Definition: Actor.hh:373
bool translated
True if the trajectory is translated.
Definition: Actor.hh:69
std::map< std::string, std::map< std::string, std::string > > skelNodesMap
Skeleton to node map:
Definition: Actor.hh:354
bool autoStart
True if the actor should start running automatically, otherwise it will only start once Play is calle...
Definition: Actor.hh:317
std::map< std::string, common::SkeletonAnimation * > SkeletonAnimation_M
Typedef the skeleton animation map, indexed by their names.
Definition: Actor.hh:82
LinkPtr mainLink
Pointer to the actor's canonical link.
Definition: Actor.hh:320
GAZEBO_VISIBLE void Init(google::protobuf::Message &_message, const std::string &_id="")
Initialize a message.
double skinScale
Scaling factor to apply to the skin.
Definition: Actor.hh:300
double pathLength
Length of the actor's path.
Definition: Actor.hh:367
bool active
True if the actor is being updated.
Definition: Actor.hh:313
unsigned int lastTraj
Id of the last trajectory.
Definition: Actor.hh:370
common
Definition: FuelModelDatabase.hh:37
common::Time prevFrameTime
Time of the previous frame.
Definition: Actor.hh:323
common::Time playStartTime
Time when the animation was started.
Definition: Actor.hh:326
double startDelay
Time to wait before starting the script.
Definition: Actor.hh:304
std::string type
Type of trajectory.
Definition: Actor.hh:57
std::map< std::string, bool > interpolateX
Map of animation types (the same name as in skelAnimation and skelNodesMap) and whether they should b...
Definition: Actor.hh:361
boost::shared_ptr< Base > BasePtr
Definition: PhysicsTypes.hh:78
A Time class, can be used to hold wall- or sim-time.
Definition: Time.hh:47