// business const Reps = require('./reps.js') const Programs = require('./programs.js') // the program object: real simple, just has a description, and a 'modules' var program = Programs.new('new program') /* ok - robot reads robot joints - robot takes joint angle samples into array like [[t1, t2],[t1, t2],...,[t1,t2]] - robot sends this array to python scripto - python scripto does l1, l2 guesses - robot does forward transform with live [t1, t2] - robot displays forward transform with [t1, t2] */ var link = Programs.loadModuleFromSource(program, './modules/hardware/atkseriallink.js') link.startUp() link.state.log = false Programs.setUI(link, 1050, 150) var mrbotone = Programs.loadModuleFromSource(program, './modules/hardware/atkmrobot.js') mrbotone.route.route = '0,0' mrbotone.state.enc_reverse = true mrbotone.state.enc_offset = 8875 Programs.setUI(mrbotone, 600, 50) var mrbottwo = Programs.loadModuleFromSource(program, './modules/hardware/atkmrobot.js') mrbottwo.state.enc_reverse = true mrbottwo.state.enc_offset = 4000 mrbottwo.route.route = '0,1' Programs.setUI(mrbottwo, 600, 550) var mrbotthree = Programs.loadModuleFromSource(program, './modules/hardware/atkmrobot.js') mrbotthree.route.route = '0,2' mrbotthree.state.enc_reverse = false mrbotthree.state.enc_offset = 1700 Programs.setUI(mrbotthree, 600, 1050) var rbtcanvas = Programs.loadModuleFromSource(program, './modules/ui/robotCanvas.js') Programs.setUI(rbtcanvas, 1500, 1050) Programs.setView(program, { scale: 0.5, translate: [-160, -30], origin: [200, 120] }) var button = Programs.loadModuleFromSource(program, './modules/ui/button.js') var delay = Programs.loadModuleFromSource(program, './modules/util/delay.js') var gate = Programs.loadModuleFromSource(program, './modules/util/gate.js') //delay.outputs.out.attach(gate.inputs.thru) //gate.outputs.out.attach(delay.inputs.thru) Programs.setUI(button, 90, 50) Programs.setUI(delay, 90, 250) Programs.setUI(gate, 90, 400) button.outputs.whammy.attach(mrbotone.inputs.get_pos) button.outputs.whammy.attach(mrbottwo.inputs.get_pos) button.outputs.whammy.attach(mrbotthree.inputs.get_pos) button.outputs.whammy.attach(delay.inputs.thru) delay.outputs.out.attach(gate.inputs.thru) gate.outputs.out.attach(button.inputs.thru) var transform = Programs.loadModuleFromSource(program, './modules/robot/forwardTransform.js') transform.state.lA = 0.37 transform.state.lB = 0.25 Programs.setUI(transform, 1225, 650) var log1 = Programs.loadModuleFromSource(program, './modules/util/log.js') log1.state.prefix = "jnt1:" Programs.setUI(log1, 1500, 50) mrbotone.outputs.pos.attach(log1.inputs.thru) mrbotone.outputs.pos.attach(transform.inputs.theta_A) var log2= Programs.loadModuleFromSource(program, './modules/util/log.js') log2.state.prefix = "jnt2:" Programs.setUI(log2, 1500, 250) mrbottwo.outputs.pos.attach(log2.inputs.thru) mrbottwo.outputs.pos.attach(transform.inputs.theta_B) var log3 = Programs.loadModuleFromSource(program, './modules/util/log.js') log3.state.prefix = "jnt3:" Programs.setUI(log3, 1500, 450) mrbotthree.outputs.pos.attach(log3.inputs.thru) mrbotthree.outputs.pos.attach(transform.inputs.theta_C) transform.outputs.ptA.attach(rbtcanvas.inputs.xy1) transform.outputs.ptB.attach(rbtcanvas.inputs.xy2) transform.outputs.ptC.attach(rbtcanvas.inputs.xy3) /* var collector = Programs.loadModuleFromSource(program, './modules/util/collector.js') Programs.setUI(collector, 1050, 800) var gateCounter = Programs.loadModuleFromSource(program, './modules/util/gateCounter.js') Programs.setUI(gateCounter, 600, 850) */ /* var stest = Programs.loadModuleFromSource(program, './modules/ui/stest.js') var rep = Reps.makeFromModule(stest) console.log1('rep', rep) /* example program-like-an-api // load some modules var multiline = Programs.loadModuleFromSource(program, './modules/ui/multiline.js') var gcode = Programs.loadModuleFromSource(program, './modules/parsing/gcode.js') // attaching: always like outputs to inputs multiline.outputs.lineOut.attach(gcode.inputs.lineIn) // we can move things around here as well multiline.description.position = { left: 50, top: 50 } gcode.description.position = { left: 500, top: 100 } // if I have a public function in a module, I can also use that multiline.load('./files/dogbone.gcode') */ // UI const View = require('./views.js') View.startHttp() View.startWs() Programs.assignSocket(View.uiSocket) View.assignProgram(program)