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;
    

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

  • 相关阅读:
    codeblocks多文件联合编译
    C++顶层const和底层const的区别
    keras failed to create cublas handle:CUBLAS_STATUS_ALLOC_FAILED问题
    Notepad++强大的代码补全和代码提示功能的方法
    PEP8编码风格
    在Maven项目中使用easypoi完成Excel文件上传下载
    Restful风格,使用同一地址,访问不同的方法
    注解@NoRepositoryBean的作用
    注解@MappedSuperclass的作用
    Shiro整合Spring以及权限登陆过滤
  • 原文地址:https://www.cnblogs.com/wghou09/p/12726910.html
Copyright © 2011-2022 走看看