Select Git revision
-
Amira Abdel-Rahman authoredAmira Abdel-Rahman authored
serve.js 3.04 KiB
// Amira Abdel-Rahman
// (c) Massachusetts Institute of Technology 2020
/// Serve node.js to call python-urx library to interact with UR10s
/// https://github.com/SintefManufacturing/python-urx
const { exec } = require("child_process");
var express = require('express');
var app = express();
const editJsonFile = require("edit-json-file");
var setup;
// will parse incoming JSON data and convert it into an object literal for you
app.use(express.json({limit: '50mb', extended: true}));
app.use(express.urlencoded({limit: '50mb', extended: true}));
//serve the html
app.use(express.static(__dirname + '/../')); // exposes index.html, per below
app.post("/", function(req, res) {
// each key in req.body will match the keys in the data object that you passed in
var myObject = req.body.data;
setup=JSON.parse(myObject.setup);
console.log("run python_urx!");
runPython_urx(setup);
res.send("I am done");
});
port = 8080;
app.listen(port);
console.log(`Open http://localhost:${port}/demos/indexUR10.html in your browser`);
function runPython_urx(setup){
// var dataToSend;
// const python = exec('python', ['./assembly/python-urx/script1.py']);
// const exec = spawn(‘python’, [‘script2.py’,’node.js’,’python’]);
var root="../assembly/python-urx/";
let outputFile = editJsonFile(`${__dirname}/`+root+`setup.json`);
outputFile.set("setup", setup.ur10Setup);
outputFile.save();
console.log("saved the UR10 setup in ../assembly/python-urx/setup.json");
console.log();
if(setup.ur10Setup.parameters.run){
console.log("Call python script:")
var commands=[];
commands.push("python " + root+setup.ur10Setup.parameters.pythonFileName +".py");
runListCommand(commands,0);
}else{
console.log("didn't run the UR10");
}
if(setup.DEMSetup.parameters.run){
var root="../simulation/dice_firmware/build/x86/src/sim/vis/";
let outputFile = editJsonFile(`${__dirname}/`+root+`sim_config.json`);
outputFile.set("setup", setup.DEMSetup);
outputFile.save();
console.log("saved the DEM setup in ../simulation/dice_firmware/build/x86/src/sim/vis/");
console.log();
console.log("Compile and run the DEM simulator:")
var commands=[];
if(setup.DEMSetup.parameters.make){
//make first
commands.push("cd " + "../simulation/dice_firmware/build/x86");
commands.push("make");
commands.push("cd " + "src/sim/vis/");
}else{
commands.push("cd " + root);
}
commands.push("./sim_vis_executable");
runListCommand(commands,0);
}else{
console.log("didn't run DEM simulation");
}
}
function runListCommand(commands,index){
if (index<commands.length){
console.log(commands[index]);
exec(commands[index], (error, stdout, stderr) => {
if (error) {
console.log(`error: ${error.message}`);
return;
}
if (stderr) {
console.log(`stderr: ${stderr}`);
return;
}
console.log(`stdout:`);
console.log(`${stdout}`);
runListCommand(commands,index+1);
});
}
}