RapyutaSimulationPlugins
|
Base Robot ROS 2 interface class. More...
#include <RRRobotROS2Interface.h>
Public Member Functions | |
virtual bool | IsSupportedForNetworking () const override |
void | GetLifetimeReplicatedProps (TArray< FLifetimeProperty > &OutLifetimeProps) const override |
Returns the properties used for network replication, this needs to be overridden by all actor classes with native. More... | |
virtual void | Initialize (ARRBaseRobot *InRobot) |
Initialize robot's ROS 2 interface by calling InitRobotROS2Node, InitPublishers, InitSubscriptions and ARRBaseRobot::InitSensors. More... | |
void | BPInitialize () |
AdditionalInitialization implemented in BP. More... | |
virtual void | DeInitialize () |
DeInitialize robot's ROS 2 interface by stopping publisher. More... | |
void | InitRobotROS2Node (ARRBaseRobot *InRobot) |
Spawn ROS2Node and initialize it. More... | |
virtual void | JointCmdCallback (const UROS2GenericMsg *Msg) |
Move robot joints by setting position or velocity to Pawn(=Robot) with given ROS 2 msg. More... | |
void | UpdateJointState (UROS2GenericMsg *InMessage) |
Update Joint State msg. More... | |
virtual void | SetupROSParams () |
Setup ROS Params, overridable by child classes to config custom ROS 2 Interface's params. More... | |
void | BPSetupROSParams () |
Setup ROS params called after SetupROSParams. override by BP child class to config custom ROS 2 Interface's params. More... | |
void | SetupROSParamsAll () |
Call SetupROSParams and BPSetupROSParams. More... | |
virtual bool | InitPublishers () |
Initialize non sensor basic publishers such as odometry. More... | |
virtual void | StopPublishers () |
Stop all publishers. More... | |
virtual bool | InitSubscriptions () |
Initialize subscriptions for cmd_vel & joint_states topics. More... | |
virtual bool | InitServiceClients () |
Initialize service clients. More... | |
virtual bool | InitServiceServers () |
Initialize service servers. More... | |
virtual bool | InitActionClients () |
Initialize action clients. More... | |
virtual bool | InitActionServers () |
Initialize action servers. More... | |
virtual void | MovementCallback (const UROS2GenericMsg *Msg) |
MoveRobot by setting velocity to Pawn(=Robot) with given ROS 2 msg. More... | |
Public Attributes | |
TObjectPtr< ARRBaseRobot > | Robot = nullptr |
Target robot. More... | |
TObjectPtr< UROS2NodeComponent > | RobotROS2Node = nullptr |
ROS 2 node of this interface created by InitRobotROS2Node. More... | |
TObjectPtr< UROS2Spawnable > | ROSSpawnParameters = nullptr |
ROS2SpawnParameters which is created when robot is spawn from /SpawnEntity srv provided by ASimulationState. More... | |
TObjectPtr< URRBaseOdomComponent > | OdomComponent = nullptr |
Odometry source. More... | |
bool | bPublishOdom = true |
bool | bPublishOdomTf = false |
float | OdomPublicationFrequencyHz = 30 |
FString | CmdVelTopicName = TEXT("cmd_vel") |
Movement command topic. If empty is given, subscriber will not be initiated. More... | |
FString | JointCmdTopicName = TEXT("ue_joint_commands") |
Joint control command topic. If empty is given, subscriber will not be initiated. More... | |
TObjectPtr< UROS2Publisher > | JointStatePublisher = nullptr |
JointState Publisher. More... | |
float | JointStatePublicationFrequencyHz = 30.f |
Joint control command topic. If empty is given, subscriber will not be initiated. More... | |
FString | JointStateTopicName = TEXT("ue_joint_states") |
Joint state topic. More... | |
bool | bWarnAboutMissingLink = true |
TObjectPtr< URRROS2TFsPublisher > | JointsTFPublisher = nullptr |
bool | bPublishJointTf = false |
float | JointTfPublicationFrequencyHz = 1.f |
TObjectPtr< URRROS2OdomPublisher > | OdomPublisher = nullptr |
Odom publisher. More... | |
TMap< FString, UROS2Publisher * > | Publishers |
You can add your publishers here to ask ROS2Interface to manage. More... | |
TMap< FString, UROS2Subscriber * > | Subscribers |
You can add your subscribers here to ask ROS2Interface to manage. More... | |
TMap< FString, UROS2ServiceClient * > | ServiceClients |
You can add your publishers here to ask ROS2Interface to manage. More... | |
TMap< FString, UROS2ServiceServer * > | ServiceServers |
You can add your publishers here to ask ROS2Interface to manage. More... | |
TMap< FString, UROS2ActionClient * > | ActionClients |
You can add your publishers here to ask ROS2Interface to manage. More... | |
TMap< FString, UROS2ActionServer * > | ActionServers |
You can add your publishers here to ask ROS2Interface to manage. More... | |
Protected Member Functions | |
template<typename TROS2Message , typename TROS2MessageData , typename TRobot , typename TRobotMemFuncType = void (TRobot::*)(const TROS2MessageData&)> | |
FORCEINLINE void | OnMessageReceived (const TROS2Message *InMsg, const TRobotMemFuncType &InMemFunc) |
template<typename TROS2Message , typename TROS2MessageData , typename TRobot > | |
FORCEINLINE void | OnMessageReceivedFunc (const TROS2Message *InMsg, const TFunction< void(const TROS2MessageData &)> &InFunc) |
template<typename TService , typename TServiceRequest > | |
void | MakeServiceRequest (const FName &InServiceName, const TServiceRequest &InRequest) |
Protected Attributes | |
TMap< FName, UROS2ServiceClient * > | ServiceClientList |
Base Robot ROS 2 interface class.
This class owns ROS2Node and controls ROS 2 interfaces of the Robot, by
Please create child class of this class to custom ROS2Interface which have your own ROS2Interfaces.
void URRRobotROS2Interface::BPInitialize | ( | ) |
AdditionalInitialization implemented in BP.
Child BP class can use this method to add initialization behaviour
void URRRobotROS2Interface::BPSetupROSParams | ( | ) |
Setup ROS params called after SetupROSParams. override by BP child class to config custom ROS 2 Interface's params.
|
virtual |
DeInitialize robot's ROS 2 interface by stopping publisher.
InRobot |
|
override |
Returns the properties used for network replication, this needs to be overridden by all actor classes with native.
replicated properties
OutLifetimeProps | Output lifetime properties |
|
virtual |
Initialize action clients.
Overidden in child robot ROS 2 interface classes for specialized action clients.
|
virtual |
Initialize action servers.
Overidden in child robot ROS 2 interface classes for specialized action servers.
|
virtual |
Initialize robot's ROS 2 interface by calling InitRobotROS2Node, InitPublishers, InitSubscriptions and ARRBaseRobot::InitSensors.
This method is mainly used by #ARRBaseoRbotROSController via ARRBaseRobot::InitROS2Interface.
InRobot |
|
virtual |
Initialize non sensor basic publishers such as odometry.
Overidden in child robot ROS 2 interface classes for specialized publishers.
void URRRobotROS2Interface::InitRobotROS2Node | ( | ARRBaseRobot * | InRobot | ) |
Spawn ROS2Node and initialize it.
InPawn |
|
virtual |
Initialize service clients.
Overidden in child robot ROS 2 interface classes for specialized services clients.
|
virtual |
Initialize service servers.
Overidden in child robot ROS 2 interface classes for specialized services servers.
|
virtual |
Initialize subscriptions for cmd_vel & joint_states topics.
Overidden in child robot ROS 2 interface classes for specialized topic subscriptions.
|
inlineoverridevirtual |
|
virtual |
Move robot joints by setting position or velocity to Pawn(=Robot) with given ROS 2 msg.
Supports only 1 DOF joints.
Effort control is not supported.
|
inlineprotected |
|
virtual |
MoveRobot by setting velocity to Pawn(=Robot) with given ROS 2 msg.
Typically this receive Twist msg to move robot.
|
inlineprotected |
|
inlineprotected |
|
inlinevirtual |
Setup ROS Params, overridable by child classes to config custom ROS 2 Interface's params.
Reimplemented in URRTurtlebotROS2Interface.
|
inline |
|
virtual |
Stop all publishers.
void URRRobotROS2Interface::UpdateJointState | ( | UROS2GenericMsg * | InMessage | ) |
TMap<FString, UROS2ActionClient*> URRRobotROS2Interface::ActionClients |
You can add your publishers here to ask ROS2Interface to manage.
Other option is to create child class to overwrite each method.
TMap<FString, UROS2ActionServer*> URRRobotROS2Interface::ActionServers |
You can add your publishers here to ask ROS2Interface to manage.
Other option is to create child class to overwrite each method.
bool URRRobotROS2Interface::bPublishJointTf = false |
bool URRRobotROS2Interface::bPublishOdom = true |
bool URRRobotROS2Interface::bPublishOdomTf = false |
bool URRRobotROS2Interface::bWarnAboutMissingLink = true |
FString URRRobotROS2Interface::CmdVelTopicName = TEXT("cmd_vel") |
Movement command topic. If empty is given, subscriber will not be initiated.
FString URRRobotROS2Interface::JointCmdTopicName = TEXT("ue_joint_commands") |
Joint control command topic. If empty is given, subscriber will not be initiated.
float URRRobotROS2Interface::JointStatePublicationFrequencyHz = 30.f |
Joint control command topic. If empty is given, subscriber will not be initiated.
TObjectPtr<UROS2Publisher> URRRobotROS2Interface::JointStatePublisher = nullptr |
JointState Publisher.
FString URRRobotROS2Interface::JointStateTopicName = TEXT("ue_joint_states") |
Joint state topic.
TObjectPtr<URRROS2TFsPublisher> URRRobotROS2Interface::JointsTFPublisher = nullptr |
float URRRobotROS2Interface::JointTfPublicationFrequencyHz = 1.f |
TObjectPtr<URRBaseOdomComponent> URRRobotROS2Interface::OdomComponent = nullptr |
Odometry source.
float URRRobotROS2Interface::OdomPublicationFrequencyHz = 30 |
TObjectPtr<URRROS2OdomPublisher> URRRobotROS2Interface::OdomPublisher = nullptr |
Odom publisher.
TMap<FString, UROS2Publisher*> URRRobotROS2Interface::Publishers |
You can add your publishers here to ask ROS2Interface to manage.
Other option is to create child class to overwrite each method.
TObjectPtr<ARRBaseRobot> URRRobotROS2Interface::Robot = nullptr |
Target robot.
TObjectPtr<UROS2NodeComponent> URRRobotROS2Interface::RobotROS2Node = nullptr |
ROS 2 node of this interface created by InitRobotROS2Node.
TObjectPtr<UROS2Spawnable> URRRobotROS2Interface::ROSSpawnParameters = nullptr |
ROS2SpawnParameters which is created when robot is spawn from /SpawnEntity srv provided by ASimulationState.
|
protected |
TMap<FString, UROS2ServiceClient*> URRRobotROS2Interface::ServiceClients |
You can add your publishers here to ask ROS2Interface to manage.
Other option is to create child class to overwrite each method.
TMap<FString, UROS2ServiceServer*> URRRobotROS2Interface::ServiceServers |
You can add your publishers here to ask ROS2Interface to manage.
Other option is to create child class to overwrite each method.
TMap<FString, UROS2Subscriber*> URRRobotROS2Interface::Subscribers |
You can add your subscribers here to ask ROS2Interface to manage.
Other option is to create child class to overwrite each method.