Files
2026-03-22 03:21:45 +02:00

2 lines
2.6 KiB
JavaScript
Executable File

#!/usr/bin/env node
"use strict";var t=require("ws"),s={start:function(t,s){this.state=null,this.indexed=!1,this.holdOffOnLogging=!0,this._start(t,s)},_start:function(t,s){var e=this,o=t+":8282";try{this.indexed=!1,this.state_socket=this._setupStateSocket(o),this.state_socket.on("close",function(){e.state_socket=null}),this.state_socket.on("error",function(){console.log("Couldn't connect to body service's state websocket"),process.exit(1)}),this.command_socket=this._setupCommandSocket(o),this.command_socket.on("close",function(){e.command_socket=null}),this.command_socket.on("error",function(){console.log("Couldn't connect to body service's command websocket"),process.exit(1)})}catch(n){console.log("ERROROROROR: "+n)}setTimeout(function(){e.holdOffOnLogging=!1,e.indexed?(console.log("\nJibo was already indexed."),e._shutdown(s)):(process.stdout.write("Indexing Jibo. Hold onto your bot, he's going to be spinning..."),e._startSpinningJibo(e.command_socket),e.indexCheckInterval=setInterval(function(){e.indexed&&(console.log("Finished."),e._shutdown(s))},100))},500)},_shutdown:function(t){process.exit(),t()},_setupStateSocket:function(s){var e=this,o=new t("ws://"+s+"/axis_state");return o.on("open",function(){}),o.on("message",function(t){var s,o=JSON.parse(t);e.state=o,null===e.state_socket,s="pelvis "+e._statusToStr(o.pelvis.status),s+=" - ",s+="torso "+e._statusToStr(o.torso.status),s+=" - ",s+="neck "+e._statusToStr(o.neck.status),e.holdOffOnLogging===!1&&process.stdout.write("."),1&o.pelvis.status&&1&o.torso.status&&1&o.neck.status&&(e.indexed=!0)}),o},_setupCommandSocket:function(s){var e=new t("ws://"+s+"/axis_command");return e.on("open",function(){}),e.on("message",function(t){console.log("Got command message: "+t.data)}),e},_startSpinningJibo:function(s){var e=this;this.spinInterval=setInterval(function(){s.readyState!=t.OPEN&&console.log("error: socket.readyState",s.readyState);var o=e._buildCmd();o&&s.send(o)},50)},_buildCmd:function(){if(null===this.state)return null;var t={mode:4,value:[-1],vel_limit:this.state.pelvis.vel_limit,acc_limit:50,cur_limit:this.state.pelvis.cur_limit},s={mode:4,value:[-1],vel_limit:this.state.torso.vel_limit,acc_limit:50,cur_limit:this.state.torso.cur_limit},e={mode:4,value:[-1],vel_limit:this.state.neck.vel_limit,acc_limit:50,cur_limit:this.state.neck.cur_limit},o={ts:[this.state.ts[0],this.state.ts[1]],pelvis:t,torso:s,neck:e};return JSON.stringify(o)},_statusToStr:function(t){if(0===t)return"none";var s="";return 1&t&&(s+="INDEXED "),2&t&&(s+="ENABLED "),4&t&&(s+="BRAKED "),8&t&&(s+="MOVING "),16&t&&(s+="STALLED "),32&t&&(s+="TIMEOUT "),64&t&&(s+="FAULT "),128&t&&(s+="ABS_INDEXED "),s}};s.start(process.argv[2]);