Files
apt-nl-map/static/Magic4/HMI_Slam.html
2024-12-03 16:40:54 +08:00

530 lines
18 KiB
HTML

<!DOCTYPE html>
<html lang="en" id="container" onmousedown="startDrag(event)" onmouseup="stopDrag(event)" onmousemove="dragging(event)" style="overflow-x: hidden;
overflow-y: hidden; ">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="css/bootstrap.min.css"/>
<!-- <link rel="stylesheet" href="NumberPad/css/bootstrap.min.css">-->
<!-- <link rel="stylesheet" href="NumberPad/css/bootstrap-theme.min.css">-->
<!-- <link rel="stylesheet" type="text/css" href="NumberPad/css/htmleaf-demo.css">-->
<!-- <link rel="stylesheet" href="NumberPad/css/jquery.numpad.css">-->
<style type="text/css">
.nmpd-grid {border: none; padding: 20px;}
.nmpd-grid>tbody>tr>td {border: none;}
/* Some custom styling for Bootstrap */
.qtyInput {display: block;
width: 100%;
padding: 6px 12px;
color: #555;
background-color: white;
border: 1px solid #ccc;
border-radius: 4px;
-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075);
box-shadow: inset 0 1px 1px rgba(0,0,0,.075);
-webkit-transition: border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;
-o-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s;
transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s;
}
.btn{
height:50px;
background:#FD4F00FF;
color: white;
margin: 3px 5px 3px 0px;
}
.form-control{
width: 90%;
margin: 5px 0px;
}
</style>
<script src="jquery-2.1.0.min.js"></script>
<script src="jquery.cookie.js"></script>
<script src="NumberPad/js/bootstrap.min.js"></script>
<script src="NumberPad/js/jquery.numpad.js"></script>
<!--<script type="text/javascript" src="eventemitter2.min.js"></script>-->
<!--<script type="text/javascript" src="roslib.min.js"></script>-->
<!--<script type="text/javascript" src="Lu_ROS_Driver.js"></script>-->
<script type="text/javascript" src="Lu_Math_Driver.js"></script>
<script type="text/javascript" src="Lu_Scroll_Driver.js"></script>
<script type="text/javascript" src="Lu_MySQL_Driver_StationFloorIndexTable.js"></script>
<script type="text/javascript" type="text/javascript">
function client_BoschLicensingFeatureSet(){
var str="BoschLicensingFeatureSet:"+"/home/generallu/Lu_ROS/Param_ws/Bosch.bin"+"#";
client_request(str);
}
function client_BoschLocalizationSetSeed(x,y,t){
var str="BoschLocalizationSetSeed:"+x.toString("F3")+";"+y.toString("F3")+";"+t.toString("F3")+"#";
client_request(str);
}
function client_BoscchLocalizationSetSeedByID(ID){
//console.log(ID);
//console.log(NodePoint_Map);
var id=parseInt(ID);
if(NodePoint_Map.has(id)) {
//console.log(NodePoint_Map.get(id).NodeName);
//console.log(NodePoint_Map.get(id).Node_x);
//console.log(NodePoint_Map.get(id).Node_y);
//console.log(NodePoint_Map.get(id).Node_thetax);
var str = id + ":" + NodePoint_Map.get(id).NodeName + "@" + NodePoint_Map.get(id).Node_x + ";" + NodePoint_Map.get(id).Node_y + ";" + NodePoint_Map.get(id).Node_thetax;
//console.log(str);
Lu_Set_Node_Position(str);
}
}
function client_BoschLocalizationSetSeedByNode(param_str){
console.log(param_str);
var item_str0=param_str.split('@');
if(item_str0.length>1) {
var str = "BoschLocalizationSetSeedByNode:" + item_str0[1] + "#";
client_request(str);
document.getElementById('set_node_position').value="";
}
}
function client_BoschLocalizationActiveMap(ActiveMapName){
console.log("ActiveMapName:"+ActiveMapName);
var str = "BoschLocalizationActiveMap:" + ActiveMapName +"#";
client_request(str);
}
function client_BoschLocalizationStart(){
var str ="BoschLocalizationStart:#";
console.log(str);
client_request(str);
}
function client_BoschLocalizationStop(){
var str ="BoschLocalizationStop:#";
console.log(str);
client_request(str);
}
function client_BoschRecordingStartVisualRecording(){
var str ="BoschRecordingStartVisualRecording:#";
console.log(str);
client_request(str);
}
function client_BoschRecordingStopVisualRecording(){
var str ="BoschRecordingStopVisualRecording:#";
console.log(str);
client_request(str);
}
function client_BoschRecordingList(){
var str ="BoschRecordingList:#";
console.log(str);
client_request(str);
}
function client_BoschMapStart(recordingName){
var str = "BoschMapStart:" + recordingName +"#";
console.log(str);
client_request(str);
}
function client_BoschMapStop(){
var str ="BoschMapStop:#";
console.log(str);
client_request(str);
}
function client_BoschMapList(){
var str ="BoschMapList:#";
console.log(str);
client_request(str);
}
function client_BoschMapSend(clientMapName){
var str = "BoschMapSend:" + clientMapName +"#";
console.log(str);
client_request(str);
}
function client_request(str){
$('#output').html("");
window.parent.postMessage(
{
event_id: 'client_request',
data: {
v1: str
}
},
"*" //or "www.parentpage.com"
);
}
function receiveMessage(event)
{
//console.log(event.data);
switch(event.data.event_id){
case "client_response":{
var data=event.data.data;
var result=data.v1;
var ROS_String_Output=data.v2;
var Rec_HMI_String_Input=data.v3;
var Client_Request_Cmd=Rec_HMI_String_Input.split(':');
//console.log(data);
switch(Client_Request_Cmd[0]){
case "GetLayerTableSLAMMap":{
//console.log(data.v2);
Lu_Parse_LayerTableSLAMMap(ROS_String_Output);
SLAMMap_Map.forEach(function(value,key,map){
var MyDiv = document.getElementById("SLAMMap_Output");
var button = document.createElement("input");
button.setAttribute("type", "button");
button.setAttribute("value", key + ":" + map.get(key).LayerName + "@" + map.get(key).CommentInfo);
button.style.width = "80%";
button.style.height = "50px";
button.setAttribute("onclick", "Lu_Set_ActiveMapName(this.value)");
button.style.background = "red";
MyDiv.appendChild(button);
});
}
break;
case "GetStationFloorIndexTable":{
Lu_Parse_StationFloorIndexTable(ROS_String_Output);
Lu_Create_NodePoint_Map_With_Name();
var itemnum1=0;
var itemnum2=0;
NodePoint_Map.forEach(function (value, key, map) {
//console.log(map.get(key).NodeName);
var MyDiv1 = document.getElementById("NodePoint_Map_Output1");
var MyDiv2 = document.getElementById("NodePoint_Map_Output2");
var button = document.createElement("input");
button.setAttribute("type", "button");
button.setAttribute("value", key + ":" + map.get(key).NodeName + "@" + map.get(key).Node_x + ";" + map.get(key).Node_y +";"+ map.get(key).Node_thetax);
button.style.width = "260px";
button.style.height = "50px";
button.setAttribute("onclick", "Lu_Set_Node_Position(this.value)");
if(map.get(key).NodeName!="") {
if(itemnum1>=4){
var newline= document.createElement("br");
MyDiv1.appendChild(newline);
itemnum1=0;
}
itemnum1++;
button.style.background = "Cyan";
MyDiv1.appendChild(button);
}
else{
if(itemnum2>=4){
var newline= document.createElement("br");
MyDiv2.appendChild(newline);
itemnum2=0;
}
itemnum2++;
button.style.background = "Yellow";
MyDiv2.appendChild(button);
}
});
}
break;
case "GetNodePointManagerTable":{
//console.log(data.v2);
Lu_Parse_NodePointManagerTable(ROS_String_Output);
//console.log(NodePoint_Map);
}
break;
case "BoschLocalizationSetSeed":{
//console.log(data.v2);
document.getElementById('output').innerText=ROS_String_Output;
}
break;
case "BoschLicensingFeatureSet":{
document.getElementById('output').innerText=ROS_String_Output;
}
break;
case "BoschLocalizationSetSeedByNode":{
document.getElementById('output').innerText=ROS_String_Output;
}
break;
case "BoschLocalizationActiveMap":{
document.getElementById('output').innerText=ROS_String_Output;
}
break;
case "BoschLocalizationStart":{
document.getElementById('output').innerText=ROS_String_Output;
}
break;
case "BoschLocalizationStop":{
document.getElementById('output').innerText=ROS_String_Output;
}
break;
case "BoschRecordingStartVisualRecording":{
document.getElementById('output').innerText=ROS_String_Output;
}
break;
case "BoschRecordingStopVisualRecording":{
document.getElementById('output').innerText=ROS_String_Output;
}
break;
case "BoschRecordingList":{
document.getElementById('output').innerText=ROS_String_Output;
}
break;
case "BoschMapStart":{
document.getElementById('output').innerText=ROS_String_Output;
}
break;
case "BoschMapStop":{
document.getElementById('output').innerText=ROS_String_Output;
}
break;
case "BoschMapList":{
document.getElementById('output').innerText=ROS_String_Output;
}
break;
case "BoschMapSend":{
document.getElementById('output').innerText=ROS_String_Output;
}
break;
}
}
break;
}
}
window.addEventListener("message", receiveMessage, false);
//client_request("GetNodePointManagerTable");
//client_request("GetStationFloorIndexTable");
function Lu_Set_Node_Position(str){
document.getElementById('set_node_position').value=str;
}
function Lu_Set_ActiveMapName(str){
var item_arr0=str.split('@');
if(item_arr0.length<2)return;
var item1=item_arr0[0];
var item_Arr1=item1.split(':');
var SLAMMap=item_Arr1[1];
document.getElementById('set_activemapname').value=SLAMMap;
}
// Set NumPad defaults for jQuery mobile.
// These defaults will be applied to all NumPads within this document!
$.fn.numpad.defaults.gridTpl = '<table class="table modal-content"></table>';
$.fn.numpad.defaults.backgroundTpl = '<div class="modal-backdrop in"></div>';
$.fn.numpad.defaults.displayTpl = '<input type="text" class="form-control" />';
$.fn.numpad.defaults.buttonNumberTpl = '<button type="button" class="btn btn-default" style="width: 80px; height: 80px"></button>';
$.fn.numpad.defaults.buttonFunctionTpl = '<button type="button" class="btn" style="width: 80px; height: 80px"></button>';
//$.fn.numpad.defaults.buttonNumberTpl = '<button type="button" class="btn btn-default"></button>';
//$.fn.numpad.defaults.buttonFunctionTpl = '<button type="button" class="btn" style="width: 100%;"></button>';
$.fn.numpad.defaults.onKeypadCreate = function(){$(this).find('.done').addClass('btn-primary');};
// Instantiate NumPad once the page is ready to be shown
$(document).ready(function(){
// $('#set_x_m').numpad({
// hidePlusMinusButton: false,
// hideDecimalButton: false,
// decimalSeparator: '.',
// });
// $('#set_y_m').numpad({
// hidePlusMinusButton: false,
// hideDecimalButton: false,
// decimalSeparator: '.',
// });
// $('#set_t_deg').numpad({
// hidePlusMinusButton: false,
// hideDecimalButton: false,
// decimalSeparator: '.',
// });
//
//
// $('#set_ID').numpad({
// hidePlusMinusButton: true,
// hideDecimalButton: true
// });
/*
$('#password').numpad({
displayTpl: '<input class="form-control" type="password" />',
hidePlusMinusButton: true,
hideDecimalButton: true
});
$('#numpadButton-btn').numpad({
target: $('#numpadButton')
});
$('#numpad4div').numpad();
$('#numpad4column .qtyInput').numpad();
$('#numpad4column tr').on('click', function(e){
$(this).find('.qtyInput').numpad('open');
});
*/
});
var Bosch_Car_Global_rx=0;
var Bosch_Car_Global_ry=0;
var Bosch_Car_Global_Theta=0;
var Bosch_Loc_State=0;
var Bosch_No_Rec_State=false;
var Bosch_raw_age=0;
var Bosch_raw_timestamp=0;
var Bosch_raw_uniqueId=0;
var Bosch_raw_locState=0;
var Bosch_raw_x=0;
var Bosch_raw_y=0;
var Bosch_raw_yaw=0;
var Bosch_raw_z=0;
var Bosch_raw_qw=0;
var Bosch_raw_qx=0;
var Bosch_raw_qy=0;
var Bosch_raw_qz=0;
var Bosch_raw_epoch=0;
var Bosch_raw_x_odo=0;
var Bosch_raw_y_odo=0;
var Bosch_raw_yaw_odo=0;
var init_sch=0;
function Timer(){
if(init_sch==0){
client_request("GetNodePointManagerTable");
init_sch=1;
}
else if(init_sch==1){
client_request("GetStationFloorIndexTable");
init_sch=2;
}
else if(init_sch==2){
client_request("GetLayerTableSLAMMap");
init_sch=3;
}
Bosch_Car_Global_rx=parseFloat($.cookie('Bosch_Car_Global_rx'));
Bosch_Car_Global_ry=parseFloat($.cookie('Bosch_Car_Global_ry'));
Bosch_Car_Global_Theta=parseFloat($.cookie('Bosch_Car_Global_Theta'));
Bosch_Loc_State=$.cookie('Bosch_Loc_State');
Bosch_No_Rec_State=$.cookie('Bosch_No_Rec_State');
Bosch_raw_age=parseFloat($.cookie('Bosch_raw_age'));
Bosch_raw_timestamp=parseFloat($.cookie('Bosch_raw_timestamp'));
Bosch_raw_uniqueId=$.cookie('Bosch_raw_uniqueId');
Bosch_raw_locState=$.cookie('Bosch_raw_locState');
Bosch_raw_x=parseFloat($.cookie('Bosch_raw_x'));
Bosch_raw_y=parseFloat($.cookie('Bosch_raw_y'));
Bosch_raw_yaw=parseFloat($.cookie('Bosch_raw_yaw'));
Bosch_raw_z=parseFloat($.cookie('Bosch_raw_z'));
Bosch_raw_qw=parseFloat($.cookie('Bosch_raw_qw'));
Bosch_raw_qx=parseFloat($.cookie('Bosch_raw_qx'));
Bosch_raw_qy=parseFloat($.cookie('Bosch_raw_qy'));
Bosch_raw_qz=parseFloat($.cookie('Bosch_raw_qz'));
Bosch_raw_epoch=$.cookie('Bosch_raw_epoch');
Bosch_raw_x_odo=parseFloat($.cookie('Bosch_raw_x_odo'));
Bosch_raw_y_odo=parseFloat($.cookie('Bosch_raw_y_odo'));
Bosch_raw_yaw_odo=parseFloat($.cookie('Bosch_raw_yaw_odo'));
document.getElementById('AGV_Text_Info1').innerText=
"Bosch_Loc_State:"+Bosch_Loc_State+"\n"
+"Bosch_Car_Global_rx:"+Bosch_Car_Global_rx.toFixed(3)+"\n"
+"Bosch_Car_Global_ry:"+Bosch_Car_Global_ry.toFixed(3)+"\n"
+"Bosch_Car_Global_Theta:"+Bosch_Car_Global_Theta.toFixed(3)+"\n"
+"Bosch_No_Rec_State:"+Bosch_No_Rec_State;
document.getElementById('AGV_Text_Info2').innerText=
"Bosch_raw_age:"+Bosch_raw_age.toFixed(3)+"\n"
+"Bosch_raw_timestamp:"+Bosch_raw_timestamp+"\n"
+"Bosch_raw_uniqueId:"+Bosch_raw_uniqueId+"\n"
+"Bosch_raw_locState:"+Bosch_raw_locState+"\n"
+"Bosch_raw_x:"+Bosch_raw_x.toFixed(3)+"\n"
+"Bosch_raw_y:"+Bosch_raw_y.toFixed(3)+"\n"
+"Bosch_raw_yaw:"+Lu_ArcToDeg(Bosch_raw_yaw).toFixed(3)+"\n"
+"Bosch_raw_z:"+Bosch_raw_z.toFixed(3)+"\n"
+"Bosch_raw_qw:"+Bosch_raw_qw.toFixed(3)+"\n"
+"Bosch_raw_qx:"+Bosch_raw_qx.toFixed(3)+"\n"
+"Bosch_raw_qy:"+Bosch_raw_qy.toFixed(3)+"\n"
+"Bosch_raw_qz:"+Bosch_raw_qz.toFixed(3)+"\n"
+"Bosch_raw_epoch:"+Bosch_raw_epoch+"\n"
+"Bosch_raw_x_odo:"+Bosch_raw_x_odo.toFixed(3)+"\n"
+"Bosch_raw_y_odo:"+Bosch_raw_y_odo.toFixed(3)+"\n"
+"Bosch_raw_yaw_odo:"+Bosch_raw_yaw_odo.toFixed(3)+"\n"
}
var T1 = window.setInterval("Timer()",100);
</script>
</head>
<body>
<table>
<tr>
<div id="output"></div>
</tr>
<tr>
<div id='AGV_Text_Info1'> </div>
</tr>
</table>
<p><input type=text class="input form-control" id="set_x_m" name=set_x_m value="0.0" style="width: 500px;"></input></p>
<p><input type=text class="input form-control" id="set_y_m" name=set_y_m value="0.0" style="width: 500px;"></input></p>
<p><input type=text class="input form-control" id="set_t_deg" name=set_t_deg value="0.0" style="width: 500px;"></input></p>
<input type=button class="btn" value="BoschLocalizationSetSeed" onclick=client_BoschLocalizationSetSeed(set_x_m.value,set_y_m.value,set_t_deg.value)></input>
<p><input type=text class="input form-control" id="set_ID" name=set_ID value=""></input></p>
<input type=button class="btn" value="BoschLocalizationSetSeedByID" onclick=client_BoscchLocalizationSetSeedByID(set_ID.value)></input>
<p><input type=text class="input form-control" id="set_node_position" name=set_node_position value=""></input></p>
<input type=button class="btn" value="BoschLocalizationSetSeedByNode" onclick=client_BoschLocalizationSetSeedByNode(set_node_position.value)></input>
<p><input type=text class="input form-control" id="set_activemapname" name=set_activemapname value="" style="height :40px"></input></p>
<input type=button class="btn" value="BoschLocalizationActiveMap" onclick=client_BoschLocalizationActiveMap(set_activemapname.value)></input>
<tr>
<div id="SLAMMap_Output"></div>
</tr>
<tr>
<div id="NodePoint_Map_Output1"></div>
</tr>
<tr>
<div id="NodePoint_Map_Output2"></div>
</tr>
<table>
<tr>
<div id='AGV_Text_Info2'> </div>
</tr>
<tr>
<input type=button class="btn" value="BoschLicensingFeatureSet" onclick=client_BoschLicensingFeatureSet()></input>
</tr>
<tr>
<input type=button class="btn" value="BoschLocalizationStart" onclick=client_BoschLocalizationStart()></input>
</tr>
<tr>
<input type=button class="btn" value="BoschLocalizationStop" onclick=client_BoschLocalizationStop()></input>
</tr>
<tr>
<input type=button class="btn" value="BoschRecordingStartVisualRecording" onclick=client_BoschRecordingStartVisualRecording()></input>
</tr>
<tr>
<input type=button class="btn" value="BoschRecordingStopVisualRecording" onclick=client_BoschRecordingStopVisualRecording()></input>
</tr>
<tr>
<input type=button class="btn" value="BoschRecordingList" onclick=client_BoschRecordingList()></input>
</tr>
<tr>
<p><input type=text class="input form-control" id="set_recordingname" name=set_recordingname value="" style="height :40px"></input></p>
<input type=button class="btn" value="BoschMapStart" onclick=client_BoschMapStart(set_recordingname.value)></input>
</tr>
<tr>
<input type=button class="btn" value="BoschMapStop" onclick=client_BoschMapStop()></input>
</tr>
<tr>
<input type=button class="btn" value="BoschMapList" onclick=client_BoschMapList()></input>
</tr>
<tr>
<p><input type=text class="input form-control" id="set_clientmapname" name=set_clientmapname value="" style="height :40px"></input></p>
<input type=button class="btn" value="BoschMapSend" onclick=client_BoschMapSend(set_clientmapname.value)></input>
</tr>
</table>
</body>
<script src="js/drag.js"></script>
<script>
$(".input").focus(function(){
window.parent.inputDom = this;
var distance = $(parent.document).scrollTop() + 500 + "px";
$(".simple-keyboard", parent.document).css("top", distance)
$(".keyboard",parent.document).show();
window.parent.clearKeyboard();
})
</script>
</html>