Skip to content
Snippets Groups Projects
Select Git revision
  • eb9aac719924923958222c63f9be2e9ab354339b
  • master default protected
2 results

glimage.mp4

Blame
  • robot.js 4.36 KiB
    
    // 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)