Skip to content

Commit 822c64a

Browse files
committed
implemented power on/off services
1 parent caa542c commit 822c64a

File tree

1 file changed

+60
-7
lines changed

1 file changed

+60
-7
lines changed

Runtime/Scripts/Controllers/Robots/Spot/ZOSpotController.cs

Lines changed: 60 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,11 @@ public class ZOSpotController : ZOROSUnityGameObjectBase {
2424
private TwistMessage _twistMessage = new TwistMessage();
2525
private TwistWithCovarianceStampedMessage _twistPublishMessage = new TwistWithCovarianceStampedMessage();
2626
private ZOROSFakeOdometryPublisher _odomPublisher = null;
27-
private bool IsClaimed {
27+
public bool IsClaimed {
28+
get; set;
29+
} = false;
30+
31+
public bool IsPowered {
2832
get; set;
2933
} = false;
3034

@@ -86,12 +90,13 @@ public override void OnROSBridgeConnected(ZOROSUnityManager rosUnityManager) {
8690
ROSBridgeConnection.Advertise("/odometry/twist", TwistWithCovarianceStampedMessage.Type);
8791

8892
// advertise services
93+
// claim robot
8994
ROSBridgeConnection.AdvertiseService<TriggerServiceRequest>("claim",
9095
TriggerServiceRequest.Type,
9196
(rosBridge, msg, id) => {
9297
TriggerServiceRequest triggerServiceRequest = msg as TriggerServiceRequest;
9398

94-
Debug.Log("INFO: ZOSpotController::TriggerServiceRequest");
99+
Debug.Log("INFO: ZOSpotController::TriggerServiceRequest claim");
95100

96101
if (IsClaimed == true) {
97102
ROSBridgeConnection.ServiceResponse<TriggerServiceResponse>(new TriggerServiceResponse(false, "Already claimed"), "claim", false, id);
@@ -100,22 +105,19 @@ public override void OnROSBridgeConnected(ZOROSUnityManager rosUnityManager) {
100105
IsClaimed = true;
101106
ROSBridgeConnection.ServiceResponse<TriggerServiceResponse>(new TriggerServiceResponse(true, "success"), "claim", false, id);
102107

103-
104108
}
105109

106-
107-
108110
return Task.CompletedTask;
109111

110112
});
111113

112-
// advertise services
114+
// release robot claim
113115
ROSBridgeConnection.AdvertiseService<TriggerServiceRequest>("release",
114116
TriggerServiceRequest.Type,
115117
(rosBridge, msg, id) => {
116118
TriggerServiceRequest triggerServiceRequest = msg as TriggerServiceRequest;
117119

118-
Debug.Log("INFO: ZOSpotController::TriggerServiceRequest");
120+
Debug.Log("INFO: ZOSpotController::TriggerServiceRequest release");
119121

120122
if (IsClaimed == false) {
121123
ROSBridgeConnection.ServiceResponse<TriggerServiceResponse>(new TriggerServiceResponse(false, "Not claimed"), "release", false, id);
@@ -124,10 +126,61 @@ public override void OnROSBridgeConnected(ZOROSUnityManager rosUnityManager) {
124126
IsClaimed = false;
125127
ROSBridgeConnection.ServiceResponse<TriggerServiceResponse>(new TriggerServiceResponse(true, "success"), "release", false, id);
126128

129+
}
130+
131+
return Task.CompletedTask;
132+
133+
});
134+
135+
// power on
136+
ROSBridgeConnection.AdvertiseService<TriggerServiceRequest>("power_on",
137+
TriggerServiceRequest.Type,
138+
(rosBridge, msg, id) => {
139+
TriggerServiceRequest triggerServiceRequest = msg as TriggerServiceRequest;
140+
141+
Debug.Log("INFO: ZOSpotController::TriggerServiceRequest power_on");
142+
143+
if (IsPowered == true) {
144+
ROSBridgeConnection.ServiceResponse<TriggerServiceResponse>(new TriggerServiceResponse(false, "Already powered on"), "power_on", false, id);
145+
146+
} else {
147+
if (IsClaimed == true) {
148+
IsPowered = true;
149+
ROSBridgeConnection.ServiceResponse<TriggerServiceResponse>(new TriggerServiceResponse(true, "success"), "power_on", false, id);
150+
151+
} else { // can't power if not claimed
152+
ROSBridgeConnection.ServiceResponse<TriggerServiceResponse>(new TriggerServiceResponse(false, "Not claimed. Run /claim service"), "power_on", false, id);
153+
154+
}
127155

128156
}
129157

158+
return Task.CompletedTask;
159+
160+
});
161+
162+
// power off
163+
ROSBridgeConnection.AdvertiseService<TriggerServiceRequest>("power_off",
164+
TriggerServiceRequest.Type,
165+
(rosBridge, msg, id) => {
166+
TriggerServiceRequest triggerServiceRequest = msg as TriggerServiceRequest;
167+
168+
Debug.Log("INFO: ZOSpotController::TriggerServiceRequest power_off");
130169

170+
if (IsPowered == false) {
171+
ROSBridgeConnection.ServiceResponse<TriggerServiceResponse>(new TriggerServiceResponse(false, "Already powered off"), "power_off", false, id);
172+
173+
} else {
174+
if (IsClaimed == true) {
175+
IsPowered = false;
176+
ROSBridgeConnection.ServiceResponse<TriggerServiceResponse>(new TriggerServiceResponse(true, "success"), "power_off", false, id);
177+
178+
} else { // can't power if not claimed
179+
ROSBridgeConnection.ServiceResponse<TriggerServiceResponse>(new TriggerServiceResponse(false, "Not claimed. Run /claim service"), "power_on", false, id);
180+
181+
}
182+
183+
}
131184

132185
return Task.CompletedTask;
133186

0 commit comments

Comments
 (0)