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
example of class relations


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
There is a parameter named bSmoothing Control inputs are interpolated if this param set true.
Example robot is BP_PhysicsUR10
reference:
Sensors
example of class relations

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 Overview: Robot and GameMode and Robots
Core
example of class relations

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 Distrubuted 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
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.
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
- 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