Components and main C++ classes =============================== Overview and main C++ classes for components. Please check detail explanation of those class and other classes in `C++ Documentation `_ Drives ------ | Drives provides feature to control robot. | Custom robot movment class should be created as child class of *RobotVehicleMovementComponent* | Custom joint class should be created as child class of *RRJointComponent* **example of class relations** .. image:: doxygen_generated/html/dd/d32/class_u_differential_drive_component__inherit__graph.png .. image:: doxygen_generated/html/db/dc5/class_u_r_r_joint_component__inherit__graph.png **main C++ classes** - MoveComponent - `URobotVehicleMovementComponent `_ Base Robot vehicle movement class, which is used as part of `ARRBaseRobot `_ and is controled by `ROS 2 Twist Msg `_ via URRRobotROS2Interface. This moves robot without considering physics and publish odometry. This supports adapting the robot pose to floor complex surfaces, and following moving platforms such as elevators. Example robots are `BP_TurtlebotBurgerVehicle `_ and `BP_TurtlebotWaffleVehicle `_. - `UDifferentialDriveComponent `_ Simulate differential drive with 2 wheels considering physics. Example robots are `BP_TurtlebotBurger `_ and `BP_TurtlebotWaffle `_. - JointComponent - `URRJointComponent `_ Base Joint class which is used as part of `ARRBaseRobot `_ and is controlled by `ROS 2 JointState Msg `_ via `URRRobotROS2Interface `_ - `URRKinematicJointComponent `_ Kinematics Joint Component which has pose and velocity control interface. Joint are teleported with maximum speed with every tick. Example robot is `BP_KinematicSimpleArm `_ - `URRPhysicsJointComponent `_ Physics Joint Component which has UPhysicsConstraintComponent and pose/velocity control interface. Control inputs are passed to following method of UPhysicsConstraintComponent - `SetLinearPositionTarget `_ - `SetLinearVelocityTarget `_ - `SetAngularOrientationTarget `_ - `SetAngularVelocityTarget `_ There is a parameter named `bSmoothing `_ Control inputs are interpolated if this param set true. Example robot is `BP_PhysicsUR10 `_ reference: - `UPhysicsConstraintComponent `_ - `Constraints User Guide `_ Sensors ------- | Sensor classes which can be used as stand alone actor or component of Robot. | *RRROS2Component* class is designed to used as part of robot. | *RRROS2Actor* class is designed to used as stand alone actor and ROS node. **example of class relations** .. image:: doxygen_generated/html/dd/da7/class_a_r_r_r_o_s2_camera_actor__coll__graph.png **main C++ classes** - `URRROS2BaseSensorComponent `_ Base ROS 2 Sensor Component class. Other sensors class should inherit from this class. Uses BaseSensorPublisher class to publish ROS 2 msg. - `URRROS2CameraComponent `_ ROS 2 Camera component, which uses USceneCaptureComponent2D and publishes `ROS 2 Image Msg `_ - `ARRROS2CameraActor `_ Standalone camera actor which can be placed in the level with URRROS2CameraComponent. - `URR2DLidarComponent `_ ROS 2 2D Lidar component, which publishes `ROS 2 LaserScan Msg `_ - `URR3DLidarComponent `_ ROS 2 3D Lidar component, which publishes `ROS 2 PointCloud2 Msg `_ **main Blueprint classes classes** - BP_Lidar_* : Set parameters for specific lidar products. Robots ------ Please check :doc:`overview` and :doc:`robots` Core ---- | Core has base classes which are directly or indirectly used by other components in RapyutaSimulationPlugins Plugins. | Core also has util classes as well. **example of class relations** .. image:: doxygen_generated/html/de/d5e/class_a_r_r_r_o_s2_game_mode__coll__graph.png **main C++ classes(todo)** - Game objects - `ARRROS2GameMode `_ Basic GameMode which provides basic ROS 2 interfaces such as clock publisher and spawn services. - `URRLimitRTFFixedSizeCustomTimeStep `_ Controls simulation with fixed timestep and limiting RTF(Real Time Factor). This is child class of `UEngineCustomTimeStep `_ - Utils - `URRConversionUtils `_ Data Conversion between ROS and UE. m <-> cm and Left handed <-> Right handed. - `URRGeneralUtils `_ Other utils which do not belong to other utils. - Network(Pleae check :doc:`distributed_simulation`) - `ARRNetworkGameMode `_ Provides feature to post login procesure for ARRNetworkPlayerController. - `ARRNetworkPlayerController `_ Provides functionality for client-server such as sync clock, RPC call to sync robot movement and create ROS 2 Node in the each clients. Tools ----- | Offline and runtime tools. | *URRROS2Publisher* class is publisher of a specific msg type or purpose. Child class of `UROS2Publisher `_. **main C++ classes** - `URRROS2SimulationstateClient `_ Provide spawn/delete/attach/set/get ROS 2 interfaces. Typically this class is initialized from GameMode. - `ASimulationState `_ Has implementation of spawn/delete/attach/set/get ROS 2 interfaces. Communicate with URRROS2SimulationstateClient to execute manipulation. - `URRROS2ClockPublisher `_ Publish /clock topic. Typically this class is initialized from GameMode. - `OccupancyMapGenerator `_ Generate 2D occupancy map for navigation/localization. - `URRROS2BaseSensorPublisher `_ Base Sensor Publisher class. Other sensor publisher class should inherit from this class. Other Experimentals ------------------- - General - `ARRGameMode `_: GameMode with asset loading and scene - `ARRBaseActor `_: Base actor class for all Rapyuta Sim actors which has pointer to RRGame* objects and ARRActorCommon. - `URRCoreUtils `_: todo - Asset Loading This is used to load asset at runtime as well. This is designed to create/spawn robot asset dynamically. - `URRGameSingleton `_: GameSingleton with Asset loading. - Scene(for Data Generation) Scene is the concept to separate same level into multiple areas. Scnes has SceneDirector, SceneInstance, RRGamePlayer and URRActorCommon and mainly used for data generation. - `ARRSceneDirector `_: - `URRActorCommon `_: Common Actor shared among actors in the specific scene. - `ARRGamePlayer `_: Player Controller with camera for Data generation app - `ARRGameState `_: GameState for Data Generation. - Mesh MeshComponent with utils to be used for Asset loading and data generation. - `ARRMeshActor `_: Mesh actor with list of `UMeshComponent `_ - `URRStaticMeshComponent `_ - `URRProceduralMeshComponent `_ - Robot - Skeletal Turtlebot3: Physics-enabled skeletal mesh component-based turtlebot3 robots of types: - BallCasterSphereWheeled : With ball caster sphere wheel - ConvexWheeled : Wheels have convex-hull collision - SphereWheeled : Wheels have sphere collision - StaticMeshConstrained : Built from separate static mesh components connected to one another by physics constraints - FullLockConstrained : All physics constraints are locked - WheeledVehicle : Utilize SimpleWheeledVehicleMovement - SkeletalTurtlebot3Examples level: Have all example skeletal robots being put to automatically move forward upon Play