Newer
Older
// 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()
var mrbotone = Programs.loadModuleFromSource(program, './modules/hardware/atkmrobot.js')
mrbotone.route.route = '0,0'
mrbotone.state.enc_reverse = true
mrbotone.state.enc_offset = 8875
var mrbottwo = Programs.loadModuleFromSource(program, './modules/hardware/atkmrobot.js')
mrbottwo.state.enc_reverse = true
mrbottwo.state.enc_offset = 4000
mrbottwo.route.route = '0,1'
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.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(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')
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)
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
/* 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)