private void readGeom() { try { // Buffer for reading pose and size byte[] buffer = new byte[12 + 8]; // Read pose and size is.readFully(buffer, 0, 12 + 8); pp1dgeom = new PlayerPosition1dGeom(); PlayerPose pose = new PlayerPose(); PlayerBbox size = new PlayerBbox(); // Begin decoding the XDR buffer XdrBufferDecodingStream xdr = new XdrBufferDecodingStream(buffer); xdr.beginDecoding(); // pose of the robot base [m, m, rad] pose.setPx(xdr.xdrDecodeFloat()); pose.setPy(xdr.xdrDecodeFloat()); pose.setPa(xdr.xdrDecodeFloat()); pp1dgeom.setPose(pose); // dimensions of the base [m, m] size.setSw(xdr.xdrDecodeFloat()); size.setSl(xdr.xdrDecodeFloat()); pp1dgeom.setSize(size); xdr.endDecoding(); xdr.close(); } catch (IOException e) { throw new PlayerException("[Position1D] : Error reading geometry data: " + e.toString(), e); } catch (OncRpcException e) { throw new PlayerException( "[Position1D] : Error while XDR-decoding geometry data: " + e.toString(), e); } }
/** Read the Position1D data. */ public synchronized void readData(PlayerMsgHdr header) { try { switch (header.getSubtype()) { case PLAYER_POSITION1D_DATA_STATE: { this.timestamp = header.getTimestamp(); // Buffer for reading pos, vel, stall and status byte[] buffer = new byte[16]; // Read pos, vel, stall and status is.readFully(buffer, 0, 16); pp1ddata = new PlayerPosition1dData(); // Begin decoding the XDR buffer XdrBufferDecodingStream xdr = new XdrBufferDecodingStream(buffer); xdr.beginDecoding(); pp1ddata.setPos(xdr.xdrDecodeFloat()); // position [m] pp1ddata.setVel(xdr.xdrDecodeFloat()); // tr.vel.[m/s] pp1ddata.setStall(xdr.xdrDecodeByte()); // stalled? pp1ddata.setStatus(xdr.xdrDecodeByte()); // status xdr.endDecoding(); xdr.close(); readyPp1ddata = true; break; } case PLAYER_POSITION1D_DATA_GEOM: { this.timestamp = header.getTimestamp(); readGeom(); readyPp1dgeom = true; break; } } } catch (IOException e) { throw new PlayerException("[Position1D] : Error reading payload: " + e.toString(), e); } catch (OncRpcException e) { throw new PlayerException( "[Position1D] : Error while XDR-decoding payload: " + e.toString(), e); } }