diff --git a/ActiveBOWeb/src/components/RosBar.vue b/ActiveBOWeb/src/components/RosBar.vue index 56bd6a5..37f41ea 100644 --- a/ActiveBOWeb/src/components/RosBar.vue +++ b/ActiveBOWeb/src/components/RosBar.vue @@ -108,11 +108,11 @@ watch(stateCounter.value, (newValue) => { }); // Policy Service -const policy_service = new ROSLIB.Service({ - ros: ros, - name: "/policy_srv", - serviceType: "active_bo_msgs/srv/WeightToPolicy", -}); +// const policy_service = new ROSLIB.Service({ +// ros: ros, +// name: "/policy_srv", +// serviceType: "active_bo_msgs/srv/WeightToPolicy", +// }); // RL Service + Feedback Suscriber const rl_feedback_subscriber = new ROSLIB.Topic({ @@ -126,66 +126,99 @@ rl_feedback_subscriber.subscribe((msg) => { mcstore.setRgbArrays(msg.red, msg.green, msg.blue); }); -const active_rl_eval_sub = new ROSLIB.Topic({ - ros: ros_eval, - name: "/active_rl_eval_request", - messageType: "active_bo_msgs/msg/ActiveRLEval", +// const active_rl_eval_sub = new ROSLIB.Topic({ +// ros: ros_eval, +// name: "/active_rl_eval_request", +// messageType: "active_bo_msgs/msg/ActiveRLEval", +// }); +// +// const pendingRequest = ref(false); +// active_rl_eval_sub.subscribe((msg) => { +// pstore.setPolicy(msg.policy); +// pstore.setWeights(msg.weights); +// pendingRequest.value = true; +// }); +// +// const active_rl_eval_pub = new ROSLIB.Topic({ +// ros: ros_eval, +// name: "/active_rl_eval_response", +// messageType: "active_bo_msgs/msg/ActiveRLEval", +// }); + +// Active RL Eval Service +let active_rl_eval_srv = new ROSLIB.Service({ + ros: ros, + name: "/active_rl_eval_srv", + serviceType: "active_bo_msgs/srv/ActiveRLEval", }); +let currentResponse = null; +let currentServiceId = null; const pendingRequest = ref(false); -active_rl_eval_sub.subscribe((msg) => { - pstore.setPolicy(msg.policy); - pstore.setWeights(msg.weights); + +active_rl_eval_srv.advertise(function (request, response) { + currentResponse = response; + currentServiceId = this.id; pendingRequest.value = true; -}); -const active_rl_eval_pub = new ROSLIB.Topic({ - ros: ros_eval, - name: "/active_rl_eval_response", - messageType: "active_bo_msgs/msg/ActiveRLEval", -}); + pstore.setPolicy(request["old_policy"]); + pstore.setWeights(request["old_weights"]); -const active_eval_response_first = new ROSLIB.Message({ - policy: pstore.policy, - weights: pstore.weights, -}); -console.log(active_eval_response_first); -// active_rl_eval_pub.publish(active_eval_response_first); + console.log(request); -// function sleep(ms) { -// return new Promise((resolve) => setTimeout(resolve, ms)); -// } + return false; +}); watch( () => cstore.getSendWeights, () => { const usr_mode = cstore.getUserMode; - if (usr_mode === "manually") { - const policy_request = new ROSLIB.ServiceRequest({ - weights: pstore.policy, - nr_steps: pstore.weights, - }); - - policy_service.callService(policy_request, function (result) { - pstore.setPolicy(result.policy); - }); - } else if (usr_mode === "active BO") { + // if (usr_mode === "manually") { + // const policy_request = new ROSLIB.ServiceRequest({ + // weights: pstore.policy, + // nr_steps: pstore.weights, + // }); + // + // policy_service.callService(policy_request, function (result) { + // pstore.setPolicy(result.policy); + // }); + // } else + if (usr_mode === "active BO") { if (!pendingRequest.value) { return; } console.log("Button pressed!"); - const active_eval_response = new ROSLIB.Message({ - policy: pstore.policy, - weights: pstore.weights, + // const active_eval_response = new ROSLIB.Message({ + // policy: pstore.policy, + // weights: pstore.weights, + // }); + // + // console.log(active_eval_response); + // + // active_rl_eval_pub.publish(active_eval_response); + // // await sleep(1000); + // console.log("New Policy/ Weights published"); + // pendingRequest.value = false; + + currentResponse["new_policy"] = pstore.getPolicy; + currentResponse["new_weights"] = pstore.getWeights; + + console.log(currentResponse); + + active_rl_eval_srv.ros.callOnConnection({ + op: "service_response", + service: active_rl_eval_srv.name, + values: currentResponse, + id: currentServiceId, + result: true, }); - console.log(active_eval_response); + console.log("Service Responded!"); - active_rl_eval_pub.publish(active_eval_response); - // await sleep(1000); - console.log("New Policy/ Weights published"); // pendingRequest.value = false; + // currentResponse = null; + // currentServiceId = null; } } );