zoukankan      html  css  js  c++  java
  • Gazebo 机器人仿真流程之 WorldPrivate 类

    在 Gazebo 中,World 类可以认为是场景容器,包含了仿真场景中的所有对象。其中,绝大多数成员变量以 WorldPrivate 类的形式存放,参见 gazebo/gazebo/physics/WorldPrivate.hh


    WorldPrivate 类中,则主要定义了仿真场景中所需包含的对象、数据等信息。主要成员变量有:

    (1)物理引擎

    /// rief Pointer the physics engine.
    public: PhysicsEnginePtr physicsEngine;
    

    (2)元素/对象根节点

    /// rief The root of all entities in the world.
    public: BasePtr rootElement;
    

    (3)仿真相关的时间、标志位等

    /// rief thread in which the world is updated.
    public: std::thread *thread;
    
    /// rief True to stop the world from running.
    public: bool stop;
    
    /// rief Name of the world.
    public: std::string name;
    
    /// rief Current simulation time.
    public: common::Time simTime;
    
    /// rief Amount of time simulation has been paused.
    public: common::Time pauseTime;
    
    /// rief Clock time when simulation was started.
    public: common::Time startTime;
    
    /// rief True if simulation is paused.
    public: bool pause;
    
    /// rief Number of steps in increment by.
    public: int stepInc;
    

    (4)事件链

    /// rief All the event connections.
    public: event::Connection_V connections;
    

    (5)信息相关,订阅/发布/信息

    /// rief Transportation node.
    public: transport::NodePtr node;
    
    /// rief Publisher for world statistics messages.
    public: transport::PublisherPtr statPub;
    
    /// rief Publisher for request response messages.
    public: transport::PublisherPtr responsePub;
    
    /// rief Publisher for model messages.
    public: transport::PublisherPtr modelPub;
    
    /// rief Publisher for gui messages.
    public: transport::PublisherPtr guiPub;
    
    /// rief Publisher for light modify messages.
    public: transport::PublisherPtr lightPub;
    
    /// rief Publisher for light factory messages.
    public: transport::PublisherPtr lightFactoryPub;
    
    /// rief Publisher for pose messages.
    public: transport::PublisherPtr posePub;
    
    /// rief Publisher for local pose messages.
    public: transport::PublisherPtr poseLocalPub;
    
    /// rief Subscriber to world control messages.
    public: transport::SubscriberPtr controlSub;
    
    /// rief Subscriber to log playback control messages.
    public: transport::SubscriberPtr playbackControlSub;
    
    /// rief Subscriber to factory messages.
    public: transport::SubscriberPtr factorySub;
    
    /// rief Subscriber to joint messages.
    public: transport::SubscriberPtr jointSub;
    
    /// rief Subscriber to light messages.
    public: transport::SubscriberPtr lightSub;
    
    /// rief Subscriber to light factory messages.
    public: transport::SubscriberPtr lightFactorySub;
    
    /// rief Subscriber to light modify messages.
    public: transport::SubscriberPtr lightModifySub;
    
    /// rief Subscriber to model messages.
    public: transport::SubscriberPtr modelSub;
    
    /// rief Subscriber to request messages.
    public: transport::SubscriberPtr requestSub;
    
    /// rief Outgoing world statistics message.
    public: msgs::WorldStatistics worldStatsMsg;
    
    /// rief Outgoing scene message.
    public: msgs::Scene sceneMsg;
    

    (6)模型更新函数

    /// rief Function pointer to the model update function.
    public: void (World::*modelUpdateFunc)();
    

    (7)插件类

    /// rief All the plugins.
    public: std::vector<WorldPluginPtr> plugins;
    

    (8)

    /// rief List of entities to delete.
    public: std::list<std::string> deleteEntity;
    

    (9)Ray Test

    /// rief Ray used to test for collisions when placing entities.
    public: RayShapePtr testRay;
    

    (10)场景中对象的状态

    /// rief Alternating buffer of states.
    public: std::deque<WorldState> states[2];
    
    /// rief Keep track of current state buffer being updated
    public: int currentStateBuffer;
    
    /// rief Buffer of prev states
    public: WorldState prevStates[2];
    
    /// rief Previous unfiltered state. Used for determining insertions
    /// and deletions
    public: WorldState prevUnfilteredState;
    
    /// rief Int used to toggle between prevStates
    public: int stateToggle;
    

    (11)模型对象

    /// rief A cached list of models. This is here for performance.
    public: Model_V models;
    
    /// rief A cached list of lights.
    public: Light_V lights;
    

    (12)道路类

    /// rief A list of roads in the world
    public: std::vector<RoadPtr> roads;
    

    (13)状态更新回调函数

    /// rief Callback function intended to call the scene with updated Poses
    public: UpdateScenePosesFunc updateScenePoses;
    

    其中,还有一些对于理解仿真流程和逻辑次要的变量,这里并没有全部列举

  • 相关阅读:
    ExecuteScalar requires the command to have a transaction when the connection assigned to the command is in a pending
    如何从vss中分离程序
    String or binary data would be truncated
    the pop3 service failed to retrieve authentication type and cannot continue
    The POP3 service failed to start because
    IIS Error he system cannot find the file specified _找不到页面
    pku2575Jolly Jumpers
    pku2940Wine Trading in Gergovia
    pku3219二项式系数
    pku1029false coin
  • 原文地址:https://www.cnblogs.com/wghou09/p/12726910.html
Copyright © 2011-2022 走看看