test-subSim.C
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040 #include "Component/ModelManager.H"
00041 #include "Raster/GenericFrame.H"
00042 #include "Image/Layout.H"
00043 #include "Media/FrameSeries.H"
00044 #include "Transport/FrameInfo.H"
00045 #include "Image/MatrixOps.H"
00046 #include "GUI/ImageDisplayStream.H"
00047 #include "GUI/XWinManaged.H"
00048 #include "BeoSub/SubSim.H"
00049 #include <stdio.h>
00050 #include <stdlib.h>
00051
00052 void handle_keys(nub::soft_ref<OutputFrameSeries> ofs, nub::soft_ref<SubSim> subSim)
00053 {
00054
00055 const nub::soft_ref<ImageDisplayStream> ids =
00056 ofs->findFrameDestType<ImageDisplayStream>();
00057
00058 const rutz::shared_ptr<XWinManaged> uiwin =
00059 ids.is_valid()
00060 ? ids->getWindow("subSim")
00061 : rutz::shared_ptr<XWinManaged>();
00062
00063 int key = uiwin->getLastKeyPress();
00064 if (key != -1)
00065 {
00066 float panTruster = 0;
00067 float tiltTruster = 0;
00068 float forwardTruster = 0;
00069 float upTruster = 0;
00070 switch(key)
00071 {
00072 case 38: upTruster = -3.0; break;
00073 case 52: upTruster = 3.0; break;
00074 case 33: panTruster = 1.0; break;
00075 case 32: panTruster = -1.0; break;
00076 case 40: forwardTruster = 1.0; break;
00077 case 54: forwardTruster = -1.0; break;
00078 case 39: tiltTruster = 1.0; break;
00079 case 53: tiltTruster = -1.0; break;
00080 case 65:
00081 panTruster = 0;
00082 tiltTruster = 0;
00083 forwardTruster = 0;
00084 upTruster = 0;
00085 break;
00086
00087 }
00088 subSim->setTrusters(panTruster, tiltTruster, forwardTruster, upTruster);
00089
00090 LINFO("Key is %i\n", key);
00091 }
00092 }
00093
00094
00095 int main(int argc, char *argv[])
00096 {
00097
00098 ModelManager manager("Sub Simulator");
00099
00100
00101
00102
00103 nub::ref<OutputFrameSeries> ofs(new OutputFrameSeries(manager));
00104 manager.addSubComponent(ofs);
00105
00106
00107 nub::soft_ref<SubSim> subSim(new SubSim(manager));
00108 manager.addSubComponent(subSim);
00109
00110
00111 if (manager.parseCommandLine(argc, argv, "", 0, 0) == false) return(1);
00112
00113
00114
00115 manager.start();
00116
00117
00118
00119 while(1){
00120 Layout<PixRGB<byte> > outDisp;
00121
00122 subSim->simLoop();
00123 Image<PixRGB<byte> > forwardCam = flipVertic(subSim->getFrame(1));
00124 Image<PixRGB<byte> > downwardCam = flipVertic(subSim->getFrame(2));
00125
00126 outDisp = vcat(outDisp, hcat(forwardCam, downwardCam));
00127
00128 ofs->writeRgbLayout(outDisp, "subSim", FrameInfo("subSim", SRC_POS));
00129
00130 handle_keys(ofs, subSim);
00131
00132 }
00133 return 0;
00134
00135 }