You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
1.1 KiB
C#
36 lines
1.1 KiB
C#
using UnityEngine;
|
|
using Unity.Robotics.ROSTCPConnector;
|
|
using RosMessageTypes.Std;
|
|
|
|
public class ROSRobotResetPosServer : MonoBehaviour
|
|
{
|
|
[SerializeField] private string serviceName = "/unity/trigger_event";
|
|
[SerializeField] public ResetPosition target;
|
|
|
|
void Start()
|
|
{
|
|
// Implement the service handler inside Unity
|
|
ROSConnection.GetOrCreateInstance().ImplementService<TriggerRequest, TriggerResponse>(serviceName, HandleTriggerRequest);
|
|
}
|
|
|
|
private TriggerResponse HandleTriggerRequest(TriggerRequest request)
|
|
{
|
|
// Perform your Unity-side logic here (e.g., reset simulation state)
|
|
bool wasSuccessful = TryExecuteUnityAction();
|
|
string responseMessage = wasSuccessful ? "Robot's position successfully reset" : "Failed to run Unity reset action";
|
|
|
|
// Construct and return the response
|
|
return new TriggerResponse
|
|
{
|
|
success = wasSuccessful,
|
|
message = responseMessage
|
|
};
|
|
}
|
|
|
|
private bool TryExecuteUnityAction()
|
|
{
|
|
target.startRotation = true;
|
|
return true;
|
|
}
|
|
}
|