From 594d3dbbb8b3bf3811e38494a0b329ff9a4488bf Mon Sep 17 00:00:00 2001 From: Orly Natan Date: Tue, 24 Apr 2018 14:55:44 +1000 Subject: [PATCH 1/8] adding Windows support [serial] --- source/FirmataClient/serial.c | 360 +++++++++++++++++++++++++++++++++- source/FirmataClient/serial.h | 29 ++- 2 files changed, 378 insertions(+), 11 deletions(-) diff --git a/source/FirmataClient/serial.c b/source/FirmataClient/serial.c index 7f9967e..42115a4 100755 --- a/source/FirmataClient/serial.c +++ b/source/FirmataClient/serial.c @@ -25,17 +25,31 @@ #include "serial.h" +#if defined(MACOSX) #include // required for: ioctl function #include // required for: select function #include // required for: kIOCalloutDeviceKey, kCFAllocatorDefault consts +#elif defined(WINDOWS) +#include +#define win32_err(s) FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, \ +GetLastError(), 0, (s), sizeof(s), NULL) +#define QUERYDOSDEVICE_BUFFER_SIZE 262144 + +#else +#error "This platform is unsupported, sorry" + +#endif + + // Internals void serial_inputdiscard(serial_t *port); void serial_outputflush(serial_t *port); int serial_setcontrol(serial_t *port, int dtr, int rts); -int macos_ports(io_iterator_t *PortIterator, char **list, int max_ports, int index); +// int macos_ports(io_iterator_t *PortIterator, char **list, int max_ports, int index); +#if defined(MACOSX) int macos_ports(io_iterator_t *PortIterator, char **list, int max_ports, int index) { io_object_t modemService; @@ -62,12 +76,16 @@ int macos_ports(io_iterator_t *PortIterator, char **list, int max_ports, int ind } return numPorts; } +#endif /* MACOSX */ // Return a list of all serial ports int serial_portlist(char **list, int max_ports) { + int numPorts = 0; +#if defined(MACOSX) + // adapted from SerialPortSample.c, by Apple // http://developer.apple.com/samplecode/SerialPortSample/listing2.html // and also testserial.c, by Keyspan @@ -107,7 +125,58 @@ int serial_portlist(char **list, int max_ports) IOObjectRelease(serialPortIterator); */ - return numPorts; +#elif defined(WINDOWS) + // http://msdn.microsoft.com/en-us/library/aa365461(VS.85).aspx + // page with 7 ways - not all of them work! + // http://www.naughter.com/enumser.html + // may be possible to just query the windows registary + // http://it.gps678.com/2/ca9c8631868fdd65.html + // search in HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM + // Vista has some special new way, vista-only + // http://msdn2.microsoft.com/en-us/library/aa814070(VS.85).aspx + char *buffer, *p; + //DWORD size = QUERYDOSDEVICE_BUFFER_SIZE; + DWORD ret; + + buffer = (char *)malloc(QUERYDOSDEVICE_BUFFER_SIZE); + if (buffer == NULL) return 0; + + + + memset(buffer, 0, QUERYDOSDEVICE_BUFFER_SIZE); + ret = QueryDosDeviceA(NULL, buffer, QUERYDOSDEVICE_BUFFER_SIZE); + if (ret) { + printf("Detect Serial using QueryDosDeviceA: "); + for (p = buffer; *p; p += strlen(p) + 1) { + printf(": %s", p); + if (strncmp(p, "COM", 3)) continue; + numPorts++; + //list.Add(wxString(p) + ":"); // TODO fix the list orly + } + } else { + char buf[1024]; + win32_err(buf); + printf("QueryDosDeviceA failed, error \"%s\"\n", buf); + printf("Detect Serial using brute force GetDefaultCommConfig probing: "); + for (int i=1; i<=32; i++) { + printf("try %s", buf); + COMMCONFIG cfg; + DWORD len; + snprintf(buf, sizeof(buf), "COM%d", i); + if (GetDefaultCommConfig(buf, &cfg, &len)) { + wxString name; + name.Printf("COM%d:", i); + //list.Add(name); // TODO fix the list orly + numPorts++; + printf(": %s", buf); + } + } + } + free(buffer); + +#endif /* MACOSX or WINDOWS */ + + return numPorts; } int serial_isopen(serial_t *port) @@ -128,6 +197,8 @@ int serial_open(serial_t *port, char *name) serial_close(port); +#if defined(MACOSX) + int bits = 0; int port_fd = open(name, O_RDWR | O_NOCTTY | O_NONBLOCK); if (port_fd < 0) { @@ -168,7 +239,100 @@ int serial_open(serial_t *port, char *name) port->settings.c_cflag = CS8 | CLOCAL | CREAD | HUPCL; port->settings.c_iflag = IGNBRK | IGNPAR; serial_setbaud(port, port->baud_rate); - tcflush(port->port_fd, TCIFLUSH); + tcflush(port->port_fd, TCIFLUSH); + +#elif defined(WINDOWS) + COMMCONFIG cfg; + COMMTIMEOUTS timeouts; + int got_default_cfg=0, port_num; + char buf[1024], name_createfile[64], name_commconfig[64], *p; + DWORD len; + + snprintf(buf, sizeof(buf), "%s", name.c_str()); + p = strstr(buf, "COM"); + if (p && sscanf(p + 3, "%d", &port_num) == 1) { + printf("port_num = %d\n", port_num); + snprintf(name_createfile, sizeof(name_createfile), "\\\\.\\COM%d", port_num); + snprintf(name_commconfig, sizeof(name_commconfig), "COM%d", port_num); + } else { + snprintf(name_createfile, sizeof(name_createfile), "%s", name.c_str()); + snprintf(name_commconfig, sizeof(name_commconfig), "%s", name.c_str()); + } + len = sizeof(COMMCONFIG); + if (GetDefaultCommConfig(name_commconfig, &cfg, &len)) { + // this prevents unintentionally raising DTR when opening + // might only work on COM1 to COM9 + got_default_cfg = 1; + memcpy(&(port->port_cfg_orig), &cfg, sizeof(COMMCONFIG)); + cfg.dcb.fDtrControl = DTR_CONTROL_DISABLE; + cfg.dcb.fRtsControl = RTS_CONTROL_DISABLE; + SetDefaultCommConfig(name_commconfig, &cfg, sizeof(COMMCONFIG)); + } else { + printf("error with GetDefaultCommConfig\n"); + } + port->port_handle = CreateFile(name_createfile, GENERIC_READ | GENERIC_WRITE, + 0, 0, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL); + if (port->port_handle == INVALID_HANDLE_VALUE) { + win32_err(buf); + sprintf(port->error_msg, "Unable to open %s, %s", name, buf); //error_msg = "Unable to open " + name + ", " + buf; + return -1; + } + len = sizeof(COMMCONFIG); + if (!GetCommConfig(port->port_handle, &(port->port_cfg), &len)) { + CloseHandle(port->port_handle); + win32_err(buf); + sprintf(port->error_msg,"Unable to read communication config on %s, %s", name, buf); // error_msg = "Unable to read communication config on " + name + ", " + buf; + return -1; + } + if (!got_default_cfg) { + memcpy(&(port->port_cfg_orig), &(port->port_cfg), sizeof(COMMCONFIG)); + } + // http://msdn2.microsoft.com/en-us/library/aa363188(VS.85).aspx + port->port_cfg.dcb.BaudRate = baud_rate; + port->port_cfg.dcb.fBinary = TRUE; + port->port_cfg.dcb.fParity = FALSE; + port->port_cfg.dcb.fOutxCtsFlow = FALSE; + port->port_cfg.dcb.fOutxDsrFlow = FALSE; + port->port_cfg.dcb.fDtrControl = DTR_CONTROL_DISABLE; + port->port_cfg.dcb.fDsrSensitivity = FALSE; + port->port_cfg.dcb.fTXContinueOnXoff = TRUE; + port->port_cfg.dcb.fOutX = FALSE; + port->port_cfg.dcb.fInX = FALSE; + port->port_cfg.dcb.fErrorChar = FALSE; + port->port_cfg.dcb.fNull = FALSE; + port->port_cfg.dcb.fRtsControl = RTS_CONTROL_DISABLE; + port->port_cfg.dcb.fAbortOnError = FALSE; + port->port_cfg.dcb.ByteSize = 8; + port->port_cfg.dcb.Parity = NOPARITY; + port->port_cfg.dcb.StopBits = ONESTOPBIT; + if (!SetCommConfig(port->port_handle, &(port->port_cfg), sizeof(COMMCONFIG))) { + CloseHandle(port->port_handle); + win32_err(buf); + sprintf(port->error_msg,"Unable to write communication config to %s, %s", name, buf);// error_msg = "Unable to write communication config to " + name + ", " + buf; + return -1; + } + if (!EscapeCommFunction(port->port_handle, CLRDTR | CLRRTS)) { + CloseHandle(port->port_handle); + win32_err(buf); + sprintf(port->error_msg, "Unable to control serial port signals on %s, %s", name, buf); // error_msg = "Unable to control serial port signals on " + name + ", " + buf; + return -1; + } + // http://msdn2.microsoft.com/en-us/library/aa363190(VS.85).aspx + // setting to all zeros means timeouts are not used + //timeouts.ReadIntervalTimeout = 0; + timeouts.ReadIntervalTimeout = MAXDWORD; + timeouts.ReadTotalTimeoutMultiplier = 0; + timeouts.ReadTotalTimeoutConstant = 0; + timeouts.WriteTotalTimeoutMultiplier = 0; + timeouts.WriteTotalTimeoutConstant = 0; + if (!SetCommTimeouts(port->port_handle, &timeouts)) { + CloseHandle(port->port_handle); + win32_err(buf); + sprintf(port->error_msg, "Unable to write timeout settings to %s, %s", name, buf); // error_msg = "Unable to write timeout settings to " + name + ", " + buf; + return -1; + } +#endif /* MACOSX or WINDOWS */ + strncpy(port->port_name, name, MAXPATHLEN); port->port_is_open = 1; @@ -188,7 +352,8 @@ int serial_setbaud(serial_t *port, int baud) { if (port == NULL || baud <= 0) return -1; if (!port->port_is_open) return -1; - + +#if defined(MACOSX) if (-1 == cfsetospeed(&(port->settings), (speed_t)baud)) { sprintf(port->error_msg, "serial_setbaud: Couldn't set BAUD rate"); return -1; @@ -202,7 +367,14 @@ int serial_setbaud(serial_t *port, int baud) sprintf(port->error_msg, "serial_setbaud: Couldn't set BAUD rate"); return -1; } - + +#elif defined(WINDOWS) + DWORD len = sizeof(COMMCONFIG); + port->port_cfg.dcb.BaudRate = baud; + SetCommConfig(port->port_handle, &(port->port_cfg), len); + +#endif /* MACOSX or WINDOWS */ + port->baud_rate = baud; sprintf(port->error_msg, ""); return 0; @@ -216,11 +388,63 @@ long serial_read(serial_t *port, void *ptr, int count) if (port == NULL || !port->port_is_open) return -1; if (count <= 0 || ptr == NULL) return 0; +#if defined(MACOSX) long n; n = read(port->port_fd, ptr, count); //printf("serial_read %ld bytes\n", n); if (n < 0 && (errno == EAGAIN || errno == EINTR)) return 0; return n; + +#elif defined(WINDOWS) + // first, we'll find out how many bytes have been received + // and are currently waiting for us in the receive buffer. + // http://msdn.microsoft.com/en-us/library/ms885167.aspx + // http://msdn.microsoft.com/en-us/library/ms885173.aspx + // http://source.winehq.org/WineAPI/ClearCommError.html + COMSTAT st; + DWORD errmask=0, num_read, num_request; + OVERLAPPED ov; + int r; + if (!ClearCommError(port->port_handle, &errmask, &st)) return -1; + //printf("Read, %d requested, %lu buffered\n", count, st.cbInQue); + if (st.cbInQue <= 0) return 0; + // now do a ReadFile, now that we know how much we can read + // a blocking (non-overlapped) read would be simple, but win32 + // is all-or-nothing on async I/O and we must have it enabled + // because it's the only way to get a timeout for WaitCommEvent + num_request = ((DWORD)count < st.cbInQue) ? (DWORD)count : st.cbInQue; + ov.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL); + if (ov.hEvent == NULL) return -1; + ov.Internal = ov.InternalHigh = 0; + ov.Offset = ov.OffsetHigh = 0; + if (ReadFile(port->port_handle, ptr, num_request, &num_read, &ov)) { + // this should usually be the result, since we asked for + // data we knew was already buffered + //printf("Read, immediate complete, num_read=%lu\n", num_read); + r = num_read; + } else { + if (GetLastError() == ERROR_IO_PENDING) { + if (GetOverlappedResult(port->port_handle, &ov, &num_read, TRUE)) { + //printf("Read, delayed, num_read=%lu\n", num_read); + r = num_read; + } else { + //printf("Read, delayed error\n"); + r = -1; + } + } else { + //printf("Read, error\n"); + r = -1; + } + } + CloseHandle(ov.hEvent); + // TODO: how much overhead does creating new event objects on + // every I/O request really cost? Would it be better to create + // just 3 when we open the port, and reset/reuse them every time? + // Would mutexes or critical sections be needed to protect them? + return r; + +#endif /* MACOSX or WINDOWS */ + } // Write to the serial port. This blocks until the data is @@ -232,6 +456,7 @@ long serial_write(serial_t *port, const void *ptr, int len) if (port == NULL || !port->port_is_open) return -1; if (len == 0 || ptr == NULL) return 0; +#if defined(MACOSX) long n, written=0; fd_set wfds; struct timeval tv; @@ -253,6 +478,37 @@ long serial_write(serial_t *port, const void *ptr, int len) } } return written; + +#elif defined(WINDOWS) + DWORD num_written; + OVERLAPPED ov; + int r; + ov.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL); + if (ov.hEvent == NULL) return -1; + ov.Internal = ov.InternalHigh = 0; + ov.Offset = ov.OffsetHigh = 0; + if (WriteFile(port->port_handle, ptr, len, &num_written, &ov)) { + //printf("Write, immediate complete, num_written=%lu\n", num_written); + r = num_written; + } else { + if (GetLastError() == ERROR_IO_PENDING) { + if (GetOverlappedResult(port->port_handle, &ov, &num_written, TRUE)) { + //printf("Write, delayed, num_written=%lu\n", num_written); + r = num_written; + } else { + //printf("Write, delayed error\n"); + r = -1; + } + } else { + //printf("Write, error\n"); + r = -1; + } + }; + CloseHandle(ov.hEvent); + return r; + +#endif /* MACOSX or WINDOWS */ + } // Wait up to msec for data to become available for reading. @@ -261,7 +517,8 @@ long serial_write(serial_t *port, const void *ptr, int len) int serial_inputwait(serial_t *port, int msec) { if (port == NULL || !port->port_is_open) return -1; - + +#if defined(MACOSX) fd_set rfds; struct timeval tv; tv.tv_sec = msec / 1000; @@ -269,20 +526,81 @@ int serial_inputwait(serial_t *port, int msec) FD_ZERO(&rfds); FD_SET(port->port_fd, &rfds); return select(port->port_fd+1, &rfds, NULL, NULL, &tv); + +#elif defined(WINDOWS) + // http://msdn2.microsoft.com/en-us/library/aa363479(VS.85).aspx + // http://msdn2.microsoft.com/en-us/library/aa363424(VS.85).aspx + // http://source.winehq.org/WineAPI/WaitCommEvent.html + COMSTAT st; + DWORD errmask=0, eventmask=EV_RXCHAR, ret; + OVERLAPPED ov; + int r; + // first, request comm event when characters arrive + if (!SetCommMask(port->port_handle, EV_RXCHAR)) return -1; + // look if there are characters in the buffer already + if (!ClearCommError(port->port_handle, &errmask, &st)) return -1; + //printf("Input_wait, %lu buffered, timeout = %d ms\n", st.cbInQue, msec); + if (st.cbInQue > 0) return 1; + + ov.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL); + if (ov.hEvent == NULL) return -1; + ov.Internal = ov.InternalHigh = 0; + ov.Offset = ov.OffsetHigh = 0; + if (WaitCommEvent(port->port_handle, &eventmask, &ov)) { + //printf("Input_wait, WaitCommEvent, immediate success\n"); + r = 1; + } else { + if (GetLastError() == ERROR_IO_PENDING) { + ret = WaitForSingleObject(ov.hEvent, msec); + if (ret == WAIT_OBJECT_0) { + //printf("Input_wait, WaitCommEvent, delayed success\n"); + r = 1; + } else if (ret == WAIT_TIMEOUT) { + //printf("Input_wait, WaitCommEvent, timeout\n"); + GetCommMask(port->port_handle, &eventmask); + r = 0; + } else { // WAIT_FAILED or WAIT_ABANDONED + //printf("Input_wait, WaitCommEvent, delayed error\n"); + r = -1; + } + } else { + //printf("Input_wait, WaitCommEvent, immediate error\n"); + r = -1; + } + } + SetCommMask(port->port_handle, 0); + CloseHandle(ov.hEvent); + return r; + +#endif /* MACOSX or WINDOWS */ } // Discard all received data that hasn't been read void serial_inputdiscard(serial_t *port) { if (port == NULL || !port->port_is_open) return; + +#if defined(MACOSX) tcflush(port->port_fd, TCIFLUSH); + +#elif defined(WINDOWS) + PurgeComm(port->port_handle, PURGE_RXCLEAR); + +#endif /* MACOSX or WINDOWS */ } // Wait for all transmitted data with Write to actually leave the serial port void serial_outputflush(serial_t *port) { if (port == NULL || !port->port_is_open) return; + +#if defined(MACOSX) tcdrain(port->port_fd); + +#elif defined(WINDOWS) + FlushFileBuffers(port->port_handle); + +#endif /* MACOSX or WINDOWS */ } // set DTR and RTS, 0 = low, 1=high, -1=unchanged @@ -290,6 +608,7 @@ int serial_setcontrol(serial_t *port, int dtr, int rts) { if (port == NULL || !port->port_is_open) return -1; +#if defined(MACOSX) // on Mac OS X, "man 4 tty" int bits; if (ioctl(port->port_fd, TIOCMGET, &bits) < 0) return -1; @@ -304,6 +623,21 @@ int serial_setcontrol(serial_t *port, int dtr, int rts) bits &= ~TIOCM_RTS; } if (ioctl(port->port_fd, TIOCMSET, &bits) < 0) return -1;; + +#elif defined(WINDOWS) + // http://msdn.microsoft.com/en-us/library/aa363254(VS.85).aspx + if (dtr == 1) { + if (!EscapeCommFunction(port->port_handle, SETDTR)) return -1; + } else if (dtr == 0) { + if (!EscapeCommFunction(port->port_handle, CLRDTR)) return -1; + } + if (rts == 1) { + if (!EscapeCommFunction(port->port_handle, SETRTS)) return -1; + } else if (rts == 0) { + if (!EscapeCommFunction(port->port_handle, CLRRTS)) return -1; + } + +#endif /* MACOSX or WINDOWS */ return 0; } @@ -315,12 +649,20 @@ void serial_close(serial_t *port) serial_outputflush(port); serial_inputdiscard(port); - tcsetattr(port->port_fd, TCSANOW, &(port->settings_orig)); - close(port->port_fd); - port->port_is_open = 0; port->baud_rate = 0; sprintf(port->port_name, ""); + +#if defined(MACOSX) + tcsetattr(port->port_fd, TCSANOW, &(port->settings_orig)); + close(port->port_fd); + +#elif defined(WINDOWS) + //SetCommConfig(port->port_handle, &port_cfg_orig, sizeof(COMMCONFIG)); + CloseHandle(port->port_handle); + +#endif /* MAXOSX or WINDOWS */ + sprintf(port->error_msg, ""); port->port_fd = 0; } diff --git a/source/FirmataClient/serial.h b/source/FirmataClient/serial.h index 8986839..1c4fdb4 100755 --- a/source/FirmataClient/serial.h +++ b/source/FirmataClient/serial.h @@ -1,20 +1,45 @@ #ifndef serial_h #define serial_h +#define MACOSX +//#define WINDOWS + +#if defined(MACOSX) #include // required for: termios struct -#include // required for: MAXPATHLEN const #include // required for: io_iterator_t +#elif defined(WINDOWS) +#include + +#endif /* MACOSX or WINDOWS */ + + +//#include // required for: termios struct +//#include // required for: MAXPATHLEN const +//#include // required for: io_iterator_t + #define DEBUG 0 +#define MAXPATHLEN 256 + typedef struct { int port_is_open; int baud_rate; - int port_fd; char port_name[MAXPATHLEN]; char error_msg[MAXPATHLEN]; + +#if defined(MACOSX) + int port_fd; struct termios settings_orig; struct termios settings; + +#elif defined(WINDOWS) + HANDLE port_handle; + COMMCONFIG port_cfg_orig; + COMMCONFIG port_cfg; + +#endif /* MACOSX or WINDOWS */ + } serial_t; // Returns 1 if port is open, 0 otherwise. -- GitLab From 894319cfc3b02c8c4860771b659a4785571cd243 Mon Sep 17 00:00:00 2001 From: Orly Natan Date: Tue, 29 May 2018 19:33:24 +1000 Subject: [PATCH 2/8] added robotin robotout objects --- cr/docs/cr.robotin.maxref.xml | 93 + cr/docs/cr.robotout.maxref.xml | 77 + .../Contents/MacOS/cr.boardout | Bin 118776 -> 118776 bytes .../cr.robotin.mxo/Contents/Info.plist | 44 + .../cr.robotin.mxo/Contents/MacOS/cr.robotin | Bin 0 -> 240660 bytes cr/externals/cr.robotin.mxo/Contents/PkgInfo | 1 + .../Resources/ros_lib/actionlib/TestAction.h | 56 + .../ros_lib/actionlib/TestActionFeedback.h | 56 + .../ros_lib/actionlib/TestActionGoal.h | 56 + .../ros_lib/actionlib/TestActionResult.h | 56 + .../ros_lib/actionlib/TestFeedback.h | 62 + .../Resources/ros_lib/actionlib/TestGoal.h | 62 + .../ros_lib/actionlib/TestRequestAction.h | 56 + .../actionlib/TestRequestActionFeedback.h | 56 + .../ros_lib/actionlib/TestRequestActionGoal.h | 56 + .../actionlib/TestRequestActionResult.h | 56 + .../ros_lib/actionlib/TestRequestFeedback.h | 38 + .../ros_lib/actionlib/TestRequestGoal.h | 215 ++ .../ros_lib/actionlib/TestRequestResult.h | 80 + .../Resources/ros_lib/actionlib/TestResult.h | 62 + .../ros_lib/actionlib/TwoIntsAction.h | 56 + .../ros_lib/actionlib/TwoIntsActionFeedback.h | 56 + .../ros_lib/actionlib/TwoIntsActionGoal.h | 56 + .../ros_lib/actionlib/TwoIntsActionResult.h | 56 + .../ros_lib/actionlib/TwoIntsFeedback.h | 38 + .../Resources/ros_lib/actionlib/TwoIntsGoal.h | 102 + .../ros_lib/actionlib/TwoIntsResult.h | 70 + .../Resources/ros_lib/actionlib_msgs/GoalID.h | 79 + .../ros_lib/actionlib_msgs/GoalStatus.h | 78 + .../ros_lib/actionlib_msgs/GoalStatusArray.h | 70 + .../actionlib_tutorials/AveragingAction.h | 56 + .../AveragingActionFeedback.h | 56 + .../actionlib_tutorials/AveragingActionGoal.h | 56 + .../AveragingActionResult.h | 56 + .../actionlib_tutorials/AveragingFeedback.h | 134 ++ .../actionlib_tutorials/AveragingGoal.h | 62 + .../actionlib_tutorials/AveragingResult.h | 86 + .../actionlib_tutorials/FibonacciAction.h | 56 + .../FibonacciActionFeedback.h | 56 + .../actionlib_tutorials/FibonacciActionGoal.h | 56 + .../FibonacciActionResult.h | 56 + .../actionlib_tutorials/FibonacciFeedback.h | 82 + .../actionlib_tutorials/FibonacciGoal.h | 62 + .../actionlib_tutorials/FibonacciResult.h | 82 + .../base_local_planner/Position2DInt.h | 102 + .../Resources/ros_lib/bond/Constants.h | 44 + .../Contents/Resources/ros_lib/bond/Status.h | 144 ++ .../FollowJointTrajectoryAction.h | 56 + .../FollowJointTrajectoryActionFeedback.h | 56 + .../FollowJointTrajectoryActionGoal.h | 56 + .../FollowJointTrajectoryActionResult.h | 56 + .../FollowJointTrajectoryFeedback.h | 97 + .../control_msgs/FollowJointTrajectoryGoal.h | 119 + .../FollowJointTrajectoryResult.h | 85 + .../ros_lib/control_msgs/GripperCommand.h | 102 + .../control_msgs/GripperCommandAction.h | 56 + .../GripperCommandActionFeedback.h | 56 + .../control_msgs/GripperCommandActionGoal.h | 56 + .../control_msgs/GripperCommandActionResult.h | 56 + .../control_msgs/GripperCommandFeedback.h | 138 ++ .../ros_lib/control_msgs/GripperCommandGoal.h | 44 + .../control_msgs/GripperCommandResult.h | 138 ++ .../control_msgs/JointControllerState.h | 382 +++ .../ros_lib/control_msgs/JointTolerance.h | 151 ++ .../control_msgs/JointTrajectoryAction.h | 56 + .../JointTrajectoryActionFeedback.h | 56 + .../control_msgs/JointTrajectoryActionGoal.h | 56 + .../JointTrajectoryActionResult.h | 56 + .../JointTrajectoryControllerState.h | 97 + .../control_msgs/JointTrajectoryFeedback.h | 38 + .../control_msgs/JointTrajectoryGoal.h | 44 + .../control_msgs/JointTrajectoryResult.h | 38 + .../Resources/ros_lib/control_msgs/PidState.h | 420 ++++ .../ros_lib/control_msgs/PointHeadAction.h | 56 + .../control_msgs/PointHeadActionFeedback.h | 56 + .../control_msgs/PointHeadActionGoal.h | 56 + .../control_msgs/PointHeadActionResult.h | 56 + .../ros_lib/control_msgs/PointHeadFeedback.h | 70 + .../ros_lib/control_msgs/PointHeadGoal.h | 123 + .../ros_lib/control_msgs/PointHeadResult.h | 38 + .../control_msgs/QueryCalibrationState.h | 88 + .../control_msgs/QueryTrajectoryState.h | 287 +++ .../control_msgs/SingleJointPositionAction.h | 56 + .../SingleJointPositionActionFeedback.h | 56 + .../SingleJointPositionActionGoal.h | 56 + .../SingleJointPositionActionResult.h | 56 + .../SingleJointPositionFeedback.h | 140 ++ .../control_msgs/SingleJointPositionGoal.h | 126 + .../control_msgs/SingleJointPositionResult.h | 38 + .../ros_lib/control_toolbox/SetPidGains.h | 216 ++ .../controller_manager_msgs/ControllerState.h | 115 + .../ControllerStatistics.h | 231 ++ .../ControllersStatistics.h | 70 + .../HardwareInterfaceResources.h | 92 + .../ListControllerTypes.h | 144 ++ .../controller_manager_msgs/ListControllers.h | 96 + .../controller_manager_msgs/LoadController.h | 105 + .../ReloadControllerLibraries.h | 106 + .../SwitchController.h | 188 ++ .../UnloadController.h | 105 + .../Resources/ros_lib/costmap_2d/VoxelGrid.h | 128 + .../ros_lib/diagnostic_msgs/AddDiagnostics.h | 122 + .../ros_lib/diagnostic_msgs/DiagnosticArray.h | 70 + .../diagnostic_msgs/DiagnosticStatus.h | 137 ++ .../ros_lib/diagnostic_msgs/KeyValue.h | 72 + .../ros_lib/diagnostic_msgs/SelfTest.h | 131 ++ .../Contents/Resources/ros_lib/duration.cpp | 83 + .../dynamic_reconfigure/BoolParameter.h | 73 + .../ros_lib/dynamic_reconfigure/Config.h | 168 ++ .../dynamic_reconfigure/ConfigDescription.h | 80 + .../dynamic_reconfigure/DoubleParameter.h | 87 + .../ros_lib/dynamic_reconfigure/Group.h | 146 ++ .../ros_lib/dynamic_reconfigure/GroupState.h | 121 + .../dynamic_reconfigure/IntParameter.h | 79 + .../dynamic_reconfigure/ParamDescription.h | 119 + .../ros_lib/dynamic_reconfigure/Reconfigure.h | 81 + .../dynamic_reconfigure/SensorLevels.h | 41 + .../dynamic_reconfigure/StrParameter.h | 72 + .../Resources/ros_lib/embedded_linux_comms.c | 208 ++ .../ros_lib/embedded_linux_hardware.h | 172 ++ .../ros_lib/gazebo_msgs/ApplyBodyWrench.h | 199 ++ .../ros_lib/gazebo_msgs/ApplyJointEffort.h | 202 ++ .../ros_lib/gazebo_msgs/BodyRequest.h | 87 + .../ros_lib/gazebo_msgs/ContactState.h | 223 ++ .../ros_lib/gazebo_msgs/ContactsState.h | 70 + .../ros_lib/gazebo_msgs/DeleteLight.h | 122 + .../ros_lib/gazebo_msgs/DeleteModel.h | 122 + .../ros_lib/gazebo_msgs/GetJointProperties.h | 291 +++ .../ros_lib/gazebo_msgs/GetLightProperties.h | 224 ++ .../ros_lib/gazebo_msgs/GetLinkProperties.h | 370 +++ .../ros_lib/gazebo_msgs/GetLinkState.h | 145 ++ .../ros_lib/gazebo_msgs/GetModelProperties.h | 322 +++ .../ros_lib/gazebo_msgs/GetModelState.h | 157 ++ .../gazebo_msgs/GetPhysicsProperties.h | 199 ++ .../ros_lib/gazebo_msgs/GetWorldProperties.h | 192 ++ .../ros_lib/gazebo_msgs/JointRequest.h | 87 + .../Resources/ros_lib/gazebo_msgs/LinkState.h | 84 + .../ros_lib/gazebo_msgs/LinkStates.h | 127 + .../ros_lib/gazebo_msgs/ModelState.h | 84 + .../ros_lib/gazebo_msgs/ModelStates.h | 127 + .../ros_lib/gazebo_msgs/ODEJointProperties.h | 558 +++++ .../ros_lib/gazebo_msgs/ODEPhysics.h | 287 +++ .../ros_lib/gazebo_msgs/SetJointProperties.h | 128 + .../ros_lib/gazebo_msgs/SetJointTrajectory.h | 170 ++ .../ros_lib/gazebo_msgs/SetLightProperties.h | 224 ++ .../ros_lib/gazebo_msgs/SetLinkProperties.h | 370 +++ .../ros_lib/gazebo_msgs/SetLinkState.h | 111 + .../gazebo_msgs/SetModelConfiguration.h | 228 ++ .../ros_lib/gazebo_msgs/SetModelState.h | 111 + .../gazebo_msgs/SetPhysicsProperties.h | 181 ++ .../ros_lib/gazebo_msgs/SpawnModel.h | 179 ++ .../ros_lib/gazebo_msgs/WorldState.h | 159 ++ .../Resources/ros_lib/geometry_msgs/Accel.h | 49 + .../ros_lib/geometry_msgs/AccelStamped.h | 50 + .../geometry_msgs/AccelWithCovariance.h | 79 + .../AccelWithCovarianceStamped.h | 50 + .../Resources/ros_lib/geometry_msgs/Inertia.h | 268 +++ .../ros_lib/geometry_msgs/InertiaStamped.h | 50 + .../Resources/ros_lib/geometry_msgs/Point.h | 134 ++ .../Resources/ros_lib/geometry_msgs/Point32.h | 110 + .../ros_lib/geometry_msgs/PointStamped.h | 50 + .../Resources/ros_lib/geometry_msgs/Polygon.h | 64 + .../ros_lib/geometry_msgs/PolygonStamped.h | 50 + .../Resources/ros_lib/geometry_msgs/Pose.h | 50 + .../Resources/ros_lib/geometry_msgs/Pose2D.h | 134 ++ .../ros_lib/geometry_msgs/PoseArray.h | 70 + .../ros_lib/geometry_msgs/PoseStamped.h | 50 + .../geometry_msgs/PoseWithCovariance.h | 79 + .../geometry_msgs/PoseWithCovarianceStamped.h | 50 + .../ros_lib/geometry_msgs/Quaternion.h | 166 ++ .../ros_lib/geometry_msgs/QuaternionStamped.h | 50 + .../ros_lib/geometry_msgs/Transform.h | 50 + .../ros_lib/geometry_msgs/TransformStamped.h | 67 + .../Resources/ros_lib/geometry_msgs/Twist.h | 51 + .../ros_lib/geometry_msgs/TwistStamped.h | 50 + .../geometry_msgs/TwistWithCovariance.h | 79 + .../TwistWithCovarianceStamped.h | 50 + .../Resources/ros_lib/geometry_msgs/Vector3.h | 134 ++ .../ros_lib/geometry_msgs/Vector3Stamped.h | 50 + .../Resources/ros_lib/geometry_msgs/Wrench.h | 49 + .../ros_lib/geometry_msgs/WrenchStamped.h | 50 + .../image_exposure_msgs/ExposureSequence.h | 119 + .../ImageExposureStatistics.h | 324 +++ .../SequenceExposureStatistics.h | 250 ++ .../ros_lib/laser_assembler/AssembleScans.h | 123 + .../ros_lib/laser_assembler/AssembleScans2.h | 123 + .../Contents/Resources/ros_lib/main.cpp | 118 + .../Resources/ros_lib/map_msgs/GetMapROI.h | 204 ++ .../Resources/ros_lib/map_msgs/GetPointMap.h | 76 + .../ros_lib/map_msgs/GetPointMapROI.h | 300 +++ .../ros_lib/map_msgs/OccupancyGridUpdate.h | 156 ++ .../ros_lib/map_msgs/PointCloud2Update.h | 65 + .../Resources/ros_lib/map_msgs/ProjectedMap.h | 108 + .../ros_lib/map_msgs/ProjectedMapInfo.h | 247 ++ .../ros_lib/map_msgs/ProjectedMapsInfo.h | 96 + .../Resources/ros_lib/map_msgs/SaveMap.h | 76 + .../ros_lib/map_msgs/SetMapProjections.h | 96 + .../ros_lib/move_base_msgs/MoveBaseAction.h | 56 + .../move_base_msgs/MoveBaseActionFeedback.h | 56 + .../move_base_msgs/MoveBaseActionGoal.h | 56 + .../move_base_msgs/MoveBaseActionResult.h | 56 + .../ros_lib/move_base_msgs/MoveBaseFeedback.h | 44 + .../ros_lib/move_base_msgs/MoveBaseGoal.h | 44 + .../ros_lib/move_base_msgs/MoveBaseResult.h | 38 + .../Resources/ros_lib/nav_msgs/GetMap.h | 76 + .../Resources/ros_lib/nav_msgs/GetMapAction.h | 56 + .../ros_lib/nav_msgs/GetMapActionFeedback.h | 56 + .../ros_lib/nav_msgs/GetMapActionGoal.h | 56 + .../ros_lib/nav_msgs/GetMapActionResult.h | 56 + .../ros_lib/nav_msgs/GetMapFeedback.h | 38 + .../Resources/ros_lib/nav_msgs/GetMapGoal.h | 38 + .../Resources/ros_lib/nav_msgs/GetMapResult.h | 44 + .../Resources/ros_lib/nav_msgs/GetPlan.h | 111 + .../Resources/ros_lib/nav_msgs/GridCells.h | 118 + .../Resources/ros_lib/nav_msgs/MapMetaData.h | 118 + .../ros_lib/nav_msgs/OccupancyGrid.h | 88 + .../Resources/ros_lib/nav_msgs/Odometry.h | 73 + .../Resources/ros_lib/nav_msgs/Path.h | 70 + .../Resources/ros_lib/nav_msgs/SetMap.h | 100 + .../Resources/ros_lib/navfn/MakeNavPlan.h | 130 + .../Resources/ros_lib/navfn/SetCostmap.h | 115 + .../Resources/ros_lib/nodelet/NodeletList.h | 107 + .../Resources/ros_lib/nodelet/NodeletLoad.h | 250 ++ .../Resources/ros_lib/nodelet/NodeletUnload.h | 105 + .../ros_lib/openni2_camera/GetSerial.h | 87 + .../ros_lib/pcl_msgs/ModelCoefficients.h | 88 + .../Resources/ros_lib/pcl_msgs/PointIndices.h | 88 + .../Resources/ros_lib/pcl_msgs/PolygonMesh.h | 76 + .../Resources/ros_lib/pcl_msgs/Vertices.h | 71 + .../ros_lib/polled_camera/GetPolledImage.h | 202 ++ .../ros_lib/py_trees_msgs/Behaviour.h | 183 ++ .../ros_lib/py_trees_msgs/BehaviourTree.h | 70 + .../py_trees_msgs/CloseBlackboardWatcher.h | 105 + .../ros_lib/py_trees_msgs/DockAction.h | 56 + .../py_trees_msgs/DockActionFeedback.h | 56 + .../ros_lib/py_trees_msgs/DockActionGoal.h | 56 + .../ros_lib/py_trees_msgs/DockActionResult.h | 56 + .../ros_lib/py_trees_msgs/DockFeedback.h | 62 + .../ros_lib/py_trees_msgs/DockGoal.h | 56 + .../ros_lib/py_trees_msgs/DockResult.h | 75 + .../py_trees_msgs/GetBlackboardVariables.h | 107 + .../py_trees_msgs/OpenBlackboardWatcher.h | 124 + .../ros_lib/py_trees_msgs/RotateAction.h | 56 + .../py_trees_msgs/RotateActionFeedback.h | 56 + .../ros_lib/py_trees_msgs/RotateActionGoal.h | 56 + .../py_trees_msgs/RotateActionResult.h | 56 + .../ros_lib/py_trees_msgs/RotateFeedback.h | 86 + .../ros_lib/py_trees_msgs/RotateGoal.h | 38 + .../ros_lib/py_trees_msgs/RotateResult.h | 75 + .../ros_lib/robot_pose_ekf/GetStatus.h | 87 + .../rocon_service_pair_msgs/TestiesPair.h | 50 + .../TestiesPairRequest.h | 50 + .../TestiesPairResponse.h | 50 + .../rocon_service_pair_msgs/TestiesRequest.h | 55 + .../rocon_service_pair_msgs/TestiesResponse.h | 61 + .../ros_lib/rocon_std_msgs/Connection.h | 146 ++ .../rocon_std_msgs/ConnectionCacheSpin.h | 86 + .../ros_lib/rocon_std_msgs/ConnectionsDiff.h | 89 + .../ros_lib/rocon_std_msgs/ConnectionsList.h | 64 + .../ros_lib/rocon_std_msgs/EmptyString.h | 87 + .../ros_lib/rocon_std_msgs/Float32Stamped.h | 68 + .../Resources/ros_lib/rocon_std_msgs/Icon.h | 99 + .../ros_lib/rocon_std_msgs/KeyValue.h | 72 + .../ros_lib/rocon_std_msgs/MasterInfo.h | 112 + .../ros_lib/rocon_std_msgs/Remapping.h | 72 + .../ros_lib/rocon_std_msgs/StringArray.h | 75 + .../ros_lib/rocon_std_msgs/Strings.h | 83 + .../ros_lib/rocon_std_msgs/StringsPair.h | 50 + .../rocon_std_msgs/StringsPairRequest.h | 50 + .../rocon_std_msgs/StringsPairResponse.h | 50 + .../ros_lib/rocon_std_msgs/StringsRequest.h | 55 + .../ros_lib/rocon_std_msgs/StringsResponse.h | 55 + .../Contents/Resources/ros_lib/ros.h | 52 + .../Contents/Resources/ros_lib/ros/duration.h | 75 + .../Contents/Resources/ros_lib/ros/msg.h | 148 ++ .../Resources/ros_lib/ros/node_handle.h | 668 ++++++ .../Resources/ros_lib/ros/publisher.h | 74 + .../Resources/ros_lib/ros/service_client.h | 95 + .../Resources/ros_lib/ros/service_server.h | 130 + .../Resources/ros_lib/ros/subscriber.h | 140 ++ .../Contents/Resources/ros_lib/ros/time.h | 82 + .../Contents/Resources/ros_lib/roscpp/Empty.h | 70 + .../Resources/ros_lib/roscpp/GetLoggers.h | 96 + .../Resources/ros_lib/roscpp/Logger.h | 72 + .../Resources/ros_lib/roscpp/SetLoggerLevel.h | 104 + .../ros_lib/roscpp_tutorials/TwoInts.h | 166 ++ .../Resources/ros_lib/rosgraph_msgs/Clock.h | 62 + .../Resources/ros_lib/rosgraph_msgs/Log.h | 185 ++ .../ros_lib/rosgraph_msgs/TopicStatistics.h | 347 +++ .../ros_lib/rospy_tutorials/AddTwoInts.h | 166 ++ .../ros_lib/rospy_tutorials/BadTwoInts.h | 150 ++ .../ros_lib/rospy_tutorials/Floats.h | 82 + .../ros_lib/rospy_tutorials/HeaderString.h | 61 + .../Resources/ros_lib/rosserial_arduino/Adc.h | 92 + .../ros_lib/rosserial_arduino/Test.h | 104 + .../Resources/ros_lib/rosserial_mbed/Adc.h | 92 + .../Resources/ros_lib/rosserial_mbed/Test.h | 104 + .../Resources/ros_lib/rosserial_msgs/Log.h | 67 + .../rosserial_msgs/RequestMessageInfo.h | 121 + .../ros_lib/rosserial_msgs/RequestParam.h | 212 ++ .../rosserial_msgs/RequestServiceInfo.h | 138 ++ .../ros_lib/rosserial_msgs/TopicInfo.h | 130 + .../ros_lib/sensor_msgs/BatteryState.h | 326 +++ .../ros_lib/sensor_msgs/CameraInfo.h | 276 +++ .../ros_lib/sensor_msgs/ChannelFloat32.h | 99 + .../ros_lib/sensor_msgs/CompressedImage.h | 88 + .../ros_lib/sensor_msgs/FluidPressure.h | 108 + .../ros_lib/sensor_msgs/Illuminance.h | 108 + .../Resources/ros_lib/sensor_msgs/Image.h | 134 ++ .../Resources/ros_lib/sensor_msgs/Imu.h | 166 ++ .../ros_lib/sensor_msgs/JointState.h | 237 ++ .../Resources/ros_lib/sensor_msgs/Joy.h | 132 ++ .../ros_lib/sensor_msgs/JoyFeedback.h | 79 + .../ros_lib/sensor_msgs/JoyFeedbackArray.h | 64 + .../Resources/ros_lib/sensor_msgs/LaserEcho.h | 82 + .../Resources/ros_lib/sensor_msgs/LaserScan.h | 300 +++ .../ros_lib/sensor_msgs/MagneticField.h | 85 + .../ros_lib/sensor_msgs/MultiDOFJointState.h | 159 ++ .../ros_lib/sensor_msgs/MultiEchoLaserScan.h | 263 +++ .../Resources/ros_lib/sensor_msgs/NavSatFix.h | 192 ++ .../ros_lib/sensor_msgs/NavSatStatus.h | 73 + .../ros_lib/sensor_msgs/PointCloud.h | 96 + .../ros_lib/sensor_msgs/PointCloud2.h | 185 ++ .../ros_lib/sensor_msgs/PointField.h | 96 + .../Resources/ros_lib/sensor_msgs/Range.h | 149 ++ .../ros_lib/sensor_msgs/RegionOfInterest.h | 108 + .../ros_lib/sensor_msgs/RelativeHumidity.h | 108 + .../ros_lib/sensor_msgs/SetCameraInfo.h | 111 + .../ros_lib/sensor_msgs/Temperature.h | 108 + .../ros_lib/sensor_msgs/TimeReference.h | 85 + .../Resources/ros_lib/shape_msgs/Mesh.h | 90 + .../ros_lib/shape_msgs/MeshTriangle.h | 54 + .../Resources/ros_lib/shape_msgs/Plane.h | 73 + .../ros_lib/shape_msgs/SolidPrimitive.h | 109 + .../SmachContainerInitialStatusCmd.h | 109 + .../ros_lib/smach_msgs/SmachContainerStatus.h | 169 ++ .../smach_msgs/SmachContainerStructure.h | 246 ++ .../ros_lib/statistics_msgs/Stats1D.h | 198 ++ .../Resources/ros_lib/std_msgs/Bool.h | 56 + .../Resources/ros_lib/std_msgs/Byte.h | 56 + .../ros_lib/std_msgs/ByteMultiArray.h | 82 + .../Resources/ros_lib/std_msgs/Char.h | 45 + .../Resources/ros_lib/std_msgs/ColorRGBA.h | 134 ++ .../Resources/ros_lib/std_msgs/Duration.h | 62 + .../Resources/ros_lib/std_msgs/Empty.h | 38 + .../Resources/ros_lib/std_msgs/Float32.h | 62 + .../ros_lib/std_msgs/Float32MultiArray.h | 88 + .../Resources/ros_lib/std_msgs/Float64.h | 70 + .../ros_lib/std_msgs/Float64MultiArray.h | 96 + .../Resources/ros_lib/std_msgs/Header.h | 92 + .../Resources/ros_lib/std_msgs/Int16.h | 58 + .../ros_lib/std_msgs/Int16MultiArray.h | 84 + .../Resources/ros_lib/std_msgs/Int32.h | 62 + .../ros_lib/std_msgs/Int32MultiArray.h | 88 + .../Resources/ros_lib/std_msgs/Int64.h | 70 + .../ros_lib/std_msgs/Int64MultiArray.h | 96 + .../Resources/ros_lib/std_msgs/Int8.h | 56 + .../ros_lib/std_msgs/Int8MultiArray.h | 82 + .../ros_lib/std_msgs/MultiArrayDimension.h | 81 + .../ros_lib/std_msgs/MultiArrayLayout.h | 77 + .../Resources/ros_lib/std_msgs/String.h | 55 + .../Resources/ros_lib/std_msgs/Time.h | 62 + .../Resources/ros_lib/std_msgs/UInt16.h | 47 + .../ros_lib/std_msgs/UInt16MultiArray.h | 73 + .../Resources/ros_lib/std_msgs/UInt32.h | 51 + .../ros_lib/std_msgs/UInt32MultiArray.h | 77 + .../Resources/ros_lib/std_msgs/UInt64.h | 62 + .../ros_lib/std_msgs/UInt64MultiArray.h | 88 + .../Resources/ros_lib/std_msgs/UInt8.h | 45 + .../ros_lib/std_msgs/UInt8MultiArray.h | 71 + .../Resources/ros_lib/std_srvs/Empty.h | 70 + .../Resources/ros_lib/std_srvs/SetBool.h | 123 + .../Resources/ros_lib/std_srvs/Trigger.h | 105 + .../ros_lib/stereo_msgs/DisparityImage.h | 176 ++ .../Resources/ros_lib/tf/FrameGraph.h | 87 + .../Contents/Resources/ros_lib/tf/tf.h | 56 + .../Contents/Resources/ros_lib/tf/tfMessage.h | 64 + .../ros_lib/tf/transform_broadcaster.h | 69 + .../Resources/ros_lib/tf2_msgs/FrameGraph.h | 87 + .../ros_lib/tf2_msgs/LookupTransformAction.h | 56 + .../tf2_msgs/LookupTransformActionFeedback.h | 56 + .../tf2_msgs/LookupTransformActionGoal.h | 56 + .../tf2_msgs/LookupTransformActionResult.h | 56 + .../tf2_msgs/LookupTransformFeedback.h | 38 + .../ros_lib/tf2_msgs/LookupTransformGoal.h | 178 ++ .../ros_lib/tf2_msgs/LookupTransformResult.h | 50 + .../Resources/ros_lib/tf2_msgs/TF2Error.h | 69 + .../Resources/ros_lib/tf2_msgs/TFMessage.h | 64 + .../ros_lib/theora_image_transport/Packet.h | 183 ++ .../Contents/Resources/ros_lib/time.cpp | 70 + .../Resources/ros_lib/topic_tools/DemuxAdd.h | 87 + .../ros_lib/topic_tools/DemuxDelete.h | 87 + .../Resources/ros_lib/topic_tools/DemuxList.h | 107 + .../ros_lib/topic_tools/DemuxSelect.h | 104 + .../Resources/ros_lib/topic_tools/MuxAdd.h | 87 + .../Resources/ros_lib/topic_tools/MuxDelete.h | 87 + .../Resources/ros_lib/topic_tools/MuxList.h | 107 + .../Resources/ros_lib/topic_tools/MuxSelect.h | 104 + .../ros_lib/trajectory_msgs/JointTrajectory.h | 107 + .../trajectory_msgs/JointTrajectoryPoint.h | 270 +++ .../trajectory_msgs/MultiDOFJointTrajectory.h | 107 + .../MultiDOFJointTrajectoryPoint.h | 139 ++ .../ros_lib/turtle_actionlib/ShapeAction.h | 56 + .../turtle_actionlib/ShapeActionFeedback.h | 56 + .../turtle_actionlib/ShapeActionGoal.h | 56 + .../turtle_actionlib/ShapeActionResult.h | 56 + .../ros_lib/turtle_actionlib/ShapeFeedback.h | 38 + .../ros_lib/turtle_actionlib/ShapeGoal.h | 86 + .../ros_lib/turtle_actionlib/ShapeResult.h | 86 + .../ros_lib/turtle_actionlib/Velocity.h | 86 + .../ros_lib/turtlebot3_msgs/MotorPower.h | 47 + .../ros_lib/turtlebot3_msgs/PanoramaImg.h | 180 ++ .../ros_lib/turtlebot3_msgs/SensorState.h | 166 ++ .../ros_lib/turtlebot3_msgs/SetFollowState.h | 88 + .../ros_lib/turtlebot3_msgs/TakePanorama.h | 162 ++ .../ros_lib/turtlebot3_msgs/VersionInfo.h | 89 + .../Resources/ros_lib/turtlesim/Color.h | 59 + .../Resources/ros_lib/turtlesim/Kill.h | 87 + .../Resources/ros_lib/turtlesim/Pose.h | 158 ++ .../Resources/ros_lib/turtlesim/SetPen.h | 105 + .../Resources/ros_lib/turtlesim/Spawn.h | 176 ++ .../ros_lib/turtlesim/TeleportAbsolute.h | 142 ++ .../ros_lib/turtlesim/TeleportRelative.h | 118 + .../Resources/ros_lib/uuid_msgs/UniqueID.h | 48 + .../Resources/ros_lib/variant_msgs/Test.h | 241 ++ .../Resources/ros_lib/variant_msgs/Variant.h | 77 + .../ros_lib/variant_msgs/VariantHeader.h | 90 + .../ros_lib/variant_msgs/VariantType.h | 89 + .../ros_lib/visualization_msgs/ImageMarker.h | 262 +++ .../visualization_msgs/InteractiveMarker.h | 160 ++ .../InteractiveMarkerControl.h | 167 ++ .../InteractiveMarkerFeedback.h | 151 ++ .../InteractiveMarkerInit.h | 105 + .../InteractiveMarkerPose.h | 67 + .../InteractiveMarkerUpdate.h | 177 ++ .../ros_lib/visualization_msgs/Marker.h | 312 +++ .../ros_lib/visualization_msgs/MarkerArray.h | 64 + .../ros_lib/visualization_msgs/MenuEntry.h | 108 + .../wfov_camera_msgs/WFOVCompressedImage.h | 169 ++ .../ros_lib/wfov_camera_msgs/WFOVImage.h | 163 ++ .../ros_lib/wfov_camera_msgs/WFOVTrigger.h | 141 ++ .../cr.robotout.mxo/Contents/Info.plist | 46 + .../Contents/MacOS/cr.robotout | Bin 0 -> 221828 bytes cr/externals/cr.robotout.mxo/Contents/PkgInfo | 1 + .../Resources/ros_lib/actionlib/TestAction.h | 56 + .../ros_lib/actionlib/TestActionFeedback.h | 56 + .../ros_lib/actionlib/TestActionGoal.h | 56 + .../ros_lib/actionlib/TestActionResult.h | 56 + .../ros_lib/actionlib/TestFeedback.h | 62 + .../Resources/ros_lib/actionlib/TestGoal.h | 62 + .../ros_lib/actionlib/TestRequestAction.h | 56 + .../actionlib/TestRequestActionFeedback.h | 56 + .../ros_lib/actionlib/TestRequestActionGoal.h | 56 + .../actionlib/TestRequestActionResult.h | 56 + .../ros_lib/actionlib/TestRequestFeedback.h | 38 + .../ros_lib/actionlib/TestRequestGoal.h | 215 ++ .../ros_lib/actionlib/TestRequestResult.h | 80 + .../Resources/ros_lib/actionlib/TestResult.h | 62 + .../ros_lib/actionlib/TwoIntsAction.h | 56 + .../ros_lib/actionlib/TwoIntsActionFeedback.h | 56 + .../ros_lib/actionlib/TwoIntsActionGoal.h | 56 + .../ros_lib/actionlib/TwoIntsActionResult.h | 56 + .../ros_lib/actionlib/TwoIntsFeedback.h | 38 + .../Resources/ros_lib/actionlib/TwoIntsGoal.h | 102 + .../ros_lib/actionlib/TwoIntsResult.h | 70 + .../Resources/ros_lib/actionlib_msgs/GoalID.h | 79 + .../ros_lib/actionlib_msgs/GoalStatus.h | 78 + .../ros_lib/actionlib_msgs/GoalStatusArray.h | 70 + .../actionlib_tutorials/AveragingAction.h | 56 + .../AveragingActionFeedback.h | 56 + .../actionlib_tutorials/AveragingActionGoal.h | 56 + .../AveragingActionResult.h | 56 + .../actionlib_tutorials/AveragingFeedback.h | 134 ++ .../actionlib_tutorials/AveragingGoal.h | 62 + .../actionlib_tutorials/AveragingResult.h | 86 + .../actionlib_tutorials/FibonacciAction.h | 56 + .../FibonacciActionFeedback.h | 56 + .../actionlib_tutorials/FibonacciActionGoal.h | 56 + .../FibonacciActionResult.h | 56 + .../actionlib_tutorials/FibonacciFeedback.h | 82 + .../actionlib_tutorials/FibonacciGoal.h | 62 + .../actionlib_tutorials/FibonacciResult.h | 82 + .../base_local_planner/Position2DInt.h | 102 + .../Resources/ros_lib/bond/Constants.h | 44 + .../Contents/Resources/ros_lib/bond/Status.h | 144 ++ .../FollowJointTrajectoryAction.h | 56 + .../FollowJointTrajectoryActionFeedback.h | 56 + .../FollowJointTrajectoryActionGoal.h | 56 + .../FollowJointTrajectoryActionResult.h | 56 + .../FollowJointTrajectoryFeedback.h | 97 + .../control_msgs/FollowJointTrajectoryGoal.h | 119 + .../FollowJointTrajectoryResult.h | 85 + .../ros_lib/control_msgs/GripperCommand.h | 102 + .../control_msgs/GripperCommandAction.h | 56 + .../GripperCommandActionFeedback.h | 56 + .../control_msgs/GripperCommandActionGoal.h | 56 + .../control_msgs/GripperCommandActionResult.h | 56 + .../control_msgs/GripperCommandFeedback.h | 138 ++ .../ros_lib/control_msgs/GripperCommandGoal.h | 44 + .../control_msgs/GripperCommandResult.h | 138 ++ .../control_msgs/JointControllerState.h | 382 +++ .../ros_lib/control_msgs/JointTolerance.h | 151 ++ .../control_msgs/JointTrajectoryAction.h | 56 + .../JointTrajectoryActionFeedback.h | 56 + .../control_msgs/JointTrajectoryActionGoal.h | 56 + .../JointTrajectoryActionResult.h | 56 + .../JointTrajectoryControllerState.h | 97 + .../control_msgs/JointTrajectoryFeedback.h | 38 + .../control_msgs/JointTrajectoryGoal.h | 44 + .../control_msgs/JointTrajectoryResult.h | 38 + .../Resources/ros_lib/control_msgs/PidState.h | 420 ++++ .../ros_lib/control_msgs/PointHeadAction.h | 56 + .../control_msgs/PointHeadActionFeedback.h | 56 + .../control_msgs/PointHeadActionGoal.h | 56 + .../control_msgs/PointHeadActionResult.h | 56 + .../ros_lib/control_msgs/PointHeadFeedback.h | 70 + .../ros_lib/control_msgs/PointHeadGoal.h | 123 + .../ros_lib/control_msgs/PointHeadResult.h | 38 + .../control_msgs/QueryCalibrationState.h | 88 + .../control_msgs/QueryTrajectoryState.h | 287 +++ .../control_msgs/SingleJointPositionAction.h | 56 + .../SingleJointPositionActionFeedback.h | 56 + .../SingleJointPositionActionGoal.h | 56 + .../SingleJointPositionActionResult.h | 56 + .../SingleJointPositionFeedback.h | 140 ++ .../control_msgs/SingleJointPositionGoal.h | 126 + .../control_msgs/SingleJointPositionResult.h | 38 + .../ros_lib/control_toolbox/SetPidGains.h | 216 ++ .../controller_manager_msgs/ControllerState.h | 115 + .../ControllerStatistics.h | 231 ++ .../ControllersStatistics.h | 70 + .../HardwareInterfaceResources.h | 92 + .../ListControllerTypes.h | 144 ++ .../controller_manager_msgs/ListControllers.h | 96 + .../controller_manager_msgs/LoadController.h | 105 + .../ReloadControllerLibraries.h | 106 + .../SwitchController.h | 188 ++ .../UnloadController.h | 105 + .../Resources/ros_lib/costmap_2d/VoxelGrid.h | 128 + .../ros_lib/diagnostic_msgs/AddDiagnostics.h | 122 + .../ros_lib/diagnostic_msgs/DiagnosticArray.h | 70 + .../diagnostic_msgs/DiagnosticStatus.h | 137 ++ .../ros_lib/diagnostic_msgs/KeyValue.h | 72 + .../ros_lib/diagnostic_msgs/SelfTest.h | 131 ++ .../Contents/Resources/ros_lib/duration.cpp | 83 + .../dynamic_reconfigure/BoolParameter.h | 73 + .../ros_lib/dynamic_reconfigure/Config.h | 168 ++ .../dynamic_reconfigure/ConfigDescription.h | 80 + .../dynamic_reconfigure/DoubleParameter.h | 87 + .../ros_lib/dynamic_reconfigure/Group.h | 146 ++ .../ros_lib/dynamic_reconfigure/GroupState.h | 121 + .../dynamic_reconfigure/IntParameter.h | 79 + .../dynamic_reconfigure/ParamDescription.h | 119 + .../ros_lib/dynamic_reconfigure/Reconfigure.h | 81 + .../dynamic_reconfigure/SensorLevels.h | 41 + .../dynamic_reconfigure/StrParameter.h | 72 + .../Resources/ros_lib/embedded_linux_comms.c | 208 ++ .../ros_lib/embedded_linux_hardware.h | 172 ++ .../ros_lib/gazebo_msgs/ApplyBodyWrench.h | 199 ++ .../ros_lib/gazebo_msgs/ApplyJointEffort.h | 202 ++ .../ros_lib/gazebo_msgs/BodyRequest.h | 87 + .../ros_lib/gazebo_msgs/ContactState.h | 223 ++ .../ros_lib/gazebo_msgs/ContactsState.h | 70 + .../ros_lib/gazebo_msgs/DeleteLight.h | 122 + .../ros_lib/gazebo_msgs/DeleteModel.h | 122 + .../ros_lib/gazebo_msgs/GetJointProperties.h | 291 +++ .../ros_lib/gazebo_msgs/GetLightProperties.h | 224 ++ .../ros_lib/gazebo_msgs/GetLinkProperties.h | 370 +++ .../ros_lib/gazebo_msgs/GetLinkState.h | 145 ++ .../ros_lib/gazebo_msgs/GetModelProperties.h | 322 +++ .../ros_lib/gazebo_msgs/GetModelState.h | 157 ++ .../gazebo_msgs/GetPhysicsProperties.h | 199 ++ .../ros_lib/gazebo_msgs/GetWorldProperties.h | 192 ++ .../ros_lib/gazebo_msgs/JointRequest.h | 87 + .../Resources/ros_lib/gazebo_msgs/LinkState.h | 84 + .../ros_lib/gazebo_msgs/LinkStates.h | 127 + .../ros_lib/gazebo_msgs/ModelState.h | 84 + .../ros_lib/gazebo_msgs/ModelStates.h | 127 + .../ros_lib/gazebo_msgs/ODEJointProperties.h | 558 +++++ .../ros_lib/gazebo_msgs/ODEPhysics.h | 287 +++ .../ros_lib/gazebo_msgs/SetJointProperties.h | 128 + .../ros_lib/gazebo_msgs/SetJointTrajectory.h | 170 ++ .../ros_lib/gazebo_msgs/SetLightProperties.h | 224 ++ .../ros_lib/gazebo_msgs/SetLinkProperties.h | 370 +++ .../ros_lib/gazebo_msgs/SetLinkState.h | 111 + .../gazebo_msgs/SetModelConfiguration.h | 228 ++ .../ros_lib/gazebo_msgs/SetModelState.h | 111 + .../gazebo_msgs/SetPhysicsProperties.h | 181 ++ .../ros_lib/gazebo_msgs/SpawnModel.h | 179 ++ .../ros_lib/gazebo_msgs/WorldState.h | 159 ++ .../Resources/ros_lib/geometry_msgs/Accel.h | 49 + .../ros_lib/geometry_msgs/AccelStamped.h | 50 + .../geometry_msgs/AccelWithCovariance.h | 79 + .../AccelWithCovarianceStamped.h | 50 + .../Resources/ros_lib/geometry_msgs/Inertia.h | 268 +++ .../ros_lib/geometry_msgs/InertiaStamped.h | 50 + .../Resources/ros_lib/geometry_msgs/Point.h | 134 ++ .../Resources/ros_lib/geometry_msgs/Point32.h | 110 + .../ros_lib/geometry_msgs/PointStamped.h | 50 + .../Resources/ros_lib/geometry_msgs/Polygon.h | 64 + .../ros_lib/geometry_msgs/PolygonStamped.h | 50 + .../Resources/ros_lib/geometry_msgs/Pose.h | 50 + .../Resources/ros_lib/geometry_msgs/Pose2D.h | 134 ++ .../ros_lib/geometry_msgs/PoseArray.h | 70 + .../ros_lib/geometry_msgs/PoseStamped.h | 50 + .../geometry_msgs/PoseWithCovariance.h | 79 + .../geometry_msgs/PoseWithCovarianceStamped.h | 50 + .../ros_lib/geometry_msgs/Quaternion.h | 166 ++ .../ros_lib/geometry_msgs/QuaternionStamped.h | 50 + .../ros_lib/geometry_msgs/Transform.h | 50 + .../ros_lib/geometry_msgs/TransformStamped.h | 67 + .../Resources/ros_lib/geometry_msgs/Twist.h | 51 + .../ros_lib/geometry_msgs/TwistStamped.h | 50 + .../geometry_msgs/TwistWithCovariance.h | 79 + .../TwistWithCovarianceStamped.h | 50 + .../Resources/ros_lib/geometry_msgs/Vector3.h | 134 ++ .../ros_lib/geometry_msgs/Vector3Stamped.h | 50 + .../Resources/ros_lib/geometry_msgs/Wrench.h | 49 + .../ros_lib/geometry_msgs/WrenchStamped.h | 50 + .../image_exposure_msgs/ExposureSequence.h | 119 + .../ImageExposureStatistics.h | 324 +++ .../SequenceExposureStatistics.h | 250 ++ .../ros_lib/laser_assembler/AssembleScans.h | 123 + .../ros_lib/laser_assembler/AssembleScans2.h | 123 + .../Contents/Resources/ros_lib/main.cpp | 118 + .../Resources/ros_lib/map_msgs/GetMapROI.h | 204 ++ .../Resources/ros_lib/map_msgs/GetPointMap.h | 76 + .../ros_lib/map_msgs/GetPointMapROI.h | 300 +++ .../ros_lib/map_msgs/OccupancyGridUpdate.h | 156 ++ .../ros_lib/map_msgs/PointCloud2Update.h | 65 + .../Resources/ros_lib/map_msgs/ProjectedMap.h | 108 + .../ros_lib/map_msgs/ProjectedMapInfo.h | 247 ++ .../ros_lib/map_msgs/ProjectedMapsInfo.h | 96 + .../Resources/ros_lib/map_msgs/SaveMap.h | 76 + .../ros_lib/map_msgs/SetMapProjections.h | 96 + .../ros_lib/move_base_msgs/MoveBaseAction.h | 56 + .../move_base_msgs/MoveBaseActionFeedback.h | 56 + .../move_base_msgs/MoveBaseActionGoal.h | 56 + .../move_base_msgs/MoveBaseActionResult.h | 56 + .../ros_lib/move_base_msgs/MoveBaseFeedback.h | 44 + .../ros_lib/move_base_msgs/MoveBaseGoal.h | 44 + .../ros_lib/move_base_msgs/MoveBaseResult.h | 38 + .../Resources/ros_lib/nav_msgs/GetMap.h | 76 + .../Resources/ros_lib/nav_msgs/GetMapAction.h | 56 + .../ros_lib/nav_msgs/GetMapActionFeedback.h | 56 + .../ros_lib/nav_msgs/GetMapActionGoal.h | 56 + .../ros_lib/nav_msgs/GetMapActionResult.h | 56 + .../ros_lib/nav_msgs/GetMapFeedback.h | 38 + .../Resources/ros_lib/nav_msgs/GetMapGoal.h | 38 + .../Resources/ros_lib/nav_msgs/GetMapResult.h | 44 + .../Resources/ros_lib/nav_msgs/GetPlan.h | 111 + .../Resources/ros_lib/nav_msgs/GridCells.h | 118 + .../Resources/ros_lib/nav_msgs/MapMetaData.h | 118 + .../ros_lib/nav_msgs/OccupancyGrid.h | 88 + .../Resources/ros_lib/nav_msgs/Odometry.h | 73 + .../Resources/ros_lib/nav_msgs/Path.h | 70 + .../Resources/ros_lib/nav_msgs/SetMap.h | 100 + .../Resources/ros_lib/navfn/MakeNavPlan.h | 130 + .../Resources/ros_lib/navfn/SetCostmap.h | 115 + .../Resources/ros_lib/nodelet/NodeletList.h | 107 + .../Resources/ros_lib/nodelet/NodeletLoad.h | 250 ++ .../Resources/ros_lib/nodelet/NodeletUnload.h | 105 + .../ros_lib/openni2_camera/GetSerial.h | 87 + .../ros_lib/pcl_msgs/ModelCoefficients.h | 88 + .../Resources/ros_lib/pcl_msgs/PointIndices.h | 88 + .../Resources/ros_lib/pcl_msgs/PolygonMesh.h | 76 + .../Resources/ros_lib/pcl_msgs/Vertices.h | 71 + .../ros_lib/polled_camera/GetPolledImage.h | 202 ++ .../ros_lib/py_trees_msgs/Behaviour.h | 183 ++ .../ros_lib/py_trees_msgs/BehaviourTree.h | 70 + .../py_trees_msgs/CloseBlackboardWatcher.h | 105 + .../ros_lib/py_trees_msgs/DockAction.h | 56 + .../py_trees_msgs/DockActionFeedback.h | 56 + .../ros_lib/py_trees_msgs/DockActionGoal.h | 56 + .../ros_lib/py_trees_msgs/DockActionResult.h | 56 + .../ros_lib/py_trees_msgs/DockFeedback.h | 62 + .../ros_lib/py_trees_msgs/DockGoal.h | 56 + .../ros_lib/py_trees_msgs/DockResult.h | 75 + .../py_trees_msgs/GetBlackboardVariables.h | 107 + .../py_trees_msgs/OpenBlackboardWatcher.h | 124 + .../ros_lib/py_trees_msgs/RotateAction.h | 56 + .../py_trees_msgs/RotateActionFeedback.h | 56 + .../ros_lib/py_trees_msgs/RotateActionGoal.h | 56 + .../py_trees_msgs/RotateActionResult.h | 56 + .../ros_lib/py_trees_msgs/RotateFeedback.h | 86 + .../ros_lib/py_trees_msgs/RotateGoal.h | 38 + .../ros_lib/py_trees_msgs/RotateResult.h | 75 + .../ros_lib/robot_pose_ekf/GetStatus.h | 87 + .../rocon_service_pair_msgs/TestiesPair.h | 50 + .../TestiesPairRequest.h | 50 + .../TestiesPairResponse.h | 50 + .../rocon_service_pair_msgs/TestiesRequest.h | 55 + .../rocon_service_pair_msgs/TestiesResponse.h | 61 + .../ros_lib/rocon_std_msgs/Connection.h | 146 ++ .../rocon_std_msgs/ConnectionCacheSpin.h | 86 + .../ros_lib/rocon_std_msgs/ConnectionsDiff.h | 89 + .../ros_lib/rocon_std_msgs/ConnectionsList.h | 64 + .../ros_lib/rocon_std_msgs/EmptyString.h | 87 + .../ros_lib/rocon_std_msgs/Float32Stamped.h | 68 + .../Resources/ros_lib/rocon_std_msgs/Icon.h | 99 + .../ros_lib/rocon_std_msgs/KeyValue.h | 72 + .../ros_lib/rocon_std_msgs/MasterInfo.h | 112 + .../ros_lib/rocon_std_msgs/Remapping.h | 72 + .../ros_lib/rocon_std_msgs/StringArray.h | 75 + .../ros_lib/rocon_std_msgs/Strings.h | 83 + .../ros_lib/rocon_std_msgs/StringsPair.h | 50 + .../rocon_std_msgs/StringsPairRequest.h | 50 + .../rocon_std_msgs/StringsPairResponse.h | 50 + .../ros_lib/rocon_std_msgs/StringsRequest.h | 55 + .../ros_lib/rocon_std_msgs/StringsResponse.h | 55 + .../Contents/Resources/ros_lib/ros.h | 52 + .../Contents/Resources/ros_lib/ros/duration.h | 75 + .../Contents/Resources/ros_lib/ros/msg.h | 148 ++ .../Resources/ros_lib/ros/node_handle.h | 668 ++++++ .../Resources/ros_lib/ros/publisher.h | 74 + .../Resources/ros_lib/ros/service_client.h | 95 + .../Resources/ros_lib/ros/service_server.h | 130 + .../Resources/ros_lib/ros/subscriber.h | 140 ++ .../Contents/Resources/ros_lib/ros/time.h | 82 + .../Contents/Resources/ros_lib/roscpp/Empty.h | 70 + .../Resources/ros_lib/roscpp/GetLoggers.h | 96 + .../Resources/ros_lib/roscpp/Logger.h | 72 + .../Resources/ros_lib/roscpp/SetLoggerLevel.h | 104 + .../ros_lib/roscpp_tutorials/TwoInts.h | 166 ++ .../Resources/ros_lib/rosgraph_msgs/Clock.h | 62 + .../Resources/ros_lib/rosgraph_msgs/Log.h | 185 ++ .../ros_lib/rosgraph_msgs/TopicStatistics.h | 347 +++ .../ros_lib/rospy_tutorials/AddTwoInts.h | 166 ++ .../ros_lib/rospy_tutorials/BadTwoInts.h | 150 ++ .../ros_lib/rospy_tutorials/Floats.h | 82 + .../ros_lib/rospy_tutorials/HeaderString.h | 61 + .../Resources/ros_lib/rosserial_arduino/Adc.h | 92 + .../ros_lib/rosserial_arduino/Test.h | 104 + .../Resources/ros_lib/rosserial_mbed/Adc.h | 92 + .../Resources/ros_lib/rosserial_mbed/Test.h | 104 + .../Resources/ros_lib/rosserial_msgs/Log.h | 67 + .../rosserial_msgs/RequestMessageInfo.h | 121 + .../ros_lib/rosserial_msgs/RequestParam.h | 212 ++ .../rosserial_msgs/RequestServiceInfo.h | 138 ++ .../ros_lib/rosserial_msgs/TopicInfo.h | 130 + .../ros_lib/sensor_msgs/BatteryState.h | 326 +++ .../ros_lib/sensor_msgs/CameraInfo.h | 276 +++ .../ros_lib/sensor_msgs/ChannelFloat32.h | 99 + .../ros_lib/sensor_msgs/CompressedImage.h | 88 + .../ros_lib/sensor_msgs/FluidPressure.h | 108 + .../ros_lib/sensor_msgs/Illuminance.h | 108 + .../Resources/ros_lib/sensor_msgs/Image.h | 134 ++ .../Resources/ros_lib/sensor_msgs/Imu.h | 166 ++ .../ros_lib/sensor_msgs/JointState.h | 237 ++ .../Resources/ros_lib/sensor_msgs/Joy.h | 132 ++ .../ros_lib/sensor_msgs/JoyFeedback.h | 79 + .../ros_lib/sensor_msgs/JoyFeedbackArray.h | 64 + .../Resources/ros_lib/sensor_msgs/LaserEcho.h | 82 + .../Resources/ros_lib/sensor_msgs/LaserScan.h | 300 +++ .../ros_lib/sensor_msgs/MagneticField.h | 85 + .../ros_lib/sensor_msgs/MultiDOFJointState.h | 159 ++ .../ros_lib/sensor_msgs/MultiEchoLaserScan.h | 263 +++ .../Resources/ros_lib/sensor_msgs/NavSatFix.h | 192 ++ .../ros_lib/sensor_msgs/NavSatStatus.h | 73 + .../ros_lib/sensor_msgs/PointCloud.h | 96 + .../ros_lib/sensor_msgs/PointCloud2.h | 185 ++ .../ros_lib/sensor_msgs/PointField.h | 96 + .../Resources/ros_lib/sensor_msgs/Range.h | 149 ++ .../ros_lib/sensor_msgs/RegionOfInterest.h | 108 + .../ros_lib/sensor_msgs/RelativeHumidity.h | 108 + .../ros_lib/sensor_msgs/SetCameraInfo.h | 111 + .../ros_lib/sensor_msgs/Temperature.h | 108 + .../ros_lib/sensor_msgs/TimeReference.h | 85 + .../Resources/ros_lib/shape_msgs/Mesh.h | 90 + .../ros_lib/shape_msgs/MeshTriangle.h | 54 + .../Resources/ros_lib/shape_msgs/Plane.h | 73 + .../ros_lib/shape_msgs/SolidPrimitive.h | 109 + .../SmachContainerInitialStatusCmd.h | 109 + .../ros_lib/smach_msgs/SmachContainerStatus.h | 169 ++ .../smach_msgs/SmachContainerStructure.h | 246 ++ .../ros_lib/statistics_msgs/Stats1D.h | 198 ++ .../Resources/ros_lib/std_msgs/Bool.h | 56 + .../Resources/ros_lib/std_msgs/Byte.h | 56 + .../ros_lib/std_msgs/ByteMultiArray.h | 82 + .../Resources/ros_lib/std_msgs/Char.h | 45 + .../Resources/ros_lib/std_msgs/ColorRGBA.h | 134 ++ .../Resources/ros_lib/std_msgs/Duration.h | 62 + .../Resources/ros_lib/std_msgs/Empty.h | 38 + .../Resources/ros_lib/std_msgs/Float32.h | 62 + .../ros_lib/std_msgs/Float32MultiArray.h | 88 + .../Resources/ros_lib/std_msgs/Float64.h | 70 + .../ros_lib/std_msgs/Float64MultiArray.h | 96 + .../Resources/ros_lib/std_msgs/Header.h | 92 + .../Resources/ros_lib/std_msgs/Int16.h | 58 + .../ros_lib/std_msgs/Int16MultiArray.h | 84 + .../Resources/ros_lib/std_msgs/Int32.h | 62 + .../ros_lib/std_msgs/Int32MultiArray.h | 88 + .../Resources/ros_lib/std_msgs/Int64.h | 70 + .../ros_lib/std_msgs/Int64MultiArray.h | 96 + .../Resources/ros_lib/std_msgs/Int8.h | 56 + .../ros_lib/std_msgs/Int8MultiArray.h | 82 + .../ros_lib/std_msgs/MultiArrayDimension.h | 81 + .../ros_lib/std_msgs/MultiArrayLayout.h | 77 + .../Resources/ros_lib/std_msgs/String.h | 55 + .../Resources/ros_lib/std_msgs/Time.h | 62 + .../Resources/ros_lib/std_msgs/UInt16.h | 47 + .../ros_lib/std_msgs/UInt16MultiArray.h | 73 + .../Resources/ros_lib/std_msgs/UInt32.h | 51 + .../ros_lib/std_msgs/UInt32MultiArray.h | 77 + .../Resources/ros_lib/std_msgs/UInt64.h | 62 + .../ros_lib/std_msgs/UInt64MultiArray.h | 88 + .../Resources/ros_lib/std_msgs/UInt8.h | 45 + .../ros_lib/std_msgs/UInt8MultiArray.h | 71 + .../Resources/ros_lib/std_srvs/Empty.h | 70 + .../Resources/ros_lib/std_srvs/SetBool.h | 123 + .../Resources/ros_lib/std_srvs/Trigger.h | 105 + .../ros_lib/stereo_msgs/DisparityImage.h | 176 ++ .../Resources/ros_lib/tf/FrameGraph.h | 87 + .../Contents/Resources/ros_lib/tf/tf.h | 56 + .../Contents/Resources/ros_lib/tf/tfMessage.h | 64 + .../ros_lib/tf/transform_broadcaster.h | 69 + .../Resources/ros_lib/tf2_msgs/FrameGraph.h | 87 + .../ros_lib/tf2_msgs/LookupTransformAction.h | 56 + .../tf2_msgs/LookupTransformActionFeedback.h | 56 + .../tf2_msgs/LookupTransformActionGoal.h | 56 + .../tf2_msgs/LookupTransformActionResult.h | 56 + .../tf2_msgs/LookupTransformFeedback.h | 38 + .../ros_lib/tf2_msgs/LookupTransformGoal.h | 178 ++ .../ros_lib/tf2_msgs/LookupTransformResult.h | 50 + .../Resources/ros_lib/tf2_msgs/TF2Error.h | 69 + .../Resources/ros_lib/tf2_msgs/TFMessage.h | 64 + .../ros_lib/theora_image_transport/Packet.h | 183 ++ .../Contents/Resources/ros_lib/time.cpp | 70 + .../Resources/ros_lib/topic_tools/DemuxAdd.h | 87 + .../ros_lib/topic_tools/DemuxDelete.h | 87 + .../Resources/ros_lib/topic_tools/DemuxList.h | 107 + .../ros_lib/topic_tools/DemuxSelect.h | 104 + .../Resources/ros_lib/topic_tools/MuxAdd.h | 87 + .../Resources/ros_lib/topic_tools/MuxDelete.h | 87 + .../Resources/ros_lib/topic_tools/MuxList.h | 107 + .../Resources/ros_lib/topic_tools/MuxSelect.h | 104 + .../ros_lib/trajectory_msgs/JointTrajectory.h | 107 + .../trajectory_msgs/JointTrajectoryPoint.h | 270 +++ .../trajectory_msgs/MultiDOFJointTrajectory.h | 107 + .../MultiDOFJointTrajectoryPoint.h | 139 ++ .../ros_lib/turtle_actionlib/ShapeAction.h | 56 + .../turtle_actionlib/ShapeActionFeedback.h | 56 + .../turtle_actionlib/ShapeActionGoal.h | 56 + .../turtle_actionlib/ShapeActionResult.h | 56 + .../ros_lib/turtle_actionlib/ShapeFeedback.h | 38 + .../ros_lib/turtle_actionlib/ShapeGoal.h | 86 + .../ros_lib/turtle_actionlib/ShapeResult.h | 86 + .../ros_lib/turtle_actionlib/Velocity.h | 86 + .../ros_lib/turtlebot3_msgs/MotorPower.h | 47 + .../ros_lib/turtlebot3_msgs/PanoramaImg.h | 180 ++ .../ros_lib/turtlebot3_msgs/SensorState.h | 166 ++ .../ros_lib/turtlebot3_msgs/SetFollowState.h | 88 + .../ros_lib/turtlebot3_msgs/TakePanorama.h | 162 ++ .../ros_lib/turtlebot3_msgs/VersionInfo.h | 89 + .../Resources/ros_lib/turtlesim/Color.h | 59 + .../Resources/ros_lib/turtlesim/Kill.h | 87 + .../Resources/ros_lib/turtlesim/Pose.h | 158 ++ .../Resources/ros_lib/turtlesim/SetPen.h | 105 + .../Resources/ros_lib/turtlesim/Spawn.h | 176 ++ .../ros_lib/turtlesim/TeleportAbsolute.h | 142 ++ .../ros_lib/turtlesim/TeleportRelative.h | 118 + .../Resources/ros_lib/uuid_msgs/UniqueID.h | 48 + .../Resources/ros_lib/variant_msgs/Test.h | 241 ++ .../Resources/ros_lib/variant_msgs/Variant.h | 77 + .../ros_lib/variant_msgs/VariantHeader.h | 90 + .../ros_lib/variant_msgs/VariantType.h | 89 + .../ros_lib/visualization_msgs/ImageMarker.h | 262 +++ .../visualization_msgs/InteractiveMarker.h | 160 ++ .../InteractiveMarkerControl.h | 167 ++ .../InteractiveMarkerFeedback.h | 151 ++ .../InteractiveMarkerInit.h | 105 + .../InteractiveMarkerPose.h | 67 + .../InteractiveMarkerUpdate.h | 177 ++ .../ros_lib/visualization_msgs/Marker.h | 312 +++ .../ros_lib/visualization_msgs/MarkerArray.h | 64 + .../ros_lib/visualization_msgs/MenuEntry.h | 108 + .../wfov_camera_msgs/WFOVCompressedImage.h | 169 ++ .../ros_lib/wfov_camera_msgs/WFOVImage.h | 163 ++ .../ros_lib/wfov_camera_msgs/WFOVTrigger.h | 141 ++ .../{cr => arduino}/demo01_IO_complete.maxpat | 0 cr/extras/{cr => arduino}/demo02_LED.maxpat | 0 .../{cr => arduino}/demo03_pushButton.maxpat | 0 cr/extras/{cr => arduino}/demo04_tilt.maxpat | 0 cr/extras/{cr => arduino}/demo05_flex.maxpat | 0 .../{cr => arduino}/demo06_proximity.maxpat | 0 .../{cr => arduino}/demo07_DCmotor.maxpat | 0 .../tutorial01_continuousAndDiscrete.maxpat | 0 .../{cr => arduino}/tutorial02_analog.maxpat | 0 .../{cr => arduino}/tutorial03_digital.maxpat | 0 .../{cr => arduino}/tutorial04_pwm.maxpat | 0 .../{cr => arduino}/tutorial05_servo.maxpat | 0 cr/extras/ros/demo_robotin_imu.maxpat | 1278 ++++++++++ cr/extras/ros/demo_robotin_joints.maxpat | 2083 +++++++++++++++++ cr/extras/ros/demo_robotin_laser.maxpat | 550 +++++ cr/extras/ros/demo_robotin_odometry.maxpat | 2077 ++++++++++++++++ cr/extras/ros/demo_robotin_sensors.maxpat | 405 ++++ cr/extras/ros/demo_robotin_twist.maxpat | 402 ++++ cr/extras/ros/demo_robotout_twist.maxpat | 221 ++ cr/extras/ros/demo_robotout_twist_full.maxpat | 355 +++ .../ros/demo_robotout_twist_sliders.maxpat | 649 +++++ cr/help/cr.robotin.maxhelp | 516 ++++ cr/help/cr.robotout.maxhelp | 412 ++++ cr/release_notes.txt | 7 + cr/version.md | 2 +- .../UserInterfaceState.xcuserstate | Bin 224284 -> 73847 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 16 - .../UserInterfaceState.xcuserstate | Bin 48395 -> 59011 bytes source/cr.robotin/cr.robotin.c | 428 ++++ .../cr.robotin.xcodeproj/project.pbxproj | 221 ++ .../contents.xcworkspacedata | 7 + .../UserInterfaceState.xcuserstate | Bin 0 -> 564052 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 143 ++ .../xcschemes/max-external.xcscheme | 80 + .../xcschemes/xcschememanagement.plist | 22 + source/cr.robotout/cr.robotout.c | 204 ++ .../cr.robotout.xcodeproj/project.pbxproj | 216 ++ .../contents.xcworkspacedata | 7 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + .../UserInterfaceState.xcuserstate | Bin 0 -> 189119 bytes .../WorkspaceSettings.xcsettings | 16 + .../xcdebugger/Breakpoints_v2.xcbkptlist | 5 + .../xcschemes/max-external.xcscheme | 80 + .../xcschemes/xcschememanagement.plist | 24 + source/ros-max-lib/max.c | 157 ++ source/ros-max-lib/max.h | 53 + .../ros-max-lib.xcodeproj/project.pbxproj | 263 +++ .../contents.xcworkspacedata | 7 + .../UserInterfaceState.xcuserstate | Bin 0 -> 59348 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 5 + .../xcschemes/ros-max-lib.xcscheme | 80 + .../xcschemes/xcschememanagement.plist | 22 + .../ros_lib/actionlib/TestAction.h | 56 + .../ros_lib/actionlib/TestActionFeedback.h | 56 + .../ros_lib/actionlib/TestActionGoal.h | 56 + .../ros_lib/actionlib/TestActionResult.h | 56 + .../ros_lib/actionlib/TestFeedback.h | 62 + .../ros-max-lib/ros_lib/actionlib/TestGoal.h | 62 + .../ros_lib/actionlib/TestRequestAction.h | 56 + .../actionlib/TestRequestActionFeedback.h | 56 + .../ros_lib/actionlib/TestRequestActionGoal.h | 56 + .../actionlib/TestRequestActionResult.h | 56 + .../ros_lib/actionlib/TestRequestFeedback.h | 38 + .../ros_lib/actionlib/TestRequestGoal.h | 215 ++ .../ros_lib/actionlib/TestRequestResult.h | 80 + .../ros_lib/actionlib/TestResult.h | 62 + .../ros_lib/actionlib/TwoIntsAction.h | 56 + .../ros_lib/actionlib/TwoIntsActionFeedback.h | 56 + .../ros_lib/actionlib/TwoIntsActionGoal.h | 56 + .../ros_lib/actionlib/TwoIntsActionResult.h | 56 + .../ros_lib/actionlib/TwoIntsFeedback.h | 38 + .../ros_lib/actionlib/TwoIntsGoal.h | 102 + .../ros_lib/actionlib/TwoIntsResult.h | 70 + .../ros_lib/actionlib_msgs/GoalID.h | 79 + .../ros_lib/actionlib_msgs/GoalStatus.h | 78 + .../ros_lib/actionlib_msgs/GoalStatusArray.h | 70 + .../actionlib_tutorials/AveragingAction.h | 56 + .../AveragingActionFeedback.h | 56 + .../actionlib_tutorials/AveragingActionGoal.h | 56 + .../AveragingActionResult.h | 56 + .../actionlib_tutorials/AveragingFeedback.h | 134 ++ .../actionlib_tutorials/AveragingGoal.h | 62 + .../actionlib_tutorials/AveragingResult.h | 86 + .../actionlib_tutorials/FibonacciAction.h | 56 + .../FibonacciActionFeedback.h | 56 + .../actionlib_tutorials/FibonacciActionGoal.h | 56 + .../FibonacciActionResult.h | 56 + .../actionlib_tutorials/FibonacciFeedback.h | 82 + .../actionlib_tutorials/FibonacciGoal.h | 62 + .../actionlib_tutorials/FibonacciResult.h | 82 + .../base_local_planner/Position2DInt.h | 102 + source/ros-max-lib/ros_lib/bond/Constants.h | 44 + source/ros-max-lib/ros_lib/bond/Status.h | 144 ++ .../FollowJointTrajectoryAction.h | 56 + .../FollowJointTrajectoryActionFeedback.h | 56 + .../FollowJointTrajectoryActionGoal.h | 56 + .../FollowJointTrajectoryActionResult.h | 56 + .../FollowJointTrajectoryFeedback.h | 97 + .../control_msgs/FollowJointTrajectoryGoal.h | 119 + .../FollowJointTrajectoryResult.h | 85 + .../ros_lib/control_msgs/GripperCommand.h | 102 + .../control_msgs/GripperCommandAction.h | 56 + .../GripperCommandActionFeedback.h | 56 + .../control_msgs/GripperCommandActionGoal.h | 56 + .../control_msgs/GripperCommandActionResult.h | 56 + .../control_msgs/GripperCommandFeedback.h | 138 ++ .../ros_lib/control_msgs/GripperCommandGoal.h | 44 + .../control_msgs/GripperCommandResult.h | 138 ++ .../control_msgs/JointControllerState.h | 382 +++ .../ros_lib/control_msgs/JointTolerance.h | 151 ++ .../control_msgs/JointTrajectoryAction.h | 56 + .../JointTrajectoryActionFeedback.h | 56 + .../control_msgs/JointTrajectoryActionGoal.h | 56 + .../JointTrajectoryActionResult.h | 56 + .../JointTrajectoryControllerState.h | 97 + .../control_msgs/JointTrajectoryFeedback.h | 38 + .../control_msgs/JointTrajectoryGoal.h | 44 + .../control_msgs/JointTrajectoryResult.h | 38 + .../ros_lib/control_msgs/PidState.h | 420 ++++ .../ros_lib/control_msgs/PointHeadAction.h | 56 + .../control_msgs/PointHeadActionFeedback.h | 56 + .../control_msgs/PointHeadActionGoal.h | 56 + .../control_msgs/PointHeadActionResult.h | 56 + .../ros_lib/control_msgs/PointHeadFeedback.h | 70 + .../ros_lib/control_msgs/PointHeadGoal.h | 123 + .../ros_lib/control_msgs/PointHeadResult.h | 38 + .../control_msgs/QueryCalibrationState.h | 88 + .../control_msgs/QueryTrajectoryState.h | 287 +++ .../control_msgs/SingleJointPositionAction.h | 56 + .../SingleJointPositionActionFeedback.h | 56 + .../SingleJointPositionActionGoal.h | 56 + .../SingleJointPositionActionResult.h | 56 + .../SingleJointPositionFeedback.h | 140 ++ .../control_msgs/SingleJointPositionGoal.h | 126 + .../control_msgs/SingleJointPositionResult.h | 38 + .../ros_lib/control_toolbox/SetPidGains.h | 216 ++ .../controller_manager_msgs/ControllerState.h | 115 + .../ControllerStatistics.h | 231 ++ .../ControllersStatistics.h | 70 + .../HardwareInterfaceResources.h | 92 + .../ListControllerTypes.h | 144 ++ .../controller_manager_msgs/ListControllers.h | 96 + .../controller_manager_msgs/LoadController.h | 105 + .../ReloadControllerLibraries.h | 106 + .../SwitchController.h | 188 ++ .../UnloadController.h | 105 + .../ros_lib/costmap_2d/VoxelGrid.h | 128 + .../ros_lib/diagnostic_msgs/AddDiagnostics.h | 122 + .../ros_lib/diagnostic_msgs/DiagnosticArray.h | 70 + .../diagnostic_msgs/DiagnosticStatus.h | 137 ++ .../ros_lib/diagnostic_msgs/KeyValue.h | 72 + .../ros_lib/diagnostic_msgs/SelfTest.h | 131 ++ source/ros-max-lib/ros_lib/duration.cpp | 83 + .../dynamic_reconfigure/BoolParameter.h | 73 + .../ros_lib/dynamic_reconfigure/Config.h | 168 ++ .../dynamic_reconfigure/ConfigDescription.h | 80 + .../dynamic_reconfigure/DoubleParameter.h | 87 + .../ros_lib/dynamic_reconfigure/Group.h | 146 ++ .../ros_lib/dynamic_reconfigure/GroupState.h | 121 + .../dynamic_reconfigure/IntParameter.h | 79 + .../dynamic_reconfigure/ParamDescription.h | 119 + .../ros_lib/dynamic_reconfigure/Reconfigure.h | 81 + .../dynamic_reconfigure/SensorLevels.h | 41 + .../dynamic_reconfigure/StrParameter.h | 72 + .../ros_lib/embedded_linux_comms.c | 208 ++ .../ros_lib/embedded_linux_hardware.h | 172 ++ .../ros_lib/gazebo_msgs/ApplyBodyWrench.h | 199 ++ .../ros_lib/gazebo_msgs/ApplyJointEffort.h | 202 ++ .../ros_lib/gazebo_msgs/BodyRequest.h | 87 + .../ros_lib/gazebo_msgs/ContactState.h | 223 ++ .../ros_lib/gazebo_msgs/ContactsState.h | 70 + .../ros_lib/gazebo_msgs/DeleteLight.h | 122 + .../ros_lib/gazebo_msgs/DeleteModel.h | 122 + .../ros_lib/gazebo_msgs/GetJointProperties.h | 291 +++ .../ros_lib/gazebo_msgs/GetLightProperties.h | 224 ++ .../ros_lib/gazebo_msgs/GetLinkProperties.h | 370 +++ .../ros_lib/gazebo_msgs/GetLinkState.h | 145 ++ .../ros_lib/gazebo_msgs/GetModelProperties.h | 322 +++ .../ros_lib/gazebo_msgs/GetModelState.h | 157 ++ .../gazebo_msgs/GetPhysicsProperties.h | 199 ++ .../ros_lib/gazebo_msgs/GetWorldProperties.h | 192 ++ .../ros_lib/gazebo_msgs/JointRequest.h | 87 + .../ros_lib/gazebo_msgs/LinkState.h | 84 + .../ros_lib/gazebo_msgs/LinkStates.h | 127 + .../ros_lib/gazebo_msgs/ModelState.h | 84 + .../ros_lib/gazebo_msgs/ModelStates.h | 127 + .../ros_lib/gazebo_msgs/ODEJointProperties.h | 558 +++++ .../ros_lib/gazebo_msgs/ODEPhysics.h | 287 +++ .../ros_lib/gazebo_msgs/SetJointProperties.h | 128 + .../ros_lib/gazebo_msgs/SetJointTrajectory.h | 170 ++ .../ros_lib/gazebo_msgs/SetLightProperties.h | 224 ++ .../ros_lib/gazebo_msgs/SetLinkProperties.h | 370 +++ .../ros_lib/gazebo_msgs/SetLinkState.h | 111 + .../gazebo_msgs/SetModelConfiguration.h | 228 ++ .../ros_lib/gazebo_msgs/SetModelState.h | 111 + .../gazebo_msgs/SetPhysicsProperties.h | 181 ++ .../ros_lib/gazebo_msgs/SpawnModel.h | 179 ++ .../ros_lib/gazebo_msgs/WorldState.h | 159 ++ .../ros-max-lib/ros_lib/geometry_msgs/Accel.h | 49 + .../ros_lib/geometry_msgs/AccelStamped.h | 50 + .../geometry_msgs/AccelWithCovariance.h | 79 + .../AccelWithCovarianceStamped.h | 50 + .../ros_lib/geometry_msgs/Inertia.h | 268 +++ .../ros_lib/geometry_msgs/InertiaStamped.h | 50 + .../ros-max-lib/ros_lib/geometry_msgs/Point.h | 134 ++ .../ros_lib/geometry_msgs/Point32.h | 110 + .../ros_lib/geometry_msgs/PointStamped.h | 50 + .../ros_lib/geometry_msgs/Polygon.h | 64 + .../ros_lib/geometry_msgs/PolygonStamped.h | 50 + .../ros-max-lib/ros_lib/geometry_msgs/Pose.h | 50 + .../ros_lib/geometry_msgs/Pose2D.h | 134 ++ .../ros_lib/geometry_msgs/PoseArray.h | 70 + .../ros_lib/geometry_msgs/PoseStamped.h | 50 + .../geometry_msgs/PoseWithCovariance.h | 79 + .../geometry_msgs/PoseWithCovarianceStamped.h | 50 + .../ros_lib/geometry_msgs/Quaternion.h | 166 ++ .../ros_lib/geometry_msgs/QuaternionStamped.h | 50 + .../ros_lib/geometry_msgs/Transform.h | 50 + .../ros_lib/geometry_msgs/TransformStamped.h | 67 + .../ros-max-lib/ros_lib/geometry_msgs/Twist.h | 51 + .../ros_lib/geometry_msgs/TwistStamped.h | 50 + .../geometry_msgs/TwistWithCovariance.h | 79 + .../TwistWithCovarianceStamped.h | 50 + .../ros_lib/geometry_msgs/Vector3.h | 134 ++ .../ros_lib/geometry_msgs/Vector3Stamped.h | 50 + .../ros_lib/geometry_msgs/Wrench.h | 49 + .../ros_lib/geometry_msgs/WrenchStamped.h | 50 + .../image_exposure_msgs/ExposureSequence.h | 119 + .../ImageExposureStatistics.h | 324 +++ .../SequenceExposureStatistics.h | 250 ++ .../ros_lib/laser_assembler/AssembleScans.h | 123 + .../ros_lib/laser_assembler/AssembleScans2.h | 123 + source/ros-max-lib/ros_lib/main.cpp | 118 + .../ros-max-lib/ros_lib/map_msgs/GetMapROI.h | 204 ++ .../ros_lib/map_msgs/GetPointMap.h | 76 + .../ros_lib/map_msgs/GetPointMapROI.h | 300 +++ .../ros_lib/map_msgs/OccupancyGridUpdate.h | 156 ++ .../ros_lib/map_msgs/PointCloud2Update.h | 65 + .../ros_lib/map_msgs/ProjectedMap.h | 108 + .../ros_lib/map_msgs/ProjectedMapInfo.h | 247 ++ .../ros_lib/map_msgs/ProjectedMapsInfo.h | 96 + source/ros-max-lib/ros_lib/map_msgs/SaveMap.h | 76 + .../ros_lib/map_msgs/SetMapProjections.h | 96 + .../ros_lib/move_base_msgs/MoveBaseAction.h | 56 + .../move_base_msgs/MoveBaseActionFeedback.h | 56 + .../move_base_msgs/MoveBaseActionGoal.h | 56 + .../move_base_msgs/MoveBaseActionResult.h | 56 + .../ros_lib/move_base_msgs/MoveBaseFeedback.h | 44 + .../ros_lib/move_base_msgs/MoveBaseGoal.h | 44 + .../ros_lib/move_base_msgs/MoveBaseResult.h | 38 + source/ros-max-lib/ros_lib/nav_msgs/GetMap.h | 76 + .../ros_lib/nav_msgs/GetMapAction.h | 56 + .../ros_lib/nav_msgs/GetMapActionFeedback.h | 56 + .../ros_lib/nav_msgs/GetMapActionGoal.h | 56 + .../ros_lib/nav_msgs/GetMapActionResult.h | 56 + .../ros_lib/nav_msgs/GetMapFeedback.h | 38 + .../ros-max-lib/ros_lib/nav_msgs/GetMapGoal.h | 38 + .../ros_lib/nav_msgs/GetMapResult.h | 44 + source/ros-max-lib/ros_lib/nav_msgs/GetPlan.h | 111 + .../ros-max-lib/ros_lib/nav_msgs/GridCells.h | 118 + .../ros_lib/nav_msgs/MapMetaData.h | 118 + .../ros_lib/nav_msgs/OccupancyGrid.h | 88 + .../ros-max-lib/ros_lib/nav_msgs/Odometry.h | 73 + source/ros-max-lib/ros_lib/nav_msgs/Path.h | 70 + source/ros-max-lib/ros_lib/nav_msgs/SetMap.h | 100 + .../ros-max-lib/ros_lib/navfn/MakeNavPlan.h | 130 + source/ros-max-lib/ros_lib/navfn/SetCostmap.h | 115 + .../ros-max-lib/ros_lib/nodelet/NodeletList.h | 107 + .../ros-max-lib/ros_lib/nodelet/NodeletLoad.h | 250 ++ .../ros_lib/nodelet/NodeletUnload.h | 105 + .../ros_lib/openni2_camera/GetSerial.h | 87 + .../ros_lib/pcl_msgs/ModelCoefficients.h | 88 + .../ros_lib/pcl_msgs/PointIndices.h | 88 + .../ros_lib/pcl_msgs/PolygonMesh.h | 76 + .../ros-max-lib/ros_lib/pcl_msgs/Vertices.h | 71 + .../ros_lib/polled_camera/GetPolledImage.h | 202 ++ .../ros_lib/py_trees_msgs/Behaviour.h | 183 ++ .../ros_lib/py_trees_msgs/BehaviourTree.h | 70 + .../py_trees_msgs/CloseBlackboardWatcher.h | 105 + .../ros_lib/py_trees_msgs/DockAction.h | 56 + .../py_trees_msgs/DockActionFeedback.h | 56 + .../ros_lib/py_trees_msgs/DockActionGoal.h | 56 + .../ros_lib/py_trees_msgs/DockActionResult.h | 56 + .../ros_lib/py_trees_msgs/DockFeedback.h | 62 + .../ros_lib/py_trees_msgs/DockGoal.h | 56 + .../ros_lib/py_trees_msgs/DockResult.h | 75 + .../py_trees_msgs/GetBlackboardVariables.h | 107 + .../py_trees_msgs/OpenBlackboardWatcher.h | 124 + .../ros_lib/py_trees_msgs/RotateAction.h | 56 + .../py_trees_msgs/RotateActionFeedback.h | 56 + .../ros_lib/py_trees_msgs/RotateActionGoal.h | 56 + .../py_trees_msgs/RotateActionResult.h | 56 + .../ros_lib/py_trees_msgs/RotateFeedback.h | 86 + .../ros_lib/py_trees_msgs/RotateGoal.h | 38 + .../ros_lib/py_trees_msgs/RotateResult.h | 75 + .../ros_lib/robot_pose_ekf/GetStatus.h | 87 + .../rocon_service_pair_msgs/TestiesPair.h | 50 + .../TestiesPairRequest.h | 50 + .../TestiesPairResponse.h | 50 + .../rocon_service_pair_msgs/TestiesRequest.h | 55 + .../rocon_service_pair_msgs/TestiesResponse.h | 61 + .../ros_lib/rocon_std_msgs/Connection.h | 146 ++ .../rocon_std_msgs/ConnectionCacheSpin.h | 86 + .../ros_lib/rocon_std_msgs/ConnectionsDiff.h | 89 + .../ros_lib/rocon_std_msgs/ConnectionsList.h | 64 + .../ros_lib/rocon_std_msgs/EmptyString.h | 87 + .../ros_lib/rocon_std_msgs/Float32Stamped.h | 68 + .../ros-max-lib/ros_lib/rocon_std_msgs/Icon.h | 99 + .../ros_lib/rocon_std_msgs/KeyValue.h | 72 + .../ros_lib/rocon_std_msgs/MasterInfo.h | 112 + .../ros_lib/rocon_std_msgs/Remapping.h | 72 + .../ros_lib/rocon_std_msgs/StringArray.h | 75 + .../ros_lib/rocon_std_msgs/Strings.h | 83 + .../ros_lib/rocon_std_msgs/StringsPair.h | 50 + .../rocon_std_msgs/StringsPairRequest.h | 50 + .../rocon_std_msgs/StringsPairResponse.h | 50 + .../ros_lib/rocon_std_msgs/StringsRequest.h | 55 + .../ros_lib/rocon_std_msgs/StringsResponse.h | 55 + source/ros-max-lib/ros_lib/ros.h | 52 + source/ros-max-lib/ros_lib/ros/duration.h | 75 + source/ros-max-lib/ros_lib/ros/msg.h | 148 ++ source/ros-max-lib/ros_lib/ros/node_handle.h | 668 ++++++ source/ros-max-lib/ros_lib/ros/publisher.h | 74 + .../ros-max-lib/ros_lib/ros/service_client.h | 95 + .../ros-max-lib/ros_lib/ros/service_server.h | 130 + source/ros-max-lib/ros_lib/ros/subscriber.h | 140 ++ source/ros-max-lib/ros_lib/ros/time.h | 82 + source/ros-max-lib/ros_lib/roscpp/Empty.h | 70 + .../ros-max-lib/ros_lib/roscpp/GetLoggers.h | 96 + source/ros-max-lib/ros_lib/roscpp/Logger.h | 72 + .../ros_lib/roscpp/SetLoggerLevel.h | 104 + .../ros_lib/roscpp_tutorials/TwoInts.h | 166 ++ .../ros-max-lib/ros_lib/rosgraph_msgs/Clock.h | 62 + .../ros-max-lib/ros_lib/rosgraph_msgs/Log.h | 185 ++ .../ros_lib/rosgraph_msgs/TopicStatistics.h | 347 +++ .../ros_lib/rospy_tutorials/AddTwoInts.h | 166 ++ .../ros_lib/rospy_tutorials/BadTwoInts.h | 150 ++ .../ros_lib/rospy_tutorials/Floats.h | 82 + .../ros_lib/rospy_tutorials/HeaderString.h | 61 + .../ros_lib/rosserial_arduino/Adc.h | 92 + .../ros_lib/rosserial_arduino/Test.h | 104 + .../ros-max-lib/ros_lib/rosserial_mbed/Adc.h | 92 + .../ros-max-lib/ros_lib/rosserial_mbed/Test.h | 104 + .../ros-max-lib/ros_lib/rosserial_msgs/Log.h | 67 + .../rosserial_msgs/RequestMessageInfo.h | 121 + .../ros_lib/rosserial_msgs/RequestParam.h | 212 ++ .../rosserial_msgs/RequestServiceInfo.h | 138 ++ .../ros_lib/rosserial_msgs/TopicInfo.h | 130 + .../ros_lib/sensor_msgs/BatteryState.h | 326 +++ .../ros_lib/sensor_msgs/CameraInfo.h | 276 +++ .../ros_lib/sensor_msgs/ChannelFloat32.h | 99 + .../ros_lib/sensor_msgs/CompressedImage.h | 88 + .../ros_lib/sensor_msgs/FluidPressure.h | 108 + .../ros_lib/sensor_msgs/Illuminance.h | 108 + .../ros-max-lib/ros_lib/sensor_msgs/Image.h | 134 ++ source/ros-max-lib/ros_lib/sensor_msgs/Imu.h | 166 ++ .../ros_lib/sensor_msgs/JointState.h | 237 ++ source/ros-max-lib/ros_lib/sensor_msgs/Joy.h | 132 ++ .../ros_lib/sensor_msgs/JoyFeedback.h | 79 + .../ros_lib/sensor_msgs/JoyFeedbackArray.h | 64 + .../ros_lib/sensor_msgs/LaserEcho.h | 82 + .../ros_lib/sensor_msgs/LaserScan.h | 300 +++ .../ros_lib/sensor_msgs/MagneticField.h | 85 + .../ros_lib/sensor_msgs/MultiDOFJointState.h | 159 ++ .../ros_lib/sensor_msgs/MultiEchoLaserScan.h | 263 +++ .../ros_lib/sensor_msgs/NavSatFix.h | 192 ++ .../ros_lib/sensor_msgs/NavSatStatus.h | 73 + .../ros_lib/sensor_msgs/PointCloud.h | 96 + .../ros_lib/sensor_msgs/PointCloud2.h | 185 ++ .../ros_lib/sensor_msgs/PointField.h | 96 + .../ros-max-lib/ros_lib/sensor_msgs/Range.h | 149 ++ .../ros_lib/sensor_msgs/RegionOfInterest.h | 108 + .../ros_lib/sensor_msgs/RelativeHumidity.h | 108 + .../ros_lib/sensor_msgs/SetCameraInfo.h | 111 + .../ros_lib/sensor_msgs/Temperature.h | 108 + .../ros_lib/sensor_msgs/TimeReference.h | 85 + source/ros-max-lib/ros_lib/shape_msgs/Mesh.h | 90 + .../ros_lib/shape_msgs/MeshTriangle.h | 54 + source/ros-max-lib/ros_lib/shape_msgs/Plane.h | 73 + .../ros_lib/shape_msgs/SolidPrimitive.h | 109 + .../SmachContainerInitialStatusCmd.h | 109 + .../ros_lib/smach_msgs/SmachContainerStatus.h | 169 ++ .../smach_msgs/SmachContainerStructure.h | 246 ++ .../ros_lib/statistics_msgs/Stats1D.h | 198 ++ source/ros-max-lib/ros_lib/std_msgs/Bool.h | 56 + source/ros-max-lib/ros_lib/std_msgs/Byte.h | 56 + .../ros_lib/std_msgs/ByteMultiArray.h | 82 + source/ros-max-lib/ros_lib/std_msgs/Char.h | 45 + .../ros-max-lib/ros_lib/std_msgs/ColorRGBA.h | 134 ++ .../ros-max-lib/ros_lib/std_msgs/Duration.h | 62 + source/ros-max-lib/ros_lib/std_msgs/Empty.h | 38 + source/ros-max-lib/ros_lib/std_msgs/Float32.h | 62 + .../ros_lib/std_msgs/Float32MultiArray.h | 88 + source/ros-max-lib/ros_lib/std_msgs/Float64.h | 70 + .../ros_lib/std_msgs/Float64MultiArray.h | 96 + source/ros-max-lib/ros_lib/std_msgs/Header.h | 92 + source/ros-max-lib/ros_lib/std_msgs/Int16.h | 58 + .../ros_lib/std_msgs/Int16MultiArray.h | 84 + source/ros-max-lib/ros_lib/std_msgs/Int32.h | 62 + .../ros_lib/std_msgs/Int32MultiArray.h | 88 + source/ros-max-lib/ros_lib/std_msgs/Int64.h | 70 + .../ros_lib/std_msgs/Int64MultiArray.h | 96 + source/ros-max-lib/ros_lib/std_msgs/Int8.h | 56 + .../ros_lib/std_msgs/Int8MultiArray.h | 82 + .../ros_lib/std_msgs/MultiArrayDimension.h | 81 + .../ros_lib/std_msgs/MultiArrayLayout.h | 77 + source/ros-max-lib/ros_lib/std_msgs/String.h | 55 + source/ros-max-lib/ros_lib/std_msgs/Time.h | 62 + source/ros-max-lib/ros_lib/std_msgs/UInt16.h | 47 + .../ros_lib/std_msgs/UInt16MultiArray.h | 73 + source/ros-max-lib/ros_lib/std_msgs/UInt32.h | 51 + .../ros_lib/std_msgs/UInt32MultiArray.h | 77 + source/ros-max-lib/ros_lib/std_msgs/UInt64.h | 62 + .../ros_lib/std_msgs/UInt64MultiArray.h | 88 + source/ros-max-lib/ros_lib/std_msgs/UInt8.h | 45 + .../ros_lib/std_msgs/UInt8MultiArray.h | 71 + source/ros-max-lib/ros_lib/std_srvs/Empty.h | 70 + source/ros-max-lib/ros_lib/std_srvs/SetBool.h | 123 + source/ros-max-lib/ros_lib/std_srvs/Trigger.h | 105 + .../ros_lib/stereo_msgs/DisparityImage.h | 176 ++ source/ros-max-lib/ros_lib/tf/FrameGraph.h | 87 + source/ros-max-lib/ros_lib/tf/tf.h | 56 + source/ros-max-lib/ros_lib/tf/tfMessage.h | 64 + .../ros_lib/tf/transform_broadcaster.h | 69 + .../ros-max-lib/ros_lib/tf2_msgs/FrameGraph.h | 87 + .../ros_lib/tf2_msgs/LookupTransformAction.h | 56 + .../tf2_msgs/LookupTransformActionFeedback.h | 56 + .../tf2_msgs/LookupTransformActionGoal.h | 56 + .../tf2_msgs/LookupTransformActionResult.h | 56 + .../tf2_msgs/LookupTransformFeedback.h | 38 + .../ros_lib/tf2_msgs/LookupTransformGoal.h | 178 ++ .../ros_lib/tf2_msgs/LookupTransformResult.h | 50 + .../ros-max-lib/ros_lib/tf2_msgs/TF2Error.h | 69 + .../ros-max-lib/ros_lib/tf2_msgs/TFMessage.h | 64 + .../ros_lib/theora_image_transport/Packet.h | 183 ++ source/ros-max-lib/ros_lib/time.cpp | 70 + .../ros_lib/topic_tools/DemuxAdd.h | 87 + .../ros_lib/topic_tools/DemuxDelete.h | 87 + .../ros_lib/topic_tools/DemuxList.h | 107 + .../ros_lib/topic_tools/DemuxSelect.h | 104 + .../ros-max-lib/ros_lib/topic_tools/MuxAdd.h | 87 + .../ros_lib/topic_tools/MuxDelete.h | 87 + .../ros-max-lib/ros_lib/topic_tools/MuxList.h | 107 + .../ros_lib/topic_tools/MuxSelect.h | 104 + .../ros_lib/trajectory_msgs/JointTrajectory.h | 107 + .../trajectory_msgs/JointTrajectoryPoint.h | 270 +++ .../trajectory_msgs/MultiDOFJointTrajectory.h | 107 + .../MultiDOFJointTrajectoryPoint.h | 139 ++ .../ros_lib/turtle_actionlib/ShapeAction.h | 56 + .../turtle_actionlib/ShapeActionFeedback.h | 56 + .../turtle_actionlib/ShapeActionGoal.h | 56 + .../turtle_actionlib/ShapeActionResult.h | 56 + .../ros_lib/turtle_actionlib/ShapeFeedback.h | 38 + .../ros_lib/turtle_actionlib/ShapeGoal.h | 86 + .../ros_lib/turtle_actionlib/ShapeResult.h | 86 + .../ros_lib/turtle_actionlib/Velocity.h | 86 + .../ros_lib/turtlebot3_msgs/MotorPower.h | 47 + .../ros_lib/turtlebot3_msgs/PanoramaImg.h | 180 ++ .../ros_lib/turtlebot3_msgs/SensorState.h | 166 ++ .../ros_lib/turtlebot3_msgs/SetFollowState.h | 88 + .../ros_lib/turtlebot3_msgs/TakePanorama.h | 162 ++ .../ros_lib/turtlebot3_msgs/VersionInfo.h | 89 + source/ros-max-lib/ros_lib/turtlesim/Color.h | 59 + source/ros-max-lib/ros_lib/turtlesim/Kill.h | 87 + source/ros-max-lib/ros_lib/turtlesim/Pose.h | 158 ++ source/ros-max-lib/ros_lib/turtlesim/SetPen.h | 105 + source/ros-max-lib/ros_lib/turtlesim/Spawn.h | 176 ++ .../ros_lib/turtlesim/TeleportAbsolute.h | 142 ++ .../ros_lib/turtlesim/TeleportRelative.h | 118 + .../ros-max-lib/ros_lib/uuid_msgs/UniqueID.h | 48 + .../ros-max-lib/ros_lib/variant_msgs/Test.h | 241 ++ .../ros_lib/variant_msgs/Variant.h | 77 + .../ros_lib/variant_msgs/VariantHeader.h | 90 + .../ros_lib/variant_msgs/VariantType.h | 89 + .../ros_lib/visualization_msgs/ImageMarker.h | 262 +++ .../visualization_msgs/InteractiveMarker.h | 160 ++ .../InteractiveMarkerControl.h | 167 ++ .../InteractiveMarkerFeedback.h | 151 ++ .../InteractiveMarkerInit.h | 105 + .../InteractiveMarkerPose.h | 67 + .../InteractiveMarkerUpdate.h | 177 ++ .../ros_lib/visualization_msgs/Marker.h | 312 +++ .../ros_lib/visualization_msgs/MarkerArray.h | 64 + .../ros_lib/visualization_msgs/MenuEntry.h | 108 + .../wfov_camera_msgs/WFOVCompressedImage.h | 169 ++ .../ros_lib/wfov_camera_msgs/WFOVImage.h | 163 ++ .../ros_lib/wfov_camera_msgs/WFOVTrigger.h | 141 ++ source/ros-max-lib/wrapper.cpp | 484 ++++ source/ros-max-lib/wrapper.h | 109 + 1368 files changed, 151002 insertions(+), 17 deletions(-) create mode 100755 cr/docs/cr.robotin.maxref.xml create mode 100755 cr/docs/cr.robotout.maxref.xml create mode 100644 cr/externals/cr.robotin.mxo/Contents/Info.plist create mode 100755 cr/externals/cr.robotin.mxo/Contents/MacOS/cr.robotin create mode 100644 cr/externals/cr.robotin.mxo/Contents/PkgInfo create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestAction.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestActionFeedback.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestActionGoal.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestActionResult.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestFeedback.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestGoal.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestRequestAction.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestRequestActionFeedback.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestRequestActionGoal.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestRequestActionResult.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestRequestFeedback.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestRequestGoal.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestRequestResult.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestResult.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsAction.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsActionFeedback.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsActionGoal.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsActionResult.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsFeedback.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsGoal.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsResult.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_msgs/GoalID.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_msgs/GoalStatus.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_msgs/GoalStatusArray.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingAction.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingActionFeedback.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingActionGoal.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingActionResult.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingFeedback.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingGoal.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingResult.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciAction.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciActionFeedback.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciActionGoal.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciActionResult.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciFeedback.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciGoal.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciResult.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/base_local_planner/Position2DInt.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/bond/Constants.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/bond/Status.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryAction.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryActionFeedback.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryActionGoal.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryActionResult.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryFeedback.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryGoal.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryResult.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommand.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandAction.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandActionFeedback.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandActionGoal.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandActionResult.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandFeedback.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandGoal.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandResult.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/JointControllerState.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/JointTolerance.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryAction.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryActionFeedback.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryActionGoal.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryActionResult.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryControllerState.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryFeedback.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryGoal.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryResult.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/PidState.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadAction.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadActionFeedback.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadActionGoal.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadActionResult.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadFeedback.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadGoal.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadResult.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/QueryCalibrationState.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/QueryTrajectoryState.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionAction.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionActionFeedback.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionActionGoal.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionActionResult.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionFeedback.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionGoal.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionResult.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_toolbox/SetPidGains.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ControllerState.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ControllerStatistics.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ControllersStatistics.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/controller_manager_msgs/HardwareInterfaceResources.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ListControllerTypes.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ListControllers.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/controller_manager_msgs/LoadController.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ReloadControllerLibraries.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/controller_manager_msgs/SwitchController.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/controller_manager_msgs/UnloadController.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/costmap_2d/VoxelGrid.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/diagnostic_msgs/AddDiagnostics.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/diagnostic_msgs/DiagnosticArray.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/diagnostic_msgs/DiagnosticStatus.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/diagnostic_msgs/KeyValue.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/diagnostic_msgs/SelfTest.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/duration.cpp create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/BoolParameter.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/Config.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/ConfigDescription.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/DoubleParameter.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/Group.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/GroupState.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/IntParameter.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/ParamDescription.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/Reconfigure.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/SensorLevels.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/StrParameter.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/embedded_linux_comms.c create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/embedded_linux_hardware.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/ApplyBodyWrench.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/ApplyJointEffort.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/BodyRequest.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/ContactState.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/ContactsState.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/DeleteLight.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/DeleteModel.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetJointProperties.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetLightProperties.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetLinkProperties.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetLinkState.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetModelProperties.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetModelState.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetPhysicsProperties.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetWorldProperties.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/JointRequest.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/LinkState.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/LinkStates.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/ModelState.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/ModelStates.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/ODEJointProperties.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/ODEPhysics.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetJointProperties.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetJointTrajectory.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetLightProperties.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetLinkProperties.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetLinkState.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetModelConfiguration.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetModelState.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetPhysicsProperties.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/SpawnModel.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/WorldState.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Accel.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/AccelStamped.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/AccelWithCovariance.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/AccelWithCovarianceStamped.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Inertia.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/InertiaStamped.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Point.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Point32.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/PointStamped.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Polygon.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/PolygonStamped.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Pose.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Pose2D.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/PoseArray.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/PoseStamped.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/PoseWithCovariance.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/PoseWithCovarianceStamped.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Quaternion.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/QuaternionStamped.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Transform.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/TransformStamped.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Twist.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/TwistStamped.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/TwistWithCovariance.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/TwistWithCovarianceStamped.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Vector3.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Vector3Stamped.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Wrench.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/WrenchStamped.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/image_exposure_msgs/ExposureSequence.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/image_exposure_msgs/ImageExposureStatistics.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/image_exposure_msgs/SequenceExposureStatistics.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/laser_assembler/AssembleScans.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/laser_assembler/AssembleScans2.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/main.cpp create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/map_msgs/GetMapROI.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/map_msgs/GetPointMap.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/map_msgs/GetPointMapROI.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/map_msgs/OccupancyGridUpdate.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/map_msgs/PointCloud2Update.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/map_msgs/ProjectedMap.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/map_msgs/ProjectedMapInfo.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/map_msgs/ProjectedMapsInfo.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/map_msgs/SaveMap.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/map_msgs/SetMapProjections.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseAction.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseActionFeedback.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseActionGoal.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseActionResult.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseFeedback.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseGoal.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseResult.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/GetMap.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapAction.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapActionFeedback.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapActionGoal.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapActionResult.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapFeedback.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapGoal.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapResult.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/GetPlan.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/GridCells.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/MapMetaData.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/OccupancyGrid.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/Odometry.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/Path.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/SetMap.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/navfn/MakeNavPlan.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/navfn/SetCostmap.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nodelet/NodeletList.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nodelet/NodeletLoad.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nodelet/NodeletUnload.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/openni2_camera/GetSerial.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/pcl_msgs/ModelCoefficients.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/pcl_msgs/PointIndices.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/pcl_msgs/PolygonMesh.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/pcl_msgs/Vertices.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/polled_camera/GetPolledImage.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/Behaviour.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/BehaviourTree.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/CloseBlackboardWatcher.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockAction.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockActionFeedback.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockActionGoal.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockActionResult.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockFeedback.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockGoal.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockResult.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/GetBlackboardVariables.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/OpenBlackboardWatcher.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateAction.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateActionFeedback.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateActionGoal.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateActionResult.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateFeedback.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateGoal.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateResult.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/robot_pose_ekf/GetStatus.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_service_pair_msgs/TestiesPair.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_service_pair_msgs/TestiesPairRequest.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_service_pair_msgs/TestiesPairResponse.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_service_pair_msgs/TestiesRequest.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_service_pair_msgs/TestiesResponse.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/Connection.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/ConnectionCacheSpin.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/ConnectionsDiff.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/ConnectionsList.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/EmptyString.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/Float32Stamped.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/Icon.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/KeyValue.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/MasterInfo.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/Remapping.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringArray.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/Strings.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringsPair.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringsPairRequest.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringsPairResponse.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringsRequest.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringsResponse.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/ros.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/ros/duration.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/ros/msg.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/ros/node_handle.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/ros/publisher.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/ros/service_client.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/ros/service_server.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/ros/subscriber.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/ros/time.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/roscpp/Empty.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/roscpp/GetLoggers.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/roscpp/Logger.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/roscpp/SetLoggerLevel.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/roscpp_tutorials/TwoInts.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosgraph_msgs/Clock.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosgraph_msgs/Log.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosgraph_msgs/TopicStatistics.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rospy_tutorials/AddTwoInts.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rospy_tutorials/BadTwoInts.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rospy_tutorials/Floats.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rospy_tutorials/HeaderString.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosserial_arduino/Adc.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosserial_arduino/Test.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosserial_mbed/Adc.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosserial_mbed/Test.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosserial_msgs/Log.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosserial_msgs/RequestMessageInfo.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosserial_msgs/RequestParam.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosserial_msgs/RequestServiceInfo.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosserial_msgs/TopicInfo.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/BatteryState.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/CameraInfo.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/ChannelFloat32.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/CompressedImage.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/FluidPressure.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/Illuminance.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/Image.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/Imu.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/JointState.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/Joy.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/JoyFeedback.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/JoyFeedbackArray.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/LaserEcho.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/LaserScan.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/MagneticField.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/MultiDOFJointState.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/MultiEchoLaserScan.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/NavSatFix.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/NavSatStatus.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/PointCloud.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/PointCloud2.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/PointField.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/Range.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/RegionOfInterest.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/RelativeHumidity.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/SetCameraInfo.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/Temperature.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/TimeReference.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/shape_msgs/Mesh.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/shape_msgs/MeshTriangle.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/shape_msgs/Plane.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/shape_msgs/SolidPrimitive.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/smach_msgs/SmachContainerInitialStatusCmd.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/smach_msgs/SmachContainerStatus.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/smach_msgs/SmachContainerStructure.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/statistics_msgs/Stats1D.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Bool.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Byte.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/ByteMultiArray.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Char.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/ColorRGBA.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Duration.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Empty.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Float32.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Float32MultiArray.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Float64.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Float64MultiArray.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Header.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Int16.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Int16MultiArray.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Int32.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Int32MultiArray.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Int64.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Int64MultiArray.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Int8.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Int8MultiArray.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/MultiArrayDimension.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/MultiArrayLayout.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/String.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Time.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/UInt16.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/UInt16MultiArray.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/UInt32.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/UInt32MultiArray.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/UInt64.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/UInt64MultiArray.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/UInt8.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/UInt8MultiArray.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_srvs/Empty.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_srvs/SetBool.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_srvs/Trigger.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/stereo_msgs/DisparityImage.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf/FrameGraph.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf/tf.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf/tfMessage.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf/transform_broadcaster.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf2_msgs/FrameGraph.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformAction.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformActionFeedback.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformActionGoal.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformActionResult.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformFeedback.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformGoal.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformResult.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf2_msgs/TF2Error.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf2_msgs/TFMessage.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/theora_image_transport/Packet.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/time.cpp create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/topic_tools/DemuxAdd.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/topic_tools/DemuxDelete.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/topic_tools/DemuxList.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/topic_tools/DemuxSelect.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/topic_tools/MuxAdd.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/topic_tools/MuxDelete.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/topic_tools/MuxList.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/topic_tools/MuxSelect.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/trajectory_msgs/JointTrajectory.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/trajectory_msgs/JointTrajectoryPoint.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/trajectory_msgs/MultiDOFJointTrajectory.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/trajectory_msgs/MultiDOFJointTrajectoryPoint.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeAction.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeActionFeedback.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeActionGoal.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeActionResult.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeFeedback.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeGoal.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeResult.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtle_actionlib/Velocity.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/MotorPower.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/PanoramaImg.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/SensorState.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/SetFollowState.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/TakePanorama.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/VersionInfo.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlesim/Color.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlesim/Kill.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlesim/Pose.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlesim/SetPen.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlesim/Spawn.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlesim/TeleportAbsolute.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlesim/TeleportRelative.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/uuid_msgs/UniqueID.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/variant_msgs/Test.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/variant_msgs/Variant.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/variant_msgs/VariantHeader.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/variant_msgs/VariantType.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/visualization_msgs/ImageMarker.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarker.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarkerControl.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarkerFeedback.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarkerInit.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarkerPose.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarkerUpdate.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/visualization_msgs/Marker.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/visualization_msgs/MarkerArray.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/visualization_msgs/MenuEntry.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/wfov_camera_msgs/WFOVCompressedImage.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/wfov_camera_msgs/WFOVImage.h create mode 100644 cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/wfov_camera_msgs/WFOVTrigger.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Info.plist create mode 100755 cr/externals/cr.robotout.mxo/Contents/MacOS/cr.robotout create mode 100644 cr/externals/cr.robotout.mxo/Contents/PkgInfo create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestAction.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestActionFeedback.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestActionGoal.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestActionResult.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestFeedback.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestGoal.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestRequestAction.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestRequestActionFeedback.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestRequestActionGoal.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestRequestActionResult.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestRequestFeedback.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestRequestGoal.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestRequestResult.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestResult.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsAction.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsActionFeedback.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsActionGoal.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsActionResult.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsFeedback.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsGoal.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsResult.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_msgs/GoalID.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_msgs/GoalStatus.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_msgs/GoalStatusArray.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingAction.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingActionFeedback.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingActionGoal.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingActionResult.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingFeedback.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingGoal.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingResult.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciAction.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciActionFeedback.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciActionGoal.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciActionResult.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciFeedback.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciGoal.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciResult.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/base_local_planner/Position2DInt.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/bond/Constants.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/bond/Status.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryAction.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryActionFeedback.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryActionGoal.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryActionResult.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryFeedback.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryGoal.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryResult.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommand.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandAction.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandActionFeedback.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandActionGoal.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandActionResult.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandFeedback.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandGoal.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandResult.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/JointControllerState.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/JointTolerance.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryAction.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryActionFeedback.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryActionGoal.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryActionResult.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryControllerState.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryFeedback.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryGoal.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryResult.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/PidState.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadAction.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadActionFeedback.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadActionGoal.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadActionResult.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadFeedback.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadGoal.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadResult.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/QueryCalibrationState.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/QueryTrajectoryState.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionAction.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionActionFeedback.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionActionGoal.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionActionResult.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionFeedback.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionGoal.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionResult.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_toolbox/SetPidGains.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ControllerState.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ControllerStatistics.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ControllersStatistics.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/controller_manager_msgs/HardwareInterfaceResources.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ListControllerTypes.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ListControllers.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/controller_manager_msgs/LoadController.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ReloadControllerLibraries.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/controller_manager_msgs/SwitchController.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/controller_manager_msgs/UnloadController.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/costmap_2d/VoxelGrid.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/diagnostic_msgs/AddDiagnostics.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/diagnostic_msgs/DiagnosticArray.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/diagnostic_msgs/DiagnosticStatus.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/diagnostic_msgs/KeyValue.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/diagnostic_msgs/SelfTest.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/duration.cpp create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/BoolParameter.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/Config.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/ConfigDescription.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/DoubleParameter.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/Group.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/GroupState.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/IntParameter.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/ParamDescription.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/Reconfigure.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/SensorLevels.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/StrParameter.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/embedded_linux_comms.c create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/embedded_linux_hardware.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/ApplyBodyWrench.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/ApplyJointEffort.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/BodyRequest.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/ContactState.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/ContactsState.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/DeleteLight.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/DeleteModel.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetJointProperties.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetLightProperties.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetLinkProperties.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetLinkState.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetModelProperties.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetModelState.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetPhysicsProperties.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetWorldProperties.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/JointRequest.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/LinkState.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/LinkStates.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/ModelState.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/ModelStates.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/ODEJointProperties.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/ODEPhysics.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetJointProperties.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetJointTrajectory.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetLightProperties.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetLinkProperties.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetLinkState.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetModelConfiguration.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetModelState.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetPhysicsProperties.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/SpawnModel.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/WorldState.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Accel.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/AccelStamped.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/AccelWithCovariance.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/AccelWithCovarianceStamped.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Inertia.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/InertiaStamped.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Point.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Point32.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/PointStamped.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Polygon.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/PolygonStamped.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Pose.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Pose2D.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/PoseArray.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/PoseStamped.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/PoseWithCovariance.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/PoseWithCovarianceStamped.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Quaternion.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/QuaternionStamped.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Transform.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/TransformStamped.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Twist.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/TwistStamped.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/TwistWithCovariance.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/TwistWithCovarianceStamped.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Vector3.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Vector3Stamped.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Wrench.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/WrenchStamped.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/image_exposure_msgs/ExposureSequence.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/image_exposure_msgs/ImageExposureStatistics.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/image_exposure_msgs/SequenceExposureStatistics.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/laser_assembler/AssembleScans.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/laser_assembler/AssembleScans2.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/main.cpp create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/map_msgs/GetMapROI.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/map_msgs/GetPointMap.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/map_msgs/GetPointMapROI.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/map_msgs/OccupancyGridUpdate.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/map_msgs/PointCloud2Update.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/map_msgs/ProjectedMap.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/map_msgs/ProjectedMapInfo.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/map_msgs/ProjectedMapsInfo.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/map_msgs/SaveMap.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/map_msgs/SetMapProjections.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseAction.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseActionFeedback.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseActionGoal.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseActionResult.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseFeedback.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseGoal.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseResult.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/GetMap.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapAction.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapActionFeedback.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapActionGoal.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapActionResult.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapFeedback.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapGoal.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapResult.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/GetPlan.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/GridCells.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/MapMetaData.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/OccupancyGrid.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/Odometry.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/Path.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/SetMap.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/navfn/MakeNavPlan.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/navfn/SetCostmap.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nodelet/NodeletList.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nodelet/NodeletLoad.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nodelet/NodeletUnload.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/openni2_camera/GetSerial.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/pcl_msgs/ModelCoefficients.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/pcl_msgs/PointIndices.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/pcl_msgs/PolygonMesh.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/pcl_msgs/Vertices.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/polled_camera/GetPolledImage.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/Behaviour.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/BehaviourTree.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/CloseBlackboardWatcher.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockAction.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockActionFeedback.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockActionGoal.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockActionResult.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockFeedback.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockGoal.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockResult.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/GetBlackboardVariables.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/OpenBlackboardWatcher.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateAction.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateActionFeedback.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateActionGoal.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateActionResult.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateFeedback.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateGoal.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateResult.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/robot_pose_ekf/GetStatus.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_service_pair_msgs/TestiesPair.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_service_pair_msgs/TestiesPairRequest.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_service_pair_msgs/TestiesPairResponse.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_service_pair_msgs/TestiesRequest.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_service_pair_msgs/TestiesResponse.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/Connection.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/ConnectionCacheSpin.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/ConnectionsDiff.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/ConnectionsList.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/EmptyString.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/Float32Stamped.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/Icon.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/KeyValue.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/MasterInfo.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/Remapping.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringArray.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/Strings.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringsPair.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringsPairRequest.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringsPairResponse.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringsRequest.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringsResponse.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/ros.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/ros/duration.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/ros/msg.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/ros/node_handle.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/ros/publisher.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/ros/service_client.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/ros/service_server.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/ros/subscriber.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/ros/time.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/roscpp/Empty.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/roscpp/GetLoggers.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/roscpp/Logger.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/roscpp/SetLoggerLevel.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/roscpp_tutorials/TwoInts.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosgraph_msgs/Clock.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosgraph_msgs/Log.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosgraph_msgs/TopicStatistics.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rospy_tutorials/AddTwoInts.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rospy_tutorials/BadTwoInts.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rospy_tutorials/Floats.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rospy_tutorials/HeaderString.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosserial_arduino/Adc.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosserial_arduino/Test.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosserial_mbed/Adc.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosserial_mbed/Test.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosserial_msgs/Log.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosserial_msgs/RequestMessageInfo.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosserial_msgs/RequestParam.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosserial_msgs/RequestServiceInfo.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosserial_msgs/TopicInfo.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/BatteryState.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/CameraInfo.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/ChannelFloat32.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/CompressedImage.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/FluidPressure.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/Illuminance.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/Image.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/Imu.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/JointState.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/Joy.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/JoyFeedback.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/JoyFeedbackArray.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/LaserEcho.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/LaserScan.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/MagneticField.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/MultiDOFJointState.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/MultiEchoLaserScan.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/NavSatFix.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/NavSatStatus.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/PointCloud.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/PointCloud2.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/PointField.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/Range.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/RegionOfInterest.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/RelativeHumidity.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/SetCameraInfo.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/Temperature.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/TimeReference.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/shape_msgs/Mesh.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/shape_msgs/MeshTriangle.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/shape_msgs/Plane.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/shape_msgs/SolidPrimitive.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/smach_msgs/SmachContainerInitialStatusCmd.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/smach_msgs/SmachContainerStatus.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/smach_msgs/SmachContainerStructure.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/statistics_msgs/Stats1D.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Bool.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Byte.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/ByteMultiArray.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Char.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/ColorRGBA.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Duration.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Empty.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Float32.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Float32MultiArray.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Float64.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Float64MultiArray.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Header.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Int16.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Int16MultiArray.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Int32.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Int32MultiArray.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Int64.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Int64MultiArray.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Int8.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Int8MultiArray.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/MultiArrayDimension.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/MultiArrayLayout.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/String.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Time.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/UInt16.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/UInt16MultiArray.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/UInt32.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/UInt32MultiArray.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/UInt64.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/UInt64MultiArray.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/UInt8.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/UInt8MultiArray.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_srvs/Empty.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_srvs/SetBool.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_srvs/Trigger.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/stereo_msgs/DisparityImage.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf/FrameGraph.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf/tf.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf/tfMessage.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf/transform_broadcaster.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf2_msgs/FrameGraph.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformAction.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformActionFeedback.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformActionGoal.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformActionResult.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformFeedback.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformGoal.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformResult.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf2_msgs/TF2Error.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf2_msgs/TFMessage.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/theora_image_transport/Packet.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/time.cpp create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/topic_tools/DemuxAdd.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/topic_tools/DemuxDelete.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/topic_tools/DemuxList.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/topic_tools/DemuxSelect.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/topic_tools/MuxAdd.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/topic_tools/MuxDelete.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/topic_tools/MuxList.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/topic_tools/MuxSelect.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/trajectory_msgs/JointTrajectory.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/trajectory_msgs/JointTrajectoryPoint.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/trajectory_msgs/MultiDOFJointTrajectory.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/trajectory_msgs/MultiDOFJointTrajectoryPoint.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeAction.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeActionFeedback.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeActionGoal.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeActionResult.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeFeedback.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeGoal.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeResult.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtle_actionlib/Velocity.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/MotorPower.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/PanoramaImg.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/SensorState.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/SetFollowState.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/TakePanorama.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/VersionInfo.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlesim/Color.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlesim/Kill.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlesim/Pose.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlesim/SetPen.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlesim/Spawn.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlesim/TeleportAbsolute.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlesim/TeleportRelative.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/uuid_msgs/UniqueID.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/variant_msgs/Test.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/variant_msgs/Variant.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/variant_msgs/VariantHeader.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/variant_msgs/VariantType.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/visualization_msgs/ImageMarker.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarker.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarkerControl.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarkerFeedback.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarkerInit.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarkerPose.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarkerUpdate.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/visualization_msgs/Marker.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/visualization_msgs/MarkerArray.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/visualization_msgs/MenuEntry.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/wfov_camera_msgs/WFOVCompressedImage.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/wfov_camera_msgs/WFOVImage.h create mode 100644 cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/wfov_camera_msgs/WFOVTrigger.h rename cr/extras/{cr => arduino}/demo01_IO_complete.maxpat (100%) rename cr/extras/{cr => arduino}/demo02_LED.maxpat (100%) rename cr/extras/{cr => arduino}/demo03_pushButton.maxpat (100%) rename cr/extras/{cr => arduino}/demo04_tilt.maxpat (100%) rename cr/extras/{cr => arduino}/demo05_flex.maxpat (100%) rename cr/extras/{cr => arduino}/demo06_proximity.maxpat (100%) rename cr/extras/{cr => arduino}/demo07_DCmotor.maxpat (100%) rename cr/extras/{cr => arduino}/tutorial01_continuousAndDiscrete.maxpat (100%) rename cr/extras/{cr => arduino}/tutorial02_analog.maxpat (100%) rename cr/extras/{cr => arduino}/tutorial03_digital.maxpat (100%) rename cr/extras/{cr => arduino}/tutorial04_pwm.maxpat (100%) rename cr/extras/{cr => arduino}/tutorial05_servo.maxpat (100%) create mode 100644 cr/extras/ros/demo_robotin_imu.maxpat create mode 100644 cr/extras/ros/demo_robotin_joints.maxpat create mode 100644 cr/extras/ros/demo_robotin_laser.maxpat create mode 100644 cr/extras/ros/demo_robotin_odometry.maxpat create mode 100644 cr/extras/ros/demo_robotin_sensors.maxpat create mode 100644 cr/extras/ros/demo_robotin_twist.maxpat create mode 100644 cr/extras/ros/demo_robotout_twist.maxpat create mode 100644 cr/extras/ros/demo_robotout_twist_full.maxpat create mode 100644 cr/extras/ros/demo_robotout_twist_sliders.maxpat create mode 100644 cr/help/cr.robotin.maxhelp create mode 100644 cr/help/cr.robotout.maxhelp create mode 100755 source/cr.robotin/cr.robotin.c create mode 100755 source/cr.robotin/cr.robotin.xcodeproj/project.pbxproj create mode 100644 source/cr.robotin/cr.robotin.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 source/cr.robotin/cr.robotin.xcodeproj/project.xcworkspace/xcuserdata/orly.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 source/cr.robotin/cr.robotin.xcodeproj/xcuserdata/orly.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist create mode 100644 source/cr.robotin/cr.robotin.xcodeproj/xcuserdata/orly.xcuserdatad/xcschemes/max-external.xcscheme create mode 100644 source/cr.robotin/cr.robotin.xcodeproj/xcuserdata/orly.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100755 source/cr.robotout/cr.robotout.c create mode 100755 source/cr.robotout/cr.robotout.xcodeproj/project.pbxproj create mode 100644 source/cr.robotout/cr.robotout.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 source/cr.robotout/cr.robotout.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 source/cr.robotout/cr.robotout.xcodeproj/project.xcworkspace/xcuserdata/orly.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 source/cr.robotout/cr.robotout.xcodeproj/project.xcworkspace/xcuserdata/orly.xcuserdatad/WorkspaceSettings.xcsettings create mode 100644 source/cr.robotout/cr.robotout.xcodeproj/xcuserdata/orly.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist create mode 100644 source/cr.robotout/cr.robotout.xcodeproj/xcuserdata/orly.xcuserdatad/xcschemes/max-external.xcscheme create mode 100644 source/cr.robotout/cr.robotout.xcodeproj/xcuserdata/orly.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 source/ros-max-lib/max.c create mode 100644 source/ros-max-lib/max.h create mode 100644 source/ros-max-lib/ros-max-lib.xcodeproj/project.pbxproj create mode 100644 source/ros-max-lib/ros-max-lib.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 source/ros-max-lib/ros-max-lib.xcodeproj/project.xcworkspace/xcuserdata/orly.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 source/ros-max-lib/ros-max-lib.xcodeproj/xcuserdata/orly.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist create mode 100644 source/ros-max-lib/ros-max-lib.xcodeproj/xcuserdata/orly.xcuserdatad/xcschemes/ros-max-lib.xcscheme create mode 100644 source/ros-max-lib/ros-max-lib.xcodeproj/xcuserdata/orly.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 source/ros-max-lib/ros_lib/actionlib/TestAction.h create mode 100644 source/ros-max-lib/ros_lib/actionlib/TestActionFeedback.h create mode 100644 source/ros-max-lib/ros_lib/actionlib/TestActionGoal.h create mode 100644 source/ros-max-lib/ros_lib/actionlib/TestActionResult.h create mode 100644 source/ros-max-lib/ros_lib/actionlib/TestFeedback.h create mode 100644 source/ros-max-lib/ros_lib/actionlib/TestGoal.h create mode 100644 source/ros-max-lib/ros_lib/actionlib/TestRequestAction.h create mode 100644 source/ros-max-lib/ros_lib/actionlib/TestRequestActionFeedback.h create mode 100644 source/ros-max-lib/ros_lib/actionlib/TestRequestActionGoal.h create mode 100644 source/ros-max-lib/ros_lib/actionlib/TestRequestActionResult.h create mode 100644 source/ros-max-lib/ros_lib/actionlib/TestRequestFeedback.h create mode 100644 source/ros-max-lib/ros_lib/actionlib/TestRequestGoal.h create mode 100644 source/ros-max-lib/ros_lib/actionlib/TestRequestResult.h create mode 100644 source/ros-max-lib/ros_lib/actionlib/TestResult.h create mode 100644 source/ros-max-lib/ros_lib/actionlib/TwoIntsAction.h create mode 100644 source/ros-max-lib/ros_lib/actionlib/TwoIntsActionFeedback.h create mode 100644 source/ros-max-lib/ros_lib/actionlib/TwoIntsActionGoal.h create mode 100644 source/ros-max-lib/ros_lib/actionlib/TwoIntsActionResult.h create mode 100644 source/ros-max-lib/ros_lib/actionlib/TwoIntsFeedback.h create mode 100644 source/ros-max-lib/ros_lib/actionlib/TwoIntsGoal.h create mode 100644 source/ros-max-lib/ros_lib/actionlib/TwoIntsResult.h create mode 100644 source/ros-max-lib/ros_lib/actionlib_msgs/GoalID.h create mode 100644 source/ros-max-lib/ros_lib/actionlib_msgs/GoalStatus.h create mode 100644 source/ros-max-lib/ros_lib/actionlib_msgs/GoalStatusArray.h create mode 100644 source/ros-max-lib/ros_lib/actionlib_tutorials/AveragingAction.h create mode 100644 source/ros-max-lib/ros_lib/actionlib_tutorials/AveragingActionFeedback.h create mode 100644 source/ros-max-lib/ros_lib/actionlib_tutorials/AveragingActionGoal.h create mode 100644 source/ros-max-lib/ros_lib/actionlib_tutorials/AveragingActionResult.h create mode 100644 source/ros-max-lib/ros_lib/actionlib_tutorials/AveragingFeedback.h create mode 100644 source/ros-max-lib/ros_lib/actionlib_tutorials/AveragingGoal.h create mode 100644 source/ros-max-lib/ros_lib/actionlib_tutorials/AveragingResult.h create mode 100644 source/ros-max-lib/ros_lib/actionlib_tutorials/FibonacciAction.h create mode 100644 source/ros-max-lib/ros_lib/actionlib_tutorials/FibonacciActionFeedback.h create mode 100644 source/ros-max-lib/ros_lib/actionlib_tutorials/FibonacciActionGoal.h create mode 100644 source/ros-max-lib/ros_lib/actionlib_tutorials/FibonacciActionResult.h create mode 100644 source/ros-max-lib/ros_lib/actionlib_tutorials/FibonacciFeedback.h create mode 100644 source/ros-max-lib/ros_lib/actionlib_tutorials/FibonacciGoal.h create mode 100644 source/ros-max-lib/ros_lib/actionlib_tutorials/FibonacciResult.h create mode 100644 source/ros-max-lib/ros_lib/base_local_planner/Position2DInt.h create mode 100644 source/ros-max-lib/ros_lib/bond/Constants.h create mode 100644 source/ros-max-lib/ros_lib/bond/Status.h create mode 100644 source/ros-max-lib/ros_lib/control_msgs/FollowJointTrajectoryAction.h create mode 100644 source/ros-max-lib/ros_lib/control_msgs/FollowJointTrajectoryActionFeedback.h create mode 100644 source/ros-max-lib/ros_lib/control_msgs/FollowJointTrajectoryActionGoal.h create mode 100644 source/ros-max-lib/ros_lib/control_msgs/FollowJointTrajectoryActionResult.h create mode 100644 source/ros-max-lib/ros_lib/control_msgs/FollowJointTrajectoryFeedback.h create mode 100644 source/ros-max-lib/ros_lib/control_msgs/FollowJointTrajectoryGoal.h create mode 100644 source/ros-max-lib/ros_lib/control_msgs/FollowJointTrajectoryResult.h create mode 100644 source/ros-max-lib/ros_lib/control_msgs/GripperCommand.h create mode 100644 source/ros-max-lib/ros_lib/control_msgs/GripperCommandAction.h create mode 100644 source/ros-max-lib/ros_lib/control_msgs/GripperCommandActionFeedback.h create mode 100644 source/ros-max-lib/ros_lib/control_msgs/GripperCommandActionGoal.h create mode 100644 source/ros-max-lib/ros_lib/control_msgs/GripperCommandActionResult.h create mode 100644 source/ros-max-lib/ros_lib/control_msgs/GripperCommandFeedback.h create mode 100644 source/ros-max-lib/ros_lib/control_msgs/GripperCommandGoal.h create mode 100644 source/ros-max-lib/ros_lib/control_msgs/GripperCommandResult.h create mode 100644 source/ros-max-lib/ros_lib/control_msgs/JointControllerState.h create mode 100644 source/ros-max-lib/ros_lib/control_msgs/JointTolerance.h create mode 100644 source/ros-max-lib/ros_lib/control_msgs/JointTrajectoryAction.h create mode 100644 source/ros-max-lib/ros_lib/control_msgs/JointTrajectoryActionFeedback.h create mode 100644 source/ros-max-lib/ros_lib/control_msgs/JointTrajectoryActionGoal.h create mode 100644 source/ros-max-lib/ros_lib/control_msgs/JointTrajectoryActionResult.h create mode 100644 source/ros-max-lib/ros_lib/control_msgs/JointTrajectoryControllerState.h create mode 100644 source/ros-max-lib/ros_lib/control_msgs/JointTrajectoryFeedback.h create mode 100644 source/ros-max-lib/ros_lib/control_msgs/JointTrajectoryGoal.h create mode 100644 source/ros-max-lib/ros_lib/control_msgs/JointTrajectoryResult.h create mode 100644 source/ros-max-lib/ros_lib/control_msgs/PidState.h create mode 100644 source/ros-max-lib/ros_lib/control_msgs/PointHeadAction.h create mode 100644 source/ros-max-lib/ros_lib/control_msgs/PointHeadActionFeedback.h create mode 100644 source/ros-max-lib/ros_lib/control_msgs/PointHeadActionGoal.h create mode 100644 source/ros-max-lib/ros_lib/control_msgs/PointHeadActionResult.h create mode 100644 source/ros-max-lib/ros_lib/control_msgs/PointHeadFeedback.h create mode 100644 source/ros-max-lib/ros_lib/control_msgs/PointHeadGoal.h create mode 100644 source/ros-max-lib/ros_lib/control_msgs/PointHeadResult.h create mode 100644 source/ros-max-lib/ros_lib/control_msgs/QueryCalibrationState.h create mode 100644 source/ros-max-lib/ros_lib/control_msgs/QueryTrajectoryState.h create mode 100644 source/ros-max-lib/ros_lib/control_msgs/SingleJointPositionAction.h create mode 100644 source/ros-max-lib/ros_lib/control_msgs/SingleJointPositionActionFeedback.h create mode 100644 source/ros-max-lib/ros_lib/control_msgs/SingleJointPositionActionGoal.h create mode 100644 source/ros-max-lib/ros_lib/control_msgs/SingleJointPositionActionResult.h create mode 100644 source/ros-max-lib/ros_lib/control_msgs/SingleJointPositionFeedback.h create mode 100644 source/ros-max-lib/ros_lib/control_msgs/SingleJointPositionGoal.h create mode 100644 source/ros-max-lib/ros_lib/control_msgs/SingleJointPositionResult.h create mode 100644 source/ros-max-lib/ros_lib/control_toolbox/SetPidGains.h create mode 100644 source/ros-max-lib/ros_lib/controller_manager_msgs/ControllerState.h create mode 100644 source/ros-max-lib/ros_lib/controller_manager_msgs/ControllerStatistics.h create mode 100644 source/ros-max-lib/ros_lib/controller_manager_msgs/ControllersStatistics.h create mode 100644 source/ros-max-lib/ros_lib/controller_manager_msgs/HardwareInterfaceResources.h create mode 100644 source/ros-max-lib/ros_lib/controller_manager_msgs/ListControllerTypes.h create mode 100644 source/ros-max-lib/ros_lib/controller_manager_msgs/ListControllers.h create mode 100644 source/ros-max-lib/ros_lib/controller_manager_msgs/LoadController.h create mode 100644 source/ros-max-lib/ros_lib/controller_manager_msgs/ReloadControllerLibraries.h create mode 100644 source/ros-max-lib/ros_lib/controller_manager_msgs/SwitchController.h create mode 100644 source/ros-max-lib/ros_lib/controller_manager_msgs/UnloadController.h create mode 100644 source/ros-max-lib/ros_lib/costmap_2d/VoxelGrid.h create mode 100644 source/ros-max-lib/ros_lib/diagnostic_msgs/AddDiagnostics.h create mode 100644 source/ros-max-lib/ros_lib/diagnostic_msgs/DiagnosticArray.h create mode 100644 source/ros-max-lib/ros_lib/diagnostic_msgs/DiagnosticStatus.h create mode 100644 source/ros-max-lib/ros_lib/diagnostic_msgs/KeyValue.h create mode 100644 source/ros-max-lib/ros_lib/diagnostic_msgs/SelfTest.h create mode 100644 source/ros-max-lib/ros_lib/duration.cpp create mode 100644 source/ros-max-lib/ros_lib/dynamic_reconfigure/BoolParameter.h create mode 100644 source/ros-max-lib/ros_lib/dynamic_reconfigure/Config.h create mode 100644 source/ros-max-lib/ros_lib/dynamic_reconfigure/ConfigDescription.h create mode 100644 source/ros-max-lib/ros_lib/dynamic_reconfigure/DoubleParameter.h create mode 100644 source/ros-max-lib/ros_lib/dynamic_reconfigure/Group.h create mode 100644 source/ros-max-lib/ros_lib/dynamic_reconfigure/GroupState.h create mode 100644 source/ros-max-lib/ros_lib/dynamic_reconfigure/IntParameter.h create mode 100644 source/ros-max-lib/ros_lib/dynamic_reconfigure/ParamDescription.h create mode 100644 source/ros-max-lib/ros_lib/dynamic_reconfigure/Reconfigure.h create mode 100644 source/ros-max-lib/ros_lib/dynamic_reconfigure/SensorLevels.h create mode 100644 source/ros-max-lib/ros_lib/dynamic_reconfigure/StrParameter.h create mode 100644 source/ros-max-lib/ros_lib/embedded_linux_comms.c create mode 100644 source/ros-max-lib/ros_lib/embedded_linux_hardware.h create mode 100644 source/ros-max-lib/ros_lib/gazebo_msgs/ApplyBodyWrench.h create mode 100644 source/ros-max-lib/ros_lib/gazebo_msgs/ApplyJointEffort.h create mode 100644 source/ros-max-lib/ros_lib/gazebo_msgs/BodyRequest.h create mode 100644 source/ros-max-lib/ros_lib/gazebo_msgs/ContactState.h create mode 100644 source/ros-max-lib/ros_lib/gazebo_msgs/ContactsState.h create mode 100644 source/ros-max-lib/ros_lib/gazebo_msgs/DeleteLight.h create mode 100644 source/ros-max-lib/ros_lib/gazebo_msgs/DeleteModel.h create mode 100644 source/ros-max-lib/ros_lib/gazebo_msgs/GetJointProperties.h create mode 100644 source/ros-max-lib/ros_lib/gazebo_msgs/GetLightProperties.h create mode 100644 source/ros-max-lib/ros_lib/gazebo_msgs/GetLinkProperties.h create mode 100644 source/ros-max-lib/ros_lib/gazebo_msgs/GetLinkState.h create mode 100644 source/ros-max-lib/ros_lib/gazebo_msgs/GetModelProperties.h create mode 100644 source/ros-max-lib/ros_lib/gazebo_msgs/GetModelState.h create mode 100644 source/ros-max-lib/ros_lib/gazebo_msgs/GetPhysicsProperties.h create mode 100644 source/ros-max-lib/ros_lib/gazebo_msgs/GetWorldProperties.h create mode 100644 source/ros-max-lib/ros_lib/gazebo_msgs/JointRequest.h create mode 100644 source/ros-max-lib/ros_lib/gazebo_msgs/LinkState.h create mode 100644 source/ros-max-lib/ros_lib/gazebo_msgs/LinkStates.h create mode 100644 source/ros-max-lib/ros_lib/gazebo_msgs/ModelState.h create mode 100644 source/ros-max-lib/ros_lib/gazebo_msgs/ModelStates.h create mode 100644 source/ros-max-lib/ros_lib/gazebo_msgs/ODEJointProperties.h create mode 100644 source/ros-max-lib/ros_lib/gazebo_msgs/ODEPhysics.h create mode 100644 source/ros-max-lib/ros_lib/gazebo_msgs/SetJointProperties.h create mode 100644 source/ros-max-lib/ros_lib/gazebo_msgs/SetJointTrajectory.h create mode 100644 source/ros-max-lib/ros_lib/gazebo_msgs/SetLightProperties.h create mode 100644 source/ros-max-lib/ros_lib/gazebo_msgs/SetLinkProperties.h create mode 100644 source/ros-max-lib/ros_lib/gazebo_msgs/SetLinkState.h create mode 100644 source/ros-max-lib/ros_lib/gazebo_msgs/SetModelConfiguration.h create mode 100644 source/ros-max-lib/ros_lib/gazebo_msgs/SetModelState.h create mode 100644 source/ros-max-lib/ros_lib/gazebo_msgs/SetPhysicsProperties.h create mode 100644 source/ros-max-lib/ros_lib/gazebo_msgs/SpawnModel.h create mode 100644 source/ros-max-lib/ros_lib/gazebo_msgs/WorldState.h create mode 100644 source/ros-max-lib/ros_lib/geometry_msgs/Accel.h create mode 100644 source/ros-max-lib/ros_lib/geometry_msgs/AccelStamped.h create mode 100644 source/ros-max-lib/ros_lib/geometry_msgs/AccelWithCovariance.h create mode 100644 source/ros-max-lib/ros_lib/geometry_msgs/AccelWithCovarianceStamped.h create mode 100644 source/ros-max-lib/ros_lib/geometry_msgs/Inertia.h create mode 100644 source/ros-max-lib/ros_lib/geometry_msgs/InertiaStamped.h create mode 100644 source/ros-max-lib/ros_lib/geometry_msgs/Point.h create mode 100644 source/ros-max-lib/ros_lib/geometry_msgs/Point32.h create mode 100644 source/ros-max-lib/ros_lib/geometry_msgs/PointStamped.h create mode 100644 source/ros-max-lib/ros_lib/geometry_msgs/Polygon.h create mode 100644 source/ros-max-lib/ros_lib/geometry_msgs/PolygonStamped.h create mode 100644 source/ros-max-lib/ros_lib/geometry_msgs/Pose.h create mode 100644 source/ros-max-lib/ros_lib/geometry_msgs/Pose2D.h create mode 100644 source/ros-max-lib/ros_lib/geometry_msgs/PoseArray.h create mode 100644 source/ros-max-lib/ros_lib/geometry_msgs/PoseStamped.h create mode 100644 source/ros-max-lib/ros_lib/geometry_msgs/PoseWithCovariance.h create mode 100644 source/ros-max-lib/ros_lib/geometry_msgs/PoseWithCovarianceStamped.h create mode 100644 source/ros-max-lib/ros_lib/geometry_msgs/Quaternion.h create mode 100644 source/ros-max-lib/ros_lib/geometry_msgs/QuaternionStamped.h create mode 100644 source/ros-max-lib/ros_lib/geometry_msgs/Transform.h create mode 100644 source/ros-max-lib/ros_lib/geometry_msgs/TransformStamped.h create mode 100644 source/ros-max-lib/ros_lib/geometry_msgs/Twist.h create mode 100644 source/ros-max-lib/ros_lib/geometry_msgs/TwistStamped.h create mode 100644 source/ros-max-lib/ros_lib/geometry_msgs/TwistWithCovariance.h create mode 100644 source/ros-max-lib/ros_lib/geometry_msgs/TwistWithCovarianceStamped.h create mode 100644 source/ros-max-lib/ros_lib/geometry_msgs/Vector3.h create mode 100644 source/ros-max-lib/ros_lib/geometry_msgs/Vector3Stamped.h create mode 100644 source/ros-max-lib/ros_lib/geometry_msgs/Wrench.h create mode 100644 source/ros-max-lib/ros_lib/geometry_msgs/WrenchStamped.h create mode 100644 source/ros-max-lib/ros_lib/image_exposure_msgs/ExposureSequence.h create mode 100644 source/ros-max-lib/ros_lib/image_exposure_msgs/ImageExposureStatistics.h create mode 100644 source/ros-max-lib/ros_lib/image_exposure_msgs/SequenceExposureStatistics.h create mode 100644 source/ros-max-lib/ros_lib/laser_assembler/AssembleScans.h create mode 100644 source/ros-max-lib/ros_lib/laser_assembler/AssembleScans2.h create mode 100644 source/ros-max-lib/ros_lib/main.cpp create mode 100644 source/ros-max-lib/ros_lib/map_msgs/GetMapROI.h create mode 100644 source/ros-max-lib/ros_lib/map_msgs/GetPointMap.h create mode 100644 source/ros-max-lib/ros_lib/map_msgs/GetPointMapROI.h create mode 100644 source/ros-max-lib/ros_lib/map_msgs/OccupancyGridUpdate.h create mode 100644 source/ros-max-lib/ros_lib/map_msgs/PointCloud2Update.h create mode 100644 source/ros-max-lib/ros_lib/map_msgs/ProjectedMap.h create mode 100644 source/ros-max-lib/ros_lib/map_msgs/ProjectedMapInfo.h create mode 100644 source/ros-max-lib/ros_lib/map_msgs/ProjectedMapsInfo.h create mode 100644 source/ros-max-lib/ros_lib/map_msgs/SaveMap.h create mode 100644 source/ros-max-lib/ros_lib/map_msgs/SetMapProjections.h create mode 100644 source/ros-max-lib/ros_lib/move_base_msgs/MoveBaseAction.h create mode 100644 source/ros-max-lib/ros_lib/move_base_msgs/MoveBaseActionFeedback.h create mode 100644 source/ros-max-lib/ros_lib/move_base_msgs/MoveBaseActionGoal.h create mode 100644 source/ros-max-lib/ros_lib/move_base_msgs/MoveBaseActionResult.h create mode 100644 source/ros-max-lib/ros_lib/move_base_msgs/MoveBaseFeedback.h create mode 100644 source/ros-max-lib/ros_lib/move_base_msgs/MoveBaseGoal.h create mode 100644 source/ros-max-lib/ros_lib/move_base_msgs/MoveBaseResult.h create mode 100644 source/ros-max-lib/ros_lib/nav_msgs/GetMap.h create mode 100644 source/ros-max-lib/ros_lib/nav_msgs/GetMapAction.h create mode 100644 source/ros-max-lib/ros_lib/nav_msgs/GetMapActionFeedback.h create mode 100644 source/ros-max-lib/ros_lib/nav_msgs/GetMapActionGoal.h create mode 100644 source/ros-max-lib/ros_lib/nav_msgs/GetMapActionResult.h create mode 100644 source/ros-max-lib/ros_lib/nav_msgs/GetMapFeedback.h create mode 100644 source/ros-max-lib/ros_lib/nav_msgs/GetMapGoal.h create mode 100644 source/ros-max-lib/ros_lib/nav_msgs/GetMapResult.h create mode 100644 source/ros-max-lib/ros_lib/nav_msgs/GetPlan.h create mode 100644 source/ros-max-lib/ros_lib/nav_msgs/GridCells.h create mode 100644 source/ros-max-lib/ros_lib/nav_msgs/MapMetaData.h create mode 100644 source/ros-max-lib/ros_lib/nav_msgs/OccupancyGrid.h create mode 100644 source/ros-max-lib/ros_lib/nav_msgs/Odometry.h create mode 100644 source/ros-max-lib/ros_lib/nav_msgs/Path.h create mode 100644 source/ros-max-lib/ros_lib/nav_msgs/SetMap.h create mode 100644 source/ros-max-lib/ros_lib/navfn/MakeNavPlan.h create mode 100644 source/ros-max-lib/ros_lib/navfn/SetCostmap.h create mode 100644 source/ros-max-lib/ros_lib/nodelet/NodeletList.h create mode 100644 source/ros-max-lib/ros_lib/nodelet/NodeletLoad.h create mode 100644 source/ros-max-lib/ros_lib/nodelet/NodeletUnload.h create mode 100644 source/ros-max-lib/ros_lib/openni2_camera/GetSerial.h create mode 100644 source/ros-max-lib/ros_lib/pcl_msgs/ModelCoefficients.h create mode 100644 source/ros-max-lib/ros_lib/pcl_msgs/PointIndices.h create mode 100644 source/ros-max-lib/ros_lib/pcl_msgs/PolygonMesh.h create mode 100644 source/ros-max-lib/ros_lib/pcl_msgs/Vertices.h create mode 100644 source/ros-max-lib/ros_lib/polled_camera/GetPolledImage.h create mode 100644 source/ros-max-lib/ros_lib/py_trees_msgs/Behaviour.h create mode 100644 source/ros-max-lib/ros_lib/py_trees_msgs/BehaviourTree.h create mode 100644 source/ros-max-lib/ros_lib/py_trees_msgs/CloseBlackboardWatcher.h create mode 100644 source/ros-max-lib/ros_lib/py_trees_msgs/DockAction.h create mode 100644 source/ros-max-lib/ros_lib/py_trees_msgs/DockActionFeedback.h create mode 100644 source/ros-max-lib/ros_lib/py_trees_msgs/DockActionGoal.h create mode 100644 source/ros-max-lib/ros_lib/py_trees_msgs/DockActionResult.h create mode 100644 source/ros-max-lib/ros_lib/py_trees_msgs/DockFeedback.h create mode 100644 source/ros-max-lib/ros_lib/py_trees_msgs/DockGoal.h create mode 100644 source/ros-max-lib/ros_lib/py_trees_msgs/DockResult.h create mode 100644 source/ros-max-lib/ros_lib/py_trees_msgs/GetBlackboardVariables.h create mode 100644 source/ros-max-lib/ros_lib/py_trees_msgs/OpenBlackboardWatcher.h create mode 100644 source/ros-max-lib/ros_lib/py_trees_msgs/RotateAction.h create mode 100644 source/ros-max-lib/ros_lib/py_trees_msgs/RotateActionFeedback.h create mode 100644 source/ros-max-lib/ros_lib/py_trees_msgs/RotateActionGoal.h create mode 100644 source/ros-max-lib/ros_lib/py_trees_msgs/RotateActionResult.h create mode 100644 source/ros-max-lib/ros_lib/py_trees_msgs/RotateFeedback.h create mode 100644 source/ros-max-lib/ros_lib/py_trees_msgs/RotateGoal.h create mode 100644 source/ros-max-lib/ros_lib/py_trees_msgs/RotateResult.h create mode 100644 source/ros-max-lib/ros_lib/robot_pose_ekf/GetStatus.h create mode 100644 source/ros-max-lib/ros_lib/rocon_service_pair_msgs/TestiesPair.h create mode 100644 source/ros-max-lib/ros_lib/rocon_service_pair_msgs/TestiesPairRequest.h create mode 100644 source/ros-max-lib/ros_lib/rocon_service_pair_msgs/TestiesPairResponse.h create mode 100644 source/ros-max-lib/ros_lib/rocon_service_pair_msgs/TestiesRequest.h create mode 100644 source/ros-max-lib/ros_lib/rocon_service_pair_msgs/TestiesResponse.h create mode 100644 source/ros-max-lib/ros_lib/rocon_std_msgs/Connection.h create mode 100644 source/ros-max-lib/ros_lib/rocon_std_msgs/ConnectionCacheSpin.h create mode 100644 source/ros-max-lib/ros_lib/rocon_std_msgs/ConnectionsDiff.h create mode 100644 source/ros-max-lib/ros_lib/rocon_std_msgs/ConnectionsList.h create mode 100644 source/ros-max-lib/ros_lib/rocon_std_msgs/EmptyString.h create mode 100644 source/ros-max-lib/ros_lib/rocon_std_msgs/Float32Stamped.h create mode 100644 source/ros-max-lib/ros_lib/rocon_std_msgs/Icon.h create mode 100644 source/ros-max-lib/ros_lib/rocon_std_msgs/KeyValue.h create mode 100644 source/ros-max-lib/ros_lib/rocon_std_msgs/MasterInfo.h create mode 100644 source/ros-max-lib/ros_lib/rocon_std_msgs/Remapping.h create mode 100644 source/ros-max-lib/ros_lib/rocon_std_msgs/StringArray.h create mode 100644 source/ros-max-lib/ros_lib/rocon_std_msgs/Strings.h create mode 100644 source/ros-max-lib/ros_lib/rocon_std_msgs/StringsPair.h create mode 100644 source/ros-max-lib/ros_lib/rocon_std_msgs/StringsPairRequest.h create mode 100644 source/ros-max-lib/ros_lib/rocon_std_msgs/StringsPairResponse.h create mode 100644 source/ros-max-lib/ros_lib/rocon_std_msgs/StringsRequest.h create mode 100644 source/ros-max-lib/ros_lib/rocon_std_msgs/StringsResponse.h create mode 100644 source/ros-max-lib/ros_lib/ros.h create mode 100644 source/ros-max-lib/ros_lib/ros/duration.h create mode 100644 source/ros-max-lib/ros_lib/ros/msg.h create mode 100644 source/ros-max-lib/ros_lib/ros/node_handle.h create mode 100644 source/ros-max-lib/ros_lib/ros/publisher.h create mode 100644 source/ros-max-lib/ros_lib/ros/service_client.h create mode 100644 source/ros-max-lib/ros_lib/ros/service_server.h create mode 100644 source/ros-max-lib/ros_lib/ros/subscriber.h create mode 100644 source/ros-max-lib/ros_lib/ros/time.h create mode 100644 source/ros-max-lib/ros_lib/roscpp/Empty.h create mode 100644 source/ros-max-lib/ros_lib/roscpp/GetLoggers.h create mode 100644 source/ros-max-lib/ros_lib/roscpp/Logger.h create mode 100644 source/ros-max-lib/ros_lib/roscpp/SetLoggerLevel.h create mode 100644 source/ros-max-lib/ros_lib/roscpp_tutorials/TwoInts.h create mode 100644 source/ros-max-lib/ros_lib/rosgraph_msgs/Clock.h create mode 100644 source/ros-max-lib/ros_lib/rosgraph_msgs/Log.h create mode 100644 source/ros-max-lib/ros_lib/rosgraph_msgs/TopicStatistics.h create mode 100644 source/ros-max-lib/ros_lib/rospy_tutorials/AddTwoInts.h create mode 100644 source/ros-max-lib/ros_lib/rospy_tutorials/BadTwoInts.h create mode 100644 source/ros-max-lib/ros_lib/rospy_tutorials/Floats.h create mode 100644 source/ros-max-lib/ros_lib/rospy_tutorials/HeaderString.h create mode 100644 source/ros-max-lib/ros_lib/rosserial_arduino/Adc.h create mode 100644 source/ros-max-lib/ros_lib/rosserial_arduino/Test.h create mode 100644 source/ros-max-lib/ros_lib/rosserial_mbed/Adc.h create mode 100644 source/ros-max-lib/ros_lib/rosserial_mbed/Test.h create mode 100644 source/ros-max-lib/ros_lib/rosserial_msgs/Log.h create mode 100644 source/ros-max-lib/ros_lib/rosserial_msgs/RequestMessageInfo.h create mode 100644 source/ros-max-lib/ros_lib/rosserial_msgs/RequestParam.h create mode 100644 source/ros-max-lib/ros_lib/rosserial_msgs/RequestServiceInfo.h create mode 100644 source/ros-max-lib/ros_lib/rosserial_msgs/TopicInfo.h create mode 100644 source/ros-max-lib/ros_lib/sensor_msgs/BatteryState.h create mode 100644 source/ros-max-lib/ros_lib/sensor_msgs/CameraInfo.h create mode 100644 source/ros-max-lib/ros_lib/sensor_msgs/ChannelFloat32.h create mode 100644 source/ros-max-lib/ros_lib/sensor_msgs/CompressedImage.h create mode 100644 source/ros-max-lib/ros_lib/sensor_msgs/FluidPressure.h create mode 100644 source/ros-max-lib/ros_lib/sensor_msgs/Illuminance.h create mode 100644 source/ros-max-lib/ros_lib/sensor_msgs/Image.h create mode 100644 source/ros-max-lib/ros_lib/sensor_msgs/Imu.h create mode 100644 source/ros-max-lib/ros_lib/sensor_msgs/JointState.h create mode 100644 source/ros-max-lib/ros_lib/sensor_msgs/Joy.h create mode 100644 source/ros-max-lib/ros_lib/sensor_msgs/JoyFeedback.h create mode 100644 source/ros-max-lib/ros_lib/sensor_msgs/JoyFeedbackArray.h create mode 100644 source/ros-max-lib/ros_lib/sensor_msgs/LaserEcho.h create mode 100644 source/ros-max-lib/ros_lib/sensor_msgs/LaserScan.h create mode 100644 source/ros-max-lib/ros_lib/sensor_msgs/MagneticField.h create mode 100644 source/ros-max-lib/ros_lib/sensor_msgs/MultiDOFJointState.h create mode 100644 source/ros-max-lib/ros_lib/sensor_msgs/MultiEchoLaserScan.h create mode 100644 source/ros-max-lib/ros_lib/sensor_msgs/NavSatFix.h create mode 100644 source/ros-max-lib/ros_lib/sensor_msgs/NavSatStatus.h create mode 100644 source/ros-max-lib/ros_lib/sensor_msgs/PointCloud.h create mode 100644 source/ros-max-lib/ros_lib/sensor_msgs/PointCloud2.h create mode 100644 source/ros-max-lib/ros_lib/sensor_msgs/PointField.h create mode 100644 source/ros-max-lib/ros_lib/sensor_msgs/Range.h create mode 100644 source/ros-max-lib/ros_lib/sensor_msgs/RegionOfInterest.h create mode 100644 source/ros-max-lib/ros_lib/sensor_msgs/RelativeHumidity.h create mode 100644 source/ros-max-lib/ros_lib/sensor_msgs/SetCameraInfo.h create mode 100644 source/ros-max-lib/ros_lib/sensor_msgs/Temperature.h create mode 100644 source/ros-max-lib/ros_lib/sensor_msgs/TimeReference.h create mode 100644 source/ros-max-lib/ros_lib/shape_msgs/Mesh.h create mode 100644 source/ros-max-lib/ros_lib/shape_msgs/MeshTriangle.h create mode 100644 source/ros-max-lib/ros_lib/shape_msgs/Plane.h create mode 100644 source/ros-max-lib/ros_lib/shape_msgs/SolidPrimitive.h create mode 100644 source/ros-max-lib/ros_lib/smach_msgs/SmachContainerInitialStatusCmd.h create mode 100644 source/ros-max-lib/ros_lib/smach_msgs/SmachContainerStatus.h create mode 100644 source/ros-max-lib/ros_lib/smach_msgs/SmachContainerStructure.h create mode 100644 source/ros-max-lib/ros_lib/statistics_msgs/Stats1D.h create mode 100644 source/ros-max-lib/ros_lib/std_msgs/Bool.h create mode 100644 source/ros-max-lib/ros_lib/std_msgs/Byte.h create mode 100644 source/ros-max-lib/ros_lib/std_msgs/ByteMultiArray.h create mode 100644 source/ros-max-lib/ros_lib/std_msgs/Char.h create mode 100644 source/ros-max-lib/ros_lib/std_msgs/ColorRGBA.h create mode 100644 source/ros-max-lib/ros_lib/std_msgs/Duration.h create mode 100644 source/ros-max-lib/ros_lib/std_msgs/Empty.h create mode 100644 source/ros-max-lib/ros_lib/std_msgs/Float32.h create mode 100644 source/ros-max-lib/ros_lib/std_msgs/Float32MultiArray.h create mode 100644 source/ros-max-lib/ros_lib/std_msgs/Float64.h create mode 100644 source/ros-max-lib/ros_lib/std_msgs/Float64MultiArray.h create mode 100644 source/ros-max-lib/ros_lib/std_msgs/Header.h create mode 100644 source/ros-max-lib/ros_lib/std_msgs/Int16.h create mode 100644 source/ros-max-lib/ros_lib/std_msgs/Int16MultiArray.h create mode 100644 source/ros-max-lib/ros_lib/std_msgs/Int32.h create mode 100644 source/ros-max-lib/ros_lib/std_msgs/Int32MultiArray.h create mode 100644 source/ros-max-lib/ros_lib/std_msgs/Int64.h create mode 100644 source/ros-max-lib/ros_lib/std_msgs/Int64MultiArray.h create mode 100644 source/ros-max-lib/ros_lib/std_msgs/Int8.h create mode 100644 source/ros-max-lib/ros_lib/std_msgs/Int8MultiArray.h create mode 100644 source/ros-max-lib/ros_lib/std_msgs/MultiArrayDimension.h create mode 100644 source/ros-max-lib/ros_lib/std_msgs/MultiArrayLayout.h create mode 100644 source/ros-max-lib/ros_lib/std_msgs/String.h create mode 100644 source/ros-max-lib/ros_lib/std_msgs/Time.h create mode 100644 source/ros-max-lib/ros_lib/std_msgs/UInt16.h create mode 100644 source/ros-max-lib/ros_lib/std_msgs/UInt16MultiArray.h create mode 100644 source/ros-max-lib/ros_lib/std_msgs/UInt32.h create mode 100644 source/ros-max-lib/ros_lib/std_msgs/UInt32MultiArray.h create mode 100644 source/ros-max-lib/ros_lib/std_msgs/UInt64.h create mode 100644 source/ros-max-lib/ros_lib/std_msgs/UInt64MultiArray.h create mode 100644 source/ros-max-lib/ros_lib/std_msgs/UInt8.h create mode 100644 source/ros-max-lib/ros_lib/std_msgs/UInt8MultiArray.h create mode 100644 source/ros-max-lib/ros_lib/std_srvs/Empty.h create mode 100644 source/ros-max-lib/ros_lib/std_srvs/SetBool.h create mode 100644 source/ros-max-lib/ros_lib/std_srvs/Trigger.h create mode 100644 source/ros-max-lib/ros_lib/stereo_msgs/DisparityImage.h create mode 100644 source/ros-max-lib/ros_lib/tf/FrameGraph.h create mode 100644 source/ros-max-lib/ros_lib/tf/tf.h create mode 100644 source/ros-max-lib/ros_lib/tf/tfMessage.h create mode 100644 source/ros-max-lib/ros_lib/tf/transform_broadcaster.h create mode 100644 source/ros-max-lib/ros_lib/tf2_msgs/FrameGraph.h create mode 100644 source/ros-max-lib/ros_lib/tf2_msgs/LookupTransformAction.h create mode 100644 source/ros-max-lib/ros_lib/tf2_msgs/LookupTransformActionFeedback.h create mode 100644 source/ros-max-lib/ros_lib/tf2_msgs/LookupTransformActionGoal.h create mode 100644 source/ros-max-lib/ros_lib/tf2_msgs/LookupTransformActionResult.h create mode 100644 source/ros-max-lib/ros_lib/tf2_msgs/LookupTransformFeedback.h create mode 100644 source/ros-max-lib/ros_lib/tf2_msgs/LookupTransformGoal.h create mode 100644 source/ros-max-lib/ros_lib/tf2_msgs/LookupTransformResult.h create mode 100644 source/ros-max-lib/ros_lib/tf2_msgs/TF2Error.h create mode 100644 source/ros-max-lib/ros_lib/tf2_msgs/TFMessage.h create mode 100644 source/ros-max-lib/ros_lib/theora_image_transport/Packet.h create mode 100644 source/ros-max-lib/ros_lib/time.cpp create mode 100644 source/ros-max-lib/ros_lib/topic_tools/DemuxAdd.h create mode 100644 source/ros-max-lib/ros_lib/topic_tools/DemuxDelete.h create mode 100644 source/ros-max-lib/ros_lib/topic_tools/DemuxList.h create mode 100644 source/ros-max-lib/ros_lib/topic_tools/DemuxSelect.h create mode 100644 source/ros-max-lib/ros_lib/topic_tools/MuxAdd.h create mode 100644 source/ros-max-lib/ros_lib/topic_tools/MuxDelete.h create mode 100644 source/ros-max-lib/ros_lib/topic_tools/MuxList.h create mode 100644 source/ros-max-lib/ros_lib/topic_tools/MuxSelect.h create mode 100644 source/ros-max-lib/ros_lib/trajectory_msgs/JointTrajectory.h create mode 100644 source/ros-max-lib/ros_lib/trajectory_msgs/JointTrajectoryPoint.h create mode 100644 source/ros-max-lib/ros_lib/trajectory_msgs/MultiDOFJointTrajectory.h create mode 100644 source/ros-max-lib/ros_lib/trajectory_msgs/MultiDOFJointTrajectoryPoint.h create mode 100644 source/ros-max-lib/ros_lib/turtle_actionlib/ShapeAction.h create mode 100644 source/ros-max-lib/ros_lib/turtle_actionlib/ShapeActionFeedback.h create mode 100644 source/ros-max-lib/ros_lib/turtle_actionlib/ShapeActionGoal.h create mode 100644 source/ros-max-lib/ros_lib/turtle_actionlib/ShapeActionResult.h create mode 100644 source/ros-max-lib/ros_lib/turtle_actionlib/ShapeFeedback.h create mode 100644 source/ros-max-lib/ros_lib/turtle_actionlib/ShapeGoal.h create mode 100644 source/ros-max-lib/ros_lib/turtle_actionlib/ShapeResult.h create mode 100644 source/ros-max-lib/ros_lib/turtle_actionlib/Velocity.h create mode 100644 source/ros-max-lib/ros_lib/turtlebot3_msgs/MotorPower.h create mode 100644 source/ros-max-lib/ros_lib/turtlebot3_msgs/PanoramaImg.h create mode 100644 source/ros-max-lib/ros_lib/turtlebot3_msgs/SensorState.h create mode 100644 source/ros-max-lib/ros_lib/turtlebot3_msgs/SetFollowState.h create mode 100644 source/ros-max-lib/ros_lib/turtlebot3_msgs/TakePanorama.h create mode 100644 source/ros-max-lib/ros_lib/turtlebot3_msgs/VersionInfo.h create mode 100644 source/ros-max-lib/ros_lib/turtlesim/Color.h create mode 100644 source/ros-max-lib/ros_lib/turtlesim/Kill.h create mode 100644 source/ros-max-lib/ros_lib/turtlesim/Pose.h create mode 100644 source/ros-max-lib/ros_lib/turtlesim/SetPen.h create mode 100644 source/ros-max-lib/ros_lib/turtlesim/Spawn.h create mode 100644 source/ros-max-lib/ros_lib/turtlesim/TeleportAbsolute.h create mode 100644 source/ros-max-lib/ros_lib/turtlesim/TeleportRelative.h create mode 100644 source/ros-max-lib/ros_lib/uuid_msgs/UniqueID.h create mode 100644 source/ros-max-lib/ros_lib/variant_msgs/Test.h create mode 100644 source/ros-max-lib/ros_lib/variant_msgs/Variant.h create mode 100644 source/ros-max-lib/ros_lib/variant_msgs/VariantHeader.h create mode 100644 source/ros-max-lib/ros_lib/variant_msgs/VariantType.h create mode 100644 source/ros-max-lib/ros_lib/visualization_msgs/ImageMarker.h create mode 100644 source/ros-max-lib/ros_lib/visualization_msgs/InteractiveMarker.h create mode 100644 source/ros-max-lib/ros_lib/visualization_msgs/InteractiveMarkerControl.h create mode 100644 source/ros-max-lib/ros_lib/visualization_msgs/InteractiveMarkerFeedback.h create mode 100644 source/ros-max-lib/ros_lib/visualization_msgs/InteractiveMarkerInit.h create mode 100644 source/ros-max-lib/ros_lib/visualization_msgs/InteractiveMarkerPose.h create mode 100644 source/ros-max-lib/ros_lib/visualization_msgs/InteractiveMarkerUpdate.h create mode 100644 source/ros-max-lib/ros_lib/visualization_msgs/Marker.h create mode 100644 source/ros-max-lib/ros_lib/visualization_msgs/MarkerArray.h create mode 100644 source/ros-max-lib/ros_lib/visualization_msgs/MenuEntry.h create mode 100644 source/ros-max-lib/ros_lib/wfov_camera_msgs/WFOVCompressedImage.h create mode 100644 source/ros-max-lib/ros_lib/wfov_camera_msgs/WFOVImage.h create mode 100644 source/ros-max-lib/ros_lib/wfov_camera_msgs/WFOVTrigger.h create mode 100644 source/ros-max-lib/wrapper.cpp create mode 100644 source/ros-max-lib/wrapper.h diff --git a/cr/docs/cr.robotin.maxref.xml b/cr/docs/cr.robotin.maxref.xml new file mode 100755 index 0000000..989a247 --- /dev/null +++ b/cr/docs/cr.robotin.maxref.xml @@ -0,0 +1,93 @@ + + + + + + + + Robotics Operating System (ROS) Turtlebot3 Burger Inputs (Reader) + + + + + Receives ROS messages (Velocity, Odometry, Laser Scan, IMU, Sensors State, Joints State) from Turtlebot3 Robot via ROS Messages. + + + + + Creative Robotics Lab + CR + ROS + Robotics + + + + + + Messages: Open, Close + + + + + + + Input data from the robot, as specified in the TurtleBot3 + Further description in http://emanual.robotis.com/docs/en/platform/turtlebot3/overview/ + + + + + + + Enter the robot IP. + + + + + + + Velocities (linear, angular) data + http://docs.ros.org/api/geometry_msgs/html/msg/Twist.html + + + Odometry data + http://docs.ros.org/kinetic/api/nav_msgs/html/msg/Odometry.html + + + Laser Scan data + http://docs.ros.org/api/sensor_msgs/html/msg/LaserScan.html + + + Inertial Measurement Unit (IMU) data + http://docs.ros.org/api/sensor_msgs/html/msg/Imu.html + + Sensors State data + https://github.com/ROBOTIS-GIT/turtlebot3_msgs/blob/master/msg/SensorState.msg + + + Joints State data + http://docs.ros.org/api/sensor_msgs/html/msg/JointState.html + + + + + + + + + Open a connection to the robot + + + + + Close the connection to the robot + + + + + + + + + + diff --git a/cr/docs/cr.robotout.maxref.xml b/cr/docs/cr.robotout.maxref.xml new file mode 100755 index 0000000..392c7bd --- /dev/null +++ b/cr/docs/cr.robotout.maxref.xml @@ -0,0 +1,77 @@ + + + + + + + + Robotics Operating System (ROS) Turtlebot3 Burger Outputs (Writer) + + + + + Send Velocities (Linear, Angular) to Turtlebot3 Robot via ROS Messages. + + + + + Creative Robotics Lab + CR + ROS + Robotics + + + + + + Messages: Open, Close, Break, Bang + + + Send data to robot, as specified in Turtlebot3: http://docs.ros.org/api/geometry_msgs/html/msg/Twist.html + Further description in http://emanual.robotis.com/docs/en/platform/turtlebot3/overview/ + + + + + + + + + + Enter the robot IP. + + + + + + + + + + + Open a connection to the robot + + + + + Close the connection to the robot + + + + + Send the velocities message to the robot + + + + + Send a break (zero velocities) message to the robot + + + + + + + + + + diff --git a/cr/externals/cr.boardout.mxo/Contents/MacOS/cr.boardout b/cr/externals/cr.boardout.mxo/Contents/MacOS/cr.boardout index 5da69fd119e16238214af16f754656c60f1cb67a..9bf140bc4a7d74aad6840a3d936720966de55fce 100755 GIT binary patch delta 6915 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 + + + + BuildMachineOSBuild + 16G1314 + CFBundleDevelopmentRegion + English + CFBundleExecutable + cr.robotin + CFBundleInfoDictionaryVersion + 7.0.1 + CFBundleLongVersionString + cr.robotin 7.0.1, Copyright 2014 Cycling '74 + CFBundlePackageType + iLaX + CFBundleShortVersionString + 7.0.1 + CFBundleSignature + max2 + CFBundleSupportedPlatforms + + MacOSX + + CFBundleVersion + 7.0.1 + CSResourcesFileMapped + + DTCompiler + com.apple.compilers.llvm.clang.1_0 + DTPlatformBuild + 8E3004b + DTPlatformVersion + GM + DTSDKBuild + 16E185 + DTSDKName + macosx10.12 + DTXcode + 0833 + DTXcodeBuild + 8E3004b + + diff --git a/cr/externals/cr.robotin.mxo/Contents/MacOS/cr.robotin b/cr/externals/cr.robotin.mxo/Contents/MacOS/cr.robotin new file mode 100755 index 0000000000000000000000000000000000000000..fb3a8064e7ce4a1d893fec27728d2b9887c57a75 GIT binary patch literal 240660 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ⅇ|*6 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�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 +#include +#include +#include "ros/msg.h" +#include "actionlib/TestActionGoal.h" +#include "actionlib/TestActionResult.h" +#include "actionlib/TestActionFeedback.h" + +namespace actionlib +{ + + class TestAction : public ros::Msg + { + public: + typedef actionlib::TestActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef actionlib::TestActionResult _action_result_type; + _action_result_type action_result; + typedef actionlib::TestActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + TestAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib/TestAction"; }; + const char * getMD5(){ return "991e87a72802262dfbe5d1b3cf6efc9a"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestActionFeedback.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestActionFeedback.h new file mode 100644 index 0000000..aab52af --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_TestActionFeedback_h +#define _ROS_actionlib_TestActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "actionlib/TestFeedback.h" + +namespace actionlib +{ + + class TestActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef actionlib::TestFeedback _feedback_type; + _feedback_type feedback; + + TestActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib/TestActionFeedback"; }; + const char * getMD5(){ return "6d3d0bf7fb3dda24779c010a9f3eb7cb"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestActionGoal.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestActionGoal.h new file mode 100644 index 0000000..6cb7402 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_TestActionGoal_h +#define _ROS_actionlib_TestActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "actionlib/TestGoal.h" + +namespace actionlib +{ + + class TestActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef actionlib::TestGoal _goal_type; + _goal_type goal; + + TestActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib/TestActionGoal"; }; + const char * getMD5(){ return "348369c5b403676156094e8c159720bf"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestActionResult.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestActionResult.h new file mode 100644 index 0000000..d534d0a --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_TestActionResult_h +#define _ROS_actionlib_TestActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "actionlib/TestResult.h" + +namespace actionlib +{ + + class TestActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef actionlib::TestResult _result_type; + _result_type result; + + TestActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib/TestActionResult"; }; + const char * getMD5(){ return "3d669e3a63aa986c667ea7b0f46ce85e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestFeedback.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestFeedback.h new file mode 100644 index 0000000..83798cf --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestFeedback.h @@ -0,0 +1,62 @@ +#ifndef _ROS_actionlib_TestFeedback_h +#define _ROS_actionlib_TestFeedback_h + +#include +#include +#include +#include "ros/msg.h" + +namespace actionlib +{ + + class TestFeedback : public ros::Msg + { + public: + typedef int32_t _feedback_type; + _feedback_type feedback; + + TestFeedback(): + feedback(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_feedback; + u_feedback.real = this->feedback; + *(outbuffer + offset + 0) = (u_feedback.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_feedback.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_feedback.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_feedback.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->feedback); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_feedback; + u_feedback.base = 0; + u_feedback.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_feedback.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_feedback.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_feedback.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->feedback = u_feedback.real; + offset += sizeof(this->feedback); + return offset; + } + + const char * getType(){ return "actionlib/TestFeedback"; }; + const char * getMD5(){ return "49ceb5b32ea3af22073ede4a0328249e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestGoal.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestGoal.h new file mode 100644 index 0000000..40d3a99 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestGoal.h @@ -0,0 +1,62 @@ +#ifndef _ROS_actionlib_TestGoal_h +#define _ROS_actionlib_TestGoal_h + +#include +#include +#include +#include "ros/msg.h" + +namespace actionlib +{ + + class TestGoal : public ros::Msg + { + public: + typedef int32_t _goal_type; + _goal_type goal; + + TestGoal(): + goal(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_goal; + u_goal.real = this->goal; + *(outbuffer + offset + 0) = (u_goal.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_goal.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_goal.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_goal.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->goal); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_goal; + u_goal.base = 0; + u_goal.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_goal.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_goal.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_goal.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->goal = u_goal.real; + offset += sizeof(this->goal); + return offset; + } + + const char * getType(){ return "actionlib/TestGoal"; }; + const char * getMD5(){ return "18df0149936b7aa95588e3862476ebde"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestRequestAction.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestRequestAction.h new file mode 100644 index 0000000..52a2fe9 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestRequestAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_TestRequestAction_h +#define _ROS_actionlib_TestRequestAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "actionlib/TestRequestActionGoal.h" +#include "actionlib/TestRequestActionResult.h" +#include "actionlib/TestRequestActionFeedback.h" + +namespace actionlib +{ + + class TestRequestAction : public ros::Msg + { + public: + typedef actionlib::TestRequestActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef actionlib::TestRequestActionResult _action_result_type; + _action_result_type action_result; + typedef actionlib::TestRequestActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + TestRequestAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib/TestRequestAction"; }; + const char * getMD5(){ return "dc44b1f4045dbf0d1db54423b3b86b30"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestRequestActionFeedback.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestRequestActionFeedback.h new file mode 100644 index 0000000..0d585c0 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestRequestActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_TestRequestActionFeedback_h +#define _ROS_actionlib_TestRequestActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "actionlib/TestRequestFeedback.h" + +namespace actionlib +{ + + class TestRequestActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef actionlib::TestRequestFeedback _feedback_type; + _feedback_type feedback; + + TestRequestActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib/TestRequestActionFeedback"; }; + const char * getMD5(){ return "aae20e09065c3809e8a8e87c4c8953fd"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestRequestActionGoal.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestRequestActionGoal.h new file mode 100644 index 0000000..24c6c48 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestRequestActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_TestRequestActionGoal_h +#define _ROS_actionlib_TestRequestActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "actionlib/TestRequestGoal.h" + +namespace actionlib +{ + + class TestRequestActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef actionlib::TestRequestGoal _goal_type; + _goal_type goal; + + TestRequestActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib/TestRequestActionGoal"; }; + const char * getMD5(){ return "1889556d3fef88f821c7cb004e4251f3"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestRequestActionResult.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestRequestActionResult.h new file mode 100644 index 0000000..a71e715 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestRequestActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_TestRequestActionResult_h +#define _ROS_actionlib_TestRequestActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "actionlib/TestRequestResult.h" + +namespace actionlib +{ + + class TestRequestActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef actionlib::TestRequestResult _result_type; + _result_type result; + + TestRequestActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib/TestRequestActionResult"; }; + const char * getMD5(){ return "0476d1fdf437a3a6e7d6d0e9f5561298"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestRequestFeedback.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestRequestFeedback.h new file mode 100644 index 0000000..f1fc247 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestRequestFeedback.h @@ -0,0 +1,38 @@ +#ifndef _ROS_actionlib_TestRequestFeedback_h +#define _ROS_actionlib_TestRequestFeedback_h + +#include +#include +#include +#include "ros/msg.h" + +namespace actionlib +{ + + class TestRequestFeedback : public ros::Msg + { + public: + + TestRequestFeedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "actionlib/TestRequestFeedback"; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestRequestGoal.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestRequestGoal.h new file mode 100644 index 0000000..321ebd3 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestRequestGoal.h @@ -0,0 +1,215 @@ +#ifndef _ROS_actionlib_TestRequestGoal_h +#define _ROS_actionlib_TestRequestGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "ros/duration.h" + +namespace actionlib +{ + + class TestRequestGoal : public ros::Msg + { + public: + typedef int32_t _terminate_status_type; + _terminate_status_type terminate_status; + typedef bool _ignore_cancel_type; + _ignore_cancel_type ignore_cancel; + typedef const char* _result_text_type; + _result_text_type result_text; + typedef int32_t _the_result_type; + _the_result_type the_result; + typedef bool _is_simple_client_type; + _is_simple_client_type is_simple_client; + typedef ros::Duration _delay_accept_type; + _delay_accept_type delay_accept; + typedef ros::Duration _delay_terminate_type; + _delay_terminate_type delay_terminate; + typedef ros::Duration _pause_status_type; + _pause_status_type pause_status; + enum { TERMINATE_SUCCESS = 0 }; + enum { TERMINATE_ABORTED = 1 }; + enum { TERMINATE_REJECTED = 2 }; + enum { TERMINATE_LOSE = 3 }; + enum { TERMINATE_DROP = 4 }; + enum { TERMINATE_EXCEPTION = 5 }; + + TestRequestGoal(): + terminate_status(0), + ignore_cancel(0), + result_text(""), + the_result(0), + is_simple_client(0), + delay_accept(), + delay_terminate(), + pause_status() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_terminate_status; + u_terminate_status.real = this->terminate_status; + *(outbuffer + offset + 0) = (u_terminate_status.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_terminate_status.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_terminate_status.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_terminate_status.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->terminate_status); + union { + bool real; + uint8_t base; + } u_ignore_cancel; + u_ignore_cancel.real = this->ignore_cancel; + *(outbuffer + offset + 0) = (u_ignore_cancel.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->ignore_cancel); + uint32_t length_result_text = strlen(this->result_text); + varToArr(outbuffer + offset, length_result_text); + offset += 4; + memcpy(outbuffer + offset, this->result_text, length_result_text); + offset += length_result_text; + union { + int32_t real; + uint32_t base; + } u_the_result; + u_the_result.real = this->the_result; + *(outbuffer + offset + 0) = (u_the_result.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_the_result.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_the_result.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_the_result.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->the_result); + union { + bool real; + uint8_t base; + } u_is_simple_client; + u_is_simple_client.real = this->is_simple_client; + *(outbuffer + offset + 0) = (u_is_simple_client.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->is_simple_client); + *(outbuffer + offset + 0) = (this->delay_accept.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->delay_accept.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->delay_accept.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->delay_accept.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->delay_accept.sec); + *(outbuffer + offset + 0) = (this->delay_accept.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->delay_accept.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->delay_accept.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->delay_accept.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->delay_accept.nsec); + *(outbuffer + offset + 0) = (this->delay_terminate.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->delay_terminate.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->delay_terminate.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->delay_terminate.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->delay_terminate.sec); + *(outbuffer + offset + 0) = (this->delay_terminate.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->delay_terminate.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->delay_terminate.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->delay_terminate.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->delay_terminate.nsec); + *(outbuffer + offset + 0) = (this->pause_status.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->pause_status.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->pause_status.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->pause_status.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->pause_status.sec); + *(outbuffer + offset + 0) = (this->pause_status.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->pause_status.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->pause_status.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->pause_status.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->pause_status.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_terminate_status; + u_terminate_status.base = 0; + u_terminate_status.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_terminate_status.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_terminate_status.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_terminate_status.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->terminate_status = u_terminate_status.real; + offset += sizeof(this->terminate_status); + union { + bool real; + uint8_t base; + } u_ignore_cancel; + u_ignore_cancel.base = 0; + u_ignore_cancel.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->ignore_cancel = u_ignore_cancel.real; + offset += sizeof(this->ignore_cancel); + uint32_t length_result_text; + arrToVar(length_result_text, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_result_text; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_result_text-1]=0; + this->result_text = (char *)(inbuffer + offset-1); + offset += length_result_text; + union { + int32_t real; + uint32_t base; + } u_the_result; + u_the_result.base = 0; + u_the_result.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_the_result.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_the_result.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_the_result.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->the_result = u_the_result.real; + offset += sizeof(this->the_result); + union { + bool real; + uint8_t base; + } u_is_simple_client; + u_is_simple_client.base = 0; + u_is_simple_client.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->is_simple_client = u_is_simple_client.real; + offset += sizeof(this->is_simple_client); + this->delay_accept.sec = ((uint32_t) (*(inbuffer + offset))); + this->delay_accept.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->delay_accept.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->delay_accept.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->delay_accept.sec); + this->delay_accept.nsec = ((uint32_t) (*(inbuffer + offset))); + this->delay_accept.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->delay_accept.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->delay_accept.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->delay_accept.nsec); + this->delay_terminate.sec = ((uint32_t) (*(inbuffer + offset))); + this->delay_terminate.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->delay_terminate.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->delay_terminate.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->delay_terminate.sec); + this->delay_terminate.nsec = ((uint32_t) (*(inbuffer + offset))); + this->delay_terminate.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->delay_terminate.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->delay_terminate.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->delay_terminate.nsec); + this->pause_status.sec = ((uint32_t) (*(inbuffer + offset))); + this->pause_status.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->pause_status.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->pause_status.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->pause_status.sec); + this->pause_status.nsec = ((uint32_t) (*(inbuffer + offset))); + this->pause_status.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->pause_status.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->pause_status.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->pause_status.nsec); + return offset; + } + + const char * getType(){ return "actionlib/TestRequestGoal"; }; + const char * getMD5(){ return "db5d00ba98302d6c6dd3737e9a03ceea"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestRequestResult.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestRequestResult.h new file mode 100644 index 0000000..9788725 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestRequestResult.h @@ -0,0 +1,80 @@ +#ifndef _ROS_actionlib_TestRequestResult_h +#define _ROS_actionlib_TestRequestResult_h + +#include +#include +#include +#include "ros/msg.h" + +namespace actionlib +{ + + class TestRequestResult : public ros::Msg + { + public: + typedef int32_t _the_result_type; + _the_result_type the_result; + typedef bool _is_simple_server_type; + _is_simple_server_type is_simple_server; + + TestRequestResult(): + the_result(0), + is_simple_server(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_the_result; + u_the_result.real = this->the_result; + *(outbuffer + offset + 0) = (u_the_result.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_the_result.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_the_result.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_the_result.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->the_result); + union { + bool real; + uint8_t base; + } u_is_simple_server; + u_is_simple_server.real = this->is_simple_server; + *(outbuffer + offset + 0) = (u_is_simple_server.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->is_simple_server); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_the_result; + u_the_result.base = 0; + u_the_result.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_the_result.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_the_result.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_the_result.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->the_result = u_the_result.real; + offset += sizeof(this->the_result); + union { + bool real; + uint8_t base; + } u_is_simple_server; + u_is_simple_server.base = 0; + u_is_simple_server.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->is_simple_server = u_is_simple_server.real; + offset += sizeof(this->is_simple_server); + return offset; + } + + const char * getType(){ return "actionlib/TestRequestResult"; }; + const char * getMD5(){ return "61c2364524499c7c5017e2f3fce7ba06"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestResult.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestResult.h new file mode 100644 index 0000000..5c9718c --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TestResult.h @@ -0,0 +1,62 @@ +#ifndef _ROS_actionlib_TestResult_h +#define _ROS_actionlib_TestResult_h + +#include +#include +#include +#include "ros/msg.h" + +namespace actionlib +{ + + class TestResult : public ros::Msg + { + public: + typedef int32_t _result_type; + _result_type result; + + TestResult(): + result(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_result; + u_result.real = this->result; + *(outbuffer + offset + 0) = (u_result.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_result.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_result.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_result.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->result); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_result; + u_result.base = 0; + u_result.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_result.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_result.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_result.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->result = u_result.real; + offset += sizeof(this->result); + return offset; + } + + const char * getType(){ return "actionlib/TestResult"; }; + const char * getMD5(){ return "034a8e20d6a306665e3a5b340fab3f09"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsAction.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsAction.h new file mode 100644 index 0000000..30c73cc --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_TwoIntsAction_h +#define _ROS_actionlib_TwoIntsAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "actionlib/TwoIntsActionGoal.h" +#include "actionlib/TwoIntsActionResult.h" +#include "actionlib/TwoIntsActionFeedback.h" + +namespace actionlib +{ + + class TwoIntsAction : public ros::Msg + { + public: + typedef actionlib::TwoIntsActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef actionlib::TwoIntsActionResult _action_result_type; + _action_result_type action_result; + typedef actionlib::TwoIntsActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + TwoIntsAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib/TwoIntsAction"; }; + const char * getMD5(){ return "6d1aa538c4bd6183a2dfb7fcac41ee50"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsActionFeedback.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsActionFeedback.h new file mode 100644 index 0000000..8cd4862 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_TwoIntsActionFeedback_h +#define _ROS_actionlib_TwoIntsActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "actionlib/TwoIntsFeedback.h" + +namespace actionlib +{ + + class TwoIntsActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef actionlib::TwoIntsFeedback _feedback_type; + _feedback_type feedback; + + TwoIntsActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib/TwoIntsActionFeedback"; }; + const char * getMD5(){ return "aae20e09065c3809e8a8e87c4c8953fd"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsActionGoal.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsActionGoal.h new file mode 100644 index 0000000..7d33c17 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_TwoIntsActionGoal_h +#define _ROS_actionlib_TwoIntsActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "actionlib/TwoIntsGoal.h" + +namespace actionlib +{ + + class TwoIntsActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef actionlib::TwoIntsGoal _goal_type; + _goal_type goal; + + TwoIntsActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib/TwoIntsActionGoal"; }; + const char * getMD5(){ return "684a2db55d6ffb8046fb9d6764ce0860"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsActionResult.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsActionResult.h new file mode 100644 index 0000000..e36c808 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_TwoIntsActionResult_h +#define _ROS_actionlib_TwoIntsActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "actionlib/TwoIntsResult.h" + +namespace actionlib +{ + + class TwoIntsActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef actionlib::TwoIntsResult _result_type; + _result_type result; + + TwoIntsActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib/TwoIntsActionResult"; }; + const char * getMD5(){ return "3ba7dea8b8cddcae4528ade4ef74b6e7"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsFeedback.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsFeedback.h new file mode 100644 index 0000000..3789c4d --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsFeedback.h @@ -0,0 +1,38 @@ +#ifndef _ROS_actionlib_TwoIntsFeedback_h +#define _ROS_actionlib_TwoIntsFeedback_h + +#include +#include +#include +#include "ros/msg.h" + +namespace actionlib +{ + + class TwoIntsFeedback : public ros::Msg + { + public: + + TwoIntsFeedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "actionlib/TwoIntsFeedback"; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsGoal.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsGoal.h new file mode 100644 index 0000000..088c6ec --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsGoal.h @@ -0,0 +1,102 @@ +#ifndef _ROS_actionlib_TwoIntsGoal_h +#define _ROS_actionlib_TwoIntsGoal_h + +#include +#include +#include +#include "ros/msg.h" + +namespace actionlib +{ + + class TwoIntsGoal : public ros::Msg + { + public: + typedef int64_t _a_type; + _a_type a; + typedef int64_t _b_type; + _b_type b; + + TwoIntsGoal(): + a(0), + b(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_a; + u_a.real = this->a; + *(outbuffer + offset + 0) = (u_a.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_a.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_a.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_a.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_a.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_a.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_a.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_a.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->a); + union { + int64_t real; + uint64_t base; + } u_b; + u_b.real = this->b; + *(outbuffer + offset + 0) = (u_b.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_b.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_b.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_b.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_b.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_b.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_b.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_b.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->b); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_a; + u_a.base = 0; + u_a.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->a = u_a.real; + offset += sizeof(this->a); + union { + int64_t real; + uint64_t base; + } u_b; + u_b.base = 0; + u_b.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->b = u_b.real; + offset += sizeof(this->b); + return offset; + } + + const char * getType(){ return "actionlib/TwoIntsGoal"; }; + const char * getMD5(){ return "36d09b846be0b371c5f190354dd3153e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsResult.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsResult.h new file mode 100644 index 0000000..51d3cce --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsResult.h @@ -0,0 +1,70 @@ +#ifndef _ROS_actionlib_TwoIntsResult_h +#define _ROS_actionlib_TwoIntsResult_h + +#include +#include +#include +#include "ros/msg.h" + +namespace actionlib +{ + + class TwoIntsResult : public ros::Msg + { + public: + typedef int64_t _sum_type; + _sum_type sum; + + TwoIntsResult(): + sum(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_sum; + u_sum.real = this->sum; + *(outbuffer + offset + 0) = (u_sum.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_sum.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_sum.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_sum.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_sum.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_sum.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_sum.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_sum.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->sum); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_sum; + u_sum.base = 0; + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->sum = u_sum.real; + offset += sizeof(this->sum); + return offset; + } + + const char * getType(){ return "actionlib/TwoIntsResult"; }; + const char * getMD5(){ return "b88405221c77b1878a3cbbfff53428d7"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_msgs/GoalID.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_msgs/GoalID.h new file mode 100644 index 0000000..24391a3 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_msgs/GoalID.h @@ -0,0 +1,79 @@ +#ifndef _ROS_actionlib_msgs_GoalID_h +#define _ROS_actionlib_msgs_GoalID_h + +#include +#include +#include +#include "ros/msg.h" +#include "ros/time.h" + +namespace actionlib_msgs +{ + + class GoalID : public ros::Msg + { + public: + typedef ros::Time _stamp_type; + _stamp_type stamp; + typedef const char* _id_type; + _id_type id; + + GoalID(): + stamp(), + id("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->stamp.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp.sec); + *(outbuffer + offset + 0) = (this->stamp.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp.nsec); + uint32_t length_id = strlen(this->id); + varToArr(outbuffer + offset, length_id); + offset += 4; + memcpy(outbuffer + offset, this->id, length_id); + offset += length_id; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->stamp.sec = ((uint32_t) (*(inbuffer + offset))); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp.sec); + this->stamp.nsec = ((uint32_t) (*(inbuffer + offset))); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp.nsec); + uint32_t length_id; + arrToVar(length_id, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_id; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_id-1]=0; + this->id = (char *)(inbuffer + offset-1); + offset += length_id; + return offset; + } + + const char * getType(){ return "actionlib_msgs/GoalID"; }; + const char * getMD5(){ return "302881f31927c1df708a2dbab0e80ee8"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_msgs/GoalStatus.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_msgs/GoalStatus.h new file mode 100644 index 0000000..349524c --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_msgs/GoalStatus.h @@ -0,0 +1,78 @@ +#ifndef _ROS_actionlib_msgs_GoalStatus_h +#define _ROS_actionlib_msgs_GoalStatus_h + +#include +#include +#include +#include "ros/msg.h" +#include "actionlib_msgs/GoalID.h" + +namespace actionlib_msgs +{ + + class GoalStatus : public ros::Msg + { + public: + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef uint8_t _status_type; + _status_type status; + typedef const char* _text_type; + _text_type text; + enum { PENDING = 0 }; + enum { ACTIVE = 1 }; + enum { PREEMPTED = 2 }; + enum { SUCCEEDED = 3 }; + enum { ABORTED = 4 }; + enum { REJECTED = 5 }; + enum { PREEMPTING = 6 }; + enum { RECALLING = 7 }; + enum { RECALLED = 8 }; + enum { LOST = 9 }; + + GoalStatus(): + goal_id(), + status(0), + text("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->goal_id.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->status >> (8 * 0)) & 0xFF; + offset += sizeof(this->status); + uint32_t length_text = strlen(this->text); + varToArr(outbuffer + offset, length_text); + offset += 4; + memcpy(outbuffer + offset, this->text, length_text); + offset += length_text; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->goal_id.deserialize(inbuffer + offset); + this->status = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->status); + uint32_t length_text; + arrToVar(length_text, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_text; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_text-1]=0; + this->text = (char *)(inbuffer + offset-1); + offset += length_text; + return offset; + } + + const char * getType(){ return "actionlib_msgs/GoalStatus"; }; + const char * getMD5(){ return "d388f9b87b3c471f784434d671988d4a"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_msgs/GoalStatusArray.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_msgs/GoalStatusArray.h new file mode 100644 index 0000000..9e39b5f --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_msgs/GoalStatusArray.h @@ -0,0 +1,70 @@ +#ifndef _ROS_actionlib_msgs_GoalStatusArray_h +#define _ROS_actionlib_msgs_GoalStatusArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" + +namespace actionlib_msgs +{ + + class GoalStatusArray : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t status_list_length; + typedef actionlib_msgs::GoalStatus _status_list_type; + _status_list_type st_status_list; + _status_list_type * status_list; + + GoalStatusArray(): + header(), + status_list_length(0), status_list(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->status_list_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->status_list_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->status_list_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->status_list_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->status_list_length); + for( uint32_t i = 0; i < status_list_length; i++){ + offset += this->status_list[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t status_list_lengthT = ((uint32_t) (*(inbuffer + offset))); + status_list_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + status_list_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + status_list_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->status_list_length); + if(status_list_lengthT > status_list_length) + this->status_list = (actionlib_msgs::GoalStatus*)realloc(this->status_list, status_list_lengthT * sizeof(actionlib_msgs::GoalStatus)); + status_list_length = status_list_lengthT; + for( uint32_t i = 0; i < status_list_length; i++){ + offset += this->st_status_list.deserialize(inbuffer + offset); + memcpy( &(this->status_list[i]), &(this->st_status_list), sizeof(actionlib_msgs::GoalStatus)); + } + return offset; + } + + const char * getType(){ return "actionlib_msgs/GoalStatusArray"; }; + const char * getMD5(){ return "8b2b82f13216d0a8ea88bd3af735e619"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingAction.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingAction.h new file mode 100644 index 0000000..16eef59 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_tutorials_AveragingAction_h +#define _ROS_actionlib_tutorials_AveragingAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "actionlib_tutorials/AveragingActionGoal.h" +#include "actionlib_tutorials/AveragingActionResult.h" +#include "actionlib_tutorials/AveragingActionFeedback.h" + +namespace actionlib_tutorials +{ + + class AveragingAction : public ros::Msg + { + public: + typedef actionlib_tutorials::AveragingActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef actionlib_tutorials::AveragingActionResult _action_result_type; + _action_result_type action_result; + typedef actionlib_tutorials::AveragingActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + AveragingAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib_tutorials/AveragingAction"; }; + const char * getMD5(){ return "628678f2b4fa6a5951746a4a2d39e716"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingActionFeedback.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingActionFeedback.h new file mode 100644 index 0000000..e269f39 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_tutorials_AveragingActionFeedback_h +#define _ROS_actionlib_tutorials_AveragingActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "actionlib_tutorials/AveragingFeedback.h" + +namespace actionlib_tutorials +{ + + class AveragingActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef actionlib_tutorials::AveragingFeedback _feedback_type; + _feedback_type feedback; + + AveragingActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib_tutorials/AveragingActionFeedback"; }; + const char * getMD5(){ return "78a4a09241b1791069223ae7ebd5b16b"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingActionGoal.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingActionGoal.h new file mode 100644 index 0000000..e9f718f --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_tutorials_AveragingActionGoal_h +#define _ROS_actionlib_tutorials_AveragingActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "actionlib_tutorials/AveragingGoal.h" + +namespace actionlib_tutorials +{ + + class AveragingActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef actionlib_tutorials::AveragingGoal _goal_type; + _goal_type goal; + + AveragingActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib_tutorials/AveragingActionGoal"; }; + const char * getMD5(){ return "1561825b734ebd6039851c501e3fb570"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingActionResult.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingActionResult.h new file mode 100644 index 0000000..db99e51 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_tutorials_AveragingActionResult_h +#define _ROS_actionlib_tutorials_AveragingActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "actionlib_tutorials/AveragingResult.h" + +namespace actionlib_tutorials +{ + + class AveragingActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef actionlib_tutorials::AveragingResult _result_type; + _result_type result; + + AveragingActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib_tutorials/AveragingActionResult"; }; + const char * getMD5(){ return "8672cb489d347580acdcd05c5d497497"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingFeedback.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingFeedback.h new file mode 100644 index 0000000..e71ad1f --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingFeedback.h @@ -0,0 +1,134 @@ +#ifndef _ROS_actionlib_tutorials_AveragingFeedback_h +#define _ROS_actionlib_tutorials_AveragingFeedback_h + +#include +#include +#include +#include "ros/msg.h" + +namespace actionlib_tutorials +{ + + class AveragingFeedback : public ros::Msg + { + public: + typedef int32_t _sample_type; + _sample_type sample; + typedef float _data_type; + _data_type data; + typedef float _mean_type; + _mean_type mean; + typedef float _std_dev_type; + _std_dev_type std_dev; + + AveragingFeedback(): + sample(0), + data(0), + mean(0), + std_dev(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_sample; + u_sample.real = this->sample; + *(outbuffer + offset + 0) = (u_sample.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_sample.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_sample.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_sample.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->sample); + union { + float real; + uint32_t base; + } u_data; + u_data.real = this->data; + *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_data.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_data.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_data.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->data); + union { + float real; + uint32_t base; + } u_mean; + u_mean.real = this->mean; + *(outbuffer + offset + 0) = (u_mean.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_mean.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_mean.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_mean.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->mean); + union { + float real; + uint32_t base; + } u_std_dev; + u_std_dev.real = this->std_dev; + *(outbuffer + offset + 0) = (u_std_dev.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_std_dev.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_std_dev.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_std_dev.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->std_dev); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_sample; + u_sample.base = 0; + u_sample.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_sample.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_sample.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_sample.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->sample = u_sample.real; + offset += sizeof(this->sample); + union { + float real; + uint32_t base; + } u_data; + u_data.base = 0; + u_data.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->data = u_data.real; + offset += sizeof(this->data); + union { + float real; + uint32_t base; + } u_mean; + u_mean.base = 0; + u_mean.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_mean.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_mean.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_mean.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->mean = u_mean.real; + offset += sizeof(this->mean); + union { + float real; + uint32_t base; + } u_std_dev; + u_std_dev.base = 0; + u_std_dev.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_std_dev.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_std_dev.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_std_dev.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->std_dev = u_std_dev.real; + offset += sizeof(this->std_dev); + return offset; + } + + const char * getType(){ return "actionlib_tutorials/AveragingFeedback"; }; + const char * getMD5(){ return "9e8dfc53c2f2a032ca33fa80ec46fd4f"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingGoal.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingGoal.h new file mode 100644 index 0000000..e1cc2ad --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingGoal.h @@ -0,0 +1,62 @@ +#ifndef _ROS_actionlib_tutorials_AveragingGoal_h +#define _ROS_actionlib_tutorials_AveragingGoal_h + +#include +#include +#include +#include "ros/msg.h" + +namespace actionlib_tutorials +{ + + class AveragingGoal : public ros::Msg + { + public: + typedef int32_t _samples_type; + _samples_type samples; + + AveragingGoal(): + samples(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_samples; + u_samples.real = this->samples; + *(outbuffer + offset + 0) = (u_samples.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_samples.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_samples.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_samples.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->samples); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_samples; + u_samples.base = 0; + u_samples.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_samples.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_samples.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_samples.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->samples = u_samples.real; + offset += sizeof(this->samples); + return offset; + } + + const char * getType(){ return "actionlib_tutorials/AveragingGoal"; }; + const char * getMD5(){ return "32c9b10ef9b253faa93b93f564762c8f"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingResult.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingResult.h new file mode 100644 index 0000000..e476e59 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingResult.h @@ -0,0 +1,86 @@ +#ifndef _ROS_actionlib_tutorials_AveragingResult_h +#define _ROS_actionlib_tutorials_AveragingResult_h + +#include +#include +#include +#include "ros/msg.h" + +namespace actionlib_tutorials +{ + + class AveragingResult : public ros::Msg + { + public: + typedef float _mean_type; + _mean_type mean; + typedef float _std_dev_type; + _std_dev_type std_dev; + + AveragingResult(): + mean(0), + std_dev(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + float real; + uint32_t base; + } u_mean; + u_mean.real = this->mean; + *(outbuffer + offset + 0) = (u_mean.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_mean.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_mean.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_mean.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->mean); + union { + float real; + uint32_t base; + } u_std_dev; + u_std_dev.real = this->std_dev; + *(outbuffer + offset + 0) = (u_std_dev.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_std_dev.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_std_dev.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_std_dev.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->std_dev); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + float real; + uint32_t base; + } u_mean; + u_mean.base = 0; + u_mean.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_mean.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_mean.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_mean.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->mean = u_mean.real; + offset += sizeof(this->mean); + union { + float real; + uint32_t base; + } u_std_dev; + u_std_dev.base = 0; + u_std_dev.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_std_dev.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_std_dev.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_std_dev.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->std_dev = u_std_dev.real; + offset += sizeof(this->std_dev); + return offset; + } + + const char * getType(){ return "actionlib_tutorials/AveragingResult"; }; + const char * getMD5(){ return "d5c7decf6df75ffb4367a05c1bcc7612"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciAction.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciAction.h new file mode 100644 index 0000000..2fd1c63 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_tutorials_FibonacciAction_h +#define _ROS_actionlib_tutorials_FibonacciAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "actionlib_tutorials/FibonacciActionGoal.h" +#include "actionlib_tutorials/FibonacciActionResult.h" +#include "actionlib_tutorials/FibonacciActionFeedback.h" + +namespace actionlib_tutorials +{ + + class FibonacciAction : public ros::Msg + { + public: + typedef actionlib_tutorials::FibonacciActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef actionlib_tutorials::FibonacciActionResult _action_result_type; + _action_result_type action_result; + typedef actionlib_tutorials::FibonacciActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + FibonacciAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib_tutorials/FibonacciAction"; }; + const char * getMD5(){ return "f59df5767bf7634684781c92598b2406"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciActionFeedback.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciActionFeedback.h new file mode 100644 index 0000000..241ebad --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_tutorials_FibonacciActionFeedback_h +#define _ROS_actionlib_tutorials_FibonacciActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "actionlib_tutorials/FibonacciFeedback.h" + +namespace actionlib_tutorials +{ + + class FibonacciActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef actionlib_tutorials::FibonacciFeedback _feedback_type; + _feedback_type feedback; + + FibonacciActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib_tutorials/FibonacciActionFeedback"; }; + const char * getMD5(){ return "73b8497a9f629a31c0020900e4148f07"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciActionGoal.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciActionGoal.h new file mode 100644 index 0000000..dd13617 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_tutorials_FibonacciActionGoal_h +#define _ROS_actionlib_tutorials_FibonacciActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "actionlib_tutorials/FibonacciGoal.h" + +namespace actionlib_tutorials +{ + + class FibonacciActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef actionlib_tutorials::FibonacciGoal _goal_type; + _goal_type goal; + + FibonacciActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib_tutorials/FibonacciActionGoal"; }; + const char * getMD5(){ return "006871c7fa1d0e3d5fe2226bf17b2a94"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciActionResult.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciActionResult.h new file mode 100644 index 0000000..35c9d48 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_tutorials_FibonacciActionResult_h +#define _ROS_actionlib_tutorials_FibonacciActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "actionlib_tutorials/FibonacciResult.h" + +namespace actionlib_tutorials +{ + + class FibonacciActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef actionlib_tutorials::FibonacciResult _result_type; + _result_type result; + + FibonacciActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib_tutorials/FibonacciActionResult"; }; + const char * getMD5(){ return "bee73a9fe29ae25e966e105f5553dd03"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciFeedback.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciFeedback.h new file mode 100644 index 0000000..87eaf8f --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciFeedback.h @@ -0,0 +1,82 @@ +#ifndef _ROS_actionlib_tutorials_FibonacciFeedback_h +#define _ROS_actionlib_tutorials_FibonacciFeedback_h + +#include +#include +#include +#include "ros/msg.h" + +namespace actionlib_tutorials +{ + + class FibonacciFeedback : public ros::Msg + { + public: + uint32_t sequence_length; + typedef int32_t _sequence_type; + _sequence_type st_sequence; + _sequence_type * sequence; + + FibonacciFeedback(): + sequence_length(0), sequence(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->sequence_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->sequence_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->sequence_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->sequence_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->sequence_length); + for( uint32_t i = 0; i < sequence_length; i++){ + union { + int32_t real; + uint32_t base; + } u_sequencei; + u_sequencei.real = this->sequence[i]; + *(outbuffer + offset + 0) = (u_sequencei.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_sequencei.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_sequencei.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_sequencei.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->sequence[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t sequence_lengthT = ((uint32_t) (*(inbuffer + offset))); + sequence_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + sequence_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + sequence_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->sequence_length); + if(sequence_lengthT > sequence_length) + this->sequence = (int32_t*)realloc(this->sequence, sequence_lengthT * sizeof(int32_t)); + sequence_length = sequence_lengthT; + for( uint32_t i = 0; i < sequence_length; i++){ + union { + int32_t real; + uint32_t base; + } u_st_sequence; + u_st_sequence.base = 0; + u_st_sequence.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_sequence.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_sequence.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_sequence.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_sequence = u_st_sequence.real; + offset += sizeof(this->st_sequence); + memcpy( &(this->sequence[i]), &(this->st_sequence), sizeof(int32_t)); + } + return offset; + } + + const char * getType(){ return "actionlib_tutorials/FibonacciFeedback"; }; + const char * getMD5(){ return "b81e37d2a31925a0e8ae261a8699cb79"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciGoal.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciGoal.h new file mode 100644 index 0000000..e711de1 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciGoal.h @@ -0,0 +1,62 @@ +#ifndef _ROS_actionlib_tutorials_FibonacciGoal_h +#define _ROS_actionlib_tutorials_FibonacciGoal_h + +#include +#include +#include +#include "ros/msg.h" + +namespace actionlib_tutorials +{ + + class FibonacciGoal : public ros::Msg + { + public: + typedef int32_t _order_type; + _order_type order; + + FibonacciGoal(): + order(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_order; + u_order.real = this->order; + *(outbuffer + offset + 0) = (u_order.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_order.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_order.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_order.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->order); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_order; + u_order.base = 0; + u_order.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_order.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_order.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_order.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->order = u_order.real; + offset += sizeof(this->order); + return offset; + } + + const char * getType(){ return "actionlib_tutorials/FibonacciGoal"; }; + const char * getMD5(){ return "6889063349a00b249bd1661df429d822"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciResult.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciResult.h new file mode 100644 index 0000000..dc71023 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciResult.h @@ -0,0 +1,82 @@ +#ifndef _ROS_actionlib_tutorials_FibonacciResult_h +#define _ROS_actionlib_tutorials_FibonacciResult_h + +#include +#include +#include +#include "ros/msg.h" + +namespace actionlib_tutorials +{ + + class FibonacciResult : public ros::Msg + { + public: + uint32_t sequence_length; + typedef int32_t _sequence_type; + _sequence_type st_sequence; + _sequence_type * sequence; + + FibonacciResult(): + sequence_length(0), sequence(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->sequence_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->sequence_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->sequence_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->sequence_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->sequence_length); + for( uint32_t i = 0; i < sequence_length; i++){ + union { + int32_t real; + uint32_t base; + } u_sequencei; + u_sequencei.real = this->sequence[i]; + *(outbuffer + offset + 0) = (u_sequencei.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_sequencei.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_sequencei.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_sequencei.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->sequence[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t sequence_lengthT = ((uint32_t) (*(inbuffer + offset))); + sequence_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + sequence_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + sequence_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->sequence_length); + if(sequence_lengthT > sequence_length) + this->sequence = (int32_t*)realloc(this->sequence, sequence_lengthT * sizeof(int32_t)); + sequence_length = sequence_lengthT; + for( uint32_t i = 0; i < sequence_length; i++){ + union { + int32_t real; + uint32_t base; + } u_st_sequence; + u_st_sequence.base = 0; + u_st_sequence.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_sequence.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_sequence.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_sequence.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_sequence = u_st_sequence.real; + offset += sizeof(this->st_sequence); + memcpy( &(this->sequence[i]), &(this->st_sequence), sizeof(int32_t)); + } + return offset; + } + + const char * getType(){ return "actionlib_tutorials/FibonacciResult"; }; + const char * getMD5(){ return "b81e37d2a31925a0e8ae261a8699cb79"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/base_local_planner/Position2DInt.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/base_local_planner/Position2DInt.h new file mode 100644 index 0000000..79beed2 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/base_local_planner/Position2DInt.h @@ -0,0 +1,102 @@ +#ifndef _ROS_base_local_planner_Position2DInt_h +#define _ROS_base_local_planner_Position2DInt_h + +#include +#include +#include +#include "ros/msg.h" + +namespace base_local_planner +{ + + class Position2DInt : public ros::Msg + { + public: + typedef int64_t _x_type; + _x_type x; + typedef int64_t _y_type; + _y_type y; + + Position2DInt(): + x(0), + y(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_x; + u_x.real = this->x; + *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_x.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_x.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_x.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_x.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->x); + union { + int64_t real; + uint64_t base; + } u_y; + u_y.real = this->y; + *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_y.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_y.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_y.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_y.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->y); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_x; + u_x.base = 0; + u_x.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->x = u_x.real; + offset += sizeof(this->x); + union { + int64_t real; + uint64_t base; + } u_y; + u_y.base = 0; + u_y.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->y = u_y.real; + offset += sizeof(this->y); + return offset; + } + + const char * getType(){ return "base_local_planner/Position2DInt"; }; + const char * getMD5(){ return "3b834ede922a0fff22c43585c533b49f"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/bond/Constants.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/bond/Constants.h new file mode 100644 index 0000000..9594342 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/bond/Constants.h @@ -0,0 +1,44 @@ +#ifndef _ROS_bond_Constants_h +#define _ROS_bond_Constants_h + +#include +#include +#include +#include "ros/msg.h" + +namespace bond +{ + + class Constants : public ros::Msg + { + public: + enum { DEAD_PUBLISH_PERIOD = 0.05 }; + enum { DEFAULT_CONNECT_TIMEOUT = 10.0 }; + enum { DEFAULT_HEARTBEAT_TIMEOUT = 4.0 }; + enum { DEFAULT_DISCONNECT_TIMEOUT = 2.0 }; + enum { DEFAULT_HEARTBEAT_PERIOD = 1.0 }; + enum { DISABLE_HEARTBEAT_TIMEOUT_PARAM = /bond_disable_heartbeat_timeout }; + + Constants() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "bond/Constants"; }; + const char * getMD5(){ return "6fc594dc1d7bd7919077042712f8c8b0"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/bond/Status.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/bond/Status.h new file mode 100644 index 0000000..b9fa9a5 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/bond/Status.h @@ -0,0 +1,144 @@ +#ifndef _ROS_bond_Status_h +#define _ROS_bond_Status_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace bond +{ + + class Status : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef const char* _id_type; + _id_type id; + typedef const char* _instance_id_type; + _instance_id_type instance_id; + typedef bool _active_type; + _active_type active; + typedef float _heartbeat_timeout_type; + _heartbeat_timeout_type heartbeat_timeout; + typedef float _heartbeat_period_type; + _heartbeat_period_type heartbeat_period; + + Status(): + header(), + id(""), + instance_id(""), + active(0), + heartbeat_timeout(0), + heartbeat_period(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + uint32_t length_id = strlen(this->id); + varToArr(outbuffer + offset, length_id); + offset += 4; + memcpy(outbuffer + offset, this->id, length_id); + offset += length_id; + uint32_t length_instance_id = strlen(this->instance_id); + varToArr(outbuffer + offset, length_instance_id); + offset += 4; + memcpy(outbuffer + offset, this->instance_id, length_instance_id); + offset += length_instance_id; + union { + bool real; + uint8_t base; + } u_active; + u_active.real = this->active; + *(outbuffer + offset + 0) = (u_active.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->active); + union { + float real; + uint32_t base; + } u_heartbeat_timeout; + u_heartbeat_timeout.real = this->heartbeat_timeout; + *(outbuffer + offset + 0) = (u_heartbeat_timeout.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_heartbeat_timeout.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_heartbeat_timeout.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_heartbeat_timeout.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->heartbeat_timeout); + union { + float real; + uint32_t base; + } u_heartbeat_period; + u_heartbeat_period.real = this->heartbeat_period; + *(outbuffer + offset + 0) = (u_heartbeat_period.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_heartbeat_period.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_heartbeat_period.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_heartbeat_period.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->heartbeat_period); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t length_id; + arrToVar(length_id, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_id; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_id-1]=0; + this->id = (char *)(inbuffer + offset-1); + offset += length_id; + uint32_t length_instance_id; + arrToVar(length_instance_id, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_instance_id; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_instance_id-1]=0; + this->instance_id = (char *)(inbuffer + offset-1); + offset += length_instance_id; + union { + bool real; + uint8_t base; + } u_active; + u_active.base = 0; + u_active.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->active = u_active.real; + offset += sizeof(this->active); + union { + float real; + uint32_t base; + } u_heartbeat_timeout; + u_heartbeat_timeout.base = 0; + u_heartbeat_timeout.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_heartbeat_timeout.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_heartbeat_timeout.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_heartbeat_timeout.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->heartbeat_timeout = u_heartbeat_timeout.real; + offset += sizeof(this->heartbeat_timeout); + union { + float real; + uint32_t base; + } u_heartbeat_period; + u_heartbeat_period.base = 0; + u_heartbeat_period.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_heartbeat_period.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_heartbeat_period.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_heartbeat_period.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->heartbeat_period = u_heartbeat_period.real; + offset += sizeof(this->heartbeat_period); + return offset; + } + + const char * getType(){ return "bond/Status"; }; + const char * getMD5(){ return "eacc84bf5d65b6777d4c50f463dfb9c8"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryAction.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryAction.h new file mode 100644 index 0000000..ec67771 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_FollowJointTrajectoryAction_h +#define _ROS_control_msgs_FollowJointTrajectoryAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "control_msgs/FollowJointTrajectoryActionGoal.h" +#include "control_msgs/FollowJointTrajectoryActionResult.h" +#include "control_msgs/FollowJointTrajectoryActionFeedback.h" + +namespace control_msgs +{ + + class FollowJointTrajectoryAction : public ros::Msg + { + public: + typedef control_msgs::FollowJointTrajectoryActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef control_msgs::FollowJointTrajectoryActionResult _action_result_type; + _action_result_type action_result; + typedef control_msgs::FollowJointTrajectoryActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + FollowJointTrajectoryAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/FollowJointTrajectoryAction"; }; + const char * getMD5(){ return "bc4f9b743838566551c0390c65f1a248"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryActionFeedback.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryActionFeedback.h new file mode 100644 index 0000000..d5d037a --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_FollowJointTrajectoryActionFeedback_h +#define _ROS_control_msgs_FollowJointTrajectoryActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "control_msgs/FollowJointTrajectoryFeedback.h" + +namespace control_msgs +{ + + class FollowJointTrajectoryActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef control_msgs::FollowJointTrajectoryFeedback _feedback_type; + _feedback_type feedback; + + FollowJointTrajectoryActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/FollowJointTrajectoryActionFeedback"; }; + const char * getMD5(){ return "d8920dc4eae9fc107e00999cce4be641"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryActionGoal.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryActionGoal.h new file mode 100644 index 0000000..4aa00c6 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_FollowJointTrajectoryActionGoal_h +#define _ROS_control_msgs_FollowJointTrajectoryActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "control_msgs/FollowJointTrajectoryGoal.h" + +namespace control_msgs +{ + + class FollowJointTrajectoryActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef control_msgs::FollowJointTrajectoryGoal _goal_type; + _goal_type goal; + + FollowJointTrajectoryActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/FollowJointTrajectoryActionGoal"; }; + const char * getMD5(){ return "cff5c1d533bf2f82dd0138d57f4304bb"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryActionResult.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryActionResult.h new file mode 100644 index 0000000..aa6b2b3 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_FollowJointTrajectoryActionResult_h +#define _ROS_control_msgs_FollowJointTrajectoryActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "control_msgs/FollowJointTrajectoryResult.h" + +namespace control_msgs +{ + + class FollowJointTrajectoryActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef control_msgs::FollowJointTrajectoryResult _result_type; + _result_type result; + + FollowJointTrajectoryActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/FollowJointTrajectoryActionResult"; }; + const char * getMD5(){ return "c4fb3b000dc9da4fd99699380efcc5d9"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryFeedback.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryFeedback.h new file mode 100644 index 0000000..6f27ecc --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryFeedback.h @@ -0,0 +1,97 @@ +#ifndef _ROS_control_msgs_FollowJointTrajectoryFeedback_h +#define _ROS_control_msgs_FollowJointTrajectoryFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "trajectory_msgs/JointTrajectoryPoint.h" + +namespace control_msgs +{ + + class FollowJointTrajectoryFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t joint_names_length; + typedef char* _joint_names_type; + _joint_names_type st_joint_names; + _joint_names_type * joint_names; + typedef trajectory_msgs::JointTrajectoryPoint _desired_type; + _desired_type desired; + typedef trajectory_msgs::JointTrajectoryPoint _actual_type; + _actual_type actual; + typedef trajectory_msgs::JointTrajectoryPoint _error_type; + _error_type error; + + FollowJointTrajectoryFeedback(): + header(), + joint_names_length(0), joint_names(NULL), + desired(), + actual(), + error() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->joint_names_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->joint_names_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->joint_names_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->joint_names_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->joint_names_length); + for( uint32_t i = 0; i < joint_names_length; i++){ + uint32_t length_joint_namesi = strlen(this->joint_names[i]); + varToArr(outbuffer + offset, length_joint_namesi); + offset += 4; + memcpy(outbuffer + offset, this->joint_names[i], length_joint_namesi); + offset += length_joint_namesi; + } + offset += this->desired.serialize(outbuffer + offset); + offset += this->actual.serialize(outbuffer + offset); + offset += this->error.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t joint_names_lengthT = ((uint32_t) (*(inbuffer + offset))); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->joint_names_length); + if(joint_names_lengthT > joint_names_length) + this->joint_names = (char**)realloc(this->joint_names, joint_names_lengthT * sizeof(char*)); + joint_names_length = joint_names_lengthT; + for( uint32_t i = 0; i < joint_names_length; i++){ + uint32_t length_st_joint_names; + arrToVar(length_st_joint_names, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_joint_names; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_joint_names-1]=0; + this->st_joint_names = (char *)(inbuffer + offset-1); + offset += length_st_joint_names; + memcpy( &(this->joint_names[i]), &(this->st_joint_names), sizeof(char*)); + } + offset += this->desired.deserialize(inbuffer + offset); + offset += this->actual.deserialize(inbuffer + offset); + offset += this->error.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/FollowJointTrajectoryFeedback"; }; + const char * getMD5(){ return "10817c60c2486ef6b33e97dcd87f4474"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryGoal.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryGoal.h new file mode 100644 index 0000000..1185615 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryGoal.h @@ -0,0 +1,119 @@ +#ifndef _ROS_control_msgs_FollowJointTrajectoryGoal_h +#define _ROS_control_msgs_FollowJointTrajectoryGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "trajectory_msgs/JointTrajectory.h" +#include "control_msgs/JointTolerance.h" +#include "ros/duration.h" + +namespace control_msgs +{ + + class FollowJointTrajectoryGoal : public ros::Msg + { + public: + typedef trajectory_msgs::JointTrajectory _trajectory_type; + _trajectory_type trajectory; + uint32_t path_tolerance_length; + typedef control_msgs::JointTolerance _path_tolerance_type; + _path_tolerance_type st_path_tolerance; + _path_tolerance_type * path_tolerance; + uint32_t goal_tolerance_length; + typedef control_msgs::JointTolerance _goal_tolerance_type; + _goal_tolerance_type st_goal_tolerance; + _goal_tolerance_type * goal_tolerance; + typedef ros::Duration _goal_time_tolerance_type; + _goal_time_tolerance_type goal_time_tolerance; + + FollowJointTrajectoryGoal(): + trajectory(), + path_tolerance_length(0), path_tolerance(NULL), + goal_tolerance_length(0), goal_tolerance(NULL), + goal_time_tolerance() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->trajectory.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->path_tolerance_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->path_tolerance_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->path_tolerance_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->path_tolerance_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->path_tolerance_length); + for( uint32_t i = 0; i < path_tolerance_length; i++){ + offset += this->path_tolerance[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->goal_tolerance_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->goal_tolerance_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->goal_tolerance_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->goal_tolerance_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->goal_tolerance_length); + for( uint32_t i = 0; i < goal_tolerance_length; i++){ + offset += this->goal_tolerance[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->goal_time_tolerance.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->goal_time_tolerance.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->goal_time_tolerance.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->goal_time_tolerance.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->goal_time_tolerance.sec); + *(outbuffer + offset + 0) = (this->goal_time_tolerance.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->goal_time_tolerance.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->goal_time_tolerance.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->goal_time_tolerance.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->goal_time_tolerance.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->trajectory.deserialize(inbuffer + offset); + uint32_t path_tolerance_lengthT = ((uint32_t) (*(inbuffer + offset))); + path_tolerance_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + path_tolerance_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + path_tolerance_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->path_tolerance_length); + if(path_tolerance_lengthT > path_tolerance_length) + this->path_tolerance = (control_msgs::JointTolerance*)realloc(this->path_tolerance, path_tolerance_lengthT * sizeof(control_msgs::JointTolerance)); + path_tolerance_length = path_tolerance_lengthT; + for( uint32_t i = 0; i < path_tolerance_length; i++){ + offset += this->st_path_tolerance.deserialize(inbuffer + offset); + memcpy( &(this->path_tolerance[i]), &(this->st_path_tolerance), sizeof(control_msgs::JointTolerance)); + } + uint32_t goal_tolerance_lengthT = ((uint32_t) (*(inbuffer + offset))); + goal_tolerance_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + goal_tolerance_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + goal_tolerance_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->goal_tolerance_length); + if(goal_tolerance_lengthT > goal_tolerance_length) + this->goal_tolerance = (control_msgs::JointTolerance*)realloc(this->goal_tolerance, goal_tolerance_lengthT * sizeof(control_msgs::JointTolerance)); + goal_tolerance_length = goal_tolerance_lengthT; + for( uint32_t i = 0; i < goal_tolerance_length; i++){ + offset += this->st_goal_tolerance.deserialize(inbuffer + offset); + memcpy( &(this->goal_tolerance[i]), &(this->st_goal_tolerance), sizeof(control_msgs::JointTolerance)); + } + this->goal_time_tolerance.sec = ((uint32_t) (*(inbuffer + offset))); + this->goal_time_tolerance.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->goal_time_tolerance.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->goal_time_tolerance.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->goal_time_tolerance.sec); + this->goal_time_tolerance.nsec = ((uint32_t) (*(inbuffer + offset))); + this->goal_time_tolerance.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->goal_time_tolerance.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->goal_time_tolerance.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->goal_time_tolerance.nsec); + return offset; + } + + const char * getType(){ return "control_msgs/FollowJointTrajectoryGoal"; }; + const char * getMD5(){ return "69636787b6ecbde4d61d711979bc7ecb"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryResult.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryResult.h new file mode 100644 index 0000000..819f272 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryResult.h @@ -0,0 +1,85 @@ +#ifndef _ROS_control_msgs_FollowJointTrajectoryResult_h +#define _ROS_control_msgs_FollowJointTrajectoryResult_h + +#include +#include +#include +#include "ros/msg.h" + +namespace control_msgs +{ + + class FollowJointTrajectoryResult : public ros::Msg + { + public: + typedef int32_t _error_code_type; + _error_code_type error_code; + typedef const char* _error_string_type; + _error_string_type error_string; + enum { SUCCESSFUL = 0 }; + enum { INVALID_GOAL = -1 }; + enum { INVALID_JOINTS = -2 }; + enum { OLD_HEADER_TIMESTAMP = -3 }; + enum { PATH_TOLERANCE_VIOLATED = -4 }; + enum { GOAL_TOLERANCE_VIOLATED = -5 }; + + FollowJointTrajectoryResult(): + error_code(0), + error_string("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_error_code; + u_error_code.real = this->error_code; + *(outbuffer + offset + 0) = (u_error_code.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_error_code.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_error_code.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_error_code.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->error_code); + uint32_t length_error_string = strlen(this->error_string); + varToArr(outbuffer + offset, length_error_string); + offset += 4; + memcpy(outbuffer + offset, this->error_string, length_error_string); + offset += length_error_string; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_error_code; + u_error_code.base = 0; + u_error_code.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_error_code.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_error_code.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_error_code.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->error_code = u_error_code.real; + offset += sizeof(this->error_code); + uint32_t length_error_string; + arrToVar(length_error_string, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_error_string; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_error_string-1]=0; + this->error_string = (char *)(inbuffer + offset-1); + offset += length_error_string; + return offset; + } + + const char * getType(){ return "control_msgs/FollowJointTrajectoryResult"; }; + const char * getMD5(){ return "493383b18409bfb604b4e26c676401d2"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommand.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommand.h new file mode 100644 index 0000000..0b37e5c --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommand.h @@ -0,0 +1,102 @@ +#ifndef _ROS_control_msgs_GripperCommand_h +#define _ROS_control_msgs_GripperCommand_h + +#include +#include +#include +#include "ros/msg.h" + +namespace control_msgs +{ + + class GripperCommand : public ros::Msg + { + public: + typedef double _position_type; + _position_type position; + typedef double _max_effort_type; + _max_effort_type max_effort; + + GripperCommand(): + position(0), + max_effort(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_position; + u_position.real = this->position; + *(outbuffer + offset + 0) = (u_position.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_position.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_position.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_position.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_position.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_position.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_position.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_position.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->position); + union { + double real; + uint64_t base; + } u_max_effort; + u_max_effort.real = this->max_effort; + *(outbuffer + offset + 0) = (u_max_effort.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_max_effort.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_max_effort.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_max_effort.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_max_effort.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_max_effort.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_max_effort.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_max_effort.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->max_effort); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_position; + u_position.base = 0; + u_position.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->position = u_position.real; + offset += sizeof(this->position); + union { + double real; + uint64_t base; + } u_max_effort; + u_max_effort.base = 0; + u_max_effort.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_max_effort.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_max_effort.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_max_effort.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_max_effort.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_max_effort.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_max_effort.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_max_effort.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->max_effort = u_max_effort.real; + offset += sizeof(this->max_effort); + return offset; + } + + const char * getType(){ return "control_msgs/GripperCommand"; }; + const char * getMD5(){ return "680acaff79486f017132a7f198d40f08"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandAction.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandAction.h new file mode 100644 index 0000000..68d8356 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_GripperCommandAction_h +#define _ROS_control_msgs_GripperCommandAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "control_msgs/GripperCommandActionGoal.h" +#include "control_msgs/GripperCommandActionResult.h" +#include "control_msgs/GripperCommandActionFeedback.h" + +namespace control_msgs +{ + + class GripperCommandAction : public ros::Msg + { + public: + typedef control_msgs::GripperCommandActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef control_msgs::GripperCommandActionResult _action_result_type; + _action_result_type action_result; + typedef control_msgs::GripperCommandActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + GripperCommandAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/GripperCommandAction"; }; + const char * getMD5(){ return "950b2a6ebe831f5d4f4ceaba3d8be01e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandActionFeedback.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandActionFeedback.h new file mode 100644 index 0000000..67f99c9 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_GripperCommandActionFeedback_h +#define _ROS_control_msgs_GripperCommandActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "control_msgs/GripperCommandFeedback.h" + +namespace control_msgs +{ + + class GripperCommandActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef control_msgs::GripperCommandFeedback _feedback_type; + _feedback_type feedback; + + GripperCommandActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/GripperCommandActionFeedback"; }; + const char * getMD5(){ return "653dff30c045f5e6ff3feb3409f4558d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandActionGoal.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandActionGoal.h new file mode 100644 index 0000000..efb19d1 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_GripperCommandActionGoal_h +#define _ROS_control_msgs_GripperCommandActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "control_msgs/GripperCommandGoal.h" + +namespace control_msgs +{ + + class GripperCommandActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef control_msgs::GripperCommandGoal _goal_type; + _goal_type goal; + + GripperCommandActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/GripperCommandActionGoal"; }; + const char * getMD5(){ return "aa581f648a35ed681db2ec0bf7a82bea"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandActionResult.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandActionResult.h new file mode 100644 index 0000000..704f18d --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_GripperCommandActionResult_h +#define _ROS_control_msgs_GripperCommandActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "control_msgs/GripperCommandResult.h" + +namespace control_msgs +{ + + class GripperCommandActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef control_msgs::GripperCommandResult _result_type; + _result_type result; + + GripperCommandActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/GripperCommandActionResult"; }; + const char * getMD5(){ return "143702cb2df0f163c5283cedc5efc6b6"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandFeedback.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandFeedback.h new file mode 100644 index 0000000..15d0397 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandFeedback.h @@ -0,0 +1,138 @@ +#ifndef _ROS_control_msgs_GripperCommandFeedback_h +#define _ROS_control_msgs_GripperCommandFeedback_h + +#include +#include +#include +#include "ros/msg.h" + +namespace control_msgs +{ + + class GripperCommandFeedback : public ros::Msg + { + public: + typedef double _position_type; + _position_type position; + typedef double _effort_type; + _effort_type effort; + typedef bool _stalled_type; + _stalled_type stalled; + typedef bool _reached_goal_type; + _reached_goal_type reached_goal; + + GripperCommandFeedback(): + position(0), + effort(0), + stalled(0), + reached_goal(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_position; + u_position.real = this->position; + *(outbuffer + offset + 0) = (u_position.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_position.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_position.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_position.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_position.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_position.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_position.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_position.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->position); + union { + double real; + uint64_t base; + } u_effort; + u_effort.real = this->effort; + *(outbuffer + offset + 0) = (u_effort.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_effort.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_effort.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_effort.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_effort.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_effort.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_effort.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_effort.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->effort); + union { + bool real; + uint8_t base; + } u_stalled; + u_stalled.real = this->stalled; + *(outbuffer + offset + 0) = (u_stalled.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->stalled); + union { + bool real; + uint8_t base; + } u_reached_goal; + u_reached_goal.real = this->reached_goal; + *(outbuffer + offset + 0) = (u_reached_goal.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->reached_goal); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_position; + u_position.base = 0; + u_position.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->position = u_position.real; + offset += sizeof(this->position); + union { + double real; + uint64_t base; + } u_effort; + u_effort.base = 0; + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->effort = u_effort.real; + offset += sizeof(this->effort); + union { + bool real; + uint8_t base; + } u_stalled; + u_stalled.base = 0; + u_stalled.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->stalled = u_stalled.real; + offset += sizeof(this->stalled); + union { + bool real; + uint8_t base; + } u_reached_goal; + u_reached_goal.base = 0; + u_reached_goal.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->reached_goal = u_reached_goal.real; + offset += sizeof(this->reached_goal); + return offset; + } + + const char * getType(){ return "control_msgs/GripperCommandFeedback"; }; + const char * getMD5(){ return "e4cbff56d3562bcf113da5a5adeef91f"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandGoal.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandGoal.h new file mode 100644 index 0000000..544a864 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandGoal.h @@ -0,0 +1,44 @@ +#ifndef _ROS_control_msgs_GripperCommandGoal_h +#define _ROS_control_msgs_GripperCommandGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "control_msgs/GripperCommand.h" + +namespace control_msgs +{ + + class GripperCommandGoal : public ros::Msg + { + public: + typedef control_msgs::GripperCommand _command_type; + _command_type command; + + GripperCommandGoal(): + command() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->command.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->command.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/GripperCommandGoal"; }; + const char * getMD5(){ return "86fd82f4ddc48a4cb6856cfa69217e43"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandResult.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandResult.h new file mode 100644 index 0000000..e28b260 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandResult.h @@ -0,0 +1,138 @@ +#ifndef _ROS_control_msgs_GripperCommandResult_h +#define _ROS_control_msgs_GripperCommandResult_h + +#include +#include +#include +#include "ros/msg.h" + +namespace control_msgs +{ + + class GripperCommandResult : public ros::Msg + { + public: + typedef double _position_type; + _position_type position; + typedef double _effort_type; + _effort_type effort; + typedef bool _stalled_type; + _stalled_type stalled; + typedef bool _reached_goal_type; + _reached_goal_type reached_goal; + + GripperCommandResult(): + position(0), + effort(0), + stalled(0), + reached_goal(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_position; + u_position.real = this->position; + *(outbuffer + offset + 0) = (u_position.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_position.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_position.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_position.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_position.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_position.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_position.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_position.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->position); + union { + double real; + uint64_t base; + } u_effort; + u_effort.real = this->effort; + *(outbuffer + offset + 0) = (u_effort.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_effort.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_effort.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_effort.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_effort.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_effort.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_effort.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_effort.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->effort); + union { + bool real; + uint8_t base; + } u_stalled; + u_stalled.real = this->stalled; + *(outbuffer + offset + 0) = (u_stalled.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->stalled); + union { + bool real; + uint8_t base; + } u_reached_goal; + u_reached_goal.real = this->reached_goal; + *(outbuffer + offset + 0) = (u_reached_goal.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->reached_goal); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_position; + u_position.base = 0; + u_position.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->position = u_position.real; + offset += sizeof(this->position); + union { + double real; + uint64_t base; + } u_effort; + u_effort.base = 0; + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->effort = u_effort.real; + offset += sizeof(this->effort); + union { + bool real; + uint8_t base; + } u_stalled; + u_stalled.base = 0; + u_stalled.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->stalled = u_stalled.real; + offset += sizeof(this->stalled); + union { + bool real; + uint8_t base; + } u_reached_goal; + u_reached_goal.base = 0; + u_reached_goal.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->reached_goal = u_reached_goal.real; + offset += sizeof(this->reached_goal); + return offset; + } + + const char * getType(){ return "control_msgs/GripperCommandResult"; }; + const char * getMD5(){ return "e4cbff56d3562bcf113da5a5adeef91f"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/JointControllerState.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/JointControllerState.h new file mode 100644 index 0000000..b70ef6d --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/JointControllerState.h @@ -0,0 +1,382 @@ +#ifndef _ROS_control_msgs_JointControllerState_h +#define _ROS_control_msgs_JointControllerState_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace control_msgs +{ + + class JointControllerState : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef double _set_point_type; + _set_point_type set_point; + typedef double _process_value_type; + _process_value_type process_value; + typedef double _process_value_dot_type; + _process_value_dot_type process_value_dot; + typedef double _error_type; + _error_type error; + typedef double _time_step_type; + _time_step_type time_step; + typedef double _command_type; + _command_type command; + typedef double _p_type; + _p_type p; + typedef double _i_type; + _i_type i; + typedef double _d_type; + _d_type d; + typedef double _i_clamp_type; + _i_clamp_type i_clamp; + typedef bool _antiwindup_type; + _antiwindup_type antiwindup; + + JointControllerState(): + header(), + set_point(0), + process_value(0), + process_value_dot(0), + error(0), + time_step(0), + command(0), + p(0), + i(0), + d(0), + i_clamp(0), + antiwindup(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + union { + double real; + uint64_t base; + } u_set_point; + u_set_point.real = this->set_point; + *(outbuffer + offset + 0) = (u_set_point.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_set_point.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_set_point.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_set_point.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_set_point.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_set_point.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_set_point.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_set_point.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->set_point); + union { + double real; + uint64_t base; + } u_process_value; + u_process_value.real = this->process_value; + *(outbuffer + offset + 0) = (u_process_value.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_process_value.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_process_value.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_process_value.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_process_value.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_process_value.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_process_value.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_process_value.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->process_value); + union { + double real; + uint64_t base; + } u_process_value_dot; + u_process_value_dot.real = this->process_value_dot; + *(outbuffer + offset + 0) = (u_process_value_dot.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_process_value_dot.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_process_value_dot.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_process_value_dot.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_process_value_dot.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_process_value_dot.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_process_value_dot.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_process_value_dot.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->process_value_dot); + union { + double real; + uint64_t base; + } u_error; + u_error.real = this->error; + *(outbuffer + offset + 0) = (u_error.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_error.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_error.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_error.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_error.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_error.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_error.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_error.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->error); + union { + double real; + uint64_t base; + } u_time_step; + u_time_step.real = this->time_step; + *(outbuffer + offset + 0) = (u_time_step.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_time_step.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_time_step.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_time_step.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_time_step.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_time_step.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_time_step.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_time_step.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->time_step); + union { + double real; + uint64_t base; + } u_command; + u_command.real = this->command; + *(outbuffer + offset + 0) = (u_command.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_command.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_command.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_command.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_command.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_command.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_command.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_command.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->command); + union { + double real; + uint64_t base; + } u_p; + u_p.real = this->p; + *(outbuffer + offset + 0) = (u_p.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_p.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_p.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_p.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_p.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_p.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_p.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_p.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->p); + union { + double real; + uint64_t base; + } u_i; + u_i.real = this->i; + *(outbuffer + offset + 0) = (u_i.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_i.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_i.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_i.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_i.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_i.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_i.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_i.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->i); + union { + double real; + uint64_t base; + } u_d; + u_d.real = this->d; + *(outbuffer + offset + 0) = (u_d.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_d.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_d.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_d.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_d.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_d.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_d.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_d.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->d); + union { + double real; + uint64_t base; + } u_i_clamp; + u_i_clamp.real = this->i_clamp; + *(outbuffer + offset + 0) = (u_i_clamp.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_i_clamp.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_i_clamp.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_i_clamp.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_i_clamp.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_i_clamp.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_i_clamp.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_i_clamp.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->i_clamp); + union { + bool real; + uint8_t base; + } u_antiwindup; + u_antiwindup.real = this->antiwindup; + *(outbuffer + offset + 0) = (u_antiwindup.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->antiwindup); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + union { + double real; + uint64_t base; + } u_set_point; + u_set_point.base = 0; + u_set_point.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_set_point.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_set_point.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_set_point.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_set_point.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_set_point.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_set_point.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_set_point.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->set_point = u_set_point.real; + offset += sizeof(this->set_point); + union { + double real; + uint64_t base; + } u_process_value; + u_process_value.base = 0; + u_process_value.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_process_value.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_process_value.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_process_value.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_process_value.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_process_value.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_process_value.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_process_value.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->process_value = u_process_value.real; + offset += sizeof(this->process_value); + union { + double real; + uint64_t base; + } u_process_value_dot; + u_process_value_dot.base = 0; + u_process_value_dot.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_process_value_dot.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_process_value_dot.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_process_value_dot.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_process_value_dot.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_process_value_dot.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_process_value_dot.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_process_value_dot.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->process_value_dot = u_process_value_dot.real; + offset += sizeof(this->process_value_dot); + union { + double real; + uint64_t base; + } u_error; + u_error.base = 0; + u_error.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->error = u_error.real; + offset += sizeof(this->error); + union { + double real; + uint64_t base; + } u_time_step; + u_time_step.base = 0; + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->time_step = u_time_step.real; + offset += sizeof(this->time_step); + union { + double real; + uint64_t base; + } u_command; + u_command.base = 0; + u_command.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_command.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_command.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_command.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_command.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_command.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_command.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_command.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->command = u_command.real; + offset += sizeof(this->command); + union { + double real; + uint64_t base; + } u_p; + u_p.base = 0; + u_p.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_p.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_p.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_p.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_p.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_p.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_p.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_p.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->p = u_p.real; + offset += sizeof(this->p); + union { + double real; + uint64_t base; + } u_i; + u_i.base = 0; + u_i.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_i.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_i.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_i.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_i.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_i.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_i.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_i.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->i = u_i.real; + offset += sizeof(this->i); + union { + double real; + uint64_t base; + } u_d; + u_d.base = 0; + u_d.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_d.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_d.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_d.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_d.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_d.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_d.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_d.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->d = u_d.real; + offset += sizeof(this->d); + union { + double real; + uint64_t base; + } u_i_clamp; + u_i_clamp.base = 0; + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->i_clamp = u_i_clamp.real; + offset += sizeof(this->i_clamp); + union { + bool real; + uint8_t base; + } u_antiwindup; + u_antiwindup.base = 0; + u_antiwindup.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->antiwindup = u_antiwindup.real; + offset += sizeof(this->antiwindup); + return offset; + } + + const char * getType(){ return "control_msgs/JointControllerState"; }; + const char * getMD5(){ return "987ad85e4756f3aef7f1e5e7fe0595d1"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/JointTolerance.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/JointTolerance.h new file mode 100644 index 0000000..051971e --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/JointTolerance.h @@ -0,0 +1,151 @@ +#ifndef _ROS_control_msgs_JointTolerance_h +#define _ROS_control_msgs_JointTolerance_h + +#include +#include +#include +#include "ros/msg.h" + +namespace control_msgs +{ + + class JointTolerance : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef double _position_type; + _position_type position; + typedef double _velocity_type; + _velocity_type velocity; + typedef double _acceleration_type; + _acceleration_type acceleration; + + JointTolerance(): + name(""), + position(0), + velocity(0), + acceleration(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + union { + double real; + uint64_t base; + } u_position; + u_position.real = this->position; + *(outbuffer + offset + 0) = (u_position.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_position.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_position.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_position.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_position.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_position.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_position.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_position.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->position); + union { + double real; + uint64_t base; + } u_velocity; + u_velocity.real = this->velocity; + *(outbuffer + offset + 0) = (u_velocity.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_velocity.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_velocity.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_velocity.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_velocity.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_velocity.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_velocity.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_velocity.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->velocity); + union { + double real; + uint64_t base; + } u_acceleration; + u_acceleration.real = this->acceleration; + *(outbuffer + offset + 0) = (u_acceleration.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_acceleration.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_acceleration.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_acceleration.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_acceleration.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_acceleration.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_acceleration.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_acceleration.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->acceleration); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + union { + double real; + uint64_t base; + } u_position; + u_position.base = 0; + u_position.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->position = u_position.real; + offset += sizeof(this->position); + union { + double real; + uint64_t base; + } u_velocity; + u_velocity.base = 0; + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->velocity = u_velocity.real; + offset += sizeof(this->velocity); + union { + double real; + uint64_t base; + } u_acceleration; + u_acceleration.base = 0; + u_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->acceleration = u_acceleration.real; + offset += sizeof(this->acceleration); + return offset; + } + + const char * getType(){ return "control_msgs/JointTolerance"; }; + const char * getMD5(){ return "f544fe9c16cf04547e135dd6063ff5be"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryAction.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryAction.h new file mode 100644 index 0000000..96bbaa4 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_JointTrajectoryAction_h +#define _ROS_control_msgs_JointTrajectoryAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "control_msgs/JointTrajectoryActionGoal.h" +#include "control_msgs/JointTrajectoryActionResult.h" +#include "control_msgs/JointTrajectoryActionFeedback.h" + +namespace control_msgs +{ + + class JointTrajectoryAction : public ros::Msg + { + public: + typedef control_msgs::JointTrajectoryActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef control_msgs::JointTrajectoryActionResult _action_result_type; + _action_result_type action_result; + typedef control_msgs::JointTrajectoryActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + JointTrajectoryAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/JointTrajectoryAction"; }; + const char * getMD5(){ return "a04ba3ee8f6a2d0985a6aeaf23d9d7ad"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryActionFeedback.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryActionFeedback.h new file mode 100644 index 0000000..8df7fee --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_JointTrajectoryActionFeedback_h +#define _ROS_control_msgs_JointTrajectoryActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "control_msgs/JointTrajectoryFeedback.h" + +namespace control_msgs +{ + + class JointTrajectoryActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef control_msgs::JointTrajectoryFeedback _feedback_type; + _feedback_type feedback; + + JointTrajectoryActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/JointTrajectoryActionFeedback"; }; + const char * getMD5(){ return "aae20e09065c3809e8a8e87c4c8953fd"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryActionGoal.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryActionGoal.h new file mode 100644 index 0000000..8c432bb --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_JointTrajectoryActionGoal_h +#define _ROS_control_msgs_JointTrajectoryActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "control_msgs/JointTrajectoryGoal.h" + +namespace control_msgs +{ + + class JointTrajectoryActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef control_msgs::JointTrajectoryGoal _goal_type; + _goal_type goal; + + JointTrajectoryActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/JointTrajectoryActionGoal"; }; + const char * getMD5(){ return "a99e83ef6185f9fdd7693efe99623a86"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryActionResult.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryActionResult.h new file mode 100644 index 0000000..2a11d22 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_JointTrajectoryActionResult_h +#define _ROS_control_msgs_JointTrajectoryActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "control_msgs/JointTrajectoryResult.h" + +namespace control_msgs +{ + + class JointTrajectoryActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef control_msgs::JointTrajectoryResult _result_type; + _result_type result; + + JointTrajectoryActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/JointTrajectoryActionResult"; }; + const char * getMD5(){ return "1eb06eeff08fa7ea874431638cb52332"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryControllerState.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryControllerState.h new file mode 100644 index 0000000..148db3a --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryControllerState.h @@ -0,0 +1,97 @@ +#ifndef _ROS_control_msgs_JointTrajectoryControllerState_h +#define _ROS_control_msgs_JointTrajectoryControllerState_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "trajectory_msgs/JointTrajectoryPoint.h" + +namespace control_msgs +{ + + class JointTrajectoryControllerState : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t joint_names_length; + typedef char* _joint_names_type; + _joint_names_type st_joint_names; + _joint_names_type * joint_names; + typedef trajectory_msgs::JointTrajectoryPoint _desired_type; + _desired_type desired; + typedef trajectory_msgs::JointTrajectoryPoint _actual_type; + _actual_type actual; + typedef trajectory_msgs::JointTrajectoryPoint _error_type; + _error_type error; + + JointTrajectoryControllerState(): + header(), + joint_names_length(0), joint_names(NULL), + desired(), + actual(), + error() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->joint_names_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->joint_names_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->joint_names_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->joint_names_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->joint_names_length); + for( uint32_t i = 0; i < joint_names_length; i++){ + uint32_t length_joint_namesi = strlen(this->joint_names[i]); + varToArr(outbuffer + offset, length_joint_namesi); + offset += 4; + memcpy(outbuffer + offset, this->joint_names[i], length_joint_namesi); + offset += length_joint_namesi; + } + offset += this->desired.serialize(outbuffer + offset); + offset += this->actual.serialize(outbuffer + offset); + offset += this->error.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t joint_names_lengthT = ((uint32_t) (*(inbuffer + offset))); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->joint_names_length); + if(joint_names_lengthT > joint_names_length) + this->joint_names = (char**)realloc(this->joint_names, joint_names_lengthT * sizeof(char*)); + joint_names_length = joint_names_lengthT; + for( uint32_t i = 0; i < joint_names_length; i++){ + uint32_t length_st_joint_names; + arrToVar(length_st_joint_names, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_joint_names; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_joint_names-1]=0; + this->st_joint_names = (char *)(inbuffer + offset-1); + offset += length_st_joint_names; + memcpy( &(this->joint_names[i]), &(this->st_joint_names), sizeof(char*)); + } + offset += this->desired.deserialize(inbuffer + offset); + offset += this->actual.deserialize(inbuffer + offset); + offset += this->error.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/JointTrajectoryControllerState"; }; + const char * getMD5(){ return "10817c60c2486ef6b33e97dcd87f4474"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryFeedback.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryFeedback.h new file mode 100644 index 0000000..9dfe808 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryFeedback.h @@ -0,0 +1,38 @@ +#ifndef _ROS_control_msgs_JointTrajectoryFeedback_h +#define _ROS_control_msgs_JointTrajectoryFeedback_h + +#include +#include +#include +#include "ros/msg.h" + +namespace control_msgs +{ + + class JointTrajectoryFeedback : public ros::Msg + { + public: + + JointTrajectoryFeedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "control_msgs/JointTrajectoryFeedback"; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryGoal.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryGoal.h new file mode 100644 index 0000000..b699132 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryGoal.h @@ -0,0 +1,44 @@ +#ifndef _ROS_control_msgs_JointTrajectoryGoal_h +#define _ROS_control_msgs_JointTrajectoryGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "trajectory_msgs/JointTrajectory.h" + +namespace control_msgs +{ + + class JointTrajectoryGoal : public ros::Msg + { + public: + typedef trajectory_msgs::JointTrajectory _trajectory_type; + _trajectory_type trajectory; + + JointTrajectoryGoal(): + trajectory() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->trajectory.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->trajectory.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/JointTrajectoryGoal"; }; + const char * getMD5(){ return "2a0eff76c870e8595636c2a562ca298e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryResult.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryResult.h new file mode 100644 index 0000000..623ed9c --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryResult.h @@ -0,0 +1,38 @@ +#ifndef _ROS_control_msgs_JointTrajectoryResult_h +#define _ROS_control_msgs_JointTrajectoryResult_h + +#include +#include +#include +#include "ros/msg.h" + +namespace control_msgs +{ + + class JointTrajectoryResult : public ros::Msg + { + public: + + JointTrajectoryResult() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "control_msgs/JointTrajectoryResult"; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/PidState.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/PidState.h new file mode 100644 index 0000000..a19ddf9 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/PidState.h @@ -0,0 +1,420 @@ +#ifndef _ROS_control_msgs_PidState_h +#define _ROS_control_msgs_PidState_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "ros/duration.h" + +namespace control_msgs +{ + + class PidState : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef ros::Duration _timestep_type; + _timestep_type timestep; + typedef double _error_type; + _error_type error; + typedef double _error_dot_type; + _error_dot_type error_dot; + typedef double _p_error_type; + _p_error_type p_error; + typedef double _i_error_type; + _i_error_type i_error; + typedef double _d_error_type; + _d_error_type d_error; + typedef double _p_term_type; + _p_term_type p_term; + typedef double _i_term_type; + _i_term_type i_term; + typedef double _d_term_type; + _d_term_type d_term; + typedef double _i_max_type; + _i_max_type i_max; + typedef double _i_min_type; + _i_min_type i_min; + typedef double _output_type; + _output_type output; + + PidState(): + header(), + timestep(), + error(0), + error_dot(0), + p_error(0), + i_error(0), + d_error(0), + p_term(0), + i_term(0), + d_term(0), + i_max(0), + i_min(0), + output(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->timestep.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->timestep.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->timestep.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->timestep.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->timestep.sec); + *(outbuffer + offset + 0) = (this->timestep.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->timestep.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->timestep.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->timestep.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->timestep.nsec); + union { + double real; + uint64_t base; + } u_error; + u_error.real = this->error; + *(outbuffer + offset + 0) = (u_error.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_error.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_error.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_error.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_error.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_error.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_error.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_error.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->error); + union { + double real; + uint64_t base; + } u_error_dot; + u_error_dot.real = this->error_dot; + *(outbuffer + offset + 0) = (u_error_dot.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_error_dot.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_error_dot.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_error_dot.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_error_dot.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_error_dot.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_error_dot.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_error_dot.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->error_dot); + union { + double real; + uint64_t base; + } u_p_error; + u_p_error.real = this->p_error; + *(outbuffer + offset + 0) = (u_p_error.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_p_error.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_p_error.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_p_error.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_p_error.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_p_error.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_p_error.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_p_error.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->p_error); + union { + double real; + uint64_t base; + } u_i_error; + u_i_error.real = this->i_error; + *(outbuffer + offset + 0) = (u_i_error.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_i_error.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_i_error.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_i_error.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_i_error.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_i_error.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_i_error.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_i_error.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->i_error); + union { + double real; + uint64_t base; + } u_d_error; + u_d_error.real = this->d_error; + *(outbuffer + offset + 0) = (u_d_error.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_d_error.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_d_error.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_d_error.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_d_error.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_d_error.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_d_error.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_d_error.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->d_error); + union { + double real; + uint64_t base; + } u_p_term; + u_p_term.real = this->p_term; + *(outbuffer + offset + 0) = (u_p_term.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_p_term.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_p_term.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_p_term.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_p_term.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_p_term.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_p_term.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_p_term.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->p_term); + union { + double real; + uint64_t base; + } u_i_term; + u_i_term.real = this->i_term; + *(outbuffer + offset + 0) = (u_i_term.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_i_term.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_i_term.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_i_term.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_i_term.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_i_term.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_i_term.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_i_term.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->i_term); + union { + double real; + uint64_t base; + } u_d_term; + u_d_term.real = this->d_term; + *(outbuffer + offset + 0) = (u_d_term.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_d_term.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_d_term.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_d_term.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_d_term.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_d_term.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_d_term.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_d_term.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->d_term); + union { + double real; + uint64_t base; + } u_i_max; + u_i_max.real = this->i_max; + *(outbuffer + offset + 0) = (u_i_max.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_i_max.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_i_max.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_i_max.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_i_max.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_i_max.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_i_max.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_i_max.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->i_max); + union { + double real; + uint64_t base; + } u_i_min; + u_i_min.real = this->i_min; + *(outbuffer + offset + 0) = (u_i_min.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_i_min.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_i_min.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_i_min.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_i_min.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_i_min.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_i_min.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_i_min.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->i_min); + union { + double real; + uint64_t base; + } u_output; + u_output.real = this->output; + *(outbuffer + offset + 0) = (u_output.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_output.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_output.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_output.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_output.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_output.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_output.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_output.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->output); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + this->timestep.sec = ((uint32_t) (*(inbuffer + offset))); + this->timestep.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->timestep.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->timestep.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->timestep.sec); + this->timestep.nsec = ((uint32_t) (*(inbuffer + offset))); + this->timestep.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->timestep.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->timestep.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->timestep.nsec); + union { + double real; + uint64_t base; + } u_error; + u_error.base = 0; + u_error.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->error = u_error.real; + offset += sizeof(this->error); + union { + double real; + uint64_t base; + } u_error_dot; + u_error_dot.base = 0; + u_error_dot.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_error_dot.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_error_dot.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_error_dot.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_error_dot.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_error_dot.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_error_dot.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_error_dot.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->error_dot = u_error_dot.real; + offset += sizeof(this->error_dot); + union { + double real; + uint64_t base; + } u_p_error; + u_p_error.base = 0; + u_p_error.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_p_error.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_p_error.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_p_error.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_p_error.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_p_error.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_p_error.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_p_error.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->p_error = u_p_error.real; + offset += sizeof(this->p_error); + union { + double real; + uint64_t base; + } u_i_error; + u_i_error.base = 0; + u_i_error.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_i_error.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_i_error.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_i_error.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_i_error.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_i_error.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_i_error.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_i_error.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->i_error = u_i_error.real; + offset += sizeof(this->i_error); + union { + double real; + uint64_t base; + } u_d_error; + u_d_error.base = 0; + u_d_error.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_d_error.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_d_error.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_d_error.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_d_error.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_d_error.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_d_error.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_d_error.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->d_error = u_d_error.real; + offset += sizeof(this->d_error); + union { + double real; + uint64_t base; + } u_p_term; + u_p_term.base = 0; + u_p_term.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_p_term.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_p_term.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_p_term.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_p_term.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_p_term.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_p_term.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_p_term.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->p_term = u_p_term.real; + offset += sizeof(this->p_term); + union { + double real; + uint64_t base; + } u_i_term; + u_i_term.base = 0; + u_i_term.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_i_term.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_i_term.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_i_term.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_i_term.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_i_term.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_i_term.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_i_term.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->i_term = u_i_term.real; + offset += sizeof(this->i_term); + union { + double real; + uint64_t base; + } u_d_term; + u_d_term.base = 0; + u_d_term.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_d_term.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_d_term.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_d_term.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_d_term.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_d_term.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_d_term.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_d_term.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->d_term = u_d_term.real; + offset += sizeof(this->d_term); + union { + double real; + uint64_t base; + } u_i_max; + u_i_max.base = 0; + u_i_max.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_i_max.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_i_max.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_i_max.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_i_max.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_i_max.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_i_max.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_i_max.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->i_max = u_i_max.real; + offset += sizeof(this->i_max); + union { + double real; + uint64_t base; + } u_i_min; + u_i_min.base = 0; + u_i_min.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_i_min.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_i_min.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_i_min.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_i_min.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_i_min.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_i_min.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_i_min.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->i_min = u_i_min.real; + offset += sizeof(this->i_min); + union { + double real; + uint64_t base; + } u_output; + u_output.base = 0; + u_output.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_output.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_output.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_output.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_output.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_output.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_output.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_output.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->output = u_output.real; + offset += sizeof(this->output); + return offset; + } + + const char * getType(){ return "control_msgs/PidState"; }; + const char * getMD5(){ return "b138ec00e886c10e73f27e8712252ea6"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadAction.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadAction.h new file mode 100644 index 0000000..82ee446 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_PointHeadAction_h +#define _ROS_control_msgs_PointHeadAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "control_msgs/PointHeadActionGoal.h" +#include "control_msgs/PointHeadActionResult.h" +#include "control_msgs/PointHeadActionFeedback.h" + +namespace control_msgs +{ + + class PointHeadAction : public ros::Msg + { + public: + typedef control_msgs::PointHeadActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef control_msgs::PointHeadActionResult _action_result_type; + _action_result_type action_result; + typedef control_msgs::PointHeadActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + PointHeadAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/PointHeadAction"; }; + const char * getMD5(){ return "7252920f1243de1b741f14f214125371"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadActionFeedback.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadActionFeedback.h new file mode 100644 index 0000000..780656b --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_PointHeadActionFeedback_h +#define _ROS_control_msgs_PointHeadActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "control_msgs/PointHeadFeedback.h" + +namespace control_msgs +{ + + class PointHeadActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef control_msgs::PointHeadFeedback _feedback_type; + _feedback_type feedback; + + PointHeadActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/PointHeadActionFeedback"; }; + const char * getMD5(){ return "33c9244957176bbba97dd641119e8460"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadActionGoal.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadActionGoal.h new file mode 100644 index 0000000..12ae791 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_PointHeadActionGoal_h +#define _ROS_control_msgs_PointHeadActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "control_msgs/PointHeadGoal.h" + +namespace control_msgs +{ + + class PointHeadActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef control_msgs::PointHeadGoal _goal_type; + _goal_type goal; + + PointHeadActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/PointHeadActionGoal"; }; + const char * getMD5(){ return "b53a8323d0ba7b310ba17a2d3a82a6b8"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadActionResult.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadActionResult.h new file mode 100644 index 0000000..7708fe6 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_PointHeadActionResult_h +#define _ROS_control_msgs_PointHeadActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "control_msgs/PointHeadResult.h" + +namespace control_msgs +{ + + class PointHeadActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef control_msgs::PointHeadResult _result_type; + _result_type result; + + PointHeadActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/PointHeadActionResult"; }; + const char * getMD5(){ return "1eb06eeff08fa7ea874431638cb52332"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadFeedback.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadFeedback.h new file mode 100644 index 0000000..beafd3e --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadFeedback.h @@ -0,0 +1,70 @@ +#ifndef _ROS_control_msgs_PointHeadFeedback_h +#define _ROS_control_msgs_PointHeadFeedback_h + +#include +#include +#include +#include "ros/msg.h" + +namespace control_msgs +{ + + class PointHeadFeedback : public ros::Msg + { + public: + typedef double _pointing_angle_error_type; + _pointing_angle_error_type pointing_angle_error; + + PointHeadFeedback(): + pointing_angle_error(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_pointing_angle_error; + u_pointing_angle_error.real = this->pointing_angle_error; + *(outbuffer + offset + 0) = (u_pointing_angle_error.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_pointing_angle_error.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_pointing_angle_error.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_pointing_angle_error.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_pointing_angle_error.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_pointing_angle_error.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_pointing_angle_error.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_pointing_angle_error.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->pointing_angle_error); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_pointing_angle_error; + u_pointing_angle_error.base = 0; + u_pointing_angle_error.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_pointing_angle_error.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_pointing_angle_error.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_pointing_angle_error.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_pointing_angle_error.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_pointing_angle_error.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_pointing_angle_error.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_pointing_angle_error.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->pointing_angle_error = u_pointing_angle_error.real; + offset += sizeof(this->pointing_angle_error); + return offset; + } + + const char * getType(){ return "control_msgs/PointHeadFeedback"; }; + const char * getMD5(){ return "cce80d27fd763682da8805a73316cab4"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadGoal.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadGoal.h new file mode 100644 index 0000000..4d7355c --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadGoal.h @@ -0,0 +1,123 @@ +#ifndef _ROS_control_msgs_PointHeadGoal_h +#define _ROS_control_msgs_PointHeadGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/PointStamped.h" +#include "geometry_msgs/Vector3.h" +#include "ros/duration.h" + +namespace control_msgs +{ + + class PointHeadGoal : public ros::Msg + { + public: + typedef geometry_msgs::PointStamped _target_type; + _target_type target; + typedef geometry_msgs::Vector3 _pointing_axis_type; + _pointing_axis_type pointing_axis; + typedef const char* _pointing_frame_type; + _pointing_frame_type pointing_frame; + typedef ros::Duration _min_duration_type; + _min_duration_type min_duration; + typedef double _max_velocity_type; + _max_velocity_type max_velocity; + + PointHeadGoal(): + target(), + pointing_axis(), + pointing_frame(""), + min_duration(), + max_velocity(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->target.serialize(outbuffer + offset); + offset += this->pointing_axis.serialize(outbuffer + offset); + uint32_t length_pointing_frame = strlen(this->pointing_frame); + varToArr(outbuffer + offset, length_pointing_frame); + offset += 4; + memcpy(outbuffer + offset, this->pointing_frame, length_pointing_frame); + offset += length_pointing_frame; + *(outbuffer + offset + 0) = (this->min_duration.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->min_duration.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->min_duration.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->min_duration.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->min_duration.sec); + *(outbuffer + offset + 0) = (this->min_duration.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->min_duration.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->min_duration.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->min_duration.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->min_duration.nsec); + union { + double real; + uint64_t base; + } u_max_velocity; + u_max_velocity.real = this->max_velocity; + *(outbuffer + offset + 0) = (u_max_velocity.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_max_velocity.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_max_velocity.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_max_velocity.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_max_velocity.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_max_velocity.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_max_velocity.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_max_velocity.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->max_velocity); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->target.deserialize(inbuffer + offset); + offset += this->pointing_axis.deserialize(inbuffer + offset); + uint32_t length_pointing_frame; + arrToVar(length_pointing_frame, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_pointing_frame; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_pointing_frame-1]=0; + this->pointing_frame = (char *)(inbuffer + offset-1); + offset += length_pointing_frame; + this->min_duration.sec = ((uint32_t) (*(inbuffer + offset))); + this->min_duration.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->min_duration.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->min_duration.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->min_duration.sec); + this->min_duration.nsec = ((uint32_t) (*(inbuffer + offset))); + this->min_duration.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->min_duration.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->min_duration.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->min_duration.nsec); + union { + double real; + uint64_t base; + } u_max_velocity; + u_max_velocity.base = 0; + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->max_velocity = u_max_velocity.real; + offset += sizeof(this->max_velocity); + return offset; + } + + const char * getType(){ return "control_msgs/PointHeadGoal"; }; + const char * getMD5(){ return "8b92b1cd5e06c8a94c917dc3209a4c1d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadResult.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadResult.h new file mode 100644 index 0000000..53f789e --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadResult.h @@ -0,0 +1,38 @@ +#ifndef _ROS_control_msgs_PointHeadResult_h +#define _ROS_control_msgs_PointHeadResult_h + +#include +#include +#include +#include "ros/msg.h" + +namespace control_msgs +{ + + class PointHeadResult : public ros::Msg + { + public: + + PointHeadResult() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "control_msgs/PointHeadResult"; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/QueryCalibrationState.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/QueryCalibrationState.h new file mode 100644 index 0000000..0fd1a66 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/QueryCalibrationState.h @@ -0,0 +1,88 @@ +#ifndef _ROS_SERVICE_QueryCalibrationState_h +#define _ROS_SERVICE_QueryCalibrationState_h +#include +#include +#include +#include "ros/msg.h" + +namespace control_msgs +{ + +static const char QUERYCALIBRATIONSTATE[] = "control_msgs/QueryCalibrationState"; + + class QueryCalibrationStateRequest : public ros::Msg + { + public: + + QueryCalibrationStateRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return QUERYCALIBRATIONSTATE; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class QueryCalibrationStateResponse : public ros::Msg + { + public: + typedef bool _is_calibrated_type; + _is_calibrated_type is_calibrated; + + QueryCalibrationStateResponse(): + is_calibrated(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_is_calibrated; + u_is_calibrated.real = this->is_calibrated; + *(outbuffer + offset + 0) = (u_is_calibrated.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->is_calibrated); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_is_calibrated; + u_is_calibrated.base = 0; + u_is_calibrated.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->is_calibrated = u_is_calibrated.real; + offset += sizeof(this->is_calibrated); + return offset; + } + + const char * getType(){ return QUERYCALIBRATIONSTATE; }; + const char * getMD5(){ return "28af3beedcb84986b8e470dc5470507d"; }; + + }; + + class QueryCalibrationState { + public: + typedef QueryCalibrationStateRequest Request; + typedef QueryCalibrationStateResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/QueryTrajectoryState.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/QueryTrajectoryState.h new file mode 100644 index 0000000..aef19a8 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/QueryTrajectoryState.h @@ -0,0 +1,287 @@ +#ifndef _ROS_SERVICE_QueryTrajectoryState_h +#define _ROS_SERVICE_QueryTrajectoryState_h +#include +#include +#include +#include "ros/msg.h" +#include "ros/time.h" + +namespace control_msgs +{ + +static const char QUERYTRAJECTORYSTATE[] = "control_msgs/QueryTrajectoryState"; + + class QueryTrajectoryStateRequest : public ros::Msg + { + public: + typedef ros::Time _time_type; + _time_type time; + + QueryTrajectoryStateRequest(): + time() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->time.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->time.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->time.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->time.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->time.sec); + *(outbuffer + offset + 0) = (this->time.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->time.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->time.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->time.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->time.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->time.sec = ((uint32_t) (*(inbuffer + offset))); + this->time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->time.sec); + this->time.nsec = ((uint32_t) (*(inbuffer + offset))); + this->time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->time.nsec); + return offset; + } + + const char * getType(){ return QUERYTRAJECTORYSTATE; }; + const char * getMD5(){ return "556a4fb76023a469987922359d08a844"; }; + + }; + + class QueryTrajectoryStateResponse : public ros::Msg + { + public: + uint32_t name_length; + typedef char* _name_type; + _name_type st_name; + _name_type * name; + uint32_t position_length; + typedef double _position_type; + _position_type st_position; + _position_type * position; + uint32_t velocity_length; + typedef double _velocity_type; + _velocity_type st_velocity; + _velocity_type * velocity; + uint32_t acceleration_length; + typedef double _acceleration_type; + _acceleration_type st_acceleration; + _acceleration_type * acceleration; + + QueryTrajectoryStateResponse(): + name_length(0), name(NULL), + position_length(0), position(NULL), + velocity_length(0), velocity(NULL), + acceleration_length(0), acceleration(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->name_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->name_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->name_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->name_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->name_length); + for( uint32_t i = 0; i < name_length; i++){ + uint32_t length_namei = strlen(this->name[i]); + varToArr(outbuffer + offset, length_namei); + offset += 4; + memcpy(outbuffer + offset, this->name[i], length_namei); + offset += length_namei; + } + *(outbuffer + offset + 0) = (this->position_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->position_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->position_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->position_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->position_length); + for( uint32_t i = 0; i < position_length; i++){ + union { + double real; + uint64_t base; + } u_positioni; + u_positioni.real = this->position[i]; + *(outbuffer + offset + 0) = (u_positioni.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_positioni.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_positioni.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_positioni.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_positioni.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_positioni.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_positioni.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_positioni.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->position[i]); + } + *(outbuffer + offset + 0) = (this->velocity_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->velocity_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->velocity_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->velocity_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->velocity_length); + for( uint32_t i = 0; i < velocity_length; i++){ + union { + double real; + uint64_t base; + } u_velocityi; + u_velocityi.real = this->velocity[i]; + *(outbuffer + offset + 0) = (u_velocityi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_velocityi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_velocityi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_velocityi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_velocityi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_velocityi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_velocityi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_velocityi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->velocity[i]); + } + *(outbuffer + offset + 0) = (this->acceleration_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->acceleration_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->acceleration_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->acceleration_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->acceleration_length); + for( uint32_t i = 0; i < acceleration_length; i++){ + union { + double real; + uint64_t base; + } u_accelerationi; + u_accelerationi.real = this->acceleration[i]; + *(outbuffer + offset + 0) = (u_accelerationi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_accelerationi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_accelerationi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_accelerationi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_accelerationi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_accelerationi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_accelerationi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_accelerationi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->acceleration[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t name_lengthT = ((uint32_t) (*(inbuffer + offset))); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->name_length); + if(name_lengthT > name_length) + this->name = (char**)realloc(this->name, name_lengthT * sizeof(char*)); + name_length = name_lengthT; + for( uint32_t i = 0; i < name_length; i++){ + uint32_t length_st_name; + arrToVar(length_st_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_name-1]=0; + this->st_name = (char *)(inbuffer + offset-1); + offset += length_st_name; + memcpy( &(this->name[i]), &(this->st_name), sizeof(char*)); + } + uint32_t position_lengthT = ((uint32_t) (*(inbuffer + offset))); + position_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + position_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + position_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->position_length); + if(position_lengthT > position_length) + this->position = (double*)realloc(this->position, position_lengthT * sizeof(double)); + position_length = position_lengthT; + for( uint32_t i = 0; i < position_length; i++){ + union { + double real; + uint64_t base; + } u_st_position; + u_st_position.base = 0; + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_position = u_st_position.real; + offset += sizeof(this->st_position); + memcpy( &(this->position[i]), &(this->st_position), sizeof(double)); + } + uint32_t velocity_lengthT = ((uint32_t) (*(inbuffer + offset))); + velocity_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + velocity_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + velocity_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->velocity_length); + if(velocity_lengthT > velocity_length) + this->velocity = (double*)realloc(this->velocity, velocity_lengthT * sizeof(double)); + velocity_length = velocity_lengthT; + for( uint32_t i = 0; i < velocity_length; i++){ + union { + double real; + uint64_t base; + } u_st_velocity; + u_st_velocity.base = 0; + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_velocity = u_st_velocity.real; + offset += sizeof(this->st_velocity); + memcpy( &(this->velocity[i]), &(this->st_velocity), sizeof(double)); + } + uint32_t acceleration_lengthT = ((uint32_t) (*(inbuffer + offset))); + acceleration_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + acceleration_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + acceleration_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->acceleration_length); + if(acceleration_lengthT > acceleration_length) + this->acceleration = (double*)realloc(this->acceleration, acceleration_lengthT * sizeof(double)); + acceleration_length = acceleration_lengthT; + for( uint32_t i = 0; i < acceleration_length; i++){ + union { + double real; + uint64_t base; + } u_st_acceleration; + u_st_acceleration.base = 0; + u_st_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_acceleration = u_st_acceleration.real; + offset += sizeof(this->st_acceleration); + memcpy( &(this->acceleration[i]), &(this->st_acceleration), sizeof(double)); + } + return offset; + } + + const char * getType(){ return QUERYTRAJECTORYSTATE; }; + const char * getMD5(){ return "1f1a6554ad060f44d013e71868403c1a"; }; + + }; + + class QueryTrajectoryState { + public: + typedef QueryTrajectoryStateRequest Request; + typedef QueryTrajectoryStateResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionAction.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionAction.h new file mode 100644 index 0000000..3117ee1 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_SingleJointPositionAction_h +#define _ROS_control_msgs_SingleJointPositionAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "control_msgs/SingleJointPositionActionGoal.h" +#include "control_msgs/SingleJointPositionActionResult.h" +#include "control_msgs/SingleJointPositionActionFeedback.h" + +namespace control_msgs +{ + + class SingleJointPositionAction : public ros::Msg + { + public: + typedef control_msgs::SingleJointPositionActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef control_msgs::SingleJointPositionActionResult _action_result_type; + _action_result_type action_result; + typedef control_msgs::SingleJointPositionActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + SingleJointPositionAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/SingleJointPositionAction"; }; + const char * getMD5(){ return "c4a786b7d53e5d0983decf967a5a779e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionActionFeedback.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionActionFeedback.h new file mode 100644 index 0000000..82cba63 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_SingleJointPositionActionFeedback_h +#define _ROS_control_msgs_SingleJointPositionActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "control_msgs/SingleJointPositionFeedback.h" + +namespace control_msgs +{ + + class SingleJointPositionActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef control_msgs::SingleJointPositionFeedback _feedback_type; + _feedback_type feedback; + + SingleJointPositionActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/SingleJointPositionActionFeedback"; }; + const char * getMD5(){ return "3503b7cf8972f90d245850a5d8796cfa"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionActionGoal.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionActionGoal.h new file mode 100644 index 0000000..75c7898 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_SingleJointPositionActionGoal_h +#define _ROS_control_msgs_SingleJointPositionActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "control_msgs/SingleJointPositionGoal.h" + +namespace control_msgs +{ + + class SingleJointPositionActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef control_msgs::SingleJointPositionGoal _goal_type; + _goal_type goal; + + SingleJointPositionActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/SingleJointPositionActionGoal"; }; + const char * getMD5(){ return "4b0d3d091471663e17749c1d0db90f61"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionActionResult.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionActionResult.h new file mode 100644 index 0000000..ef99cd8 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_SingleJointPositionActionResult_h +#define _ROS_control_msgs_SingleJointPositionActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "control_msgs/SingleJointPositionResult.h" + +namespace control_msgs +{ + + class SingleJointPositionActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef control_msgs::SingleJointPositionResult _result_type; + _result_type result; + + SingleJointPositionActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/SingleJointPositionActionResult"; }; + const char * getMD5(){ return "1eb06eeff08fa7ea874431638cb52332"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionFeedback.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionFeedback.h new file mode 100644 index 0000000..cbf8fa4 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionFeedback.h @@ -0,0 +1,140 @@ +#ifndef _ROS_control_msgs_SingleJointPositionFeedback_h +#define _ROS_control_msgs_SingleJointPositionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace control_msgs +{ + + class SingleJointPositionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef double _position_type; + _position_type position; + typedef double _velocity_type; + _velocity_type velocity; + typedef double _error_type; + _error_type error; + + SingleJointPositionFeedback(): + header(), + position(0), + velocity(0), + error(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + union { + double real; + uint64_t base; + } u_position; + u_position.real = this->position; + *(outbuffer + offset + 0) = (u_position.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_position.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_position.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_position.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_position.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_position.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_position.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_position.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->position); + union { + double real; + uint64_t base; + } u_velocity; + u_velocity.real = this->velocity; + *(outbuffer + offset + 0) = (u_velocity.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_velocity.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_velocity.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_velocity.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_velocity.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_velocity.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_velocity.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_velocity.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->velocity); + union { + double real; + uint64_t base; + } u_error; + u_error.real = this->error; + *(outbuffer + offset + 0) = (u_error.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_error.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_error.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_error.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_error.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_error.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_error.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_error.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->error); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + union { + double real; + uint64_t base; + } u_position; + u_position.base = 0; + u_position.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->position = u_position.real; + offset += sizeof(this->position); + union { + double real; + uint64_t base; + } u_velocity; + u_velocity.base = 0; + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->velocity = u_velocity.real; + offset += sizeof(this->velocity); + union { + double real; + uint64_t base; + } u_error; + u_error.base = 0; + u_error.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->error = u_error.real; + offset += sizeof(this->error); + return offset; + } + + const char * getType(){ return "control_msgs/SingleJointPositionFeedback"; }; + const char * getMD5(){ return "8cee65610a3d08e0a1bded82f146f1fd"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionGoal.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionGoal.h new file mode 100644 index 0000000..7261176 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionGoal.h @@ -0,0 +1,126 @@ +#ifndef _ROS_control_msgs_SingleJointPositionGoal_h +#define _ROS_control_msgs_SingleJointPositionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "ros/duration.h" + +namespace control_msgs +{ + + class SingleJointPositionGoal : public ros::Msg + { + public: + typedef double _position_type; + _position_type position; + typedef ros::Duration _min_duration_type; + _min_duration_type min_duration; + typedef double _max_velocity_type; + _max_velocity_type max_velocity; + + SingleJointPositionGoal(): + position(0), + min_duration(), + max_velocity(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_position; + u_position.real = this->position; + *(outbuffer + offset + 0) = (u_position.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_position.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_position.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_position.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_position.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_position.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_position.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_position.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->position); + *(outbuffer + offset + 0) = (this->min_duration.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->min_duration.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->min_duration.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->min_duration.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->min_duration.sec); + *(outbuffer + offset + 0) = (this->min_duration.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->min_duration.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->min_duration.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->min_duration.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->min_duration.nsec); + union { + double real; + uint64_t base; + } u_max_velocity; + u_max_velocity.real = this->max_velocity; + *(outbuffer + offset + 0) = (u_max_velocity.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_max_velocity.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_max_velocity.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_max_velocity.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_max_velocity.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_max_velocity.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_max_velocity.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_max_velocity.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->max_velocity); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_position; + u_position.base = 0; + u_position.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->position = u_position.real; + offset += sizeof(this->position); + this->min_duration.sec = ((uint32_t) (*(inbuffer + offset))); + this->min_duration.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->min_duration.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->min_duration.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->min_duration.sec); + this->min_duration.nsec = ((uint32_t) (*(inbuffer + offset))); + this->min_duration.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->min_duration.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->min_duration.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->min_duration.nsec); + union { + double real; + uint64_t base; + } u_max_velocity; + u_max_velocity.base = 0; + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->max_velocity = u_max_velocity.real; + offset += sizeof(this->max_velocity); + return offset; + } + + const char * getType(){ return "control_msgs/SingleJointPositionGoal"; }; + const char * getMD5(){ return "fbaaa562a23a013fd5053e5f72cbb35c"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionResult.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionResult.h new file mode 100644 index 0000000..7593425 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionResult.h @@ -0,0 +1,38 @@ +#ifndef _ROS_control_msgs_SingleJointPositionResult_h +#define _ROS_control_msgs_SingleJointPositionResult_h + +#include +#include +#include +#include "ros/msg.h" + +namespace control_msgs +{ + + class SingleJointPositionResult : public ros::Msg + { + public: + + SingleJointPositionResult() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "control_msgs/SingleJointPositionResult"; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_toolbox/SetPidGains.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_toolbox/SetPidGains.h new file mode 100644 index 0000000..709d825 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/control_toolbox/SetPidGains.h @@ -0,0 +1,216 @@ +#ifndef _ROS_SERVICE_SetPidGains_h +#define _ROS_SERVICE_SetPidGains_h +#include +#include +#include +#include "ros/msg.h" + +namespace control_toolbox +{ + +static const char SETPIDGAINS[] = "control_toolbox/SetPidGains"; + + class SetPidGainsRequest : public ros::Msg + { + public: + typedef double _p_type; + _p_type p; + typedef double _i_type; + _i_type i; + typedef double _d_type; + _d_type d; + typedef double _i_clamp_type; + _i_clamp_type i_clamp; + typedef bool _antiwindup_type; + _antiwindup_type antiwindup; + + SetPidGainsRequest(): + p(0), + i(0), + d(0), + i_clamp(0), + antiwindup(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_p; + u_p.real = this->p; + *(outbuffer + offset + 0) = (u_p.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_p.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_p.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_p.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_p.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_p.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_p.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_p.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->p); + union { + double real; + uint64_t base; + } u_i; + u_i.real = this->i; + *(outbuffer + offset + 0) = (u_i.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_i.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_i.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_i.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_i.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_i.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_i.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_i.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->i); + union { + double real; + uint64_t base; + } u_d; + u_d.real = this->d; + *(outbuffer + offset + 0) = (u_d.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_d.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_d.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_d.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_d.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_d.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_d.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_d.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->d); + union { + double real; + uint64_t base; + } u_i_clamp; + u_i_clamp.real = this->i_clamp; + *(outbuffer + offset + 0) = (u_i_clamp.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_i_clamp.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_i_clamp.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_i_clamp.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_i_clamp.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_i_clamp.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_i_clamp.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_i_clamp.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->i_clamp); + union { + bool real; + uint8_t base; + } u_antiwindup; + u_antiwindup.real = this->antiwindup; + *(outbuffer + offset + 0) = (u_antiwindup.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->antiwindup); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_p; + u_p.base = 0; + u_p.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_p.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_p.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_p.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_p.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_p.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_p.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_p.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->p = u_p.real; + offset += sizeof(this->p); + union { + double real; + uint64_t base; + } u_i; + u_i.base = 0; + u_i.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_i.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_i.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_i.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_i.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_i.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_i.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_i.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->i = u_i.real; + offset += sizeof(this->i); + union { + double real; + uint64_t base; + } u_d; + u_d.base = 0; + u_d.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_d.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_d.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_d.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_d.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_d.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_d.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_d.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->d = u_d.real; + offset += sizeof(this->d); + union { + double real; + uint64_t base; + } u_i_clamp; + u_i_clamp.base = 0; + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->i_clamp = u_i_clamp.real; + offset += sizeof(this->i_clamp); + union { + bool real; + uint8_t base; + } u_antiwindup; + u_antiwindup.base = 0; + u_antiwindup.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->antiwindup = u_antiwindup.real; + offset += sizeof(this->antiwindup); + return offset; + } + + const char * getType(){ return SETPIDGAINS; }; + const char * getMD5(){ return "4a43159879643e60937bf2893b633607"; }; + + }; + + class SetPidGainsResponse : public ros::Msg + { + public: + + SetPidGainsResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return SETPIDGAINS; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class SetPidGains { + public: + typedef SetPidGainsRequest Request; + typedef SetPidGainsResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ControllerState.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ControllerState.h new file mode 100644 index 0000000..ea728c4 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ControllerState.h @@ -0,0 +1,115 @@ +#ifndef _ROS_controller_manager_msgs_ControllerState_h +#define _ROS_controller_manager_msgs_ControllerState_h + +#include +#include +#include +#include "ros/msg.h" +#include "controller_manager_msgs/HardwareInterfaceResources.h" + +namespace controller_manager_msgs +{ + + class ControllerState : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef const char* _state_type; + _state_type state; + typedef const char* _type_type; + _type_type type; + uint32_t claimed_resources_length; + typedef controller_manager_msgs::HardwareInterfaceResources _claimed_resources_type; + _claimed_resources_type st_claimed_resources; + _claimed_resources_type * claimed_resources; + + ControllerState(): + name(""), + state(""), + type(""), + claimed_resources_length(0), claimed_resources(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + uint32_t length_state = strlen(this->state); + varToArr(outbuffer + offset, length_state); + offset += 4; + memcpy(outbuffer + offset, this->state, length_state); + offset += length_state; + uint32_t length_type = strlen(this->type); + varToArr(outbuffer + offset, length_type); + offset += 4; + memcpy(outbuffer + offset, this->type, length_type); + offset += length_type; + *(outbuffer + offset + 0) = (this->claimed_resources_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->claimed_resources_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->claimed_resources_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->claimed_resources_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->claimed_resources_length); + for( uint32_t i = 0; i < claimed_resources_length; i++){ + offset += this->claimed_resources[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + uint32_t length_state; + arrToVar(length_state, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_state; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_state-1]=0; + this->state = (char *)(inbuffer + offset-1); + offset += length_state; + uint32_t length_type; + arrToVar(length_type, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_type; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_type-1]=0; + this->type = (char *)(inbuffer + offset-1); + offset += length_type; + uint32_t claimed_resources_lengthT = ((uint32_t) (*(inbuffer + offset))); + claimed_resources_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + claimed_resources_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + claimed_resources_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->claimed_resources_length); + if(claimed_resources_lengthT > claimed_resources_length) + this->claimed_resources = (controller_manager_msgs::HardwareInterfaceResources*)realloc(this->claimed_resources, claimed_resources_lengthT * sizeof(controller_manager_msgs::HardwareInterfaceResources)); + claimed_resources_length = claimed_resources_lengthT; + for( uint32_t i = 0; i < claimed_resources_length; i++){ + offset += this->st_claimed_resources.deserialize(inbuffer + offset); + memcpy( &(this->claimed_resources[i]), &(this->st_claimed_resources), sizeof(controller_manager_msgs::HardwareInterfaceResources)); + } + return offset; + } + + const char * getType(){ return "controller_manager_msgs/ControllerState"; }; + const char * getMD5(){ return "aeb6b261d97793ab74099a3740245272"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ControllerStatistics.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ControllerStatistics.h new file mode 100644 index 0000000..c62773c --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ControllerStatistics.h @@ -0,0 +1,231 @@ +#ifndef _ROS_controller_manager_msgs_ControllerStatistics_h +#define _ROS_controller_manager_msgs_ControllerStatistics_h + +#include +#include +#include +#include "ros/msg.h" +#include "ros/time.h" +#include "ros/duration.h" + +namespace controller_manager_msgs +{ + + class ControllerStatistics : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef const char* _type_type; + _type_type type; + typedef ros::Time _timestamp_type; + _timestamp_type timestamp; + typedef bool _running_type; + _running_type running; + typedef ros::Duration _max_time_type; + _max_time_type max_time; + typedef ros::Duration _mean_time_type; + _mean_time_type mean_time; + typedef ros::Duration _variance_time_type; + _variance_time_type variance_time; + typedef int32_t _num_control_loop_overruns_type; + _num_control_loop_overruns_type num_control_loop_overruns; + typedef ros::Time _time_last_control_loop_overrun_type; + _time_last_control_loop_overrun_type time_last_control_loop_overrun; + + ControllerStatistics(): + name(""), + type(""), + timestamp(), + running(0), + max_time(), + mean_time(), + variance_time(), + num_control_loop_overruns(0), + time_last_control_loop_overrun() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + uint32_t length_type = strlen(this->type); + varToArr(outbuffer + offset, length_type); + offset += 4; + memcpy(outbuffer + offset, this->type, length_type); + offset += length_type; + *(outbuffer + offset + 0) = (this->timestamp.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->timestamp.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->timestamp.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->timestamp.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->timestamp.sec); + *(outbuffer + offset + 0) = (this->timestamp.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->timestamp.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->timestamp.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->timestamp.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->timestamp.nsec); + union { + bool real; + uint8_t base; + } u_running; + u_running.real = this->running; + *(outbuffer + offset + 0) = (u_running.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->running); + *(outbuffer + offset + 0) = (this->max_time.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->max_time.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->max_time.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->max_time.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->max_time.sec); + *(outbuffer + offset + 0) = (this->max_time.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->max_time.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->max_time.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->max_time.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->max_time.nsec); + *(outbuffer + offset + 0) = (this->mean_time.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->mean_time.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->mean_time.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->mean_time.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->mean_time.sec); + *(outbuffer + offset + 0) = (this->mean_time.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->mean_time.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->mean_time.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->mean_time.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->mean_time.nsec); + *(outbuffer + offset + 0) = (this->variance_time.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->variance_time.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->variance_time.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->variance_time.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->variance_time.sec); + *(outbuffer + offset + 0) = (this->variance_time.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->variance_time.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->variance_time.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->variance_time.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->variance_time.nsec); + union { + int32_t real; + uint32_t base; + } u_num_control_loop_overruns; + u_num_control_loop_overruns.real = this->num_control_loop_overruns; + *(outbuffer + offset + 0) = (u_num_control_loop_overruns.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_num_control_loop_overruns.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_num_control_loop_overruns.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_num_control_loop_overruns.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->num_control_loop_overruns); + *(outbuffer + offset + 0) = (this->time_last_control_loop_overrun.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->time_last_control_loop_overrun.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->time_last_control_loop_overrun.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->time_last_control_loop_overrun.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->time_last_control_loop_overrun.sec); + *(outbuffer + offset + 0) = (this->time_last_control_loop_overrun.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->time_last_control_loop_overrun.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->time_last_control_loop_overrun.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->time_last_control_loop_overrun.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->time_last_control_loop_overrun.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + uint32_t length_type; + arrToVar(length_type, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_type; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_type-1]=0; + this->type = (char *)(inbuffer + offset-1); + offset += length_type; + this->timestamp.sec = ((uint32_t) (*(inbuffer + offset))); + this->timestamp.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->timestamp.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->timestamp.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->timestamp.sec); + this->timestamp.nsec = ((uint32_t) (*(inbuffer + offset))); + this->timestamp.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->timestamp.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->timestamp.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->timestamp.nsec); + union { + bool real; + uint8_t base; + } u_running; + u_running.base = 0; + u_running.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->running = u_running.real; + offset += sizeof(this->running); + this->max_time.sec = ((uint32_t) (*(inbuffer + offset))); + this->max_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->max_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->max_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->max_time.sec); + this->max_time.nsec = ((uint32_t) (*(inbuffer + offset))); + this->max_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->max_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->max_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->max_time.nsec); + this->mean_time.sec = ((uint32_t) (*(inbuffer + offset))); + this->mean_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->mean_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->mean_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->mean_time.sec); + this->mean_time.nsec = ((uint32_t) (*(inbuffer + offset))); + this->mean_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->mean_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->mean_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->mean_time.nsec); + this->variance_time.sec = ((uint32_t) (*(inbuffer + offset))); + this->variance_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->variance_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->variance_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->variance_time.sec); + this->variance_time.nsec = ((uint32_t) (*(inbuffer + offset))); + this->variance_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->variance_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->variance_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->variance_time.nsec); + union { + int32_t real; + uint32_t base; + } u_num_control_loop_overruns; + u_num_control_loop_overruns.base = 0; + u_num_control_loop_overruns.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_num_control_loop_overruns.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_num_control_loop_overruns.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_num_control_loop_overruns.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->num_control_loop_overruns = u_num_control_loop_overruns.real; + offset += sizeof(this->num_control_loop_overruns); + this->time_last_control_loop_overrun.sec = ((uint32_t) (*(inbuffer + offset))); + this->time_last_control_loop_overrun.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->time_last_control_loop_overrun.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->time_last_control_loop_overrun.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->time_last_control_loop_overrun.sec); + this->time_last_control_loop_overrun.nsec = ((uint32_t) (*(inbuffer + offset))); + this->time_last_control_loop_overrun.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->time_last_control_loop_overrun.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->time_last_control_loop_overrun.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->time_last_control_loop_overrun.nsec); + return offset; + } + + const char * getType(){ return "controller_manager_msgs/ControllerStatistics"; }; + const char * getMD5(){ return "697780c372c8d8597a1436d0e2ad3ba8"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ControllersStatistics.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ControllersStatistics.h new file mode 100644 index 0000000..a3c0503 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ControllersStatistics.h @@ -0,0 +1,70 @@ +#ifndef _ROS_controller_manager_msgs_ControllersStatistics_h +#define _ROS_controller_manager_msgs_ControllersStatistics_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "controller_manager_msgs/ControllerStatistics.h" + +namespace controller_manager_msgs +{ + + class ControllersStatistics : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t controller_length; + typedef controller_manager_msgs::ControllerStatistics _controller_type; + _controller_type st_controller; + _controller_type * controller; + + ControllersStatistics(): + header(), + controller_length(0), controller(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->controller_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->controller_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->controller_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->controller_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->controller_length); + for( uint32_t i = 0; i < controller_length; i++){ + offset += this->controller[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t controller_lengthT = ((uint32_t) (*(inbuffer + offset))); + controller_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + controller_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + controller_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->controller_length); + if(controller_lengthT > controller_length) + this->controller = (controller_manager_msgs::ControllerStatistics*)realloc(this->controller, controller_lengthT * sizeof(controller_manager_msgs::ControllerStatistics)); + controller_length = controller_lengthT; + for( uint32_t i = 0; i < controller_length; i++){ + offset += this->st_controller.deserialize(inbuffer + offset); + memcpy( &(this->controller[i]), &(this->st_controller), sizeof(controller_manager_msgs::ControllerStatistics)); + } + return offset; + } + + const char * getType(){ return "controller_manager_msgs/ControllersStatistics"; }; + const char * getMD5(){ return "a154c347736773e3700d1719105df29d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/controller_manager_msgs/HardwareInterfaceResources.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/controller_manager_msgs/HardwareInterfaceResources.h new file mode 100644 index 0000000..5b574c1 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/controller_manager_msgs/HardwareInterfaceResources.h @@ -0,0 +1,92 @@ +#ifndef _ROS_controller_manager_msgs_HardwareInterfaceResources_h +#define _ROS_controller_manager_msgs_HardwareInterfaceResources_h + +#include +#include +#include +#include "ros/msg.h" + +namespace controller_manager_msgs +{ + + class HardwareInterfaceResources : public ros::Msg + { + public: + typedef const char* _hardware_interface_type; + _hardware_interface_type hardware_interface; + uint32_t resources_length; + typedef char* _resources_type; + _resources_type st_resources; + _resources_type * resources; + + HardwareInterfaceResources(): + hardware_interface(""), + resources_length(0), resources(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_hardware_interface = strlen(this->hardware_interface); + varToArr(outbuffer + offset, length_hardware_interface); + offset += 4; + memcpy(outbuffer + offset, this->hardware_interface, length_hardware_interface); + offset += length_hardware_interface; + *(outbuffer + offset + 0) = (this->resources_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->resources_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->resources_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->resources_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->resources_length); + for( uint32_t i = 0; i < resources_length; i++){ + uint32_t length_resourcesi = strlen(this->resources[i]); + varToArr(outbuffer + offset, length_resourcesi); + offset += 4; + memcpy(outbuffer + offset, this->resources[i], length_resourcesi); + offset += length_resourcesi; + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_hardware_interface; + arrToVar(length_hardware_interface, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_hardware_interface; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_hardware_interface-1]=0; + this->hardware_interface = (char *)(inbuffer + offset-1); + offset += length_hardware_interface; + uint32_t resources_lengthT = ((uint32_t) (*(inbuffer + offset))); + resources_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + resources_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + resources_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->resources_length); + if(resources_lengthT > resources_length) + this->resources = (char**)realloc(this->resources, resources_lengthT * sizeof(char*)); + resources_length = resources_lengthT; + for( uint32_t i = 0; i < resources_length; i++){ + uint32_t length_st_resources; + arrToVar(length_st_resources, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_resources; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_resources-1]=0; + this->st_resources = (char *)(inbuffer + offset-1); + offset += length_st_resources; + memcpy( &(this->resources[i]), &(this->st_resources), sizeof(char*)); + } + return offset; + } + + const char * getType(){ return "controller_manager_msgs/HardwareInterfaceResources"; }; + const char * getMD5(){ return "f25b55cbf1d1f76e82e5ec9e83f76258"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ListControllerTypes.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ListControllerTypes.h new file mode 100644 index 0000000..45097f8 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ListControllerTypes.h @@ -0,0 +1,144 @@ +#ifndef _ROS_SERVICE_ListControllerTypes_h +#define _ROS_SERVICE_ListControllerTypes_h +#include +#include +#include +#include "ros/msg.h" + +namespace controller_manager_msgs +{ + +static const char LISTCONTROLLERTYPES[] = "controller_manager_msgs/ListControllerTypes"; + + class ListControllerTypesRequest : public ros::Msg + { + public: + + ListControllerTypesRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return LISTCONTROLLERTYPES; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class ListControllerTypesResponse : public ros::Msg + { + public: + uint32_t types_length; + typedef char* _types_type; + _types_type st_types; + _types_type * types; + uint32_t base_classes_length; + typedef char* _base_classes_type; + _base_classes_type st_base_classes; + _base_classes_type * base_classes; + + ListControllerTypesResponse(): + types_length(0), types(NULL), + base_classes_length(0), base_classes(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->types_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->types_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->types_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->types_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->types_length); + for( uint32_t i = 0; i < types_length; i++){ + uint32_t length_typesi = strlen(this->types[i]); + varToArr(outbuffer + offset, length_typesi); + offset += 4; + memcpy(outbuffer + offset, this->types[i], length_typesi); + offset += length_typesi; + } + *(outbuffer + offset + 0) = (this->base_classes_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->base_classes_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->base_classes_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->base_classes_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->base_classes_length); + for( uint32_t i = 0; i < base_classes_length; i++){ + uint32_t length_base_classesi = strlen(this->base_classes[i]); + varToArr(outbuffer + offset, length_base_classesi); + offset += 4; + memcpy(outbuffer + offset, this->base_classes[i], length_base_classesi); + offset += length_base_classesi; + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t types_lengthT = ((uint32_t) (*(inbuffer + offset))); + types_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + types_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + types_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->types_length); + if(types_lengthT > types_length) + this->types = (char**)realloc(this->types, types_lengthT * sizeof(char*)); + types_length = types_lengthT; + for( uint32_t i = 0; i < types_length; i++){ + uint32_t length_st_types; + arrToVar(length_st_types, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_types; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_types-1]=0; + this->st_types = (char *)(inbuffer + offset-1); + offset += length_st_types; + memcpy( &(this->types[i]), &(this->st_types), sizeof(char*)); + } + uint32_t base_classes_lengthT = ((uint32_t) (*(inbuffer + offset))); + base_classes_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + base_classes_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + base_classes_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->base_classes_length); + if(base_classes_lengthT > base_classes_length) + this->base_classes = (char**)realloc(this->base_classes, base_classes_lengthT * sizeof(char*)); + base_classes_length = base_classes_lengthT; + for( uint32_t i = 0; i < base_classes_length; i++){ + uint32_t length_st_base_classes; + arrToVar(length_st_base_classes, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_base_classes; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_base_classes-1]=0; + this->st_base_classes = (char *)(inbuffer + offset-1); + offset += length_st_base_classes; + memcpy( &(this->base_classes[i]), &(this->st_base_classes), sizeof(char*)); + } + return offset; + } + + const char * getType(){ return LISTCONTROLLERTYPES; }; + const char * getMD5(){ return "c1d4cd11aefa9f97ba4aeb5b33987f4e"; }; + + }; + + class ListControllerTypes { + public: + typedef ListControllerTypesRequest Request; + typedef ListControllerTypesResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ListControllers.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ListControllers.h new file mode 100644 index 0000000..f0d2a5e --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ListControllers.h @@ -0,0 +1,96 @@ +#ifndef _ROS_SERVICE_ListControllers_h +#define _ROS_SERVICE_ListControllers_h +#include +#include +#include +#include "ros/msg.h" +#include "controller_manager_msgs/ControllerState.h" + +namespace controller_manager_msgs +{ + +static const char LISTCONTROLLERS[] = "controller_manager_msgs/ListControllers"; + + class ListControllersRequest : public ros::Msg + { + public: + + ListControllersRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return LISTCONTROLLERS; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class ListControllersResponse : public ros::Msg + { + public: + uint32_t controller_length; + typedef controller_manager_msgs::ControllerState _controller_type; + _controller_type st_controller; + _controller_type * controller; + + ListControllersResponse(): + controller_length(0), controller(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->controller_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->controller_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->controller_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->controller_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->controller_length); + for( uint32_t i = 0; i < controller_length; i++){ + offset += this->controller[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t controller_lengthT = ((uint32_t) (*(inbuffer + offset))); + controller_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + controller_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + controller_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->controller_length); + if(controller_lengthT > controller_length) + this->controller = (controller_manager_msgs::ControllerState*)realloc(this->controller, controller_lengthT * sizeof(controller_manager_msgs::ControllerState)); + controller_length = controller_lengthT; + for( uint32_t i = 0; i < controller_length; i++){ + offset += this->st_controller.deserialize(inbuffer + offset); + memcpy( &(this->controller[i]), &(this->st_controller), sizeof(controller_manager_msgs::ControllerState)); + } + return offset; + } + + const char * getType(){ return LISTCONTROLLERS; }; + const char * getMD5(){ return "1341feb2e63fa791f855565d0da950d8"; }; + + }; + + class ListControllers { + public: + typedef ListControllersRequest Request; + typedef ListControllersResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/controller_manager_msgs/LoadController.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/controller_manager_msgs/LoadController.h new file mode 100644 index 0000000..98d018f --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/controller_manager_msgs/LoadController.h @@ -0,0 +1,105 @@ +#ifndef _ROS_SERVICE_LoadController_h +#define _ROS_SERVICE_LoadController_h +#include +#include +#include +#include "ros/msg.h" + +namespace controller_manager_msgs +{ + +static const char LOADCONTROLLER[] = "controller_manager_msgs/LoadController"; + + class LoadControllerRequest : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + + LoadControllerRequest(): + name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + return offset; + } + + const char * getType(){ return LOADCONTROLLER; }; + const char * getMD5(){ return "c1f3d28f1b044c871e6eff2e9fc3c667"; }; + + }; + + class LoadControllerResponse : public ros::Msg + { + public: + typedef bool _ok_type; + _ok_type ok; + + LoadControllerResponse(): + ok(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_ok; + u_ok.real = this->ok; + *(outbuffer + offset + 0) = (u_ok.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->ok); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_ok; + u_ok.base = 0; + u_ok.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->ok = u_ok.real; + offset += sizeof(this->ok); + return offset; + } + + const char * getType(){ return LOADCONTROLLER; }; + const char * getMD5(){ return "6f6da3883749771fac40d6deb24a8c02"; }; + + }; + + class LoadController { + public: + typedef LoadControllerRequest Request; + typedef LoadControllerResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ReloadControllerLibraries.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ReloadControllerLibraries.h new file mode 100644 index 0000000..279de97 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ReloadControllerLibraries.h @@ -0,0 +1,106 @@ +#ifndef _ROS_SERVICE_ReloadControllerLibraries_h +#define _ROS_SERVICE_ReloadControllerLibraries_h +#include +#include +#include +#include "ros/msg.h" + +namespace controller_manager_msgs +{ + +static const char RELOADCONTROLLERLIBRARIES[] = "controller_manager_msgs/ReloadControllerLibraries"; + + class ReloadControllerLibrariesRequest : public ros::Msg + { + public: + typedef bool _force_kill_type; + _force_kill_type force_kill; + + ReloadControllerLibrariesRequest(): + force_kill(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_force_kill; + u_force_kill.real = this->force_kill; + *(outbuffer + offset + 0) = (u_force_kill.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->force_kill); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_force_kill; + u_force_kill.base = 0; + u_force_kill.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->force_kill = u_force_kill.real; + offset += sizeof(this->force_kill); + return offset; + } + + const char * getType(){ return RELOADCONTROLLERLIBRARIES; }; + const char * getMD5(){ return "18442b59be9479097f11c543bddbac62"; }; + + }; + + class ReloadControllerLibrariesResponse : public ros::Msg + { + public: + typedef bool _ok_type; + _ok_type ok; + + ReloadControllerLibrariesResponse(): + ok(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_ok; + u_ok.real = this->ok; + *(outbuffer + offset + 0) = (u_ok.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->ok); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_ok; + u_ok.base = 0; + u_ok.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->ok = u_ok.real; + offset += sizeof(this->ok); + return offset; + } + + const char * getType(){ return RELOADCONTROLLERLIBRARIES; }; + const char * getMD5(){ return "6f6da3883749771fac40d6deb24a8c02"; }; + + }; + + class ReloadControllerLibraries { + public: + typedef ReloadControllerLibrariesRequest Request; + typedef ReloadControllerLibrariesResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/controller_manager_msgs/SwitchController.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/controller_manager_msgs/SwitchController.h new file mode 100644 index 0000000..9b76c73 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/controller_manager_msgs/SwitchController.h @@ -0,0 +1,188 @@ +#ifndef _ROS_SERVICE_SwitchController_h +#define _ROS_SERVICE_SwitchController_h +#include +#include +#include +#include "ros/msg.h" + +namespace controller_manager_msgs +{ + +static const char SWITCHCONTROLLER[] = "controller_manager_msgs/SwitchController"; + + class SwitchControllerRequest : public ros::Msg + { + public: + uint32_t start_controllers_length; + typedef char* _start_controllers_type; + _start_controllers_type st_start_controllers; + _start_controllers_type * start_controllers; + uint32_t stop_controllers_length; + typedef char* _stop_controllers_type; + _stop_controllers_type st_stop_controllers; + _stop_controllers_type * stop_controllers; + typedef int32_t _strictness_type; + _strictness_type strictness; + enum { BEST_EFFORT = 1 }; + enum { STRICT = 2 }; + + SwitchControllerRequest(): + start_controllers_length(0), start_controllers(NULL), + stop_controllers_length(0), stop_controllers(NULL), + strictness(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->start_controllers_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->start_controllers_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->start_controllers_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->start_controllers_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->start_controllers_length); + for( uint32_t i = 0; i < start_controllers_length; i++){ + uint32_t length_start_controllersi = strlen(this->start_controllers[i]); + varToArr(outbuffer + offset, length_start_controllersi); + offset += 4; + memcpy(outbuffer + offset, this->start_controllers[i], length_start_controllersi); + offset += length_start_controllersi; + } + *(outbuffer + offset + 0) = (this->stop_controllers_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stop_controllers_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stop_controllers_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stop_controllers_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->stop_controllers_length); + for( uint32_t i = 0; i < stop_controllers_length; i++){ + uint32_t length_stop_controllersi = strlen(this->stop_controllers[i]); + varToArr(outbuffer + offset, length_stop_controllersi); + offset += 4; + memcpy(outbuffer + offset, this->stop_controllers[i], length_stop_controllersi); + offset += length_stop_controllersi; + } + union { + int32_t real; + uint32_t base; + } u_strictness; + u_strictness.real = this->strictness; + *(outbuffer + offset + 0) = (u_strictness.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_strictness.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_strictness.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_strictness.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->strictness); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t start_controllers_lengthT = ((uint32_t) (*(inbuffer + offset))); + start_controllers_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + start_controllers_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + start_controllers_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->start_controllers_length); + if(start_controllers_lengthT > start_controllers_length) + this->start_controllers = (char**)realloc(this->start_controllers, start_controllers_lengthT * sizeof(char*)); + start_controllers_length = start_controllers_lengthT; + for( uint32_t i = 0; i < start_controllers_length; i++){ + uint32_t length_st_start_controllers; + arrToVar(length_st_start_controllers, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_start_controllers; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_start_controllers-1]=0; + this->st_start_controllers = (char *)(inbuffer + offset-1); + offset += length_st_start_controllers; + memcpy( &(this->start_controllers[i]), &(this->st_start_controllers), sizeof(char*)); + } + uint32_t stop_controllers_lengthT = ((uint32_t) (*(inbuffer + offset))); + stop_controllers_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + stop_controllers_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + stop_controllers_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stop_controllers_length); + if(stop_controllers_lengthT > stop_controllers_length) + this->stop_controllers = (char**)realloc(this->stop_controllers, stop_controllers_lengthT * sizeof(char*)); + stop_controllers_length = stop_controllers_lengthT; + for( uint32_t i = 0; i < stop_controllers_length; i++){ + uint32_t length_st_stop_controllers; + arrToVar(length_st_stop_controllers, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_stop_controllers; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_stop_controllers-1]=0; + this->st_stop_controllers = (char *)(inbuffer + offset-1); + offset += length_st_stop_controllers; + memcpy( &(this->stop_controllers[i]), &(this->st_stop_controllers), sizeof(char*)); + } + union { + int32_t real; + uint32_t base; + } u_strictness; + u_strictness.base = 0; + u_strictness.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_strictness.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_strictness.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_strictness.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->strictness = u_strictness.real; + offset += sizeof(this->strictness); + return offset; + } + + const char * getType(){ return SWITCHCONTROLLER; }; + const char * getMD5(){ return "434da54adc434a5af5743ed711fd6ba1"; }; + + }; + + class SwitchControllerResponse : public ros::Msg + { + public: + typedef bool _ok_type; + _ok_type ok; + + SwitchControllerResponse(): + ok(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_ok; + u_ok.real = this->ok; + *(outbuffer + offset + 0) = (u_ok.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->ok); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_ok; + u_ok.base = 0; + u_ok.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->ok = u_ok.real; + offset += sizeof(this->ok); + return offset; + } + + const char * getType(){ return SWITCHCONTROLLER; }; + const char * getMD5(){ return "6f6da3883749771fac40d6deb24a8c02"; }; + + }; + + class SwitchController { + public: + typedef SwitchControllerRequest Request; + typedef SwitchControllerResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/controller_manager_msgs/UnloadController.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/controller_manager_msgs/UnloadController.h new file mode 100644 index 0000000..b8bba74 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/controller_manager_msgs/UnloadController.h @@ -0,0 +1,105 @@ +#ifndef _ROS_SERVICE_UnloadController_h +#define _ROS_SERVICE_UnloadController_h +#include +#include +#include +#include "ros/msg.h" + +namespace controller_manager_msgs +{ + +static const char UNLOADCONTROLLER[] = "controller_manager_msgs/UnloadController"; + + class UnloadControllerRequest : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + + UnloadControllerRequest(): + name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + return offset; + } + + const char * getType(){ return UNLOADCONTROLLER; }; + const char * getMD5(){ return "c1f3d28f1b044c871e6eff2e9fc3c667"; }; + + }; + + class UnloadControllerResponse : public ros::Msg + { + public: + typedef bool _ok_type; + _ok_type ok; + + UnloadControllerResponse(): + ok(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_ok; + u_ok.real = this->ok; + *(outbuffer + offset + 0) = (u_ok.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->ok); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_ok; + u_ok.base = 0; + u_ok.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->ok = u_ok.real; + offset += sizeof(this->ok); + return offset; + } + + const char * getType(){ return UNLOADCONTROLLER; }; + const char * getMD5(){ return "6f6da3883749771fac40d6deb24a8c02"; }; + + }; + + class UnloadController { + public: + typedef UnloadControllerRequest Request; + typedef UnloadControllerResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/costmap_2d/VoxelGrid.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/costmap_2d/VoxelGrid.h new file mode 100644 index 0000000..2fa9dce --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/costmap_2d/VoxelGrid.h @@ -0,0 +1,128 @@ +#ifndef _ROS_costmap_2d_VoxelGrid_h +#define _ROS_costmap_2d_VoxelGrid_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Point32.h" +#include "geometry_msgs/Vector3.h" + +namespace costmap_2d +{ + + class VoxelGrid : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t data_length; + typedef uint32_t _data_type; + _data_type st_data; + _data_type * data; + typedef geometry_msgs::Point32 _origin_type; + _origin_type origin; + typedef geometry_msgs::Vector3 _resolutions_type; + _resolutions_type resolutions; + typedef uint32_t _size_x_type; + _size_x_type size_x; + typedef uint32_t _size_y_type; + _size_y_type size_y; + typedef uint32_t _size_z_type; + _size_z_type size_z; + + VoxelGrid(): + header(), + data_length(0), data(NULL), + origin(), + resolutions(), + size_x(0), + size_y(0), + size_z(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data[i] >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data[i] >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data[i] >> (8 * 3)) & 0xFF; + offset += sizeof(this->data[i]); + } + offset += this->origin.serialize(outbuffer + offset); + offset += this->resolutions.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->size_x >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->size_x >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->size_x >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->size_x >> (8 * 3)) & 0xFF; + offset += sizeof(this->size_x); + *(outbuffer + offset + 0) = (this->size_y >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->size_y >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->size_y >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->size_y >> (8 * 3)) & 0xFF; + offset += sizeof(this->size_y); + *(outbuffer + offset + 0) = (this->size_z >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->size_z >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->size_z >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->size_z >> (8 * 3)) & 0xFF; + offset += sizeof(this->size_z); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (uint32_t*)realloc(this->data, data_lengthT * sizeof(uint32_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + this->st_data = ((uint32_t) (*(inbuffer + offset))); + this->st_data |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->st_data |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->st_data |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(uint32_t)); + } + offset += this->origin.deserialize(inbuffer + offset); + offset += this->resolutions.deserialize(inbuffer + offset); + this->size_x = ((uint32_t) (*(inbuffer + offset))); + this->size_x |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->size_x |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->size_x |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->size_x); + this->size_y = ((uint32_t) (*(inbuffer + offset))); + this->size_y |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->size_y |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->size_y |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->size_y); + this->size_z = ((uint32_t) (*(inbuffer + offset))); + this->size_z |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->size_z |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->size_z |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->size_z); + return offset; + } + + const char * getType(){ return "costmap_2d/VoxelGrid"; }; + const char * getMD5(){ return "48a040827e1322073d78ece5a497029c"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/diagnostic_msgs/AddDiagnostics.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/diagnostic_msgs/AddDiagnostics.h new file mode 100644 index 0000000..4180098 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/diagnostic_msgs/AddDiagnostics.h @@ -0,0 +1,122 @@ +#ifndef _ROS_SERVICE_AddDiagnostics_h +#define _ROS_SERVICE_AddDiagnostics_h +#include +#include +#include +#include "ros/msg.h" + +namespace diagnostic_msgs +{ + +static const char ADDDIAGNOSTICS[] = "diagnostic_msgs/AddDiagnostics"; + + class AddDiagnosticsRequest : public ros::Msg + { + public: + typedef const char* _load_namespace_type; + _load_namespace_type load_namespace; + + AddDiagnosticsRequest(): + load_namespace("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_load_namespace = strlen(this->load_namespace); + varToArr(outbuffer + offset, length_load_namespace); + offset += 4; + memcpy(outbuffer + offset, this->load_namespace, length_load_namespace); + offset += length_load_namespace; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_load_namespace; + arrToVar(length_load_namespace, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_load_namespace; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_load_namespace-1]=0; + this->load_namespace = (char *)(inbuffer + offset-1); + offset += length_load_namespace; + return offset; + } + + const char * getType(){ return ADDDIAGNOSTICS; }; + const char * getMD5(){ return "c26cf6e164288fbc6050d74f838bcdf0"; }; + + }; + + class AddDiagnosticsResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _message_type; + _message_type message; + + AddDiagnosticsResponse(): + success(0), + message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_message = strlen(this->message); + varToArr(outbuffer + offset, length_message); + offset += 4; + memcpy(outbuffer + offset, this->message, length_message); + offset += length_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_message; + arrToVar(length_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_message-1]=0; + this->message = (char *)(inbuffer + offset-1); + offset += length_message; + return offset; + } + + const char * getType(){ return ADDDIAGNOSTICS; }; + const char * getMD5(){ return "937c9679a518e3a18d831e57125ea522"; }; + + }; + + class AddDiagnostics { + public: + typedef AddDiagnosticsRequest Request; + typedef AddDiagnosticsResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/diagnostic_msgs/DiagnosticArray.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/diagnostic_msgs/DiagnosticArray.h new file mode 100644 index 0000000..1deb743 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/diagnostic_msgs/DiagnosticArray.h @@ -0,0 +1,70 @@ +#ifndef _ROS_diagnostic_msgs_DiagnosticArray_h +#define _ROS_diagnostic_msgs_DiagnosticArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "diagnostic_msgs/DiagnosticStatus.h" + +namespace diagnostic_msgs +{ + + class DiagnosticArray : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t status_length; + typedef diagnostic_msgs::DiagnosticStatus _status_type; + _status_type st_status; + _status_type * status; + + DiagnosticArray(): + header(), + status_length(0), status(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->status_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->status_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->status_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->status_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->status_length); + for( uint32_t i = 0; i < status_length; i++){ + offset += this->status[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t status_lengthT = ((uint32_t) (*(inbuffer + offset))); + status_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + status_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + status_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->status_length); + if(status_lengthT > status_length) + this->status = (diagnostic_msgs::DiagnosticStatus*)realloc(this->status, status_lengthT * sizeof(diagnostic_msgs::DiagnosticStatus)); + status_length = status_lengthT; + for( uint32_t i = 0; i < status_length; i++){ + offset += this->st_status.deserialize(inbuffer + offset); + memcpy( &(this->status[i]), &(this->st_status), sizeof(diagnostic_msgs::DiagnosticStatus)); + } + return offset; + } + + const char * getType(){ return "diagnostic_msgs/DiagnosticArray"; }; + const char * getMD5(){ return "60810da900de1dd6ddd437c3503511da"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/diagnostic_msgs/DiagnosticStatus.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/diagnostic_msgs/DiagnosticStatus.h new file mode 100644 index 0000000..490c163 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/diagnostic_msgs/DiagnosticStatus.h @@ -0,0 +1,137 @@ +#ifndef _ROS_diagnostic_msgs_DiagnosticStatus_h +#define _ROS_diagnostic_msgs_DiagnosticStatus_h + +#include +#include +#include +#include "ros/msg.h" +#include "diagnostic_msgs/KeyValue.h" + +namespace diagnostic_msgs +{ + + class DiagnosticStatus : public ros::Msg + { + public: + typedef int8_t _level_type; + _level_type level; + typedef const char* _name_type; + _name_type name; + typedef const char* _message_type; + _message_type message; + typedef const char* _hardware_id_type; + _hardware_id_type hardware_id; + uint32_t values_length; + typedef diagnostic_msgs::KeyValue _values_type; + _values_type st_values; + _values_type * values; + enum { OK = 0 }; + enum { WARN = 1 }; + enum { ERROR = 2 }; + enum { STALE = 3 }; + + DiagnosticStatus(): + level(0), + name(""), + message(""), + hardware_id(""), + values_length(0), values(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int8_t real; + uint8_t base; + } u_level; + u_level.real = this->level; + *(outbuffer + offset + 0) = (u_level.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->level); + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + uint32_t length_message = strlen(this->message); + varToArr(outbuffer + offset, length_message); + offset += 4; + memcpy(outbuffer + offset, this->message, length_message); + offset += length_message; + uint32_t length_hardware_id = strlen(this->hardware_id); + varToArr(outbuffer + offset, length_hardware_id); + offset += 4; + memcpy(outbuffer + offset, this->hardware_id, length_hardware_id); + offset += length_hardware_id; + *(outbuffer + offset + 0) = (this->values_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->values_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->values_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->values_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->values_length); + for( uint32_t i = 0; i < values_length; i++){ + offset += this->values[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int8_t real; + uint8_t base; + } u_level; + u_level.base = 0; + u_level.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->level = u_level.real; + offset += sizeof(this->level); + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + uint32_t length_message; + arrToVar(length_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_message-1]=0; + this->message = (char *)(inbuffer + offset-1); + offset += length_message; + uint32_t length_hardware_id; + arrToVar(length_hardware_id, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_hardware_id; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_hardware_id-1]=0; + this->hardware_id = (char *)(inbuffer + offset-1); + offset += length_hardware_id; + uint32_t values_lengthT = ((uint32_t) (*(inbuffer + offset))); + values_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + values_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + values_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->values_length); + if(values_lengthT > values_length) + this->values = (diagnostic_msgs::KeyValue*)realloc(this->values, values_lengthT * sizeof(diagnostic_msgs::KeyValue)); + values_length = values_lengthT; + for( uint32_t i = 0; i < values_length; i++){ + offset += this->st_values.deserialize(inbuffer + offset); + memcpy( &(this->values[i]), &(this->st_values), sizeof(diagnostic_msgs::KeyValue)); + } + return offset; + } + + const char * getType(){ return "diagnostic_msgs/DiagnosticStatus"; }; + const char * getMD5(){ return "d0ce08bc6e5ba34c7754f563a9cabaf1"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/diagnostic_msgs/KeyValue.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/diagnostic_msgs/KeyValue.h new file mode 100644 index 0000000..e94dd76 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/diagnostic_msgs/KeyValue.h @@ -0,0 +1,72 @@ +#ifndef _ROS_diagnostic_msgs_KeyValue_h +#define _ROS_diagnostic_msgs_KeyValue_h + +#include +#include +#include +#include "ros/msg.h" + +namespace diagnostic_msgs +{ + + class KeyValue : public ros::Msg + { + public: + typedef const char* _key_type; + _key_type key; + typedef const char* _value_type; + _value_type value; + + KeyValue(): + key(""), + value("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_key = strlen(this->key); + varToArr(outbuffer + offset, length_key); + offset += 4; + memcpy(outbuffer + offset, this->key, length_key); + offset += length_key; + uint32_t length_value = strlen(this->value); + varToArr(outbuffer + offset, length_value); + offset += 4; + memcpy(outbuffer + offset, this->value, length_value); + offset += length_value; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_key; + arrToVar(length_key, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_key; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_key-1]=0; + this->key = (char *)(inbuffer + offset-1); + offset += length_key; + uint32_t length_value; + arrToVar(length_value, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_value; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_value-1]=0; + this->value = (char *)(inbuffer + offset-1); + offset += length_value; + return offset; + } + + const char * getType(){ return "diagnostic_msgs/KeyValue"; }; + const char * getMD5(){ return "cf57fdc6617a881a88c16e768132149c"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/diagnostic_msgs/SelfTest.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/diagnostic_msgs/SelfTest.h new file mode 100644 index 0000000..6687c6b --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/diagnostic_msgs/SelfTest.h @@ -0,0 +1,131 @@ +#ifndef _ROS_SERVICE_SelfTest_h +#define _ROS_SERVICE_SelfTest_h +#include +#include +#include +#include "ros/msg.h" +#include "diagnostic_msgs/DiagnosticStatus.h" + +namespace diagnostic_msgs +{ + +static const char SELFTEST[] = "diagnostic_msgs/SelfTest"; + + class SelfTestRequest : public ros::Msg + { + public: + + SelfTestRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return SELFTEST; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class SelfTestResponse : public ros::Msg + { + public: + typedef const char* _id_type; + _id_type id; + typedef int8_t _passed_type; + _passed_type passed; + uint32_t status_length; + typedef diagnostic_msgs::DiagnosticStatus _status_type; + _status_type st_status; + _status_type * status; + + SelfTestResponse(): + id(""), + passed(0), + status_length(0), status(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_id = strlen(this->id); + varToArr(outbuffer + offset, length_id); + offset += 4; + memcpy(outbuffer + offset, this->id, length_id); + offset += length_id; + union { + int8_t real; + uint8_t base; + } u_passed; + u_passed.real = this->passed; + *(outbuffer + offset + 0) = (u_passed.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->passed); + *(outbuffer + offset + 0) = (this->status_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->status_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->status_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->status_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->status_length); + for( uint32_t i = 0; i < status_length; i++){ + offset += this->status[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_id; + arrToVar(length_id, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_id; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_id-1]=0; + this->id = (char *)(inbuffer + offset-1); + offset += length_id; + union { + int8_t real; + uint8_t base; + } u_passed; + u_passed.base = 0; + u_passed.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->passed = u_passed.real; + offset += sizeof(this->passed); + uint32_t status_lengthT = ((uint32_t) (*(inbuffer + offset))); + status_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + status_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + status_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->status_length); + if(status_lengthT > status_length) + this->status = (diagnostic_msgs::DiagnosticStatus*)realloc(this->status, status_lengthT * sizeof(diagnostic_msgs::DiagnosticStatus)); + status_length = status_lengthT; + for( uint32_t i = 0; i < status_length; i++){ + offset += this->st_status.deserialize(inbuffer + offset); + memcpy( &(this->status[i]), &(this->st_status), sizeof(diagnostic_msgs::DiagnosticStatus)); + } + return offset; + } + + const char * getType(){ return SELFTEST; }; + const char * getMD5(){ return "ac21b1bab7ab17546986536c22eb34e9"; }; + + }; + + class SelfTest { + public: + typedef SelfTestRequest Request; + typedef SelfTestResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/duration.cpp b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/duration.cpp new file mode 100644 index 0000000..d2dfdd6 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/duration.cpp @@ -0,0 +1,83 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2011, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include "ros/duration.h" + +namespace ros +{ +void normalizeSecNSecSigned(int32_t &sec, int32_t &nsec) +{ + int32_t nsec_part = nsec; + int32_t sec_part = sec; + + while (nsec_part > 1000000000L) + { + nsec_part -= 1000000000L; + ++sec_part; + } + while (nsec_part < 0) + { + nsec_part += 1000000000L; + --sec_part; + } + sec = sec_part; + nsec = nsec_part; +} + +Duration& Duration::operator+=(const Duration &rhs) +{ + sec += rhs.sec; + nsec += rhs.nsec; + normalizeSecNSecSigned(sec, nsec); + return *this; +} + +Duration& Duration::operator-=(const Duration &rhs) +{ + sec += -rhs.sec; + nsec += -rhs.nsec; + normalizeSecNSecSigned(sec, nsec); + return *this; +} + +Duration& Duration::operator*=(double scale) +{ + sec *= scale; + nsec *= scale; + normalizeSecNSecSigned(sec, nsec); + return *this; +} + +} diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/BoolParameter.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/BoolParameter.h new file mode 100644 index 0000000..9025486 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/BoolParameter.h @@ -0,0 +1,73 @@ +#ifndef _ROS_dynamic_reconfigure_BoolParameter_h +#define _ROS_dynamic_reconfigure_BoolParameter_h + +#include +#include +#include +#include "ros/msg.h" + +namespace dynamic_reconfigure +{ + + class BoolParameter : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef bool _value_type; + _value_type value; + + BoolParameter(): + name(""), + value(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + union { + bool real; + uint8_t base; + } u_value; + u_value.real = this->value; + *(outbuffer + offset + 0) = (u_value.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->value); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + union { + bool real; + uint8_t base; + } u_value; + u_value.base = 0; + u_value.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->value = u_value.real; + offset += sizeof(this->value); + return offset; + } + + const char * getType(){ return "dynamic_reconfigure/BoolParameter"; }; + const char * getMD5(){ return "23f05028c1a699fb83e22401228c3a9e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/Config.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/Config.h new file mode 100644 index 0000000..e5aca14 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/Config.h @@ -0,0 +1,168 @@ +#ifndef _ROS_dynamic_reconfigure_Config_h +#define _ROS_dynamic_reconfigure_Config_h + +#include +#include +#include +#include "ros/msg.h" +#include "dynamic_reconfigure/BoolParameter.h" +#include "dynamic_reconfigure/IntParameter.h" +#include "dynamic_reconfigure/StrParameter.h" +#include "dynamic_reconfigure/DoubleParameter.h" +#include "dynamic_reconfigure/GroupState.h" + +namespace dynamic_reconfigure +{ + + class Config : public ros::Msg + { + public: + uint32_t bools_length; + typedef dynamic_reconfigure::BoolParameter _bools_type; + _bools_type st_bools; + _bools_type * bools; + uint32_t ints_length; + typedef dynamic_reconfigure::IntParameter _ints_type; + _ints_type st_ints; + _ints_type * ints; + uint32_t strs_length; + typedef dynamic_reconfigure::StrParameter _strs_type; + _strs_type st_strs; + _strs_type * strs; + uint32_t doubles_length; + typedef dynamic_reconfigure::DoubleParameter _doubles_type; + _doubles_type st_doubles; + _doubles_type * doubles; + uint32_t groups_length; + typedef dynamic_reconfigure::GroupState _groups_type; + _groups_type st_groups; + _groups_type * groups; + + Config(): + bools_length(0), bools(NULL), + ints_length(0), ints(NULL), + strs_length(0), strs(NULL), + doubles_length(0), doubles(NULL), + groups_length(0), groups(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->bools_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->bools_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->bools_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->bools_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->bools_length); + for( uint32_t i = 0; i < bools_length; i++){ + offset += this->bools[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->ints_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->ints_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->ints_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->ints_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->ints_length); + for( uint32_t i = 0; i < ints_length; i++){ + offset += this->ints[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->strs_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->strs_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->strs_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->strs_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->strs_length); + for( uint32_t i = 0; i < strs_length; i++){ + offset += this->strs[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->doubles_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->doubles_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->doubles_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->doubles_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->doubles_length); + for( uint32_t i = 0; i < doubles_length; i++){ + offset += this->doubles[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->groups_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->groups_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->groups_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->groups_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->groups_length); + for( uint32_t i = 0; i < groups_length; i++){ + offset += this->groups[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t bools_lengthT = ((uint32_t) (*(inbuffer + offset))); + bools_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + bools_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + bools_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->bools_length); + if(bools_lengthT > bools_length) + this->bools = (dynamic_reconfigure::BoolParameter*)realloc(this->bools, bools_lengthT * sizeof(dynamic_reconfigure::BoolParameter)); + bools_length = bools_lengthT; + for( uint32_t i = 0; i < bools_length; i++){ + offset += this->st_bools.deserialize(inbuffer + offset); + memcpy( &(this->bools[i]), &(this->st_bools), sizeof(dynamic_reconfigure::BoolParameter)); + } + uint32_t ints_lengthT = ((uint32_t) (*(inbuffer + offset))); + ints_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + ints_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + ints_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->ints_length); + if(ints_lengthT > ints_length) + this->ints = (dynamic_reconfigure::IntParameter*)realloc(this->ints, ints_lengthT * sizeof(dynamic_reconfigure::IntParameter)); + ints_length = ints_lengthT; + for( uint32_t i = 0; i < ints_length; i++){ + offset += this->st_ints.deserialize(inbuffer + offset); + memcpy( &(this->ints[i]), &(this->st_ints), sizeof(dynamic_reconfigure::IntParameter)); + } + uint32_t strs_lengthT = ((uint32_t) (*(inbuffer + offset))); + strs_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + strs_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + strs_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->strs_length); + if(strs_lengthT > strs_length) + this->strs = (dynamic_reconfigure::StrParameter*)realloc(this->strs, strs_lengthT * sizeof(dynamic_reconfigure::StrParameter)); + strs_length = strs_lengthT; + for( uint32_t i = 0; i < strs_length; i++){ + offset += this->st_strs.deserialize(inbuffer + offset); + memcpy( &(this->strs[i]), &(this->st_strs), sizeof(dynamic_reconfigure::StrParameter)); + } + uint32_t doubles_lengthT = ((uint32_t) (*(inbuffer + offset))); + doubles_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + doubles_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + doubles_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->doubles_length); + if(doubles_lengthT > doubles_length) + this->doubles = (dynamic_reconfigure::DoubleParameter*)realloc(this->doubles, doubles_lengthT * sizeof(dynamic_reconfigure::DoubleParameter)); + doubles_length = doubles_lengthT; + for( uint32_t i = 0; i < doubles_length; i++){ + offset += this->st_doubles.deserialize(inbuffer + offset); + memcpy( &(this->doubles[i]), &(this->st_doubles), sizeof(dynamic_reconfigure::DoubleParameter)); + } + uint32_t groups_lengthT = ((uint32_t) (*(inbuffer + offset))); + groups_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + groups_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + groups_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->groups_length); + if(groups_lengthT > groups_length) + this->groups = (dynamic_reconfigure::GroupState*)realloc(this->groups, groups_lengthT * sizeof(dynamic_reconfigure::GroupState)); + groups_length = groups_lengthT; + for( uint32_t i = 0; i < groups_length; i++){ + offset += this->st_groups.deserialize(inbuffer + offset); + memcpy( &(this->groups[i]), &(this->st_groups), sizeof(dynamic_reconfigure::GroupState)); + } + return offset; + } + + const char * getType(){ return "dynamic_reconfigure/Config"; }; + const char * getMD5(){ return "958f16a05573709014982821e6822580"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/ConfigDescription.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/ConfigDescription.h new file mode 100644 index 0000000..4563bb7 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/ConfigDescription.h @@ -0,0 +1,80 @@ +#ifndef _ROS_dynamic_reconfigure_ConfigDescription_h +#define _ROS_dynamic_reconfigure_ConfigDescription_h + +#include +#include +#include +#include "ros/msg.h" +#include "dynamic_reconfigure/Group.h" +#include "dynamic_reconfigure/Config.h" + +namespace dynamic_reconfigure +{ + + class ConfigDescription : public ros::Msg + { + public: + uint32_t groups_length; + typedef dynamic_reconfigure::Group _groups_type; + _groups_type st_groups; + _groups_type * groups; + typedef dynamic_reconfigure::Config _max_type; + _max_type max; + typedef dynamic_reconfigure::Config _min_type; + _min_type min; + typedef dynamic_reconfigure::Config _dflt_type; + _dflt_type dflt; + + ConfigDescription(): + groups_length(0), groups(NULL), + max(), + min(), + dflt() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->groups_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->groups_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->groups_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->groups_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->groups_length); + for( uint32_t i = 0; i < groups_length; i++){ + offset += this->groups[i].serialize(outbuffer + offset); + } + offset += this->max.serialize(outbuffer + offset); + offset += this->min.serialize(outbuffer + offset); + offset += this->dflt.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t groups_lengthT = ((uint32_t) (*(inbuffer + offset))); + groups_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + groups_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + groups_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->groups_length); + if(groups_lengthT > groups_length) + this->groups = (dynamic_reconfigure::Group*)realloc(this->groups, groups_lengthT * sizeof(dynamic_reconfigure::Group)); + groups_length = groups_lengthT; + for( uint32_t i = 0; i < groups_length; i++){ + offset += this->st_groups.deserialize(inbuffer + offset); + memcpy( &(this->groups[i]), &(this->st_groups), sizeof(dynamic_reconfigure::Group)); + } + offset += this->max.deserialize(inbuffer + offset); + offset += this->min.deserialize(inbuffer + offset); + offset += this->dflt.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "dynamic_reconfigure/ConfigDescription"; }; + const char * getMD5(){ return "757ce9d44ba8ddd801bb30bc456f946f"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/DoubleParameter.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/DoubleParameter.h new file mode 100644 index 0000000..6f62e20 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/DoubleParameter.h @@ -0,0 +1,87 @@ +#ifndef _ROS_dynamic_reconfigure_DoubleParameter_h +#define _ROS_dynamic_reconfigure_DoubleParameter_h + +#include +#include +#include +#include "ros/msg.h" + +namespace dynamic_reconfigure +{ + + class DoubleParameter : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef double _value_type; + _value_type value; + + DoubleParameter(): + name(""), + value(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + union { + double real; + uint64_t base; + } u_value; + u_value.real = this->value; + *(outbuffer + offset + 0) = (u_value.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_value.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_value.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_value.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_value.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_value.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_value.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_value.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->value); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + union { + double real; + uint64_t base; + } u_value; + u_value.base = 0; + u_value.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_value.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_value.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_value.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_value.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_value.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_value.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_value.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->value = u_value.real; + offset += sizeof(this->value); + return offset; + } + + const char * getType(){ return "dynamic_reconfigure/DoubleParameter"; }; + const char * getMD5(){ return "d8512f27253c0f65f928a67c329cd658"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/Group.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/Group.h new file mode 100644 index 0000000..6f116ac --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/Group.h @@ -0,0 +1,146 @@ +#ifndef _ROS_dynamic_reconfigure_Group_h +#define _ROS_dynamic_reconfigure_Group_h + +#include +#include +#include +#include "ros/msg.h" +#include "dynamic_reconfigure/ParamDescription.h" + +namespace dynamic_reconfigure +{ + + class Group : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef const char* _type_type; + _type_type type; + uint32_t parameters_length; + typedef dynamic_reconfigure::ParamDescription _parameters_type; + _parameters_type st_parameters; + _parameters_type * parameters; + typedef int32_t _parent_type; + _parent_type parent; + typedef int32_t _id_type; + _id_type id; + + Group(): + name(""), + type(""), + parameters_length(0), parameters(NULL), + parent(0), + id(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + uint32_t length_type = strlen(this->type); + varToArr(outbuffer + offset, length_type); + offset += 4; + memcpy(outbuffer + offset, this->type, length_type); + offset += length_type; + *(outbuffer + offset + 0) = (this->parameters_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->parameters_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->parameters_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->parameters_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->parameters_length); + for( uint32_t i = 0; i < parameters_length; i++){ + offset += this->parameters[i].serialize(outbuffer + offset); + } + union { + int32_t real; + uint32_t base; + } u_parent; + u_parent.real = this->parent; + *(outbuffer + offset + 0) = (u_parent.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_parent.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_parent.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_parent.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->parent); + union { + int32_t real; + uint32_t base; + } u_id; + u_id.real = this->id; + *(outbuffer + offset + 0) = (u_id.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_id.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_id.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_id.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->id); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + uint32_t length_type; + arrToVar(length_type, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_type; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_type-1]=0; + this->type = (char *)(inbuffer + offset-1); + offset += length_type; + uint32_t parameters_lengthT = ((uint32_t) (*(inbuffer + offset))); + parameters_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + parameters_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + parameters_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->parameters_length); + if(parameters_lengthT > parameters_length) + this->parameters = (dynamic_reconfigure::ParamDescription*)realloc(this->parameters, parameters_lengthT * sizeof(dynamic_reconfigure::ParamDescription)); + parameters_length = parameters_lengthT; + for( uint32_t i = 0; i < parameters_length; i++){ + offset += this->st_parameters.deserialize(inbuffer + offset); + memcpy( &(this->parameters[i]), &(this->st_parameters), sizeof(dynamic_reconfigure::ParamDescription)); + } + union { + int32_t real; + uint32_t base; + } u_parent; + u_parent.base = 0; + u_parent.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_parent.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_parent.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_parent.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->parent = u_parent.real; + offset += sizeof(this->parent); + union { + int32_t real; + uint32_t base; + } u_id; + u_id.base = 0; + u_id.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_id.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_id.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_id.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->id = u_id.real; + offset += sizeof(this->id); + return offset; + } + + const char * getType(){ return "dynamic_reconfigure/Group"; }; + const char * getMD5(){ return "9e8cd9e9423c94823db3614dd8b1cf7a"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/GroupState.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/GroupState.h new file mode 100644 index 0000000..7988eac --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/GroupState.h @@ -0,0 +1,121 @@ +#ifndef _ROS_dynamic_reconfigure_GroupState_h +#define _ROS_dynamic_reconfigure_GroupState_h + +#include +#include +#include +#include "ros/msg.h" + +namespace dynamic_reconfigure +{ + + class GroupState : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef bool _state_type; + _state_type state; + typedef int32_t _id_type; + _id_type id; + typedef int32_t _parent_type; + _parent_type parent; + + GroupState(): + name(""), + state(0), + id(0), + parent(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + union { + bool real; + uint8_t base; + } u_state; + u_state.real = this->state; + *(outbuffer + offset + 0) = (u_state.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->state); + union { + int32_t real; + uint32_t base; + } u_id; + u_id.real = this->id; + *(outbuffer + offset + 0) = (u_id.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_id.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_id.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_id.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->id); + union { + int32_t real; + uint32_t base; + } u_parent; + u_parent.real = this->parent; + *(outbuffer + offset + 0) = (u_parent.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_parent.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_parent.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_parent.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->parent); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + union { + bool real; + uint8_t base; + } u_state; + u_state.base = 0; + u_state.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->state = u_state.real; + offset += sizeof(this->state); + union { + int32_t real; + uint32_t base; + } u_id; + u_id.base = 0; + u_id.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_id.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_id.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_id.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->id = u_id.real; + offset += sizeof(this->id); + union { + int32_t real; + uint32_t base; + } u_parent; + u_parent.base = 0; + u_parent.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_parent.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_parent.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_parent.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->parent = u_parent.real; + offset += sizeof(this->parent); + return offset; + } + + const char * getType(){ return "dynamic_reconfigure/GroupState"; }; + const char * getMD5(){ return "a2d87f51dc22930325041a2f8b1571f8"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/IntParameter.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/IntParameter.h new file mode 100644 index 0000000..aab4158 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/IntParameter.h @@ -0,0 +1,79 @@ +#ifndef _ROS_dynamic_reconfigure_IntParameter_h +#define _ROS_dynamic_reconfigure_IntParameter_h + +#include +#include +#include +#include "ros/msg.h" + +namespace dynamic_reconfigure +{ + + class IntParameter : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef int32_t _value_type; + _value_type value; + + IntParameter(): + name(""), + value(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + union { + int32_t real; + uint32_t base; + } u_value; + u_value.real = this->value; + *(outbuffer + offset + 0) = (u_value.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_value.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_value.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_value.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->value); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + union { + int32_t real; + uint32_t base; + } u_value; + u_value.base = 0; + u_value.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_value.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_value.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_value.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->value = u_value.real; + offset += sizeof(this->value); + return offset; + } + + const char * getType(){ return "dynamic_reconfigure/IntParameter"; }; + const char * getMD5(){ return "65fedc7a0cbfb8db035e46194a350bf1"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/ParamDescription.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/ParamDescription.h new file mode 100644 index 0000000..00ac5ba --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/ParamDescription.h @@ -0,0 +1,119 @@ +#ifndef _ROS_dynamic_reconfigure_ParamDescription_h +#define _ROS_dynamic_reconfigure_ParamDescription_h + +#include +#include +#include +#include "ros/msg.h" + +namespace dynamic_reconfigure +{ + + class ParamDescription : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef const char* _type_type; + _type_type type; + typedef uint32_t _level_type; + _level_type level; + typedef const char* _description_type; + _description_type description; + typedef const char* _edit_method_type; + _edit_method_type edit_method; + + ParamDescription(): + name(""), + type(""), + level(0), + description(""), + edit_method("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + uint32_t length_type = strlen(this->type); + varToArr(outbuffer + offset, length_type); + offset += 4; + memcpy(outbuffer + offset, this->type, length_type); + offset += length_type; + *(outbuffer + offset + 0) = (this->level >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->level >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->level >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->level >> (8 * 3)) & 0xFF; + offset += sizeof(this->level); + uint32_t length_description = strlen(this->description); + varToArr(outbuffer + offset, length_description); + offset += 4; + memcpy(outbuffer + offset, this->description, length_description); + offset += length_description; + uint32_t length_edit_method = strlen(this->edit_method); + varToArr(outbuffer + offset, length_edit_method); + offset += 4; + memcpy(outbuffer + offset, this->edit_method, length_edit_method); + offset += length_edit_method; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + uint32_t length_type; + arrToVar(length_type, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_type; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_type-1]=0; + this->type = (char *)(inbuffer + offset-1); + offset += length_type; + this->level = ((uint32_t) (*(inbuffer + offset))); + this->level |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->level |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->level |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->level); + uint32_t length_description; + arrToVar(length_description, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_description; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_description-1]=0; + this->description = (char *)(inbuffer + offset-1); + offset += length_description; + uint32_t length_edit_method; + arrToVar(length_edit_method, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_edit_method; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_edit_method-1]=0; + this->edit_method = (char *)(inbuffer + offset-1); + offset += length_edit_method; + return offset; + } + + const char * getType(){ return "dynamic_reconfigure/ParamDescription"; }; + const char * getMD5(){ return "7434fcb9348c13054e0c3b267c8cb34d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/Reconfigure.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/Reconfigure.h new file mode 100644 index 0000000..e4e6b79 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/Reconfigure.h @@ -0,0 +1,81 @@ +#ifndef _ROS_SERVICE_Reconfigure_h +#define _ROS_SERVICE_Reconfigure_h +#include +#include +#include +#include "ros/msg.h" +#include "dynamic_reconfigure/Config.h" + +namespace dynamic_reconfigure +{ + +static const char RECONFIGURE[] = "dynamic_reconfigure/Reconfigure"; + + class ReconfigureRequest : public ros::Msg + { + public: + typedef dynamic_reconfigure::Config _config_type; + _config_type config; + + ReconfigureRequest(): + config() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->config.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->config.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return RECONFIGURE; }; + const char * getMD5(){ return "ac41a77620a4a0348b7001641796a8a1"; }; + + }; + + class ReconfigureResponse : public ros::Msg + { + public: + typedef dynamic_reconfigure::Config _config_type; + _config_type config; + + ReconfigureResponse(): + config() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->config.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->config.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return RECONFIGURE; }; + const char * getMD5(){ return "ac41a77620a4a0348b7001641796a8a1"; }; + + }; + + class Reconfigure { + public: + typedef ReconfigureRequest Request; + typedef ReconfigureResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/SensorLevels.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/SensorLevels.h new file mode 100644 index 0000000..8f85722 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/SensorLevels.h @@ -0,0 +1,41 @@ +#ifndef _ROS_dynamic_reconfigure_SensorLevels_h +#define _ROS_dynamic_reconfigure_SensorLevels_h + +#include +#include +#include +#include "ros/msg.h" + +namespace dynamic_reconfigure +{ + + class SensorLevels : public ros::Msg + { + public: + enum { RECONFIGURE_CLOSE = 3 }; + enum { RECONFIGURE_STOP = 1 }; + enum { RECONFIGURE_RUNNING = 0 }; + + SensorLevels() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "dynamic_reconfigure/SensorLevels"; }; + const char * getMD5(){ return "6322637bee96d5489db6e2127c47602c"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/StrParameter.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/StrParameter.h new file mode 100644 index 0000000..2e743f0 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/StrParameter.h @@ -0,0 +1,72 @@ +#ifndef _ROS_dynamic_reconfigure_StrParameter_h +#define _ROS_dynamic_reconfigure_StrParameter_h + +#include +#include +#include +#include "ros/msg.h" + +namespace dynamic_reconfigure +{ + + class StrParameter : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef const char* _value_type; + _value_type value; + + StrParameter(): + name(""), + value("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + uint32_t length_value = strlen(this->value); + varToArr(outbuffer + offset, length_value); + offset += 4; + memcpy(outbuffer + offset, this->value, length_value); + offset += length_value; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + uint32_t length_value; + arrToVar(length_value, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_value; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_value-1]=0; + this->value = (char *)(inbuffer + offset-1); + offset += length_value; + return offset; + } + + const char * getType(){ return "dynamic_reconfigure/StrParameter"; }; + const char * getMD5(){ return "bc6ccc4a57f61779c8eaae61e9f422e0"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/embedded_linux_comms.c b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/embedded_linux_comms.c new file mode 100644 index 0000000..bde6e37 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/embedded_linux_comms.c @@ -0,0 +1,208 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2012, Paul Bouchier + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef ROS_EMBEDDED_LINUX_COMMS_H +#define ROS_EMBEDDED_LINUX_COMMS_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define DEFAULT_PORTNUM 11411 + +void error(const char *msg) +{ + perror(msg); + exit(0); +} + +void set_nonblock(int socket) +{ + int flags; + flags = fcntl(socket, F_GETFL, 0); + assert(flags != -1); + fcntl(socket, F_SETFL, flags | O_NONBLOCK); +} + +int elCommInit(const char *portName, int baud) +{ + struct termios options; + int fd; + int sockfd; + struct sockaddr_in serv_addr; + struct hostent *server; + int rv; + + if (*portName == '/') // linux serial port names always begin with /dev + { + printf("Opening serial port %s\n", portName); + + fd = open(portName, O_RDWR | O_NOCTTY | O_NDELAY); + + if (fd == -1) + { + // Could not open the port. + perror("init(): Unable to open serial port - "); + } + else + { + // Sets the read() function to return NOW and not wait for data to enter + // buffer if there isn't anything there. + fcntl(fd, F_SETFL, FNDELAY); + + // Configure port for 8N1 transmission, 57600 baud, SW flow control. + tcgetattr(fd, &options); + cfsetispeed(&options, B57600); + cfsetospeed(&options, B57600); + options.c_cflag |= (CLOCAL | CREAD); + options.c_cflag &= ~PARENB; + options.c_cflag &= ~CSTOPB; + options.c_cflag &= ~CSIZE; + options.c_cflag |= CS8; + options.c_cflag &= ~CRTSCTS; + options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); + options.c_iflag &= ~(IXON | IXOFF | IXANY); + options.c_oflag &= ~OPOST; + + // Set the new options for the port "NOW" + tcsetattr(fd, TCSANOW, &options); + } + return fd; + } + else + { + // Split connection string into IP address and port. + const char* tcpPortNumString = strchr(portName, ':'); + long int tcpPortNum; + char ip[16]; + if (!tcpPortNumString) + { + tcpPortNum = DEFAULT_PORTNUM; + strncpy(ip, portName, 16); + } + else + { + tcpPortNum = strtol(tcpPortNumString + 1, NULL, 10); + strncpy(ip, portName, tcpPortNumString - portName); + } + + printf("Connecting to TCP server at %s:%ld....\n", ip, tcpPortNum); + + // Create the socket. + sockfd = socket(AF_INET, SOCK_STREAM, 0); + if (sockfd < 0) + { + error("ERROR opening socket"); + exit(-1); + } + + // Disable the Nagle (TCP No Delay) algorithm. + int flag = 1; + rv = setsockopt(sockfd, IPPROTO_TCP, TCP_NODELAY, (char *)&flag, sizeof(flag)); + if (rv == -1) + { + printf("Couldn't setsockopt(TCP_NODELAY)\n"); + exit(-1); + } + + // Connect to the server + server = gethostbyname(ip); + if (server == NULL) + { + fprintf(stderr, "ERROR, no such host\n"); + exit(0); + } + bzero((char *) &serv_addr, sizeof(serv_addr)); + serv_addr.sin_family = AF_INET; + bcopy((char *)server->h_addr, + (char *)&serv_addr.sin_addr.s_addr, + server->h_length); + serv_addr.sin_port = htons(tcpPortNum); + if (connect(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) + error("ERROR connecting"); + set_nonblock(sockfd); + printf("connected to server\n"); + return sockfd; + } + return -1; +} + +int elCommRead(int fd) +{ + unsigned char c; + unsigned int i; + int rv; + rv = read(fd, &c, 1); // read one byte + i = c; // convert byte to an int for return + if (rv > 0) + return i; // return the character read + if (rv < 0) + { + if ((errno != EAGAIN) && (errno != EWOULDBLOCK)) + perror("elCommRead() error:"); + } + + // return -1 or 0 either if we read nothing, or if read returned negative + return rv; +} + +int elCommWrite(int fd, uint8_t* data, int len) +{ + int rv = 0; + int length = len; + int totalsent = 0; + while (totalsent < length) + { + rv = write(fd, data + totalsent, length); + if (rv < 0) + perror("write(): error writing - trying again - "); + else + totalsent += rv; + } + return rv; +} + +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/embedded_linux_hardware.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/embedded_linux_hardware.h new file mode 100644 index 0000000..fff1b46 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/embedded_linux_hardware.h @@ -0,0 +1,172 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2011, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef ROS_EMBEDDED_LINUX_HARDWARE_H_ +#define ROS_EMBEDDED_LINUX_HARDWARE_H_ + +#include + +#ifdef BUILD_LIBROSSERIALEMBEDDEDLINUX +extern "C" int elCommInit(char *portName, int baud); +extern "C" int elCommRead(int fd); +extern "C" elCommWrite(int fd, uint8_t* data, int length); +#endif + +#ifdef __linux__ +#include +#endif + +// Includes necessary to support time on OS X. +#ifdef __MACH__ +#include +#include +static mach_timebase_info_data_t sTimebaseInfo; +#endif + +#define DEFAULT_PORT "/dev/ttyAM1" + +class EmbeddedLinuxHardware +{ +public: + EmbeddedLinuxHardware(const char *pn, long baud = 57600) + { + strncpy(portName, pn, 30); + baud_ = baud; + } + + EmbeddedLinuxHardware() + { + const char *envPortName = getenv("ROSSERIAL_PORT"); + if (envPortName == NULL) + strcpy(portName, DEFAULT_PORT); + else + strncpy(portName, envPortName, 29); + portName[29] = '\0'; // in case user gave us too long a port name + baud_ = 57600; + } + + void setBaud(long baud) + { + this->baud_ = baud; + } + + int getBaud() + { + return baud_; + } + + void init() + { + fd = elCommInit(portName, baud_); + if (fd < 0) + { + std::cout << "Exiting" << std::endl; + exit(-1); + } + std::cout << "EmbeddedHardware.h: opened serial port successfully\n"; + + initTime(); + } + + void init(const char *pName) + { + fd = elCommInit(pName, baud_); + if (fd < 0) + { + std::cout << "Exiting" << std::endl; + exit(-1); + } + std::cout << "EmbeddedHardware.h: opened comm port successfully\n"; + + initTime(); + } + + int read() + { + int c = elCommRead(fd); + return c; + } + + void write(uint8_t* data, int length) + { + elCommWrite(fd, data, length); + } + +#ifdef __linux__ + void initTime() + { + clock_gettime(CLOCK_MONOTONIC, &start); + } + + unsigned long time() + { + struct timespec end; + long seconds, nseconds; + + clock_gettime(CLOCK_MONOTONIC, &end); + + seconds = end.tv_sec - start.tv_sec; + nseconds = end.tv_nsec - start.tv_nsec; + + return ((seconds) * 1000 + nseconds / 1000000.0) + 0.5; + } + +#elif __MACH__ + void initTime() + { + start = mach_absolute_time(); + mach_timebase_info(&sTimebaseInfo); + } + + unsigned long time() + { + // See: https://developer.apple.com/library/mac/qa/qa1398/_index.html + uint64_t elapsed = mach_absolute_time() - start; + return elapsed * sTimebaseInfo.numer / (sTimebaseInfo.denom * 1000000); + } +#endif + +protected: + int fd; + char portName[30]; + long baud_; + +#ifdef __linux__ + struct timespec start; +#elif __MACH__ + uint64_t start; +#endif +}; + +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/ApplyBodyWrench.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/ApplyBodyWrench.h new file mode 100644 index 0000000..e7af6bb --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/ApplyBodyWrench.h @@ -0,0 +1,199 @@ +#ifndef _ROS_SERVICE_ApplyBodyWrench_h +#define _ROS_SERVICE_ApplyBodyWrench_h +#include +#include +#include +#include "ros/msg.h" +#include "ros/duration.h" +#include "geometry_msgs/Wrench.h" +#include "ros/time.h" +#include "geometry_msgs/Point.h" + +namespace gazebo_msgs +{ + +static const char APPLYBODYWRENCH[] = "gazebo_msgs/ApplyBodyWrench"; + + class ApplyBodyWrenchRequest : public ros::Msg + { + public: + typedef const char* _body_name_type; + _body_name_type body_name; + typedef const char* _reference_frame_type; + _reference_frame_type reference_frame; + typedef geometry_msgs::Point _reference_point_type; + _reference_point_type reference_point; + typedef geometry_msgs::Wrench _wrench_type; + _wrench_type wrench; + typedef ros::Time _start_time_type; + _start_time_type start_time; + typedef ros::Duration _duration_type; + _duration_type duration; + + ApplyBodyWrenchRequest(): + body_name(""), + reference_frame(""), + reference_point(), + wrench(), + start_time(), + duration() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_body_name = strlen(this->body_name); + varToArr(outbuffer + offset, length_body_name); + offset += 4; + memcpy(outbuffer + offset, this->body_name, length_body_name); + offset += length_body_name; + uint32_t length_reference_frame = strlen(this->reference_frame); + varToArr(outbuffer + offset, length_reference_frame); + offset += 4; + memcpy(outbuffer + offset, this->reference_frame, length_reference_frame); + offset += length_reference_frame; + offset += this->reference_point.serialize(outbuffer + offset); + offset += this->wrench.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->start_time.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->start_time.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->start_time.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->start_time.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->start_time.sec); + *(outbuffer + offset + 0) = (this->start_time.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->start_time.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->start_time.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->start_time.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->start_time.nsec); + *(outbuffer + offset + 0) = (this->duration.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->duration.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->duration.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->duration.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->duration.sec); + *(outbuffer + offset + 0) = (this->duration.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->duration.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->duration.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->duration.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->duration.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_body_name; + arrToVar(length_body_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_body_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_body_name-1]=0; + this->body_name = (char *)(inbuffer + offset-1); + offset += length_body_name; + uint32_t length_reference_frame; + arrToVar(length_reference_frame, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_reference_frame; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_reference_frame-1]=0; + this->reference_frame = (char *)(inbuffer + offset-1); + offset += length_reference_frame; + offset += this->reference_point.deserialize(inbuffer + offset); + offset += this->wrench.deserialize(inbuffer + offset); + this->start_time.sec = ((uint32_t) (*(inbuffer + offset))); + this->start_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->start_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->start_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->start_time.sec); + this->start_time.nsec = ((uint32_t) (*(inbuffer + offset))); + this->start_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->start_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->start_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->start_time.nsec); + this->duration.sec = ((uint32_t) (*(inbuffer + offset))); + this->duration.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->duration.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->duration.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->duration.sec); + this->duration.nsec = ((uint32_t) (*(inbuffer + offset))); + this->duration.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->duration.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->duration.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->duration.nsec); + return offset; + } + + const char * getType(){ return APPLYBODYWRENCH; }; + const char * getMD5(){ return "e37e6adf97eba5095baa77dffb71e5bd"; }; + + }; + + class ApplyBodyWrenchResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + ApplyBodyWrenchResponse(): + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return APPLYBODYWRENCH; }; + const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; }; + + }; + + class ApplyBodyWrench { + public: + typedef ApplyBodyWrenchRequest Request; + typedef ApplyBodyWrenchResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/ApplyJointEffort.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/ApplyJointEffort.h new file mode 100644 index 0000000..636084f --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/ApplyJointEffort.h @@ -0,0 +1,202 @@ +#ifndef _ROS_SERVICE_ApplyJointEffort_h +#define _ROS_SERVICE_ApplyJointEffort_h +#include +#include +#include +#include "ros/msg.h" +#include "ros/duration.h" +#include "ros/time.h" + +namespace gazebo_msgs +{ + +static const char APPLYJOINTEFFORT[] = "gazebo_msgs/ApplyJointEffort"; + + class ApplyJointEffortRequest : public ros::Msg + { + public: + typedef const char* _joint_name_type; + _joint_name_type joint_name; + typedef double _effort_type; + _effort_type effort; + typedef ros::Time _start_time_type; + _start_time_type start_time; + typedef ros::Duration _duration_type; + _duration_type duration; + + ApplyJointEffortRequest(): + joint_name(""), + effort(0), + start_time(), + duration() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_joint_name = strlen(this->joint_name); + varToArr(outbuffer + offset, length_joint_name); + offset += 4; + memcpy(outbuffer + offset, this->joint_name, length_joint_name); + offset += length_joint_name; + union { + double real; + uint64_t base; + } u_effort; + u_effort.real = this->effort; + *(outbuffer + offset + 0) = (u_effort.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_effort.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_effort.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_effort.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_effort.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_effort.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_effort.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_effort.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->effort); + *(outbuffer + offset + 0) = (this->start_time.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->start_time.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->start_time.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->start_time.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->start_time.sec); + *(outbuffer + offset + 0) = (this->start_time.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->start_time.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->start_time.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->start_time.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->start_time.nsec); + *(outbuffer + offset + 0) = (this->duration.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->duration.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->duration.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->duration.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->duration.sec); + *(outbuffer + offset + 0) = (this->duration.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->duration.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->duration.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->duration.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->duration.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_joint_name; + arrToVar(length_joint_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_joint_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_joint_name-1]=0; + this->joint_name = (char *)(inbuffer + offset-1); + offset += length_joint_name; + union { + double real; + uint64_t base; + } u_effort; + u_effort.base = 0; + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->effort = u_effort.real; + offset += sizeof(this->effort); + this->start_time.sec = ((uint32_t) (*(inbuffer + offset))); + this->start_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->start_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->start_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->start_time.sec); + this->start_time.nsec = ((uint32_t) (*(inbuffer + offset))); + this->start_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->start_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->start_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->start_time.nsec); + this->duration.sec = ((uint32_t) (*(inbuffer + offset))); + this->duration.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->duration.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->duration.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->duration.sec); + this->duration.nsec = ((uint32_t) (*(inbuffer + offset))); + this->duration.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->duration.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->duration.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->duration.nsec); + return offset; + } + + const char * getType(){ return APPLYJOINTEFFORT; }; + const char * getMD5(){ return "2c3396ab9af67a509ecd2167a8fe41a2"; }; + + }; + + class ApplyJointEffortResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + ApplyJointEffortResponse(): + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return APPLYJOINTEFFORT; }; + const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; }; + + }; + + class ApplyJointEffort { + public: + typedef ApplyJointEffortRequest Request; + typedef ApplyJointEffortResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/BodyRequest.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/BodyRequest.h new file mode 100644 index 0000000..bb2106d --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/BodyRequest.h @@ -0,0 +1,87 @@ +#ifndef _ROS_SERVICE_BodyRequest_h +#define _ROS_SERVICE_BodyRequest_h +#include +#include +#include +#include "ros/msg.h" + +namespace gazebo_msgs +{ + +static const char BODYREQUEST[] = "gazebo_msgs/BodyRequest"; + + class BodyRequestRequest : public ros::Msg + { + public: + typedef const char* _body_name_type; + _body_name_type body_name; + + BodyRequestRequest(): + body_name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_body_name = strlen(this->body_name); + varToArr(outbuffer + offset, length_body_name); + offset += 4; + memcpy(outbuffer + offset, this->body_name, length_body_name); + offset += length_body_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_body_name; + arrToVar(length_body_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_body_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_body_name-1]=0; + this->body_name = (char *)(inbuffer + offset-1); + offset += length_body_name; + return offset; + } + + const char * getType(){ return BODYREQUEST; }; + const char * getMD5(){ return "5eade9afe7f232d78005bd0cafeab755"; }; + + }; + + class BodyRequestResponse : public ros::Msg + { + public: + + BodyRequestResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return BODYREQUEST; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class BodyRequest { + public: + typedef BodyRequestRequest Request; + typedef BodyRequestResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/ContactState.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/ContactState.h new file mode 100644 index 0000000..a3d852d --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/ContactState.h @@ -0,0 +1,223 @@ +#ifndef _ROS_gazebo_msgs_ContactState_h +#define _ROS_gazebo_msgs_ContactState_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Wrench.h" +#include "geometry_msgs/Vector3.h" + +namespace gazebo_msgs +{ + + class ContactState : public ros::Msg + { + public: + typedef const char* _info_type; + _info_type info; + typedef const char* _collision1_name_type; + _collision1_name_type collision1_name; + typedef const char* _collision2_name_type; + _collision2_name_type collision2_name; + uint32_t wrenches_length; + typedef geometry_msgs::Wrench _wrenches_type; + _wrenches_type st_wrenches; + _wrenches_type * wrenches; + typedef geometry_msgs::Wrench _total_wrench_type; + _total_wrench_type total_wrench; + uint32_t contact_positions_length; + typedef geometry_msgs::Vector3 _contact_positions_type; + _contact_positions_type st_contact_positions; + _contact_positions_type * contact_positions; + uint32_t contact_normals_length; + typedef geometry_msgs::Vector3 _contact_normals_type; + _contact_normals_type st_contact_normals; + _contact_normals_type * contact_normals; + uint32_t depths_length; + typedef double _depths_type; + _depths_type st_depths; + _depths_type * depths; + + ContactState(): + info(""), + collision1_name(""), + collision2_name(""), + wrenches_length(0), wrenches(NULL), + total_wrench(), + contact_positions_length(0), contact_positions(NULL), + contact_normals_length(0), contact_normals(NULL), + depths_length(0), depths(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_info = strlen(this->info); + varToArr(outbuffer + offset, length_info); + offset += 4; + memcpy(outbuffer + offset, this->info, length_info); + offset += length_info; + uint32_t length_collision1_name = strlen(this->collision1_name); + varToArr(outbuffer + offset, length_collision1_name); + offset += 4; + memcpy(outbuffer + offset, this->collision1_name, length_collision1_name); + offset += length_collision1_name; + uint32_t length_collision2_name = strlen(this->collision2_name); + varToArr(outbuffer + offset, length_collision2_name); + offset += 4; + memcpy(outbuffer + offset, this->collision2_name, length_collision2_name); + offset += length_collision2_name; + *(outbuffer + offset + 0) = (this->wrenches_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->wrenches_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->wrenches_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->wrenches_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->wrenches_length); + for( uint32_t i = 0; i < wrenches_length; i++){ + offset += this->wrenches[i].serialize(outbuffer + offset); + } + offset += this->total_wrench.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->contact_positions_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->contact_positions_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->contact_positions_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->contact_positions_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->contact_positions_length); + for( uint32_t i = 0; i < contact_positions_length; i++){ + offset += this->contact_positions[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->contact_normals_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->contact_normals_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->contact_normals_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->contact_normals_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->contact_normals_length); + for( uint32_t i = 0; i < contact_normals_length; i++){ + offset += this->contact_normals[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->depths_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->depths_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->depths_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->depths_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->depths_length); + for( uint32_t i = 0; i < depths_length; i++){ + union { + double real; + uint64_t base; + } u_depthsi; + u_depthsi.real = this->depths[i]; + *(outbuffer + offset + 0) = (u_depthsi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_depthsi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_depthsi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_depthsi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_depthsi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_depthsi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_depthsi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_depthsi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->depths[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_info; + arrToVar(length_info, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_info; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_info-1]=0; + this->info = (char *)(inbuffer + offset-1); + offset += length_info; + uint32_t length_collision1_name; + arrToVar(length_collision1_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_collision1_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_collision1_name-1]=0; + this->collision1_name = (char *)(inbuffer + offset-1); + offset += length_collision1_name; + uint32_t length_collision2_name; + arrToVar(length_collision2_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_collision2_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_collision2_name-1]=0; + this->collision2_name = (char *)(inbuffer + offset-1); + offset += length_collision2_name; + uint32_t wrenches_lengthT = ((uint32_t) (*(inbuffer + offset))); + wrenches_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + wrenches_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + wrenches_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->wrenches_length); + if(wrenches_lengthT > wrenches_length) + this->wrenches = (geometry_msgs::Wrench*)realloc(this->wrenches, wrenches_lengthT * sizeof(geometry_msgs::Wrench)); + wrenches_length = wrenches_lengthT; + for( uint32_t i = 0; i < wrenches_length; i++){ + offset += this->st_wrenches.deserialize(inbuffer + offset); + memcpy( &(this->wrenches[i]), &(this->st_wrenches), sizeof(geometry_msgs::Wrench)); + } + offset += this->total_wrench.deserialize(inbuffer + offset); + uint32_t contact_positions_lengthT = ((uint32_t) (*(inbuffer + offset))); + contact_positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + contact_positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + contact_positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->contact_positions_length); + if(contact_positions_lengthT > contact_positions_length) + this->contact_positions = (geometry_msgs::Vector3*)realloc(this->contact_positions, contact_positions_lengthT * sizeof(geometry_msgs::Vector3)); + contact_positions_length = contact_positions_lengthT; + for( uint32_t i = 0; i < contact_positions_length; i++){ + offset += this->st_contact_positions.deserialize(inbuffer + offset); + memcpy( &(this->contact_positions[i]), &(this->st_contact_positions), sizeof(geometry_msgs::Vector3)); + } + uint32_t contact_normals_lengthT = ((uint32_t) (*(inbuffer + offset))); + contact_normals_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + contact_normals_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + contact_normals_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->contact_normals_length); + if(contact_normals_lengthT > contact_normals_length) + this->contact_normals = (geometry_msgs::Vector3*)realloc(this->contact_normals, contact_normals_lengthT * sizeof(geometry_msgs::Vector3)); + contact_normals_length = contact_normals_lengthT; + for( uint32_t i = 0; i < contact_normals_length; i++){ + offset += this->st_contact_normals.deserialize(inbuffer + offset); + memcpy( &(this->contact_normals[i]), &(this->st_contact_normals), sizeof(geometry_msgs::Vector3)); + } + uint32_t depths_lengthT = ((uint32_t) (*(inbuffer + offset))); + depths_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + depths_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + depths_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->depths_length); + if(depths_lengthT > depths_length) + this->depths = (double*)realloc(this->depths, depths_lengthT * sizeof(double)); + depths_length = depths_lengthT; + for( uint32_t i = 0; i < depths_length; i++){ + union { + double real; + uint64_t base; + } u_st_depths; + u_st_depths.base = 0; + u_st_depths.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_depths.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_depths.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_depths.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_depths.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_depths.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_depths.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_depths.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_depths = u_st_depths.real; + offset += sizeof(this->st_depths); + memcpy( &(this->depths[i]), &(this->st_depths), sizeof(double)); + } + return offset; + } + + const char * getType(){ return "gazebo_msgs/ContactState"; }; + const char * getMD5(){ return "48c0ffb054b8c444f870cecea1ee50d9"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/ContactsState.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/ContactsState.h new file mode 100644 index 0000000..9af62c0 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/ContactsState.h @@ -0,0 +1,70 @@ +#ifndef _ROS_gazebo_msgs_ContactsState_h +#define _ROS_gazebo_msgs_ContactsState_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "gazebo_msgs/ContactState.h" + +namespace gazebo_msgs +{ + + class ContactsState : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t states_length; + typedef gazebo_msgs::ContactState _states_type; + _states_type st_states; + _states_type * states; + + ContactsState(): + header(), + states_length(0), states(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->states_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->states_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->states_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->states_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->states_length); + for( uint32_t i = 0; i < states_length; i++){ + offset += this->states[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t states_lengthT = ((uint32_t) (*(inbuffer + offset))); + states_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + states_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + states_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->states_length); + if(states_lengthT > states_length) + this->states = (gazebo_msgs::ContactState*)realloc(this->states, states_lengthT * sizeof(gazebo_msgs::ContactState)); + states_length = states_lengthT; + for( uint32_t i = 0; i < states_length; i++){ + offset += this->st_states.deserialize(inbuffer + offset); + memcpy( &(this->states[i]), &(this->st_states), sizeof(gazebo_msgs::ContactState)); + } + return offset; + } + + const char * getType(){ return "gazebo_msgs/ContactsState"; }; + const char * getMD5(){ return "acbcb1601a8e525bf72509f18e6f668d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/DeleteLight.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/DeleteLight.h new file mode 100644 index 0000000..54a9c5d --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/DeleteLight.h @@ -0,0 +1,122 @@ +#ifndef _ROS_SERVICE_DeleteLight_h +#define _ROS_SERVICE_DeleteLight_h +#include +#include +#include +#include "ros/msg.h" + +namespace gazebo_msgs +{ + +static const char DELETELIGHT[] = "gazebo_msgs/DeleteLight"; + + class DeleteLightRequest : public ros::Msg + { + public: + typedef const char* _light_name_type; + _light_name_type light_name; + + DeleteLightRequest(): + light_name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_light_name = strlen(this->light_name); + varToArr(outbuffer + offset, length_light_name); + offset += 4; + memcpy(outbuffer + offset, this->light_name, length_light_name); + offset += length_light_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_light_name; + arrToVar(length_light_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_light_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_light_name-1]=0; + this->light_name = (char *)(inbuffer + offset-1); + offset += length_light_name; + return offset; + } + + const char * getType(){ return DELETELIGHT; }; + const char * getMD5(){ return "4fb676dfb4741fc866365702a859441c"; }; + + }; + + class DeleteLightResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + DeleteLightResponse(): + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return DELETELIGHT; }; + const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; }; + + }; + + class DeleteLight { + public: + typedef DeleteLightRequest Request; + typedef DeleteLightResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/DeleteModel.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/DeleteModel.h new file mode 100644 index 0000000..00da12d --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/DeleteModel.h @@ -0,0 +1,122 @@ +#ifndef _ROS_SERVICE_DeleteModel_h +#define _ROS_SERVICE_DeleteModel_h +#include +#include +#include +#include "ros/msg.h" + +namespace gazebo_msgs +{ + +static const char DELETEMODEL[] = "gazebo_msgs/DeleteModel"; + + class DeleteModelRequest : public ros::Msg + { + public: + typedef const char* _model_name_type; + _model_name_type model_name; + + DeleteModelRequest(): + model_name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_model_name = strlen(this->model_name); + varToArr(outbuffer + offset, length_model_name); + offset += 4; + memcpy(outbuffer + offset, this->model_name, length_model_name); + offset += length_model_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_model_name; + arrToVar(length_model_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_model_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_model_name-1]=0; + this->model_name = (char *)(inbuffer + offset-1); + offset += length_model_name; + return offset; + } + + const char * getType(){ return DELETEMODEL; }; + const char * getMD5(){ return "ea31c8eab6fc401383cf528a7c0984ba"; }; + + }; + + class DeleteModelResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + DeleteModelResponse(): + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return DELETEMODEL; }; + const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; }; + + }; + + class DeleteModel { + public: + typedef DeleteModelRequest Request; + typedef DeleteModelResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetJointProperties.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetJointProperties.h new file mode 100644 index 0000000..6ad0fe9 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetJointProperties.h @@ -0,0 +1,291 @@ +#ifndef _ROS_SERVICE_GetJointProperties_h +#define _ROS_SERVICE_GetJointProperties_h +#include +#include +#include +#include "ros/msg.h" + +namespace gazebo_msgs +{ + +static const char GETJOINTPROPERTIES[] = "gazebo_msgs/GetJointProperties"; + + class GetJointPropertiesRequest : public ros::Msg + { + public: + typedef const char* _joint_name_type; + _joint_name_type joint_name; + + GetJointPropertiesRequest(): + joint_name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_joint_name = strlen(this->joint_name); + varToArr(outbuffer + offset, length_joint_name); + offset += 4; + memcpy(outbuffer + offset, this->joint_name, length_joint_name); + offset += length_joint_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_joint_name; + arrToVar(length_joint_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_joint_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_joint_name-1]=0; + this->joint_name = (char *)(inbuffer + offset-1); + offset += length_joint_name; + return offset; + } + + const char * getType(){ return GETJOINTPROPERTIES; }; + const char * getMD5(){ return "0be1351618e1dc030eb7959d9a4902de"; }; + + }; + + class GetJointPropertiesResponse : public ros::Msg + { + public: + typedef uint8_t _type_type; + _type_type type; + uint32_t damping_length; + typedef double _damping_type; + _damping_type st_damping; + _damping_type * damping; + uint32_t position_length; + typedef double _position_type; + _position_type st_position; + _position_type * position; + uint32_t rate_length; + typedef double _rate_type; + _rate_type st_rate; + _rate_type * rate; + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + enum { REVOLUTE = 0 }; + enum { CONTINUOUS = 1 }; + enum { PRISMATIC = 2 }; + enum { FIXED = 3 }; + enum { BALL = 4 }; + enum { UNIVERSAL = 5 }; + + GetJointPropertiesResponse(): + type(0), + damping_length(0), damping(NULL), + position_length(0), position(NULL), + rate_length(0), rate(NULL), + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->type >> (8 * 0)) & 0xFF; + offset += sizeof(this->type); + *(outbuffer + offset + 0) = (this->damping_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->damping_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->damping_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->damping_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->damping_length); + for( uint32_t i = 0; i < damping_length; i++){ + union { + double real; + uint64_t base; + } u_dampingi; + u_dampingi.real = this->damping[i]; + *(outbuffer + offset + 0) = (u_dampingi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_dampingi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_dampingi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_dampingi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_dampingi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_dampingi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_dampingi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_dampingi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->damping[i]); + } + *(outbuffer + offset + 0) = (this->position_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->position_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->position_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->position_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->position_length); + for( uint32_t i = 0; i < position_length; i++){ + union { + double real; + uint64_t base; + } u_positioni; + u_positioni.real = this->position[i]; + *(outbuffer + offset + 0) = (u_positioni.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_positioni.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_positioni.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_positioni.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_positioni.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_positioni.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_positioni.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_positioni.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->position[i]); + } + *(outbuffer + offset + 0) = (this->rate_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->rate_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->rate_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->rate_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->rate_length); + for( uint32_t i = 0; i < rate_length; i++){ + union { + double real; + uint64_t base; + } u_ratei; + u_ratei.real = this->rate[i]; + *(outbuffer + offset + 0) = (u_ratei.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_ratei.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_ratei.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_ratei.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_ratei.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_ratei.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_ratei.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_ratei.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->rate[i]); + } + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->type = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->type); + uint32_t damping_lengthT = ((uint32_t) (*(inbuffer + offset))); + damping_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + damping_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + damping_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->damping_length); + if(damping_lengthT > damping_length) + this->damping = (double*)realloc(this->damping, damping_lengthT * sizeof(double)); + damping_length = damping_lengthT; + for( uint32_t i = 0; i < damping_length; i++){ + union { + double real; + uint64_t base; + } u_st_damping; + u_st_damping.base = 0; + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_damping = u_st_damping.real; + offset += sizeof(this->st_damping); + memcpy( &(this->damping[i]), &(this->st_damping), sizeof(double)); + } + uint32_t position_lengthT = ((uint32_t) (*(inbuffer + offset))); + position_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + position_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + position_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->position_length); + if(position_lengthT > position_length) + this->position = (double*)realloc(this->position, position_lengthT * sizeof(double)); + position_length = position_lengthT; + for( uint32_t i = 0; i < position_length; i++){ + union { + double real; + uint64_t base; + } u_st_position; + u_st_position.base = 0; + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_position = u_st_position.real; + offset += sizeof(this->st_position); + memcpy( &(this->position[i]), &(this->st_position), sizeof(double)); + } + uint32_t rate_lengthT = ((uint32_t) (*(inbuffer + offset))); + rate_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + rate_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + rate_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->rate_length); + if(rate_lengthT > rate_length) + this->rate = (double*)realloc(this->rate, rate_lengthT * sizeof(double)); + rate_length = rate_lengthT; + for( uint32_t i = 0; i < rate_length; i++){ + union { + double real; + uint64_t base; + } u_st_rate; + u_st_rate.base = 0; + u_st_rate.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_rate.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_rate.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_rate.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_rate.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_rate.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_rate.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_rate.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_rate = u_st_rate.real; + offset += sizeof(this->st_rate); + memcpy( &(this->rate[i]), &(this->st_rate), sizeof(double)); + } + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return GETJOINTPROPERTIES; }; + const char * getMD5(){ return "cd7b30a39faa372283dc94c5f6457f82"; }; + + }; + + class GetJointProperties { + public: + typedef GetJointPropertiesRequest Request; + typedef GetJointPropertiesResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetLightProperties.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetLightProperties.h new file mode 100644 index 0000000..7210186 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetLightProperties.h @@ -0,0 +1,224 @@ +#ifndef _ROS_SERVICE_GetLightProperties_h +#define _ROS_SERVICE_GetLightProperties_h +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/ColorRGBA.h" + +namespace gazebo_msgs +{ + +static const char GETLIGHTPROPERTIES[] = "gazebo_msgs/GetLightProperties"; + + class GetLightPropertiesRequest : public ros::Msg + { + public: + typedef const char* _light_name_type; + _light_name_type light_name; + + GetLightPropertiesRequest(): + light_name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_light_name = strlen(this->light_name); + varToArr(outbuffer + offset, length_light_name); + offset += 4; + memcpy(outbuffer + offset, this->light_name, length_light_name); + offset += length_light_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_light_name; + arrToVar(length_light_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_light_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_light_name-1]=0; + this->light_name = (char *)(inbuffer + offset-1); + offset += length_light_name; + return offset; + } + + const char * getType(){ return GETLIGHTPROPERTIES; }; + const char * getMD5(){ return "4fb676dfb4741fc866365702a859441c"; }; + + }; + + class GetLightPropertiesResponse : public ros::Msg + { + public: + typedef std_msgs::ColorRGBA _diffuse_type; + _diffuse_type diffuse; + typedef double _attenuation_constant_type; + _attenuation_constant_type attenuation_constant; + typedef double _attenuation_linear_type; + _attenuation_linear_type attenuation_linear; + typedef double _attenuation_quadratic_type; + _attenuation_quadratic_type attenuation_quadratic; + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + GetLightPropertiesResponse(): + diffuse(), + attenuation_constant(0), + attenuation_linear(0), + attenuation_quadratic(0), + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->diffuse.serialize(outbuffer + offset); + union { + double real; + uint64_t base; + } u_attenuation_constant; + u_attenuation_constant.real = this->attenuation_constant; + *(outbuffer + offset + 0) = (u_attenuation_constant.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_attenuation_constant.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_attenuation_constant.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_attenuation_constant.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_attenuation_constant.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_attenuation_constant.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_attenuation_constant.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_attenuation_constant.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->attenuation_constant); + union { + double real; + uint64_t base; + } u_attenuation_linear; + u_attenuation_linear.real = this->attenuation_linear; + *(outbuffer + offset + 0) = (u_attenuation_linear.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_attenuation_linear.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_attenuation_linear.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_attenuation_linear.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_attenuation_linear.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_attenuation_linear.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_attenuation_linear.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_attenuation_linear.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->attenuation_linear); + union { + double real; + uint64_t base; + } u_attenuation_quadratic; + u_attenuation_quadratic.real = this->attenuation_quadratic; + *(outbuffer + offset + 0) = (u_attenuation_quadratic.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_attenuation_quadratic.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_attenuation_quadratic.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_attenuation_quadratic.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_attenuation_quadratic.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_attenuation_quadratic.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_attenuation_quadratic.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_attenuation_quadratic.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->attenuation_quadratic); + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->diffuse.deserialize(inbuffer + offset); + union { + double real; + uint64_t base; + } u_attenuation_constant; + u_attenuation_constant.base = 0; + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->attenuation_constant = u_attenuation_constant.real; + offset += sizeof(this->attenuation_constant); + union { + double real; + uint64_t base; + } u_attenuation_linear; + u_attenuation_linear.base = 0; + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->attenuation_linear = u_attenuation_linear.real; + offset += sizeof(this->attenuation_linear); + union { + double real; + uint64_t base; + } u_attenuation_quadratic; + u_attenuation_quadratic.base = 0; + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->attenuation_quadratic = u_attenuation_quadratic.real; + offset += sizeof(this->attenuation_quadratic); + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return GETLIGHTPROPERTIES; }; + const char * getMD5(){ return "9a19ddd5aab4c13b7643d1722c709f1f"; }; + + }; + + class GetLightProperties { + public: + typedef GetLightPropertiesRequest Request; + typedef GetLightPropertiesResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetLinkProperties.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetLinkProperties.h new file mode 100644 index 0000000..0d4173f --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetLinkProperties.h @@ -0,0 +1,370 @@ +#ifndef _ROS_SERVICE_GetLinkProperties_h +#define _ROS_SERVICE_GetLinkProperties_h +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Pose.h" + +namespace gazebo_msgs +{ + +static const char GETLINKPROPERTIES[] = "gazebo_msgs/GetLinkProperties"; + + class GetLinkPropertiesRequest : public ros::Msg + { + public: + typedef const char* _link_name_type; + _link_name_type link_name; + + GetLinkPropertiesRequest(): + link_name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_link_name = strlen(this->link_name); + varToArr(outbuffer + offset, length_link_name); + offset += 4; + memcpy(outbuffer + offset, this->link_name, length_link_name); + offset += length_link_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_link_name; + arrToVar(length_link_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_link_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_link_name-1]=0; + this->link_name = (char *)(inbuffer + offset-1); + offset += length_link_name; + return offset; + } + + const char * getType(){ return GETLINKPROPERTIES; }; + const char * getMD5(){ return "7d82d60381f1b66a30f2157f60884345"; }; + + }; + + class GetLinkPropertiesResponse : public ros::Msg + { + public: + typedef geometry_msgs::Pose _com_type; + _com_type com; + typedef bool _gravity_mode_type; + _gravity_mode_type gravity_mode; + typedef double _mass_type; + _mass_type mass; + typedef double _ixx_type; + _ixx_type ixx; + typedef double _ixy_type; + _ixy_type ixy; + typedef double _ixz_type; + _ixz_type ixz; + typedef double _iyy_type; + _iyy_type iyy; + typedef double _iyz_type; + _iyz_type iyz; + typedef double _izz_type; + _izz_type izz; + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + GetLinkPropertiesResponse(): + com(), + gravity_mode(0), + mass(0), + ixx(0), + ixy(0), + ixz(0), + iyy(0), + iyz(0), + izz(0), + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->com.serialize(outbuffer + offset); + union { + bool real; + uint8_t base; + } u_gravity_mode; + u_gravity_mode.real = this->gravity_mode; + *(outbuffer + offset + 0) = (u_gravity_mode.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->gravity_mode); + union { + double real; + uint64_t base; + } u_mass; + u_mass.real = this->mass; + *(outbuffer + offset + 0) = (u_mass.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_mass.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_mass.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_mass.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_mass.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_mass.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_mass.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_mass.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->mass); + union { + double real; + uint64_t base; + } u_ixx; + u_ixx.real = this->ixx; + *(outbuffer + offset + 0) = (u_ixx.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_ixx.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_ixx.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_ixx.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_ixx.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_ixx.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_ixx.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_ixx.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->ixx); + union { + double real; + uint64_t base; + } u_ixy; + u_ixy.real = this->ixy; + *(outbuffer + offset + 0) = (u_ixy.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_ixy.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_ixy.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_ixy.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_ixy.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_ixy.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_ixy.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_ixy.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->ixy); + union { + double real; + uint64_t base; + } u_ixz; + u_ixz.real = this->ixz; + *(outbuffer + offset + 0) = (u_ixz.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_ixz.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_ixz.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_ixz.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_ixz.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_ixz.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_ixz.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_ixz.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->ixz); + union { + double real; + uint64_t base; + } u_iyy; + u_iyy.real = this->iyy; + *(outbuffer + offset + 0) = (u_iyy.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_iyy.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_iyy.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_iyy.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_iyy.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_iyy.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_iyy.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_iyy.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->iyy); + union { + double real; + uint64_t base; + } u_iyz; + u_iyz.real = this->iyz; + *(outbuffer + offset + 0) = (u_iyz.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_iyz.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_iyz.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_iyz.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_iyz.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_iyz.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_iyz.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_iyz.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->iyz); + union { + double real; + uint64_t base; + } u_izz; + u_izz.real = this->izz; + *(outbuffer + offset + 0) = (u_izz.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_izz.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_izz.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_izz.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_izz.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_izz.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_izz.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_izz.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->izz); + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->com.deserialize(inbuffer + offset); + union { + bool real; + uint8_t base; + } u_gravity_mode; + u_gravity_mode.base = 0; + u_gravity_mode.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->gravity_mode = u_gravity_mode.real; + offset += sizeof(this->gravity_mode); + union { + double real; + uint64_t base; + } u_mass; + u_mass.base = 0; + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->mass = u_mass.real; + offset += sizeof(this->mass); + union { + double real; + uint64_t base; + } u_ixx; + u_ixx.base = 0; + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->ixx = u_ixx.real; + offset += sizeof(this->ixx); + union { + double real; + uint64_t base; + } u_ixy; + u_ixy.base = 0; + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->ixy = u_ixy.real; + offset += sizeof(this->ixy); + union { + double real; + uint64_t base; + } u_ixz; + u_ixz.base = 0; + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->ixz = u_ixz.real; + offset += sizeof(this->ixz); + union { + double real; + uint64_t base; + } u_iyy; + u_iyy.base = 0; + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->iyy = u_iyy.real; + offset += sizeof(this->iyy); + union { + double real; + uint64_t base; + } u_iyz; + u_iyz.base = 0; + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->iyz = u_iyz.real; + offset += sizeof(this->iyz); + union { + double real; + uint64_t base; + } u_izz; + u_izz.base = 0; + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->izz = u_izz.real; + offset += sizeof(this->izz); + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return GETLINKPROPERTIES; }; + const char * getMD5(){ return "a8619f92d17cfcc3958c0fd13299443d"; }; + + }; + + class GetLinkProperties { + public: + typedef GetLinkPropertiesRequest Request; + typedef GetLinkPropertiesResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetLinkState.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetLinkState.h new file mode 100644 index 0000000..5e20764 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetLinkState.h @@ -0,0 +1,145 @@ +#ifndef _ROS_SERVICE_GetLinkState_h +#define _ROS_SERVICE_GetLinkState_h +#include +#include +#include +#include "ros/msg.h" +#include "gazebo_msgs/LinkState.h" + +namespace gazebo_msgs +{ + +static const char GETLINKSTATE[] = "gazebo_msgs/GetLinkState"; + + class GetLinkStateRequest : public ros::Msg + { + public: + typedef const char* _link_name_type; + _link_name_type link_name; + typedef const char* _reference_frame_type; + _reference_frame_type reference_frame; + + GetLinkStateRequest(): + link_name(""), + reference_frame("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_link_name = strlen(this->link_name); + varToArr(outbuffer + offset, length_link_name); + offset += 4; + memcpy(outbuffer + offset, this->link_name, length_link_name); + offset += length_link_name; + uint32_t length_reference_frame = strlen(this->reference_frame); + varToArr(outbuffer + offset, length_reference_frame); + offset += 4; + memcpy(outbuffer + offset, this->reference_frame, length_reference_frame); + offset += length_reference_frame; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_link_name; + arrToVar(length_link_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_link_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_link_name-1]=0; + this->link_name = (char *)(inbuffer + offset-1); + offset += length_link_name; + uint32_t length_reference_frame; + arrToVar(length_reference_frame, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_reference_frame; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_reference_frame-1]=0; + this->reference_frame = (char *)(inbuffer + offset-1); + offset += length_reference_frame; + return offset; + } + + const char * getType(){ return GETLINKSTATE; }; + const char * getMD5(){ return "7551675c30aaa71f7c288d4864552001"; }; + + }; + + class GetLinkStateResponse : public ros::Msg + { + public: + typedef gazebo_msgs::LinkState _link_state_type; + _link_state_type link_state; + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + GetLinkStateResponse(): + link_state(), + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->link_state.serialize(outbuffer + offset); + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->link_state.deserialize(inbuffer + offset); + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return GETLINKSTATE; }; + const char * getMD5(){ return "8ba55ad34f9c072e75c0de57b089753b"; }; + + }; + + class GetLinkState { + public: + typedef GetLinkStateRequest Request; + typedef GetLinkStateResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetModelProperties.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetModelProperties.h new file mode 100644 index 0000000..082e688 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetModelProperties.h @@ -0,0 +1,322 @@ +#ifndef _ROS_SERVICE_GetModelProperties_h +#define _ROS_SERVICE_GetModelProperties_h +#include +#include +#include +#include "ros/msg.h" + +namespace gazebo_msgs +{ + +static const char GETMODELPROPERTIES[] = "gazebo_msgs/GetModelProperties"; + + class GetModelPropertiesRequest : public ros::Msg + { + public: + typedef const char* _model_name_type; + _model_name_type model_name; + + GetModelPropertiesRequest(): + model_name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_model_name = strlen(this->model_name); + varToArr(outbuffer + offset, length_model_name); + offset += 4; + memcpy(outbuffer + offset, this->model_name, length_model_name); + offset += length_model_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_model_name; + arrToVar(length_model_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_model_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_model_name-1]=0; + this->model_name = (char *)(inbuffer + offset-1); + offset += length_model_name; + return offset; + } + + const char * getType(){ return GETMODELPROPERTIES; }; + const char * getMD5(){ return "ea31c8eab6fc401383cf528a7c0984ba"; }; + + }; + + class GetModelPropertiesResponse : public ros::Msg + { + public: + typedef const char* _parent_model_name_type; + _parent_model_name_type parent_model_name; + typedef const char* _canonical_body_name_type; + _canonical_body_name_type canonical_body_name; + uint32_t body_names_length; + typedef char* _body_names_type; + _body_names_type st_body_names; + _body_names_type * body_names; + uint32_t geom_names_length; + typedef char* _geom_names_type; + _geom_names_type st_geom_names; + _geom_names_type * geom_names; + uint32_t joint_names_length; + typedef char* _joint_names_type; + _joint_names_type st_joint_names; + _joint_names_type * joint_names; + uint32_t child_model_names_length; + typedef char* _child_model_names_type; + _child_model_names_type st_child_model_names; + _child_model_names_type * child_model_names; + typedef bool _is_static_type; + _is_static_type is_static; + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + GetModelPropertiesResponse(): + parent_model_name(""), + canonical_body_name(""), + body_names_length(0), body_names(NULL), + geom_names_length(0), geom_names(NULL), + joint_names_length(0), joint_names(NULL), + child_model_names_length(0), child_model_names(NULL), + is_static(0), + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_parent_model_name = strlen(this->parent_model_name); + varToArr(outbuffer + offset, length_parent_model_name); + offset += 4; + memcpy(outbuffer + offset, this->parent_model_name, length_parent_model_name); + offset += length_parent_model_name; + uint32_t length_canonical_body_name = strlen(this->canonical_body_name); + varToArr(outbuffer + offset, length_canonical_body_name); + offset += 4; + memcpy(outbuffer + offset, this->canonical_body_name, length_canonical_body_name); + offset += length_canonical_body_name; + *(outbuffer + offset + 0) = (this->body_names_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->body_names_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->body_names_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->body_names_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->body_names_length); + for( uint32_t i = 0; i < body_names_length; i++){ + uint32_t length_body_namesi = strlen(this->body_names[i]); + varToArr(outbuffer + offset, length_body_namesi); + offset += 4; + memcpy(outbuffer + offset, this->body_names[i], length_body_namesi); + offset += length_body_namesi; + } + *(outbuffer + offset + 0) = (this->geom_names_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->geom_names_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->geom_names_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->geom_names_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->geom_names_length); + for( uint32_t i = 0; i < geom_names_length; i++){ + uint32_t length_geom_namesi = strlen(this->geom_names[i]); + varToArr(outbuffer + offset, length_geom_namesi); + offset += 4; + memcpy(outbuffer + offset, this->geom_names[i], length_geom_namesi); + offset += length_geom_namesi; + } + *(outbuffer + offset + 0) = (this->joint_names_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->joint_names_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->joint_names_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->joint_names_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->joint_names_length); + for( uint32_t i = 0; i < joint_names_length; i++){ + uint32_t length_joint_namesi = strlen(this->joint_names[i]); + varToArr(outbuffer + offset, length_joint_namesi); + offset += 4; + memcpy(outbuffer + offset, this->joint_names[i], length_joint_namesi); + offset += length_joint_namesi; + } + *(outbuffer + offset + 0) = (this->child_model_names_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->child_model_names_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->child_model_names_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->child_model_names_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->child_model_names_length); + for( uint32_t i = 0; i < child_model_names_length; i++){ + uint32_t length_child_model_namesi = strlen(this->child_model_names[i]); + varToArr(outbuffer + offset, length_child_model_namesi); + offset += 4; + memcpy(outbuffer + offset, this->child_model_names[i], length_child_model_namesi); + offset += length_child_model_namesi; + } + union { + bool real; + uint8_t base; + } u_is_static; + u_is_static.real = this->is_static; + *(outbuffer + offset + 0) = (u_is_static.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->is_static); + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_parent_model_name; + arrToVar(length_parent_model_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_parent_model_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_parent_model_name-1]=0; + this->parent_model_name = (char *)(inbuffer + offset-1); + offset += length_parent_model_name; + uint32_t length_canonical_body_name; + arrToVar(length_canonical_body_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_canonical_body_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_canonical_body_name-1]=0; + this->canonical_body_name = (char *)(inbuffer + offset-1); + offset += length_canonical_body_name; + uint32_t body_names_lengthT = ((uint32_t) (*(inbuffer + offset))); + body_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + body_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + body_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->body_names_length); + if(body_names_lengthT > body_names_length) + this->body_names = (char**)realloc(this->body_names, body_names_lengthT * sizeof(char*)); + body_names_length = body_names_lengthT; + for( uint32_t i = 0; i < body_names_length; i++){ + uint32_t length_st_body_names; + arrToVar(length_st_body_names, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_body_names; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_body_names-1]=0; + this->st_body_names = (char *)(inbuffer + offset-1); + offset += length_st_body_names; + memcpy( &(this->body_names[i]), &(this->st_body_names), sizeof(char*)); + } + uint32_t geom_names_lengthT = ((uint32_t) (*(inbuffer + offset))); + geom_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + geom_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + geom_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->geom_names_length); + if(geom_names_lengthT > geom_names_length) + this->geom_names = (char**)realloc(this->geom_names, geom_names_lengthT * sizeof(char*)); + geom_names_length = geom_names_lengthT; + for( uint32_t i = 0; i < geom_names_length; i++){ + uint32_t length_st_geom_names; + arrToVar(length_st_geom_names, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_geom_names; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_geom_names-1]=0; + this->st_geom_names = (char *)(inbuffer + offset-1); + offset += length_st_geom_names; + memcpy( &(this->geom_names[i]), &(this->st_geom_names), sizeof(char*)); + } + uint32_t joint_names_lengthT = ((uint32_t) (*(inbuffer + offset))); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->joint_names_length); + if(joint_names_lengthT > joint_names_length) + this->joint_names = (char**)realloc(this->joint_names, joint_names_lengthT * sizeof(char*)); + joint_names_length = joint_names_lengthT; + for( uint32_t i = 0; i < joint_names_length; i++){ + uint32_t length_st_joint_names; + arrToVar(length_st_joint_names, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_joint_names; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_joint_names-1]=0; + this->st_joint_names = (char *)(inbuffer + offset-1); + offset += length_st_joint_names; + memcpy( &(this->joint_names[i]), &(this->st_joint_names), sizeof(char*)); + } + uint32_t child_model_names_lengthT = ((uint32_t) (*(inbuffer + offset))); + child_model_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + child_model_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + child_model_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->child_model_names_length); + if(child_model_names_lengthT > child_model_names_length) + this->child_model_names = (char**)realloc(this->child_model_names, child_model_names_lengthT * sizeof(char*)); + child_model_names_length = child_model_names_lengthT; + for( uint32_t i = 0; i < child_model_names_length; i++){ + uint32_t length_st_child_model_names; + arrToVar(length_st_child_model_names, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_child_model_names; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_child_model_names-1]=0; + this->st_child_model_names = (char *)(inbuffer + offset-1); + offset += length_st_child_model_names; + memcpy( &(this->child_model_names[i]), &(this->st_child_model_names), sizeof(char*)); + } + union { + bool real; + uint8_t base; + } u_is_static; + u_is_static.base = 0; + u_is_static.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->is_static = u_is_static.real; + offset += sizeof(this->is_static); + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return GETMODELPROPERTIES; }; + const char * getMD5(){ return "b7f370938ef77b464b95f1bab3ec5028"; }; + + }; + + class GetModelProperties { + public: + typedef GetModelPropertiesRequest Request; + typedef GetModelPropertiesResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetModelState.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetModelState.h new file mode 100644 index 0000000..0dbcc81 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetModelState.h @@ -0,0 +1,157 @@ +#ifndef _ROS_SERVICE_GetModelState_h +#define _ROS_SERVICE_GetModelState_h +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Pose.h" +#include "geometry_msgs/Twist.h" +#include "std_msgs/Header.h" + +namespace gazebo_msgs +{ + +static const char GETMODELSTATE[] = "gazebo_msgs/GetModelState"; + + class GetModelStateRequest : public ros::Msg + { + public: + typedef const char* _model_name_type; + _model_name_type model_name; + typedef const char* _relative_entity_name_type; + _relative_entity_name_type relative_entity_name; + + GetModelStateRequest(): + model_name(""), + relative_entity_name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_model_name = strlen(this->model_name); + varToArr(outbuffer + offset, length_model_name); + offset += 4; + memcpy(outbuffer + offset, this->model_name, length_model_name); + offset += length_model_name; + uint32_t length_relative_entity_name = strlen(this->relative_entity_name); + varToArr(outbuffer + offset, length_relative_entity_name); + offset += 4; + memcpy(outbuffer + offset, this->relative_entity_name, length_relative_entity_name); + offset += length_relative_entity_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_model_name; + arrToVar(length_model_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_model_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_model_name-1]=0; + this->model_name = (char *)(inbuffer + offset-1); + offset += length_model_name; + uint32_t length_relative_entity_name; + arrToVar(length_relative_entity_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_relative_entity_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_relative_entity_name-1]=0; + this->relative_entity_name = (char *)(inbuffer + offset-1); + offset += length_relative_entity_name; + return offset; + } + + const char * getType(){ return GETMODELSTATE; }; + const char * getMD5(){ return "19d412713cefe4a67437e17a951e759e"; }; + + }; + + class GetModelStateResponse : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::Pose _pose_type; + _pose_type pose; + typedef geometry_msgs::Twist _twist_type; + _twist_type twist; + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + GetModelStateResponse(): + header(), + pose(), + twist(), + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->pose.serialize(outbuffer + offset); + offset += this->twist.serialize(outbuffer + offset); + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->pose.deserialize(inbuffer + offset); + offset += this->twist.deserialize(inbuffer + offset); + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return GETMODELSTATE; }; + const char * getMD5(){ return "ccd51739bb00f0141629e87b792e92b9"; }; + + }; + + class GetModelState { + public: + typedef GetModelStateRequest Request; + typedef GetModelStateResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetPhysicsProperties.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetPhysicsProperties.h new file mode 100644 index 0000000..f79bc89 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetPhysicsProperties.h @@ -0,0 +1,199 @@ +#ifndef _ROS_SERVICE_GetPhysicsProperties_h +#define _ROS_SERVICE_GetPhysicsProperties_h +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Vector3.h" +#include "gazebo_msgs/ODEPhysics.h" + +namespace gazebo_msgs +{ + +static const char GETPHYSICSPROPERTIES[] = "gazebo_msgs/GetPhysicsProperties"; + + class GetPhysicsPropertiesRequest : public ros::Msg + { + public: + + GetPhysicsPropertiesRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return GETPHYSICSPROPERTIES; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class GetPhysicsPropertiesResponse : public ros::Msg + { + public: + typedef double _time_step_type; + _time_step_type time_step; + typedef bool _pause_type; + _pause_type pause; + typedef double _max_update_rate_type; + _max_update_rate_type max_update_rate; + typedef geometry_msgs::Vector3 _gravity_type; + _gravity_type gravity; + typedef gazebo_msgs::ODEPhysics _ode_config_type; + _ode_config_type ode_config; + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + GetPhysicsPropertiesResponse(): + time_step(0), + pause(0), + max_update_rate(0), + gravity(), + ode_config(), + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_time_step; + u_time_step.real = this->time_step; + *(outbuffer + offset + 0) = (u_time_step.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_time_step.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_time_step.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_time_step.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_time_step.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_time_step.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_time_step.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_time_step.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->time_step); + union { + bool real; + uint8_t base; + } u_pause; + u_pause.real = this->pause; + *(outbuffer + offset + 0) = (u_pause.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->pause); + union { + double real; + uint64_t base; + } u_max_update_rate; + u_max_update_rate.real = this->max_update_rate; + *(outbuffer + offset + 0) = (u_max_update_rate.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_max_update_rate.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_max_update_rate.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_max_update_rate.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_max_update_rate.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_max_update_rate.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_max_update_rate.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_max_update_rate.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->max_update_rate); + offset += this->gravity.serialize(outbuffer + offset); + offset += this->ode_config.serialize(outbuffer + offset); + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_time_step; + u_time_step.base = 0; + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->time_step = u_time_step.real; + offset += sizeof(this->time_step); + union { + bool real; + uint8_t base; + } u_pause; + u_pause.base = 0; + u_pause.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->pause = u_pause.real; + offset += sizeof(this->pause); + union { + double real; + uint64_t base; + } u_max_update_rate; + u_max_update_rate.base = 0; + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->max_update_rate = u_max_update_rate.real; + offset += sizeof(this->max_update_rate); + offset += this->gravity.deserialize(inbuffer + offset); + offset += this->ode_config.deserialize(inbuffer + offset); + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return GETPHYSICSPROPERTIES; }; + const char * getMD5(){ return "575a5e74786981b7df2e3afc567693a6"; }; + + }; + + class GetPhysicsProperties { + public: + typedef GetPhysicsPropertiesRequest Request; + typedef GetPhysicsPropertiesResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetWorldProperties.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetWorldProperties.h new file mode 100644 index 0000000..e9170e7 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetWorldProperties.h @@ -0,0 +1,192 @@ +#ifndef _ROS_SERVICE_GetWorldProperties_h +#define _ROS_SERVICE_GetWorldProperties_h +#include +#include +#include +#include "ros/msg.h" + +namespace gazebo_msgs +{ + +static const char GETWORLDPROPERTIES[] = "gazebo_msgs/GetWorldProperties"; + + class GetWorldPropertiesRequest : public ros::Msg + { + public: + + GetWorldPropertiesRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return GETWORLDPROPERTIES; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class GetWorldPropertiesResponse : public ros::Msg + { + public: + typedef double _sim_time_type; + _sim_time_type sim_time; + uint32_t model_names_length; + typedef char* _model_names_type; + _model_names_type st_model_names; + _model_names_type * model_names; + typedef bool _rendering_enabled_type; + _rendering_enabled_type rendering_enabled; + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + GetWorldPropertiesResponse(): + sim_time(0), + model_names_length(0), model_names(NULL), + rendering_enabled(0), + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_sim_time; + u_sim_time.real = this->sim_time; + *(outbuffer + offset + 0) = (u_sim_time.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_sim_time.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_sim_time.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_sim_time.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_sim_time.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_sim_time.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_sim_time.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_sim_time.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->sim_time); + *(outbuffer + offset + 0) = (this->model_names_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->model_names_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->model_names_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->model_names_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->model_names_length); + for( uint32_t i = 0; i < model_names_length; i++){ + uint32_t length_model_namesi = strlen(this->model_names[i]); + varToArr(outbuffer + offset, length_model_namesi); + offset += 4; + memcpy(outbuffer + offset, this->model_names[i], length_model_namesi); + offset += length_model_namesi; + } + union { + bool real; + uint8_t base; + } u_rendering_enabled; + u_rendering_enabled.real = this->rendering_enabled; + *(outbuffer + offset + 0) = (u_rendering_enabled.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->rendering_enabled); + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_sim_time; + u_sim_time.base = 0; + u_sim_time.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_sim_time.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_sim_time.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_sim_time.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_sim_time.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_sim_time.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_sim_time.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_sim_time.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->sim_time = u_sim_time.real; + offset += sizeof(this->sim_time); + uint32_t model_names_lengthT = ((uint32_t) (*(inbuffer + offset))); + model_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + model_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + model_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->model_names_length); + if(model_names_lengthT > model_names_length) + this->model_names = (char**)realloc(this->model_names, model_names_lengthT * sizeof(char*)); + model_names_length = model_names_lengthT; + for( uint32_t i = 0; i < model_names_length; i++){ + uint32_t length_st_model_names; + arrToVar(length_st_model_names, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_model_names; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_model_names-1]=0; + this->st_model_names = (char *)(inbuffer + offset-1); + offset += length_st_model_names; + memcpy( &(this->model_names[i]), &(this->st_model_names), sizeof(char*)); + } + union { + bool real; + uint8_t base; + } u_rendering_enabled; + u_rendering_enabled.base = 0; + u_rendering_enabled.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->rendering_enabled = u_rendering_enabled.real; + offset += sizeof(this->rendering_enabled); + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return GETWORLDPROPERTIES; }; + const char * getMD5(){ return "36bb0f2eccf4d8be971410c22818ba3f"; }; + + }; + + class GetWorldProperties { + public: + typedef GetWorldPropertiesRequest Request; + typedef GetWorldPropertiesResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/JointRequest.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/JointRequest.h new file mode 100644 index 0000000..6c2c13e --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/JointRequest.h @@ -0,0 +1,87 @@ +#ifndef _ROS_SERVICE_JointRequest_h +#define _ROS_SERVICE_JointRequest_h +#include +#include +#include +#include "ros/msg.h" + +namespace gazebo_msgs +{ + +static const char JOINTREQUEST[] = "gazebo_msgs/JointRequest"; + + class JointRequestRequest : public ros::Msg + { + public: + typedef const char* _joint_name_type; + _joint_name_type joint_name; + + JointRequestRequest(): + joint_name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_joint_name = strlen(this->joint_name); + varToArr(outbuffer + offset, length_joint_name); + offset += 4; + memcpy(outbuffer + offset, this->joint_name, length_joint_name); + offset += length_joint_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_joint_name; + arrToVar(length_joint_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_joint_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_joint_name-1]=0; + this->joint_name = (char *)(inbuffer + offset-1); + offset += length_joint_name; + return offset; + } + + const char * getType(){ return JOINTREQUEST; }; + const char * getMD5(){ return "0be1351618e1dc030eb7959d9a4902de"; }; + + }; + + class JointRequestResponse : public ros::Msg + { + public: + + JointRequestResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return JOINTREQUEST; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class JointRequest { + public: + typedef JointRequestRequest Request; + typedef JointRequestResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/LinkState.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/LinkState.h new file mode 100644 index 0000000..cd2684b --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/LinkState.h @@ -0,0 +1,84 @@ +#ifndef _ROS_gazebo_msgs_LinkState_h +#define _ROS_gazebo_msgs_LinkState_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Pose.h" +#include "geometry_msgs/Twist.h" + +namespace gazebo_msgs +{ + + class LinkState : public ros::Msg + { + public: + typedef const char* _link_name_type; + _link_name_type link_name; + typedef geometry_msgs::Pose _pose_type; + _pose_type pose; + typedef geometry_msgs::Twist _twist_type; + _twist_type twist; + typedef const char* _reference_frame_type; + _reference_frame_type reference_frame; + + LinkState(): + link_name(""), + pose(), + twist(), + reference_frame("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_link_name = strlen(this->link_name); + varToArr(outbuffer + offset, length_link_name); + offset += 4; + memcpy(outbuffer + offset, this->link_name, length_link_name); + offset += length_link_name; + offset += this->pose.serialize(outbuffer + offset); + offset += this->twist.serialize(outbuffer + offset); + uint32_t length_reference_frame = strlen(this->reference_frame); + varToArr(outbuffer + offset, length_reference_frame); + offset += 4; + memcpy(outbuffer + offset, this->reference_frame, length_reference_frame); + offset += length_reference_frame; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_link_name; + arrToVar(length_link_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_link_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_link_name-1]=0; + this->link_name = (char *)(inbuffer + offset-1); + offset += length_link_name; + offset += this->pose.deserialize(inbuffer + offset); + offset += this->twist.deserialize(inbuffer + offset); + uint32_t length_reference_frame; + arrToVar(length_reference_frame, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_reference_frame; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_reference_frame-1]=0; + this->reference_frame = (char *)(inbuffer + offset-1); + offset += length_reference_frame; + return offset; + } + + const char * getType(){ return "gazebo_msgs/LinkState"; }; + const char * getMD5(){ return "0818ebbf28ce3a08d48ab1eaa7309ebe"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/LinkStates.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/LinkStates.h new file mode 100644 index 0000000..8ec738d --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/LinkStates.h @@ -0,0 +1,127 @@ +#ifndef _ROS_gazebo_msgs_LinkStates_h +#define _ROS_gazebo_msgs_LinkStates_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Pose.h" +#include "geometry_msgs/Twist.h" + +namespace gazebo_msgs +{ + + class LinkStates : public ros::Msg + { + public: + uint32_t name_length; + typedef char* _name_type; + _name_type st_name; + _name_type * name; + uint32_t pose_length; + typedef geometry_msgs::Pose _pose_type; + _pose_type st_pose; + _pose_type * pose; + uint32_t twist_length; + typedef geometry_msgs::Twist _twist_type; + _twist_type st_twist; + _twist_type * twist; + + LinkStates(): + name_length(0), name(NULL), + pose_length(0), pose(NULL), + twist_length(0), twist(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->name_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->name_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->name_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->name_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->name_length); + for( uint32_t i = 0; i < name_length; i++){ + uint32_t length_namei = strlen(this->name[i]); + varToArr(outbuffer + offset, length_namei); + offset += 4; + memcpy(outbuffer + offset, this->name[i], length_namei); + offset += length_namei; + } + *(outbuffer + offset + 0) = (this->pose_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->pose_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->pose_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->pose_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->pose_length); + for( uint32_t i = 0; i < pose_length; i++){ + offset += this->pose[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->twist_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->twist_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->twist_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->twist_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->twist_length); + for( uint32_t i = 0; i < twist_length; i++){ + offset += this->twist[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t name_lengthT = ((uint32_t) (*(inbuffer + offset))); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->name_length); + if(name_lengthT > name_length) + this->name = (char**)realloc(this->name, name_lengthT * sizeof(char*)); + name_length = name_lengthT; + for( uint32_t i = 0; i < name_length; i++){ + uint32_t length_st_name; + arrToVar(length_st_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_name-1]=0; + this->st_name = (char *)(inbuffer + offset-1); + offset += length_st_name; + memcpy( &(this->name[i]), &(this->st_name), sizeof(char*)); + } + uint32_t pose_lengthT = ((uint32_t) (*(inbuffer + offset))); + pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->pose_length); + if(pose_lengthT > pose_length) + this->pose = (geometry_msgs::Pose*)realloc(this->pose, pose_lengthT * sizeof(geometry_msgs::Pose)); + pose_length = pose_lengthT; + for( uint32_t i = 0; i < pose_length; i++){ + offset += this->st_pose.deserialize(inbuffer + offset); + memcpy( &(this->pose[i]), &(this->st_pose), sizeof(geometry_msgs::Pose)); + } + uint32_t twist_lengthT = ((uint32_t) (*(inbuffer + offset))); + twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->twist_length); + if(twist_lengthT > twist_length) + this->twist = (geometry_msgs::Twist*)realloc(this->twist, twist_lengthT * sizeof(geometry_msgs::Twist)); + twist_length = twist_lengthT; + for( uint32_t i = 0; i < twist_length; i++){ + offset += this->st_twist.deserialize(inbuffer + offset); + memcpy( &(this->twist[i]), &(this->st_twist), sizeof(geometry_msgs::Twist)); + } + return offset; + } + + const char * getType(){ return "gazebo_msgs/LinkStates"; }; + const char * getMD5(){ return "48c080191eb15c41858319b4d8a609c2"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/ModelState.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/ModelState.h new file mode 100644 index 0000000..4a3cfd1 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/ModelState.h @@ -0,0 +1,84 @@ +#ifndef _ROS_gazebo_msgs_ModelState_h +#define _ROS_gazebo_msgs_ModelState_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Pose.h" +#include "geometry_msgs/Twist.h" + +namespace gazebo_msgs +{ + + class ModelState : public ros::Msg + { + public: + typedef const char* _model_name_type; + _model_name_type model_name; + typedef geometry_msgs::Pose _pose_type; + _pose_type pose; + typedef geometry_msgs::Twist _twist_type; + _twist_type twist; + typedef const char* _reference_frame_type; + _reference_frame_type reference_frame; + + ModelState(): + model_name(""), + pose(), + twist(), + reference_frame("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_model_name = strlen(this->model_name); + varToArr(outbuffer + offset, length_model_name); + offset += 4; + memcpy(outbuffer + offset, this->model_name, length_model_name); + offset += length_model_name; + offset += this->pose.serialize(outbuffer + offset); + offset += this->twist.serialize(outbuffer + offset); + uint32_t length_reference_frame = strlen(this->reference_frame); + varToArr(outbuffer + offset, length_reference_frame); + offset += 4; + memcpy(outbuffer + offset, this->reference_frame, length_reference_frame); + offset += length_reference_frame; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_model_name; + arrToVar(length_model_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_model_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_model_name-1]=0; + this->model_name = (char *)(inbuffer + offset-1); + offset += length_model_name; + offset += this->pose.deserialize(inbuffer + offset); + offset += this->twist.deserialize(inbuffer + offset); + uint32_t length_reference_frame; + arrToVar(length_reference_frame, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_reference_frame; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_reference_frame-1]=0; + this->reference_frame = (char *)(inbuffer + offset-1); + offset += length_reference_frame; + return offset; + } + + const char * getType(){ return "gazebo_msgs/ModelState"; }; + const char * getMD5(){ return "9330fd35f2fcd82d457e54bd54e10593"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/ModelStates.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/ModelStates.h new file mode 100644 index 0000000..f6c66d5 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/ModelStates.h @@ -0,0 +1,127 @@ +#ifndef _ROS_gazebo_msgs_ModelStates_h +#define _ROS_gazebo_msgs_ModelStates_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Pose.h" +#include "geometry_msgs/Twist.h" + +namespace gazebo_msgs +{ + + class ModelStates : public ros::Msg + { + public: + uint32_t name_length; + typedef char* _name_type; + _name_type st_name; + _name_type * name; + uint32_t pose_length; + typedef geometry_msgs::Pose _pose_type; + _pose_type st_pose; + _pose_type * pose; + uint32_t twist_length; + typedef geometry_msgs::Twist _twist_type; + _twist_type st_twist; + _twist_type * twist; + + ModelStates(): + name_length(0), name(NULL), + pose_length(0), pose(NULL), + twist_length(0), twist(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->name_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->name_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->name_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->name_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->name_length); + for( uint32_t i = 0; i < name_length; i++){ + uint32_t length_namei = strlen(this->name[i]); + varToArr(outbuffer + offset, length_namei); + offset += 4; + memcpy(outbuffer + offset, this->name[i], length_namei); + offset += length_namei; + } + *(outbuffer + offset + 0) = (this->pose_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->pose_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->pose_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->pose_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->pose_length); + for( uint32_t i = 0; i < pose_length; i++){ + offset += this->pose[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->twist_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->twist_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->twist_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->twist_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->twist_length); + for( uint32_t i = 0; i < twist_length; i++){ + offset += this->twist[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t name_lengthT = ((uint32_t) (*(inbuffer + offset))); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->name_length); + if(name_lengthT > name_length) + this->name = (char**)realloc(this->name, name_lengthT * sizeof(char*)); + name_length = name_lengthT; + for( uint32_t i = 0; i < name_length; i++){ + uint32_t length_st_name; + arrToVar(length_st_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_name-1]=0; + this->st_name = (char *)(inbuffer + offset-1); + offset += length_st_name; + memcpy( &(this->name[i]), &(this->st_name), sizeof(char*)); + } + uint32_t pose_lengthT = ((uint32_t) (*(inbuffer + offset))); + pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->pose_length); + if(pose_lengthT > pose_length) + this->pose = (geometry_msgs::Pose*)realloc(this->pose, pose_lengthT * sizeof(geometry_msgs::Pose)); + pose_length = pose_lengthT; + for( uint32_t i = 0; i < pose_length; i++){ + offset += this->st_pose.deserialize(inbuffer + offset); + memcpy( &(this->pose[i]), &(this->st_pose), sizeof(geometry_msgs::Pose)); + } + uint32_t twist_lengthT = ((uint32_t) (*(inbuffer + offset))); + twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->twist_length); + if(twist_lengthT > twist_length) + this->twist = (geometry_msgs::Twist*)realloc(this->twist, twist_lengthT * sizeof(geometry_msgs::Twist)); + twist_length = twist_lengthT; + for( uint32_t i = 0; i < twist_length; i++){ + offset += this->st_twist.deserialize(inbuffer + offset); + memcpy( &(this->twist[i]), &(this->st_twist), sizeof(geometry_msgs::Twist)); + } + return offset; + } + + const char * getType(){ return "gazebo_msgs/ModelStates"; }; + const char * getMD5(){ return "48c080191eb15c41858319b4d8a609c2"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/ODEJointProperties.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/ODEJointProperties.h new file mode 100644 index 0000000..c3fba20 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/ODEJointProperties.h @@ -0,0 +1,558 @@ +#ifndef _ROS_gazebo_msgs_ODEJointProperties_h +#define _ROS_gazebo_msgs_ODEJointProperties_h + +#include +#include +#include +#include "ros/msg.h" + +namespace gazebo_msgs +{ + + class ODEJointProperties : public ros::Msg + { + public: + uint32_t damping_length; + typedef double _damping_type; + _damping_type st_damping; + _damping_type * damping; + uint32_t hiStop_length; + typedef double _hiStop_type; + _hiStop_type st_hiStop; + _hiStop_type * hiStop; + uint32_t loStop_length; + typedef double _loStop_type; + _loStop_type st_loStop; + _loStop_type * loStop; + uint32_t erp_length; + typedef double _erp_type; + _erp_type st_erp; + _erp_type * erp; + uint32_t cfm_length; + typedef double _cfm_type; + _cfm_type st_cfm; + _cfm_type * cfm; + uint32_t stop_erp_length; + typedef double _stop_erp_type; + _stop_erp_type st_stop_erp; + _stop_erp_type * stop_erp; + uint32_t stop_cfm_length; + typedef double _stop_cfm_type; + _stop_cfm_type st_stop_cfm; + _stop_cfm_type * stop_cfm; + uint32_t fudge_factor_length; + typedef double _fudge_factor_type; + _fudge_factor_type st_fudge_factor; + _fudge_factor_type * fudge_factor; + uint32_t fmax_length; + typedef double _fmax_type; + _fmax_type st_fmax; + _fmax_type * fmax; + uint32_t vel_length; + typedef double _vel_type; + _vel_type st_vel; + _vel_type * vel; + + ODEJointProperties(): + damping_length(0), damping(NULL), + hiStop_length(0), hiStop(NULL), + loStop_length(0), loStop(NULL), + erp_length(0), erp(NULL), + cfm_length(0), cfm(NULL), + stop_erp_length(0), stop_erp(NULL), + stop_cfm_length(0), stop_cfm(NULL), + fudge_factor_length(0), fudge_factor(NULL), + fmax_length(0), fmax(NULL), + vel_length(0), vel(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->damping_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->damping_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->damping_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->damping_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->damping_length); + for( uint32_t i = 0; i < damping_length; i++){ + union { + double real; + uint64_t base; + } u_dampingi; + u_dampingi.real = this->damping[i]; + *(outbuffer + offset + 0) = (u_dampingi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_dampingi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_dampingi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_dampingi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_dampingi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_dampingi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_dampingi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_dampingi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->damping[i]); + } + *(outbuffer + offset + 0) = (this->hiStop_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->hiStop_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->hiStop_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->hiStop_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->hiStop_length); + for( uint32_t i = 0; i < hiStop_length; i++){ + union { + double real; + uint64_t base; + } u_hiStopi; + u_hiStopi.real = this->hiStop[i]; + *(outbuffer + offset + 0) = (u_hiStopi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_hiStopi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_hiStopi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_hiStopi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_hiStopi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_hiStopi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_hiStopi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_hiStopi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->hiStop[i]); + } + *(outbuffer + offset + 0) = (this->loStop_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->loStop_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->loStop_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->loStop_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->loStop_length); + for( uint32_t i = 0; i < loStop_length; i++){ + union { + double real; + uint64_t base; + } u_loStopi; + u_loStopi.real = this->loStop[i]; + *(outbuffer + offset + 0) = (u_loStopi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_loStopi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_loStopi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_loStopi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_loStopi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_loStopi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_loStopi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_loStopi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->loStop[i]); + } + *(outbuffer + offset + 0) = (this->erp_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->erp_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->erp_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->erp_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->erp_length); + for( uint32_t i = 0; i < erp_length; i++){ + union { + double real; + uint64_t base; + } u_erpi; + u_erpi.real = this->erp[i]; + *(outbuffer + offset + 0) = (u_erpi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_erpi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_erpi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_erpi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_erpi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_erpi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_erpi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_erpi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->erp[i]); + } + *(outbuffer + offset + 0) = (this->cfm_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->cfm_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->cfm_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->cfm_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->cfm_length); + for( uint32_t i = 0; i < cfm_length; i++){ + union { + double real; + uint64_t base; + } u_cfmi; + u_cfmi.real = this->cfm[i]; + *(outbuffer + offset + 0) = (u_cfmi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_cfmi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_cfmi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_cfmi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_cfmi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_cfmi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_cfmi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_cfmi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->cfm[i]); + } + *(outbuffer + offset + 0) = (this->stop_erp_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stop_erp_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stop_erp_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stop_erp_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->stop_erp_length); + for( uint32_t i = 0; i < stop_erp_length; i++){ + union { + double real; + uint64_t base; + } u_stop_erpi; + u_stop_erpi.real = this->stop_erp[i]; + *(outbuffer + offset + 0) = (u_stop_erpi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_stop_erpi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_stop_erpi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_stop_erpi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_stop_erpi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_stop_erpi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_stop_erpi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_stop_erpi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->stop_erp[i]); + } + *(outbuffer + offset + 0) = (this->stop_cfm_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stop_cfm_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stop_cfm_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stop_cfm_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->stop_cfm_length); + for( uint32_t i = 0; i < stop_cfm_length; i++){ + union { + double real; + uint64_t base; + } u_stop_cfmi; + u_stop_cfmi.real = this->stop_cfm[i]; + *(outbuffer + offset + 0) = (u_stop_cfmi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_stop_cfmi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_stop_cfmi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_stop_cfmi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_stop_cfmi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_stop_cfmi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_stop_cfmi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_stop_cfmi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->stop_cfm[i]); + } + *(outbuffer + offset + 0) = (this->fudge_factor_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->fudge_factor_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->fudge_factor_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->fudge_factor_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->fudge_factor_length); + for( uint32_t i = 0; i < fudge_factor_length; i++){ + union { + double real; + uint64_t base; + } u_fudge_factori; + u_fudge_factori.real = this->fudge_factor[i]; + *(outbuffer + offset + 0) = (u_fudge_factori.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_fudge_factori.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_fudge_factori.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_fudge_factori.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_fudge_factori.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_fudge_factori.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_fudge_factori.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_fudge_factori.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->fudge_factor[i]); + } + *(outbuffer + offset + 0) = (this->fmax_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->fmax_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->fmax_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->fmax_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->fmax_length); + for( uint32_t i = 0; i < fmax_length; i++){ + union { + double real; + uint64_t base; + } u_fmaxi; + u_fmaxi.real = this->fmax[i]; + *(outbuffer + offset + 0) = (u_fmaxi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_fmaxi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_fmaxi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_fmaxi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_fmaxi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_fmaxi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_fmaxi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_fmaxi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->fmax[i]); + } + *(outbuffer + offset + 0) = (this->vel_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->vel_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->vel_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->vel_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->vel_length); + for( uint32_t i = 0; i < vel_length; i++){ + union { + double real; + uint64_t base; + } u_veli; + u_veli.real = this->vel[i]; + *(outbuffer + offset + 0) = (u_veli.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_veli.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_veli.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_veli.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_veli.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_veli.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_veli.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_veli.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->vel[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t damping_lengthT = ((uint32_t) (*(inbuffer + offset))); + damping_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + damping_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + damping_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->damping_length); + if(damping_lengthT > damping_length) + this->damping = (double*)realloc(this->damping, damping_lengthT * sizeof(double)); + damping_length = damping_lengthT; + for( uint32_t i = 0; i < damping_length; i++){ + union { + double real; + uint64_t base; + } u_st_damping; + u_st_damping.base = 0; + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_damping = u_st_damping.real; + offset += sizeof(this->st_damping); + memcpy( &(this->damping[i]), &(this->st_damping), sizeof(double)); + } + uint32_t hiStop_lengthT = ((uint32_t) (*(inbuffer + offset))); + hiStop_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + hiStop_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + hiStop_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->hiStop_length); + if(hiStop_lengthT > hiStop_length) + this->hiStop = (double*)realloc(this->hiStop, hiStop_lengthT * sizeof(double)); + hiStop_length = hiStop_lengthT; + for( uint32_t i = 0; i < hiStop_length; i++){ + union { + double real; + uint64_t base; + } u_st_hiStop; + u_st_hiStop.base = 0; + u_st_hiStop.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_hiStop.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_hiStop.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_hiStop.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_hiStop.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_hiStop.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_hiStop.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_hiStop.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_hiStop = u_st_hiStop.real; + offset += sizeof(this->st_hiStop); + memcpy( &(this->hiStop[i]), &(this->st_hiStop), sizeof(double)); + } + uint32_t loStop_lengthT = ((uint32_t) (*(inbuffer + offset))); + loStop_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + loStop_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + loStop_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->loStop_length); + if(loStop_lengthT > loStop_length) + this->loStop = (double*)realloc(this->loStop, loStop_lengthT * sizeof(double)); + loStop_length = loStop_lengthT; + for( uint32_t i = 0; i < loStop_length; i++){ + union { + double real; + uint64_t base; + } u_st_loStop; + u_st_loStop.base = 0; + u_st_loStop.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_loStop.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_loStop.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_loStop.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_loStop.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_loStop.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_loStop.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_loStop.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_loStop = u_st_loStop.real; + offset += sizeof(this->st_loStop); + memcpy( &(this->loStop[i]), &(this->st_loStop), sizeof(double)); + } + uint32_t erp_lengthT = ((uint32_t) (*(inbuffer + offset))); + erp_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + erp_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + erp_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->erp_length); + if(erp_lengthT > erp_length) + this->erp = (double*)realloc(this->erp, erp_lengthT * sizeof(double)); + erp_length = erp_lengthT; + for( uint32_t i = 0; i < erp_length; i++){ + union { + double real; + uint64_t base; + } u_st_erp; + u_st_erp.base = 0; + u_st_erp.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_erp.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_erp.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_erp.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_erp.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_erp.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_erp.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_erp.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_erp = u_st_erp.real; + offset += sizeof(this->st_erp); + memcpy( &(this->erp[i]), &(this->st_erp), sizeof(double)); + } + uint32_t cfm_lengthT = ((uint32_t) (*(inbuffer + offset))); + cfm_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + cfm_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + cfm_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->cfm_length); + if(cfm_lengthT > cfm_length) + this->cfm = (double*)realloc(this->cfm, cfm_lengthT * sizeof(double)); + cfm_length = cfm_lengthT; + for( uint32_t i = 0; i < cfm_length; i++){ + union { + double real; + uint64_t base; + } u_st_cfm; + u_st_cfm.base = 0; + u_st_cfm.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_cfm.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_cfm.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_cfm.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_cfm.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_cfm.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_cfm.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_cfm.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_cfm = u_st_cfm.real; + offset += sizeof(this->st_cfm); + memcpy( &(this->cfm[i]), &(this->st_cfm), sizeof(double)); + } + uint32_t stop_erp_lengthT = ((uint32_t) (*(inbuffer + offset))); + stop_erp_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + stop_erp_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + stop_erp_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stop_erp_length); + if(stop_erp_lengthT > stop_erp_length) + this->stop_erp = (double*)realloc(this->stop_erp, stop_erp_lengthT * sizeof(double)); + stop_erp_length = stop_erp_lengthT; + for( uint32_t i = 0; i < stop_erp_length; i++){ + union { + double real; + uint64_t base; + } u_st_stop_erp; + u_st_stop_erp.base = 0; + u_st_stop_erp.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_stop_erp.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_stop_erp.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_stop_erp.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_stop_erp.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_stop_erp.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_stop_erp.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_stop_erp.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_stop_erp = u_st_stop_erp.real; + offset += sizeof(this->st_stop_erp); + memcpy( &(this->stop_erp[i]), &(this->st_stop_erp), sizeof(double)); + } + uint32_t stop_cfm_lengthT = ((uint32_t) (*(inbuffer + offset))); + stop_cfm_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + stop_cfm_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + stop_cfm_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stop_cfm_length); + if(stop_cfm_lengthT > stop_cfm_length) + this->stop_cfm = (double*)realloc(this->stop_cfm, stop_cfm_lengthT * sizeof(double)); + stop_cfm_length = stop_cfm_lengthT; + for( uint32_t i = 0; i < stop_cfm_length; i++){ + union { + double real; + uint64_t base; + } u_st_stop_cfm; + u_st_stop_cfm.base = 0; + u_st_stop_cfm.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_stop_cfm.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_stop_cfm.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_stop_cfm.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_stop_cfm.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_stop_cfm.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_stop_cfm.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_stop_cfm.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_stop_cfm = u_st_stop_cfm.real; + offset += sizeof(this->st_stop_cfm); + memcpy( &(this->stop_cfm[i]), &(this->st_stop_cfm), sizeof(double)); + } + uint32_t fudge_factor_lengthT = ((uint32_t) (*(inbuffer + offset))); + fudge_factor_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + fudge_factor_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + fudge_factor_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->fudge_factor_length); + if(fudge_factor_lengthT > fudge_factor_length) + this->fudge_factor = (double*)realloc(this->fudge_factor, fudge_factor_lengthT * sizeof(double)); + fudge_factor_length = fudge_factor_lengthT; + for( uint32_t i = 0; i < fudge_factor_length; i++){ + union { + double real; + uint64_t base; + } u_st_fudge_factor; + u_st_fudge_factor.base = 0; + u_st_fudge_factor.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_fudge_factor.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_fudge_factor.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_fudge_factor.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_fudge_factor.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_fudge_factor.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_fudge_factor.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_fudge_factor.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_fudge_factor = u_st_fudge_factor.real; + offset += sizeof(this->st_fudge_factor); + memcpy( &(this->fudge_factor[i]), &(this->st_fudge_factor), sizeof(double)); + } + uint32_t fmax_lengthT = ((uint32_t) (*(inbuffer + offset))); + fmax_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + fmax_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + fmax_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->fmax_length); + if(fmax_lengthT > fmax_length) + this->fmax = (double*)realloc(this->fmax, fmax_lengthT * sizeof(double)); + fmax_length = fmax_lengthT; + for( uint32_t i = 0; i < fmax_length; i++){ + union { + double real; + uint64_t base; + } u_st_fmax; + u_st_fmax.base = 0; + u_st_fmax.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_fmax.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_fmax.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_fmax.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_fmax.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_fmax.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_fmax.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_fmax.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_fmax = u_st_fmax.real; + offset += sizeof(this->st_fmax); + memcpy( &(this->fmax[i]), &(this->st_fmax), sizeof(double)); + } + uint32_t vel_lengthT = ((uint32_t) (*(inbuffer + offset))); + vel_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + vel_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + vel_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->vel_length); + if(vel_lengthT > vel_length) + this->vel = (double*)realloc(this->vel, vel_lengthT * sizeof(double)); + vel_length = vel_lengthT; + for( uint32_t i = 0; i < vel_length; i++){ + union { + double real; + uint64_t base; + } u_st_vel; + u_st_vel.base = 0; + u_st_vel.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_vel.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_vel.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_vel.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_vel.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_vel.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_vel.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_vel.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_vel = u_st_vel.real; + offset += sizeof(this->st_vel); + memcpy( &(this->vel[i]), &(this->st_vel), sizeof(double)); + } + return offset; + } + + const char * getType(){ return "gazebo_msgs/ODEJointProperties"; }; + const char * getMD5(){ return "1b744c32a920af979f53afe2f9c3511f"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/ODEPhysics.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/ODEPhysics.h new file mode 100644 index 0000000..dcb6038 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/ODEPhysics.h @@ -0,0 +1,287 @@ +#ifndef _ROS_gazebo_msgs_ODEPhysics_h +#define _ROS_gazebo_msgs_ODEPhysics_h + +#include +#include +#include +#include "ros/msg.h" + +namespace gazebo_msgs +{ + + class ODEPhysics : public ros::Msg + { + public: + typedef bool _auto_disable_bodies_type; + _auto_disable_bodies_type auto_disable_bodies; + typedef uint32_t _sor_pgs_precon_iters_type; + _sor_pgs_precon_iters_type sor_pgs_precon_iters; + typedef uint32_t _sor_pgs_iters_type; + _sor_pgs_iters_type sor_pgs_iters; + typedef double _sor_pgs_w_type; + _sor_pgs_w_type sor_pgs_w; + typedef double _sor_pgs_rms_error_tol_type; + _sor_pgs_rms_error_tol_type sor_pgs_rms_error_tol; + typedef double _contact_surface_layer_type; + _contact_surface_layer_type contact_surface_layer; + typedef double _contact_max_correcting_vel_type; + _contact_max_correcting_vel_type contact_max_correcting_vel; + typedef double _cfm_type; + _cfm_type cfm; + typedef double _erp_type; + _erp_type erp; + typedef uint32_t _max_contacts_type; + _max_contacts_type max_contacts; + + ODEPhysics(): + auto_disable_bodies(0), + sor_pgs_precon_iters(0), + sor_pgs_iters(0), + sor_pgs_w(0), + sor_pgs_rms_error_tol(0), + contact_surface_layer(0), + contact_max_correcting_vel(0), + cfm(0), + erp(0), + max_contacts(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_auto_disable_bodies; + u_auto_disable_bodies.real = this->auto_disable_bodies; + *(outbuffer + offset + 0) = (u_auto_disable_bodies.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->auto_disable_bodies); + *(outbuffer + offset + 0) = (this->sor_pgs_precon_iters >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->sor_pgs_precon_iters >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->sor_pgs_precon_iters >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->sor_pgs_precon_iters >> (8 * 3)) & 0xFF; + offset += sizeof(this->sor_pgs_precon_iters); + *(outbuffer + offset + 0) = (this->sor_pgs_iters >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->sor_pgs_iters >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->sor_pgs_iters >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->sor_pgs_iters >> (8 * 3)) & 0xFF; + offset += sizeof(this->sor_pgs_iters); + union { + double real; + uint64_t base; + } u_sor_pgs_w; + u_sor_pgs_w.real = this->sor_pgs_w; + *(outbuffer + offset + 0) = (u_sor_pgs_w.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_sor_pgs_w.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_sor_pgs_w.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_sor_pgs_w.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_sor_pgs_w.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_sor_pgs_w.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_sor_pgs_w.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_sor_pgs_w.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->sor_pgs_w); + union { + double real; + uint64_t base; + } u_sor_pgs_rms_error_tol; + u_sor_pgs_rms_error_tol.real = this->sor_pgs_rms_error_tol; + *(outbuffer + offset + 0) = (u_sor_pgs_rms_error_tol.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_sor_pgs_rms_error_tol.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_sor_pgs_rms_error_tol.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_sor_pgs_rms_error_tol.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_sor_pgs_rms_error_tol.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_sor_pgs_rms_error_tol.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_sor_pgs_rms_error_tol.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_sor_pgs_rms_error_tol.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->sor_pgs_rms_error_tol); + union { + double real; + uint64_t base; + } u_contact_surface_layer; + u_contact_surface_layer.real = this->contact_surface_layer; + *(outbuffer + offset + 0) = (u_contact_surface_layer.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_contact_surface_layer.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_contact_surface_layer.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_contact_surface_layer.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_contact_surface_layer.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_contact_surface_layer.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_contact_surface_layer.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_contact_surface_layer.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->contact_surface_layer); + union { + double real; + uint64_t base; + } u_contact_max_correcting_vel; + u_contact_max_correcting_vel.real = this->contact_max_correcting_vel; + *(outbuffer + offset + 0) = (u_contact_max_correcting_vel.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_contact_max_correcting_vel.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_contact_max_correcting_vel.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_contact_max_correcting_vel.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_contact_max_correcting_vel.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_contact_max_correcting_vel.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_contact_max_correcting_vel.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_contact_max_correcting_vel.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->contact_max_correcting_vel); + union { + double real; + uint64_t base; + } u_cfm; + u_cfm.real = this->cfm; + *(outbuffer + offset + 0) = (u_cfm.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_cfm.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_cfm.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_cfm.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_cfm.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_cfm.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_cfm.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_cfm.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->cfm); + union { + double real; + uint64_t base; + } u_erp; + u_erp.real = this->erp; + *(outbuffer + offset + 0) = (u_erp.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_erp.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_erp.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_erp.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_erp.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_erp.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_erp.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_erp.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->erp); + *(outbuffer + offset + 0) = (this->max_contacts >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->max_contacts >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->max_contacts >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->max_contacts >> (8 * 3)) & 0xFF; + offset += sizeof(this->max_contacts); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_auto_disable_bodies; + u_auto_disable_bodies.base = 0; + u_auto_disable_bodies.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->auto_disable_bodies = u_auto_disable_bodies.real; + offset += sizeof(this->auto_disable_bodies); + this->sor_pgs_precon_iters = ((uint32_t) (*(inbuffer + offset))); + this->sor_pgs_precon_iters |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->sor_pgs_precon_iters |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->sor_pgs_precon_iters |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->sor_pgs_precon_iters); + this->sor_pgs_iters = ((uint32_t) (*(inbuffer + offset))); + this->sor_pgs_iters |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->sor_pgs_iters |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->sor_pgs_iters |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->sor_pgs_iters); + union { + double real; + uint64_t base; + } u_sor_pgs_w; + u_sor_pgs_w.base = 0; + u_sor_pgs_w.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_sor_pgs_w.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_sor_pgs_w.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_sor_pgs_w.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_sor_pgs_w.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_sor_pgs_w.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_sor_pgs_w.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_sor_pgs_w.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->sor_pgs_w = u_sor_pgs_w.real; + offset += sizeof(this->sor_pgs_w); + union { + double real; + uint64_t base; + } u_sor_pgs_rms_error_tol; + u_sor_pgs_rms_error_tol.base = 0; + u_sor_pgs_rms_error_tol.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_sor_pgs_rms_error_tol.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_sor_pgs_rms_error_tol.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_sor_pgs_rms_error_tol.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_sor_pgs_rms_error_tol.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_sor_pgs_rms_error_tol.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_sor_pgs_rms_error_tol.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_sor_pgs_rms_error_tol.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->sor_pgs_rms_error_tol = u_sor_pgs_rms_error_tol.real; + offset += sizeof(this->sor_pgs_rms_error_tol); + union { + double real; + uint64_t base; + } u_contact_surface_layer; + u_contact_surface_layer.base = 0; + u_contact_surface_layer.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_contact_surface_layer.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_contact_surface_layer.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_contact_surface_layer.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_contact_surface_layer.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_contact_surface_layer.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_contact_surface_layer.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_contact_surface_layer.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->contact_surface_layer = u_contact_surface_layer.real; + offset += sizeof(this->contact_surface_layer); + union { + double real; + uint64_t base; + } u_contact_max_correcting_vel; + u_contact_max_correcting_vel.base = 0; + u_contact_max_correcting_vel.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_contact_max_correcting_vel.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_contact_max_correcting_vel.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_contact_max_correcting_vel.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_contact_max_correcting_vel.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_contact_max_correcting_vel.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_contact_max_correcting_vel.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_contact_max_correcting_vel.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->contact_max_correcting_vel = u_contact_max_correcting_vel.real; + offset += sizeof(this->contact_max_correcting_vel); + union { + double real; + uint64_t base; + } u_cfm; + u_cfm.base = 0; + u_cfm.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_cfm.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_cfm.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_cfm.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_cfm.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_cfm.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_cfm.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_cfm.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->cfm = u_cfm.real; + offset += sizeof(this->cfm); + union { + double real; + uint64_t base; + } u_erp; + u_erp.base = 0; + u_erp.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_erp.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_erp.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_erp.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_erp.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_erp.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_erp.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_erp.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->erp = u_erp.real; + offset += sizeof(this->erp); + this->max_contacts = ((uint32_t) (*(inbuffer + offset))); + this->max_contacts |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->max_contacts |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->max_contacts |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->max_contacts); + return offset; + } + + const char * getType(){ return "gazebo_msgs/ODEPhysics"; }; + const char * getMD5(){ return "667d56ddbd547918c32d1934503dc335"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetJointProperties.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetJointProperties.h new file mode 100644 index 0000000..981853d --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetJointProperties.h @@ -0,0 +1,128 @@ +#ifndef _ROS_SERVICE_SetJointProperties_h +#define _ROS_SERVICE_SetJointProperties_h +#include +#include +#include +#include "ros/msg.h" +#include "gazebo_msgs/ODEJointProperties.h" + +namespace gazebo_msgs +{ + +static const char SETJOINTPROPERTIES[] = "gazebo_msgs/SetJointProperties"; + + class SetJointPropertiesRequest : public ros::Msg + { + public: + typedef const char* _joint_name_type; + _joint_name_type joint_name; + typedef gazebo_msgs::ODEJointProperties _ode_joint_config_type; + _ode_joint_config_type ode_joint_config; + + SetJointPropertiesRequest(): + joint_name(""), + ode_joint_config() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_joint_name = strlen(this->joint_name); + varToArr(outbuffer + offset, length_joint_name); + offset += 4; + memcpy(outbuffer + offset, this->joint_name, length_joint_name); + offset += length_joint_name; + offset += this->ode_joint_config.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_joint_name; + arrToVar(length_joint_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_joint_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_joint_name-1]=0; + this->joint_name = (char *)(inbuffer + offset-1); + offset += length_joint_name; + offset += this->ode_joint_config.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return SETJOINTPROPERTIES; }; + const char * getMD5(){ return "331fd8f35fd27e3c1421175590258e26"; }; + + }; + + class SetJointPropertiesResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + SetJointPropertiesResponse(): + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return SETJOINTPROPERTIES; }; + const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; }; + + }; + + class SetJointProperties { + public: + typedef SetJointPropertiesRequest Request; + typedef SetJointPropertiesResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetJointTrajectory.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetJointTrajectory.h new file mode 100644 index 0000000..81146ce --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetJointTrajectory.h @@ -0,0 +1,170 @@ +#ifndef _ROS_SERVICE_SetJointTrajectory_h +#define _ROS_SERVICE_SetJointTrajectory_h +#include +#include +#include +#include "ros/msg.h" +#include "trajectory_msgs/JointTrajectory.h" +#include "geometry_msgs/Pose.h" + +namespace gazebo_msgs +{ + +static const char SETJOINTTRAJECTORY[] = "gazebo_msgs/SetJointTrajectory"; + + class SetJointTrajectoryRequest : public ros::Msg + { + public: + typedef const char* _model_name_type; + _model_name_type model_name; + typedef trajectory_msgs::JointTrajectory _joint_trajectory_type; + _joint_trajectory_type joint_trajectory; + typedef geometry_msgs::Pose _model_pose_type; + _model_pose_type model_pose; + typedef bool _set_model_pose_type; + _set_model_pose_type set_model_pose; + typedef bool _disable_physics_updates_type; + _disable_physics_updates_type disable_physics_updates; + + SetJointTrajectoryRequest(): + model_name(""), + joint_trajectory(), + model_pose(), + set_model_pose(0), + disable_physics_updates(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_model_name = strlen(this->model_name); + varToArr(outbuffer + offset, length_model_name); + offset += 4; + memcpy(outbuffer + offset, this->model_name, length_model_name); + offset += length_model_name; + offset += this->joint_trajectory.serialize(outbuffer + offset); + offset += this->model_pose.serialize(outbuffer + offset); + union { + bool real; + uint8_t base; + } u_set_model_pose; + u_set_model_pose.real = this->set_model_pose; + *(outbuffer + offset + 0) = (u_set_model_pose.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->set_model_pose); + union { + bool real; + uint8_t base; + } u_disable_physics_updates; + u_disable_physics_updates.real = this->disable_physics_updates; + *(outbuffer + offset + 0) = (u_disable_physics_updates.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->disable_physics_updates); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_model_name; + arrToVar(length_model_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_model_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_model_name-1]=0; + this->model_name = (char *)(inbuffer + offset-1); + offset += length_model_name; + offset += this->joint_trajectory.deserialize(inbuffer + offset); + offset += this->model_pose.deserialize(inbuffer + offset); + union { + bool real; + uint8_t base; + } u_set_model_pose; + u_set_model_pose.base = 0; + u_set_model_pose.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->set_model_pose = u_set_model_pose.real; + offset += sizeof(this->set_model_pose); + union { + bool real; + uint8_t base; + } u_disable_physics_updates; + u_disable_physics_updates.base = 0; + u_disable_physics_updates.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->disable_physics_updates = u_disable_physics_updates.real; + offset += sizeof(this->disable_physics_updates); + return offset; + } + + const char * getType(){ return SETJOINTTRAJECTORY; }; + const char * getMD5(){ return "649dd2eba5ffd358069238825f9f85ab"; }; + + }; + + class SetJointTrajectoryResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + SetJointTrajectoryResponse(): + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return SETJOINTTRAJECTORY; }; + const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; }; + + }; + + class SetJointTrajectory { + public: + typedef SetJointTrajectoryRequest Request; + typedef SetJointTrajectoryResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetLightProperties.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetLightProperties.h new file mode 100644 index 0000000..5243ae2 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetLightProperties.h @@ -0,0 +1,224 @@ +#ifndef _ROS_SERVICE_SetLightProperties_h +#define _ROS_SERVICE_SetLightProperties_h +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/ColorRGBA.h" + +namespace gazebo_msgs +{ + +static const char SETLIGHTPROPERTIES[] = "gazebo_msgs/SetLightProperties"; + + class SetLightPropertiesRequest : public ros::Msg + { + public: + typedef const char* _light_name_type; + _light_name_type light_name; + typedef std_msgs::ColorRGBA _diffuse_type; + _diffuse_type diffuse; + typedef double _attenuation_constant_type; + _attenuation_constant_type attenuation_constant; + typedef double _attenuation_linear_type; + _attenuation_linear_type attenuation_linear; + typedef double _attenuation_quadratic_type; + _attenuation_quadratic_type attenuation_quadratic; + + SetLightPropertiesRequest(): + light_name(""), + diffuse(), + attenuation_constant(0), + attenuation_linear(0), + attenuation_quadratic(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_light_name = strlen(this->light_name); + varToArr(outbuffer + offset, length_light_name); + offset += 4; + memcpy(outbuffer + offset, this->light_name, length_light_name); + offset += length_light_name; + offset += this->diffuse.serialize(outbuffer + offset); + union { + double real; + uint64_t base; + } u_attenuation_constant; + u_attenuation_constant.real = this->attenuation_constant; + *(outbuffer + offset + 0) = (u_attenuation_constant.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_attenuation_constant.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_attenuation_constant.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_attenuation_constant.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_attenuation_constant.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_attenuation_constant.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_attenuation_constant.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_attenuation_constant.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->attenuation_constant); + union { + double real; + uint64_t base; + } u_attenuation_linear; + u_attenuation_linear.real = this->attenuation_linear; + *(outbuffer + offset + 0) = (u_attenuation_linear.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_attenuation_linear.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_attenuation_linear.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_attenuation_linear.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_attenuation_linear.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_attenuation_linear.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_attenuation_linear.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_attenuation_linear.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->attenuation_linear); + union { + double real; + uint64_t base; + } u_attenuation_quadratic; + u_attenuation_quadratic.real = this->attenuation_quadratic; + *(outbuffer + offset + 0) = (u_attenuation_quadratic.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_attenuation_quadratic.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_attenuation_quadratic.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_attenuation_quadratic.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_attenuation_quadratic.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_attenuation_quadratic.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_attenuation_quadratic.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_attenuation_quadratic.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->attenuation_quadratic); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_light_name; + arrToVar(length_light_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_light_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_light_name-1]=0; + this->light_name = (char *)(inbuffer + offset-1); + offset += length_light_name; + offset += this->diffuse.deserialize(inbuffer + offset); + union { + double real; + uint64_t base; + } u_attenuation_constant; + u_attenuation_constant.base = 0; + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->attenuation_constant = u_attenuation_constant.real; + offset += sizeof(this->attenuation_constant); + union { + double real; + uint64_t base; + } u_attenuation_linear; + u_attenuation_linear.base = 0; + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->attenuation_linear = u_attenuation_linear.real; + offset += sizeof(this->attenuation_linear); + union { + double real; + uint64_t base; + } u_attenuation_quadratic; + u_attenuation_quadratic.base = 0; + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->attenuation_quadratic = u_attenuation_quadratic.real; + offset += sizeof(this->attenuation_quadratic); + return offset; + } + + const char * getType(){ return SETLIGHTPROPERTIES; }; + const char * getMD5(){ return "73ad1ac5e9e312ddf7c74f38ad843f34"; }; + + }; + + class SetLightPropertiesResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + SetLightPropertiesResponse(): + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return SETLIGHTPROPERTIES; }; + const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; }; + + }; + + class SetLightProperties { + public: + typedef SetLightPropertiesRequest Request; + typedef SetLightPropertiesResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetLinkProperties.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetLinkProperties.h new file mode 100644 index 0000000..3b0ae61 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetLinkProperties.h @@ -0,0 +1,370 @@ +#ifndef _ROS_SERVICE_SetLinkProperties_h +#define _ROS_SERVICE_SetLinkProperties_h +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Pose.h" + +namespace gazebo_msgs +{ + +static const char SETLINKPROPERTIES[] = "gazebo_msgs/SetLinkProperties"; + + class SetLinkPropertiesRequest : public ros::Msg + { + public: + typedef const char* _link_name_type; + _link_name_type link_name; + typedef geometry_msgs::Pose _com_type; + _com_type com; + typedef bool _gravity_mode_type; + _gravity_mode_type gravity_mode; + typedef double _mass_type; + _mass_type mass; + typedef double _ixx_type; + _ixx_type ixx; + typedef double _ixy_type; + _ixy_type ixy; + typedef double _ixz_type; + _ixz_type ixz; + typedef double _iyy_type; + _iyy_type iyy; + typedef double _iyz_type; + _iyz_type iyz; + typedef double _izz_type; + _izz_type izz; + + SetLinkPropertiesRequest(): + link_name(""), + com(), + gravity_mode(0), + mass(0), + ixx(0), + ixy(0), + ixz(0), + iyy(0), + iyz(0), + izz(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_link_name = strlen(this->link_name); + varToArr(outbuffer + offset, length_link_name); + offset += 4; + memcpy(outbuffer + offset, this->link_name, length_link_name); + offset += length_link_name; + offset += this->com.serialize(outbuffer + offset); + union { + bool real; + uint8_t base; + } u_gravity_mode; + u_gravity_mode.real = this->gravity_mode; + *(outbuffer + offset + 0) = (u_gravity_mode.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->gravity_mode); + union { + double real; + uint64_t base; + } u_mass; + u_mass.real = this->mass; + *(outbuffer + offset + 0) = (u_mass.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_mass.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_mass.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_mass.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_mass.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_mass.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_mass.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_mass.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->mass); + union { + double real; + uint64_t base; + } u_ixx; + u_ixx.real = this->ixx; + *(outbuffer + offset + 0) = (u_ixx.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_ixx.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_ixx.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_ixx.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_ixx.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_ixx.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_ixx.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_ixx.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->ixx); + union { + double real; + uint64_t base; + } u_ixy; + u_ixy.real = this->ixy; + *(outbuffer + offset + 0) = (u_ixy.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_ixy.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_ixy.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_ixy.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_ixy.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_ixy.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_ixy.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_ixy.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->ixy); + union { + double real; + uint64_t base; + } u_ixz; + u_ixz.real = this->ixz; + *(outbuffer + offset + 0) = (u_ixz.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_ixz.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_ixz.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_ixz.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_ixz.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_ixz.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_ixz.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_ixz.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->ixz); + union { + double real; + uint64_t base; + } u_iyy; + u_iyy.real = this->iyy; + *(outbuffer + offset + 0) = (u_iyy.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_iyy.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_iyy.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_iyy.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_iyy.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_iyy.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_iyy.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_iyy.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->iyy); + union { + double real; + uint64_t base; + } u_iyz; + u_iyz.real = this->iyz; + *(outbuffer + offset + 0) = (u_iyz.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_iyz.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_iyz.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_iyz.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_iyz.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_iyz.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_iyz.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_iyz.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->iyz); + union { + double real; + uint64_t base; + } u_izz; + u_izz.real = this->izz; + *(outbuffer + offset + 0) = (u_izz.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_izz.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_izz.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_izz.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_izz.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_izz.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_izz.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_izz.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->izz); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_link_name; + arrToVar(length_link_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_link_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_link_name-1]=0; + this->link_name = (char *)(inbuffer + offset-1); + offset += length_link_name; + offset += this->com.deserialize(inbuffer + offset); + union { + bool real; + uint8_t base; + } u_gravity_mode; + u_gravity_mode.base = 0; + u_gravity_mode.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->gravity_mode = u_gravity_mode.real; + offset += sizeof(this->gravity_mode); + union { + double real; + uint64_t base; + } u_mass; + u_mass.base = 0; + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->mass = u_mass.real; + offset += sizeof(this->mass); + union { + double real; + uint64_t base; + } u_ixx; + u_ixx.base = 0; + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->ixx = u_ixx.real; + offset += sizeof(this->ixx); + union { + double real; + uint64_t base; + } u_ixy; + u_ixy.base = 0; + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->ixy = u_ixy.real; + offset += sizeof(this->ixy); + union { + double real; + uint64_t base; + } u_ixz; + u_ixz.base = 0; + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->ixz = u_ixz.real; + offset += sizeof(this->ixz); + union { + double real; + uint64_t base; + } u_iyy; + u_iyy.base = 0; + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->iyy = u_iyy.real; + offset += sizeof(this->iyy); + union { + double real; + uint64_t base; + } u_iyz; + u_iyz.base = 0; + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->iyz = u_iyz.real; + offset += sizeof(this->iyz); + union { + double real; + uint64_t base; + } u_izz; + u_izz.base = 0; + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->izz = u_izz.real; + offset += sizeof(this->izz); + return offset; + } + + const char * getType(){ return SETLINKPROPERTIES; }; + const char * getMD5(){ return "68ac74a4be01b165bc305b5ccdc45e91"; }; + + }; + + class SetLinkPropertiesResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + SetLinkPropertiesResponse(): + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return SETLINKPROPERTIES; }; + const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; }; + + }; + + class SetLinkProperties { + public: + typedef SetLinkPropertiesRequest Request; + typedef SetLinkPropertiesResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetLinkState.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetLinkState.h new file mode 100644 index 0000000..f089492 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetLinkState.h @@ -0,0 +1,111 @@ +#ifndef _ROS_SERVICE_SetLinkState_h +#define _ROS_SERVICE_SetLinkState_h +#include +#include +#include +#include "ros/msg.h" +#include "gazebo_msgs/LinkState.h" + +namespace gazebo_msgs +{ + +static const char SETLINKSTATE[] = "gazebo_msgs/SetLinkState"; + + class SetLinkStateRequest : public ros::Msg + { + public: + typedef gazebo_msgs::LinkState _link_state_type; + _link_state_type link_state; + + SetLinkStateRequest(): + link_state() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->link_state.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->link_state.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return SETLINKSTATE; }; + const char * getMD5(){ return "22a2c757d56911b6f27868159e9a872d"; }; + + }; + + class SetLinkStateResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + SetLinkStateResponse(): + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return SETLINKSTATE; }; + const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; }; + + }; + + class SetLinkState { + public: + typedef SetLinkStateRequest Request; + typedef SetLinkStateResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetModelConfiguration.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetModelConfiguration.h new file mode 100644 index 0000000..d2da91b --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetModelConfiguration.h @@ -0,0 +1,228 @@ +#ifndef _ROS_SERVICE_SetModelConfiguration_h +#define _ROS_SERVICE_SetModelConfiguration_h +#include +#include +#include +#include "ros/msg.h" + +namespace gazebo_msgs +{ + +static const char SETMODELCONFIGURATION[] = "gazebo_msgs/SetModelConfiguration"; + + class SetModelConfigurationRequest : public ros::Msg + { + public: + typedef const char* _model_name_type; + _model_name_type model_name; + typedef const char* _urdf_param_name_type; + _urdf_param_name_type urdf_param_name; + uint32_t joint_names_length; + typedef char* _joint_names_type; + _joint_names_type st_joint_names; + _joint_names_type * joint_names; + uint32_t joint_positions_length; + typedef double _joint_positions_type; + _joint_positions_type st_joint_positions; + _joint_positions_type * joint_positions; + + SetModelConfigurationRequest(): + model_name(""), + urdf_param_name(""), + joint_names_length(0), joint_names(NULL), + joint_positions_length(0), joint_positions(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_model_name = strlen(this->model_name); + varToArr(outbuffer + offset, length_model_name); + offset += 4; + memcpy(outbuffer + offset, this->model_name, length_model_name); + offset += length_model_name; + uint32_t length_urdf_param_name = strlen(this->urdf_param_name); + varToArr(outbuffer + offset, length_urdf_param_name); + offset += 4; + memcpy(outbuffer + offset, this->urdf_param_name, length_urdf_param_name); + offset += length_urdf_param_name; + *(outbuffer + offset + 0) = (this->joint_names_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->joint_names_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->joint_names_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->joint_names_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->joint_names_length); + for( uint32_t i = 0; i < joint_names_length; i++){ + uint32_t length_joint_namesi = strlen(this->joint_names[i]); + varToArr(outbuffer + offset, length_joint_namesi); + offset += 4; + memcpy(outbuffer + offset, this->joint_names[i], length_joint_namesi); + offset += length_joint_namesi; + } + *(outbuffer + offset + 0) = (this->joint_positions_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->joint_positions_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->joint_positions_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->joint_positions_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->joint_positions_length); + for( uint32_t i = 0; i < joint_positions_length; i++){ + union { + double real; + uint64_t base; + } u_joint_positionsi; + u_joint_positionsi.real = this->joint_positions[i]; + *(outbuffer + offset + 0) = (u_joint_positionsi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_joint_positionsi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_joint_positionsi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_joint_positionsi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_joint_positionsi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_joint_positionsi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_joint_positionsi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_joint_positionsi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->joint_positions[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_model_name; + arrToVar(length_model_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_model_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_model_name-1]=0; + this->model_name = (char *)(inbuffer + offset-1); + offset += length_model_name; + uint32_t length_urdf_param_name; + arrToVar(length_urdf_param_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_urdf_param_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_urdf_param_name-1]=0; + this->urdf_param_name = (char *)(inbuffer + offset-1); + offset += length_urdf_param_name; + uint32_t joint_names_lengthT = ((uint32_t) (*(inbuffer + offset))); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->joint_names_length); + if(joint_names_lengthT > joint_names_length) + this->joint_names = (char**)realloc(this->joint_names, joint_names_lengthT * sizeof(char*)); + joint_names_length = joint_names_lengthT; + for( uint32_t i = 0; i < joint_names_length; i++){ + uint32_t length_st_joint_names; + arrToVar(length_st_joint_names, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_joint_names; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_joint_names-1]=0; + this->st_joint_names = (char *)(inbuffer + offset-1); + offset += length_st_joint_names; + memcpy( &(this->joint_names[i]), &(this->st_joint_names), sizeof(char*)); + } + uint32_t joint_positions_lengthT = ((uint32_t) (*(inbuffer + offset))); + joint_positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + joint_positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + joint_positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->joint_positions_length); + if(joint_positions_lengthT > joint_positions_length) + this->joint_positions = (double*)realloc(this->joint_positions, joint_positions_lengthT * sizeof(double)); + joint_positions_length = joint_positions_lengthT; + for( uint32_t i = 0; i < joint_positions_length; i++){ + union { + double real; + uint64_t base; + } u_st_joint_positions; + u_st_joint_positions.base = 0; + u_st_joint_positions.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_joint_positions.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_joint_positions.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_joint_positions.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_joint_positions.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_joint_positions.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_joint_positions.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_joint_positions.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_joint_positions = u_st_joint_positions.real; + offset += sizeof(this->st_joint_positions); + memcpy( &(this->joint_positions[i]), &(this->st_joint_positions), sizeof(double)); + } + return offset; + } + + const char * getType(){ return SETMODELCONFIGURATION; }; + const char * getMD5(){ return "160eae60f51fabff255480c70afa289f"; }; + + }; + + class SetModelConfigurationResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + SetModelConfigurationResponse(): + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return SETMODELCONFIGURATION; }; + const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; }; + + }; + + class SetModelConfiguration { + public: + typedef SetModelConfigurationRequest Request; + typedef SetModelConfigurationResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetModelState.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetModelState.h new file mode 100644 index 0000000..ef251ad --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetModelState.h @@ -0,0 +1,111 @@ +#ifndef _ROS_SERVICE_SetModelState_h +#define _ROS_SERVICE_SetModelState_h +#include +#include +#include +#include "ros/msg.h" +#include "gazebo_msgs/ModelState.h" + +namespace gazebo_msgs +{ + +static const char SETMODELSTATE[] = "gazebo_msgs/SetModelState"; + + class SetModelStateRequest : public ros::Msg + { + public: + typedef gazebo_msgs::ModelState _model_state_type; + _model_state_type model_state; + + SetModelStateRequest(): + model_state() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->model_state.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->model_state.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return SETMODELSTATE; }; + const char * getMD5(){ return "cb042b0e91880f4661b29ea5b6234350"; }; + + }; + + class SetModelStateResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + SetModelStateResponse(): + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return SETMODELSTATE; }; + const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; }; + + }; + + class SetModelState { + public: + typedef SetModelStateRequest Request; + typedef SetModelStateResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetPhysicsProperties.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetPhysicsProperties.h new file mode 100644 index 0000000..ea160b5 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetPhysicsProperties.h @@ -0,0 +1,181 @@ +#ifndef _ROS_SERVICE_SetPhysicsProperties_h +#define _ROS_SERVICE_SetPhysicsProperties_h +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Vector3.h" +#include "gazebo_msgs/ODEPhysics.h" + +namespace gazebo_msgs +{ + +static const char SETPHYSICSPROPERTIES[] = "gazebo_msgs/SetPhysicsProperties"; + + class SetPhysicsPropertiesRequest : public ros::Msg + { + public: + typedef double _time_step_type; + _time_step_type time_step; + typedef double _max_update_rate_type; + _max_update_rate_type max_update_rate; + typedef geometry_msgs::Vector3 _gravity_type; + _gravity_type gravity; + typedef gazebo_msgs::ODEPhysics _ode_config_type; + _ode_config_type ode_config; + + SetPhysicsPropertiesRequest(): + time_step(0), + max_update_rate(0), + gravity(), + ode_config() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_time_step; + u_time_step.real = this->time_step; + *(outbuffer + offset + 0) = (u_time_step.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_time_step.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_time_step.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_time_step.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_time_step.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_time_step.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_time_step.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_time_step.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->time_step); + union { + double real; + uint64_t base; + } u_max_update_rate; + u_max_update_rate.real = this->max_update_rate; + *(outbuffer + offset + 0) = (u_max_update_rate.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_max_update_rate.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_max_update_rate.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_max_update_rate.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_max_update_rate.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_max_update_rate.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_max_update_rate.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_max_update_rate.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->max_update_rate); + offset += this->gravity.serialize(outbuffer + offset); + offset += this->ode_config.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_time_step; + u_time_step.base = 0; + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->time_step = u_time_step.real; + offset += sizeof(this->time_step); + union { + double real; + uint64_t base; + } u_max_update_rate; + u_max_update_rate.base = 0; + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->max_update_rate = u_max_update_rate.real; + offset += sizeof(this->max_update_rate); + offset += this->gravity.deserialize(inbuffer + offset); + offset += this->ode_config.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return SETPHYSICSPROPERTIES; }; + const char * getMD5(){ return "abd9f82732b52b92e9d6bb36e6a82452"; }; + + }; + + class SetPhysicsPropertiesResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + SetPhysicsPropertiesResponse(): + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return SETPHYSICSPROPERTIES; }; + const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; }; + + }; + + class SetPhysicsProperties { + public: + typedef SetPhysicsPropertiesRequest Request; + typedef SetPhysicsPropertiesResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/SpawnModel.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/SpawnModel.h new file mode 100644 index 0000000..215b001 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/SpawnModel.h @@ -0,0 +1,179 @@ +#ifndef _ROS_SERVICE_SpawnModel_h +#define _ROS_SERVICE_SpawnModel_h +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Pose.h" + +namespace gazebo_msgs +{ + +static const char SPAWNMODEL[] = "gazebo_msgs/SpawnModel"; + + class SpawnModelRequest : public ros::Msg + { + public: + typedef const char* _model_name_type; + _model_name_type model_name; + typedef const char* _model_xml_type; + _model_xml_type model_xml; + typedef const char* _robot_namespace_type; + _robot_namespace_type robot_namespace; + typedef geometry_msgs::Pose _initial_pose_type; + _initial_pose_type initial_pose; + typedef const char* _reference_frame_type; + _reference_frame_type reference_frame; + + SpawnModelRequest(): + model_name(""), + model_xml(""), + robot_namespace(""), + initial_pose(), + reference_frame("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_model_name = strlen(this->model_name); + varToArr(outbuffer + offset, length_model_name); + offset += 4; + memcpy(outbuffer + offset, this->model_name, length_model_name); + offset += length_model_name; + uint32_t length_model_xml = strlen(this->model_xml); + varToArr(outbuffer + offset, length_model_xml); + offset += 4; + memcpy(outbuffer + offset, this->model_xml, length_model_xml); + offset += length_model_xml; + uint32_t length_robot_namespace = strlen(this->robot_namespace); + varToArr(outbuffer + offset, length_robot_namespace); + offset += 4; + memcpy(outbuffer + offset, this->robot_namespace, length_robot_namespace); + offset += length_robot_namespace; + offset += this->initial_pose.serialize(outbuffer + offset); + uint32_t length_reference_frame = strlen(this->reference_frame); + varToArr(outbuffer + offset, length_reference_frame); + offset += 4; + memcpy(outbuffer + offset, this->reference_frame, length_reference_frame); + offset += length_reference_frame; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_model_name; + arrToVar(length_model_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_model_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_model_name-1]=0; + this->model_name = (char *)(inbuffer + offset-1); + offset += length_model_name; + uint32_t length_model_xml; + arrToVar(length_model_xml, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_model_xml; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_model_xml-1]=0; + this->model_xml = (char *)(inbuffer + offset-1); + offset += length_model_xml; + uint32_t length_robot_namespace; + arrToVar(length_robot_namespace, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_robot_namespace; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_robot_namespace-1]=0; + this->robot_namespace = (char *)(inbuffer + offset-1); + offset += length_robot_namespace; + offset += this->initial_pose.deserialize(inbuffer + offset); + uint32_t length_reference_frame; + arrToVar(length_reference_frame, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_reference_frame; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_reference_frame-1]=0; + this->reference_frame = (char *)(inbuffer + offset-1); + offset += length_reference_frame; + return offset; + } + + const char * getType(){ return SPAWNMODEL; }; + const char * getMD5(){ return "6d0eba5753761cd57e6263a056b79930"; }; + + }; + + class SpawnModelResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + SpawnModelResponse(): + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return SPAWNMODEL; }; + const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; }; + + }; + + class SpawnModel { + public: + typedef SpawnModelRequest Request; + typedef SpawnModelResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/WorldState.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/WorldState.h new file mode 100644 index 0000000..43eb256 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/gazebo_msgs/WorldState.h @@ -0,0 +1,159 @@ +#ifndef _ROS_gazebo_msgs_WorldState_h +#define _ROS_gazebo_msgs_WorldState_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Pose.h" +#include "geometry_msgs/Twist.h" +#include "geometry_msgs/Wrench.h" + +namespace gazebo_msgs +{ + + class WorldState : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t name_length; + typedef char* _name_type; + _name_type st_name; + _name_type * name; + uint32_t pose_length; + typedef geometry_msgs::Pose _pose_type; + _pose_type st_pose; + _pose_type * pose; + uint32_t twist_length; + typedef geometry_msgs::Twist _twist_type; + _twist_type st_twist; + _twist_type * twist; + uint32_t wrench_length; + typedef geometry_msgs::Wrench _wrench_type; + _wrench_type st_wrench; + _wrench_type * wrench; + + WorldState(): + header(), + name_length(0), name(NULL), + pose_length(0), pose(NULL), + twist_length(0), twist(NULL), + wrench_length(0), wrench(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->name_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->name_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->name_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->name_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->name_length); + for( uint32_t i = 0; i < name_length; i++){ + uint32_t length_namei = strlen(this->name[i]); + varToArr(outbuffer + offset, length_namei); + offset += 4; + memcpy(outbuffer + offset, this->name[i], length_namei); + offset += length_namei; + } + *(outbuffer + offset + 0) = (this->pose_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->pose_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->pose_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->pose_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->pose_length); + for( uint32_t i = 0; i < pose_length; i++){ + offset += this->pose[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->twist_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->twist_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->twist_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->twist_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->twist_length); + for( uint32_t i = 0; i < twist_length; i++){ + offset += this->twist[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->wrench_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->wrench_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->wrench_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->wrench_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->wrench_length); + for( uint32_t i = 0; i < wrench_length; i++){ + offset += this->wrench[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t name_lengthT = ((uint32_t) (*(inbuffer + offset))); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->name_length); + if(name_lengthT > name_length) + this->name = (char**)realloc(this->name, name_lengthT * sizeof(char*)); + name_length = name_lengthT; + for( uint32_t i = 0; i < name_length; i++){ + uint32_t length_st_name; + arrToVar(length_st_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_name-1]=0; + this->st_name = (char *)(inbuffer + offset-1); + offset += length_st_name; + memcpy( &(this->name[i]), &(this->st_name), sizeof(char*)); + } + uint32_t pose_lengthT = ((uint32_t) (*(inbuffer + offset))); + pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->pose_length); + if(pose_lengthT > pose_length) + this->pose = (geometry_msgs::Pose*)realloc(this->pose, pose_lengthT * sizeof(geometry_msgs::Pose)); + pose_length = pose_lengthT; + for( uint32_t i = 0; i < pose_length; i++){ + offset += this->st_pose.deserialize(inbuffer + offset); + memcpy( &(this->pose[i]), &(this->st_pose), sizeof(geometry_msgs::Pose)); + } + uint32_t twist_lengthT = ((uint32_t) (*(inbuffer + offset))); + twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->twist_length); + if(twist_lengthT > twist_length) + this->twist = (geometry_msgs::Twist*)realloc(this->twist, twist_lengthT * sizeof(geometry_msgs::Twist)); + twist_length = twist_lengthT; + for( uint32_t i = 0; i < twist_length; i++){ + offset += this->st_twist.deserialize(inbuffer + offset); + memcpy( &(this->twist[i]), &(this->st_twist), sizeof(geometry_msgs::Twist)); + } + uint32_t wrench_lengthT = ((uint32_t) (*(inbuffer + offset))); + wrench_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + wrench_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + wrench_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->wrench_length); + if(wrench_lengthT > wrench_length) + this->wrench = (geometry_msgs::Wrench*)realloc(this->wrench, wrench_lengthT * sizeof(geometry_msgs::Wrench)); + wrench_length = wrench_lengthT; + for( uint32_t i = 0; i < wrench_length; i++){ + offset += this->st_wrench.deserialize(inbuffer + offset); + memcpy( &(this->wrench[i]), &(this->st_wrench), sizeof(geometry_msgs::Wrench)); + } + return offset; + } + + const char * getType(){ return "gazebo_msgs/WorldState"; }; + const char * getMD5(){ return "de1a9de3ab7ba97ac0e9ec01a4eb481e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Accel.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Accel.h new file mode 100644 index 0000000..b5931f6 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Accel.h @@ -0,0 +1,49 @@ +#ifndef _ROS_geometry_msgs_Accel_h +#define _ROS_geometry_msgs_Accel_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Vector3.h" + +namespace geometry_msgs +{ + + class Accel : public ros::Msg + { + public: + typedef geometry_msgs::Vector3 _linear_type; + _linear_type linear; + typedef geometry_msgs::Vector3 _angular_type; + _angular_type angular; + + Accel(): + linear(), + angular() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->linear.serialize(outbuffer + offset); + offset += this->angular.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->linear.deserialize(inbuffer + offset); + offset += this->angular.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/Accel"; }; + const char * getMD5(){ return "9f195f881246fdfa2798d1d3eebca84a"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/AccelStamped.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/AccelStamped.h new file mode 100644 index 0000000..d7f7858 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/AccelStamped.h @@ -0,0 +1,50 @@ +#ifndef _ROS_geometry_msgs_AccelStamped_h +#define _ROS_geometry_msgs_AccelStamped_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Accel.h" + +namespace geometry_msgs +{ + + class AccelStamped : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::Accel _accel_type; + _accel_type accel; + + AccelStamped(): + header(), + accel() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->accel.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->accel.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/AccelStamped"; }; + const char * getMD5(){ return "d8a98a5d81351b6eb0578c78557e7659"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/AccelWithCovariance.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/AccelWithCovariance.h new file mode 100644 index 0000000..9ce6ca2 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/AccelWithCovariance.h @@ -0,0 +1,79 @@ +#ifndef _ROS_geometry_msgs_AccelWithCovariance_h +#define _ROS_geometry_msgs_AccelWithCovariance_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Accel.h" + +namespace geometry_msgs +{ + + class AccelWithCovariance : public ros::Msg + { + public: + typedef geometry_msgs::Accel _accel_type; + _accel_type accel; + double covariance[36]; + + AccelWithCovariance(): + accel(), + covariance() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->accel.serialize(outbuffer + offset); + for( uint32_t i = 0; i < 36; i++){ + union { + double real; + uint64_t base; + } u_covariancei; + u_covariancei.real = this->covariance[i]; + *(outbuffer + offset + 0) = (u_covariancei.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_covariancei.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_covariancei.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_covariancei.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_covariancei.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_covariancei.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_covariancei.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_covariancei.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->covariance[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->accel.deserialize(inbuffer + offset); + for( uint32_t i = 0; i < 36; i++){ + union { + double real; + uint64_t base; + } u_covariancei; + u_covariancei.base = 0; + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->covariance[i] = u_covariancei.real; + offset += sizeof(this->covariance[i]); + } + return offset; + } + + const char * getType(){ return "geometry_msgs/AccelWithCovariance"; }; + const char * getMD5(){ return "ad5a718d699c6be72a02b8d6a139f334"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/AccelWithCovarianceStamped.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/AccelWithCovarianceStamped.h new file mode 100644 index 0000000..3153d39 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/AccelWithCovarianceStamped.h @@ -0,0 +1,50 @@ +#ifndef _ROS_geometry_msgs_AccelWithCovarianceStamped_h +#define _ROS_geometry_msgs_AccelWithCovarianceStamped_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/AccelWithCovariance.h" + +namespace geometry_msgs +{ + + class AccelWithCovarianceStamped : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::AccelWithCovariance _accel_type; + _accel_type accel; + + AccelWithCovarianceStamped(): + header(), + accel() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->accel.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->accel.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/AccelWithCovarianceStamped"; }; + const char * getMD5(){ return "96adb295225031ec8d57fb4251b0a886"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Inertia.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Inertia.h new file mode 100644 index 0000000..4c487c0 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Inertia.h @@ -0,0 +1,268 @@ +#ifndef _ROS_geometry_msgs_Inertia_h +#define _ROS_geometry_msgs_Inertia_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Vector3.h" + +namespace geometry_msgs +{ + + class Inertia : public ros::Msg + { + public: + typedef double _m_type; + _m_type m; + typedef geometry_msgs::Vector3 _com_type; + _com_type com; + typedef double _ixx_type; + _ixx_type ixx; + typedef double _ixy_type; + _ixy_type ixy; + typedef double _ixz_type; + _ixz_type ixz; + typedef double _iyy_type; + _iyy_type iyy; + typedef double _iyz_type; + _iyz_type iyz; + typedef double _izz_type; + _izz_type izz; + + Inertia(): + m(0), + com(), + ixx(0), + ixy(0), + ixz(0), + iyy(0), + iyz(0), + izz(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_m; + u_m.real = this->m; + *(outbuffer + offset + 0) = (u_m.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_m.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_m.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_m.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_m.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_m.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_m.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_m.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->m); + offset += this->com.serialize(outbuffer + offset); + union { + double real; + uint64_t base; + } u_ixx; + u_ixx.real = this->ixx; + *(outbuffer + offset + 0) = (u_ixx.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_ixx.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_ixx.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_ixx.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_ixx.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_ixx.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_ixx.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_ixx.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->ixx); + union { + double real; + uint64_t base; + } u_ixy; + u_ixy.real = this->ixy; + *(outbuffer + offset + 0) = (u_ixy.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_ixy.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_ixy.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_ixy.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_ixy.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_ixy.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_ixy.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_ixy.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->ixy); + union { + double real; + uint64_t base; + } u_ixz; + u_ixz.real = this->ixz; + *(outbuffer + offset + 0) = (u_ixz.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_ixz.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_ixz.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_ixz.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_ixz.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_ixz.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_ixz.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_ixz.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->ixz); + union { + double real; + uint64_t base; + } u_iyy; + u_iyy.real = this->iyy; + *(outbuffer + offset + 0) = (u_iyy.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_iyy.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_iyy.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_iyy.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_iyy.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_iyy.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_iyy.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_iyy.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->iyy); + union { + double real; + uint64_t base; + } u_iyz; + u_iyz.real = this->iyz; + *(outbuffer + offset + 0) = (u_iyz.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_iyz.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_iyz.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_iyz.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_iyz.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_iyz.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_iyz.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_iyz.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->iyz); + union { + double real; + uint64_t base; + } u_izz; + u_izz.real = this->izz; + *(outbuffer + offset + 0) = (u_izz.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_izz.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_izz.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_izz.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_izz.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_izz.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_izz.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_izz.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->izz); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_m; + u_m.base = 0; + u_m.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_m.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_m.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_m.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_m.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_m.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_m.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_m.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->m = u_m.real; + offset += sizeof(this->m); + offset += this->com.deserialize(inbuffer + offset); + union { + double real; + uint64_t base; + } u_ixx; + u_ixx.base = 0; + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->ixx = u_ixx.real; + offset += sizeof(this->ixx); + union { + double real; + uint64_t base; + } u_ixy; + u_ixy.base = 0; + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->ixy = u_ixy.real; + offset += sizeof(this->ixy); + union { + double real; + uint64_t base; + } u_ixz; + u_ixz.base = 0; + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->ixz = u_ixz.real; + offset += sizeof(this->ixz); + union { + double real; + uint64_t base; + } u_iyy; + u_iyy.base = 0; + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->iyy = u_iyy.real; + offset += sizeof(this->iyy); + union { + double real; + uint64_t base; + } u_iyz; + u_iyz.base = 0; + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->iyz = u_iyz.real; + offset += sizeof(this->iyz); + union { + double real; + uint64_t base; + } u_izz; + u_izz.base = 0; + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->izz = u_izz.real; + offset += sizeof(this->izz); + return offset; + } + + const char * getType(){ return "geometry_msgs/Inertia"; }; + const char * getMD5(){ return "1d26e4bb6c83ff141c5cf0d883c2b0fe"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/InertiaStamped.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/InertiaStamped.h new file mode 100644 index 0000000..2d8c944 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/InertiaStamped.h @@ -0,0 +1,50 @@ +#ifndef _ROS_geometry_msgs_InertiaStamped_h +#define _ROS_geometry_msgs_InertiaStamped_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Inertia.h" + +namespace geometry_msgs +{ + + class InertiaStamped : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::Inertia _inertia_type; + _inertia_type inertia; + + InertiaStamped(): + header(), + inertia() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->inertia.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->inertia.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/InertiaStamped"; }; + const char * getMD5(){ return "ddee48caeab5a966c5e8d166654a9ac7"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Point.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Point.h new file mode 100644 index 0000000..4764c84 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Point.h @@ -0,0 +1,134 @@ +#ifndef _ROS_geometry_msgs_Point_h +#define _ROS_geometry_msgs_Point_h + +#include +#include +#include +#include "../ros/msg.h" + +namespace geometry_msgs +{ + + class Point : public ros::Msg + { + public: + typedef double _x_type; + _x_type x; + typedef double _y_type; + _y_type y; + typedef double _z_type; + _z_type z; + + Point(): + x(0), + y(0), + z(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_x; + u_x.real = this->x; + *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_x.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_x.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_x.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_x.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->x); + union { + double real; + uint64_t base; + } u_y; + u_y.real = this->y; + *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_y.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_y.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_y.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_y.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->y); + union { + double real; + uint64_t base; + } u_z; + u_z.real = this->z; + *(outbuffer + offset + 0) = (u_z.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_z.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_z.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_z.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_z.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_z.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_z.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_z.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->z); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_x; + u_x.base = 0; + u_x.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->x = u_x.real; + offset += sizeof(this->x); + union { + double real; + uint64_t base; + } u_y; + u_y.base = 0; + u_y.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->y = u_y.real; + offset += sizeof(this->y); + union { + double real; + uint64_t base; + } u_z; + u_z.base = 0; + u_z.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->z = u_z.real; + offset += sizeof(this->z); + return offset; + } + + const char * getType(){ return "geometry_msgs/Point"; }; + const char * getMD5(){ return "4a842b65f413084dc2b10fb484ea7f17"; }; + + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Point32.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Point32.h new file mode 100644 index 0000000..8c3b572 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Point32.h @@ -0,0 +1,110 @@ +#ifndef _ROS_geometry_msgs_Point32_h +#define _ROS_geometry_msgs_Point32_h + +#include +#include +#include +#include "ros/msg.h" + +namespace geometry_msgs +{ + + class Point32 : public ros::Msg + { + public: + typedef float _x_type; + _x_type x; + typedef float _y_type; + _y_type y; + typedef float _z_type; + _z_type z; + + Point32(): + x(0), + y(0), + z(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + float real; + uint32_t base; + } u_x; + u_x.real = this->x; + *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->x); + union { + float real; + uint32_t base; + } u_y; + u_y.real = this->y; + *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->y); + union { + float real; + uint32_t base; + } u_z; + u_z.real = this->z; + *(outbuffer + offset + 0) = (u_z.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_z.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_z.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_z.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->z); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + float real; + uint32_t base; + } u_x; + u_x.base = 0; + u_x.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->x = u_x.real; + offset += sizeof(this->x); + union { + float real; + uint32_t base; + } u_y; + u_y.base = 0; + u_y.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->y = u_y.real; + offset += sizeof(this->y); + union { + float real; + uint32_t base; + } u_z; + u_z.base = 0; + u_z.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_z.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_z.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_z.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->z = u_z.real; + offset += sizeof(this->z); + return offset; + } + + const char * getType(){ return "geometry_msgs/Point32"; }; + const char * getMD5(){ return "cc153912f1453b708d221682bc23d9ac"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/PointStamped.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/PointStamped.h new file mode 100644 index 0000000..ce24530 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/PointStamped.h @@ -0,0 +1,50 @@ +#ifndef _ROS_geometry_msgs_PointStamped_h +#define _ROS_geometry_msgs_PointStamped_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Point.h" + +namespace geometry_msgs +{ + + class PointStamped : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::Point _point_type; + _point_type point; + + PointStamped(): + header(), + point() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->point.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->point.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/PointStamped"; }; + const char * getMD5(){ return "c63aecb41bfdfd6b7e1fac37c7cbe7bf"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Polygon.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Polygon.h new file mode 100644 index 0000000..8ff3276 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Polygon.h @@ -0,0 +1,64 @@ +#ifndef _ROS_geometry_msgs_Polygon_h +#define _ROS_geometry_msgs_Polygon_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Point32.h" + +namespace geometry_msgs +{ + + class Polygon : public ros::Msg + { + public: + uint32_t points_length; + typedef geometry_msgs::Point32 _points_type; + _points_type st_points; + _points_type * points; + + Polygon(): + points_length(0), points(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->points_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->points_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->points_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->points_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->points_length); + for( uint32_t i = 0; i < points_length; i++){ + offset += this->points[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t points_lengthT = ((uint32_t) (*(inbuffer + offset))); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->points_length); + if(points_lengthT > points_length) + this->points = (geometry_msgs::Point32*)realloc(this->points, points_lengthT * sizeof(geometry_msgs::Point32)); + points_length = points_lengthT; + for( uint32_t i = 0; i < points_length; i++){ + offset += this->st_points.deserialize(inbuffer + offset); + memcpy( &(this->points[i]), &(this->st_points), sizeof(geometry_msgs::Point32)); + } + return offset; + } + + const char * getType(){ return "geometry_msgs/Polygon"; }; + const char * getMD5(){ return "cd60a26494a087f577976f0329fa120e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/PolygonStamped.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/PolygonStamped.h new file mode 100644 index 0000000..badc359 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/PolygonStamped.h @@ -0,0 +1,50 @@ +#ifndef _ROS_geometry_msgs_PolygonStamped_h +#define _ROS_geometry_msgs_PolygonStamped_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Polygon.h" + +namespace geometry_msgs +{ + + class PolygonStamped : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::Polygon _polygon_type; + _polygon_type polygon; + + PolygonStamped(): + header(), + polygon() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->polygon.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->polygon.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/PolygonStamped"; }; + const char * getMD5(){ return "c6be8f7dc3bee7fe9e8d296070f53340"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Pose.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Pose.h new file mode 100644 index 0000000..1a9f46c --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Pose.h @@ -0,0 +1,50 @@ +#ifndef _ROS_geometry_msgs_Pose_h +#define _ROS_geometry_msgs_Pose_h + +#include +#include +#include +#include "../ros/msg.h" +#include "../geometry_msgs/Point.h" +#include "../geometry_msgs/Quaternion.h" + +namespace geometry_msgs +{ + + class Pose : public ros::Msg + { + public: + typedef geometry_msgs::Point _position_type; + _position_type position; + typedef geometry_msgs::Quaternion _orientation_type; + _orientation_type orientation; + + Pose(): + position(), + orientation() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->position.serialize(outbuffer + offset); + offset += this->orientation.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->position.deserialize(inbuffer + offset); + offset += this->orientation.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/Pose"; }; + const char * getMD5(){ return "e45d45a5a1ce597b249e23fb30fc871f"; }; + + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Pose2D.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Pose2D.h new file mode 100644 index 0000000..2858588 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Pose2D.h @@ -0,0 +1,134 @@ +#ifndef _ROS_geometry_msgs_Pose2D_h +#define _ROS_geometry_msgs_Pose2D_h + +#include +#include +#include +#include "ros/msg.h" + +namespace geometry_msgs +{ + + class Pose2D : public ros::Msg + { + public: + typedef double _x_type; + _x_type x; + typedef double _y_type; + _y_type y; + typedef double _theta_type; + _theta_type theta; + + Pose2D(): + x(0), + y(0), + theta(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_x; + u_x.real = this->x; + *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_x.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_x.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_x.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_x.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->x); + union { + double real; + uint64_t base; + } u_y; + u_y.real = this->y; + *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_y.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_y.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_y.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_y.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->y); + union { + double real; + uint64_t base; + } u_theta; + u_theta.real = this->theta; + *(outbuffer + offset + 0) = (u_theta.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_theta.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_theta.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_theta.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_theta.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_theta.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_theta.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_theta.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->theta); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_x; + u_x.base = 0; + u_x.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->x = u_x.real; + offset += sizeof(this->x); + union { + double real; + uint64_t base; + } u_y; + u_y.base = 0; + u_y.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->y = u_y.real; + offset += sizeof(this->y); + union { + double real; + uint64_t base; + } u_theta; + u_theta.base = 0; + u_theta.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_theta.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_theta.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_theta.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_theta.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_theta.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_theta.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_theta.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->theta = u_theta.real; + offset += sizeof(this->theta); + return offset; + } + + const char * getType(){ return "geometry_msgs/Pose2D"; }; + const char * getMD5(){ return "938fa65709584ad8e77d238529be13b8"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/PoseArray.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/PoseArray.h new file mode 100644 index 0000000..9e6a89e --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/PoseArray.h @@ -0,0 +1,70 @@ +#ifndef _ROS_geometry_msgs_PoseArray_h +#define _ROS_geometry_msgs_PoseArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Pose.h" + +namespace geometry_msgs +{ + + class PoseArray : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t poses_length; + typedef geometry_msgs::Pose _poses_type; + _poses_type st_poses; + _poses_type * poses; + + PoseArray(): + header(), + poses_length(0), poses(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->poses_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->poses_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->poses_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->poses_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->poses_length); + for( uint32_t i = 0; i < poses_length; i++){ + offset += this->poses[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t poses_lengthT = ((uint32_t) (*(inbuffer + offset))); + poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->poses_length); + if(poses_lengthT > poses_length) + this->poses = (geometry_msgs::Pose*)realloc(this->poses, poses_lengthT * sizeof(geometry_msgs::Pose)); + poses_length = poses_lengthT; + for( uint32_t i = 0; i < poses_length; i++){ + offset += this->st_poses.deserialize(inbuffer + offset); + memcpy( &(this->poses[i]), &(this->st_poses), sizeof(geometry_msgs::Pose)); + } + return offset; + } + + const char * getType(){ return "geometry_msgs/PoseArray"; }; + const char * getMD5(){ return "916c28c5764443f268b296bb671b9d97"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/PoseStamped.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/PoseStamped.h new file mode 100644 index 0000000..cb79251 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/PoseStamped.h @@ -0,0 +1,50 @@ +#ifndef _ROS_geometry_msgs_PoseStamped_h +#define _ROS_geometry_msgs_PoseStamped_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Pose.h" + +namespace geometry_msgs +{ + + class PoseStamped : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::Pose _pose_type; + _pose_type pose; + + PoseStamped(): + header(), + pose() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->pose.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->pose.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/PoseStamped"; }; + const char * getMD5(){ return "d3812c3cbc69362b77dc0b19b345f8f5"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/PoseWithCovariance.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/PoseWithCovariance.h new file mode 100644 index 0000000..92cb1ce --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/PoseWithCovariance.h @@ -0,0 +1,79 @@ +#ifndef _ROS_geometry_msgs_PoseWithCovariance_h +#define _ROS_geometry_msgs_PoseWithCovariance_h + +#include +#include +#include +#include "../ros/msg.h" +#include "../geometry_msgs/Pose.h" + +namespace geometry_msgs +{ + + class PoseWithCovariance : public ros::Msg + { + public: + typedef geometry_msgs::Pose _pose_type; + _pose_type pose; + double covariance[36]; + + PoseWithCovariance(): + pose(), + covariance() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->pose.serialize(outbuffer + offset); + for( uint32_t i = 0; i < 36; i++){ + union { + double real; + uint64_t base; + } u_covariancei; + u_covariancei.real = this->covariance[i]; + *(outbuffer + offset + 0) = (u_covariancei.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_covariancei.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_covariancei.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_covariancei.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_covariancei.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_covariancei.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_covariancei.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_covariancei.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->covariance[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->pose.deserialize(inbuffer + offset); + for( uint32_t i = 0; i < 36; i++){ + union { + double real; + uint64_t base; + } u_covariancei; + u_covariancei.base = 0; + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->covariance[i] = u_covariancei.real; + offset += sizeof(this->covariance[i]); + } + return offset; + } + + const char * getType(){ return "geometry_msgs/PoseWithCovariance"; }; + const char * getMD5(){ return "c23e848cf1b7533a8d7c259073a97e6f"; }; + + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/PoseWithCovarianceStamped.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/PoseWithCovarianceStamped.h new file mode 100644 index 0000000..db623cd --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/PoseWithCovarianceStamped.h @@ -0,0 +1,50 @@ +#ifndef _ROS_geometry_msgs_PoseWithCovarianceStamped_h +#define _ROS_geometry_msgs_PoseWithCovarianceStamped_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/PoseWithCovariance.h" + +namespace geometry_msgs +{ + + class PoseWithCovarianceStamped : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::PoseWithCovariance _pose_type; + _pose_type pose; + + PoseWithCovarianceStamped(): + header(), + pose() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->pose.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->pose.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/PoseWithCovarianceStamped"; }; + const char * getMD5(){ return "953b798c0f514ff060a53a3498ce6246"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Quaternion.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Quaternion.h new file mode 100644 index 0000000..19f4bb8 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Quaternion.h @@ -0,0 +1,166 @@ +#ifndef _ROS_geometry_msgs_Quaternion_h +#define _ROS_geometry_msgs_Quaternion_h + +#include +#include +#include +#include "../ros/msg.h" + +namespace geometry_msgs +{ + + class Quaternion : public ros::Msg + { + public: + typedef double _x_type; + _x_type x; + typedef double _y_type; + _y_type y; + typedef double _z_type; + _z_type z; + typedef double _w_type; + _w_type w; + + Quaternion(): + x(0), + y(0), + z(0), + w(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_x; + u_x.real = this->x; + *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_x.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_x.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_x.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_x.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->x); + union { + double real; + uint64_t base; + } u_y; + u_y.real = this->y; + *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_y.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_y.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_y.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_y.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->y); + union { + double real; + uint64_t base; + } u_z; + u_z.real = this->z; + *(outbuffer + offset + 0) = (u_z.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_z.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_z.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_z.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_z.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_z.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_z.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_z.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->z); + union { + double real; + uint64_t base; + } u_w; + u_w.real = this->w; + *(outbuffer + offset + 0) = (u_w.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_w.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_w.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_w.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_w.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_w.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_w.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_w.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->w); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_x; + u_x.base = 0; + u_x.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->x = u_x.real; + offset += sizeof(this->x); + union { + double real; + uint64_t base; + } u_y; + u_y.base = 0; + u_y.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->y = u_y.real; + offset += sizeof(this->y); + union { + double real; + uint64_t base; + } u_z; + u_z.base = 0; + u_z.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->z = u_z.real; + offset += sizeof(this->z); + union { + double real; + uint64_t base; + } u_w; + u_w.base = 0; + u_w.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_w.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_w.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_w.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_w.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_w.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_w.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_w.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->w = u_w.real; + offset += sizeof(this->w); + return offset; + } + + const char * getType(){ return "geometry_msgs/Quaternion"; }; + const char * getMD5(){ return "a779879fadf0160734f906b8c19c7004"; }; + + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/QuaternionStamped.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/QuaternionStamped.h new file mode 100644 index 0000000..626358d --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/QuaternionStamped.h @@ -0,0 +1,50 @@ +#ifndef _ROS_geometry_msgs_QuaternionStamped_h +#define _ROS_geometry_msgs_QuaternionStamped_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Quaternion.h" + +namespace geometry_msgs +{ + + class QuaternionStamped : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::Quaternion _quaternion_type; + _quaternion_type quaternion; + + QuaternionStamped(): + header(), + quaternion() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->quaternion.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->quaternion.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/QuaternionStamped"; }; + const char * getMD5(){ return "e57f1e547e0e1fd13504588ffc8334e2"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Transform.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Transform.h new file mode 100644 index 0000000..27a9944 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Transform.h @@ -0,0 +1,50 @@ +#ifndef _ROS_geometry_msgs_Transform_h +#define _ROS_geometry_msgs_Transform_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Vector3.h" +#include "geometry_msgs/Quaternion.h" + +namespace geometry_msgs +{ + + class Transform : public ros::Msg + { + public: + typedef geometry_msgs::Vector3 _translation_type; + _translation_type translation; + typedef geometry_msgs::Quaternion _rotation_type; + _rotation_type rotation; + + Transform(): + translation(), + rotation() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->translation.serialize(outbuffer + offset); + offset += this->rotation.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->translation.deserialize(inbuffer + offset); + offset += this->rotation.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/Transform"; }; + const char * getMD5(){ return "ac9eff44abf714214112b05d54a3cf9b"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/TransformStamped.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/TransformStamped.h new file mode 100644 index 0000000..b197b54 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/TransformStamped.h @@ -0,0 +1,67 @@ +#ifndef _ROS_geometry_msgs_TransformStamped_h +#define _ROS_geometry_msgs_TransformStamped_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Transform.h" + +namespace geometry_msgs +{ + + class TransformStamped : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef const char* _child_frame_id_type; + _child_frame_id_type child_frame_id; + typedef geometry_msgs::Transform _transform_type; + _transform_type transform; + + TransformStamped(): + header(), + child_frame_id(""), + transform() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + uint32_t length_child_frame_id = strlen(this->child_frame_id); + varToArr(outbuffer + offset, length_child_frame_id); + offset += 4; + memcpy(outbuffer + offset, this->child_frame_id, length_child_frame_id); + offset += length_child_frame_id; + offset += this->transform.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t length_child_frame_id; + arrToVar(length_child_frame_id, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_child_frame_id; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_child_frame_id-1]=0; + this->child_frame_id = (char *)(inbuffer + offset-1); + offset += length_child_frame_id; + offset += this->transform.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/TransformStamped"; }; + const char * getMD5(){ return "b5764a33bfeb3588febc2682852579b0"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Twist.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Twist.h new file mode 100644 index 0000000..a6f980a --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Twist.h @@ -0,0 +1,51 @@ +#ifndef _ROS_geometry_msgs_Twist_h +#define _ROS_geometry_msgs_Twist_h + +#include +#include +#include +#include "../ros/msg.h" +#include "../geometry_msgs/Vector3.h" + +namespace geometry_msgs +{ + + class Twist : public ros::Msg + { + public: + typedef geometry_msgs::Vector3 _linear_type; + _linear_type linear; + typedef geometry_msgs::Vector3 _angular_type; + _angular_type angular; + + Twist(): + linear(), + angular() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->linear.serialize(outbuffer + offset); + offset += this->angular.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->linear.deserialize(inbuffer + offset); + offset += this->angular.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/Twist"; }; + const char * getMD5(){ return "9f195f881246fdfa2798d1d3eebca84a"; }; + + }; + +} + + +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/TwistStamped.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/TwistStamped.h new file mode 100644 index 0000000..40143c8 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/TwistStamped.h @@ -0,0 +1,50 @@ +#ifndef _ROS_geometry_msgs_TwistStamped_h +#define _ROS_geometry_msgs_TwistStamped_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Twist.h" + +namespace geometry_msgs +{ + + class TwistStamped : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::Twist _twist_type; + _twist_type twist; + + TwistStamped(): + header(), + twist() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->twist.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->twist.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/TwistStamped"; }; + const char * getMD5(){ return "98d34b0043a2093cf9d9345ab6eef12e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/TwistWithCovariance.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/TwistWithCovariance.h new file mode 100644 index 0000000..ab6fb61 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/TwistWithCovariance.h @@ -0,0 +1,79 @@ +#ifndef _ROS_geometry_msgs_TwistWithCovariance_h +#define _ROS_geometry_msgs_TwistWithCovariance_h + +#include +#include +#include +#include "../ros/msg.h" +#include "../geometry_msgs/Twist.h" + +namespace geometry_msgs +{ + + class TwistWithCovariance : public ros::Msg + { + public: + typedef geometry_msgs::Twist _twist_type; + _twist_type twist; + double covariance[36]; + + TwistWithCovariance(): + twist(), + covariance() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->twist.serialize(outbuffer + offset); + for( uint32_t i = 0; i < 36; i++){ + union { + double real; + uint64_t base; + } u_covariancei; + u_covariancei.real = this->covariance[i]; + *(outbuffer + offset + 0) = (u_covariancei.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_covariancei.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_covariancei.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_covariancei.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_covariancei.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_covariancei.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_covariancei.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_covariancei.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->covariance[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->twist.deserialize(inbuffer + offset); + for( uint32_t i = 0; i < 36; i++){ + union { + double real; + uint64_t base; + } u_covariancei; + u_covariancei.base = 0; + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->covariance[i] = u_covariancei.real; + offset += sizeof(this->covariance[i]); + } + return offset; + } + + const char * getType(){ return "geometry_msgs/TwistWithCovariance"; }; + const char * getMD5(){ return "1fe8a28e6890a4cc3ae4c3ca5c7d82e6"; }; + + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/TwistWithCovarianceStamped.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/TwistWithCovarianceStamped.h new file mode 100644 index 0000000..701edff --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/TwistWithCovarianceStamped.h @@ -0,0 +1,50 @@ +#ifndef _ROS_geometry_msgs_TwistWithCovarianceStamped_h +#define _ROS_geometry_msgs_TwistWithCovarianceStamped_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/TwistWithCovariance.h" + +namespace geometry_msgs +{ + + class TwistWithCovarianceStamped : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::TwistWithCovariance _twist_type; + _twist_type twist; + + TwistWithCovarianceStamped(): + header(), + twist() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->twist.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->twist.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/TwistWithCovarianceStamped"; }; + const char * getMD5(){ return "8927a1a12fb2607ceea095b2dc440a96"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Vector3.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Vector3.h new file mode 100644 index 0000000..efbab98 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Vector3.h @@ -0,0 +1,134 @@ +#ifndef _ROS_geometry_msgs_Vector3_h +#define _ROS_geometry_msgs_Vector3_h + +#include +#include +#include +#include "../ros/msg.h" + +namespace geometry_msgs +{ + + class Vector3 : public ros::Msg + { + public: + typedef double _x_type; + _x_type x; + typedef double _y_type; + _y_type y; + typedef double _z_type; + _z_type z; + + Vector3(): + x(0), + y(0), + z(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_x; + u_x.real = this->x; + *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_x.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_x.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_x.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_x.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->x); + union { + double real; + uint64_t base; + } u_y; + u_y.real = this->y; + *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_y.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_y.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_y.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_y.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->y); + union { + double real; + uint64_t base; + } u_z; + u_z.real = this->z; + *(outbuffer + offset + 0) = (u_z.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_z.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_z.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_z.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_z.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_z.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_z.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_z.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->z); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_x; + u_x.base = 0; + u_x.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->x = u_x.real; + offset += sizeof(this->x); + union { + double real; + uint64_t base; + } u_y; + u_y.base = 0; + u_y.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->y = u_y.real; + offset += sizeof(this->y); + union { + double real; + uint64_t base; + } u_z; + u_z.base = 0; + u_z.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->z = u_z.real; + offset += sizeof(this->z); + return offset; + } + + const char * getType(){ return "geometry_msgs/Vector3"; }; + const char * getMD5(){ return "4a842b65f413084dc2b10fb484ea7f17"; }; + + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Vector3Stamped.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Vector3Stamped.h new file mode 100644 index 0000000..9032066 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Vector3Stamped.h @@ -0,0 +1,50 @@ +#ifndef _ROS_geometry_msgs_Vector3Stamped_h +#define _ROS_geometry_msgs_Vector3Stamped_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Vector3.h" + +namespace geometry_msgs +{ + + class Vector3Stamped : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::Vector3 _vector_type; + _vector_type vector; + + Vector3Stamped(): + header(), + vector() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->vector.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->vector.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/Vector3Stamped"; }; + const char * getMD5(){ return "7b324c7325e683bf02a9b14b01090ec7"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Wrench.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Wrench.h new file mode 100644 index 0000000..52e5934 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/Wrench.h @@ -0,0 +1,49 @@ +#ifndef _ROS_geometry_msgs_Wrench_h +#define _ROS_geometry_msgs_Wrench_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Vector3.h" + +namespace geometry_msgs +{ + + class Wrench : public ros::Msg + { + public: + typedef geometry_msgs::Vector3 _force_type; + _force_type force; + typedef geometry_msgs::Vector3 _torque_type; + _torque_type torque; + + Wrench(): + force(), + torque() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->force.serialize(outbuffer + offset); + offset += this->torque.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->force.deserialize(inbuffer + offset); + offset += this->torque.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/Wrench"; }; + const char * getMD5(){ return "4f539cf138b23283b520fd271b567936"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/WrenchStamped.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/WrenchStamped.h new file mode 100644 index 0000000..41b82f9 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/WrenchStamped.h @@ -0,0 +1,50 @@ +#ifndef _ROS_geometry_msgs_WrenchStamped_h +#define _ROS_geometry_msgs_WrenchStamped_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Wrench.h" + +namespace geometry_msgs +{ + + class WrenchStamped : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::Wrench _wrench_type; + _wrench_type wrench; + + WrenchStamped(): + header(), + wrench() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->wrench.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->wrench.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/WrenchStamped"; }; + const char * getMD5(){ return "d78d3cb249ce23087ade7e7d0c40cfa7"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/image_exposure_msgs/ExposureSequence.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/image_exposure_msgs/ExposureSequence.h new file mode 100644 index 0000000..7cbcdf7 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/image_exposure_msgs/ExposureSequence.h @@ -0,0 +1,119 @@ +#ifndef _ROS_image_exposure_msgs_ExposureSequence_h +#define _ROS_image_exposure_msgs_ExposureSequence_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace image_exposure_msgs +{ + + class ExposureSequence : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t shutter_length; + typedef uint32_t _shutter_type; + _shutter_type st_shutter; + _shutter_type * shutter; + typedef float _gain_type; + _gain_type gain; + typedef uint16_t _white_balance_blue_type; + _white_balance_blue_type white_balance_blue; + typedef uint16_t _white_balance_red_type; + _white_balance_red_type white_balance_red; + + ExposureSequence(): + header(), + shutter_length(0), shutter(NULL), + gain(0), + white_balance_blue(0), + white_balance_red(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->shutter_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->shutter_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->shutter_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->shutter_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->shutter_length); + for( uint32_t i = 0; i < shutter_length; i++){ + *(outbuffer + offset + 0) = (this->shutter[i] >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->shutter[i] >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->shutter[i] >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->shutter[i] >> (8 * 3)) & 0xFF; + offset += sizeof(this->shutter[i]); + } + union { + float real; + uint32_t base; + } u_gain; + u_gain.real = this->gain; + *(outbuffer + offset + 0) = (u_gain.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_gain.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_gain.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_gain.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->gain); + *(outbuffer + offset + 0) = (this->white_balance_blue >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->white_balance_blue >> (8 * 1)) & 0xFF; + offset += sizeof(this->white_balance_blue); + *(outbuffer + offset + 0) = (this->white_balance_red >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->white_balance_red >> (8 * 1)) & 0xFF; + offset += sizeof(this->white_balance_red); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t shutter_lengthT = ((uint32_t) (*(inbuffer + offset))); + shutter_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + shutter_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + shutter_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->shutter_length); + if(shutter_lengthT > shutter_length) + this->shutter = (uint32_t*)realloc(this->shutter, shutter_lengthT * sizeof(uint32_t)); + shutter_length = shutter_lengthT; + for( uint32_t i = 0; i < shutter_length; i++){ + this->st_shutter = ((uint32_t) (*(inbuffer + offset))); + this->st_shutter |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->st_shutter |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->st_shutter |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->st_shutter); + memcpy( &(this->shutter[i]), &(this->st_shutter), sizeof(uint32_t)); + } + union { + float real; + uint32_t base; + } u_gain; + u_gain.base = 0; + u_gain.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_gain.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_gain.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_gain.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->gain = u_gain.real; + offset += sizeof(this->gain); + this->white_balance_blue = ((uint16_t) (*(inbuffer + offset))); + this->white_balance_blue |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->white_balance_blue); + this->white_balance_red = ((uint16_t) (*(inbuffer + offset))); + this->white_balance_red |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->white_balance_red); + return offset; + } + + const char * getType(){ return "image_exposure_msgs/ExposureSequence"; }; + const char * getMD5(){ return "81d98e1e20eab8beb4bd07beeba6a398"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/image_exposure_msgs/ImageExposureStatistics.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/image_exposure_msgs/ImageExposureStatistics.h new file mode 100644 index 0000000..2c366c3 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/image_exposure_msgs/ImageExposureStatistics.h @@ -0,0 +1,324 @@ +#ifndef _ROS_image_exposure_msgs_ImageExposureStatistics_h +#define _ROS_image_exposure_msgs_ImageExposureStatistics_h + +#include +#include +#include +#include "ros/msg.h" +#include "ros/time.h" +#include "statistics_msgs/Stats1D.h" + +namespace image_exposure_msgs +{ + + class ImageExposureStatistics : public ros::Msg + { + public: + typedef ros::Time _stamp_type; + _stamp_type stamp; + typedef const char* _time_reference_type; + _time_reference_type time_reference; + typedef float _shutterms_type; + _shutterms_type shutterms; + typedef float _gaindb_type; + _gaindb_type gaindb; + typedef uint32_t _underExposed_type; + _underExposed_type underExposed; + typedef uint32_t _overExposed_type; + _overExposed_type overExposed; + typedef statistics_msgs::Stats1D _pixelVal_type; + _pixelVal_type pixelVal; + typedef statistics_msgs::Stats1D _pixelAge_type; + _pixelAge_type pixelAge; + typedef double _meanIrradiance_type; + _meanIrradiance_type meanIrradiance; + typedef double _minMeasurableIrradiance_type; + _minMeasurableIrradiance_type minMeasurableIrradiance; + typedef double _maxMeasurableIrradiance_type; + _maxMeasurableIrradiance_type maxMeasurableIrradiance; + typedef double _minObservedIrradiance_type; + _minObservedIrradiance_type minObservedIrradiance; + typedef double _maxObservedIrradiance_type; + _maxObservedIrradiance_type maxObservedIrradiance; + + ImageExposureStatistics(): + stamp(), + time_reference(""), + shutterms(0), + gaindb(0), + underExposed(0), + overExposed(0), + pixelVal(), + pixelAge(), + meanIrradiance(0), + minMeasurableIrradiance(0), + maxMeasurableIrradiance(0), + minObservedIrradiance(0), + maxObservedIrradiance(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->stamp.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp.sec); + *(outbuffer + offset + 0) = (this->stamp.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp.nsec); + uint32_t length_time_reference = strlen(this->time_reference); + varToArr(outbuffer + offset, length_time_reference); + offset += 4; + memcpy(outbuffer + offset, this->time_reference, length_time_reference); + offset += length_time_reference; + union { + float real; + uint32_t base; + } u_shutterms; + u_shutterms.real = this->shutterms; + *(outbuffer + offset + 0) = (u_shutterms.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_shutterms.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_shutterms.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_shutterms.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->shutterms); + union { + float real; + uint32_t base; + } u_gaindb; + u_gaindb.real = this->gaindb; + *(outbuffer + offset + 0) = (u_gaindb.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_gaindb.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_gaindb.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_gaindb.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->gaindb); + *(outbuffer + offset + 0) = (this->underExposed >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->underExposed >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->underExposed >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->underExposed >> (8 * 3)) & 0xFF; + offset += sizeof(this->underExposed); + *(outbuffer + offset + 0) = (this->overExposed >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->overExposed >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->overExposed >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->overExposed >> (8 * 3)) & 0xFF; + offset += sizeof(this->overExposed); + offset += this->pixelVal.serialize(outbuffer + offset); + offset += this->pixelAge.serialize(outbuffer + offset); + union { + double real; + uint64_t base; + } u_meanIrradiance; + u_meanIrradiance.real = this->meanIrradiance; + *(outbuffer + offset + 0) = (u_meanIrradiance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_meanIrradiance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_meanIrradiance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_meanIrradiance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_meanIrradiance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_meanIrradiance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_meanIrradiance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_meanIrradiance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->meanIrradiance); + union { + double real; + uint64_t base; + } u_minMeasurableIrradiance; + u_minMeasurableIrradiance.real = this->minMeasurableIrradiance; + *(outbuffer + offset + 0) = (u_minMeasurableIrradiance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_minMeasurableIrradiance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_minMeasurableIrradiance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_minMeasurableIrradiance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_minMeasurableIrradiance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_minMeasurableIrradiance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_minMeasurableIrradiance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_minMeasurableIrradiance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->minMeasurableIrradiance); + union { + double real; + uint64_t base; + } u_maxMeasurableIrradiance; + u_maxMeasurableIrradiance.real = this->maxMeasurableIrradiance; + *(outbuffer + offset + 0) = (u_maxMeasurableIrradiance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_maxMeasurableIrradiance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_maxMeasurableIrradiance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_maxMeasurableIrradiance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_maxMeasurableIrradiance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_maxMeasurableIrradiance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_maxMeasurableIrradiance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_maxMeasurableIrradiance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->maxMeasurableIrradiance); + union { + double real; + uint64_t base; + } u_minObservedIrradiance; + u_minObservedIrradiance.real = this->minObservedIrradiance; + *(outbuffer + offset + 0) = (u_minObservedIrradiance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_minObservedIrradiance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_minObservedIrradiance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_minObservedIrradiance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_minObservedIrradiance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_minObservedIrradiance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_minObservedIrradiance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_minObservedIrradiance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->minObservedIrradiance); + union { + double real; + uint64_t base; + } u_maxObservedIrradiance; + u_maxObservedIrradiance.real = this->maxObservedIrradiance; + *(outbuffer + offset + 0) = (u_maxObservedIrradiance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_maxObservedIrradiance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_maxObservedIrradiance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_maxObservedIrradiance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_maxObservedIrradiance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_maxObservedIrradiance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_maxObservedIrradiance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_maxObservedIrradiance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->maxObservedIrradiance); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->stamp.sec = ((uint32_t) (*(inbuffer + offset))); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp.sec); + this->stamp.nsec = ((uint32_t) (*(inbuffer + offset))); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp.nsec); + uint32_t length_time_reference; + arrToVar(length_time_reference, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_time_reference; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_time_reference-1]=0; + this->time_reference = (char *)(inbuffer + offset-1); + offset += length_time_reference; + union { + float real; + uint32_t base; + } u_shutterms; + u_shutterms.base = 0; + u_shutterms.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_shutterms.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_shutterms.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_shutterms.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->shutterms = u_shutterms.real; + offset += sizeof(this->shutterms); + union { + float real; + uint32_t base; + } u_gaindb; + u_gaindb.base = 0; + u_gaindb.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_gaindb.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_gaindb.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_gaindb.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->gaindb = u_gaindb.real; + offset += sizeof(this->gaindb); + this->underExposed = ((uint32_t) (*(inbuffer + offset))); + this->underExposed |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->underExposed |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->underExposed |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->underExposed); + this->overExposed = ((uint32_t) (*(inbuffer + offset))); + this->overExposed |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->overExposed |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->overExposed |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->overExposed); + offset += this->pixelVal.deserialize(inbuffer + offset); + offset += this->pixelAge.deserialize(inbuffer + offset); + union { + double real; + uint64_t base; + } u_meanIrradiance; + u_meanIrradiance.base = 0; + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->meanIrradiance = u_meanIrradiance.real; + offset += sizeof(this->meanIrradiance); + union { + double real; + uint64_t base; + } u_minMeasurableIrradiance; + u_minMeasurableIrradiance.base = 0; + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->minMeasurableIrradiance = u_minMeasurableIrradiance.real; + offset += sizeof(this->minMeasurableIrradiance); + union { + double real; + uint64_t base; + } u_maxMeasurableIrradiance; + u_maxMeasurableIrradiance.base = 0; + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->maxMeasurableIrradiance = u_maxMeasurableIrradiance.real; + offset += sizeof(this->maxMeasurableIrradiance); + union { + double real; + uint64_t base; + } u_minObservedIrradiance; + u_minObservedIrradiance.base = 0; + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->minObservedIrradiance = u_minObservedIrradiance.real; + offset += sizeof(this->minObservedIrradiance); + union { + double real; + uint64_t base; + } u_maxObservedIrradiance; + u_maxObservedIrradiance.base = 0; + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->maxObservedIrradiance = u_maxObservedIrradiance.real; + offset += sizeof(this->maxObservedIrradiance); + return offset; + } + + const char * getType(){ return "image_exposure_msgs/ImageExposureStatistics"; }; + const char * getMD5(){ return "334dc170ce6287d1de470f25be78dd9e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/image_exposure_msgs/SequenceExposureStatistics.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/image_exposure_msgs/SequenceExposureStatistics.h new file mode 100644 index 0000000..2ba1b31 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/image_exposure_msgs/SequenceExposureStatistics.h @@ -0,0 +1,250 @@ +#ifndef _ROS_image_exposure_msgs_SequenceExposureStatistics_h +#define _ROS_image_exposure_msgs_SequenceExposureStatistics_h + +#include +#include +#include +#include "ros/msg.h" +#include "image_exposure_msgs/ImageExposureStatistics.h" + +namespace image_exposure_msgs +{ + + class SequenceExposureStatistics : public ros::Msg + { + public: + uint32_t exposures_length; + typedef image_exposure_msgs::ImageExposureStatistics _exposures_type; + _exposures_type st_exposures; + _exposures_type * exposures; + typedef uint32_t _underExposed_type; + _underExposed_type underExposed; + typedef uint32_t _overExposed_type; + _overExposed_type overExposed; + typedef double _meanIrradiance_type; + _meanIrradiance_type meanIrradiance; + typedef double _minMeasurableIrradiance_type; + _minMeasurableIrradiance_type minMeasurableIrradiance; + typedef double _maxMeasurableIrradiance_type; + _maxMeasurableIrradiance_type maxMeasurableIrradiance; + typedef double _minObservedIrradiance_type; + _minObservedIrradiance_type minObservedIrradiance; + typedef double _maxObservedIrradiance_type; + _maxObservedIrradiance_type maxObservedIrradiance; + + SequenceExposureStatistics(): + exposures_length(0), exposures(NULL), + underExposed(0), + overExposed(0), + meanIrradiance(0), + minMeasurableIrradiance(0), + maxMeasurableIrradiance(0), + minObservedIrradiance(0), + maxObservedIrradiance(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->exposures_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->exposures_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->exposures_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->exposures_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->exposures_length); + for( uint32_t i = 0; i < exposures_length; i++){ + offset += this->exposures[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->underExposed >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->underExposed >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->underExposed >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->underExposed >> (8 * 3)) & 0xFF; + offset += sizeof(this->underExposed); + *(outbuffer + offset + 0) = (this->overExposed >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->overExposed >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->overExposed >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->overExposed >> (8 * 3)) & 0xFF; + offset += sizeof(this->overExposed); + union { + double real; + uint64_t base; + } u_meanIrradiance; + u_meanIrradiance.real = this->meanIrradiance; + *(outbuffer + offset + 0) = (u_meanIrradiance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_meanIrradiance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_meanIrradiance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_meanIrradiance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_meanIrradiance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_meanIrradiance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_meanIrradiance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_meanIrradiance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->meanIrradiance); + union { + double real; + uint64_t base; + } u_minMeasurableIrradiance; + u_minMeasurableIrradiance.real = this->minMeasurableIrradiance; + *(outbuffer + offset + 0) = (u_minMeasurableIrradiance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_minMeasurableIrradiance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_minMeasurableIrradiance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_minMeasurableIrradiance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_minMeasurableIrradiance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_minMeasurableIrradiance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_minMeasurableIrradiance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_minMeasurableIrradiance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->minMeasurableIrradiance); + union { + double real; + uint64_t base; + } u_maxMeasurableIrradiance; + u_maxMeasurableIrradiance.real = this->maxMeasurableIrradiance; + *(outbuffer + offset + 0) = (u_maxMeasurableIrradiance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_maxMeasurableIrradiance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_maxMeasurableIrradiance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_maxMeasurableIrradiance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_maxMeasurableIrradiance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_maxMeasurableIrradiance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_maxMeasurableIrradiance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_maxMeasurableIrradiance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->maxMeasurableIrradiance); + union { + double real; + uint64_t base; + } u_minObservedIrradiance; + u_minObservedIrradiance.real = this->minObservedIrradiance; + *(outbuffer + offset + 0) = (u_minObservedIrradiance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_minObservedIrradiance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_minObservedIrradiance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_minObservedIrradiance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_minObservedIrradiance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_minObservedIrradiance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_minObservedIrradiance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_minObservedIrradiance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->minObservedIrradiance); + union { + double real; + uint64_t base; + } u_maxObservedIrradiance; + u_maxObservedIrradiance.real = this->maxObservedIrradiance; + *(outbuffer + offset + 0) = (u_maxObservedIrradiance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_maxObservedIrradiance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_maxObservedIrradiance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_maxObservedIrradiance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_maxObservedIrradiance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_maxObservedIrradiance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_maxObservedIrradiance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_maxObservedIrradiance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->maxObservedIrradiance); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t exposures_lengthT = ((uint32_t) (*(inbuffer + offset))); + exposures_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + exposures_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + exposures_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->exposures_length); + if(exposures_lengthT > exposures_length) + this->exposures = (image_exposure_msgs::ImageExposureStatistics*)realloc(this->exposures, exposures_lengthT * sizeof(image_exposure_msgs::ImageExposureStatistics)); + exposures_length = exposures_lengthT; + for( uint32_t i = 0; i < exposures_length; i++){ + offset += this->st_exposures.deserialize(inbuffer + offset); + memcpy( &(this->exposures[i]), &(this->st_exposures), sizeof(image_exposure_msgs::ImageExposureStatistics)); + } + this->underExposed = ((uint32_t) (*(inbuffer + offset))); + this->underExposed |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->underExposed |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->underExposed |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->underExposed); + this->overExposed = ((uint32_t) (*(inbuffer + offset))); + this->overExposed |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->overExposed |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->overExposed |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->overExposed); + union { + double real; + uint64_t base; + } u_meanIrradiance; + u_meanIrradiance.base = 0; + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->meanIrradiance = u_meanIrradiance.real; + offset += sizeof(this->meanIrradiance); + union { + double real; + uint64_t base; + } u_minMeasurableIrradiance; + u_minMeasurableIrradiance.base = 0; + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->minMeasurableIrradiance = u_minMeasurableIrradiance.real; + offset += sizeof(this->minMeasurableIrradiance); + union { + double real; + uint64_t base; + } u_maxMeasurableIrradiance; + u_maxMeasurableIrradiance.base = 0; + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->maxMeasurableIrradiance = u_maxMeasurableIrradiance.real; + offset += sizeof(this->maxMeasurableIrradiance); + union { + double real; + uint64_t base; + } u_minObservedIrradiance; + u_minObservedIrradiance.base = 0; + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->minObservedIrradiance = u_minObservedIrradiance.real; + offset += sizeof(this->minObservedIrradiance); + union { + double real; + uint64_t base; + } u_maxObservedIrradiance; + u_maxObservedIrradiance.base = 0; + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->maxObservedIrradiance = u_maxObservedIrradiance.real; + offset += sizeof(this->maxObservedIrradiance); + return offset; + } + + const char * getType(){ return "image_exposure_msgs/SequenceExposureStatistics"; }; + const char * getMD5(){ return "2a4f3187c50e7b3544984e9e28ce4328"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/laser_assembler/AssembleScans.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/laser_assembler/AssembleScans.h new file mode 100644 index 0000000..7aa8745 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/laser_assembler/AssembleScans.h @@ -0,0 +1,123 @@ +#ifndef _ROS_SERVICE_AssembleScans_h +#define _ROS_SERVICE_AssembleScans_h +#include +#include +#include +#include "ros/msg.h" +#include "ros/time.h" +#include "sensor_msgs/PointCloud.h" + +namespace laser_assembler +{ + +static const char ASSEMBLESCANS[] = "laser_assembler/AssembleScans"; + + class AssembleScansRequest : public ros::Msg + { + public: + typedef ros::Time _begin_type; + _begin_type begin; + typedef ros::Time _end_type; + _end_type end; + + AssembleScansRequest(): + begin(), + end() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->begin.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->begin.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->begin.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->begin.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->begin.sec); + *(outbuffer + offset + 0) = (this->begin.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->begin.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->begin.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->begin.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->begin.nsec); + *(outbuffer + offset + 0) = (this->end.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->end.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->end.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->end.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->end.sec); + *(outbuffer + offset + 0) = (this->end.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->end.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->end.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->end.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->end.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->begin.sec = ((uint32_t) (*(inbuffer + offset))); + this->begin.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->begin.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->begin.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->begin.sec); + this->begin.nsec = ((uint32_t) (*(inbuffer + offset))); + this->begin.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->begin.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->begin.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->begin.nsec); + this->end.sec = ((uint32_t) (*(inbuffer + offset))); + this->end.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->end.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->end.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->end.sec); + this->end.nsec = ((uint32_t) (*(inbuffer + offset))); + this->end.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->end.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->end.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->end.nsec); + return offset; + } + + const char * getType(){ return ASSEMBLESCANS; }; + const char * getMD5(){ return "b341004f74e15bf5e1b2053a9183bdc7"; }; + + }; + + class AssembleScansResponse : public ros::Msg + { + public: + typedef sensor_msgs::PointCloud _cloud_type; + _cloud_type cloud; + + AssembleScansResponse(): + cloud() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->cloud.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->cloud.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return ASSEMBLESCANS; }; + const char * getMD5(){ return "4217b28a903e4ad7869a83b3653110ff"; }; + + }; + + class AssembleScans { + public: + typedef AssembleScansRequest Request; + typedef AssembleScansResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/laser_assembler/AssembleScans2.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/laser_assembler/AssembleScans2.h new file mode 100644 index 0000000..ae2f6b7 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/laser_assembler/AssembleScans2.h @@ -0,0 +1,123 @@ +#ifndef _ROS_SERVICE_AssembleScans2_h +#define _ROS_SERVICE_AssembleScans2_h +#include +#include +#include +#include "ros/msg.h" +#include "sensor_msgs/PointCloud2.h" +#include "ros/time.h" + +namespace laser_assembler +{ + +static const char ASSEMBLESCANS2[] = "laser_assembler/AssembleScans2"; + + class AssembleScans2Request : public ros::Msg + { + public: + typedef ros::Time _begin_type; + _begin_type begin; + typedef ros::Time _end_type; + _end_type end; + + AssembleScans2Request(): + begin(), + end() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->begin.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->begin.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->begin.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->begin.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->begin.sec); + *(outbuffer + offset + 0) = (this->begin.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->begin.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->begin.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->begin.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->begin.nsec); + *(outbuffer + offset + 0) = (this->end.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->end.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->end.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->end.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->end.sec); + *(outbuffer + offset + 0) = (this->end.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->end.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->end.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->end.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->end.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->begin.sec = ((uint32_t) (*(inbuffer + offset))); + this->begin.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->begin.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->begin.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->begin.sec); + this->begin.nsec = ((uint32_t) (*(inbuffer + offset))); + this->begin.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->begin.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->begin.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->begin.nsec); + this->end.sec = ((uint32_t) (*(inbuffer + offset))); + this->end.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->end.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->end.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->end.sec); + this->end.nsec = ((uint32_t) (*(inbuffer + offset))); + this->end.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->end.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->end.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->end.nsec); + return offset; + } + + const char * getType(){ return ASSEMBLESCANS2; }; + const char * getMD5(){ return "b341004f74e15bf5e1b2053a9183bdc7"; }; + + }; + + class AssembleScans2Response : public ros::Msg + { + public: + typedef sensor_msgs::PointCloud2 _cloud_type; + _cloud_type cloud; + + AssembleScans2Response(): + cloud() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->cloud.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->cloud.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return ASSEMBLESCANS2; }; + const char * getMD5(){ return "96cec5374164b3b3d1d7ef5d7628a7ed"; }; + + }; + + class AssembleScans2 { + public: + typedef AssembleScans2Request Request; + typedef AssembleScans2Response Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/main.cpp b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/main.cpp new file mode 100644 index 0000000..1e769e4 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/main.cpp @@ -0,0 +1,118 @@ +// +// main.cpp +// ros_test +// +// Created by Orly Natan on 13/4/18. +// Copyright © 2018 Orly Natan. All rights reserved. +// + +/* (1) +#include + +int main(int argc, const char * argv[]) { + // insert code here... + std::cout << "Hello, World!\n"; + return 0; +} +*/ + +/* (2) + * rosserial Publisher Example + * Prints "hello ROS!" + */ + + +/* +#include "wrapper.h" + +char rosSrvrIp[] = "149.171.153.49"; +char hello[] = "Hello ROS From C/XCode!"; + + + int main() + { + ros_init_pub(rosSrvrIp); + ros_pub(hello); + } + + +*/ + + + + + + + + + + + + + + + + + +/* +#include "ros.h" +#include "std_msgs/String.h" +#include + +ros::NodeHandle nh; + +std_msgs::String str_msg; +ros::Publisher chatter("chatter", &str_msg); + +char rosSrvrIp[] = "149.171.153.49"; //192.168.15.121"; +char hello[] = "Hello ROS!"; + +int main() +{ + //nh.initNode(); + + + nh.initNode(rosSrvrIp); + nh.advertise(chatter); + + while(1) { + str_msg.data = hello; + chatter.publish( &str_msg ); + nh.spinOnce(); + printf("chattered\n"); + sleep(1); + } + +}*/ + +/* (3) + * rosserial_embeddedlinux subscriber example + * + * Prints a string sent on a subscribed ros topic. + * The string can be sent with e.g. + * $ rostopic pub chatter std_msgs/String -- "Hello Embedded Linux" + */ +/* +#include "ros.h" +#include "std_msgs/String.h" +#include + +ros::NodeHandle nh; +char rosSrvrIp[] = "149.171.153.52"; + +void messageCb(const std_msgs::String& received_msg){ + printf("Received subscribed chatter message: %s\n", received_msg.data); +} +ros::Subscriber sub("chatter", messageCb ); + +int main() +{ + //nh.initNode(); + nh.initNode(rosSrvrIp); + nh.subscribe(sub); + + while(1) { + sleep(1); + nh.spinOnce(); + } +}*/ diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/map_msgs/GetMapROI.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/map_msgs/GetMapROI.h new file mode 100644 index 0000000..3d39495 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/map_msgs/GetMapROI.h @@ -0,0 +1,204 @@ +#ifndef _ROS_SERVICE_GetMapROI_h +#define _ROS_SERVICE_GetMapROI_h +#include +#include +#include +#include "ros/msg.h" +#include "nav_msgs/OccupancyGrid.h" + +namespace map_msgs +{ + +static const char GETMAPROI[] = "map_msgs/GetMapROI"; + + class GetMapROIRequest : public ros::Msg + { + public: + typedef double _x_type; + _x_type x; + typedef double _y_type; + _y_type y; + typedef double _l_x_type; + _l_x_type l_x; + typedef double _l_y_type; + _l_y_type l_y; + + GetMapROIRequest(): + x(0), + y(0), + l_x(0), + l_y(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_x; + u_x.real = this->x; + *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_x.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_x.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_x.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_x.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->x); + union { + double real; + uint64_t base; + } u_y; + u_y.real = this->y; + *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_y.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_y.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_y.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_y.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->y); + union { + double real; + uint64_t base; + } u_l_x; + u_l_x.real = this->l_x; + *(outbuffer + offset + 0) = (u_l_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_l_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_l_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_l_x.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_l_x.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_l_x.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_l_x.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_l_x.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->l_x); + union { + double real; + uint64_t base; + } u_l_y; + u_l_y.real = this->l_y; + *(outbuffer + offset + 0) = (u_l_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_l_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_l_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_l_y.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_l_y.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_l_y.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_l_y.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_l_y.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->l_y); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_x; + u_x.base = 0; + u_x.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->x = u_x.real; + offset += sizeof(this->x); + union { + double real; + uint64_t base; + } u_y; + u_y.base = 0; + u_y.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->y = u_y.real; + offset += sizeof(this->y); + union { + double real; + uint64_t base; + } u_l_x; + u_l_x.base = 0; + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->l_x = u_l_x.real; + offset += sizeof(this->l_x); + union { + double real; + uint64_t base; + } u_l_y; + u_l_y.base = 0; + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->l_y = u_l_y.real; + offset += sizeof(this->l_y); + return offset; + } + + const char * getType(){ return GETMAPROI; }; + const char * getMD5(){ return "43c2ff8f45af555c0eaf070c401e9a47"; }; + + }; + + class GetMapROIResponse : public ros::Msg + { + public: + typedef nav_msgs::OccupancyGrid _sub_map_type; + _sub_map_type sub_map; + + GetMapROIResponse(): + sub_map() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->sub_map.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->sub_map.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return GETMAPROI; }; + const char * getMD5(){ return "4d1986519c00d81967d2891a606b234c"; }; + + }; + + class GetMapROI { + public: + typedef GetMapROIRequest Request; + typedef GetMapROIResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/map_msgs/GetPointMap.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/map_msgs/GetPointMap.h new file mode 100644 index 0000000..3da8ab1 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/map_msgs/GetPointMap.h @@ -0,0 +1,76 @@ +#ifndef _ROS_SERVICE_GetPointMap_h +#define _ROS_SERVICE_GetPointMap_h +#include +#include +#include +#include "ros/msg.h" +#include "sensor_msgs/PointCloud2.h" + +namespace map_msgs +{ + +static const char GETPOINTMAP[] = "map_msgs/GetPointMap"; + + class GetPointMapRequest : public ros::Msg + { + public: + + GetPointMapRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return GETPOINTMAP; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class GetPointMapResponse : public ros::Msg + { + public: + typedef sensor_msgs::PointCloud2 _map_type; + _map_type map; + + GetPointMapResponse(): + map() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->map.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->map.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return GETPOINTMAP; }; + const char * getMD5(){ return "b84fbb39505086eb6a62d933c75cb7b4"; }; + + }; + + class GetPointMap { + public: + typedef GetPointMapRequest Request; + typedef GetPointMapResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/map_msgs/GetPointMapROI.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/map_msgs/GetPointMapROI.h new file mode 100644 index 0000000..b7c4cda --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/map_msgs/GetPointMapROI.h @@ -0,0 +1,300 @@ +#ifndef _ROS_SERVICE_GetPointMapROI_h +#define _ROS_SERVICE_GetPointMapROI_h +#include +#include +#include +#include "ros/msg.h" +#include "sensor_msgs/PointCloud2.h" + +namespace map_msgs +{ + +static const char GETPOINTMAPROI[] = "map_msgs/GetPointMapROI"; + + class GetPointMapROIRequest : public ros::Msg + { + public: + typedef double _x_type; + _x_type x; + typedef double _y_type; + _y_type y; + typedef double _z_type; + _z_type z; + typedef double _r_type; + _r_type r; + typedef double _l_x_type; + _l_x_type l_x; + typedef double _l_y_type; + _l_y_type l_y; + typedef double _l_z_type; + _l_z_type l_z; + + GetPointMapROIRequest(): + x(0), + y(0), + z(0), + r(0), + l_x(0), + l_y(0), + l_z(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_x; + u_x.real = this->x; + *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_x.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_x.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_x.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_x.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->x); + union { + double real; + uint64_t base; + } u_y; + u_y.real = this->y; + *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_y.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_y.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_y.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_y.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->y); + union { + double real; + uint64_t base; + } u_z; + u_z.real = this->z; + *(outbuffer + offset + 0) = (u_z.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_z.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_z.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_z.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_z.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_z.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_z.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_z.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->z); + union { + double real; + uint64_t base; + } u_r; + u_r.real = this->r; + *(outbuffer + offset + 0) = (u_r.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_r.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_r.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_r.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_r.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_r.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_r.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_r.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->r); + union { + double real; + uint64_t base; + } u_l_x; + u_l_x.real = this->l_x; + *(outbuffer + offset + 0) = (u_l_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_l_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_l_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_l_x.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_l_x.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_l_x.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_l_x.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_l_x.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->l_x); + union { + double real; + uint64_t base; + } u_l_y; + u_l_y.real = this->l_y; + *(outbuffer + offset + 0) = (u_l_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_l_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_l_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_l_y.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_l_y.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_l_y.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_l_y.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_l_y.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->l_y); + union { + double real; + uint64_t base; + } u_l_z; + u_l_z.real = this->l_z; + *(outbuffer + offset + 0) = (u_l_z.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_l_z.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_l_z.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_l_z.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_l_z.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_l_z.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_l_z.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_l_z.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->l_z); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_x; + u_x.base = 0; + u_x.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->x = u_x.real; + offset += sizeof(this->x); + union { + double real; + uint64_t base; + } u_y; + u_y.base = 0; + u_y.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->y = u_y.real; + offset += sizeof(this->y); + union { + double real; + uint64_t base; + } u_z; + u_z.base = 0; + u_z.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->z = u_z.real; + offset += sizeof(this->z); + union { + double real; + uint64_t base; + } u_r; + u_r.base = 0; + u_r.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_r.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_r.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_r.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_r.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_r.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_r.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_r.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->r = u_r.real; + offset += sizeof(this->r); + union { + double real; + uint64_t base; + } u_l_x; + u_l_x.base = 0; + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->l_x = u_l_x.real; + offset += sizeof(this->l_x); + union { + double real; + uint64_t base; + } u_l_y; + u_l_y.base = 0; + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->l_y = u_l_y.real; + offset += sizeof(this->l_y); + union { + double real; + uint64_t base; + } u_l_z; + u_l_z.base = 0; + u_l_z.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_l_z.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_l_z.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_l_z.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_l_z.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_l_z.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_l_z.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_l_z.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->l_z = u_l_z.real; + offset += sizeof(this->l_z); + return offset; + } + + const char * getType(){ return GETPOINTMAPROI; }; + const char * getMD5(){ return "895f7e437a9a6dd225316872b187a303"; }; + + }; + + class GetPointMapROIResponse : public ros::Msg + { + public: + typedef sensor_msgs::PointCloud2 _sub_map_type; + _sub_map_type sub_map; + + GetPointMapROIResponse(): + sub_map() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->sub_map.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->sub_map.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return GETPOINTMAPROI; }; + const char * getMD5(){ return "313769f8b0e724525c6463336cbccd63"; }; + + }; + + class GetPointMapROI { + public: + typedef GetPointMapROIRequest Request; + typedef GetPointMapROIResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/map_msgs/OccupancyGridUpdate.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/map_msgs/OccupancyGridUpdate.h new file mode 100644 index 0000000..23590d2 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/map_msgs/OccupancyGridUpdate.h @@ -0,0 +1,156 @@ +#ifndef _ROS_map_msgs_OccupancyGridUpdate_h +#define _ROS_map_msgs_OccupancyGridUpdate_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace map_msgs +{ + + class OccupancyGridUpdate : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef int32_t _x_type; + _x_type x; + typedef int32_t _y_type; + _y_type y; + typedef uint32_t _width_type; + _width_type width; + typedef uint32_t _height_type; + _height_type height; + uint32_t data_length; + typedef int8_t _data_type; + _data_type st_data; + _data_type * data; + + OccupancyGridUpdate(): + header(), + x(0), + y(0), + width(0), + height(0), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + union { + int32_t real; + uint32_t base; + } u_x; + u_x.real = this->x; + *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->x); + union { + int32_t real; + uint32_t base; + } u_y; + u_y.real = this->y; + *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->y); + *(outbuffer + offset + 0) = (this->width >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->width >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->width >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->width >> (8 * 3)) & 0xFF; + offset += sizeof(this->width); + *(outbuffer + offset + 0) = (this->height >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->height >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->height >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->height >> (8 * 3)) & 0xFF; + offset += sizeof(this->height); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + union { + int8_t real; + uint8_t base; + } u_datai; + u_datai.real = this->data[i]; + *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + union { + int32_t real; + uint32_t base; + } u_x; + u_x.base = 0; + u_x.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->x = u_x.real; + offset += sizeof(this->x); + union { + int32_t real; + uint32_t base; + } u_y; + u_y.base = 0; + u_y.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->y = u_y.real; + offset += sizeof(this->y); + this->width = ((uint32_t) (*(inbuffer + offset))); + this->width |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->width |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->width |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->width); + this->height = ((uint32_t) (*(inbuffer + offset))); + this->height |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->height |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->height |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->height); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (int8_t*)realloc(this->data, data_lengthT * sizeof(int8_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + union { + int8_t real; + uint8_t base; + } u_st_data; + u_st_data.base = 0; + u_st_data.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->st_data = u_st_data.real; + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(int8_t)); + } + return offset; + } + + const char * getType(){ return "map_msgs/OccupancyGridUpdate"; }; + const char * getMD5(){ return "b295be292b335c34718bd939deebe1c9"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/map_msgs/PointCloud2Update.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/map_msgs/PointCloud2Update.h new file mode 100644 index 0000000..eee4cb1 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/map_msgs/PointCloud2Update.h @@ -0,0 +1,65 @@ +#ifndef _ROS_map_msgs_PointCloud2Update_h +#define _ROS_map_msgs_PointCloud2Update_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "sensor_msgs/PointCloud2.h" + +namespace map_msgs +{ + + class PointCloud2Update : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef uint32_t _type_type; + _type_type type; + typedef sensor_msgs::PointCloud2 _points_type; + _points_type points; + enum { ADD = 0 }; + enum { DELETE = 1 }; + + PointCloud2Update(): + header(), + type(0), + points() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->type >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->type >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->type >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->type >> (8 * 3)) & 0xFF; + offset += sizeof(this->type); + offset += this->points.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + this->type = ((uint32_t) (*(inbuffer + offset))); + this->type |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->type |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->type |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->type); + offset += this->points.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "map_msgs/PointCloud2Update"; }; + const char * getMD5(){ return "6c58e4f249ae9cd2b24fb1ee0f99195e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/map_msgs/ProjectedMap.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/map_msgs/ProjectedMap.h new file mode 100644 index 0000000..84e5be5 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/map_msgs/ProjectedMap.h @@ -0,0 +1,108 @@ +#ifndef _ROS_map_msgs_ProjectedMap_h +#define _ROS_map_msgs_ProjectedMap_h + +#include +#include +#include +#include "ros/msg.h" +#include "nav_msgs/OccupancyGrid.h" + +namespace map_msgs +{ + + class ProjectedMap : public ros::Msg + { + public: + typedef nav_msgs::OccupancyGrid _map_type; + _map_type map; + typedef double _min_z_type; + _min_z_type min_z; + typedef double _max_z_type; + _max_z_type max_z; + + ProjectedMap(): + map(), + min_z(0), + max_z(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->map.serialize(outbuffer + offset); + union { + double real; + uint64_t base; + } u_min_z; + u_min_z.real = this->min_z; + *(outbuffer + offset + 0) = (u_min_z.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_min_z.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_min_z.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_min_z.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_min_z.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_min_z.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_min_z.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_min_z.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->min_z); + union { + double real; + uint64_t base; + } u_max_z; + u_max_z.real = this->max_z; + *(outbuffer + offset + 0) = (u_max_z.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_max_z.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_max_z.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_max_z.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_max_z.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_max_z.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_max_z.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_max_z.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->max_z); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->map.deserialize(inbuffer + offset); + union { + double real; + uint64_t base; + } u_min_z; + u_min_z.base = 0; + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->min_z = u_min_z.real; + offset += sizeof(this->min_z); + union { + double real; + uint64_t base; + } u_max_z; + u_max_z.base = 0; + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->max_z = u_max_z.real; + offset += sizeof(this->max_z); + return offset; + } + + const char * getType(){ return "map_msgs/ProjectedMap"; }; + const char * getMD5(){ return "7bbe8f96e45089681dc1ea7d023cbfca"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/map_msgs/ProjectedMapInfo.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/map_msgs/ProjectedMapInfo.h new file mode 100644 index 0000000..5c7456e --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/map_msgs/ProjectedMapInfo.h @@ -0,0 +1,247 @@ +#ifndef _ROS_map_msgs_ProjectedMapInfo_h +#define _ROS_map_msgs_ProjectedMapInfo_h + +#include +#include +#include +#include "ros/msg.h" + +namespace map_msgs +{ + + class ProjectedMapInfo : public ros::Msg + { + public: + typedef const char* _frame_id_type; + _frame_id_type frame_id; + typedef double _x_type; + _x_type x; + typedef double _y_type; + _y_type y; + typedef double _width_type; + _width_type width; + typedef double _height_type; + _height_type height; + typedef double _min_z_type; + _min_z_type min_z; + typedef double _max_z_type; + _max_z_type max_z; + + ProjectedMapInfo(): + frame_id(""), + x(0), + y(0), + width(0), + height(0), + min_z(0), + max_z(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_frame_id = strlen(this->frame_id); + varToArr(outbuffer + offset, length_frame_id); + offset += 4; + memcpy(outbuffer + offset, this->frame_id, length_frame_id); + offset += length_frame_id; + union { + double real; + uint64_t base; + } u_x; + u_x.real = this->x; + *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_x.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_x.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_x.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_x.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->x); + union { + double real; + uint64_t base; + } u_y; + u_y.real = this->y; + *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_y.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_y.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_y.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_y.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->y); + union { + double real; + uint64_t base; + } u_width; + u_width.real = this->width; + *(outbuffer + offset + 0) = (u_width.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_width.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_width.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_width.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_width.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_width.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_width.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_width.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->width); + union { + double real; + uint64_t base; + } u_height; + u_height.real = this->height; + *(outbuffer + offset + 0) = (u_height.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_height.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_height.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_height.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_height.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_height.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_height.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_height.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->height); + union { + double real; + uint64_t base; + } u_min_z; + u_min_z.real = this->min_z; + *(outbuffer + offset + 0) = (u_min_z.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_min_z.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_min_z.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_min_z.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_min_z.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_min_z.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_min_z.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_min_z.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->min_z); + union { + double real; + uint64_t base; + } u_max_z; + u_max_z.real = this->max_z; + *(outbuffer + offset + 0) = (u_max_z.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_max_z.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_max_z.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_max_z.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_max_z.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_max_z.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_max_z.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_max_z.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->max_z); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_frame_id; + arrToVar(length_frame_id, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_frame_id; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_frame_id-1]=0; + this->frame_id = (char *)(inbuffer + offset-1); + offset += length_frame_id; + union { + double real; + uint64_t base; + } u_x; + u_x.base = 0; + u_x.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->x = u_x.real; + offset += sizeof(this->x); + union { + double real; + uint64_t base; + } u_y; + u_y.base = 0; + u_y.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->y = u_y.real; + offset += sizeof(this->y); + union { + double real; + uint64_t base; + } u_width; + u_width.base = 0; + u_width.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_width.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_width.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_width.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_width.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_width.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_width.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_width.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->width = u_width.real; + offset += sizeof(this->width); + union { + double real; + uint64_t base; + } u_height; + u_height.base = 0; + u_height.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_height.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_height.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_height.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_height.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_height.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_height.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_height.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->height = u_height.real; + offset += sizeof(this->height); + union { + double real; + uint64_t base; + } u_min_z; + u_min_z.base = 0; + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->min_z = u_min_z.real; + offset += sizeof(this->min_z); + union { + double real; + uint64_t base; + } u_max_z; + u_max_z.base = 0; + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->max_z = u_max_z.real; + offset += sizeof(this->max_z); + return offset; + } + + const char * getType(){ return "map_msgs/ProjectedMapInfo"; }; + const char * getMD5(){ return "2dc10595ae94de23f22f8a6d2a0eef7a"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/map_msgs/ProjectedMapsInfo.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/map_msgs/ProjectedMapsInfo.h new file mode 100644 index 0000000..b515b94 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/map_msgs/ProjectedMapsInfo.h @@ -0,0 +1,96 @@ +#ifndef _ROS_SERVICE_ProjectedMapsInfo_h +#define _ROS_SERVICE_ProjectedMapsInfo_h +#include +#include +#include +#include "ros/msg.h" +#include "map_msgs/ProjectedMapInfo.h" + +namespace map_msgs +{ + +static const char PROJECTEDMAPSINFO[] = "map_msgs/ProjectedMapsInfo"; + + class ProjectedMapsInfoRequest : public ros::Msg + { + public: + uint32_t projected_maps_info_length; + typedef map_msgs::ProjectedMapInfo _projected_maps_info_type; + _projected_maps_info_type st_projected_maps_info; + _projected_maps_info_type * projected_maps_info; + + ProjectedMapsInfoRequest(): + projected_maps_info_length(0), projected_maps_info(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->projected_maps_info_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->projected_maps_info_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->projected_maps_info_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->projected_maps_info_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->projected_maps_info_length); + for( uint32_t i = 0; i < projected_maps_info_length; i++){ + offset += this->projected_maps_info[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t projected_maps_info_lengthT = ((uint32_t) (*(inbuffer + offset))); + projected_maps_info_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + projected_maps_info_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + projected_maps_info_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->projected_maps_info_length); + if(projected_maps_info_lengthT > projected_maps_info_length) + this->projected_maps_info = (map_msgs::ProjectedMapInfo*)realloc(this->projected_maps_info, projected_maps_info_lengthT * sizeof(map_msgs::ProjectedMapInfo)); + projected_maps_info_length = projected_maps_info_lengthT; + for( uint32_t i = 0; i < projected_maps_info_length; i++){ + offset += this->st_projected_maps_info.deserialize(inbuffer + offset); + memcpy( &(this->projected_maps_info[i]), &(this->st_projected_maps_info), sizeof(map_msgs::ProjectedMapInfo)); + } + return offset; + } + + const char * getType(){ return PROJECTEDMAPSINFO; }; + const char * getMD5(){ return "d7980a33202421c8cd74565e57a4d229"; }; + + }; + + class ProjectedMapsInfoResponse : public ros::Msg + { + public: + + ProjectedMapsInfoResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return PROJECTEDMAPSINFO; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class ProjectedMapsInfo { + public: + typedef ProjectedMapsInfoRequest Request; + typedef ProjectedMapsInfoResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/map_msgs/SaveMap.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/map_msgs/SaveMap.h new file mode 100644 index 0000000..c304c22 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/map_msgs/SaveMap.h @@ -0,0 +1,76 @@ +#ifndef _ROS_SERVICE_SaveMap_h +#define _ROS_SERVICE_SaveMap_h +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/String.h" + +namespace map_msgs +{ + +static const char SAVEMAP[] = "map_msgs/SaveMap"; + + class SaveMapRequest : public ros::Msg + { + public: + typedef std_msgs::String _filename_type; + _filename_type filename; + + SaveMapRequest(): + filename() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->filename.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->filename.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return SAVEMAP; }; + const char * getMD5(){ return "716e25f9d9dc76ceba197f93cbf05dc7"; }; + + }; + + class SaveMapResponse : public ros::Msg + { + public: + + SaveMapResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return SAVEMAP; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class SaveMap { + public: + typedef SaveMapRequest Request; + typedef SaveMapResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/map_msgs/SetMapProjections.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/map_msgs/SetMapProjections.h new file mode 100644 index 0000000..1ead172 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/map_msgs/SetMapProjections.h @@ -0,0 +1,96 @@ +#ifndef _ROS_SERVICE_SetMapProjections_h +#define _ROS_SERVICE_SetMapProjections_h +#include +#include +#include +#include "ros/msg.h" +#include "map_msgs/ProjectedMapInfo.h" + +namespace map_msgs +{ + +static const char SETMAPPROJECTIONS[] = "map_msgs/SetMapProjections"; + + class SetMapProjectionsRequest : public ros::Msg + { + public: + + SetMapProjectionsRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return SETMAPPROJECTIONS; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class SetMapProjectionsResponse : public ros::Msg + { + public: + uint32_t projected_maps_info_length; + typedef map_msgs::ProjectedMapInfo _projected_maps_info_type; + _projected_maps_info_type st_projected_maps_info; + _projected_maps_info_type * projected_maps_info; + + SetMapProjectionsResponse(): + projected_maps_info_length(0), projected_maps_info(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->projected_maps_info_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->projected_maps_info_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->projected_maps_info_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->projected_maps_info_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->projected_maps_info_length); + for( uint32_t i = 0; i < projected_maps_info_length; i++){ + offset += this->projected_maps_info[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t projected_maps_info_lengthT = ((uint32_t) (*(inbuffer + offset))); + projected_maps_info_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + projected_maps_info_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + projected_maps_info_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->projected_maps_info_length); + if(projected_maps_info_lengthT > projected_maps_info_length) + this->projected_maps_info = (map_msgs::ProjectedMapInfo*)realloc(this->projected_maps_info, projected_maps_info_lengthT * sizeof(map_msgs::ProjectedMapInfo)); + projected_maps_info_length = projected_maps_info_lengthT; + for( uint32_t i = 0; i < projected_maps_info_length; i++){ + offset += this->st_projected_maps_info.deserialize(inbuffer + offset); + memcpy( &(this->projected_maps_info[i]), &(this->st_projected_maps_info), sizeof(map_msgs::ProjectedMapInfo)); + } + return offset; + } + + const char * getType(){ return SETMAPPROJECTIONS; }; + const char * getMD5(){ return "d7980a33202421c8cd74565e57a4d229"; }; + + }; + + class SetMapProjections { + public: + typedef SetMapProjectionsRequest Request; + typedef SetMapProjectionsResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseAction.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseAction.h new file mode 100644 index 0000000..ad79c6a --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_move_base_msgs_MoveBaseAction_h +#define _ROS_move_base_msgs_MoveBaseAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "move_base_msgs/MoveBaseActionGoal.h" +#include "move_base_msgs/MoveBaseActionResult.h" +#include "move_base_msgs/MoveBaseActionFeedback.h" + +namespace move_base_msgs +{ + + class MoveBaseAction : public ros::Msg + { + public: + typedef move_base_msgs::MoveBaseActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef move_base_msgs::MoveBaseActionResult _action_result_type; + _action_result_type action_result; + typedef move_base_msgs::MoveBaseActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + MoveBaseAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "move_base_msgs/MoveBaseAction"; }; + const char * getMD5(){ return "70b6aca7c7f7746d8d1609ad94c80bb8"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseActionFeedback.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseActionFeedback.h new file mode 100644 index 0000000..1cfebc6 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_move_base_msgs_MoveBaseActionFeedback_h +#define _ROS_move_base_msgs_MoveBaseActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "move_base_msgs/MoveBaseFeedback.h" + +namespace move_base_msgs +{ + + class MoveBaseActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef move_base_msgs::MoveBaseFeedback _feedback_type; + _feedback_type feedback; + + MoveBaseActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "move_base_msgs/MoveBaseActionFeedback"; }; + const char * getMD5(){ return "7d1870ff6e0decea702b943b5af0b42e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseActionGoal.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseActionGoal.h new file mode 100644 index 0000000..686c496 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_move_base_msgs_MoveBaseActionGoal_h +#define _ROS_move_base_msgs_MoveBaseActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "move_base_msgs/MoveBaseGoal.h" + +namespace move_base_msgs +{ + + class MoveBaseActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef move_base_msgs::MoveBaseGoal _goal_type; + _goal_type goal; + + MoveBaseActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "move_base_msgs/MoveBaseActionGoal"; }; + const char * getMD5(){ return "660d6895a1b9a16dce51fbdd9a64a56b"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseActionResult.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseActionResult.h new file mode 100644 index 0000000..b9614e5 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_move_base_msgs_MoveBaseActionResult_h +#define _ROS_move_base_msgs_MoveBaseActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "move_base_msgs/MoveBaseResult.h" + +namespace move_base_msgs +{ + + class MoveBaseActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef move_base_msgs::MoveBaseResult _result_type; + _result_type result; + + MoveBaseActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "move_base_msgs/MoveBaseActionResult"; }; + const char * getMD5(){ return "1eb06eeff08fa7ea874431638cb52332"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseFeedback.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseFeedback.h new file mode 100644 index 0000000..09adc4f --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseFeedback.h @@ -0,0 +1,44 @@ +#ifndef _ROS_move_base_msgs_MoveBaseFeedback_h +#define _ROS_move_base_msgs_MoveBaseFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/PoseStamped.h" + +namespace move_base_msgs +{ + + class MoveBaseFeedback : public ros::Msg + { + public: + typedef geometry_msgs::PoseStamped _base_position_type; + _base_position_type base_position; + + MoveBaseFeedback(): + base_position() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->base_position.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->base_position.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "move_base_msgs/MoveBaseFeedback"; }; + const char * getMD5(){ return "3fb824c456a757373a226f6d08071bf0"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseGoal.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseGoal.h new file mode 100644 index 0000000..d228217 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseGoal.h @@ -0,0 +1,44 @@ +#ifndef _ROS_move_base_msgs_MoveBaseGoal_h +#define _ROS_move_base_msgs_MoveBaseGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/PoseStamped.h" + +namespace move_base_msgs +{ + + class MoveBaseGoal : public ros::Msg + { + public: + typedef geometry_msgs::PoseStamped _target_pose_type; + _target_pose_type target_pose; + + MoveBaseGoal(): + target_pose() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->target_pose.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->target_pose.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "move_base_msgs/MoveBaseGoal"; }; + const char * getMD5(){ return "257d089627d7eb7136c24d3593d05a16"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseResult.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseResult.h new file mode 100644 index 0000000..c43c536 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseResult.h @@ -0,0 +1,38 @@ +#ifndef _ROS_move_base_msgs_MoveBaseResult_h +#define _ROS_move_base_msgs_MoveBaseResult_h + +#include +#include +#include +#include "ros/msg.h" + +namespace move_base_msgs +{ + + class MoveBaseResult : public ros::Msg + { + public: + + MoveBaseResult() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "move_base_msgs/MoveBaseResult"; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/GetMap.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/GetMap.h new file mode 100644 index 0000000..ef7e3fa --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/GetMap.h @@ -0,0 +1,76 @@ +#ifndef _ROS_SERVICE_GetMap_h +#define _ROS_SERVICE_GetMap_h +#include +#include +#include +#include "ros/msg.h" +#include "nav_msgs/OccupancyGrid.h" + +namespace nav_msgs +{ + +static const char GETMAP[] = "nav_msgs/GetMap"; + + class GetMapRequest : public ros::Msg + { + public: + + GetMapRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return GETMAP; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class GetMapResponse : public ros::Msg + { + public: + typedef nav_msgs::OccupancyGrid _map_type; + _map_type map; + + GetMapResponse(): + map() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->map.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->map.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return GETMAP; }; + const char * getMD5(){ return "6cdd0a18e0aff5b0a3ca2326a89b54ff"; }; + + }; + + class GetMap { + public: + typedef GetMapRequest Request; + typedef GetMapResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapAction.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapAction.h new file mode 100644 index 0000000..56e8299 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_nav_msgs_GetMapAction_h +#define _ROS_nav_msgs_GetMapAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "nav_msgs/GetMapActionGoal.h" +#include "nav_msgs/GetMapActionResult.h" +#include "nav_msgs/GetMapActionFeedback.h" + +namespace nav_msgs +{ + + class GetMapAction : public ros::Msg + { + public: + typedef nav_msgs::GetMapActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef nav_msgs::GetMapActionResult _action_result_type; + _action_result_type action_result; + typedef nav_msgs::GetMapActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + GetMapAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "nav_msgs/GetMapAction"; }; + const char * getMD5(){ return "e611ad23fbf237c031b7536416dc7cd7"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapActionFeedback.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapActionFeedback.h new file mode 100644 index 0000000..fb60003 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_nav_msgs_GetMapActionFeedback_h +#define _ROS_nav_msgs_GetMapActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "nav_msgs/GetMapFeedback.h" + +namespace nav_msgs +{ + + class GetMapActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef nav_msgs::GetMapFeedback _feedback_type; + _feedback_type feedback; + + GetMapActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "nav_msgs/GetMapActionFeedback"; }; + const char * getMD5(){ return "aae20e09065c3809e8a8e87c4c8953fd"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapActionGoal.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapActionGoal.h new file mode 100644 index 0000000..da4244a --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_nav_msgs_GetMapActionGoal_h +#define _ROS_nav_msgs_GetMapActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "nav_msgs/GetMapGoal.h" + +namespace nav_msgs +{ + + class GetMapActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef nav_msgs::GetMapGoal _goal_type; + _goal_type goal; + + GetMapActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "nav_msgs/GetMapActionGoal"; }; + const char * getMD5(){ return "4b30be6cd12b9e72826df56b481f40e0"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapActionResult.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapActionResult.h new file mode 100644 index 0000000..f614a35 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_nav_msgs_GetMapActionResult_h +#define _ROS_nav_msgs_GetMapActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "nav_msgs/GetMapResult.h" + +namespace nav_msgs +{ + + class GetMapActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef nav_msgs::GetMapResult _result_type; + _result_type result; + + GetMapActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "nav_msgs/GetMapActionResult"; }; + const char * getMD5(){ return "ac66e5b9a79bb4bbd33dab245236c892"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapFeedback.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapFeedback.h new file mode 100644 index 0000000..e3b4560 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapFeedback.h @@ -0,0 +1,38 @@ +#ifndef _ROS_nav_msgs_GetMapFeedback_h +#define _ROS_nav_msgs_GetMapFeedback_h + +#include +#include +#include +#include "ros/msg.h" + +namespace nav_msgs +{ + + class GetMapFeedback : public ros::Msg + { + public: + + GetMapFeedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "nav_msgs/GetMapFeedback"; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapGoal.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapGoal.h new file mode 100644 index 0000000..88a17c5 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapGoal.h @@ -0,0 +1,38 @@ +#ifndef _ROS_nav_msgs_GetMapGoal_h +#define _ROS_nav_msgs_GetMapGoal_h + +#include +#include +#include +#include "ros/msg.h" + +namespace nav_msgs +{ + + class GetMapGoal : public ros::Msg + { + public: + + GetMapGoal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "nav_msgs/GetMapGoal"; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapResult.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapResult.h new file mode 100644 index 0000000..1ef8fbd --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapResult.h @@ -0,0 +1,44 @@ +#ifndef _ROS_nav_msgs_GetMapResult_h +#define _ROS_nav_msgs_GetMapResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "nav_msgs/OccupancyGrid.h" + +namespace nav_msgs +{ + + class GetMapResult : public ros::Msg + { + public: + typedef nav_msgs::OccupancyGrid _map_type; + _map_type map; + + GetMapResult(): + map() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->map.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->map.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "nav_msgs/GetMapResult"; }; + const char * getMD5(){ return "6cdd0a18e0aff5b0a3ca2326a89b54ff"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/GetPlan.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/GetPlan.h new file mode 100644 index 0000000..fe312b2 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/GetPlan.h @@ -0,0 +1,111 @@ +#ifndef _ROS_SERVICE_GetPlan_h +#define _ROS_SERVICE_GetPlan_h +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/PoseStamped.h" +#include "nav_msgs/Path.h" + +namespace nav_msgs +{ + +static const char GETPLAN[] = "nav_msgs/GetPlan"; + + class GetPlanRequest : public ros::Msg + { + public: + typedef geometry_msgs::PoseStamped _start_type; + _start_type start; + typedef geometry_msgs::PoseStamped _goal_type; + _goal_type goal; + typedef float _tolerance_type; + _tolerance_type tolerance; + + GetPlanRequest(): + start(), + goal(), + tolerance(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->start.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + union { + float real; + uint32_t base; + } u_tolerance; + u_tolerance.real = this->tolerance; + *(outbuffer + offset + 0) = (u_tolerance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_tolerance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_tolerance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_tolerance.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->tolerance); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->start.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + union { + float real; + uint32_t base; + } u_tolerance; + u_tolerance.base = 0; + u_tolerance.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_tolerance.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_tolerance.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_tolerance.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->tolerance = u_tolerance.real; + offset += sizeof(this->tolerance); + return offset; + } + + const char * getType(){ return GETPLAN; }; + const char * getMD5(){ return "e25a43e0752bcca599a8c2eef8282df8"; }; + + }; + + class GetPlanResponse : public ros::Msg + { + public: + typedef nav_msgs::Path _plan_type; + _plan_type plan; + + GetPlanResponse(): + plan() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->plan.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->plan.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return GETPLAN; }; + const char * getMD5(){ return "0002bc113c0259d71f6cf8cbc9430e18"; }; + + }; + + class GetPlan { + public: + typedef GetPlanRequest Request; + typedef GetPlanResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/GridCells.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/GridCells.h new file mode 100644 index 0000000..6c41cc6 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/GridCells.h @@ -0,0 +1,118 @@ +#ifndef _ROS_nav_msgs_GridCells_h +#define _ROS_nav_msgs_GridCells_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Point.h" + +namespace nav_msgs +{ + + class GridCells : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef float _cell_width_type; + _cell_width_type cell_width; + typedef float _cell_height_type; + _cell_height_type cell_height; + uint32_t cells_length; + typedef geometry_msgs::Point _cells_type; + _cells_type st_cells; + _cells_type * cells; + + GridCells(): + header(), + cell_width(0), + cell_height(0), + cells_length(0), cells(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + union { + float real; + uint32_t base; + } u_cell_width; + u_cell_width.real = this->cell_width; + *(outbuffer + offset + 0) = (u_cell_width.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_cell_width.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_cell_width.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_cell_width.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->cell_width); + union { + float real; + uint32_t base; + } u_cell_height; + u_cell_height.real = this->cell_height; + *(outbuffer + offset + 0) = (u_cell_height.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_cell_height.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_cell_height.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_cell_height.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->cell_height); + *(outbuffer + offset + 0) = (this->cells_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->cells_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->cells_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->cells_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->cells_length); + for( uint32_t i = 0; i < cells_length; i++){ + offset += this->cells[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + union { + float real; + uint32_t base; + } u_cell_width; + u_cell_width.base = 0; + u_cell_width.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_cell_width.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_cell_width.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_cell_width.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->cell_width = u_cell_width.real; + offset += sizeof(this->cell_width); + union { + float real; + uint32_t base; + } u_cell_height; + u_cell_height.base = 0; + u_cell_height.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_cell_height.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_cell_height.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_cell_height.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->cell_height = u_cell_height.real; + offset += sizeof(this->cell_height); + uint32_t cells_lengthT = ((uint32_t) (*(inbuffer + offset))); + cells_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + cells_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + cells_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->cells_length); + if(cells_lengthT > cells_length) + this->cells = (geometry_msgs::Point*)realloc(this->cells, cells_lengthT * sizeof(geometry_msgs::Point)); + cells_length = cells_lengthT; + for( uint32_t i = 0; i < cells_length; i++){ + offset += this->st_cells.deserialize(inbuffer + offset); + memcpy( &(this->cells[i]), &(this->st_cells), sizeof(geometry_msgs::Point)); + } + return offset; + } + + const char * getType(){ return "nav_msgs/GridCells"; }; + const char * getMD5(){ return "b9e4f5df6d28e272ebde00a3994830f5"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/MapMetaData.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/MapMetaData.h new file mode 100644 index 0000000..47733d9 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/MapMetaData.h @@ -0,0 +1,118 @@ +#ifndef _ROS_nav_msgs_MapMetaData_h +#define _ROS_nav_msgs_MapMetaData_h + +#include +#include +#include +#include "ros/msg.h" +#include "ros/time.h" +#include "geometry_msgs/Pose.h" + +namespace nav_msgs +{ + + class MapMetaData : public ros::Msg + { + public: + typedef ros::Time _map_load_time_type; + _map_load_time_type map_load_time; + typedef float _resolution_type; + _resolution_type resolution; + typedef uint32_t _width_type; + _width_type width; + typedef uint32_t _height_type; + _height_type height; + typedef geometry_msgs::Pose _origin_type; + _origin_type origin; + + MapMetaData(): + map_load_time(), + resolution(0), + width(0), + height(0), + origin() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->map_load_time.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->map_load_time.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->map_load_time.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->map_load_time.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->map_load_time.sec); + *(outbuffer + offset + 0) = (this->map_load_time.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->map_load_time.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->map_load_time.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->map_load_time.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->map_load_time.nsec); + union { + float real; + uint32_t base; + } u_resolution; + u_resolution.real = this->resolution; + *(outbuffer + offset + 0) = (u_resolution.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_resolution.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_resolution.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_resolution.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->resolution); + *(outbuffer + offset + 0) = (this->width >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->width >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->width >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->width >> (8 * 3)) & 0xFF; + offset += sizeof(this->width); + *(outbuffer + offset + 0) = (this->height >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->height >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->height >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->height >> (8 * 3)) & 0xFF; + offset += sizeof(this->height); + offset += this->origin.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->map_load_time.sec = ((uint32_t) (*(inbuffer + offset))); + this->map_load_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->map_load_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->map_load_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->map_load_time.sec); + this->map_load_time.nsec = ((uint32_t) (*(inbuffer + offset))); + this->map_load_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->map_load_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->map_load_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->map_load_time.nsec); + union { + float real; + uint32_t base; + } u_resolution; + u_resolution.base = 0; + u_resolution.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_resolution.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_resolution.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_resolution.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->resolution = u_resolution.real; + offset += sizeof(this->resolution); + this->width = ((uint32_t) (*(inbuffer + offset))); + this->width |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->width |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->width |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->width); + this->height = ((uint32_t) (*(inbuffer + offset))); + this->height |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->height |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->height |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->height); + offset += this->origin.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "nav_msgs/MapMetaData"; }; + const char * getMD5(){ return "10cfc8a2818024d3248802c00c95f11b"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/OccupancyGrid.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/OccupancyGrid.h new file mode 100644 index 0000000..4205f43 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/OccupancyGrid.h @@ -0,0 +1,88 @@ +#ifndef _ROS_nav_msgs_OccupancyGrid_h +#define _ROS_nav_msgs_OccupancyGrid_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "nav_msgs/MapMetaData.h" + +namespace nav_msgs +{ + + class OccupancyGrid : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef nav_msgs::MapMetaData _info_type; + _info_type info; + uint32_t data_length; + typedef int8_t _data_type; + _data_type st_data; + _data_type * data; + + OccupancyGrid(): + header(), + info(), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->info.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + union { + int8_t real; + uint8_t base; + } u_datai; + u_datai.real = this->data[i]; + *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->info.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (int8_t*)realloc(this->data, data_lengthT * sizeof(int8_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + union { + int8_t real; + uint8_t base; + } u_st_data; + u_st_data.base = 0; + u_st_data.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->st_data = u_st_data.real; + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(int8_t)); + } + return offset; + } + + const char * getType(){ return "nav_msgs/OccupancyGrid"; }; + const char * getMD5(){ return "3381f2d731d4076ec5c71b0759edbe4e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/Odometry.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/Odometry.h new file mode 100644 index 0000000..e8eaca5 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/Odometry.h @@ -0,0 +1,73 @@ +#ifndef _ROS_nav_msgs_Odometry_h +#define _ROS_nav_msgs_Odometry_h + +#include +#include +#include +#include "../ros/msg.h" +#include "../std_msgs/Header.h" +#include "../geometry_msgs/PoseWithCovariance.h" +#include "../geometry_msgs/TwistWithCovariance.h" + +namespace nav_msgs +{ + + class Odometry : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef const char* _child_frame_id_type; + _child_frame_id_type child_frame_id; + typedef geometry_msgs::PoseWithCovariance _pose_type; + _pose_type pose; + typedef geometry_msgs::TwistWithCovariance _twist_type; + _twist_type twist; + + Odometry(): + header(), + child_frame_id(""), + pose(), + twist() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + uint32_t length_child_frame_id = strlen(this->child_frame_id); + varToArr(outbuffer + offset, length_child_frame_id); + offset += 4; + memcpy(outbuffer + offset, this->child_frame_id, length_child_frame_id); + offset += length_child_frame_id; + offset += this->pose.serialize(outbuffer + offset); + offset += this->twist.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t length_child_frame_id; + arrToVar(length_child_frame_id, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_child_frame_id; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_child_frame_id-1]=0; + this->child_frame_id = (char *)(inbuffer + offset-1); + offset += length_child_frame_id; + offset += this->pose.deserialize(inbuffer + offset); + offset += this->twist.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "nav_msgs/Odometry"; }; + const char * getMD5(){ return "cd5e73d190d741a2f92e81eda573aca7"; }; + + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/Path.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/Path.h new file mode 100644 index 0000000..8587706 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/Path.h @@ -0,0 +1,70 @@ +#ifndef _ROS_nav_msgs_Path_h +#define _ROS_nav_msgs_Path_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/PoseStamped.h" + +namespace nav_msgs +{ + + class Path : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t poses_length; + typedef geometry_msgs::PoseStamped _poses_type; + _poses_type st_poses; + _poses_type * poses; + + Path(): + header(), + poses_length(0), poses(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->poses_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->poses_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->poses_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->poses_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->poses_length); + for( uint32_t i = 0; i < poses_length; i++){ + offset += this->poses[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t poses_lengthT = ((uint32_t) (*(inbuffer + offset))); + poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->poses_length); + if(poses_lengthT > poses_length) + this->poses = (geometry_msgs::PoseStamped*)realloc(this->poses, poses_lengthT * sizeof(geometry_msgs::PoseStamped)); + poses_length = poses_lengthT; + for( uint32_t i = 0; i < poses_length; i++){ + offset += this->st_poses.deserialize(inbuffer + offset); + memcpy( &(this->poses[i]), &(this->st_poses), sizeof(geometry_msgs::PoseStamped)); + } + return offset; + } + + const char * getType(){ return "nav_msgs/Path"; }; + const char * getMD5(){ return "6227e2b7e9cce15051f669a5e197bbf7"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/SetMap.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/SetMap.h new file mode 100644 index 0000000..717cead --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nav_msgs/SetMap.h @@ -0,0 +1,100 @@ +#ifndef _ROS_SERVICE_SetMap_h +#define _ROS_SERVICE_SetMap_h +#include +#include +#include +#include "ros/msg.h" +#include "nav_msgs/OccupancyGrid.h" +#include "geometry_msgs/PoseWithCovarianceStamped.h" + +namespace nav_msgs +{ + +static const char SETMAP[] = "nav_msgs/SetMap"; + + class SetMapRequest : public ros::Msg + { + public: + typedef nav_msgs::OccupancyGrid _map_type; + _map_type map; + typedef geometry_msgs::PoseWithCovarianceStamped _initial_pose_type; + _initial_pose_type initial_pose; + + SetMapRequest(): + map(), + initial_pose() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->map.serialize(outbuffer + offset); + offset += this->initial_pose.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->map.deserialize(inbuffer + offset); + offset += this->initial_pose.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return SETMAP; }; + const char * getMD5(){ return "91149a20d7be299b87c340df8cc94fd4"; }; + + }; + + class SetMapResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + + SetMapResponse(): + success(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + return offset; + } + + const char * getType(){ return SETMAP; }; + const char * getMD5(){ return "358e233cde0c8a8bcfea4ce193f8fc15"; }; + + }; + + class SetMap { + public: + typedef SetMapRequest Request; + typedef SetMapResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/navfn/MakeNavPlan.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/navfn/MakeNavPlan.h new file mode 100644 index 0000000..787905b --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/navfn/MakeNavPlan.h @@ -0,0 +1,130 @@ +#ifndef _ROS_SERVICE_MakeNavPlan_h +#define _ROS_SERVICE_MakeNavPlan_h +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/PoseStamped.h" + +namespace navfn +{ + +static const char MAKENAVPLAN[] = "navfn/MakeNavPlan"; + + class MakeNavPlanRequest : public ros::Msg + { + public: + typedef geometry_msgs::PoseStamped _start_type; + _start_type start; + typedef geometry_msgs::PoseStamped _goal_type; + _goal_type goal; + + MakeNavPlanRequest(): + start(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->start.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->start.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return MAKENAVPLAN; }; + const char * getMD5(){ return "2fe3126bd5b2d56edd5005220333d4fd"; }; + + }; + + class MakeNavPlanResponse : public ros::Msg + { + public: + typedef uint8_t _plan_found_type; + _plan_found_type plan_found; + typedef const char* _error_message_type; + _error_message_type error_message; + uint32_t path_length; + typedef geometry_msgs::PoseStamped _path_type; + _path_type st_path; + _path_type * path; + + MakeNavPlanResponse(): + plan_found(0), + error_message(""), + path_length(0), path(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->plan_found >> (8 * 0)) & 0xFF; + offset += sizeof(this->plan_found); + uint32_t length_error_message = strlen(this->error_message); + varToArr(outbuffer + offset, length_error_message); + offset += 4; + memcpy(outbuffer + offset, this->error_message, length_error_message); + offset += length_error_message; + *(outbuffer + offset + 0) = (this->path_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->path_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->path_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->path_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->path_length); + for( uint32_t i = 0; i < path_length; i++){ + offset += this->path[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->plan_found = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->plan_found); + uint32_t length_error_message; + arrToVar(length_error_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_error_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_error_message-1]=0; + this->error_message = (char *)(inbuffer + offset-1); + offset += length_error_message; + uint32_t path_lengthT = ((uint32_t) (*(inbuffer + offset))); + path_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + path_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + path_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->path_length); + if(path_lengthT > path_length) + this->path = (geometry_msgs::PoseStamped*)realloc(this->path, path_lengthT * sizeof(geometry_msgs::PoseStamped)); + path_length = path_lengthT; + for( uint32_t i = 0; i < path_length; i++){ + offset += this->st_path.deserialize(inbuffer + offset); + memcpy( &(this->path[i]), &(this->st_path), sizeof(geometry_msgs::PoseStamped)); + } + return offset; + } + + const char * getType(){ return MAKENAVPLAN; }; + const char * getMD5(){ return "8b8ed7edf1b237dc9ddda8c8ffed5d3a"; }; + + }; + + class MakeNavPlan { + public: + typedef MakeNavPlanRequest Request; + typedef MakeNavPlanResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/navfn/SetCostmap.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/navfn/SetCostmap.h new file mode 100644 index 0000000..8f746c5 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/navfn/SetCostmap.h @@ -0,0 +1,115 @@ +#ifndef _ROS_SERVICE_SetCostmap_h +#define _ROS_SERVICE_SetCostmap_h +#include +#include +#include +#include "ros/msg.h" + +namespace navfn +{ + +static const char SETCOSTMAP[] = "navfn/SetCostmap"; + + class SetCostmapRequest : public ros::Msg + { + public: + uint32_t costs_length; + typedef uint8_t _costs_type; + _costs_type st_costs; + _costs_type * costs; + typedef uint16_t _height_type; + _height_type height; + typedef uint16_t _width_type; + _width_type width; + + SetCostmapRequest(): + costs_length(0), costs(NULL), + height(0), + width(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->costs_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->costs_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->costs_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->costs_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->costs_length); + for( uint32_t i = 0; i < costs_length; i++){ + *(outbuffer + offset + 0) = (this->costs[i] >> (8 * 0)) & 0xFF; + offset += sizeof(this->costs[i]); + } + *(outbuffer + offset + 0) = (this->height >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->height >> (8 * 1)) & 0xFF; + offset += sizeof(this->height); + *(outbuffer + offset + 0) = (this->width >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->width >> (8 * 1)) & 0xFF; + offset += sizeof(this->width); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t costs_lengthT = ((uint32_t) (*(inbuffer + offset))); + costs_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + costs_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + costs_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->costs_length); + if(costs_lengthT > costs_length) + this->costs = (uint8_t*)realloc(this->costs, costs_lengthT * sizeof(uint8_t)); + costs_length = costs_lengthT; + for( uint32_t i = 0; i < costs_length; i++){ + this->st_costs = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->st_costs); + memcpy( &(this->costs[i]), &(this->st_costs), sizeof(uint8_t)); + } + this->height = ((uint16_t) (*(inbuffer + offset))); + this->height |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->height); + this->width = ((uint16_t) (*(inbuffer + offset))); + this->width |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->width); + return offset; + } + + const char * getType(){ return SETCOSTMAP; }; + const char * getMD5(){ return "370ec969cdb71f9cde7c7cbe0d752308"; }; + + }; + + class SetCostmapResponse : public ros::Msg + { + public: + + SetCostmapResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return SETCOSTMAP; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class SetCostmap { + public: + typedef SetCostmapRequest Request; + typedef SetCostmapResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nodelet/NodeletList.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nodelet/NodeletList.h new file mode 100644 index 0000000..6210fa0 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nodelet/NodeletList.h @@ -0,0 +1,107 @@ +#ifndef _ROS_SERVICE_NodeletList_h +#define _ROS_SERVICE_NodeletList_h +#include +#include +#include +#include "ros/msg.h" + +namespace nodelet +{ + +static const char NODELETLIST[] = "nodelet/NodeletList"; + + class NodeletListRequest : public ros::Msg + { + public: + + NodeletListRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return NODELETLIST; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class NodeletListResponse : public ros::Msg + { + public: + uint32_t nodelets_length; + typedef char* _nodelets_type; + _nodelets_type st_nodelets; + _nodelets_type * nodelets; + + NodeletListResponse(): + nodelets_length(0), nodelets(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->nodelets_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->nodelets_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->nodelets_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->nodelets_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->nodelets_length); + for( uint32_t i = 0; i < nodelets_length; i++){ + uint32_t length_nodeletsi = strlen(this->nodelets[i]); + varToArr(outbuffer + offset, length_nodeletsi); + offset += 4; + memcpy(outbuffer + offset, this->nodelets[i], length_nodeletsi); + offset += length_nodeletsi; + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t nodelets_lengthT = ((uint32_t) (*(inbuffer + offset))); + nodelets_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + nodelets_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + nodelets_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->nodelets_length); + if(nodelets_lengthT > nodelets_length) + this->nodelets = (char**)realloc(this->nodelets, nodelets_lengthT * sizeof(char*)); + nodelets_length = nodelets_lengthT; + for( uint32_t i = 0; i < nodelets_length; i++){ + uint32_t length_st_nodelets; + arrToVar(length_st_nodelets, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_nodelets; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_nodelets-1]=0; + this->st_nodelets = (char *)(inbuffer + offset-1); + offset += length_st_nodelets; + memcpy( &(this->nodelets[i]), &(this->st_nodelets), sizeof(char*)); + } + return offset; + } + + const char * getType(){ return NODELETLIST; }; + const char * getMD5(){ return "99c7b10e794f5600b8030e697e946ca7"; }; + + }; + + class NodeletList { + public: + typedef NodeletListRequest Request; + typedef NodeletListResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nodelet/NodeletLoad.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nodelet/NodeletLoad.h new file mode 100644 index 0000000..e7a9c5c --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nodelet/NodeletLoad.h @@ -0,0 +1,250 @@ +#ifndef _ROS_SERVICE_NodeletLoad_h +#define _ROS_SERVICE_NodeletLoad_h +#include +#include +#include +#include "ros/msg.h" + +namespace nodelet +{ + +static const char NODELETLOAD[] = "nodelet/NodeletLoad"; + + class NodeletLoadRequest : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef const char* _type_type; + _type_type type; + uint32_t remap_source_args_length; + typedef char* _remap_source_args_type; + _remap_source_args_type st_remap_source_args; + _remap_source_args_type * remap_source_args; + uint32_t remap_target_args_length; + typedef char* _remap_target_args_type; + _remap_target_args_type st_remap_target_args; + _remap_target_args_type * remap_target_args; + uint32_t my_argv_length; + typedef char* _my_argv_type; + _my_argv_type st_my_argv; + _my_argv_type * my_argv; + typedef const char* _bond_id_type; + _bond_id_type bond_id; + + NodeletLoadRequest(): + name(""), + type(""), + remap_source_args_length(0), remap_source_args(NULL), + remap_target_args_length(0), remap_target_args(NULL), + my_argv_length(0), my_argv(NULL), + bond_id("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + uint32_t length_type = strlen(this->type); + varToArr(outbuffer + offset, length_type); + offset += 4; + memcpy(outbuffer + offset, this->type, length_type); + offset += length_type; + *(outbuffer + offset + 0) = (this->remap_source_args_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->remap_source_args_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->remap_source_args_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->remap_source_args_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->remap_source_args_length); + for( uint32_t i = 0; i < remap_source_args_length; i++){ + uint32_t length_remap_source_argsi = strlen(this->remap_source_args[i]); + varToArr(outbuffer + offset, length_remap_source_argsi); + offset += 4; + memcpy(outbuffer + offset, this->remap_source_args[i], length_remap_source_argsi); + offset += length_remap_source_argsi; + } + *(outbuffer + offset + 0) = (this->remap_target_args_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->remap_target_args_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->remap_target_args_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->remap_target_args_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->remap_target_args_length); + for( uint32_t i = 0; i < remap_target_args_length; i++){ + uint32_t length_remap_target_argsi = strlen(this->remap_target_args[i]); + varToArr(outbuffer + offset, length_remap_target_argsi); + offset += 4; + memcpy(outbuffer + offset, this->remap_target_args[i], length_remap_target_argsi); + offset += length_remap_target_argsi; + } + *(outbuffer + offset + 0) = (this->my_argv_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->my_argv_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->my_argv_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->my_argv_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->my_argv_length); + for( uint32_t i = 0; i < my_argv_length; i++){ + uint32_t length_my_argvi = strlen(this->my_argv[i]); + varToArr(outbuffer + offset, length_my_argvi); + offset += 4; + memcpy(outbuffer + offset, this->my_argv[i], length_my_argvi); + offset += length_my_argvi; + } + uint32_t length_bond_id = strlen(this->bond_id); + varToArr(outbuffer + offset, length_bond_id); + offset += 4; + memcpy(outbuffer + offset, this->bond_id, length_bond_id); + offset += length_bond_id; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + uint32_t length_type; + arrToVar(length_type, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_type; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_type-1]=0; + this->type = (char *)(inbuffer + offset-1); + offset += length_type; + uint32_t remap_source_args_lengthT = ((uint32_t) (*(inbuffer + offset))); + remap_source_args_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + remap_source_args_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + remap_source_args_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->remap_source_args_length); + if(remap_source_args_lengthT > remap_source_args_length) + this->remap_source_args = (char**)realloc(this->remap_source_args, remap_source_args_lengthT * sizeof(char*)); + remap_source_args_length = remap_source_args_lengthT; + for( uint32_t i = 0; i < remap_source_args_length; i++){ + uint32_t length_st_remap_source_args; + arrToVar(length_st_remap_source_args, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_remap_source_args; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_remap_source_args-1]=0; + this->st_remap_source_args = (char *)(inbuffer + offset-1); + offset += length_st_remap_source_args; + memcpy( &(this->remap_source_args[i]), &(this->st_remap_source_args), sizeof(char*)); + } + uint32_t remap_target_args_lengthT = ((uint32_t) (*(inbuffer + offset))); + remap_target_args_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + remap_target_args_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + remap_target_args_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->remap_target_args_length); + if(remap_target_args_lengthT > remap_target_args_length) + this->remap_target_args = (char**)realloc(this->remap_target_args, remap_target_args_lengthT * sizeof(char*)); + remap_target_args_length = remap_target_args_lengthT; + for( uint32_t i = 0; i < remap_target_args_length; i++){ + uint32_t length_st_remap_target_args; + arrToVar(length_st_remap_target_args, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_remap_target_args; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_remap_target_args-1]=0; + this->st_remap_target_args = (char *)(inbuffer + offset-1); + offset += length_st_remap_target_args; + memcpy( &(this->remap_target_args[i]), &(this->st_remap_target_args), sizeof(char*)); + } + uint32_t my_argv_lengthT = ((uint32_t) (*(inbuffer + offset))); + my_argv_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + my_argv_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + my_argv_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->my_argv_length); + if(my_argv_lengthT > my_argv_length) + this->my_argv = (char**)realloc(this->my_argv, my_argv_lengthT * sizeof(char*)); + my_argv_length = my_argv_lengthT; + for( uint32_t i = 0; i < my_argv_length; i++){ + uint32_t length_st_my_argv; + arrToVar(length_st_my_argv, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_my_argv; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_my_argv-1]=0; + this->st_my_argv = (char *)(inbuffer + offset-1); + offset += length_st_my_argv; + memcpy( &(this->my_argv[i]), &(this->st_my_argv), sizeof(char*)); + } + uint32_t length_bond_id; + arrToVar(length_bond_id, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_bond_id; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_bond_id-1]=0; + this->bond_id = (char *)(inbuffer + offset-1); + offset += length_bond_id; + return offset; + } + + const char * getType(){ return NODELETLOAD; }; + const char * getMD5(){ return "c6e28cc4d2e259249d96cfb50658fbec"; }; + + }; + + class NodeletLoadResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + + NodeletLoadResponse(): + success(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + return offset; + } + + const char * getType(){ return NODELETLOAD; }; + const char * getMD5(){ return "358e233cde0c8a8bcfea4ce193f8fc15"; }; + + }; + + class NodeletLoad { + public: + typedef NodeletLoadRequest Request; + typedef NodeletLoadResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nodelet/NodeletUnload.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nodelet/NodeletUnload.h new file mode 100644 index 0000000..bc865b4 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/nodelet/NodeletUnload.h @@ -0,0 +1,105 @@ +#ifndef _ROS_SERVICE_NodeletUnload_h +#define _ROS_SERVICE_NodeletUnload_h +#include +#include +#include +#include "ros/msg.h" + +namespace nodelet +{ + +static const char NODELETUNLOAD[] = "nodelet/NodeletUnload"; + + class NodeletUnloadRequest : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + + NodeletUnloadRequest(): + name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + return offset; + } + + const char * getType(){ return NODELETUNLOAD; }; + const char * getMD5(){ return "c1f3d28f1b044c871e6eff2e9fc3c667"; }; + + }; + + class NodeletUnloadResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + + NodeletUnloadResponse(): + success(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + return offset; + } + + const char * getType(){ return NODELETUNLOAD; }; + const char * getMD5(){ return "358e233cde0c8a8bcfea4ce193f8fc15"; }; + + }; + + class NodeletUnload { + public: + typedef NodeletUnloadRequest Request; + typedef NodeletUnloadResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/openni2_camera/GetSerial.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/openni2_camera/GetSerial.h new file mode 100644 index 0000000..c0f1cdf --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/openni2_camera/GetSerial.h @@ -0,0 +1,87 @@ +#ifndef _ROS_SERVICE_GetSerial_h +#define _ROS_SERVICE_GetSerial_h +#include +#include +#include +#include "ros/msg.h" + +namespace openni2_camera +{ + +static const char GETSERIAL[] = "openni2_camera/GetSerial"; + + class GetSerialRequest : public ros::Msg + { + public: + + GetSerialRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return GETSERIAL; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class GetSerialResponse : public ros::Msg + { + public: + typedef const char* _serial_type; + _serial_type serial; + + GetSerialResponse(): + serial("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_serial = strlen(this->serial); + varToArr(outbuffer + offset, length_serial); + offset += 4; + memcpy(outbuffer + offset, this->serial, length_serial); + offset += length_serial; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_serial; + arrToVar(length_serial, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_serial; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_serial-1]=0; + this->serial = (char *)(inbuffer + offset-1); + offset += length_serial; + return offset; + } + + const char * getType(){ return GETSERIAL; }; + const char * getMD5(){ return "fca40cf463282a80db4e2037c8a61741"; }; + + }; + + class GetSerial { + public: + typedef GetSerialRequest Request; + typedef GetSerialResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/pcl_msgs/ModelCoefficients.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/pcl_msgs/ModelCoefficients.h new file mode 100644 index 0000000..3256a94 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/pcl_msgs/ModelCoefficients.h @@ -0,0 +1,88 @@ +#ifndef _ROS_pcl_msgs_ModelCoefficients_h +#define _ROS_pcl_msgs_ModelCoefficients_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace pcl_msgs +{ + + class ModelCoefficients : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t values_length; + typedef float _values_type; + _values_type st_values; + _values_type * values; + + ModelCoefficients(): + header(), + values_length(0), values(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->values_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->values_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->values_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->values_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->values_length); + for( uint32_t i = 0; i < values_length; i++){ + union { + float real; + uint32_t base; + } u_valuesi; + u_valuesi.real = this->values[i]; + *(outbuffer + offset + 0) = (u_valuesi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_valuesi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_valuesi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_valuesi.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->values[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t values_lengthT = ((uint32_t) (*(inbuffer + offset))); + values_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + values_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + values_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->values_length); + if(values_lengthT > values_length) + this->values = (float*)realloc(this->values, values_lengthT * sizeof(float)); + values_length = values_lengthT; + for( uint32_t i = 0; i < values_length; i++){ + union { + float real; + uint32_t base; + } u_st_values; + u_st_values.base = 0; + u_st_values.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_values.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_values.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_values.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_values = u_st_values.real; + offset += sizeof(this->st_values); + memcpy( &(this->values[i]), &(this->st_values), sizeof(float)); + } + return offset; + } + + const char * getType(){ return "pcl_msgs/ModelCoefficients"; }; + const char * getMD5(){ return "ca27dea75e72cb894cd36f9e5005e93e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/pcl_msgs/PointIndices.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/pcl_msgs/PointIndices.h new file mode 100644 index 0000000..56feb9b --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/pcl_msgs/PointIndices.h @@ -0,0 +1,88 @@ +#ifndef _ROS_pcl_msgs_PointIndices_h +#define _ROS_pcl_msgs_PointIndices_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace pcl_msgs +{ + + class PointIndices : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t indices_length; + typedef int32_t _indices_type; + _indices_type st_indices; + _indices_type * indices; + + PointIndices(): + header(), + indices_length(0), indices(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->indices_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->indices_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->indices_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->indices_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->indices_length); + for( uint32_t i = 0; i < indices_length; i++){ + union { + int32_t real; + uint32_t base; + } u_indicesi; + u_indicesi.real = this->indices[i]; + *(outbuffer + offset + 0) = (u_indicesi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_indicesi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_indicesi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_indicesi.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->indices[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t indices_lengthT = ((uint32_t) (*(inbuffer + offset))); + indices_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + indices_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + indices_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->indices_length); + if(indices_lengthT > indices_length) + this->indices = (int32_t*)realloc(this->indices, indices_lengthT * sizeof(int32_t)); + indices_length = indices_lengthT; + for( uint32_t i = 0; i < indices_length; i++){ + union { + int32_t real; + uint32_t base; + } u_st_indices; + u_st_indices.base = 0; + u_st_indices.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_indices.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_indices.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_indices.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_indices = u_st_indices.real; + offset += sizeof(this->st_indices); + memcpy( &(this->indices[i]), &(this->st_indices), sizeof(int32_t)); + } + return offset; + } + + const char * getType(){ return "pcl_msgs/PointIndices"; }; + const char * getMD5(){ return "458c7998b7eaf99908256472e273b3d4"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/pcl_msgs/PolygonMesh.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/pcl_msgs/PolygonMesh.h new file mode 100644 index 0000000..d98e4c1 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/pcl_msgs/PolygonMesh.h @@ -0,0 +1,76 @@ +#ifndef _ROS_pcl_msgs_PolygonMesh_h +#define _ROS_pcl_msgs_PolygonMesh_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "sensor_msgs/PointCloud2.h" +#include "pcl_msgs/Vertices.h" + +namespace pcl_msgs +{ + + class PolygonMesh : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef sensor_msgs::PointCloud2 _cloud_type; + _cloud_type cloud; + uint32_t polygons_length; + typedef pcl_msgs::Vertices _polygons_type; + _polygons_type st_polygons; + _polygons_type * polygons; + + PolygonMesh(): + header(), + cloud(), + polygons_length(0), polygons(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->cloud.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->polygons_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->polygons_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->polygons_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->polygons_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->polygons_length); + for( uint32_t i = 0; i < polygons_length; i++){ + offset += this->polygons[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->cloud.deserialize(inbuffer + offset); + uint32_t polygons_lengthT = ((uint32_t) (*(inbuffer + offset))); + polygons_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + polygons_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + polygons_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->polygons_length); + if(polygons_lengthT > polygons_length) + this->polygons = (pcl_msgs::Vertices*)realloc(this->polygons, polygons_lengthT * sizeof(pcl_msgs::Vertices)); + polygons_length = polygons_lengthT; + for( uint32_t i = 0; i < polygons_length; i++){ + offset += this->st_polygons.deserialize(inbuffer + offset); + memcpy( &(this->polygons[i]), &(this->st_polygons), sizeof(pcl_msgs::Vertices)); + } + return offset; + } + + const char * getType(){ return "pcl_msgs/PolygonMesh"; }; + const char * getMD5(){ return "45a5fc6ad2cde8489600a790acc9a38a"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/pcl_msgs/Vertices.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/pcl_msgs/Vertices.h new file mode 100644 index 0000000..55a6704 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/pcl_msgs/Vertices.h @@ -0,0 +1,71 @@ +#ifndef _ROS_pcl_msgs_Vertices_h +#define _ROS_pcl_msgs_Vertices_h + +#include +#include +#include +#include "ros/msg.h" + +namespace pcl_msgs +{ + + class Vertices : public ros::Msg + { + public: + uint32_t vertices_length; + typedef uint32_t _vertices_type; + _vertices_type st_vertices; + _vertices_type * vertices; + + Vertices(): + vertices_length(0), vertices(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->vertices_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->vertices_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->vertices_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->vertices_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->vertices_length); + for( uint32_t i = 0; i < vertices_length; i++){ + *(outbuffer + offset + 0) = (this->vertices[i] >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->vertices[i] >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->vertices[i] >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->vertices[i] >> (8 * 3)) & 0xFF; + offset += sizeof(this->vertices[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t vertices_lengthT = ((uint32_t) (*(inbuffer + offset))); + vertices_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + vertices_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + vertices_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->vertices_length); + if(vertices_lengthT > vertices_length) + this->vertices = (uint32_t*)realloc(this->vertices, vertices_lengthT * sizeof(uint32_t)); + vertices_length = vertices_lengthT; + for( uint32_t i = 0; i < vertices_length; i++){ + this->st_vertices = ((uint32_t) (*(inbuffer + offset))); + this->st_vertices |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->st_vertices |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->st_vertices |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->st_vertices); + memcpy( &(this->vertices[i]), &(this->st_vertices), sizeof(uint32_t)); + } + return offset; + } + + const char * getType(){ return "pcl_msgs/Vertices"; }; + const char * getMD5(){ return "39bd7b1c23763ddd1b882b97cb7cfe11"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/polled_camera/GetPolledImage.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/polled_camera/GetPolledImage.h new file mode 100644 index 0000000..b062405 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/polled_camera/GetPolledImage.h @@ -0,0 +1,202 @@ +#ifndef _ROS_SERVICE_GetPolledImage_h +#define _ROS_SERVICE_GetPolledImage_h +#include +#include +#include +#include "ros/msg.h" +#include "sensor_msgs/RegionOfInterest.h" +#include "ros/duration.h" +#include "ros/time.h" + +namespace polled_camera +{ + +static const char GETPOLLEDIMAGE[] = "polled_camera/GetPolledImage"; + + class GetPolledImageRequest : public ros::Msg + { + public: + typedef const char* _response_namespace_type; + _response_namespace_type response_namespace; + typedef ros::Duration _timeout_type; + _timeout_type timeout; + typedef uint32_t _binning_x_type; + _binning_x_type binning_x; + typedef uint32_t _binning_y_type; + _binning_y_type binning_y; + typedef sensor_msgs::RegionOfInterest _roi_type; + _roi_type roi; + + GetPolledImageRequest(): + response_namespace(""), + timeout(), + binning_x(0), + binning_y(0), + roi() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_response_namespace = strlen(this->response_namespace); + varToArr(outbuffer + offset, length_response_namespace); + offset += 4; + memcpy(outbuffer + offset, this->response_namespace, length_response_namespace); + offset += length_response_namespace; + *(outbuffer + offset + 0) = (this->timeout.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->timeout.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->timeout.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->timeout.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->timeout.sec); + *(outbuffer + offset + 0) = (this->timeout.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->timeout.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->timeout.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->timeout.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->timeout.nsec); + *(outbuffer + offset + 0) = (this->binning_x >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->binning_x >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->binning_x >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->binning_x >> (8 * 3)) & 0xFF; + offset += sizeof(this->binning_x); + *(outbuffer + offset + 0) = (this->binning_y >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->binning_y >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->binning_y >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->binning_y >> (8 * 3)) & 0xFF; + offset += sizeof(this->binning_y); + offset += this->roi.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_response_namespace; + arrToVar(length_response_namespace, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_response_namespace; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_response_namespace-1]=0; + this->response_namespace = (char *)(inbuffer + offset-1); + offset += length_response_namespace; + this->timeout.sec = ((uint32_t) (*(inbuffer + offset))); + this->timeout.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->timeout.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->timeout.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->timeout.sec); + this->timeout.nsec = ((uint32_t) (*(inbuffer + offset))); + this->timeout.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->timeout.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->timeout.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->timeout.nsec); + this->binning_x = ((uint32_t) (*(inbuffer + offset))); + this->binning_x |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->binning_x |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->binning_x |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->binning_x); + this->binning_y = ((uint32_t) (*(inbuffer + offset))); + this->binning_y |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->binning_y |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->binning_y |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->binning_y); + offset += this->roi.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return GETPOLLEDIMAGE; }; + const char * getMD5(){ return "c77ed43e530fd48e9e7a2a93845e154c"; }; + + }; + + class GetPolledImageResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + typedef ros::Time _stamp_type; + _stamp_type stamp; + + GetPolledImageResponse(): + success(0), + status_message(""), + stamp() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + *(outbuffer + offset + 0) = (this->stamp.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp.sec); + *(outbuffer + offset + 0) = (this->stamp.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + this->stamp.sec = ((uint32_t) (*(inbuffer + offset))); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp.sec); + this->stamp.nsec = ((uint32_t) (*(inbuffer + offset))); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp.nsec); + return offset; + } + + const char * getType(){ return GETPOLLEDIMAGE; }; + const char * getMD5(){ return "dbf1f851bc511800e6129ccd5a3542ab"; }; + + }; + + class GetPolledImage { + public: + typedef GetPolledImageRequest Request; + typedef GetPolledImageResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/Behaviour.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/Behaviour.h new file mode 100644 index 0000000..04c5d8a --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/Behaviour.h @@ -0,0 +1,183 @@ +#ifndef _ROS_py_trees_msgs_Behaviour_h +#define _ROS_py_trees_msgs_Behaviour_h + +#include +#include +#include +#include "ros/msg.h" +#include "uuid_msgs/UniqueID.h" + +namespace py_trees_msgs +{ + + class Behaviour : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef const char* _class_name_type; + _class_name_type class_name; + typedef uuid_msgs::UniqueID _own_id_type; + _own_id_type own_id; + typedef uuid_msgs::UniqueID _parent_id_type; + _parent_id_type parent_id; + typedef uuid_msgs::UniqueID _tip_id_type; + _tip_id_type tip_id; + uint32_t child_ids_length; + typedef uuid_msgs::UniqueID _child_ids_type; + _child_ids_type st_child_ids; + _child_ids_type * child_ids; + typedef uint8_t _type_type; + _type_type type; + typedef uint8_t _blackbox_level_type; + _blackbox_level_type blackbox_level; + typedef uint8_t _status_type; + _status_type status; + typedef const char* _message_type; + _message_type message; + typedef bool _is_active_type; + _is_active_type is_active; + enum { INVALID = 1 }; + enum { RUNNING = 2 }; + enum { SUCCESS = 3 }; + enum { FAILURE = 4 }; + enum { UNKNOWN_TYPE = 0 }; + enum { BEHAVIOUR = 1 }; + enum { SEQUENCE = 2 }; + enum { SELECTOR = 3 }; + enum { PARALLEL = 4 }; + enum { CHOOSER = 5 }; + enum { BLACKBOX_LEVEL_DETAIL = 1 }; + enum { BLACKBOX_LEVEL_COMPONENT = 2 }; + enum { BLACKBOX_LEVEL_BIG_PICTURE = 3 }; + enum { BLACKBOX_LEVEL_NOT_A_BLACKBOX = 4 }; + + Behaviour(): + name(""), + class_name(""), + own_id(), + parent_id(), + tip_id(), + child_ids_length(0), child_ids(NULL), + type(0), + blackbox_level(0), + status(0), + message(""), + is_active(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + uint32_t length_class_name = strlen(this->class_name); + varToArr(outbuffer + offset, length_class_name); + offset += 4; + memcpy(outbuffer + offset, this->class_name, length_class_name); + offset += length_class_name; + offset += this->own_id.serialize(outbuffer + offset); + offset += this->parent_id.serialize(outbuffer + offset); + offset += this->tip_id.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->child_ids_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->child_ids_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->child_ids_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->child_ids_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->child_ids_length); + for( uint32_t i = 0; i < child_ids_length; i++){ + offset += this->child_ids[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->type >> (8 * 0)) & 0xFF; + offset += sizeof(this->type); + *(outbuffer + offset + 0) = (this->blackbox_level >> (8 * 0)) & 0xFF; + offset += sizeof(this->blackbox_level); + *(outbuffer + offset + 0) = (this->status >> (8 * 0)) & 0xFF; + offset += sizeof(this->status); + uint32_t length_message = strlen(this->message); + varToArr(outbuffer + offset, length_message); + offset += 4; + memcpy(outbuffer + offset, this->message, length_message); + offset += length_message; + union { + bool real; + uint8_t base; + } u_is_active; + u_is_active.real = this->is_active; + *(outbuffer + offset + 0) = (u_is_active.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->is_active); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + uint32_t length_class_name; + arrToVar(length_class_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_class_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_class_name-1]=0; + this->class_name = (char *)(inbuffer + offset-1); + offset += length_class_name; + offset += this->own_id.deserialize(inbuffer + offset); + offset += this->parent_id.deserialize(inbuffer + offset); + offset += this->tip_id.deserialize(inbuffer + offset); + uint32_t child_ids_lengthT = ((uint32_t) (*(inbuffer + offset))); + child_ids_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + child_ids_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + child_ids_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->child_ids_length); + if(child_ids_lengthT > child_ids_length) + this->child_ids = (uuid_msgs::UniqueID*)realloc(this->child_ids, child_ids_lengthT * sizeof(uuid_msgs::UniqueID)); + child_ids_length = child_ids_lengthT; + for( uint32_t i = 0; i < child_ids_length; i++){ + offset += this->st_child_ids.deserialize(inbuffer + offset); + memcpy( &(this->child_ids[i]), &(this->st_child_ids), sizeof(uuid_msgs::UniqueID)); + } + this->type = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->type); + this->blackbox_level = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->blackbox_level); + this->status = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->status); + uint32_t length_message; + arrToVar(length_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_message-1]=0; + this->message = (char *)(inbuffer + offset-1); + offset += length_message; + union { + bool real; + uint8_t base; + } u_is_active; + u_is_active.base = 0; + u_is_active.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->is_active = u_is_active.real; + offset += sizeof(this->is_active); + return offset; + } + + const char * getType(){ return "py_trees_msgs/Behaviour"; }; + const char * getMD5(){ return "88ddda148fc81f5dc402f56e3e333222"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/BehaviourTree.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/BehaviourTree.h new file mode 100644 index 0000000..33bfd19 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/BehaviourTree.h @@ -0,0 +1,70 @@ +#ifndef _ROS_py_trees_msgs_BehaviourTree_h +#define _ROS_py_trees_msgs_BehaviourTree_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "py_trees_msgs/Behaviour.h" + +namespace py_trees_msgs +{ + + class BehaviourTree : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t behaviours_length; + typedef py_trees_msgs::Behaviour _behaviours_type; + _behaviours_type st_behaviours; + _behaviours_type * behaviours; + + BehaviourTree(): + header(), + behaviours_length(0), behaviours(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->behaviours_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->behaviours_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->behaviours_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->behaviours_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->behaviours_length); + for( uint32_t i = 0; i < behaviours_length; i++){ + offset += this->behaviours[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t behaviours_lengthT = ((uint32_t) (*(inbuffer + offset))); + behaviours_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + behaviours_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + behaviours_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->behaviours_length); + if(behaviours_lengthT > behaviours_length) + this->behaviours = (py_trees_msgs::Behaviour*)realloc(this->behaviours, behaviours_lengthT * sizeof(py_trees_msgs::Behaviour)); + behaviours_length = behaviours_lengthT; + for( uint32_t i = 0; i < behaviours_length; i++){ + offset += this->st_behaviours.deserialize(inbuffer + offset); + memcpy( &(this->behaviours[i]), &(this->st_behaviours), sizeof(py_trees_msgs::Behaviour)); + } + return offset; + } + + const char * getType(){ return "py_trees_msgs/BehaviourTree"; }; + const char * getMD5(){ return "239023f5538cba34a10a3a5cd6610fa0"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/CloseBlackboardWatcher.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/CloseBlackboardWatcher.h new file mode 100644 index 0000000..5c6d392 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/CloseBlackboardWatcher.h @@ -0,0 +1,105 @@ +#ifndef _ROS_SERVICE_CloseBlackboardWatcher_h +#define _ROS_SERVICE_CloseBlackboardWatcher_h +#include +#include +#include +#include "ros/msg.h" + +namespace py_trees_msgs +{ + +static const char CLOSEBLACKBOARDWATCHER[] = "py_trees_msgs/CloseBlackboardWatcher"; + + class CloseBlackboardWatcherRequest : public ros::Msg + { + public: + typedef const char* _topic_name_type; + _topic_name_type topic_name; + + CloseBlackboardWatcherRequest(): + topic_name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_topic_name = strlen(this->topic_name); + varToArr(outbuffer + offset, length_topic_name); + offset += 4; + memcpy(outbuffer + offset, this->topic_name, length_topic_name); + offset += length_topic_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_topic_name; + arrToVar(length_topic_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_topic_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_topic_name-1]=0; + this->topic_name = (char *)(inbuffer + offset-1); + offset += length_topic_name; + return offset; + } + + const char * getType(){ return CLOSEBLACKBOARDWATCHER; }; + const char * getMD5(){ return "b38cc2f19f45368c2db7867751ce95a9"; }; + + }; + + class CloseBlackboardWatcherResponse : public ros::Msg + { + public: + typedef bool _result_type; + _result_type result; + + CloseBlackboardWatcherResponse(): + result(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_result; + u_result.real = this->result; + *(outbuffer + offset + 0) = (u_result.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->result); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_result; + u_result.base = 0; + u_result.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->result = u_result.real; + offset += sizeof(this->result); + return offset; + } + + const char * getType(){ return CLOSEBLACKBOARDWATCHER; }; + const char * getMD5(){ return "eb13ac1f1354ccecb7941ee8fa2192e8"; }; + + }; + + class CloseBlackboardWatcher { + public: + typedef CloseBlackboardWatcherRequest Request; + typedef CloseBlackboardWatcherResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockAction.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockAction.h new file mode 100644 index 0000000..d9945d0 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_py_trees_msgs_DockAction_h +#define _ROS_py_trees_msgs_DockAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "py_trees_msgs/DockActionGoal.h" +#include "py_trees_msgs/DockActionResult.h" +#include "py_trees_msgs/DockActionFeedback.h" + +namespace py_trees_msgs +{ + + class DockAction : public ros::Msg + { + public: + typedef py_trees_msgs::DockActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef py_trees_msgs::DockActionResult _action_result_type; + _action_result_type action_result; + typedef py_trees_msgs::DockActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + DockAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "py_trees_msgs/DockAction"; }; + const char * getMD5(){ return "1487f2ccdee1636e3fa5ee088040ee3a"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockActionFeedback.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockActionFeedback.h new file mode 100644 index 0000000..f485e2b --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_py_trees_msgs_DockActionFeedback_h +#define _ROS_py_trees_msgs_DockActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "py_trees_msgs/DockFeedback.h" + +namespace py_trees_msgs +{ + + class DockActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef py_trees_msgs::DockFeedback _feedback_type; + _feedback_type feedback; + + DockActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "py_trees_msgs/DockActionFeedback"; }; + const char * getMD5(){ return "2ff213e56f8a13eff9119a87d46f6e06"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockActionGoal.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockActionGoal.h new file mode 100644 index 0000000..e900929 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_py_trees_msgs_DockActionGoal_h +#define _ROS_py_trees_msgs_DockActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "py_trees_msgs/DockGoal.h" + +namespace py_trees_msgs +{ + + class DockActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef py_trees_msgs::DockGoal _goal_type; + _goal_type goal; + + DockActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "py_trees_msgs/DockActionGoal"; }; + const char * getMD5(){ return "792a8f48465c33ddc8270c5f2a92be76"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockActionResult.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockActionResult.h new file mode 100644 index 0000000..622b666 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_py_trees_msgs_DockActionResult_h +#define _ROS_py_trees_msgs_DockActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "py_trees_msgs/DockResult.h" + +namespace py_trees_msgs +{ + + class DockActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef py_trees_msgs::DockResult _result_type; + _result_type result; + + DockActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "py_trees_msgs/DockActionResult"; }; + const char * getMD5(){ return "4eda63f75c02197dafd2a62a0d413ab0"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockFeedback.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockFeedback.h new file mode 100644 index 0000000..8f6e2a1 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockFeedback.h @@ -0,0 +1,62 @@ +#ifndef _ROS_py_trees_msgs_DockFeedback_h +#define _ROS_py_trees_msgs_DockFeedback_h + +#include +#include +#include +#include "ros/msg.h" + +namespace py_trees_msgs +{ + + class DockFeedback : public ros::Msg + { + public: + typedef float _percentage_completed_type; + _percentage_completed_type percentage_completed; + + DockFeedback(): + percentage_completed(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + float real; + uint32_t base; + } u_percentage_completed; + u_percentage_completed.real = this->percentage_completed; + *(outbuffer + offset + 0) = (u_percentage_completed.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_percentage_completed.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_percentage_completed.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_percentage_completed.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->percentage_completed); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + float real; + uint32_t base; + } u_percentage_completed; + u_percentage_completed.base = 0; + u_percentage_completed.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_percentage_completed.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_percentage_completed.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_percentage_completed.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->percentage_completed = u_percentage_completed.real; + offset += sizeof(this->percentage_completed); + return offset; + } + + const char * getType(){ return "py_trees_msgs/DockFeedback"; }; + const char * getMD5(){ return "26e2c7154b190781742892deccb6c8f0"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockGoal.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockGoal.h new file mode 100644 index 0000000..ac04af8 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_py_trees_msgs_DockGoal_h +#define _ROS_py_trees_msgs_DockGoal_h + +#include +#include +#include +#include "ros/msg.h" + +namespace py_trees_msgs +{ + + class DockGoal : public ros::Msg + { + public: + typedef bool _dock_type; + _dock_type dock; + + DockGoal(): + dock(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_dock; + u_dock.real = this->dock; + *(outbuffer + offset + 0) = (u_dock.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->dock); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_dock; + u_dock.base = 0; + u_dock.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->dock = u_dock.real; + offset += sizeof(this->dock); + return offset; + } + + const char * getType(){ return "py_trees_msgs/DockGoal"; }; + const char * getMD5(){ return "035360b0bb03f7f742a0b2d734a3a660"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockResult.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockResult.h new file mode 100644 index 0000000..685ba13 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockResult.h @@ -0,0 +1,75 @@ +#ifndef _ROS_py_trees_msgs_DockResult_h +#define _ROS_py_trees_msgs_DockResult_h + +#include +#include +#include +#include "ros/msg.h" + +namespace py_trees_msgs +{ + + class DockResult : public ros::Msg + { + public: + typedef int8_t _value_type; + _value_type value; + typedef const char* _message_type; + _message_type message; + enum { SUCCESS = 0 }; + enum { ERROR = 1 }; + + DockResult(): + value(0), + message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int8_t real; + uint8_t base; + } u_value; + u_value.real = this->value; + *(outbuffer + offset + 0) = (u_value.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->value); + uint32_t length_message = strlen(this->message); + varToArr(outbuffer + offset, length_message); + offset += 4; + memcpy(outbuffer + offset, this->message, length_message); + offset += length_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int8_t real; + uint8_t base; + } u_value; + u_value.base = 0; + u_value.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->value = u_value.real; + offset += sizeof(this->value); + uint32_t length_message; + arrToVar(length_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_message-1]=0; + this->message = (char *)(inbuffer + offset-1); + offset += length_message; + return offset; + } + + const char * getType(){ return "py_trees_msgs/DockResult"; }; + const char * getMD5(){ return "7e3448b3518ac363f90f534593733372"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/GetBlackboardVariables.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/GetBlackboardVariables.h new file mode 100644 index 0000000..cd90747 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/GetBlackboardVariables.h @@ -0,0 +1,107 @@ +#ifndef _ROS_SERVICE_GetBlackboardVariables_h +#define _ROS_SERVICE_GetBlackboardVariables_h +#include +#include +#include +#include "ros/msg.h" + +namespace py_trees_msgs +{ + +static const char GETBLACKBOARDVARIABLES[] = "py_trees_msgs/GetBlackboardVariables"; + + class GetBlackboardVariablesRequest : public ros::Msg + { + public: + + GetBlackboardVariablesRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return GETBLACKBOARDVARIABLES; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class GetBlackboardVariablesResponse : public ros::Msg + { + public: + uint32_t variables_length; + typedef char* _variables_type; + _variables_type st_variables; + _variables_type * variables; + + GetBlackboardVariablesResponse(): + variables_length(0), variables(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->variables_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->variables_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->variables_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->variables_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->variables_length); + for( uint32_t i = 0; i < variables_length; i++){ + uint32_t length_variablesi = strlen(this->variables[i]); + varToArr(outbuffer + offset, length_variablesi); + offset += 4; + memcpy(outbuffer + offset, this->variables[i], length_variablesi); + offset += length_variablesi; + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t variables_lengthT = ((uint32_t) (*(inbuffer + offset))); + variables_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + variables_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + variables_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->variables_length); + if(variables_lengthT > variables_length) + this->variables = (char**)realloc(this->variables, variables_lengthT * sizeof(char*)); + variables_length = variables_lengthT; + for( uint32_t i = 0; i < variables_length; i++){ + uint32_t length_st_variables; + arrToVar(length_st_variables, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_variables; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_variables-1]=0; + this->st_variables = (char *)(inbuffer + offset-1); + offset += length_st_variables; + memcpy( &(this->variables[i]), &(this->st_variables), sizeof(char*)); + } + return offset; + } + + const char * getType(){ return GETBLACKBOARDVARIABLES; }; + const char * getMD5(){ return "8f184382c36d538fab610317191b119e"; }; + + }; + + class GetBlackboardVariables { + public: + typedef GetBlackboardVariablesRequest Request; + typedef GetBlackboardVariablesResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/OpenBlackboardWatcher.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/OpenBlackboardWatcher.h new file mode 100644 index 0000000..e4fb763 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/OpenBlackboardWatcher.h @@ -0,0 +1,124 @@ +#ifndef _ROS_SERVICE_OpenBlackboardWatcher_h +#define _ROS_SERVICE_OpenBlackboardWatcher_h +#include +#include +#include +#include "ros/msg.h" + +namespace py_trees_msgs +{ + +static const char OPENBLACKBOARDWATCHER[] = "py_trees_msgs/OpenBlackboardWatcher"; + + class OpenBlackboardWatcherRequest : public ros::Msg + { + public: + uint32_t variables_length; + typedef char* _variables_type; + _variables_type st_variables; + _variables_type * variables; + + OpenBlackboardWatcherRequest(): + variables_length(0), variables(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->variables_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->variables_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->variables_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->variables_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->variables_length); + for( uint32_t i = 0; i < variables_length; i++){ + uint32_t length_variablesi = strlen(this->variables[i]); + varToArr(outbuffer + offset, length_variablesi); + offset += 4; + memcpy(outbuffer + offset, this->variables[i], length_variablesi); + offset += length_variablesi; + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t variables_lengthT = ((uint32_t) (*(inbuffer + offset))); + variables_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + variables_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + variables_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->variables_length); + if(variables_lengthT > variables_length) + this->variables = (char**)realloc(this->variables, variables_lengthT * sizeof(char*)); + variables_length = variables_lengthT; + for( uint32_t i = 0; i < variables_length; i++){ + uint32_t length_st_variables; + arrToVar(length_st_variables, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_variables; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_variables-1]=0; + this->st_variables = (char *)(inbuffer + offset-1); + offset += length_st_variables; + memcpy( &(this->variables[i]), &(this->st_variables), sizeof(char*)); + } + return offset; + } + + const char * getType(){ return OPENBLACKBOARDWATCHER; }; + const char * getMD5(){ return "8f184382c36d538fab610317191b119e"; }; + + }; + + class OpenBlackboardWatcherResponse : public ros::Msg + { + public: + typedef const char* _topic_type; + _topic_type topic; + + OpenBlackboardWatcherResponse(): + topic("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_topic = strlen(this->topic); + varToArr(outbuffer + offset, length_topic); + offset += 4; + memcpy(outbuffer + offset, this->topic, length_topic); + offset += length_topic; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_topic; + arrToVar(length_topic, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_topic; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_topic-1]=0; + this->topic = (char *)(inbuffer + offset-1); + offset += length_topic; + return offset; + } + + const char * getType(){ return OPENBLACKBOARDWATCHER; }; + const char * getMD5(){ return "d8f94bae31b356b24d0427f80426d0c3"; }; + + }; + + class OpenBlackboardWatcher { + public: + typedef OpenBlackboardWatcherRequest Request; + typedef OpenBlackboardWatcherResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateAction.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateAction.h new file mode 100644 index 0000000..dda6c2f --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_py_trees_msgs_RotateAction_h +#define _ROS_py_trees_msgs_RotateAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "py_trees_msgs/RotateActionGoal.h" +#include "py_trees_msgs/RotateActionResult.h" +#include "py_trees_msgs/RotateActionFeedback.h" + +namespace py_trees_msgs +{ + + class RotateAction : public ros::Msg + { + public: + typedef py_trees_msgs::RotateActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef py_trees_msgs::RotateActionResult _action_result_type; + _action_result_type action_result; + typedef py_trees_msgs::RotateActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + RotateAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "py_trees_msgs/RotateAction"; }; + const char * getMD5(){ return "c68d9e0a719660a32868a081a56942db"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateActionFeedback.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateActionFeedback.h new file mode 100644 index 0000000..e1a7f5b --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_py_trees_msgs_RotateActionFeedback_h +#define _ROS_py_trees_msgs_RotateActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "py_trees_msgs/RotateFeedback.h" + +namespace py_trees_msgs +{ + + class RotateActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef py_trees_msgs::RotateFeedback _feedback_type; + _feedback_type feedback; + + RotateActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "py_trees_msgs/RotateActionFeedback"; }; + const char * getMD5(){ return "344ed0daa120e01d5801edcb980cf618"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateActionGoal.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateActionGoal.h new file mode 100644 index 0000000..1afb37b --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_py_trees_msgs_RotateActionGoal_h +#define _ROS_py_trees_msgs_RotateActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "py_trees_msgs/RotateGoal.h" + +namespace py_trees_msgs +{ + + class RotateActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef py_trees_msgs::RotateGoal _goal_type; + _goal_type goal; + + RotateActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "py_trees_msgs/RotateActionGoal"; }; + const char * getMD5(){ return "4b30be6cd12b9e72826df56b481f40e0"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateActionResult.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateActionResult.h new file mode 100644 index 0000000..7291431 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_py_trees_msgs_RotateActionResult_h +#define _ROS_py_trees_msgs_RotateActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "py_trees_msgs/RotateResult.h" + +namespace py_trees_msgs +{ + + class RotateActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef py_trees_msgs::RotateResult _result_type; + _result_type result; + + RotateActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "py_trees_msgs/RotateActionResult"; }; + const char * getMD5(){ return "4eda63f75c02197dafd2a62a0d413ab0"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateFeedback.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateFeedback.h new file mode 100644 index 0000000..52aa269 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateFeedback.h @@ -0,0 +1,86 @@ +#ifndef _ROS_py_trees_msgs_RotateFeedback_h +#define _ROS_py_trees_msgs_RotateFeedback_h + +#include +#include +#include +#include "ros/msg.h" + +namespace py_trees_msgs +{ + + class RotateFeedback : public ros::Msg + { + public: + typedef float _percentage_completed_type; + _percentage_completed_type percentage_completed; + typedef float _angle_rotated_type; + _angle_rotated_type angle_rotated; + + RotateFeedback(): + percentage_completed(0), + angle_rotated(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + float real; + uint32_t base; + } u_percentage_completed; + u_percentage_completed.real = this->percentage_completed; + *(outbuffer + offset + 0) = (u_percentage_completed.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_percentage_completed.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_percentage_completed.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_percentage_completed.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->percentage_completed); + union { + float real; + uint32_t base; + } u_angle_rotated; + u_angle_rotated.real = this->angle_rotated; + *(outbuffer + offset + 0) = (u_angle_rotated.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_angle_rotated.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_angle_rotated.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_angle_rotated.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->angle_rotated); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + float real; + uint32_t base; + } u_percentage_completed; + u_percentage_completed.base = 0; + u_percentage_completed.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_percentage_completed.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_percentage_completed.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_percentage_completed.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->percentage_completed = u_percentage_completed.real; + offset += sizeof(this->percentage_completed); + union { + float real; + uint32_t base; + } u_angle_rotated; + u_angle_rotated.base = 0; + u_angle_rotated.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_angle_rotated.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_angle_rotated.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_angle_rotated.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->angle_rotated = u_angle_rotated.real; + offset += sizeof(this->angle_rotated); + return offset; + } + + const char * getType(){ return "py_trees_msgs/RotateFeedback"; }; + const char * getMD5(){ return "f1088922e17b4a9f4319356ac8d99645"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateGoal.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateGoal.h new file mode 100644 index 0000000..4d196ed --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateGoal.h @@ -0,0 +1,38 @@ +#ifndef _ROS_py_trees_msgs_RotateGoal_h +#define _ROS_py_trees_msgs_RotateGoal_h + +#include +#include +#include +#include "ros/msg.h" + +namespace py_trees_msgs +{ + + class RotateGoal : public ros::Msg + { + public: + + RotateGoal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "py_trees_msgs/RotateGoal"; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateResult.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateResult.h new file mode 100644 index 0000000..d84dc61 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateResult.h @@ -0,0 +1,75 @@ +#ifndef _ROS_py_trees_msgs_RotateResult_h +#define _ROS_py_trees_msgs_RotateResult_h + +#include +#include +#include +#include "ros/msg.h" + +namespace py_trees_msgs +{ + + class RotateResult : public ros::Msg + { + public: + typedef int8_t _value_type; + _value_type value; + typedef const char* _message_type; + _message_type message; + enum { SUCCESS = 0 }; + enum { ERROR = 1 }; + + RotateResult(): + value(0), + message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int8_t real; + uint8_t base; + } u_value; + u_value.real = this->value; + *(outbuffer + offset + 0) = (u_value.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->value); + uint32_t length_message = strlen(this->message); + varToArr(outbuffer + offset, length_message); + offset += 4; + memcpy(outbuffer + offset, this->message, length_message); + offset += length_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int8_t real; + uint8_t base; + } u_value; + u_value.base = 0; + u_value.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->value = u_value.real; + offset += sizeof(this->value); + uint32_t length_message; + arrToVar(length_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_message-1]=0; + this->message = (char *)(inbuffer + offset-1); + offset += length_message; + return offset; + } + + const char * getType(){ return "py_trees_msgs/RotateResult"; }; + const char * getMD5(){ return "7e3448b3518ac363f90f534593733372"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/robot_pose_ekf/GetStatus.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/robot_pose_ekf/GetStatus.h new file mode 100644 index 0000000..155cde3 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/robot_pose_ekf/GetStatus.h @@ -0,0 +1,87 @@ +#ifndef _ROS_SERVICE_GetStatus_h +#define _ROS_SERVICE_GetStatus_h +#include +#include +#include +#include "ros/msg.h" + +namespace robot_pose_ekf +{ + +static const char GETSTATUS[] = "robot_pose_ekf/GetStatus"; + + class GetStatusRequest : public ros::Msg + { + public: + + GetStatusRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return GETSTATUS; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class GetStatusResponse : public ros::Msg + { + public: + typedef const char* _status_type; + _status_type status; + + GetStatusResponse(): + status("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_status = strlen(this->status); + varToArr(outbuffer + offset, length_status); + offset += 4; + memcpy(outbuffer + offset, this->status, length_status); + offset += length_status; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_status; + arrToVar(length_status, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status-1]=0; + this->status = (char *)(inbuffer + offset-1); + offset += length_status; + return offset; + } + + const char * getType(){ return GETSTATUS; }; + const char * getMD5(){ return "4fe5af303955c287688e7347e9b00278"; }; + + }; + + class GetStatus { + public: + typedef GetStatusRequest Request; + typedef GetStatusResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_service_pair_msgs/TestiesPair.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_service_pair_msgs/TestiesPair.h new file mode 100644 index 0000000..4ea6cfd --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_service_pair_msgs/TestiesPair.h @@ -0,0 +1,50 @@ +#ifndef _ROS_rocon_service_pair_msgs_TestiesPair_h +#define _ROS_rocon_service_pair_msgs_TestiesPair_h + +#include +#include +#include +#include "ros/msg.h" +#include "rocon_service_pair_msgs/TestiesPairRequest.h" +#include "rocon_service_pair_msgs/TestiesPairResponse.h" + +namespace rocon_service_pair_msgs +{ + + class TestiesPair : public ros::Msg + { + public: + typedef rocon_service_pair_msgs::TestiesPairRequest _pair_request_type; + _pair_request_type pair_request; + typedef rocon_service_pair_msgs::TestiesPairResponse _pair_response_type; + _pair_response_type pair_response; + + TestiesPair(): + pair_request(), + pair_response() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->pair_request.serialize(outbuffer + offset); + offset += this->pair_response.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->pair_request.deserialize(inbuffer + offset); + offset += this->pair_response.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "rocon_service_pair_msgs/TestiesPair"; }; + const char * getMD5(){ return "7b5cb9b4ccdb74840ce04ea92d2a141d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_service_pair_msgs/TestiesPairRequest.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_service_pair_msgs/TestiesPairRequest.h new file mode 100644 index 0000000..8da52e4 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_service_pair_msgs/TestiesPairRequest.h @@ -0,0 +1,50 @@ +#ifndef _ROS_rocon_service_pair_msgs_TestiesPairRequest_h +#define _ROS_rocon_service_pair_msgs_TestiesPairRequest_h + +#include +#include +#include +#include "ros/msg.h" +#include "uuid_msgs/UniqueID.h" +#include "rocon_service_pair_msgs/TestiesRequest.h" + +namespace rocon_service_pair_msgs +{ + + class TestiesPairRequest : public ros::Msg + { + public: + typedef uuid_msgs::UniqueID _id_type; + _id_type id; + typedef rocon_service_pair_msgs::TestiesRequest _request_type; + _request_type request; + + TestiesPairRequest(): + id(), + request() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->id.serialize(outbuffer + offset); + offset += this->request.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->id.deserialize(inbuffer + offset); + offset += this->request.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "rocon_service_pair_msgs/TestiesPairRequest"; }; + const char * getMD5(){ return "71ec95e384ce52aa32491f3b69a62027"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_service_pair_msgs/TestiesPairResponse.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_service_pair_msgs/TestiesPairResponse.h new file mode 100644 index 0000000..4fec039 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_service_pair_msgs/TestiesPairResponse.h @@ -0,0 +1,50 @@ +#ifndef _ROS_rocon_service_pair_msgs_TestiesPairResponse_h +#define _ROS_rocon_service_pair_msgs_TestiesPairResponse_h + +#include +#include +#include +#include "ros/msg.h" +#include "uuid_msgs/UniqueID.h" +#include "rocon_service_pair_msgs/TestiesResponse.h" + +namespace rocon_service_pair_msgs +{ + + class TestiesPairResponse : public ros::Msg + { + public: + typedef uuid_msgs::UniqueID _id_type; + _id_type id; + typedef rocon_service_pair_msgs::TestiesResponse _response_type; + _response_type response; + + TestiesPairResponse(): + id(), + response() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->id.serialize(outbuffer + offset); + offset += this->response.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->id.deserialize(inbuffer + offset); + offset += this->response.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "rocon_service_pair_msgs/TestiesPairResponse"; }; + const char * getMD5(){ return "05404c9fe275eda57650fdfced8cf402"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_service_pair_msgs/TestiesRequest.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_service_pair_msgs/TestiesRequest.h new file mode 100644 index 0000000..058b24d --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_service_pair_msgs/TestiesRequest.h @@ -0,0 +1,55 @@ +#ifndef _ROS_rocon_service_pair_msgs_TestiesRequest_h +#define _ROS_rocon_service_pair_msgs_TestiesRequest_h + +#include +#include +#include +#include "ros/msg.h" + +namespace rocon_service_pair_msgs +{ + + class TestiesRequest : public ros::Msg + { + public: + typedef const char* _data_type; + _data_type data; + + TestiesRequest(): + data("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_data = strlen(this->data); + varToArr(outbuffer + offset, length_data); + offset += 4; + memcpy(outbuffer + offset, this->data, length_data); + offset += length_data; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_data; + arrToVar(length_data, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_data; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_data-1]=0; + this->data = (char *)(inbuffer + offset-1); + offset += length_data; + return offset; + } + + const char * getType(){ return "rocon_service_pair_msgs/TestiesRequest"; }; + const char * getMD5(){ return "992ce8a1687cec8c8bd883ec73ca41d1"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_service_pair_msgs/TestiesResponse.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_service_pair_msgs/TestiesResponse.h new file mode 100644 index 0000000..3449e71 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_service_pair_msgs/TestiesResponse.h @@ -0,0 +1,61 @@ +#ifndef _ROS_rocon_service_pair_msgs_TestiesResponse_h +#define _ROS_rocon_service_pair_msgs_TestiesResponse_h + +#include +#include +#include +#include "ros/msg.h" +#include "uuid_msgs/UniqueID.h" + +namespace rocon_service_pair_msgs +{ + + class TestiesResponse : public ros::Msg + { + public: + typedef uuid_msgs::UniqueID _id_type; + _id_type id; + typedef const char* _data_type; + _data_type data; + + TestiesResponse(): + id(), + data("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->id.serialize(outbuffer + offset); + uint32_t length_data = strlen(this->data); + varToArr(outbuffer + offset, length_data); + offset += 4; + memcpy(outbuffer + offset, this->data, length_data); + offset += length_data; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->id.deserialize(inbuffer + offset); + uint32_t length_data; + arrToVar(length_data, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_data; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_data-1]=0; + this->data = (char *)(inbuffer + offset-1); + offset += length_data; + return offset; + } + + const char * getType(){ return "rocon_service_pair_msgs/TestiesResponse"; }; + const char * getMD5(){ return "f2e0bb16a22dc66826bb64ac8b44aeb3"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/Connection.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/Connection.h new file mode 100644 index 0000000..6b4ac1d --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/Connection.h @@ -0,0 +1,146 @@ +#ifndef _ROS_rocon_std_msgs_Connection_h +#define _ROS_rocon_std_msgs_Connection_h + +#include +#include +#include +#include "ros/msg.h" + +namespace rocon_std_msgs +{ + + class Connection : public ros::Msg + { + public: + typedef const char* _type_type; + _type_type type; + typedef const char* _name_type; + _name_type name; + typedef const char* _node_type; + _node_type node; + typedef const char* _type_msg_type; + _type_msg_type type_msg; + typedef const char* _type_info_type; + _type_info_type type_info; + typedef const char* _xmlrpc_uri_type; + _xmlrpc_uri_type xmlrpc_uri; + enum { PUBLISHER = publisher }; + enum { SUBSCRIBER = subscriber }; + enum { SERVICE = service }; + enum { ACTION_CLIENT = action_client }; + enum { ACTION_SERVER = action_server }; + enum { INVALID = invalid }; + + Connection(): + type(""), + name(""), + node(""), + type_msg(""), + type_info(""), + xmlrpc_uri("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_type = strlen(this->type); + varToArr(outbuffer + offset, length_type); + offset += 4; + memcpy(outbuffer + offset, this->type, length_type); + offset += length_type; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + uint32_t length_node = strlen(this->node); + varToArr(outbuffer + offset, length_node); + offset += 4; + memcpy(outbuffer + offset, this->node, length_node); + offset += length_node; + uint32_t length_type_msg = strlen(this->type_msg); + varToArr(outbuffer + offset, length_type_msg); + offset += 4; + memcpy(outbuffer + offset, this->type_msg, length_type_msg); + offset += length_type_msg; + uint32_t length_type_info = strlen(this->type_info); + varToArr(outbuffer + offset, length_type_info); + offset += 4; + memcpy(outbuffer + offset, this->type_info, length_type_info); + offset += length_type_info; + uint32_t length_xmlrpc_uri = strlen(this->xmlrpc_uri); + varToArr(outbuffer + offset, length_xmlrpc_uri); + offset += 4; + memcpy(outbuffer + offset, this->xmlrpc_uri, length_xmlrpc_uri); + offset += length_xmlrpc_uri; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_type; + arrToVar(length_type, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_type; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_type-1]=0; + this->type = (char *)(inbuffer + offset-1); + offset += length_type; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + uint32_t length_node; + arrToVar(length_node, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_node; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_node-1]=0; + this->node = (char *)(inbuffer + offset-1); + offset += length_node; + uint32_t length_type_msg; + arrToVar(length_type_msg, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_type_msg; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_type_msg-1]=0; + this->type_msg = (char *)(inbuffer + offset-1); + offset += length_type_msg; + uint32_t length_type_info; + arrToVar(length_type_info, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_type_info; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_type_info-1]=0; + this->type_info = (char *)(inbuffer + offset-1); + offset += length_type_info; + uint32_t length_xmlrpc_uri; + arrToVar(length_xmlrpc_uri, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_xmlrpc_uri; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_xmlrpc_uri-1]=0; + this->xmlrpc_uri = (char *)(inbuffer + offset-1); + offset += length_xmlrpc_uri; + return offset; + } + + const char * getType(){ return "rocon_std_msgs/Connection"; }; + const char * getMD5(){ return "0dee991006513320090e2ee648136101"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/ConnectionCacheSpin.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/ConnectionCacheSpin.h new file mode 100644 index 0000000..274a452 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/ConnectionCacheSpin.h @@ -0,0 +1,86 @@ +#ifndef _ROS_rocon_std_msgs_ConnectionCacheSpin_h +#define _ROS_rocon_std_msgs_ConnectionCacheSpin_h + +#include +#include +#include +#include "ros/msg.h" + +namespace rocon_std_msgs +{ + + class ConnectionCacheSpin : public ros::Msg + { + public: + typedef float _spin_freq_type; + _spin_freq_type spin_freq; + typedef float _spin_timer_type; + _spin_timer_type spin_timer; + + ConnectionCacheSpin(): + spin_freq(0), + spin_timer(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + float real; + uint32_t base; + } u_spin_freq; + u_spin_freq.real = this->spin_freq; + *(outbuffer + offset + 0) = (u_spin_freq.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_spin_freq.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_spin_freq.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_spin_freq.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->spin_freq); + union { + float real; + uint32_t base; + } u_spin_timer; + u_spin_timer.real = this->spin_timer; + *(outbuffer + offset + 0) = (u_spin_timer.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_spin_timer.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_spin_timer.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_spin_timer.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->spin_timer); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + float real; + uint32_t base; + } u_spin_freq; + u_spin_freq.base = 0; + u_spin_freq.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_spin_freq.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_spin_freq.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_spin_freq.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->spin_freq = u_spin_freq.real; + offset += sizeof(this->spin_freq); + union { + float real; + uint32_t base; + } u_spin_timer; + u_spin_timer.base = 0; + u_spin_timer.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_spin_timer.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_spin_timer.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_spin_timer.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->spin_timer = u_spin_timer.real; + offset += sizeof(this->spin_timer); + return offset; + } + + const char * getType(){ return "rocon_std_msgs/ConnectionCacheSpin"; }; + const char * getMD5(){ return "b6c0b0ddb1d2a2de9918dc5f6d87680a"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/ConnectionsDiff.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/ConnectionsDiff.h new file mode 100644 index 0000000..f7848ac --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/ConnectionsDiff.h @@ -0,0 +1,89 @@ +#ifndef _ROS_rocon_std_msgs_ConnectionsDiff_h +#define _ROS_rocon_std_msgs_ConnectionsDiff_h + +#include +#include +#include +#include "ros/msg.h" +#include "rocon_std_msgs/Connection.h" + +namespace rocon_std_msgs +{ + + class ConnectionsDiff : public ros::Msg + { + public: + uint32_t added_length; + typedef rocon_std_msgs::Connection _added_type; + _added_type st_added; + _added_type * added; + uint32_t lost_length; + typedef rocon_std_msgs::Connection _lost_type; + _lost_type st_lost; + _lost_type * lost; + + ConnectionsDiff(): + added_length(0), added(NULL), + lost_length(0), lost(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->added_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->added_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->added_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->added_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->added_length); + for( uint32_t i = 0; i < added_length; i++){ + offset += this->added[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->lost_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->lost_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->lost_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->lost_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->lost_length); + for( uint32_t i = 0; i < lost_length; i++){ + offset += this->lost[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t added_lengthT = ((uint32_t) (*(inbuffer + offset))); + added_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + added_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + added_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->added_length); + if(added_lengthT > added_length) + this->added = (rocon_std_msgs::Connection*)realloc(this->added, added_lengthT * sizeof(rocon_std_msgs::Connection)); + added_length = added_lengthT; + for( uint32_t i = 0; i < added_length; i++){ + offset += this->st_added.deserialize(inbuffer + offset); + memcpy( &(this->added[i]), &(this->st_added), sizeof(rocon_std_msgs::Connection)); + } + uint32_t lost_lengthT = ((uint32_t) (*(inbuffer + offset))); + lost_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + lost_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + lost_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->lost_length); + if(lost_lengthT > lost_length) + this->lost = (rocon_std_msgs::Connection*)realloc(this->lost, lost_lengthT * sizeof(rocon_std_msgs::Connection)); + lost_length = lost_lengthT; + for( uint32_t i = 0; i < lost_length; i++){ + offset += this->st_lost.deserialize(inbuffer + offset); + memcpy( &(this->lost[i]), &(this->st_lost), sizeof(rocon_std_msgs::Connection)); + } + return offset; + } + + const char * getType(){ return "rocon_std_msgs/ConnectionsDiff"; }; + const char * getMD5(){ return "19f9e3bef1153b4bc619ec3d21b94718"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/ConnectionsList.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/ConnectionsList.h new file mode 100644 index 0000000..3d595df --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/ConnectionsList.h @@ -0,0 +1,64 @@ +#ifndef _ROS_rocon_std_msgs_ConnectionsList_h +#define _ROS_rocon_std_msgs_ConnectionsList_h + +#include +#include +#include +#include "ros/msg.h" +#include "rocon_std_msgs/Connection.h" + +namespace rocon_std_msgs +{ + + class ConnectionsList : public ros::Msg + { + public: + uint32_t connections_length; + typedef rocon_std_msgs::Connection _connections_type; + _connections_type st_connections; + _connections_type * connections; + + ConnectionsList(): + connections_length(0), connections(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->connections_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->connections_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->connections_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->connections_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->connections_length); + for( uint32_t i = 0; i < connections_length; i++){ + offset += this->connections[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t connections_lengthT = ((uint32_t) (*(inbuffer + offset))); + connections_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + connections_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + connections_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->connections_length); + if(connections_lengthT > connections_length) + this->connections = (rocon_std_msgs::Connection*)realloc(this->connections, connections_lengthT * sizeof(rocon_std_msgs::Connection)); + connections_length = connections_lengthT; + for( uint32_t i = 0; i < connections_length; i++){ + offset += this->st_connections.deserialize(inbuffer + offset); + memcpy( &(this->connections[i]), &(this->st_connections), sizeof(rocon_std_msgs::Connection)); + } + return offset; + } + + const char * getType(){ return "rocon_std_msgs/ConnectionsList"; }; + const char * getMD5(){ return "672d6ad69b684884f8fb6f4acedbd39f"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/EmptyString.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/EmptyString.h new file mode 100644 index 0000000..a6d8733 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/EmptyString.h @@ -0,0 +1,87 @@ +#ifndef _ROS_SERVICE_EmptyString_h +#define _ROS_SERVICE_EmptyString_h +#include +#include +#include +#include "ros/msg.h" + +namespace rocon_std_msgs +{ + +static const char EMPTYSTRING[] = "rocon_std_msgs/EmptyString"; + + class EmptyStringRequest : public ros::Msg + { + public: + + EmptyStringRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return EMPTYSTRING; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class EmptyStringResponse : public ros::Msg + { + public: + typedef const char* _data_type; + _data_type data; + + EmptyStringResponse(): + data("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_data = strlen(this->data); + varToArr(outbuffer + offset, length_data); + offset += 4; + memcpy(outbuffer + offset, this->data, length_data); + offset += length_data; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_data; + arrToVar(length_data, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_data; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_data-1]=0; + this->data = (char *)(inbuffer + offset-1); + offset += length_data; + return offset; + } + + const char * getType(){ return EMPTYSTRING; }; + const char * getMD5(){ return "992ce8a1687cec8c8bd883ec73ca41d1"; }; + + }; + + class EmptyString { + public: + typedef EmptyStringRequest Request; + typedef EmptyStringResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/Float32Stamped.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/Float32Stamped.h new file mode 100644 index 0000000..fd8f5ff --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/Float32Stamped.h @@ -0,0 +1,68 @@ +#ifndef _ROS_rocon_std_msgs_Float32Stamped_h +#define _ROS_rocon_std_msgs_Float32Stamped_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace rocon_std_msgs +{ + + class Float32Stamped : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef float _data_type; + _data_type data; + + Float32Stamped(): + header(), + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + union { + float real; + uint32_t base; + } u_data; + u_data.real = this->data; + *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_data.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_data.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_data.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + union { + float real; + uint32_t base; + } u_data; + u_data.base = 0; + u_data.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->data = u_data.real; + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return "rocon_std_msgs/Float32Stamped"; }; + const char * getMD5(){ return "ef848af8cf12f6df11682cc76fba477b"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/Icon.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/Icon.h new file mode 100644 index 0000000..b30516e --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/Icon.h @@ -0,0 +1,99 @@ +#ifndef _ROS_rocon_std_msgs_Icon_h +#define _ROS_rocon_std_msgs_Icon_h + +#include +#include +#include +#include "ros/msg.h" + +namespace rocon_std_msgs +{ + + class Icon : public ros::Msg + { + public: + typedef const char* _resource_name_type; + _resource_name_type resource_name; + typedef const char* _format_type; + _format_type format; + uint32_t data_length; + typedef uint8_t _data_type; + _data_type st_data; + _data_type * data; + + Icon(): + resource_name(""), + format(""), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_resource_name = strlen(this->resource_name); + varToArr(outbuffer + offset, length_resource_name); + offset += 4; + memcpy(outbuffer + offset, this->resource_name, length_resource_name); + offset += length_resource_name; + uint32_t length_format = strlen(this->format); + varToArr(outbuffer + offset, length_format); + offset += 4; + memcpy(outbuffer + offset, this->format, length_format); + offset += length_format; + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_resource_name; + arrToVar(length_resource_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_resource_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_resource_name-1]=0; + this->resource_name = (char *)(inbuffer + offset-1); + offset += length_resource_name; + uint32_t length_format; + arrToVar(length_format, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_format; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_format-1]=0; + this->format = (char *)(inbuffer + offset-1); + offset += length_format; + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (uint8_t*)realloc(this->data, data_lengthT * sizeof(uint8_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + this->st_data = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(uint8_t)); + } + return offset; + } + + const char * getType(){ return "rocon_std_msgs/Icon"; }; + const char * getMD5(){ return "2ddacfedd31b6da3f723794afbd3b9de"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/KeyValue.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/KeyValue.h new file mode 100644 index 0000000..980b1b5 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/KeyValue.h @@ -0,0 +1,72 @@ +#ifndef _ROS_rocon_std_msgs_KeyValue_h +#define _ROS_rocon_std_msgs_KeyValue_h + +#include +#include +#include +#include "ros/msg.h" + +namespace rocon_std_msgs +{ + + class KeyValue : public ros::Msg + { + public: + typedef const char* _key_type; + _key_type key; + typedef const char* _value_type; + _value_type value; + + KeyValue(): + key(""), + value("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_key = strlen(this->key); + varToArr(outbuffer + offset, length_key); + offset += 4; + memcpy(outbuffer + offset, this->key, length_key); + offset += length_key; + uint32_t length_value = strlen(this->value); + varToArr(outbuffer + offset, length_value); + offset += 4; + memcpy(outbuffer + offset, this->value, length_value); + offset += length_value; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_key; + arrToVar(length_key, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_key; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_key-1]=0; + this->key = (char *)(inbuffer + offset-1); + offset += length_key; + uint32_t length_value; + arrToVar(length_value, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_value; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_value-1]=0; + this->value = (char *)(inbuffer + offset-1); + offset += length_value; + return offset; + } + + const char * getType(){ return "rocon_std_msgs/KeyValue"; }; + const char * getMD5(){ return "cf57fdc6617a881a88c16e768132149c"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/MasterInfo.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/MasterInfo.h new file mode 100644 index 0000000..7cf4d4a --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/MasterInfo.h @@ -0,0 +1,112 @@ +#ifndef _ROS_rocon_std_msgs_MasterInfo_h +#define _ROS_rocon_std_msgs_MasterInfo_h + +#include +#include +#include +#include "ros/msg.h" +#include "rocon_std_msgs/Icon.h" + +namespace rocon_std_msgs +{ + + class MasterInfo : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef const char* _rocon_uri_type; + _rocon_uri_type rocon_uri; + typedef const char* _description_type; + _description_type description; + typedef rocon_std_msgs::Icon _icon_type; + _icon_type icon; + typedef const char* _version_type; + _version_type version; + + MasterInfo(): + name(""), + rocon_uri(""), + description(""), + icon(), + version("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + uint32_t length_rocon_uri = strlen(this->rocon_uri); + varToArr(outbuffer + offset, length_rocon_uri); + offset += 4; + memcpy(outbuffer + offset, this->rocon_uri, length_rocon_uri); + offset += length_rocon_uri; + uint32_t length_description = strlen(this->description); + varToArr(outbuffer + offset, length_description); + offset += 4; + memcpy(outbuffer + offset, this->description, length_description); + offset += length_description; + offset += this->icon.serialize(outbuffer + offset); + uint32_t length_version = strlen(this->version); + varToArr(outbuffer + offset, length_version); + offset += 4; + memcpy(outbuffer + offset, this->version, length_version); + offset += length_version; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + uint32_t length_rocon_uri; + arrToVar(length_rocon_uri, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_rocon_uri; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_rocon_uri-1]=0; + this->rocon_uri = (char *)(inbuffer + offset-1); + offset += length_rocon_uri; + uint32_t length_description; + arrToVar(length_description, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_description; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_description-1]=0; + this->description = (char *)(inbuffer + offset-1); + offset += length_description; + offset += this->icon.deserialize(inbuffer + offset); + uint32_t length_version; + arrToVar(length_version, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_version; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_version-1]=0; + this->version = (char *)(inbuffer + offset-1); + offset += length_version; + return offset; + } + + const char * getType(){ return "rocon_std_msgs/MasterInfo"; }; + const char * getMD5(){ return "e85613ae2e3faade6b77d94b4e0bf4bf"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/Remapping.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/Remapping.h new file mode 100644 index 0000000..5e94955 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/Remapping.h @@ -0,0 +1,72 @@ +#ifndef _ROS_rocon_std_msgs_Remapping_h +#define _ROS_rocon_std_msgs_Remapping_h + +#include +#include +#include +#include "ros/msg.h" + +namespace rocon_std_msgs +{ + + class Remapping : public ros::Msg + { + public: + typedef const char* _remap_from_type; + _remap_from_type remap_from; + typedef const char* _remap_to_type; + _remap_to_type remap_to; + + Remapping(): + remap_from(""), + remap_to("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_remap_from = strlen(this->remap_from); + varToArr(outbuffer + offset, length_remap_from); + offset += 4; + memcpy(outbuffer + offset, this->remap_from, length_remap_from); + offset += length_remap_from; + uint32_t length_remap_to = strlen(this->remap_to); + varToArr(outbuffer + offset, length_remap_to); + offset += 4; + memcpy(outbuffer + offset, this->remap_to, length_remap_to); + offset += length_remap_to; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_remap_from; + arrToVar(length_remap_from, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_remap_from; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_remap_from-1]=0; + this->remap_from = (char *)(inbuffer + offset-1); + offset += length_remap_from; + uint32_t length_remap_to; + arrToVar(length_remap_to, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_remap_to; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_remap_to-1]=0; + this->remap_to = (char *)(inbuffer + offset-1); + offset += length_remap_to; + return offset; + } + + const char * getType(){ return "rocon_std_msgs/Remapping"; }; + const char * getMD5(){ return "26f16c667d483280bc5d040bf2c0cd8d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringArray.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringArray.h new file mode 100644 index 0000000..9beb93a --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringArray.h @@ -0,0 +1,75 @@ +#ifndef _ROS_rocon_std_msgs_StringArray_h +#define _ROS_rocon_std_msgs_StringArray_h + +#include +#include +#include +#include "ros/msg.h" + +namespace rocon_std_msgs +{ + + class StringArray : public ros::Msg + { + public: + uint32_t strings_length; + typedef char* _strings_type; + _strings_type st_strings; + _strings_type * strings; + + StringArray(): + strings_length(0), strings(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->strings_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->strings_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->strings_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->strings_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->strings_length); + for( uint32_t i = 0; i < strings_length; i++){ + uint32_t length_stringsi = strlen(this->strings[i]); + varToArr(outbuffer + offset, length_stringsi); + offset += 4; + memcpy(outbuffer + offset, this->strings[i], length_stringsi); + offset += length_stringsi; + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t strings_lengthT = ((uint32_t) (*(inbuffer + offset))); + strings_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + strings_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + strings_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->strings_length); + if(strings_lengthT > strings_length) + this->strings = (char**)realloc(this->strings, strings_lengthT * sizeof(char*)); + strings_length = strings_lengthT; + for( uint32_t i = 0; i < strings_length; i++){ + uint32_t length_st_strings; + arrToVar(length_st_strings, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_strings; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_strings-1]=0; + this->st_strings = (char *)(inbuffer + offset-1); + offset += length_st_strings; + memcpy( &(this->strings[i]), &(this->st_strings), sizeof(char*)); + } + return offset; + } + + const char * getType(){ return "rocon_std_msgs/StringArray"; }; + const char * getMD5(){ return "51789d20146e565223d0963361aecda1"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/Strings.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/Strings.h new file mode 100644 index 0000000..71f9809 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/Strings.h @@ -0,0 +1,83 @@ +#ifndef _ROS_rocon_std_msgs_Strings_h +#define _ROS_rocon_std_msgs_Strings_h + +#include +#include +#include +#include "ros/msg.h" + +namespace rocon_std_msgs +{ + + class Strings : public ros::Msg + { + public: + enum { ROCON_VERSION = acdc }; + enum { URI_WILDCARD = * }; + enum { HW_PC = pc }; + enum { HW_TURTLEBOT2 = turtlebot2 }; + enum { HW_PR2 = pr2 }; + enum { HW_WAITERBOT = waiterbot }; + enum { HW_ROBOT_OTHER = robot_other }; + enum { HW_GALAXY = galaxy }; + enum { HW_MEGA = mega }; + enum { HW_NOTE3 = note3 }; + enum { HW_PHONE_OTHER = phone_other }; + enum { HW_XOOM = xoom }; + enum { HW_NOTE10 = note10 }; + enum { HW_TABLET_OTHER = tablet_other }; + enum { APPLICATION_FRAMEWORK_OTHER = application_framework_other }; + enum { APPLICATION_FRAMEWORK_OPROS = opros }; + enum { APPLICATION_FRAMEWORK_GROOVY = groovy }; + enum { APPLICATION_FRAMEWORK_HYDRO = hydro }; + enum { APPLICATION_FRAMEWORK_INDIGO = indigo }; + enum { APPLICATION_FRAMEWORK_ROS_OTHER = ros_other }; + enum { OS_OSX = osx }; + enum { OS_FREEBSD = freebsd }; + enum { OS_WINXP = winxp }; + enum { OS_WINDOWS7 = windows7 }; + enum { OS_ARCH = arch }; + enum { OS_DEBIAN = debian }; + enum { OS_FEDORA = fedora }; + enum { OS_GENTOO = gentoo }; + enum { OS_PRECISE = precise }; + enum { OS_QUANTAL = quantal }; + enum { OS_RARING = raring }; + enum { OS_SAUCY = saucy }; + enum { OS_HONEYCOMB = honeycomb }; + enum { OS_ICE_CREAM_SANDWICH = ice_cream_sandwich }; + enum { OS_JELLYBEAN = jellybean }; + enum { OS_KITKAT = kitkat }; + enum { OS_CHROME = chrome }; + enum { OS_FIREFOX = firefox }; + enum { OS_INTERNET_EXPLORER = internet_explorer }; + enum { OS_SAFARI = safari }; + enum { OS_OPERA = opera }; + enum { TAG_SERVICE = concert_service }; + enum { TAG_RAPP = rocon_app }; + enum { TAG_GAZEBO_ROBOT_TYPE = concert_gazebo }; + enum { TAG_SOFTWARE = software_farm }; + + Strings() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "rocon_std_msgs/Strings"; }; + const char * getMD5(){ return "58fa1e54e6c0338b3faebae82a13e892"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringsPair.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringsPair.h new file mode 100644 index 0000000..1a80716 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringsPair.h @@ -0,0 +1,50 @@ +#ifndef _ROS_rocon_std_msgs_StringsPair_h +#define _ROS_rocon_std_msgs_StringsPair_h + +#include +#include +#include +#include "ros/msg.h" +#include "rocon_std_msgs/StringsPairRequest.h" +#include "rocon_std_msgs/StringsPairResponse.h" + +namespace rocon_std_msgs +{ + + class StringsPair : public ros::Msg + { + public: + typedef rocon_std_msgs::StringsPairRequest _pair_request_type; + _pair_request_type pair_request; + typedef rocon_std_msgs::StringsPairResponse _pair_response_type; + _pair_response_type pair_response; + + StringsPair(): + pair_request(), + pair_response() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->pair_request.serialize(outbuffer + offset); + offset += this->pair_response.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->pair_request.deserialize(inbuffer + offset); + offset += this->pair_response.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "rocon_std_msgs/StringsPair"; }; + const char * getMD5(){ return "d41c9071bd514be249c417a13ec83e65"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringsPairRequest.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringsPairRequest.h new file mode 100644 index 0000000..ba89251 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringsPairRequest.h @@ -0,0 +1,50 @@ +#ifndef _ROS_rocon_std_msgs_StringsPairRequest_h +#define _ROS_rocon_std_msgs_StringsPairRequest_h + +#include +#include +#include +#include "ros/msg.h" +#include "uuid_msgs/UniqueID.h" +#include "rocon_std_msgs/StringsRequest.h" + +namespace rocon_std_msgs +{ + + class StringsPairRequest : public ros::Msg + { + public: + typedef uuid_msgs::UniqueID _id_type; + _id_type id; + typedef rocon_std_msgs::StringsRequest _request_type; + _request_type request; + + StringsPairRequest(): + id(), + request() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->id.serialize(outbuffer + offset); + offset += this->request.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->id.deserialize(inbuffer + offset); + offset += this->request.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "rocon_std_msgs/StringsPairRequest"; }; + const char * getMD5(){ return "71ec95e384ce52aa32491f3b69a62027"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringsPairResponse.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringsPairResponse.h new file mode 100644 index 0000000..65e29cd --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringsPairResponse.h @@ -0,0 +1,50 @@ +#ifndef _ROS_rocon_std_msgs_StringsPairResponse_h +#define _ROS_rocon_std_msgs_StringsPairResponse_h + +#include +#include +#include +#include "ros/msg.h" +#include "uuid_msgs/UniqueID.h" +#include "rocon_std_msgs/StringsResponse.h" + +namespace rocon_std_msgs +{ + + class StringsPairResponse : public ros::Msg + { + public: + typedef uuid_msgs::UniqueID _id_type; + _id_type id; + typedef rocon_std_msgs::StringsResponse _response_type; + _response_type response; + + StringsPairResponse(): + id(), + response() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->id.serialize(outbuffer + offset); + offset += this->response.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->id.deserialize(inbuffer + offset); + offset += this->response.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "rocon_std_msgs/StringsPairResponse"; }; + const char * getMD5(){ return "7b20492548347a7692aa8c5680af8d1b"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringsRequest.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringsRequest.h new file mode 100644 index 0000000..ce30bde --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringsRequest.h @@ -0,0 +1,55 @@ +#ifndef _ROS_rocon_std_msgs_StringsRequest_h +#define _ROS_rocon_std_msgs_StringsRequest_h + +#include +#include +#include +#include "ros/msg.h" + +namespace rocon_std_msgs +{ + + class StringsRequest : public ros::Msg + { + public: + typedef const char* _data_type; + _data_type data; + + StringsRequest(): + data("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_data = strlen(this->data); + varToArr(outbuffer + offset, length_data); + offset += 4; + memcpy(outbuffer + offset, this->data, length_data); + offset += length_data; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_data; + arrToVar(length_data, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_data; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_data-1]=0; + this->data = (char *)(inbuffer + offset-1); + offset += length_data; + return offset; + } + + const char * getType(){ return "rocon_std_msgs/StringsRequest"; }; + const char * getMD5(){ return "992ce8a1687cec8c8bd883ec73ca41d1"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringsResponse.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringsResponse.h new file mode 100644 index 0000000..31a9bec --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringsResponse.h @@ -0,0 +1,55 @@ +#ifndef _ROS_rocon_std_msgs_StringsResponse_h +#define _ROS_rocon_std_msgs_StringsResponse_h + +#include +#include +#include +#include "ros/msg.h" + +namespace rocon_std_msgs +{ + + class StringsResponse : public ros::Msg + { + public: + typedef const char* _data_type; + _data_type data; + + StringsResponse(): + data("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_data = strlen(this->data); + varToArr(outbuffer + offset, length_data); + offset += 4; + memcpy(outbuffer + offset, this->data, length_data); + offset += length_data; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_data; + arrToVar(length_data, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_data; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_data-1]=0; + this->data = (char *)(inbuffer + offset-1); + offset += length_data; + return offset; + } + + const char * getType(){ return "rocon_std_msgs/StringsResponse"; }; + const char * getMD5(){ return "992ce8a1687cec8c8bd883ec73ca41d1"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/ros.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/ros.h new file mode 100644 index 0000000..a81550b --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/ros.h @@ -0,0 +1,52 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2011, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _ROS_H_ +#define _ROS_H_ + +#ifndef BUILD_LIBROSSERIALEMBEDDEDLINUX +#include "embedded_linux_comms.c" +#include "duration.cpp" +#include "time.cpp" +#endif + +#include "ros/node_handle.h" +#include "embedded_linux_hardware.h" + +namespace ros +{ +typedef NodeHandle_ NodeHandle; +} + +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/ros/duration.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/ros/duration.h new file mode 100644 index 0000000..5ec6d90 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/ros/duration.h @@ -0,0 +1,75 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2011, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _ROS_DURATION_H_ +#define _ROS_DURATION_H_ + +#include +#include + +namespace ros +{ + +void normalizeSecNSecSigned(int32_t& sec, int32_t& nsec); + +class Duration +{ +public: + int32_t sec, nsec; + + Duration() : sec(0), nsec(0) {} + Duration(int32_t _sec, int32_t _nsec) : sec(_sec), nsec(_nsec) + { + normalizeSecNSecSigned(sec, nsec); + } + + double toSec() const + { + return (double)sec + 1e-9 * (double)nsec; + }; + void fromSec(double t) + { + sec = (uint32_t) floor(t); + nsec = (uint32_t) round((t - sec) * 1e9); + }; + + Duration& operator+=(const Duration &rhs); + Duration& operator-=(const Duration &rhs); + Duration& operator*=(double scale); +}; + +} + +#endif + diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/ros/msg.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/ros/msg.h new file mode 100644 index 0000000..aea0f6f --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/ros/msg.h @@ -0,0 +1,148 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2011, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _ROS_MSG_H_ +#define _ROS_MSG_H_ + +#include +#include + +namespace ros +{ + +/* Base Message Type */ +class Msg +{ +public: + virtual int serialize(unsigned char *outbuffer) const = 0; + virtual int deserialize(unsigned char *data) = 0; + virtual const char * getType() = 0; + virtual const char * getMD5() = 0; + + /** + * @brief This tricky function handles promoting a 32bit float to a 64bit + * double, so that AVR can publish messages containing float64 + * fields, despite AVV having no native support for double. + * + * @param[out] outbuffer pointer for buffer to serialize to. + * @param[in] f value to serialize. + * + * @return number of bytes to advance the buffer pointer. + * + */ + static int serializeAvrFloat64(unsigned char* outbuffer, const float f) + { + const int32_t* val = (int32_t*) &f; + int32_t exp = ((*val >> 23) & 255); + if (exp != 0) + { + exp += 1023 - 127; + } + + int32_t sig = *val; + *(outbuffer++) = 0; + *(outbuffer++) = 0; + *(outbuffer++) = 0; + *(outbuffer++) = (sig << 5) & 0xff; + *(outbuffer++) = (sig >> 3) & 0xff; + *(outbuffer++) = (sig >> 11) & 0xff; + *(outbuffer++) = ((exp << 4) & 0xF0) | ((sig >> 19) & 0x0F); + *(outbuffer++) = (exp >> 4) & 0x7F; + + // Mark negative bit as necessary. + if (f < 0) + { + *(outbuffer - 1) |= 0x80; + } + + return 8; + } + + /** + * @brief This tricky function handles demoting a 64bit double to a + * 32bit float, so that AVR can understand messages containing + * float64 fields, despite AVR having no native support for double. + * + * @param[in] inbuffer pointer for buffer to deserialize from. + * @param[out] f pointer to place the deserialized value in. + * + * @return number of bytes to advance the buffer pointer. + */ + static int deserializeAvrFloat64(const unsigned char* inbuffer, float* f) + { + uint32_t* val = (uint32_t*)f; + inbuffer += 3; + + // Copy truncated mantissa. + *val = ((uint32_t)(*(inbuffer++)) >> 5 & 0x07); + *val |= ((uint32_t)(*(inbuffer++)) & 0xff) << 3; + *val |= ((uint32_t)(*(inbuffer++)) & 0xff) << 11; + *val |= ((uint32_t)(*inbuffer) & 0x0f) << 19; + + // Copy truncated exponent. + uint32_t exp = ((uint32_t)(*(inbuffer++)) & 0xf0) >> 4; + exp |= ((uint32_t)(*inbuffer) & 0x7f) << 4; + if (exp != 0) + { + *val |= ((exp) - 1023 + 127) << 23; + } + + // Copy negative sign. + *val |= ((uint32_t)(*(inbuffer++)) & 0x80) << 24; + + return 8; + } + + // Copy data from variable into a byte array + template + static void varToArr(A arr, const V var) + { + for (size_t i = 0; i < sizeof(V); i++) + arr[i] = (var >> (8 * i)); + } + + // Copy data from a byte array into variable + template + static void arrToVar(V& var, const A arr) + { + var = 0; + for (size_t i = 0; i < sizeof(V); i++) + var |= (arr[i] << (8 * i)); + } + +}; + +} // namespace ros + +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/ros/node_handle.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/ros/node_handle.h new file mode 100644 index 0000000..fa2416a --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/ros/node_handle.h @@ -0,0 +1,668 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2011, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef ROS_NODE_HANDLE_H_ +#define ROS_NODE_HANDLE_H_ + +#include + +#include "../std_msgs/Time.h" +#include "../rosserial_msgs/TopicInfo.h" +#include "../rosserial_msgs/Log.h" +#include "../rosserial_msgs/RequestParam.h" + +#include "../ros/msg.h" + +namespace ros +{ + +class NodeHandleBase_ +{ +public: + virtual int publish(int id, const Msg* msg) = 0; + virtual int spinOnce() = 0; + virtual bool connected() = 0; +}; +} + +#include "../ros/publisher.h" +#include "../ros/subscriber.h" +#include "../ros/service_server.h" +#include "../ros/service_client.h" + +namespace ros +{ + +const int SPIN_OK = 0; +const int SPIN_ERR = -1; +const int SPIN_TIMEOUT = -2; + +const uint8_t SYNC_SECONDS = 5; +const uint8_t MODE_FIRST_FF = 0; +/* + * The second sync byte is a protocol version. It's value is 0xff for the first + * version of the rosserial protocol (used up to hydro), 0xfe for the second version + * (introduced in hydro), 0xfd for the next, and so on. Its purpose is to enable + * detection of mismatched protocol versions (e.g. hydro rosserial_python with groovy + * rosserial_arduino. It must be changed in both this file and in + * rosserial_python/src/rosserial_python/SerialClient.py + */ +const uint8_t MODE_PROTOCOL_VER = 1; +const uint8_t PROTOCOL_VER1 = 0xff; // through groovy +const uint8_t PROTOCOL_VER2 = 0xfe; // in hydro +const uint8_t PROTOCOL_VER = PROTOCOL_VER2; +const uint8_t MODE_SIZE_L = 2; +const uint8_t MODE_SIZE_H = 3; +const uint8_t MODE_SIZE_CHECKSUM = 4; // checksum for msg size received from size L and H +const uint8_t MODE_TOPIC_L = 5; // waiting for topic id +const uint8_t MODE_TOPIC_H = 6; +const uint8_t MODE_MESSAGE = 7; +const uint8_t MODE_MSG_CHECKSUM = 8; // checksum for msg and topic id + + +const uint8_t SERIAL_MSG_TIMEOUT = 20; // 20 milliseconds to recieve all of message data + +using rosserial_msgs::TopicInfo; + +/* Node Handle */ +template +class NodeHandle_ : public NodeHandleBase_ +{ +protected: + Hardware hardware_; + + /* time used for syncing */ + uint32_t rt_time; + + /* used for computing current time */ + uint32_t sec_offset, nsec_offset; + + /* Spinonce maximum work timeout */ + uint32_t spin_timeout_; + + uint8_t message_in[INPUT_SIZE]; + uint8_t message_out[OUTPUT_SIZE]; + + Publisher * publishers[MAX_PUBLISHERS]; + Subscriber_ * subscribers[MAX_SUBSCRIBERS]; + + /* + * Setup Functions + */ +public: + NodeHandle_() : configured_(false) + { + + for (unsigned int i = 0; i < MAX_PUBLISHERS; i++) + publishers[i] = 0; + + for (unsigned int i = 0; i < MAX_SUBSCRIBERS; i++) + subscribers[i] = 0; + + for (unsigned int i = 0; i < INPUT_SIZE; i++) + message_in[i] = 0; + + for (unsigned int i = 0; i < OUTPUT_SIZE; i++) + message_out[i] = 0; + + req_param_resp.ints_length = 0; + req_param_resp.ints = NULL; + req_param_resp.floats_length = 0; + req_param_resp.floats = NULL; + req_param_resp.ints_length = 0; + req_param_resp.ints = NULL; + + spin_timeout_ = 0; + } + + Hardware* getHardware() + { + return &hardware_; + } + + /* Start serial, initialize buffers */ + void initNode() + { + hardware_.init(); + mode_ = 0; + bytes_ = 0; + index_ = 0; + topic_ = 0; + }; + + /* Start a named port, which may be network server IP, initialize buffers */ + void initNode(char *portName) + { + hardware_.init(portName); + mode_ = 0; + bytes_ = 0; + index_ = 0; + topic_ = 0; + }; + + /** + * @brief Sets the maximum time in millisconds that spinOnce() can work. + * This will not effect the processing of the buffer, as spinOnce processes + * one byte at a time. It simply sets the maximum time that one call can + * process for. You can choose to clear the buffer if that is beneficial if + * SPIN_TIMEOUT is returned from spinOnce(). + * @param timeout The timeout in milliseconds that spinOnce will function. + */ + void setSpinTimeout(const uint32_t& timeout) + { + spin_timeout_ = timeout; + } + +protected: + //State machine variables for spinOnce + int mode_; + int bytes_; + int topic_; + int index_; + int checksum_; + + bool configured_; + + /* used for syncing the time */ + uint32_t last_sync_time; + uint32_t last_sync_receive_time; + uint32_t last_msg_timeout_time; + +public: + /* This function goes in your loop() function, it handles + * serial input and callbacks for subscribers. + */ + + + virtual int spinOnce() + { + /* restart if timed out */ + uint32_t c_time = hardware_.time(); + if ((c_time - last_sync_receive_time) > (SYNC_SECONDS * 2200)) + { + configured_ = false; + } + + /* reset if message has timed out */ + if (mode_ != MODE_FIRST_FF) + { + if (c_time > last_msg_timeout_time) + { + mode_ = MODE_FIRST_FF; + } + } + + /* while available buffer, read data */ + while (true) + { + // If a timeout has been specified, check how long spinOnce has been running. + if (spin_timeout_ > 0) + { + // If the maximum processing timeout has been exceeded, exit with error. + // The next spinOnce can continue where it left off, or optionally + // based on the application in use, the hardware buffer could be flushed + // and start fresh. + if ((hardware_.time() - c_time) > spin_timeout_) + { + // Exit the spin, processing timeout exceeded. + return SPIN_TIMEOUT; + } + } + int data = hardware_.read(); + if (data < 0) + break; + checksum_ += data; + if (mode_ == MODE_MESSAGE) /* message data being recieved */ + { + message_in[index_++] = data; + bytes_--; + if (bytes_ == 0) /* is message complete? if so, checksum */ + mode_ = MODE_MSG_CHECKSUM; + } + else if (mode_ == MODE_FIRST_FF) + { + if (data == 0xff) + { + mode_++; + last_msg_timeout_time = c_time + SERIAL_MSG_TIMEOUT; + } + else if (hardware_.time() - c_time > (SYNC_SECONDS * 1000)) + { + /* We have been stuck in spinOnce too long, return error */ + configured_ = false; + return SPIN_TIMEOUT; + } + } + else if (mode_ == MODE_PROTOCOL_VER) + { + if (data == PROTOCOL_VER) + { + mode_++; + } + else + { + mode_ = MODE_FIRST_FF; + if (configured_ == false) + requestSyncTime(); /* send a msg back showing our protocol version */ + } + } + else if (mode_ == MODE_SIZE_L) /* bottom half of message size */ + { + bytes_ = data; + index_ = 0; + mode_++; + checksum_ = data; /* first byte for calculating size checksum */ + } + else if (mode_ == MODE_SIZE_H) /* top half of message size */ + { + bytes_ += data << 8; + mode_++; + } + else if (mode_ == MODE_SIZE_CHECKSUM) + { + if ((checksum_ % 256) == 255) + mode_++; + else + mode_ = MODE_FIRST_FF; /* Abandon the frame if the msg len is wrong */ + } + else if (mode_ == MODE_TOPIC_L) /* bottom half of topic id */ + { + topic_ = data; + mode_++; + checksum_ = data; /* first byte included in checksum */ + } + else if (mode_ == MODE_TOPIC_H) /* top half of topic id */ + { + topic_ += data << 8; + mode_ = MODE_MESSAGE; + if (bytes_ == 0) + mode_ = MODE_MSG_CHECKSUM; + } + else if (mode_ == MODE_MSG_CHECKSUM) /* do checksum */ + { + mode_ = MODE_FIRST_FF; + if ((checksum_ % 256) == 255) + { + if (topic_ == TopicInfo::ID_PUBLISHER) + { + requestSyncTime(); + negotiateTopics(); + last_sync_time = c_time; + last_sync_receive_time = c_time; + return SPIN_ERR; + } + else if (topic_ == TopicInfo::ID_TIME) + { + syncTime(message_in); + } + else if (topic_ == TopicInfo::ID_PARAMETER_REQUEST) + { + req_param_resp.deserialize(message_in); + param_recieved = true; + } + else if (topic_ == TopicInfo::ID_TX_STOP) + { + configured_ = false; + } + else + { + if (subscribers[topic_ - 100]) + subscribers[topic_ - 100]->callback(message_in); + } + } + } + } + + /* occasionally sync time */ + if (configured_ && ((c_time - last_sync_time) > (SYNC_SECONDS * 500))) + { + requestSyncTime(); + last_sync_time = c_time; + } + + return SPIN_OK; + } + + + /* Are we connected to the PC? */ + virtual bool connected() + { + return configured_; + }; + + /******************************************************************** + * Time functions + */ + + void requestSyncTime() + { + std_msgs::Time t; + publish(TopicInfo::ID_TIME, &t); + rt_time = hardware_.time(); + } + + void syncTime(uint8_t * data) + { + std_msgs::Time t; + uint32_t offset = hardware_.time() - rt_time; + + t.deserialize(data); + t.data.sec += offset / 1000; + t.data.nsec += (offset % 1000) * 1000000UL; + + this->setNow(t.data); + last_sync_receive_time = hardware_.time(); + } + + Time now() + { + uint32_t ms = hardware_.time(); + Time current_time; + current_time.sec = ms / 1000 + sec_offset; + current_time.nsec = (ms % 1000) * 1000000UL + nsec_offset; + normalizeSecNSec(current_time.sec, current_time.nsec); + return current_time; + } + + void setNow(Time & new_now) + { + uint32_t ms = hardware_.time(); + sec_offset = new_now.sec - ms / 1000 - 1; + nsec_offset = new_now.nsec - (ms % 1000) * 1000000UL + 1000000000UL; + normalizeSecNSec(sec_offset, nsec_offset); + } + + /******************************************************************** + * Topic Management + */ + + /* Register a new publisher */ + bool advertise(Publisher & p) + { + for (int i = 0; i < MAX_PUBLISHERS; i++) + { + if (publishers[i] == 0) // empty slot + { + publishers[i] = &p; + p.id_ = i + 100 + MAX_SUBSCRIBERS; + p.nh_ = this; + return true; + } + } + return false; + } + + /* Register a new subscriber */ + template + bool subscribe(SubscriberT& s) + { + for (int i = 0; i < MAX_SUBSCRIBERS; i++) + { + if (subscribers[i] == 0) // empty slot + { + subscribers[i] = static_cast(&s); + s.id_ = i + 100; + return true; + } + } + return false; + } + + /* Register a new Service Server */ + template + bool advertiseService(ServiceServer& srv) + { + bool v = advertise(srv.pub); + for (int i = 0; i < MAX_SUBSCRIBERS; i++) + { + if (subscribers[i] == 0) // empty slot + { + subscribers[i] = static_cast(&srv); + srv.id_ = i + 100; + return v; + } + } + return false; + } + + /* Register a new Service Client */ + template + bool serviceClient(ServiceClient& srv) + { + bool v = advertise(srv.pub); + for (int i = 0; i < MAX_SUBSCRIBERS; i++) + { + if (subscribers[i] == 0) // empty slot + { + subscribers[i] = static_cast(&srv); + srv.id_ = i + 100; + return v; + } + } + return false; + } + + void negotiateTopics() + { + rosserial_msgs::TopicInfo ti; + int i; + for (i = 0; i < MAX_PUBLISHERS; i++) + { + if (publishers[i] != 0) // non-empty slot + { + ti.topic_id = publishers[i]->id_; + ti.topic_name = (char *) publishers[i]->topic_; + ti.message_type = (char *) publishers[i]->msg_->getType(); + ti.md5sum = (char *) publishers[i]->msg_->getMD5(); + ti.buffer_size = OUTPUT_SIZE; + publish(publishers[i]->getEndpointType(), &ti); + } + } + for (i = 0; i < MAX_SUBSCRIBERS; i++) + { + if (subscribers[i] != 0) // non-empty slot + { + ti.topic_id = subscribers[i]->id_; + ti.topic_name = (char *) subscribers[i]->topic_; + ti.message_type = (char *) subscribers[i]->getMsgType(); + ti.md5sum = (char *) subscribers[i]->getMsgMD5(); + ti.buffer_size = INPUT_SIZE; + publish(subscribers[i]->getEndpointType(), &ti); + } + } + configured_ = true; + } + + virtual int publish(int id, const Msg * msg) + { + if (id >= 100 && !configured_) + return 0; + + /* serialize message */ + int l = msg->serialize(message_out + 7); + + /* setup the header */ + message_out[0] = 0xff; + message_out[1] = PROTOCOL_VER; + message_out[2] = (uint8_t)((uint16_t)l & 255); + message_out[3] = (uint8_t)((uint16_t)l >> 8); + message_out[4] = 255 - ((message_out[2] + message_out[3]) % 256); + message_out[5] = (uint8_t)((int16_t)id & 255); + message_out[6] = (uint8_t)((int16_t)id >> 8); + + /* calculate checksum */ + int chk = 0; + for (int i = 5; i < l + 7; i++) + chk += message_out[i]; + l += 7; + message_out[l++] = 255 - (chk % 256); + + if (l <= OUTPUT_SIZE) + { + hardware_.write(message_out, l); + return l; + } + else + { + logerror("Message from device dropped: message larger than buffer."); + return -1; + } + } + + /******************************************************************** + * Logging + */ + +private: + void log(char byte, const char * msg) + { + rosserial_msgs::Log l; + l.level = byte; + l.msg = (char*)msg; + publish(rosserial_msgs::TopicInfo::ID_LOG, &l); + } + +public: + void logdebug(const char* msg) + { + log(rosserial_msgs::Log::ROSDEBUG, msg); + } + void loginfo(const char * msg) + { + log(rosserial_msgs::Log::INFO, msg); + } + void logwarn(const char *msg) + { + log(rosserial_msgs::Log::WARN, msg); + } + void logerror(const char*msg) + { + log(rosserial_msgs::Log::ERROR, msg); + } + void logfatal(const char*msg) + { + log(rosserial_msgs::Log::FATAL, msg); + } + + /******************************************************************** + * Parameters + */ + +private: + bool param_recieved; + rosserial_msgs::RequestParamResponse req_param_resp; + + bool requestParam(const char * name, int time_out = 1000) + { + param_recieved = false; + rosserial_msgs::RequestParamRequest req; + req.name = (char*)name; + publish(TopicInfo::ID_PARAMETER_REQUEST, &req); + uint32_t end_time = hardware_.time() + time_out; + while (!param_recieved) + { + spinOnce(); + if (hardware_.time() > end_time) + { + logwarn("Failed to get param: timeout expired"); + return false; + } + } + return true; + } + +public: + bool getParam(const char* name, int* param, int length = 1, int timeout = 1000) + { + if (requestParam(name, timeout)) + { + if (length == req_param_resp.ints_length) + { + //copy it over + for (int i = 0; i < length; i++) + param[i] = req_param_resp.ints[i]; + return true; + } + else + { + logwarn("Failed to get param: length mismatch"); + } + } + return false; + } + bool getParam(const char* name, float* param, int length = 1, int timeout = 1000) + { + if (requestParam(name, timeout)) + { + if (length == req_param_resp.floats_length) + { + //copy it over + for (int i = 0; i < length; i++) + param[i] = req_param_resp.floats[i]; + return true; + } + else + { + logwarn("Failed to get param: length mismatch"); + } + } + return false; + } + bool getParam(const char* name, char** param, int length = 1, int timeout = 1000) + { + if (requestParam(name, timeout)) + { + if (length == req_param_resp.strings_length) + { + //copy it over + for (int i = 0; i < length; i++) + strcpy(param[i], req_param_resp.strings[i]); + return true; + } + else + { + logwarn("Failed to get param: length mismatch"); + } + } + return false; + } +}; + +} + +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/ros/publisher.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/ros/publisher.h new file mode 100644 index 0000000..86dde38 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/ros/publisher.h @@ -0,0 +1,74 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2011, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _ROS_PUBLISHER_H_ +#define _ROS_PUBLISHER_H_ + +#include "../rosserial_msgs/TopicInfo.h" +#include "../ros/node_handle.h" + +namespace ros +{ + +/* Generic Publisher */ +class Publisher +{ +public: + Publisher(const char * topic_name, Msg * msg, int endpoint = rosserial_msgs::TopicInfo::ID_PUBLISHER) : + topic_(topic_name), + msg_(msg), + endpoint_(endpoint) {}; + + int publish(const Msg * msg) + { + return nh_->publish(id_, msg); + }; + int getEndpointType() + { + return endpoint_; + } + + const char * topic_; + Msg *msg_; + // id_ and no_ are set by NodeHandle when we advertise + int id_; + NodeHandleBase_* nh_; + +private: + int endpoint_; +}; + +} + +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/ros/service_client.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/ros/service_client.h new file mode 100644 index 0000000..d0629a4 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/ros/service_client.h @@ -0,0 +1,95 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2011, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _ROS_SERVICE_CLIENT_H_ +#define _ROS_SERVICE_CLIENT_H_ + +#include "../rosserial_msgs/TopicInfo.h" + +#include "../ros/publisher.h" +#include "../ros/subscriber.h" + +namespace ros +{ + +template +class ServiceClient : public Subscriber_ +{ +public: + ServiceClient(const char* topic_name) : + pub(topic_name, &req, rosserial_msgs::TopicInfo::ID_SERVICE_CLIENT + rosserial_msgs::TopicInfo::ID_PUBLISHER) + { + this->topic_ = topic_name; + this->waiting = true; + } + + virtual void call(const MReq & request, MRes & response) + { + if (!pub.nh_->connected()) return; + ret = &response; + waiting = true; + pub.publish(&request); + while (waiting && pub.nh_->connected()) + if (pub.nh_->spinOnce() < 0) break; + } + + // these refer to the subscriber + virtual void callback(unsigned char *data) + { + ret->deserialize(data); + waiting = false; + } + virtual const char * getMsgType() + { + return this->resp.getType(); + } + virtual const char * getMsgMD5() + { + return this->resp.getMD5(); + } + virtual int getEndpointType() + { + return rosserial_msgs::TopicInfo::ID_SERVICE_CLIENT + rosserial_msgs::TopicInfo::ID_SUBSCRIBER; + } + + MReq req; + MRes resp; + MRes * ret; + bool waiting; + Publisher pub; +}; + +} + +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/ros/service_server.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/ros/service_server.h new file mode 100644 index 0000000..1b95a9e --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/ros/service_server.h @@ -0,0 +1,130 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2011, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _ROS_SERVICE_SERVER_H_ +#define _ROS_SERVICE_SERVER_H_ + +#include "../rosserial_msgs/TopicInfo.h" + +#include "../ros/publisher.h" +#include "../ros/subscriber.h" + +namespace ros +{ + +template +class ServiceServer : public Subscriber_ +{ +public: + typedef void(ObjT::*CallbackT)(const MReq&, MRes&); + + ServiceServer(const char* topic_name, CallbackT cb, ObjT* obj) : + pub(topic_name, &resp, rosserial_msgs::TopicInfo::ID_SERVICE_SERVER + rosserial_msgs::TopicInfo::ID_PUBLISHER), + obj_(obj) + { + this->topic_ = topic_name; + this->cb_ = cb; + } + + // these refer to the subscriber + virtual void callback(unsigned char *data) + { + req.deserialize(data); + (obj_->*cb_)(req, resp); + pub.publish(&resp); + } + virtual const char * getMsgType() + { + return this->req.getType(); + } + virtual const char * getMsgMD5() + { + return this->req.getMD5(); + } + virtual int getEndpointType() + { + return rosserial_msgs::TopicInfo::ID_SERVICE_SERVER + rosserial_msgs::TopicInfo::ID_SUBSCRIBER; + } + + MReq req; + MRes resp; + Publisher pub; +private: + CallbackT cb_; + ObjT* obj_; +}; + +template +class ServiceServer : public Subscriber_ +{ +public: + typedef void(*CallbackT)(const MReq&, MRes&); + + ServiceServer(const char* topic_name, CallbackT cb) : + pub(topic_name, &resp, rosserial_msgs::TopicInfo::ID_SERVICE_SERVER + rosserial_msgs::TopicInfo::ID_PUBLISHER) + { + this->topic_ = topic_name; + this->cb_ = cb; + } + + // these refer to the subscriber + virtual void callback(unsigned char *data) + { + req.deserialize(data); + cb_(req, resp); + pub.publish(&resp); + } + virtual const char * getMsgType() + { + return this->req.getType(); + } + virtual const char * getMsgMD5() + { + return this->req.getMD5(); + } + virtual int getEndpointType() + { + return rosserial_msgs::TopicInfo::ID_SERVICE_SERVER + rosserial_msgs::TopicInfo::ID_SUBSCRIBER; + } + + MReq req; + MRes resp; + Publisher pub; +private: + CallbackT cb_; +}; + +} + +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/ros/subscriber.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/ros/subscriber.h new file mode 100644 index 0000000..0f7364a --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/ros/subscriber.h @@ -0,0 +1,140 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2011, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef ROS_SUBSCRIBER_H_ +#define ROS_SUBSCRIBER_H_ + +#include "../rosserial_msgs/TopicInfo.h" + +namespace ros +{ + +/* Base class for objects subscribers. */ +class Subscriber_ +{ +public: + virtual void callback(unsigned char *data) = 0; + virtual int getEndpointType() = 0; + + // id_ is set by NodeHandle when we advertise + int id_; + + virtual const char * getMsgType() = 0; + virtual const char * getMsgMD5() = 0; + const char * topic_; +}; + +/* Bound function subscriber. */ +template +class Subscriber: public Subscriber_ +{ +public: + typedef void(ObjT::*CallbackT)(const MsgT&); + MsgT msg; + + Subscriber(const char * topic_name, CallbackT cb, ObjT* obj, int endpoint = rosserial_msgs::TopicInfo::ID_SUBSCRIBER) : + cb_(cb), + obj_(obj), + endpoint_(endpoint) + { + topic_ = topic_name; + }; + + virtual void callback(unsigned char* data) + { + msg.deserialize(data); + (obj_->*cb_)(msg); + } + + virtual const char * getMsgType() + { + return this->msg.getType(); + } + virtual const char * getMsgMD5() + { + return this->msg.getMD5(); + } + virtual int getEndpointType() + { + return endpoint_; + } + +private: + CallbackT cb_; + ObjT* obj_; + int endpoint_; +}; + +/* Standalone function subscriber. */ +template +class Subscriber: public Subscriber_ +{ +public: + typedef void(*CallbackT)(const MsgT&); + MsgT msg; + + Subscriber(const char * topic_name, CallbackT cb, int endpoint = rosserial_msgs::TopicInfo::ID_SUBSCRIBER) : + cb_(cb), + endpoint_(endpoint) + { + topic_ = topic_name; + }; + + virtual void callback(unsigned char* data) + { + msg.deserialize(data); + this->cb_(msg); + } + + virtual const char * getMsgType() + { + return this->msg.getType(); + } + virtual const char * getMsgMD5() + { + return this->msg.getMD5(); + } + virtual int getEndpointType() + { + return endpoint_; + } + +private: + CallbackT cb_; + int endpoint_; +}; + +} + +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/ros/time.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/ros/time.h new file mode 100644 index 0000000..72657cb --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/ros/time.h @@ -0,0 +1,82 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2011, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef ROS_TIME_H_ +#define ROS_TIME_H_ + +#include "duration.h" +#include +#include + +namespace ros +{ +void normalizeSecNSec(uint32_t &sec, uint32_t &nsec); + +class Time +{ +public: + uint32_t sec, nsec; + + Time() : sec(0), nsec(0) {} + Time(uint32_t _sec, uint32_t _nsec) : sec(_sec), nsec(_nsec) + { + normalizeSecNSec(sec, nsec); + } + + double toSec() const + { + return (double)sec + 1e-9 * (double)nsec; + }; + void fromSec(double t) + { + sec = (uint32_t) floor(t); + nsec = (uint32_t) round((t - sec) * 1e9); + }; + + uint32_t toNsec() + { + return (uint32_t)sec * 1000000000ull + (uint32_t)nsec; + }; + Time& fromNSec(int32_t t); + + Time& operator +=(const Duration &rhs); + Time& operator -=(const Duration &rhs); + + static Time now(); + static void setNow(Time & new_now); +}; + +} + +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/roscpp/Empty.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/roscpp/Empty.h new file mode 100644 index 0000000..df021b7 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/roscpp/Empty.h @@ -0,0 +1,70 @@ +#ifndef _ROS_SERVICE_Empty_h +#define _ROS_SERVICE_Empty_h +#include +#include +#include +#include "ros/msg.h" + +namespace roscpp +{ + +static const char EMPTY[] = "roscpp/Empty"; + + class EmptyRequest : public ros::Msg + { + public: + + EmptyRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return EMPTY; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class EmptyResponse : public ros::Msg + { + public: + + EmptyResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return EMPTY; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class Empty { + public: + typedef EmptyRequest Request; + typedef EmptyResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/roscpp/GetLoggers.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/roscpp/GetLoggers.h new file mode 100644 index 0000000..35f67fb --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/roscpp/GetLoggers.h @@ -0,0 +1,96 @@ +#ifndef _ROS_SERVICE_GetLoggers_h +#define _ROS_SERVICE_GetLoggers_h +#include +#include +#include +#include "ros/msg.h" +#include "roscpp/Logger.h" + +namespace roscpp +{ + +static const char GETLOGGERS[] = "roscpp/GetLoggers"; + + class GetLoggersRequest : public ros::Msg + { + public: + + GetLoggersRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return GETLOGGERS; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class GetLoggersResponse : public ros::Msg + { + public: + uint32_t loggers_length; + typedef roscpp::Logger _loggers_type; + _loggers_type st_loggers; + _loggers_type * loggers; + + GetLoggersResponse(): + loggers_length(0), loggers(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->loggers_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->loggers_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->loggers_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->loggers_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->loggers_length); + for( uint32_t i = 0; i < loggers_length; i++){ + offset += this->loggers[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t loggers_lengthT = ((uint32_t) (*(inbuffer + offset))); + loggers_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + loggers_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + loggers_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->loggers_length); + if(loggers_lengthT > loggers_length) + this->loggers = (roscpp::Logger*)realloc(this->loggers, loggers_lengthT * sizeof(roscpp::Logger)); + loggers_length = loggers_lengthT; + for( uint32_t i = 0; i < loggers_length; i++){ + offset += this->st_loggers.deserialize(inbuffer + offset); + memcpy( &(this->loggers[i]), &(this->st_loggers), sizeof(roscpp::Logger)); + } + return offset; + } + + const char * getType(){ return GETLOGGERS; }; + const char * getMD5(){ return "32e97e85527d4678a8f9279894bb64b0"; }; + + }; + + class GetLoggers { + public: + typedef GetLoggersRequest Request; + typedef GetLoggersResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/roscpp/Logger.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/roscpp/Logger.h new file mode 100644 index 0000000..b954b71 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/roscpp/Logger.h @@ -0,0 +1,72 @@ +#ifndef _ROS_roscpp_Logger_h +#define _ROS_roscpp_Logger_h + +#include +#include +#include +#include "ros/msg.h" + +namespace roscpp +{ + + class Logger : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef const char* _level_type; + _level_type level; + + Logger(): + name(""), + level("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + uint32_t length_level = strlen(this->level); + varToArr(outbuffer + offset, length_level); + offset += 4; + memcpy(outbuffer + offset, this->level, length_level); + offset += length_level; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + uint32_t length_level; + arrToVar(length_level, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_level; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_level-1]=0; + this->level = (char *)(inbuffer + offset-1); + offset += length_level; + return offset; + } + + const char * getType(){ return "roscpp/Logger"; }; + const char * getMD5(){ return "a6069a2ff40db7bd32143dd66e1f408e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/roscpp/SetLoggerLevel.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/roscpp/SetLoggerLevel.h new file mode 100644 index 0000000..64f2a24 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/roscpp/SetLoggerLevel.h @@ -0,0 +1,104 @@ +#ifndef _ROS_SERVICE_SetLoggerLevel_h +#define _ROS_SERVICE_SetLoggerLevel_h +#include +#include +#include +#include "ros/msg.h" + +namespace roscpp +{ + +static const char SETLOGGERLEVEL[] = "roscpp/SetLoggerLevel"; + + class SetLoggerLevelRequest : public ros::Msg + { + public: + typedef const char* _logger_type; + _logger_type logger; + typedef const char* _level_type; + _level_type level; + + SetLoggerLevelRequest(): + logger(""), + level("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_logger = strlen(this->logger); + varToArr(outbuffer + offset, length_logger); + offset += 4; + memcpy(outbuffer + offset, this->logger, length_logger); + offset += length_logger; + uint32_t length_level = strlen(this->level); + varToArr(outbuffer + offset, length_level); + offset += 4; + memcpy(outbuffer + offset, this->level, length_level); + offset += length_level; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_logger; + arrToVar(length_logger, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_logger; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_logger-1]=0; + this->logger = (char *)(inbuffer + offset-1); + offset += length_logger; + uint32_t length_level; + arrToVar(length_level, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_level; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_level-1]=0; + this->level = (char *)(inbuffer + offset-1); + offset += length_level; + return offset; + } + + const char * getType(){ return SETLOGGERLEVEL; }; + const char * getMD5(){ return "51da076440d78ca1684d36c868df61ea"; }; + + }; + + class SetLoggerLevelResponse : public ros::Msg + { + public: + + SetLoggerLevelResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return SETLOGGERLEVEL; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class SetLoggerLevel { + public: + typedef SetLoggerLevelRequest Request; + typedef SetLoggerLevelResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/roscpp_tutorials/TwoInts.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/roscpp_tutorials/TwoInts.h new file mode 100644 index 0000000..03510bb --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/roscpp_tutorials/TwoInts.h @@ -0,0 +1,166 @@ +#ifndef _ROS_SERVICE_TwoInts_h +#define _ROS_SERVICE_TwoInts_h +#include +#include +#include +#include "ros/msg.h" + +namespace roscpp_tutorials +{ + +static const char TWOINTS[] = "roscpp_tutorials/TwoInts"; + + class TwoIntsRequest : public ros::Msg + { + public: + typedef int64_t _a_type; + _a_type a; + typedef int64_t _b_type; + _b_type b; + + TwoIntsRequest(): + a(0), + b(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_a; + u_a.real = this->a; + *(outbuffer + offset + 0) = (u_a.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_a.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_a.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_a.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_a.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_a.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_a.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_a.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->a); + union { + int64_t real; + uint64_t base; + } u_b; + u_b.real = this->b; + *(outbuffer + offset + 0) = (u_b.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_b.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_b.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_b.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_b.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_b.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_b.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_b.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->b); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_a; + u_a.base = 0; + u_a.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->a = u_a.real; + offset += sizeof(this->a); + union { + int64_t real; + uint64_t base; + } u_b; + u_b.base = 0; + u_b.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->b = u_b.real; + offset += sizeof(this->b); + return offset; + } + + const char * getType(){ return TWOINTS; }; + const char * getMD5(){ return "36d09b846be0b371c5f190354dd3153e"; }; + + }; + + class TwoIntsResponse : public ros::Msg + { + public: + typedef int64_t _sum_type; + _sum_type sum; + + TwoIntsResponse(): + sum(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_sum; + u_sum.real = this->sum; + *(outbuffer + offset + 0) = (u_sum.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_sum.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_sum.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_sum.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_sum.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_sum.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_sum.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_sum.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->sum); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_sum; + u_sum.base = 0; + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->sum = u_sum.real; + offset += sizeof(this->sum); + return offset; + } + + const char * getType(){ return TWOINTS; }; + const char * getMD5(){ return "b88405221c77b1878a3cbbfff53428d7"; }; + + }; + + class TwoInts { + public: + typedef TwoIntsRequest Request; + typedef TwoIntsResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosgraph_msgs/Clock.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosgraph_msgs/Clock.h new file mode 100644 index 0000000..4d8736c --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosgraph_msgs/Clock.h @@ -0,0 +1,62 @@ +#ifndef _ROS_rosgraph_msgs_Clock_h +#define _ROS_rosgraph_msgs_Clock_h + +#include +#include +#include +#include "ros/msg.h" +#include "ros/time.h" + +namespace rosgraph_msgs +{ + + class Clock : public ros::Msg + { + public: + typedef ros::Time _clock_type; + _clock_type clock; + + Clock(): + clock() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->clock.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->clock.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->clock.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->clock.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->clock.sec); + *(outbuffer + offset + 0) = (this->clock.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->clock.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->clock.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->clock.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->clock.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->clock.sec = ((uint32_t) (*(inbuffer + offset))); + this->clock.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->clock.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->clock.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->clock.sec); + this->clock.nsec = ((uint32_t) (*(inbuffer + offset))); + this->clock.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->clock.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->clock.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->clock.nsec); + return offset; + } + + const char * getType(){ return "rosgraph_msgs/Clock"; }; + const char * getMD5(){ return "a9c97c1d230cfc112e270351a944ee47"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosgraph_msgs/Log.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosgraph_msgs/Log.h new file mode 100644 index 0000000..45c4566 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosgraph_msgs/Log.h @@ -0,0 +1,185 @@ +#ifndef _ROS_rosgraph_msgs_Log_h +#define _ROS_rosgraph_msgs_Log_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace rosgraph_msgs +{ + + class Log : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef int8_t _level_type; + _level_type level; + typedef const char* _name_type; + _name_type name; + typedef const char* _msg_type; + _msg_type msg; + typedef const char* _file_type; + _file_type file; + typedef const char* _function_type; + _function_type function; + typedef uint32_t _line_type; + _line_type line; + uint32_t topics_length; + typedef char* _topics_type; + _topics_type st_topics; + _topics_type * topics; + enum { DEBUG = 1 }; + enum { INFO = 2 }; + enum { WARN = 4 }; + enum { ERROR = 8 }; + enum { FATAL = 16 }; + + Log(): + header(), + level(0), + name(""), + msg(""), + file(""), + function(""), + line(0), + topics_length(0), topics(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + union { + int8_t real; + uint8_t base; + } u_level; + u_level.real = this->level; + *(outbuffer + offset + 0) = (u_level.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->level); + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + uint32_t length_msg = strlen(this->msg); + varToArr(outbuffer + offset, length_msg); + offset += 4; + memcpy(outbuffer + offset, this->msg, length_msg); + offset += length_msg; + uint32_t length_file = strlen(this->file); + varToArr(outbuffer + offset, length_file); + offset += 4; + memcpy(outbuffer + offset, this->file, length_file); + offset += length_file; + uint32_t length_function = strlen(this->function); + varToArr(outbuffer + offset, length_function); + offset += 4; + memcpy(outbuffer + offset, this->function, length_function); + offset += length_function; + *(outbuffer + offset + 0) = (this->line >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->line >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->line >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->line >> (8 * 3)) & 0xFF; + offset += sizeof(this->line); + *(outbuffer + offset + 0) = (this->topics_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->topics_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->topics_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->topics_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->topics_length); + for( uint32_t i = 0; i < topics_length; i++){ + uint32_t length_topicsi = strlen(this->topics[i]); + varToArr(outbuffer + offset, length_topicsi); + offset += 4; + memcpy(outbuffer + offset, this->topics[i], length_topicsi); + offset += length_topicsi; + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + union { + int8_t real; + uint8_t base; + } u_level; + u_level.base = 0; + u_level.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->level = u_level.real; + offset += sizeof(this->level); + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + uint32_t length_msg; + arrToVar(length_msg, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_msg; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_msg-1]=0; + this->msg = (char *)(inbuffer + offset-1); + offset += length_msg; + uint32_t length_file; + arrToVar(length_file, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_file; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_file-1]=0; + this->file = (char *)(inbuffer + offset-1); + offset += length_file; + uint32_t length_function; + arrToVar(length_function, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_function; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_function-1]=0; + this->function = (char *)(inbuffer + offset-1); + offset += length_function; + this->line = ((uint32_t) (*(inbuffer + offset))); + this->line |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->line |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->line |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->line); + uint32_t topics_lengthT = ((uint32_t) (*(inbuffer + offset))); + topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->topics_length); + if(topics_lengthT > topics_length) + this->topics = (char**)realloc(this->topics, topics_lengthT * sizeof(char*)); + topics_length = topics_lengthT; + for( uint32_t i = 0; i < topics_length; i++){ + uint32_t length_st_topics; + arrToVar(length_st_topics, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_topics; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_topics-1]=0; + this->st_topics = (char *)(inbuffer + offset-1); + offset += length_st_topics; + memcpy( &(this->topics[i]), &(this->st_topics), sizeof(char*)); + } + return offset; + } + + const char * getType(){ return "rosgraph_msgs/Log"; }; + const char * getMD5(){ return "acffd30cd6b6de30f120938c17c593fb"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosgraph_msgs/TopicStatistics.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosgraph_msgs/TopicStatistics.h new file mode 100644 index 0000000..c62f2f9 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosgraph_msgs/TopicStatistics.h @@ -0,0 +1,347 @@ +#ifndef _ROS_rosgraph_msgs_TopicStatistics_h +#define _ROS_rosgraph_msgs_TopicStatistics_h + +#include +#include +#include +#include "ros/msg.h" +#include "ros/time.h" +#include "ros/duration.h" + +namespace rosgraph_msgs +{ + + class TopicStatistics : public ros::Msg + { + public: + typedef const char* _topic_type; + _topic_type topic; + typedef const char* _node_pub_type; + _node_pub_type node_pub; + typedef const char* _node_sub_type; + _node_sub_type node_sub; + typedef ros::Time _window_start_type; + _window_start_type window_start; + typedef ros::Time _window_stop_type; + _window_stop_type window_stop; + typedef int32_t _delivered_msgs_type; + _delivered_msgs_type delivered_msgs; + typedef int32_t _dropped_msgs_type; + _dropped_msgs_type dropped_msgs; + typedef int32_t _traffic_type; + _traffic_type traffic; + typedef ros::Duration _period_mean_type; + _period_mean_type period_mean; + typedef ros::Duration _period_stddev_type; + _period_stddev_type period_stddev; + typedef ros::Duration _period_max_type; + _period_max_type period_max; + typedef ros::Duration _stamp_age_mean_type; + _stamp_age_mean_type stamp_age_mean; + typedef ros::Duration _stamp_age_stddev_type; + _stamp_age_stddev_type stamp_age_stddev; + typedef ros::Duration _stamp_age_max_type; + _stamp_age_max_type stamp_age_max; + + TopicStatistics(): + topic(""), + node_pub(""), + node_sub(""), + window_start(), + window_stop(), + delivered_msgs(0), + dropped_msgs(0), + traffic(0), + period_mean(), + period_stddev(), + period_max(), + stamp_age_mean(), + stamp_age_stddev(), + stamp_age_max() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_topic = strlen(this->topic); + varToArr(outbuffer + offset, length_topic); + offset += 4; + memcpy(outbuffer + offset, this->topic, length_topic); + offset += length_topic; + uint32_t length_node_pub = strlen(this->node_pub); + varToArr(outbuffer + offset, length_node_pub); + offset += 4; + memcpy(outbuffer + offset, this->node_pub, length_node_pub); + offset += length_node_pub; + uint32_t length_node_sub = strlen(this->node_sub); + varToArr(outbuffer + offset, length_node_sub); + offset += 4; + memcpy(outbuffer + offset, this->node_sub, length_node_sub); + offset += length_node_sub; + *(outbuffer + offset + 0) = (this->window_start.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->window_start.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->window_start.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->window_start.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->window_start.sec); + *(outbuffer + offset + 0) = (this->window_start.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->window_start.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->window_start.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->window_start.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->window_start.nsec); + *(outbuffer + offset + 0) = (this->window_stop.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->window_stop.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->window_stop.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->window_stop.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->window_stop.sec); + *(outbuffer + offset + 0) = (this->window_stop.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->window_stop.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->window_stop.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->window_stop.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->window_stop.nsec); + union { + int32_t real; + uint32_t base; + } u_delivered_msgs; + u_delivered_msgs.real = this->delivered_msgs; + *(outbuffer + offset + 0) = (u_delivered_msgs.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_delivered_msgs.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_delivered_msgs.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_delivered_msgs.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->delivered_msgs); + union { + int32_t real; + uint32_t base; + } u_dropped_msgs; + u_dropped_msgs.real = this->dropped_msgs; + *(outbuffer + offset + 0) = (u_dropped_msgs.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_dropped_msgs.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_dropped_msgs.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_dropped_msgs.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->dropped_msgs); + union { + int32_t real; + uint32_t base; + } u_traffic; + u_traffic.real = this->traffic; + *(outbuffer + offset + 0) = (u_traffic.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_traffic.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_traffic.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_traffic.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->traffic); + *(outbuffer + offset + 0) = (this->period_mean.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->period_mean.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->period_mean.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->period_mean.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->period_mean.sec); + *(outbuffer + offset + 0) = (this->period_mean.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->period_mean.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->period_mean.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->period_mean.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->period_mean.nsec); + *(outbuffer + offset + 0) = (this->period_stddev.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->period_stddev.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->period_stddev.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->period_stddev.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->period_stddev.sec); + *(outbuffer + offset + 0) = (this->period_stddev.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->period_stddev.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->period_stddev.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->period_stddev.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->period_stddev.nsec); + *(outbuffer + offset + 0) = (this->period_max.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->period_max.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->period_max.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->period_max.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->period_max.sec); + *(outbuffer + offset + 0) = (this->period_max.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->period_max.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->period_max.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->period_max.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->period_max.nsec); + *(outbuffer + offset + 0) = (this->stamp_age_mean.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp_age_mean.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp_age_mean.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp_age_mean.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp_age_mean.sec); + *(outbuffer + offset + 0) = (this->stamp_age_mean.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp_age_mean.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp_age_mean.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp_age_mean.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp_age_mean.nsec); + *(outbuffer + offset + 0) = (this->stamp_age_stddev.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp_age_stddev.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp_age_stddev.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp_age_stddev.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp_age_stddev.sec); + *(outbuffer + offset + 0) = (this->stamp_age_stddev.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp_age_stddev.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp_age_stddev.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp_age_stddev.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp_age_stddev.nsec); + *(outbuffer + offset + 0) = (this->stamp_age_max.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp_age_max.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp_age_max.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp_age_max.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp_age_max.sec); + *(outbuffer + offset + 0) = (this->stamp_age_max.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp_age_max.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp_age_max.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp_age_max.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp_age_max.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_topic; + arrToVar(length_topic, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_topic; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_topic-1]=0; + this->topic = (char *)(inbuffer + offset-1); + offset += length_topic; + uint32_t length_node_pub; + arrToVar(length_node_pub, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_node_pub; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_node_pub-1]=0; + this->node_pub = (char *)(inbuffer + offset-1); + offset += length_node_pub; + uint32_t length_node_sub; + arrToVar(length_node_sub, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_node_sub; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_node_sub-1]=0; + this->node_sub = (char *)(inbuffer + offset-1); + offset += length_node_sub; + this->window_start.sec = ((uint32_t) (*(inbuffer + offset))); + this->window_start.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->window_start.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->window_start.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->window_start.sec); + this->window_start.nsec = ((uint32_t) (*(inbuffer + offset))); + this->window_start.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->window_start.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->window_start.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->window_start.nsec); + this->window_stop.sec = ((uint32_t) (*(inbuffer + offset))); + this->window_stop.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->window_stop.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->window_stop.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->window_stop.sec); + this->window_stop.nsec = ((uint32_t) (*(inbuffer + offset))); + this->window_stop.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->window_stop.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->window_stop.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->window_stop.nsec); + union { + int32_t real; + uint32_t base; + } u_delivered_msgs; + u_delivered_msgs.base = 0; + u_delivered_msgs.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_delivered_msgs.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_delivered_msgs.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_delivered_msgs.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->delivered_msgs = u_delivered_msgs.real; + offset += sizeof(this->delivered_msgs); + union { + int32_t real; + uint32_t base; + } u_dropped_msgs; + u_dropped_msgs.base = 0; + u_dropped_msgs.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_dropped_msgs.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_dropped_msgs.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_dropped_msgs.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->dropped_msgs = u_dropped_msgs.real; + offset += sizeof(this->dropped_msgs); + union { + int32_t real; + uint32_t base; + } u_traffic; + u_traffic.base = 0; + u_traffic.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_traffic.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_traffic.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_traffic.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->traffic = u_traffic.real; + offset += sizeof(this->traffic); + this->period_mean.sec = ((uint32_t) (*(inbuffer + offset))); + this->period_mean.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->period_mean.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->period_mean.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->period_mean.sec); + this->period_mean.nsec = ((uint32_t) (*(inbuffer + offset))); + this->period_mean.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->period_mean.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->period_mean.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->period_mean.nsec); + this->period_stddev.sec = ((uint32_t) (*(inbuffer + offset))); + this->period_stddev.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->period_stddev.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->period_stddev.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->period_stddev.sec); + this->period_stddev.nsec = ((uint32_t) (*(inbuffer + offset))); + this->period_stddev.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->period_stddev.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->period_stddev.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->period_stddev.nsec); + this->period_max.sec = ((uint32_t) (*(inbuffer + offset))); + this->period_max.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->period_max.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->period_max.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->period_max.sec); + this->period_max.nsec = ((uint32_t) (*(inbuffer + offset))); + this->period_max.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->period_max.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->period_max.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->period_max.nsec); + this->stamp_age_mean.sec = ((uint32_t) (*(inbuffer + offset))); + this->stamp_age_mean.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp_age_mean.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp_age_mean.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp_age_mean.sec); + this->stamp_age_mean.nsec = ((uint32_t) (*(inbuffer + offset))); + this->stamp_age_mean.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp_age_mean.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp_age_mean.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp_age_mean.nsec); + this->stamp_age_stddev.sec = ((uint32_t) (*(inbuffer + offset))); + this->stamp_age_stddev.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp_age_stddev.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp_age_stddev.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp_age_stddev.sec); + this->stamp_age_stddev.nsec = ((uint32_t) (*(inbuffer + offset))); + this->stamp_age_stddev.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp_age_stddev.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp_age_stddev.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp_age_stddev.nsec); + this->stamp_age_max.sec = ((uint32_t) (*(inbuffer + offset))); + this->stamp_age_max.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp_age_max.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp_age_max.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp_age_max.sec); + this->stamp_age_max.nsec = ((uint32_t) (*(inbuffer + offset))); + this->stamp_age_max.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp_age_max.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp_age_max.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp_age_max.nsec); + return offset; + } + + const char * getType(){ return "rosgraph_msgs/TopicStatistics"; }; + const char * getMD5(){ return "10152ed868c5097a5e2e4a89d7daa710"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rospy_tutorials/AddTwoInts.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rospy_tutorials/AddTwoInts.h new file mode 100644 index 0000000..04dec98 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rospy_tutorials/AddTwoInts.h @@ -0,0 +1,166 @@ +#ifndef _ROS_SERVICE_AddTwoInts_h +#define _ROS_SERVICE_AddTwoInts_h +#include +#include +#include +#include "ros/msg.h" + +namespace rospy_tutorials +{ + +static const char ADDTWOINTS[] = "rospy_tutorials/AddTwoInts"; + + class AddTwoIntsRequest : public ros::Msg + { + public: + typedef int64_t _a_type; + _a_type a; + typedef int64_t _b_type; + _b_type b; + + AddTwoIntsRequest(): + a(0), + b(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_a; + u_a.real = this->a; + *(outbuffer + offset + 0) = (u_a.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_a.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_a.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_a.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_a.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_a.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_a.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_a.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->a); + union { + int64_t real; + uint64_t base; + } u_b; + u_b.real = this->b; + *(outbuffer + offset + 0) = (u_b.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_b.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_b.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_b.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_b.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_b.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_b.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_b.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->b); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_a; + u_a.base = 0; + u_a.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->a = u_a.real; + offset += sizeof(this->a); + union { + int64_t real; + uint64_t base; + } u_b; + u_b.base = 0; + u_b.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->b = u_b.real; + offset += sizeof(this->b); + return offset; + } + + const char * getType(){ return ADDTWOINTS; }; + const char * getMD5(){ return "36d09b846be0b371c5f190354dd3153e"; }; + + }; + + class AddTwoIntsResponse : public ros::Msg + { + public: + typedef int64_t _sum_type; + _sum_type sum; + + AddTwoIntsResponse(): + sum(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_sum; + u_sum.real = this->sum; + *(outbuffer + offset + 0) = (u_sum.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_sum.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_sum.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_sum.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_sum.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_sum.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_sum.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_sum.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->sum); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_sum; + u_sum.base = 0; + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->sum = u_sum.real; + offset += sizeof(this->sum); + return offset; + } + + const char * getType(){ return ADDTWOINTS; }; + const char * getMD5(){ return "b88405221c77b1878a3cbbfff53428d7"; }; + + }; + + class AddTwoInts { + public: + typedef AddTwoIntsRequest Request; + typedef AddTwoIntsResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rospy_tutorials/BadTwoInts.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rospy_tutorials/BadTwoInts.h new file mode 100644 index 0000000..0218f54 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rospy_tutorials/BadTwoInts.h @@ -0,0 +1,150 @@ +#ifndef _ROS_SERVICE_BadTwoInts_h +#define _ROS_SERVICE_BadTwoInts_h +#include +#include +#include +#include "ros/msg.h" + +namespace rospy_tutorials +{ + +static const char BADTWOINTS[] = "rospy_tutorials/BadTwoInts"; + + class BadTwoIntsRequest : public ros::Msg + { + public: + typedef int64_t _a_type; + _a_type a; + typedef int32_t _b_type; + _b_type b; + + BadTwoIntsRequest(): + a(0), + b(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_a; + u_a.real = this->a; + *(outbuffer + offset + 0) = (u_a.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_a.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_a.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_a.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_a.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_a.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_a.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_a.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->a); + union { + int32_t real; + uint32_t base; + } u_b; + u_b.real = this->b; + *(outbuffer + offset + 0) = (u_b.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_b.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_b.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_b.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->b); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_a; + u_a.base = 0; + u_a.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->a = u_a.real; + offset += sizeof(this->a); + union { + int32_t real; + uint32_t base; + } u_b; + u_b.base = 0; + u_b.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_b.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_b.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_b.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->b = u_b.real; + offset += sizeof(this->b); + return offset; + } + + const char * getType(){ return BADTWOINTS; }; + const char * getMD5(){ return "29bb5c7dea8bf822f53e94b0ee5a3a56"; }; + + }; + + class BadTwoIntsResponse : public ros::Msg + { + public: + typedef int32_t _sum_type; + _sum_type sum; + + BadTwoIntsResponse(): + sum(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_sum; + u_sum.real = this->sum; + *(outbuffer + offset + 0) = (u_sum.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_sum.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_sum.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_sum.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->sum); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_sum; + u_sum.base = 0; + u_sum.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_sum.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_sum.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_sum.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->sum = u_sum.real; + offset += sizeof(this->sum); + return offset; + } + + const char * getType(){ return BADTWOINTS; }; + const char * getMD5(){ return "0ba699c25c9418c0366f3595c0c8e8ec"; }; + + }; + + class BadTwoInts { + public: + typedef BadTwoIntsRequest Request; + typedef BadTwoIntsResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rospy_tutorials/Floats.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rospy_tutorials/Floats.h new file mode 100644 index 0000000..c0d284c --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rospy_tutorials/Floats.h @@ -0,0 +1,82 @@ +#ifndef _ROS_rospy_tutorials_Floats_h +#define _ROS_rospy_tutorials_Floats_h + +#include +#include +#include +#include "ros/msg.h" + +namespace rospy_tutorials +{ + + class Floats : public ros::Msg + { + public: + uint32_t data_length; + typedef float _data_type; + _data_type st_data; + _data_type * data; + + Floats(): + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + union { + float real; + uint32_t base; + } u_datai; + u_datai.real = this->data[i]; + *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_datai.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_datai.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_datai.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (float*)realloc(this->data, data_lengthT * sizeof(float)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + union { + float real; + uint32_t base; + } u_st_data; + u_st_data.base = 0; + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_data = u_st_data.real; + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(float)); + } + return offset; + } + + const char * getType(){ return "rospy_tutorials/Floats"; }; + const char * getMD5(){ return "420cd38b6b071cd49f2970c3e2cee511"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rospy_tutorials/HeaderString.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rospy_tutorials/HeaderString.h new file mode 100644 index 0000000..9fac4ef --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rospy_tutorials/HeaderString.h @@ -0,0 +1,61 @@ +#ifndef _ROS_rospy_tutorials_HeaderString_h +#define _ROS_rospy_tutorials_HeaderString_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace rospy_tutorials +{ + + class HeaderString : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef const char* _data_type; + _data_type data; + + HeaderString(): + header(), + data("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + uint32_t length_data = strlen(this->data); + varToArr(outbuffer + offset, length_data); + offset += 4; + memcpy(outbuffer + offset, this->data, length_data); + offset += length_data; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t length_data; + arrToVar(length_data, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_data; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_data-1]=0; + this->data = (char *)(inbuffer + offset-1); + offset += length_data; + return offset; + } + + const char * getType(){ return "rospy_tutorials/HeaderString"; }; + const char * getMD5(){ return "c99a9440709e4d4a9716d55b8270d5e7"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosserial_arduino/Adc.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosserial_arduino/Adc.h new file mode 100644 index 0000000..ac48677 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosserial_arduino/Adc.h @@ -0,0 +1,92 @@ +#ifndef _ROS_rosserial_arduino_Adc_h +#define _ROS_rosserial_arduino_Adc_h + +#include +#include +#include +#include "ros/msg.h" + +namespace rosserial_arduino +{ + + class Adc : public ros::Msg + { + public: + typedef uint16_t _adc0_type; + _adc0_type adc0; + typedef uint16_t _adc1_type; + _adc1_type adc1; + typedef uint16_t _adc2_type; + _adc2_type adc2; + typedef uint16_t _adc3_type; + _adc3_type adc3; + typedef uint16_t _adc4_type; + _adc4_type adc4; + typedef uint16_t _adc5_type; + _adc5_type adc5; + + Adc(): + adc0(0), + adc1(0), + adc2(0), + adc3(0), + adc4(0), + adc5(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->adc0 >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->adc0 >> (8 * 1)) & 0xFF; + offset += sizeof(this->adc0); + *(outbuffer + offset + 0) = (this->adc1 >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->adc1 >> (8 * 1)) & 0xFF; + offset += sizeof(this->adc1); + *(outbuffer + offset + 0) = (this->adc2 >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->adc2 >> (8 * 1)) & 0xFF; + offset += sizeof(this->adc2); + *(outbuffer + offset + 0) = (this->adc3 >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->adc3 >> (8 * 1)) & 0xFF; + offset += sizeof(this->adc3); + *(outbuffer + offset + 0) = (this->adc4 >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->adc4 >> (8 * 1)) & 0xFF; + offset += sizeof(this->adc4); + *(outbuffer + offset + 0) = (this->adc5 >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->adc5 >> (8 * 1)) & 0xFF; + offset += sizeof(this->adc5); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->adc0 = ((uint16_t) (*(inbuffer + offset))); + this->adc0 |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->adc0); + this->adc1 = ((uint16_t) (*(inbuffer + offset))); + this->adc1 |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->adc1); + this->adc2 = ((uint16_t) (*(inbuffer + offset))); + this->adc2 |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->adc2); + this->adc3 = ((uint16_t) (*(inbuffer + offset))); + this->adc3 |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->adc3); + this->adc4 = ((uint16_t) (*(inbuffer + offset))); + this->adc4 |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->adc4); + this->adc5 = ((uint16_t) (*(inbuffer + offset))); + this->adc5 |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->adc5); + return offset; + } + + const char * getType(){ return "rosserial_arduino/Adc"; }; + const char * getMD5(){ return "6d7853a614e2e821319068311f2af25b"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosserial_arduino/Test.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosserial_arduino/Test.h new file mode 100644 index 0000000..cd806db --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosserial_arduino/Test.h @@ -0,0 +1,104 @@ +#ifndef _ROS_SERVICE_Test_h +#define _ROS_SERVICE_Test_h +#include +#include +#include +#include "ros/msg.h" + +namespace rosserial_arduino +{ + +static const char TEST[] = "rosserial_arduino/Test"; + + class TestRequest : public ros::Msg + { + public: + typedef const char* _input_type; + _input_type input; + + TestRequest(): + input("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_input = strlen(this->input); + varToArr(outbuffer + offset, length_input); + offset += 4; + memcpy(outbuffer + offset, this->input, length_input); + offset += length_input; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_input; + arrToVar(length_input, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_input; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_input-1]=0; + this->input = (char *)(inbuffer + offset-1); + offset += length_input; + return offset; + } + + const char * getType(){ return TEST; }; + const char * getMD5(){ return "39e92f1778057359c64c7b8a7d7b19de"; }; + + }; + + class TestResponse : public ros::Msg + { + public: + typedef const char* _output_type; + _output_type output; + + TestResponse(): + output("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_output = strlen(this->output); + varToArr(outbuffer + offset, length_output); + offset += 4; + memcpy(outbuffer + offset, this->output, length_output); + offset += length_output; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_output; + arrToVar(length_output, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_output; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_output-1]=0; + this->output = (char *)(inbuffer + offset-1); + offset += length_output; + return offset; + } + + const char * getType(){ return TEST; }; + const char * getMD5(){ return "0825d95fdfa2c8f4bbb4e9c74bccd3fd"; }; + + }; + + class Test { + public: + typedef TestRequest Request; + typedef TestResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosserial_mbed/Adc.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosserial_mbed/Adc.h new file mode 100644 index 0000000..0de6480 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosserial_mbed/Adc.h @@ -0,0 +1,92 @@ +#ifndef _ROS_rosserial_mbed_Adc_h +#define _ROS_rosserial_mbed_Adc_h + +#include +#include +#include +#include "ros/msg.h" + +namespace rosserial_mbed +{ + + class Adc : public ros::Msg + { + public: + typedef uint16_t _adc0_type; + _adc0_type adc0; + typedef uint16_t _adc1_type; + _adc1_type adc1; + typedef uint16_t _adc2_type; + _adc2_type adc2; + typedef uint16_t _adc3_type; + _adc3_type adc3; + typedef uint16_t _adc4_type; + _adc4_type adc4; + typedef uint16_t _adc5_type; + _adc5_type adc5; + + Adc(): + adc0(0), + adc1(0), + adc2(0), + adc3(0), + adc4(0), + adc5(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->adc0 >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->adc0 >> (8 * 1)) & 0xFF; + offset += sizeof(this->adc0); + *(outbuffer + offset + 0) = (this->adc1 >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->adc1 >> (8 * 1)) & 0xFF; + offset += sizeof(this->adc1); + *(outbuffer + offset + 0) = (this->adc2 >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->adc2 >> (8 * 1)) & 0xFF; + offset += sizeof(this->adc2); + *(outbuffer + offset + 0) = (this->adc3 >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->adc3 >> (8 * 1)) & 0xFF; + offset += sizeof(this->adc3); + *(outbuffer + offset + 0) = (this->adc4 >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->adc4 >> (8 * 1)) & 0xFF; + offset += sizeof(this->adc4); + *(outbuffer + offset + 0) = (this->adc5 >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->adc5 >> (8 * 1)) & 0xFF; + offset += sizeof(this->adc5); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->adc0 = ((uint16_t) (*(inbuffer + offset))); + this->adc0 |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->adc0); + this->adc1 = ((uint16_t) (*(inbuffer + offset))); + this->adc1 |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->adc1); + this->adc2 = ((uint16_t) (*(inbuffer + offset))); + this->adc2 |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->adc2); + this->adc3 = ((uint16_t) (*(inbuffer + offset))); + this->adc3 |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->adc3); + this->adc4 = ((uint16_t) (*(inbuffer + offset))); + this->adc4 |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->adc4); + this->adc5 = ((uint16_t) (*(inbuffer + offset))); + this->adc5 |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->adc5); + return offset; + } + + const char * getType(){ return "rosserial_mbed/Adc"; }; + const char * getMD5(){ return "6d7853a614e2e821319068311f2af25b"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosserial_mbed/Test.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosserial_mbed/Test.h new file mode 100644 index 0000000..6a2658f --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosserial_mbed/Test.h @@ -0,0 +1,104 @@ +#ifndef _ROS_SERVICE_Test_h +#define _ROS_SERVICE_Test_h +#include +#include +#include +#include "ros/msg.h" + +namespace rosserial_mbed +{ + +static const char TEST[] = "rosserial_mbed/Test"; + + class TestRequest : public ros::Msg + { + public: + typedef const char* _input_type; + _input_type input; + + TestRequest(): + input("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_input = strlen(this->input); + varToArr(outbuffer + offset, length_input); + offset += 4; + memcpy(outbuffer + offset, this->input, length_input); + offset += length_input; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_input; + arrToVar(length_input, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_input; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_input-1]=0; + this->input = (char *)(inbuffer + offset-1); + offset += length_input; + return offset; + } + + const char * getType(){ return TEST; }; + const char * getMD5(){ return "39e92f1778057359c64c7b8a7d7b19de"; }; + + }; + + class TestResponse : public ros::Msg + { + public: + typedef const char* _output_type; + _output_type output; + + TestResponse(): + output("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_output = strlen(this->output); + varToArr(outbuffer + offset, length_output); + offset += 4; + memcpy(outbuffer + offset, this->output, length_output); + offset += length_output; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_output; + arrToVar(length_output, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_output; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_output-1]=0; + this->output = (char *)(inbuffer + offset-1); + offset += length_output; + return offset; + } + + const char * getType(){ return TEST; }; + const char * getMD5(){ return "0825d95fdfa2c8f4bbb4e9c74bccd3fd"; }; + + }; + + class Test { + public: + typedef TestRequest Request; + typedef TestResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosserial_msgs/Log.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosserial_msgs/Log.h new file mode 100644 index 0000000..a162ca8 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosserial_msgs/Log.h @@ -0,0 +1,67 @@ +#ifndef _ROS_rosserial_msgs_Log_h +#define _ROS_rosserial_msgs_Log_h + +#include +#include +#include +#include "../ros/msg.h" + +namespace rosserial_msgs +{ + + class Log : public ros::Msg + { + public: + typedef uint8_t _level_type; + _level_type level; + typedef const char* _msg_type; + _msg_type msg; + enum { ROSDEBUG = 0 }; + enum { INFO = 1 }; + enum { WARN = 2 }; + enum { ERROR = 3 }; + enum { FATAL = 4 }; + + Log(): + level(0), + msg("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->level >> (8 * 0)) & 0xFF; + offset += sizeof(this->level); + uint32_t length_msg = strlen(this->msg); + varToArr(outbuffer + offset, length_msg); + offset += 4; + memcpy(outbuffer + offset, this->msg, length_msg); + offset += length_msg; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->level = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->level); + uint32_t length_msg; + arrToVar(length_msg, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_msg; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_msg-1]=0; + this->msg = (char *)(inbuffer + offset-1); + offset += length_msg; + return offset; + } + + const char * getType(){ return "rosserial_msgs/Log"; }; + const char * getMD5(){ return "11abd731c25933261cd6183bd12d6295"; }; + + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosserial_msgs/RequestMessageInfo.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosserial_msgs/RequestMessageInfo.h new file mode 100644 index 0000000..3466ddc --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosserial_msgs/RequestMessageInfo.h @@ -0,0 +1,121 @@ +#ifndef _ROS_SERVICE_RequestMessageInfo_h +#define _ROS_SERVICE_RequestMessageInfo_h +#include +#include +#include +#include "ros/msg.h" + +namespace rosserial_msgs +{ + +static const char REQUESTMESSAGEINFO[] = "rosserial_msgs/RequestMessageInfo"; + + class RequestMessageInfoRequest : public ros::Msg + { + public: + typedef const char* _type_type; + _type_type type; + + RequestMessageInfoRequest(): + type("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_type = strlen(this->type); + varToArr(outbuffer + offset, length_type); + offset += 4; + memcpy(outbuffer + offset, this->type, length_type); + offset += length_type; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_type; + arrToVar(length_type, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_type; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_type-1]=0; + this->type = (char *)(inbuffer + offset-1); + offset += length_type; + return offset; + } + + const char * getType(){ return REQUESTMESSAGEINFO; }; + const char * getMD5(){ return "dc67331de85cf97091b7d45e5c64ab75"; }; + + }; + + class RequestMessageInfoResponse : public ros::Msg + { + public: + typedef const char* _md5_type; + _md5_type md5; + typedef const char* _definition_type; + _definition_type definition; + + RequestMessageInfoResponse(): + md5(""), + definition("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_md5 = strlen(this->md5); + varToArr(outbuffer + offset, length_md5); + offset += 4; + memcpy(outbuffer + offset, this->md5, length_md5); + offset += length_md5; + uint32_t length_definition = strlen(this->definition); + varToArr(outbuffer + offset, length_definition); + offset += 4; + memcpy(outbuffer + offset, this->definition, length_definition); + offset += length_definition; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_md5; + arrToVar(length_md5, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_md5; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_md5-1]=0; + this->md5 = (char *)(inbuffer + offset-1); + offset += length_md5; + uint32_t length_definition; + arrToVar(length_definition, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_definition; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_definition-1]=0; + this->definition = (char *)(inbuffer + offset-1); + offset += length_definition; + return offset; + } + + const char * getType(){ return REQUESTMESSAGEINFO; }; + const char * getMD5(){ return "fe452186a069bed40f09b8628fe5eac8"; }; + + }; + + class RequestMessageInfo { + public: + typedef RequestMessageInfoRequest Request; + typedef RequestMessageInfoResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosserial_msgs/RequestParam.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosserial_msgs/RequestParam.h new file mode 100644 index 0000000..aaecd13 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosserial_msgs/RequestParam.h @@ -0,0 +1,212 @@ +#ifndef _ROS_SERVICE_RequestParam_h +#define _ROS_SERVICE_RequestParam_h +#include +#include +#include +#include "../ros/msg.h" + +namespace rosserial_msgs +{ + +static const char REQUESTPARAM[] = "rosserial_msgs/RequestParam"; + + class RequestParamRequest : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + + RequestParamRequest(): + name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + return offset; + } + + const char * getType(){ return REQUESTPARAM; }; + const char * getMD5(){ return "c1f3d28f1b044c871e6eff2e9fc3c667"; }; + + }; + + class RequestParamResponse : public ros::Msg + { + public: + uint32_t ints_length; + typedef int32_t _ints_type; + _ints_type st_ints; + _ints_type * ints; + uint32_t floats_length; + typedef float _floats_type; + _floats_type st_floats; + _floats_type * floats; + uint32_t strings_length; + typedef char* _strings_type; + _strings_type st_strings; + _strings_type * strings; + + RequestParamResponse(): + ints_length(0), ints(NULL), + floats_length(0), floats(NULL), + strings_length(0), strings(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->ints_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->ints_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->ints_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->ints_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->ints_length); + for( uint32_t i = 0; i < ints_length; i++){ + union { + int32_t real; + uint32_t base; + } u_intsi; + u_intsi.real = this->ints[i]; + *(outbuffer + offset + 0) = (u_intsi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_intsi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_intsi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_intsi.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->ints[i]); + } + *(outbuffer + offset + 0) = (this->floats_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->floats_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->floats_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->floats_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->floats_length); + for( uint32_t i = 0; i < floats_length; i++){ + union { + float real; + uint32_t base; + } u_floatsi; + u_floatsi.real = this->floats[i]; + *(outbuffer + offset + 0) = (u_floatsi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_floatsi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_floatsi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_floatsi.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->floats[i]); + } + *(outbuffer + offset + 0) = (this->strings_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->strings_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->strings_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->strings_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->strings_length); + for( uint32_t i = 0; i < strings_length; i++){ + uint32_t length_stringsi = strlen(this->strings[i]); + varToArr(outbuffer + offset, length_stringsi); + offset += 4; + memcpy(outbuffer + offset, this->strings[i], length_stringsi); + offset += length_stringsi; + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t ints_lengthT = ((uint32_t) (*(inbuffer + offset))); + ints_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + ints_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + ints_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->ints_length); + if(ints_lengthT > ints_length) + this->ints = (int32_t*)realloc(this->ints, ints_lengthT * sizeof(int32_t)); + ints_length = ints_lengthT; + for( uint32_t i = 0; i < ints_length; i++){ + union { + int32_t real; + uint32_t base; + } u_st_ints; + u_st_ints.base = 0; + u_st_ints.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_ints.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_ints.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_ints.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_ints = u_st_ints.real; + offset += sizeof(this->st_ints); + memcpy( &(this->ints[i]), &(this->st_ints), sizeof(int32_t)); + } + uint32_t floats_lengthT = ((uint32_t) (*(inbuffer + offset))); + floats_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + floats_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + floats_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->floats_length); + if(floats_lengthT > floats_length) + this->floats = (float*)realloc(this->floats, floats_lengthT * sizeof(float)); + floats_length = floats_lengthT; + for( uint32_t i = 0; i < floats_length; i++){ + union { + float real; + uint32_t base; + } u_st_floats; + u_st_floats.base = 0; + u_st_floats.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_floats.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_floats.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_floats.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_floats = u_st_floats.real; + offset += sizeof(this->st_floats); + memcpy( &(this->floats[i]), &(this->st_floats), sizeof(float)); + } + uint32_t strings_lengthT = ((uint32_t) (*(inbuffer + offset))); + strings_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + strings_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + strings_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->strings_length); + if(strings_lengthT > strings_length) + this->strings = (char**)realloc(this->strings, strings_lengthT * sizeof(char*)); + strings_length = strings_lengthT; + for( uint32_t i = 0; i < strings_length; i++){ + uint32_t length_st_strings; + arrToVar(length_st_strings, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_strings; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_strings-1]=0; + this->st_strings = (char *)(inbuffer + offset-1); + offset += length_st_strings; + memcpy( &(this->strings[i]), &(this->st_strings), sizeof(char*)); + } + return offset; + } + + const char * getType(){ return REQUESTPARAM; }; + const char * getMD5(){ return "9f0e98bda65981986ddf53afa7a40e49"; }; + + }; + + class RequestParam { + public: + typedef RequestParamRequest Request; + typedef RequestParamResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosserial_msgs/RequestServiceInfo.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosserial_msgs/RequestServiceInfo.h new file mode 100644 index 0000000..b18cf9d --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosserial_msgs/RequestServiceInfo.h @@ -0,0 +1,138 @@ +#ifndef _ROS_SERVICE_RequestServiceInfo_h +#define _ROS_SERVICE_RequestServiceInfo_h +#include +#include +#include +#include "ros/msg.h" + +namespace rosserial_msgs +{ + +static const char REQUESTSERVICEINFO[] = "rosserial_msgs/RequestServiceInfo"; + + class RequestServiceInfoRequest : public ros::Msg + { + public: + typedef const char* _service_type; + _service_type service; + + RequestServiceInfoRequest(): + service("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_service = strlen(this->service); + varToArr(outbuffer + offset, length_service); + offset += 4; + memcpy(outbuffer + offset, this->service, length_service); + offset += length_service; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_service; + arrToVar(length_service, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_service; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_service-1]=0; + this->service = (char *)(inbuffer + offset-1); + offset += length_service; + return offset; + } + + const char * getType(){ return REQUESTSERVICEINFO; }; + const char * getMD5(){ return "1cbcfa13b08f6d36710b9af8741e6112"; }; + + }; + + class RequestServiceInfoResponse : public ros::Msg + { + public: + typedef const char* _service_md5_type; + _service_md5_type service_md5; + typedef const char* _request_md5_type; + _request_md5_type request_md5; + typedef const char* _response_md5_type; + _response_md5_type response_md5; + + RequestServiceInfoResponse(): + service_md5(""), + request_md5(""), + response_md5("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_service_md5 = strlen(this->service_md5); + varToArr(outbuffer + offset, length_service_md5); + offset += 4; + memcpy(outbuffer + offset, this->service_md5, length_service_md5); + offset += length_service_md5; + uint32_t length_request_md5 = strlen(this->request_md5); + varToArr(outbuffer + offset, length_request_md5); + offset += 4; + memcpy(outbuffer + offset, this->request_md5, length_request_md5); + offset += length_request_md5; + uint32_t length_response_md5 = strlen(this->response_md5); + varToArr(outbuffer + offset, length_response_md5); + offset += 4; + memcpy(outbuffer + offset, this->response_md5, length_response_md5); + offset += length_response_md5; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_service_md5; + arrToVar(length_service_md5, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_service_md5; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_service_md5-1]=0; + this->service_md5 = (char *)(inbuffer + offset-1); + offset += length_service_md5; + uint32_t length_request_md5; + arrToVar(length_request_md5, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_request_md5; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_request_md5-1]=0; + this->request_md5 = (char *)(inbuffer + offset-1); + offset += length_request_md5; + uint32_t length_response_md5; + arrToVar(length_response_md5, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_response_md5; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_response_md5-1]=0; + this->response_md5 = (char *)(inbuffer + offset-1); + offset += length_response_md5; + return offset; + } + + const char * getType(){ return REQUESTSERVICEINFO; }; + const char * getMD5(){ return "c3d6dd25b909596479fbbc6559fa6874"; }; + + }; + + class RequestServiceInfo { + public: + typedef RequestServiceInfoRequest Request; + typedef RequestServiceInfoResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosserial_msgs/TopicInfo.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosserial_msgs/TopicInfo.h new file mode 100644 index 0000000..987c161 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/rosserial_msgs/TopicInfo.h @@ -0,0 +1,130 @@ +#ifndef _ROS_rosserial_msgs_TopicInfo_h +#define _ROS_rosserial_msgs_TopicInfo_h + +#include +#include +#include +#include "../ros/msg.h" + +namespace rosserial_msgs +{ + + class TopicInfo : public ros::Msg + { + public: + typedef uint16_t _topic_id_type; + _topic_id_type topic_id; + typedef const char* _topic_name_type; + _topic_name_type topic_name; + typedef const char* _message_type_type; + _message_type_type message_type; + typedef const char* _md5sum_type; + _md5sum_type md5sum; + typedef int32_t _buffer_size_type; + _buffer_size_type buffer_size; + enum { ID_PUBLISHER = 0 }; + enum { ID_SUBSCRIBER = 1 }; + enum { ID_SERVICE_SERVER = 2 }; + enum { ID_SERVICE_CLIENT = 4 }; + enum { ID_PARAMETER_REQUEST = 6 }; + enum { ID_LOG = 7 }; + enum { ID_TIME = 10 }; + enum { ID_TX_STOP = 11 }; + + TopicInfo(): + topic_id(0), + topic_name(""), + message_type(""), + md5sum(""), + buffer_size(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->topic_id >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->topic_id >> (8 * 1)) & 0xFF; + offset += sizeof(this->topic_id); + uint32_t length_topic_name = strlen(this->topic_name); + varToArr(outbuffer + offset, length_topic_name); + offset += 4; + memcpy(outbuffer + offset, this->topic_name, length_topic_name); + offset += length_topic_name; + uint32_t length_message_type = strlen(this->message_type); + varToArr(outbuffer + offset, length_message_type); + offset += 4; + memcpy(outbuffer + offset, this->message_type, length_message_type); + offset += length_message_type; + uint32_t length_md5sum = strlen(this->md5sum); + varToArr(outbuffer + offset, length_md5sum); + offset += 4; + memcpy(outbuffer + offset, this->md5sum, length_md5sum); + offset += length_md5sum; + union { + int32_t real; + uint32_t base; + } u_buffer_size; + u_buffer_size.real = this->buffer_size; + *(outbuffer + offset + 0) = (u_buffer_size.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_buffer_size.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_buffer_size.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_buffer_size.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->buffer_size); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->topic_id = ((uint16_t) (*(inbuffer + offset))); + this->topic_id |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->topic_id); + uint32_t length_topic_name; + arrToVar(length_topic_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_topic_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_topic_name-1]=0; + this->topic_name = (char *)(inbuffer + offset-1); + offset += length_topic_name; + uint32_t length_message_type; + arrToVar(length_message_type, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_message_type; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_message_type-1]=0; + this->message_type = (char *)(inbuffer + offset-1); + offset += length_message_type; + uint32_t length_md5sum; + arrToVar(length_md5sum, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_md5sum; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_md5sum-1]=0; + this->md5sum = (char *)(inbuffer + offset-1); + offset += length_md5sum; + union { + int32_t real; + uint32_t base; + } u_buffer_size; + u_buffer_size.base = 0; + u_buffer_size.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_buffer_size.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_buffer_size.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_buffer_size.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->buffer_size = u_buffer_size.real; + offset += sizeof(this->buffer_size); + return offset; + } + + const char * getType(){ return "rosserial_msgs/TopicInfo"; }; + const char * getMD5(){ return "0ad51f88fc44892f8c10684077646005"; }; + + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/BatteryState.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/BatteryState.h new file mode 100644 index 0000000..4e9cba4 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/BatteryState.h @@ -0,0 +1,326 @@ +#ifndef _ROS_sensor_msgs_BatteryState_h +#define _ROS_sensor_msgs_BatteryState_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace sensor_msgs +{ + + class BatteryState : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef float _voltage_type; + _voltage_type voltage; + typedef float _current_type; + _current_type current; + typedef float _charge_type; + _charge_type charge; + typedef float _capacity_type; + _capacity_type capacity; + typedef float _design_capacity_type; + _design_capacity_type design_capacity; + typedef float _percentage_type; + _percentage_type percentage; + typedef uint8_t _power_supply_status_type; + _power_supply_status_type power_supply_status; + typedef uint8_t _power_supply_health_type; + _power_supply_health_type power_supply_health; + typedef uint8_t _power_supply_technology_type; + _power_supply_technology_type power_supply_technology; + typedef bool _present_type; + _present_type present; + uint32_t cell_voltage_length; + typedef float _cell_voltage_type; + _cell_voltage_type st_cell_voltage; + _cell_voltage_type * cell_voltage; + typedef const char* _location_type; + _location_type location; + typedef const char* _serial_number_type; + _serial_number_type serial_number; + enum { POWER_SUPPLY_STATUS_UNKNOWN = 0 }; + enum { POWER_SUPPLY_STATUS_CHARGING = 1 }; + enum { POWER_SUPPLY_STATUS_DISCHARGING = 2 }; + enum { POWER_SUPPLY_STATUS_NOT_CHARGING = 3 }; + enum { POWER_SUPPLY_STATUS_FULL = 4 }; + enum { POWER_SUPPLY_HEALTH_UNKNOWN = 0 }; + enum { POWER_SUPPLY_HEALTH_GOOD = 1 }; + enum { POWER_SUPPLY_HEALTH_OVERHEAT = 2 }; + enum { POWER_SUPPLY_HEALTH_DEAD = 3 }; + enum { POWER_SUPPLY_HEALTH_OVERVOLTAGE = 4 }; + enum { POWER_SUPPLY_HEALTH_UNSPEC_FAILURE = 5 }; + enum { POWER_SUPPLY_HEALTH_COLD = 6 }; + enum { POWER_SUPPLY_HEALTH_WATCHDOG_TIMER_EXPIRE = 7 }; + enum { POWER_SUPPLY_HEALTH_SAFETY_TIMER_EXPIRE = 8 }; + enum { POWER_SUPPLY_TECHNOLOGY_UNKNOWN = 0 }; + enum { POWER_SUPPLY_TECHNOLOGY_NIMH = 1 }; + enum { POWER_SUPPLY_TECHNOLOGY_LION = 2 }; + enum { POWER_SUPPLY_TECHNOLOGY_LIPO = 3 }; + enum { POWER_SUPPLY_TECHNOLOGY_LIFE = 4 }; + enum { POWER_SUPPLY_TECHNOLOGY_NICD = 5 }; + enum { POWER_SUPPLY_TECHNOLOGY_LIMN = 6 }; + + BatteryState(): + header(), + voltage(0), + current(0), + charge(0), + capacity(0), + design_capacity(0), + percentage(0), + power_supply_status(0), + power_supply_health(0), + power_supply_technology(0), + present(0), + cell_voltage_length(0), cell_voltage(NULL), + location(""), + serial_number("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + union { + float real; + uint32_t base; + } u_voltage; + u_voltage.real = this->voltage; + *(outbuffer + offset + 0) = (u_voltage.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_voltage.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_voltage.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_voltage.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->voltage); + union { + float real; + uint32_t base; + } u_current; + u_current.real = this->current; + *(outbuffer + offset + 0) = (u_current.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_current.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_current.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_current.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->current); + union { + float real; + uint32_t base; + } u_charge; + u_charge.real = this->charge; + *(outbuffer + offset + 0) = (u_charge.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_charge.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_charge.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_charge.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->charge); + union { + float real; + uint32_t base; + } u_capacity; + u_capacity.real = this->capacity; + *(outbuffer + offset + 0) = (u_capacity.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_capacity.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_capacity.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_capacity.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->capacity); + union { + float real; + uint32_t base; + } u_design_capacity; + u_design_capacity.real = this->design_capacity; + *(outbuffer + offset + 0) = (u_design_capacity.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_design_capacity.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_design_capacity.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_design_capacity.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->design_capacity); + union { + float real; + uint32_t base; + } u_percentage; + u_percentage.real = this->percentage; + *(outbuffer + offset + 0) = (u_percentage.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_percentage.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_percentage.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_percentage.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->percentage); + *(outbuffer + offset + 0) = (this->power_supply_status >> (8 * 0)) & 0xFF; + offset += sizeof(this->power_supply_status); + *(outbuffer + offset + 0) = (this->power_supply_health >> (8 * 0)) & 0xFF; + offset += sizeof(this->power_supply_health); + *(outbuffer + offset + 0) = (this->power_supply_technology >> (8 * 0)) & 0xFF; + offset += sizeof(this->power_supply_technology); + union { + bool real; + uint8_t base; + } u_present; + u_present.real = this->present; + *(outbuffer + offset + 0) = (u_present.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->present); + *(outbuffer + offset + 0) = (this->cell_voltage_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->cell_voltage_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->cell_voltage_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->cell_voltage_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->cell_voltage_length); + for( uint32_t i = 0; i < cell_voltage_length; i++){ + union { + float real; + uint32_t base; + } u_cell_voltagei; + u_cell_voltagei.real = this->cell_voltage[i]; + *(outbuffer + offset + 0) = (u_cell_voltagei.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_cell_voltagei.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_cell_voltagei.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_cell_voltagei.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->cell_voltage[i]); + } + uint32_t length_location = strlen(this->location); + varToArr(outbuffer + offset, length_location); + offset += 4; + memcpy(outbuffer + offset, this->location, length_location); + offset += length_location; + uint32_t length_serial_number = strlen(this->serial_number); + varToArr(outbuffer + offset, length_serial_number); + offset += 4; + memcpy(outbuffer + offset, this->serial_number, length_serial_number); + offset += length_serial_number; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + union { + float real; + uint32_t base; + } u_voltage; + u_voltage.base = 0; + u_voltage.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_voltage.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_voltage.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_voltage.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->voltage = u_voltage.real; + offset += sizeof(this->voltage); + union { + float real; + uint32_t base; + } u_current; + u_current.base = 0; + u_current.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_current.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_current.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_current.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->current = u_current.real; + offset += sizeof(this->current); + union { + float real; + uint32_t base; + } u_charge; + u_charge.base = 0; + u_charge.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_charge.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_charge.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_charge.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->charge = u_charge.real; + offset += sizeof(this->charge); + union { + float real; + uint32_t base; + } u_capacity; + u_capacity.base = 0; + u_capacity.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_capacity.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_capacity.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_capacity.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->capacity = u_capacity.real; + offset += sizeof(this->capacity); + union { + float real; + uint32_t base; + } u_design_capacity; + u_design_capacity.base = 0; + u_design_capacity.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_design_capacity.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_design_capacity.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_design_capacity.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->design_capacity = u_design_capacity.real; + offset += sizeof(this->design_capacity); + union { + float real; + uint32_t base; + } u_percentage; + u_percentage.base = 0; + u_percentage.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_percentage.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_percentage.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_percentage.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->percentage = u_percentage.real; + offset += sizeof(this->percentage); + this->power_supply_status = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->power_supply_status); + this->power_supply_health = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->power_supply_health); + this->power_supply_technology = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->power_supply_technology); + union { + bool real; + uint8_t base; + } u_present; + u_present.base = 0; + u_present.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->present = u_present.real; + offset += sizeof(this->present); + uint32_t cell_voltage_lengthT = ((uint32_t) (*(inbuffer + offset))); + cell_voltage_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + cell_voltage_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + cell_voltage_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->cell_voltage_length); + if(cell_voltage_lengthT > cell_voltage_length) + this->cell_voltage = (float*)realloc(this->cell_voltage, cell_voltage_lengthT * sizeof(float)); + cell_voltage_length = cell_voltage_lengthT; + for( uint32_t i = 0; i < cell_voltage_length; i++){ + union { + float real; + uint32_t base; + } u_st_cell_voltage; + u_st_cell_voltage.base = 0; + u_st_cell_voltage.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_cell_voltage.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_cell_voltage.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_cell_voltage.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_cell_voltage = u_st_cell_voltage.real; + offset += sizeof(this->st_cell_voltage); + memcpy( &(this->cell_voltage[i]), &(this->st_cell_voltage), sizeof(float)); + } + uint32_t length_location; + arrToVar(length_location, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_location; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_location-1]=0; + this->location = (char *)(inbuffer + offset-1); + offset += length_location; + uint32_t length_serial_number; + arrToVar(length_serial_number, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_serial_number; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_serial_number-1]=0; + this->serial_number = (char *)(inbuffer + offset-1); + offset += length_serial_number; + return offset; + } + + const char * getType(){ return "sensor_msgs/BatteryState"; }; + const char * getMD5(){ return "476f837fa6771f6e16e3bf4ef96f8770"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/CameraInfo.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/CameraInfo.h new file mode 100644 index 0000000..5bd1c7d --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/CameraInfo.h @@ -0,0 +1,276 @@ +#ifndef _ROS_sensor_msgs_CameraInfo_h +#define _ROS_sensor_msgs_CameraInfo_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "sensor_msgs/RegionOfInterest.h" + +namespace sensor_msgs +{ + + class CameraInfo : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef uint32_t _height_type; + _height_type height; + typedef uint32_t _width_type; + _width_type width; + typedef const char* _distortion_model_type; + _distortion_model_type distortion_model; + uint32_t D_length; + typedef double _D_type; + _D_type st_D; + _D_type * D; + double K[9]; + double R[9]; + double P[12]; + typedef uint32_t _binning_x_type; + _binning_x_type binning_x; + typedef uint32_t _binning_y_type; + _binning_y_type binning_y; + typedef sensor_msgs::RegionOfInterest _roi_type; + _roi_type roi; + + CameraInfo(): + header(), + height(0), + width(0), + distortion_model(""), + D_length(0), D(NULL), + K(), + R(), + P(), + binning_x(0), + binning_y(0), + roi() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->height >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->height >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->height >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->height >> (8 * 3)) & 0xFF; + offset += sizeof(this->height); + *(outbuffer + offset + 0) = (this->width >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->width >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->width >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->width >> (8 * 3)) & 0xFF; + offset += sizeof(this->width); + uint32_t length_distortion_model = strlen(this->distortion_model); + varToArr(outbuffer + offset, length_distortion_model); + offset += 4; + memcpy(outbuffer + offset, this->distortion_model, length_distortion_model); + offset += length_distortion_model; + *(outbuffer + offset + 0) = (this->D_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->D_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->D_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->D_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->D_length); + for( uint32_t i = 0; i < D_length; i++){ + union { + double real; + uint64_t base; + } u_Di; + u_Di.real = this->D[i]; + *(outbuffer + offset + 0) = (u_Di.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_Di.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_Di.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_Di.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_Di.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_Di.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_Di.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_Di.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->D[i]); + } + for( uint32_t i = 0; i < 9; i++){ + union { + double real; + uint64_t base; + } u_Ki; + u_Ki.real = this->K[i]; + *(outbuffer + offset + 0) = (u_Ki.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_Ki.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_Ki.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_Ki.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_Ki.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_Ki.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_Ki.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_Ki.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->K[i]); + } + for( uint32_t i = 0; i < 9; i++){ + union { + double real; + uint64_t base; + } u_Ri; + u_Ri.real = this->R[i]; + *(outbuffer + offset + 0) = (u_Ri.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_Ri.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_Ri.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_Ri.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_Ri.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_Ri.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_Ri.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_Ri.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->R[i]); + } + for( uint32_t i = 0; i < 12; i++){ + union { + double real; + uint64_t base; + } u_Pi; + u_Pi.real = this->P[i]; + *(outbuffer + offset + 0) = (u_Pi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_Pi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_Pi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_Pi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_Pi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_Pi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_Pi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_Pi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->P[i]); + } + *(outbuffer + offset + 0) = (this->binning_x >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->binning_x >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->binning_x >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->binning_x >> (8 * 3)) & 0xFF; + offset += sizeof(this->binning_x); + *(outbuffer + offset + 0) = (this->binning_y >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->binning_y >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->binning_y >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->binning_y >> (8 * 3)) & 0xFF; + offset += sizeof(this->binning_y); + offset += this->roi.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + this->height = ((uint32_t) (*(inbuffer + offset))); + this->height |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->height |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->height |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->height); + this->width = ((uint32_t) (*(inbuffer + offset))); + this->width |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->width |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->width |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->width); + uint32_t length_distortion_model; + arrToVar(length_distortion_model, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_distortion_model; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_distortion_model-1]=0; + this->distortion_model = (char *)(inbuffer + offset-1); + offset += length_distortion_model; + uint32_t D_lengthT = ((uint32_t) (*(inbuffer + offset))); + D_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + D_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + D_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->D_length); + if(D_lengthT > D_length) + this->D = (double*)realloc(this->D, D_lengthT * sizeof(double)); + D_length = D_lengthT; + for( uint32_t i = 0; i < D_length; i++){ + union { + double real; + uint64_t base; + } u_st_D; + u_st_D.base = 0; + u_st_D.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_D.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_D.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_D.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_D.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_D.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_D.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_D.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_D = u_st_D.real; + offset += sizeof(this->st_D); + memcpy( &(this->D[i]), &(this->st_D), sizeof(double)); + } + for( uint32_t i = 0; i < 9; i++){ + union { + double real; + uint64_t base; + } u_Ki; + u_Ki.base = 0; + u_Ki.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_Ki.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_Ki.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_Ki.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_Ki.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_Ki.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_Ki.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_Ki.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->K[i] = u_Ki.real; + offset += sizeof(this->K[i]); + } + for( uint32_t i = 0; i < 9; i++){ + union { + double real; + uint64_t base; + } u_Ri; + u_Ri.base = 0; + u_Ri.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_Ri.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_Ri.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_Ri.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_Ri.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_Ri.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_Ri.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_Ri.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->R[i] = u_Ri.real; + offset += sizeof(this->R[i]); + } + for( uint32_t i = 0; i < 12; i++){ + union { + double real; + uint64_t base; + } u_Pi; + u_Pi.base = 0; + u_Pi.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_Pi.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_Pi.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_Pi.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_Pi.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_Pi.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_Pi.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_Pi.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->P[i] = u_Pi.real; + offset += sizeof(this->P[i]); + } + this->binning_x = ((uint32_t) (*(inbuffer + offset))); + this->binning_x |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->binning_x |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->binning_x |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->binning_x); + this->binning_y = ((uint32_t) (*(inbuffer + offset))); + this->binning_y |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->binning_y |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->binning_y |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->binning_y); + offset += this->roi.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "sensor_msgs/CameraInfo"; }; + const char * getMD5(){ return "c9a58c1b0b154e0e6da7578cb991d214"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/ChannelFloat32.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/ChannelFloat32.h new file mode 100644 index 0000000..c5c433d --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/ChannelFloat32.h @@ -0,0 +1,99 @@ +#ifndef _ROS_sensor_msgs_ChannelFloat32_h +#define _ROS_sensor_msgs_ChannelFloat32_h + +#include +#include +#include +#include "ros/msg.h" + +namespace sensor_msgs +{ + + class ChannelFloat32 : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + uint32_t values_length; + typedef float _values_type; + _values_type st_values; + _values_type * values; + + ChannelFloat32(): + name(""), + values_length(0), values(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + *(outbuffer + offset + 0) = (this->values_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->values_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->values_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->values_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->values_length); + for( uint32_t i = 0; i < values_length; i++){ + union { + float real; + uint32_t base; + } u_valuesi; + u_valuesi.real = this->values[i]; + *(outbuffer + offset + 0) = (u_valuesi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_valuesi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_valuesi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_valuesi.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->values[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + uint32_t values_lengthT = ((uint32_t) (*(inbuffer + offset))); + values_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + values_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + values_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->values_length); + if(values_lengthT > values_length) + this->values = (float*)realloc(this->values, values_lengthT * sizeof(float)); + values_length = values_lengthT; + for( uint32_t i = 0; i < values_length; i++){ + union { + float real; + uint32_t base; + } u_st_values; + u_st_values.base = 0; + u_st_values.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_values.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_values.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_values.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_values = u_st_values.real; + offset += sizeof(this->st_values); + memcpy( &(this->values[i]), &(this->st_values), sizeof(float)); + } + return offset; + } + + const char * getType(){ return "sensor_msgs/ChannelFloat32"; }; + const char * getMD5(){ return "3d40139cdd33dfedcb71ffeeeb42ae7f"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/CompressedImage.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/CompressedImage.h new file mode 100644 index 0000000..a11f62c --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/CompressedImage.h @@ -0,0 +1,88 @@ +#ifndef _ROS_sensor_msgs_CompressedImage_h +#define _ROS_sensor_msgs_CompressedImage_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace sensor_msgs +{ + + class CompressedImage : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef const char* _format_type; + _format_type format; + uint32_t data_length; + typedef uint8_t _data_type; + _data_type st_data; + _data_type * data; + + CompressedImage(): + header(), + format(""), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + uint32_t length_format = strlen(this->format); + varToArr(outbuffer + offset, length_format); + offset += 4; + memcpy(outbuffer + offset, this->format, length_format); + offset += length_format; + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t length_format; + arrToVar(length_format, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_format; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_format-1]=0; + this->format = (char *)(inbuffer + offset-1); + offset += length_format; + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (uint8_t*)realloc(this->data, data_lengthT * sizeof(uint8_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + this->st_data = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(uint8_t)); + } + return offset; + } + + const char * getType(){ return "sensor_msgs/CompressedImage"; }; + const char * getMD5(){ return "8f7a12909da2c9d3332d540a0977563f"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/FluidPressure.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/FluidPressure.h new file mode 100644 index 0000000..3df5165 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/FluidPressure.h @@ -0,0 +1,108 @@ +#ifndef _ROS_sensor_msgs_FluidPressure_h +#define _ROS_sensor_msgs_FluidPressure_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace sensor_msgs +{ + + class FluidPressure : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef double _fluid_pressure_type; + _fluid_pressure_type fluid_pressure; + typedef double _variance_type; + _variance_type variance; + + FluidPressure(): + header(), + fluid_pressure(0), + variance(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + union { + double real; + uint64_t base; + } u_fluid_pressure; + u_fluid_pressure.real = this->fluid_pressure; + *(outbuffer + offset + 0) = (u_fluid_pressure.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_fluid_pressure.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_fluid_pressure.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_fluid_pressure.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_fluid_pressure.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_fluid_pressure.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_fluid_pressure.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_fluid_pressure.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->fluid_pressure); + union { + double real; + uint64_t base; + } u_variance; + u_variance.real = this->variance; + *(outbuffer + offset + 0) = (u_variance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_variance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_variance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_variance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_variance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_variance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_variance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_variance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->variance); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + union { + double real; + uint64_t base; + } u_fluid_pressure; + u_fluid_pressure.base = 0; + u_fluid_pressure.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_fluid_pressure.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_fluid_pressure.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_fluid_pressure.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_fluid_pressure.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_fluid_pressure.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_fluid_pressure.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_fluid_pressure.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->fluid_pressure = u_fluid_pressure.real; + offset += sizeof(this->fluid_pressure); + union { + double real; + uint64_t base; + } u_variance; + u_variance.base = 0; + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->variance = u_variance.real; + offset += sizeof(this->variance); + return offset; + } + + const char * getType(){ return "sensor_msgs/FluidPressure"; }; + const char * getMD5(){ return "804dc5cea1c5306d6a2eb80b9833befe"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/Illuminance.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/Illuminance.h new file mode 100644 index 0000000..d6fbb2c --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/Illuminance.h @@ -0,0 +1,108 @@ +#ifndef _ROS_sensor_msgs_Illuminance_h +#define _ROS_sensor_msgs_Illuminance_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace sensor_msgs +{ + + class Illuminance : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef double _illuminance_type; + _illuminance_type illuminance; + typedef double _variance_type; + _variance_type variance; + + Illuminance(): + header(), + illuminance(0), + variance(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + union { + double real; + uint64_t base; + } u_illuminance; + u_illuminance.real = this->illuminance; + *(outbuffer + offset + 0) = (u_illuminance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_illuminance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_illuminance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_illuminance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_illuminance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_illuminance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_illuminance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_illuminance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->illuminance); + union { + double real; + uint64_t base; + } u_variance; + u_variance.real = this->variance; + *(outbuffer + offset + 0) = (u_variance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_variance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_variance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_variance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_variance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_variance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_variance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_variance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->variance); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + union { + double real; + uint64_t base; + } u_illuminance; + u_illuminance.base = 0; + u_illuminance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_illuminance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_illuminance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_illuminance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_illuminance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_illuminance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_illuminance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_illuminance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->illuminance = u_illuminance.real; + offset += sizeof(this->illuminance); + union { + double real; + uint64_t base; + } u_variance; + u_variance.base = 0; + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->variance = u_variance.real; + offset += sizeof(this->variance); + return offset; + } + + const char * getType(){ return "sensor_msgs/Illuminance"; }; + const char * getMD5(){ return "8cf5febb0952fca9d650c3d11a81a188"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/Image.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/Image.h new file mode 100644 index 0000000..15842a3 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/Image.h @@ -0,0 +1,134 @@ +#ifndef _ROS_sensor_msgs_Image_h +#define _ROS_sensor_msgs_Image_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace sensor_msgs +{ + + class Image : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef uint32_t _height_type; + _height_type height; + typedef uint32_t _width_type; + _width_type width; + typedef const char* _encoding_type; + _encoding_type encoding; + typedef uint8_t _is_bigendian_type; + _is_bigendian_type is_bigendian; + typedef uint32_t _step_type; + _step_type step; + uint32_t data_length; + typedef uint8_t _data_type; + _data_type st_data; + _data_type * data; + + Image(): + header(), + height(0), + width(0), + encoding(""), + is_bigendian(0), + step(0), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->height >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->height >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->height >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->height >> (8 * 3)) & 0xFF; + offset += sizeof(this->height); + *(outbuffer + offset + 0) = (this->width >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->width >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->width >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->width >> (8 * 3)) & 0xFF; + offset += sizeof(this->width); + uint32_t length_encoding = strlen(this->encoding); + varToArr(outbuffer + offset, length_encoding); + offset += 4; + memcpy(outbuffer + offset, this->encoding, length_encoding); + offset += length_encoding; + *(outbuffer + offset + 0) = (this->is_bigendian >> (8 * 0)) & 0xFF; + offset += sizeof(this->is_bigendian); + *(outbuffer + offset + 0) = (this->step >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->step >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->step >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->step >> (8 * 3)) & 0xFF; + offset += sizeof(this->step); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + this->height = ((uint32_t) (*(inbuffer + offset))); + this->height |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->height |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->height |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->height); + this->width = ((uint32_t) (*(inbuffer + offset))); + this->width |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->width |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->width |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->width); + uint32_t length_encoding; + arrToVar(length_encoding, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_encoding; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_encoding-1]=0; + this->encoding = (char *)(inbuffer + offset-1); + offset += length_encoding; + this->is_bigendian = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->is_bigendian); + this->step = ((uint32_t) (*(inbuffer + offset))); + this->step |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->step |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->step |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->step); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (uint8_t*)realloc(this->data, data_lengthT * sizeof(uint8_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + this->st_data = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(uint8_t)); + } + return offset; + } + + const char * getType(){ return "sensor_msgs/Image"; }; + const char * getMD5(){ return "060021388200f6f0f447d0fcd9c64743"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/Imu.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/Imu.h new file mode 100644 index 0000000..c18b583 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/Imu.h @@ -0,0 +1,166 @@ +#ifndef _ROS_sensor_msgs_Imu_h +#define _ROS_sensor_msgs_Imu_h + +#include +#include +#include +#include "../ros/msg.h" +#include "../std_msgs/Header.h" +#include "../geometry_msgs/Quaternion.h" +#include "../geometry_msgs/Vector3.h" + +namespace sensor_msgs +{ + + class Imu : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::Quaternion _orientation_type; + _orientation_type orientation; + double orientation_covariance[9]; + typedef geometry_msgs::Vector3 _angular_velocity_type; + _angular_velocity_type angular_velocity; + double angular_velocity_covariance[9]; + typedef geometry_msgs::Vector3 _linear_acceleration_type; + _linear_acceleration_type linear_acceleration; + double linear_acceleration_covariance[9]; + + Imu(): + header(), + orientation(), + orientation_covariance(), + angular_velocity(), + angular_velocity_covariance(), + linear_acceleration(), + linear_acceleration_covariance() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->orientation.serialize(outbuffer + offset); + for( uint32_t i = 0; i < 9; i++){ + union { + double real; + uint64_t base; + } u_orientation_covariancei; + u_orientation_covariancei.real = this->orientation_covariance[i]; + *(outbuffer + offset + 0) = (u_orientation_covariancei.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_orientation_covariancei.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_orientation_covariancei.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_orientation_covariancei.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_orientation_covariancei.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_orientation_covariancei.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_orientation_covariancei.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_orientation_covariancei.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->orientation_covariance[i]); + } + offset += this->angular_velocity.serialize(outbuffer + offset); + for( uint32_t i = 0; i < 9; i++){ + union { + double real; + uint64_t base; + } u_angular_velocity_covariancei; + u_angular_velocity_covariancei.real = this->angular_velocity_covariance[i]; + *(outbuffer + offset + 0) = (u_angular_velocity_covariancei.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_angular_velocity_covariancei.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_angular_velocity_covariancei.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_angular_velocity_covariancei.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_angular_velocity_covariancei.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_angular_velocity_covariancei.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_angular_velocity_covariancei.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_angular_velocity_covariancei.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->angular_velocity_covariance[i]); + } + offset += this->linear_acceleration.serialize(outbuffer + offset); + for( uint32_t i = 0; i < 9; i++){ + union { + double real; + uint64_t base; + } u_linear_acceleration_covariancei; + u_linear_acceleration_covariancei.real = this->linear_acceleration_covariance[i]; + *(outbuffer + offset + 0) = (u_linear_acceleration_covariancei.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_linear_acceleration_covariancei.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_linear_acceleration_covariancei.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_linear_acceleration_covariancei.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_linear_acceleration_covariancei.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_linear_acceleration_covariancei.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_linear_acceleration_covariancei.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_linear_acceleration_covariancei.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->linear_acceleration_covariance[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->orientation.deserialize(inbuffer + offset); + for( uint32_t i = 0; i < 9; i++){ + union { + double real; + uint64_t base; + } u_orientation_covariancei; + u_orientation_covariancei.base = 0; + u_orientation_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_orientation_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_orientation_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_orientation_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_orientation_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_orientation_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_orientation_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_orientation_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->orientation_covariance[i] = u_orientation_covariancei.real; + offset += sizeof(this->orientation_covariance[i]); + } + offset += this->angular_velocity.deserialize(inbuffer + offset); + for( uint32_t i = 0; i < 9; i++){ + union { + double real; + uint64_t base; + } u_angular_velocity_covariancei; + u_angular_velocity_covariancei.base = 0; + u_angular_velocity_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_angular_velocity_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_angular_velocity_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_angular_velocity_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_angular_velocity_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_angular_velocity_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_angular_velocity_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_angular_velocity_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->angular_velocity_covariance[i] = u_angular_velocity_covariancei.real; + offset += sizeof(this->angular_velocity_covariance[i]); + } + offset += this->linear_acceleration.deserialize(inbuffer + offset); + for( uint32_t i = 0; i < 9; i++){ + union { + double real; + uint64_t base; + } u_linear_acceleration_covariancei; + u_linear_acceleration_covariancei.base = 0; + u_linear_acceleration_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_linear_acceleration_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_linear_acceleration_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_linear_acceleration_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_linear_acceleration_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_linear_acceleration_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_linear_acceleration_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_linear_acceleration_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->linear_acceleration_covariance[i] = u_linear_acceleration_covariancei.real; + offset += sizeof(this->linear_acceleration_covariance[i]); + } + return offset; + } + + const char * getType(){ return "sensor_msgs/Imu"; }; + const char * getMD5(){ return "6a62c6daae103f4ff57a132d6f95cec2"; }; + + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/JointState.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/JointState.h new file mode 100644 index 0000000..6195757 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/JointState.h @@ -0,0 +1,237 @@ +#ifndef _ROS_sensor_msgs_JointState_h +#define _ROS_sensor_msgs_JointState_h + +#include +#include +#include +#include "../ros/msg.h" +#include "../std_msgs/Header.h" + +namespace sensor_msgs +{ + + class JointState : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t name_length; + typedef char* _name_type; + _name_type st_name; + _name_type * name; + uint32_t position_length; + typedef double _position_type; + _position_type st_position; + _position_type * position; + uint32_t velocity_length; + typedef double _velocity_type; + _velocity_type st_velocity; + _velocity_type * velocity; + uint32_t effort_length; + typedef double _effort_type; + _effort_type st_effort; + _effort_type * effort; + + JointState(): + header(), + name_length(0), name(NULL), + position_length(0), position(NULL), + velocity_length(0), velocity(NULL), + effort_length(0), effort(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->name_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->name_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->name_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->name_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->name_length); + for( uint32_t i = 0; i < name_length; i++){ + uint32_t length_namei = strlen(this->name[i]); + varToArr(outbuffer + offset, length_namei); + offset += 4; + memcpy(outbuffer + offset, this->name[i], length_namei); + offset += length_namei; + } + *(outbuffer + offset + 0) = (this->position_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->position_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->position_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->position_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->position_length); + for( uint32_t i = 0; i < position_length; i++){ + union { + double real; + uint64_t base; + } u_positioni; + u_positioni.real = this->position[i]; + *(outbuffer + offset + 0) = (u_positioni.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_positioni.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_positioni.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_positioni.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_positioni.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_positioni.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_positioni.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_positioni.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->position[i]); + } + *(outbuffer + offset + 0) = (this->velocity_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->velocity_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->velocity_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->velocity_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->velocity_length); + for( uint32_t i = 0; i < velocity_length; i++){ + union { + double real; + uint64_t base; + } u_velocityi; + u_velocityi.real = this->velocity[i]; + *(outbuffer + offset + 0) = (u_velocityi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_velocityi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_velocityi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_velocityi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_velocityi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_velocityi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_velocityi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_velocityi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->velocity[i]); + } + *(outbuffer + offset + 0) = (this->effort_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->effort_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->effort_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->effort_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->effort_length); + for( uint32_t i = 0; i < effort_length; i++){ + union { + double real; + uint64_t base; + } u_efforti; + u_efforti.real = this->effort[i]; + *(outbuffer + offset + 0) = (u_efforti.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_efforti.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_efforti.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_efforti.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_efforti.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_efforti.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_efforti.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_efforti.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->effort[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t name_lengthT = ((uint32_t) (*(inbuffer + offset))); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->name_length); + if(name_lengthT > name_length) + this->name = (char**)realloc(this->name, name_lengthT * sizeof(char*)); + name_length = name_lengthT; + for( uint32_t i = 0; i < name_length; i++){ + uint32_t length_st_name; + arrToVar(length_st_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_name-1]=0; + this->st_name = (char *)(inbuffer + offset-1); + offset += length_st_name; + memcpy( &(this->name[i]), &(this->st_name), sizeof(char*)); + } + uint32_t position_lengthT = ((uint32_t) (*(inbuffer + offset))); + position_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + position_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + position_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->position_length); + if(position_lengthT > position_length) + this->position = (double*)realloc(this->position, position_lengthT * sizeof(double)); + position_length = position_lengthT; + for( uint32_t i = 0; i < position_length; i++){ + union { + double real; + uint64_t base; + } u_st_position; + u_st_position.base = 0; + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_position = u_st_position.real; + offset += sizeof(this->st_position); + memcpy( &(this->position[i]), &(this->st_position), sizeof(double)); + } + uint32_t velocity_lengthT = ((uint32_t) (*(inbuffer + offset))); + velocity_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + velocity_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + velocity_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->velocity_length); + if(velocity_lengthT > velocity_length) + this->velocity = (double*)realloc(this->velocity, velocity_lengthT * sizeof(double)); + velocity_length = velocity_lengthT; + for( uint32_t i = 0; i < velocity_length; i++){ + union { + double real; + uint64_t base; + } u_st_velocity; + u_st_velocity.base = 0; + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_velocity = u_st_velocity.real; + offset += sizeof(this->st_velocity); + memcpy( &(this->velocity[i]), &(this->st_velocity), sizeof(double)); + } + uint32_t effort_lengthT = ((uint32_t) (*(inbuffer + offset))); + effort_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + effort_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + effort_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->effort_length); + if(effort_lengthT > effort_length) + this->effort = (double*)realloc(this->effort, effort_lengthT * sizeof(double)); + effort_length = effort_lengthT; + for( uint32_t i = 0; i < effort_length; i++){ + union { + double real; + uint64_t base; + } u_st_effort; + u_st_effort.base = 0; + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_effort = u_st_effort.real; + offset += sizeof(this->st_effort); + memcpy( &(this->effort[i]), &(this->st_effort), sizeof(double)); + } + return offset; + } + + const char * getType(){ return "sensor_msgs/JointState"; }; + const char * getMD5(){ return "3066dcd76a6cfaef579bd0f34173e9fd"; }; + + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/Joy.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/Joy.h new file mode 100644 index 0000000..bd56d41 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/Joy.h @@ -0,0 +1,132 @@ +#ifndef _ROS_sensor_msgs_Joy_h +#define _ROS_sensor_msgs_Joy_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace sensor_msgs +{ + + class Joy : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t axes_length; + typedef float _axes_type; + _axes_type st_axes; + _axes_type * axes; + uint32_t buttons_length; + typedef int32_t _buttons_type; + _buttons_type st_buttons; + _buttons_type * buttons; + + Joy(): + header(), + axes_length(0), axes(NULL), + buttons_length(0), buttons(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->axes_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->axes_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->axes_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->axes_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->axes_length); + for( uint32_t i = 0; i < axes_length; i++){ + union { + float real; + uint32_t base; + } u_axesi; + u_axesi.real = this->axes[i]; + *(outbuffer + offset + 0) = (u_axesi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_axesi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_axesi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_axesi.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->axes[i]); + } + *(outbuffer + offset + 0) = (this->buttons_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->buttons_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->buttons_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->buttons_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->buttons_length); + for( uint32_t i = 0; i < buttons_length; i++){ + union { + int32_t real; + uint32_t base; + } u_buttonsi; + u_buttonsi.real = this->buttons[i]; + *(outbuffer + offset + 0) = (u_buttonsi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_buttonsi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_buttonsi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_buttonsi.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->buttons[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t axes_lengthT = ((uint32_t) (*(inbuffer + offset))); + axes_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + axes_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + axes_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->axes_length); + if(axes_lengthT > axes_length) + this->axes = (float*)realloc(this->axes, axes_lengthT * sizeof(float)); + axes_length = axes_lengthT; + for( uint32_t i = 0; i < axes_length; i++){ + union { + float real; + uint32_t base; + } u_st_axes; + u_st_axes.base = 0; + u_st_axes.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_axes.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_axes.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_axes.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_axes = u_st_axes.real; + offset += sizeof(this->st_axes); + memcpy( &(this->axes[i]), &(this->st_axes), sizeof(float)); + } + uint32_t buttons_lengthT = ((uint32_t) (*(inbuffer + offset))); + buttons_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + buttons_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + buttons_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->buttons_length); + if(buttons_lengthT > buttons_length) + this->buttons = (int32_t*)realloc(this->buttons, buttons_lengthT * sizeof(int32_t)); + buttons_length = buttons_lengthT; + for( uint32_t i = 0; i < buttons_length; i++){ + union { + int32_t real; + uint32_t base; + } u_st_buttons; + u_st_buttons.base = 0; + u_st_buttons.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_buttons.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_buttons.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_buttons.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_buttons = u_st_buttons.real; + offset += sizeof(this->st_buttons); + memcpy( &(this->buttons[i]), &(this->st_buttons), sizeof(int32_t)); + } + return offset; + } + + const char * getType(){ return "sensor_msgs/Joy"; }; + const char * getMD5(){ return "5a9ea5f83505693b71e785041e67a8bb"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/JoyFeedback.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/JoyFeedback.h new file mode 100644 index 0000000..7a12993 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/JoyFeedback.h @@ -0,0 +1,79 @@ +#ifndef _ROS_sensor_msgs_JoyFeedback_h +#define _ROS_sensor_msgs_JoyFeedback_h + +#include +#include +#include +#include "ros/msg.h" + +namespace sensor_msgs +{ + + class JoyFeedback : public ros::Msg + { + public: + typedef uint8_t _type_type; + _type_type type; + typedef uint8_t _id_type; + _id_type id; + typedef float _intensity_type; + _intensity_type intensity; + enum { TYPE_LED = 0 }; + enum { TYPE_RUMBLE = 1 }; + enum { TYPE_BUZZER = 2 }; + + JoyFeedback(): + type(0), + id(0), + intensity(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->type >> (8 * 0)) & 0xFF; + offset += sizeof(this->type); + *(outbuffer + offset + 0) = (this->id >> (8 * 0)) & 0xFF; + offset += sizeof(this->id); + union { + float real; + uint32_t base; + } u_intensity; + u_intensity.real = this->intensity; + *(outbuffer + offset + 0) = (u_intensity.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_intensity.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_intensity.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_intensity.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->intensity); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->type = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->type); + this->id = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->id); + union { + float real; + uint32_t base; + } u_intensity; + u_intensity.base = 0; + u_intensity.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_intensity.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_intensity.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_intensity.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->intensity = u_intensity.real; + offset += sizeof(this->intensity); + return offset; + } + + const char * getType(){ return "sensor_msgs/JoyFeedback"; }; + const char * getMD5(){ return "f4dcd73460360d98f36e55ee7f2e46f1"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/JoyFeedbackArray.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/JoyFeedbackArray.h new file mode 100644 index 0000000..8fe8064 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/JoyFeedbackArray.h @@ -0,0 +1,64 @@ +#ifndef _ROS_sensor_msgs_JoyFeedbackArray_h +#define _ROS_sensor_msgs_JoyFeedbackArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "sensor_msgs/JoyFeedback.h" + +namespace sensor_msgs +{ + + class JoyFeedbackArray : public ros::Msg + { + public: + uint32_t array_length; + typedef sensor_msgs::JoyFeedback _array_type; + _array_type st_array; + _array_type * array; + + JoyFeedbackArray(): + array_length(0), array(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->array_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->array_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->array_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->array_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->array_length); + for( uint32_t i = 0; i < array_length; i++){ + offset += this->array[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t array_lengthT = ((uint32_t) (*(inbuffer + offset))); + array_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + array_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + array_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->array_length); + if(array_lengthT > array_length) + this->array = (sensor_msgs::JoyFeedback*)realloc(this->array, array_lengthT * sizeof(sensor_msgs::JoyFeedback)); + array_length = array_lengthT; + for( uint32_t i = 0; i < array_length; i++){ + offset += this->st_array.deserialize(inbuffer + offset); + memcpy( &(this->array[i]), &(this->st_array), sizeof(sensor_msgs::JoyFeedback)); + } + return offset; + } + + const char * getType(){ return "sensor_msgs/JoyFeedbackArray"; }; + const char * getMD5(){ return "cde5730a895b1fc4dee6f91b754b213d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/LaserEcho.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/LaserEcho.h new file mode 100644 index 0000000..b8f4c49 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/LaserEcho.h @@ -0,0 +1,82 @@ +#ifndef _ROS_sensor_msgs_LaserEcho_h +#define _ROS_sensor_msgs_LaserEcho_h + +#include +#include +#include +#include "ros/msg.h" + +namespace sensor_msgs +{ + + class LaserEcho : public ros::Msg + { + public: + uint32_t echoes_length; + typedef float _echoes_type; + _echoes_type st_echoes; + _echoes_type * echoes; + + LaserEcho(): + echoes_length(0), echoes(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->echoes_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->echoes_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->echoes_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->echoes_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->echoes_length); + for( uint32_t i = 0; i < echoes_length; i++){ + union { + float real; + uint32_t base; + } u_echoesi; + u_echoesi.real = this->echoes[i]; + *(outbuffer + offset + 0) = (u_echoesi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_echoesi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_echoesi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_echoesi.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->echoes[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t echoes_lengthT = ((uint32_t) (*(inbuffer + offset))); + echoes_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + echoes_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + echoes_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->echoes_length); + if(echoes_lengthT > echoes_length) + this->echoes = (float*)realloc(this->echoes, echoes_lengthT * sizeof(float)); + echoes_length = echoes_lengthT; + for( uint32_t i = 0; i < echoes_length; i++){ + union { + float real; + uint32_t base; + } u_st_echoes; + u_st_echoes.base = 0; + u_st_echoes.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_echoes.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_echoes.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_echoes.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_echoes = u_st_echoes.real; + offset += sizeof(this->st_echoes); + memcpy( &(this->echoes[i]), &(this->st_echoes), sizeof(float)); + } + return offset; + } + + const char * getType(){ return "sensor_msgs/LaserEcho"; }; + const char * getMD5(){ return "8bc5ae449b200fba4d552b4225586696"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/LaserScan.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/LaserScan.h new file mode 100644 index 0000000..203e739 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/LaserScan.h @@ -0,0 +1,300 @@ +#ifndef _ROS_sensor_msgs_LaserScan_h +#define _ROS_sensor_msgs_LaserScan_h + +#include +#include +#include +#include "../ros/msg.h" +#include "../std_msgs/Header.h" + +namespace sensor_msgs +{ + + class LaserScan : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef float _angle_min_type; + _angle_min_type angle_min; + typedef float _angle_max_type; + _angle_max_type angle_max; + typedef float _angle_increment_type; + _angle_increment_type angle_increment; + typedef float _time_increment_type; + _time_increment_type time_increment; + typedef float _scan_time_type; + _scan_time_type scan_time; + typedef float _range_min_type; + _range_min_type range_min; + typedef float _range_max_type; + _range_max_type range_max; + uint32_t ranges_length; + typedef float _ranges_type; + _ranges_type st_ranges; + _ranges_type * ranges; + uint32_t intensities_length; + typedef float _intensities_type; + _intensities_type st_intensities; + _intensities_type * intensities; + + LaserScan(): + header(), + angle_min(0), + angle_max(0), + angle_increment(0), + time_increment(0), + scan_time(0), + range_min(0), + range_max(0), + ranges_length(0), ranges(NULL), + intensities_length(0), intensities(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + union { + float real; + uint32_t base; + } u_angle_min; + u_angle_min.real = this->angle_min; + *(outbuffer + offset + 0) = (u_angle_min.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_angle_min.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_angle_min.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_angle_min.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->angle_min); + union { + float real; + uint32_t base; + } u_angle_max; + u_angle_max.real = this->angle_max; + *(outbuffer + offset + 0) = (u_angle_max.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_angle_max.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_angle_max.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_angle_max.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->angle_max); + union { + float real; + uint32_t base; + } u_angle_increment; + u_angle_increment.real = this->angle_increment; + *(outbuffer + offset + 0) = (u_angle_increment.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_angle_increment.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_angle_increment.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_angle_increment.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->angle_increment); + union { + float real; + uint32_t base; + } u_time_increment; + u_time_increment.real = this->time_increment; + *(outbuffer + offset + 0) = (u_time_increment.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_time_increment.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_time_increment.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_time_increment.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->time_increment); + union { + float real; + uint32_t base; + } u_scan_time; + u_scan_time.real = this->scan_time; + *(outbuffer + offset + 0) = (u_scan_time.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_scan_time.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_scan_time.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_scan_time.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->scan_time); + union { + float real; + uint32_t base; + } u_range_min; + u_range_min.real = this->range_min; + *(outbuffer + offset + 0) = (u_range_min.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_range_min.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_range_min.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_range_min.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->range_min); + union { + float real; + uint32_t base; + } u_range_max; + u_range_max.real = this->range_max; + *(outbuffer + offset + 0) = (u_range_max.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_range_max.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_range_max.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_range_max.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->range_max); + *(outbuffer + offset + 0) = (this->ranges_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->ranges_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->ranges_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->ranges_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->ranges_length); + for( uint32_t i = 0; i < ranges_length; i++){ + union { + float real; + uint32_t base; + } u_rangesi; + u_rangesi.real = this->ranges[i]; + *(outbuffer + offset + 0) = (u_rangesi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_rangesi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_rangesi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_rangesi.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->ranges[i]); + } + *(outbuffer + offset + 0) = (this->intensities_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->intensities_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->intensities_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->intensities_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->intensities_length); + for( uint32_t i = 0; i < intensities_length; i++){ + union { + float real; + uint32_t base; + } u_intensitiesi; + u_intensitiesi.real = this->intensities[i]; + *(outbuffer + offset + 0) = (u_intensitiesi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_intensitiesi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_intensitiesi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_intensitiesi.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->intensities[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + union { + float real; + uint32_t base; + } u_angle_min; + u_angle_min.base = 0; + u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->angle_min = u_angle_min.real; + offset += sizeof(this->angle_min); + union { + float real; + uint32_t base; + } u_angle_max; + u_angle_max.base = 0; + u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->angle_max = u_angle_max.real; + offset += sizeof(this->angle_max); + union { + float real; + uint32_t base; + } u_angle_increment; + u_angle_increment.base = 0; + u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->angle_increment = u_angle_increment.real; + offset += sizeof(this->angle_increment); + union { + float real; + uint32_t base; + } u_time_increment; + u_time_increment.base = 0; + u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->time_increment = u_time_increment.real; + offset += sizeof(this->time_increment); + union { + float real; + uint32_t base; + } u_scan_time; + u_scan_time.base = 0; + u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->scan_time = u_scan_time.real; + offset += sizeof(this->scan_time); + union { + float real; + uint32_t base; + } u_range_min; + u_range_min.base = 0; + u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->range_min = u_range_min.real; + offset += sizeof(this->range_min); + union { + float real; + uint32_t base; + } u_range_max; + u_range_max.base = 0; + u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->range_max = u_range_max.real; + offset += sizeof(this->range_max); + uint32_t ranges_lengthT = ((uint32_t) (*(inbuffer + offset))); + ranges_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + ranges_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + ranges_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->ranges_length); + if(ranges_lengthT > ranges_length) + this->ranges = (float*)realloc(this->ranges, ranges_lengthT * sizeof(float)); + ranges_length = ranges_lengthT; + for( uint32_t i = 0; i < ranges_length; i++){ + union { + float real; + uint32_t base; + } u_st_ranges; + u_st_ranges.base = 0; + u_st_ranges.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_ranges.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_ranges.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_ranges.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_ranges = u_st_ranges.real; + offset += sizeof(this->st_ranges); + memcpy( &(this->ranges[i]), &(this->st_ranges), sizeof(float)); + } + uint32_t intensities_lengthT = ((uint32_t) (*(inbuffer + offset))); + intensities_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + intensities_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + intensities_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->intensities_length); + if(intensities_lengthT > intensities_length) + this->intensities = (float*)realloc(this->intensities, intensities_lengthT * sizeof(float)); + intensities_length = intensities_lengthT; + for( uint32_t i = 0; i < intensities_length; i++){ + union { + float real; + uint32_t base; + } u_st_intensities; + u_st_intensities.base = 0; + u_st_intensities.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_intensities.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_intensities.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_intensities.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_intensities = u_st_intensities.real; + offset += sizeof(this->st_intensities); + memcpy( &(this->intensities[i]), &(this->st_intensities), sizeof(float)); + } + return offset; + } + + const char * getType(){ return "sensor_msgs/LaserScan"; }; + const char * getMD5(){ return "90c7ef2dc6895d81024acba2ac42f369"; }; + + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/MagneticField.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/MagneticField.h new file mode 100644 index 0000000..69a7344 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/MagneticField.h @@ -0,0 +1,85 @@ +#ifndef _ROS_sensor_msgs_MagneticField_h +#define _ROS_sensor_msgs_MagneticField_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Vector3.h" + +namespace sensor_msgs +{ + + class MagneticField : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::Vector3 _magnetic_field_type; + _magnetic_field_type magnetic_field; + double magnetic_field_covariance[9]; + + MagneticField(): + header(), + magnetic_field(), + magnetic_field_covariance() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->magnetic_field.serialize(outbuffer + offset); + for( uint32_t i = 0; i < 9; i++){ + union { + double real; + uint64_t base; + } u_magnetic_field_covariancei; + u_magnetic_field_covariancei.real = this->magnetic_field_covariance[i]; + *(outbuffer + offset + 0) = (u_magnetic_field_covariancei.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_magnetic_field_covariancei.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_magnetic_field_covariancei.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_magnetic_field_covariancei.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_magnetic_field_covariancei.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_magnetic_field_covariancei.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_magnetic_field_covariancei.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_magnetic_field_covariancei.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->magnetic_field_covariance[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->magnetic_field.deserialize(inbuffer + offset); + for( uint32_t i = 0; i < 9; i++){ + union { + double real; + uint64_t base; + } u_magnetic_field_covariancei; + u_magnetic_field_covariancei.base = 0; + u_magnetic_field_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_magnetic_field_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_magnetic_field_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_magnetic_field_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_magnetic_field_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_magnetic_field_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_magnetic_field_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_magnetic_field_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->magnetic_field_covariance[i] = u_magnetic_field_covariancei.real; + offset += sizeof(this->magnetic_field_covariance[i]); + } + return offset; + } + + const char * getType(){ return "sensor_msgs/MagneticField"; }; + const char * getMD5(){ return "2f3b0b43eed0c9501de0fa3ff89a45aa"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/MultiDOFJointState.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/MultiDOFJointState.h new file mode 100644 index 0000000..ed07797 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/MultiDOFJointState.h @@ -0,0 +1,159 @@ +#ifndef _ROS_sensor_msgs_MultiDOFJointState_h +#define _ROS_sensor_msgs_MultiDOFJointState_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Transform.h" +#include "geometry_msgs/Twist.h" +#include "geometry_msgs/Wrench.h" + +namespace sensor_msgs +{ + + class MultiDOFJointState : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t joint_names_length; + typedef char* _joint_names_type; + _joint_names_type st_joint_names; + _joint_names_type * joint_names; + uint32_t transforms_length; + typedef geometry_msgs::Transform _transforms_type; + _transforms_type st_transforms; + _transforms_type * transforms; + uint32_t twist_length; + typedef geometry_msgs::Twist _twist_type; + _twist_type st_twist; + _twist_type * twist; + uint32_t wrench_length; + typedef geometry_msgs::Wrench _wrench_type; + _wrench_type st_wrench; + _wrench_type * wrench; + + MultiDOFJointState(): + header(), + joint_names_length(0), joint_names(NULL), + transforms_length(0), transforms(NULL), + twist_length(0), twist(NULL), + wrench_length(0), wrench(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->joint_names_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->joint_names_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->joint_names_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->joint_names_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->joint_names_length); + for( uint32_t i = 0; i < joint_names_length; i++){ + uint32_t length_joint_namesi = strlen(this->joint_names[i]); + varToArr(outbuffer + offset, length_joint_namesi); + offset += 4; + memcpy(outbuffer + offset, this->joint_names[i], length_joint_namesi); + offset += length_joint_namesi; + } + *(outbuffer + offset + 0) = (this->transforms_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->transforms_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->transforms_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->transforms_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->transforms_length); + for( uint32_t i = 0; i < transforms_length; i++){ + offset += this->transforms[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->twist_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->twist_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->twist_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->twist_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->twist_length); + for( uint32_t i = 0; i < twist_length; i++){ + offset += this->twist[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->wrench_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->wrench_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->wrench_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->wrench_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->wrench_length); + for( uint32_t i = 0; i < wrench_length; i++){ + offset += this->wrench[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t joint_names_lengthT = ((uint32_t) (*(inbuffer + offset))); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->joint_names_length); + if(joint_names_lengthT > joint_names_length) + this->joint_names = (char**)realloc(this->joint_names, joint_names_lengthT * sizeof(char*)); + joint_names_length = joint_names_lengthT; + for( uint32_t i = 0; i < joint_names_length; i++){ + uint32_t length_st_joint_names; + arrToVar(length_st_joint_names, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_joint_names; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_joint_names-1]=0; + this->st_joint_names = (char *)(inbuffer + offset-1); + offset += length_st_joint_names; + memcpy( &(this->joint_names[i]), &(this->st_joint_names), sizeof(char*)); + } + uint32_t transforms_lengthT = ((uint32_t) (*(inbuffer + offset))); + transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->transforms_length); + if(transforms_lengthT > transforms_length) + this->transforms = (geometry_msgs::Transform*)realloc(this->transforms, transforms_lengthT * sizeof(geometry_msgs::Transform)); + transforms_length = transforms_lengthT; + for( uint32_t i = 0; i < transforms_length; i++){ + offset += this->st_transforms.deserialize(inbuffer + offset); + memcpy( &(this->transforms[i]), &(this->st_transforms), sizeof(geometry_msgs::Transform)); + } + uint32_t twist_lengthT = ((uint32_t) (*(inbuffer + offset))); + twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->twist_length); + if(twist_lengthT > twist_length) + this->twist = (geometry_msgs::Twist*)realloc(this->twist, twist_lengthT * sizeof(geometry_msgs::Twist)); + twist_length = twist_lengthT; + for( uint32_t i = 0; i < twist_length; i++){ + offset += this->st_twist.deserialize(inbuffer + offset); + memcpy( &(this->twist[i]), &(this->st_twist), sizeof(geometry_msgs::Twist)); + } + uint32_t wrench_lengthT = ((uint32_t) (*(inbuffer + offset))); + wrench_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + wrench_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + wrench_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->wrench_length); + if(wrench_lengthT > wrench_length) + this->wrench = (geometry_msgs::Wrench*)realloc(this->wrench, wrench_lengthT * sizeof(geometry_msgs::Wrench)); + wrench_length = wrench_lengthT; + for( uint32_t i = 0; i < wrench_length; i++){ + offset += this->st_wrench.deserialize(inbuffer + offset); + memcpy( &(this->wrench[i]), &(this->st_wrench), sizeof(geometry_msgs::Wrench)); + } + return offset; + } + + const char * getType(){ return "sensor_msgs/MultiDOFJointState"; }; + const char * getMD5(){ return "690f272f0640d2631c305eeb8301e59d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/MultiEchoLaserScan.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/MultiEchoLaserScan.h new file mode 100644 index 0000000..35af2b2 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/MultiEchoLaserScan.h @@ -0,0 +1,263 @@ +#ifndef _ROS_sensor_msgs_MultiEchoLaserScan_h +#define _ROS_sensor_msgs_MultiEchoLaserScan_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "sensor_msgs/LaserEcho.h" + +namespace sensor_msgs +{ + + class MultiEchoLaserScan : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef float _angle_min_type; + _angle_min_type angle_min; + typedef float _angle_max_type; + _angle_max_type angle_max; + typedef float _angle_increment_type; + _angle_increment_type angle_increment; + typedef float _time_increment_type; + _time_increment_type time_increment; + typedef float _scan_time_type; + _scan_time_type scan_time; + typedef float _range_min_type; + _range_min_type range_min; + typedef float _range_max_type; + _range_max_type range_max; + uint32_t ranges_length; + typedef sensor_msgs::LaserEcho _ranges_type; + _ranges_type st_ranges; + _ranges_type * ranges; + uint32_t intensities_length; + typedef sensor_msgs::LaserEcho _intensities_type; + _intensities_type st_intensities; + _intensities_type * intensities; + + MultiEchoLaserScan(): + header(), + angle_min(0), + angle_max(0), + angle_increment(0), + time_increment(0), + scan_time(0), + range_min(0), + range_max(0), + ranges_length(0), ranges(NULL), + intensities_length(0), intensities(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + union { + float real; + uint32_t base; + } u_angle_min; + u_angle_min.real = this->angle_min; + *(outbuffer + offset + 0) = (u_angle_min.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_angle_min.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_angle_min.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_angle_min.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->angle_min); + union { + float real; + uint32_t base; + } u_angle_max; + u_angle_max.real = this->angle_max; + *(outbuffer + offset + 0) = (u_angle_max.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_angle_max.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_angle_max.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_angle_max.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->angle_max); + union { + float real; + uint32_t base; + } u_angle_increment; + u_angle_increment.real = this->angle_increment; + *(outbuffer + offset + 0) = (u_angle_increment.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_angle_increment.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_angle_increment.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_angle_increment.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->angle_increment); + union { + float real; + uint32_t base; + } u_time_increment; + u_time_increment.real = this->time_increment; + *(outbuffer + offset + 0) = (u_time_increment.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_time_increment.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_time_increment.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_time_increment.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->time_increment); + union { + float real; + uint32_t base; + } u_scan_time; + u_scan_time.real = this->scan_time; + *(outbuffer + offset + 0) = (u_scan_time.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_scan_time.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_scan_time.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_scan_time.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->scan_time); + union { + float real; + uint32_t base; + } u_range_min; + u_range_min.real = this->range_min; + *(outbuffer + offset + 0) = (u_range_min.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_range_min.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_range_min.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_range_min.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->range_min); + union { + float real; + uint32_t base; + } u_range_max; + u_range_max.real = this->range_max; + *(outbuffer + offset + 0) = (u_range_max.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_range_max.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_range_max.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_range_max.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->range_max); + *(outbuffer + offset + 0) = (this->ranges_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->ranges_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->ranges_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->ranges_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->ranges_length); + for( uint32_t i = 0; i < ranges_length; i++){ + offset += this->ranges[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->intensities_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->intensities_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->intensities_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->intensities_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->intensities_length); + for( uint32_t i = 0; i < intensities_length; i++){ + offset += this->intensities[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + union { + float real; + uint32_t base; + } u_angle_min; + u_angle_min.base = 0; + u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->angle_min = u_angle_min.real; + offset += sizeof(this->angle_min); + union { + float real; + uint32_t base; + } u_angle_max; + u_angle_max.base = 0; + u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->angle_max = u_angle_max.real; + offset += sizeof(this->angle_max); + union { + float real; + uint32_t base; + } u_angle_increment; + u_angle_increment.base = 0; + u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->angle_increment = u_angle_increment.real; + offset += sizeof(this->angle_increment); + union { + float real; + uint32_t base; + } u_time_increment; + u_time_increment.base = 0; + u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->time_increment = u_time_increment.real; + offset += sizeof(this->time_increment); + union { + float real; + uint32_t base; + } u_scan_time; + u_scan_time.base = 0; + u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->scan_time = u_scan_time.real; + offset += sizeof(this->scan_time); + union { + float real; + uint32_t base; + } u_range_min; + u_range_min.base = 0; + u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->range_min = u_range_min.real; + offset += sizeof(this->range_min); + union { + float real; + uint32_t base; + } u_range_max; + u_range_max.base = 0; + u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->range_max = u_range_max.real; + offset += sizeof(this->range_max); + uint32_t ranges_lengthT = ((uint32_t) (*(inbuffer + offset))); + ranges_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + ranges_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + ranges_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->ranges_length); + if(ranges_lengthT > ranges_length) + this->ranges = (sensor_msgs::LaserEcho*)realloc(this->ranges, ranges_lengthT * sizeof(sensor_msgs::LaserEcho)); + ranges_length = ranges_lengthT; + for( uint32_t i = 0; i < ranges_length; i++){ + offset += this->st_ranges.deserialize(inbuffer + offset); + memcpy( &(this->ranges[i]), &(this->st_ranges), sizeof(sensor_msgs::LaserEcho)); + } + uint32_t intensities_lengthT = ((uint32_t) (*(inbuffer + offset))); + intensities_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + intensities_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + intensities_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->intensities_length); + if(intensities_lengthT > intensities_length) + this->intensities = (sensor_msgs::LaserEcho*)realloc(this->intensities, intensities_lengthT * sizeof(sensor_msgs::LaserEcho)); + intensities_length = intensities_lengthT; + for( uint32_t i = 0; i < intensities_length; i++){ + offset += this->st_intensities.deserialize(inbuffer + offset); + memcpy( &(this->intensities[i]), &(this->st_intensities), sizeof(sensor_msgs::LaserEcho)); + } + return offset; + } + + const char * getType(){ return "sensor_msgs/MultiEchoLaserScan"; }; + const char * getMD5(){ return "6fefb0c6da89d7c8abe4b339f5c2f8fb"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/NavSatFix.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/NavSatFix.h new file mode 100644 index 0000000..9edc7c1 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/NavSatFix.h @@ -0,0 +1,192 @@ +#ifndef _ROS_sensor_msgs_NavSatFix_h +#define _ROS_sensor_msgs_NavSatFix_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "sensor_msgs/NavSatStatus.h" + +namespace sensor_msgs +{ + + class NavSatFix : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef sensor_msgs::NavSatStatus _status_type; + _status_type status; + typedef double _latitude_type; + _latitude_type latitude; + typedef double _longitude_type; + _longitude_type longitude; + typedef double _altitude_type; + _altitude_type altitude; + double position_covariance[9]; + typedef uint8_t _position_covariance_type_type; + _position_covariance_type_type position_covariance_type; + enum { COVARIANCE_TYPE_UNKNOWN = 0 }; + enum { COVARIANCE_TYPE_APPROXIMATED = 1 }; + enum { COVARIANCE_TYPE_DIAGONAL_KNOWN = 2 }; + enum { COVARIANCE_TYPE_KNOWN = 3 }; + + NavSatFix(): + header(), + status(), + latitude(0), + longitude(0), + altitude(0), + position_covariance(), + position_covariance_type(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + union { + double real; + uint64_t base; + } u_latitude; + u_latitude.real = this->latitude; + *(outbuffer + offset + 0) = (u_latitude.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_latitude.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_latitude.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_latitude.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_latitude.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_latitude.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_latitude.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_latitude.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->latitude); + union { + double real; + uint64_t base; + } u_longitude; + u_longitude.real = this->longitude; + *(outbuffer + offset + 0) = (u_longitude.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_longitude.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_longitude.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_longitude.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_longitude.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_longitude.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_longitude.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_longitude.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->longitude); + union { + double real; + uint64_t base; + } u_altitude; + u_altitude.real = this->altitude; + *(outbuffer + offset + 0) = (u_altitude.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_altitude.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_altitude.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_altitude.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_altitude.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_altitude.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_altitude.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_altitude.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->altitude); + for( uint32_t i = 0; i < 9; i++){ + union { + double real; + uint64_t base; + } u_position_covariancei; + u_position_covariancei.real = this->position_covariance[i]; + *(outbuffer + offset + 0) = (u_position_covariancei.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_position_covariancei.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_position_covariancei.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_position_covariancei.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_position_covariancei.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_position_covariancei.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_position_covariancei.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_position_covariancei.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->position_covariance[i]); + } + *(outbuffer + offset + 0) = (this->position_covariance_type >> (8 * 0)) & 0xFF; + offset += sizeof(this->position_covariance_type); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + union { + double real; + uint64_t base; + } u_latitude; + u_latitude.base = 0; + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->latitude = u_latitude.real; + offset += sizeof(this->latitude); + union { + double real; + uint64_t base; + } u_longitude; + u_longitude.base = 0; + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->longitude = u_longitude.real; + offset += sizeof(this->longitude); + union { + double real; + uint64_t base; + } u_altitude; + u_altitude.base = 0; + u_altitude.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_altitude.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_altitude.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_altitude.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_altitude.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_altitude.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_altitude.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_altitude.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->altitude = u_altitude.real; + offset += sizeof(this->altitude); + for( uint32_t i = 0; i < 9; i++){ + union { + double real; + uint64_t base; + } u_position_covariancei; + u_position_covariancei.base = 0; + u_position_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_position_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_position_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_position_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_position_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_position_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_position_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_position_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->position_covariance[i] = u_position_covariancei.real; + offset += sizeof(this->position_covariance[i]); + } + this->position_covariance_type = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->position_covariance_type); + return offset; + } + + const char * getType(){ return "sensor_msgs/NavSatFix"; }; + const char * getMD5(){ return "2d3a8cd499b9b4a0249fb98fd05cfa48"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/NavSatStatus.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/NavSatStatus.h new file mode 100644 index 0000000..79d8abd --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/NavSatStatus.h @@ -0,0 +1,73 @@ +#ifndef _ROS_sensor_msgs_NavSatStatus_h +#define _ROS_sensor_msgs_NavSatStatus_h + +#include +#include +#include +#include "ros/msg.h" + +namespace sensor_msgs +{ + + class NavSatStatus : public ros::Msg + { + public: + typedef int8_t _status_type; + _status_type status; + typedef uint16_t _service_type; + _service_type service; + enum { STATUS_NO_FIX = -1 }; + enum { STATUS_FIX = 0 }; + enum { STATUS_SBAS_FIX = 1 }; + enum { STATUS_GBAS_FIX = 2 }; + enum { SERVICE_GPS = 1 }; + enum { SERVICE_GLONASS = 2 }; + enum { SERVICE_COMPASS = 4 }; + enum { SERVICE_GALILEO = 8 }; + + NavSatStatus(): + status(0), + service(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int8_t real; + uint8_t base; + } u_status; + u_status.real = this->status; + *(outbuffer + offset + 0) = (u_status.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->status); + *(outbuffer + offset + 0) = (this->service >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->service >> (8 * 1)) & 0xFF; + offset += sizeof(this->service); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int8_t real; + uint8_t base; + } u_status; + u_status.base = 0; + u_status.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->status = u_status.real; + offset += sizeof(this->status); + this->service = ((uint16_t) (*(inbuffer + offset))); + this->service |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->service); + return offset; + } + + const char * getType(){ return "sensor_msgs/NavSatStatus"; }; + const char * getMD5(){ return "331cdbddfa4bc96ffc3b9ad98900a54c"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/PointCloud.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/PointCloud.h new file mode 100644 index 0000000..f56e8d7 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/PointCloud.h @@ -0,0 +1,96 @@ +#ifndef _ROS_sensor_msgs_PointCloud_h +#define _ROS_sensor_msgs_PointCloud_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Point32.h" +#include "sensor_msgs/ChannelFloat32.h" + +namespace sensor_msgs +{ + + class PointCloud : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t points_length; + typedef geometry_msgs::Point32 _points_type; + _points_type st_points; + _points_type * points; + uint32_t channels_length; + typedef sensor_msgs::ChannelFloat32 _channels_type; + _channels_type st_channels; + _channels_type * channels; + + PointCloud(): + header(), + points_length(0), points(NULL), + channels_length(0), channels(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->points_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->points_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->points_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->points_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->points_length); + for( uint32_t i = 0; i < points_length; i++){ + offset += this->points[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->channels_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->channels_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->channels_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->channels_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->channels_length); + for( uint32_t i = 0; i < channels_length; i++){ + offset += this->channels[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t points_lengthT = ((uint32_t) (*(inbuffer + offset))); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->points_length); + if(points_lengthT > points_length) + this->points = (geometry_msgs::Point32*)realloc(this->points, points_lengthT * sizeof(geometry_msgs::Point32)); + points_length = points_lengthT; + for( uint32_t i = 0; i < points_length; i++){ + offset += this->st_points.deserialize(inbuffer + offset); + memcpy( &(this->points[i]), &(this->st_points), sizeof(geometry_msgs::Point32)); + } + uint32_t channels_lengthT = ((uint32_t) (*(inbuffer + offset))); + channels_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + channels_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + channels_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->channels_length); + if(channels_lengthT > channels_length) + this->channels = (sensor_msgs::ChannelFloat32*)realloc(this->channels, channels_lengthT * sizeof(sensor_msgs::ChannelFloat32)); + channels_length = channels_lengthT; + for( uint32_t i = 0; i < channels_length; i++){ + offset += this->st_channels.deserialize(inbuffer + offset); + memcpy( &(this->channels[i]), &(this->st_channels), sizeof(sensor_msgs::ChannelFloat32)); + } + return offset; + } + + const char * getType(){ return "sensor_msgs/PointCloud"; }; + const char * getMD5(){ return "d8e9c3f5afbdd8a130fd1d2763945fca"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/PointCloud2.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/PointCloud2.h new file mode 100644 index 0000000..c545de1 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/PointCloud2.h @@ -0,0 +1,185 @@ +#ifndef _ROS_sensor_msgs_PointCloud2_h +#define _ROS_sensor_msgs_PointCloud2_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "sensor_msgs/PointField.h" + +namespace sensor_msgs +{ + + class PointCloud2 : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef uint32_t _height_type; + _height_type height; + typedef uint32_t _width_type; + _width_type width; + uint32_t fields_length; + typedef sensor_msgs::PointField _fields_type; + _fields_type st_fields; + _fields_type * fields; + typedef bool _is_bigendian_type; + _is_bigendian_type is_bigendian; + typedef uint32_t _point_step_type; + _point_step_type point_step; + typedef uint32_t _row_step_type; + _row_step_type row_step; + uint32_t data_length; + typedef uint8_t _data_type; + _data_type st_data; + _data_type * data; + typedef bool _is_dense_type; + _is_dense_type is_dense; + + PointCloud2(): + header(), + height(0), + width(0), + fields_length(0), fields(NULL), + is_bigendian(0), + point_step(0), + row_step(0), + data_length(0), data(NULL), + is_dense(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->height >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->height >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->height >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->height >> (8 * 3)) & 0xFF; + offset += sizeof(this->height); + *(outbuffer + offset + 0) = (this->width >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->width >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->width >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->width >> (8 * 3)) & 0xFF; + offset += sizeof(this->width); + *(outbuffer + offset + 0) = (this->fields_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->fields_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->fields_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->fields_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->fields_length); + for( uint32_t i = 0; i < fields_length; i++){ + offset += this->fields[i].serialize(outbuffer + offset); + } + union { + bool real; + uint8_t base; + } u_is_bigendian; + u_is_bigendian.real = this->is_bigendian; + *(outbuffer + offset + 0) = (u_is_bigendian.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->is_bigendian); + *(outbuffer + offset + 0) = (this->point_step >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->point_step >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->point_step >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->point_step >> (8 * 3)) & 0xFF; + offset += sizeof(this->point_step); + *(outbuffer + offset + 0) = (this->row_step >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->row_step >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->row_step >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->row_step >> (8 * 3)) & 0xFF; + offset += sizeof(this->row_step); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF; + offset += sizeof(this->data[i]); + } + union { + bool real; + uint8_t base; + } u_is_dense; + u_is_dense.real = this->is_dense; + *(outbuffer + offset + 0) = (u_is_dense.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->is_dense); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + this->height = ((uint32_t) (*(inbuffer + offset))); + this->height |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->height |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->height |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->height); + this->width = ((uint32_t) (*(inbuffer + offset))); + this->width |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->width |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->width |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->width); + uint32_t fields_lengthT = ((uint32_t) (*(inbuffer + offset))); + fields_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + fields_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + fields_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->fields_length); + if(fields_lengthT > fields_length) + this->fields = (sensor_msgs::PointField*)realloc(this->fields, fields_lengthT * sizeof(sensor_msgs::PointField)); + fields_length = fields_lengthT; + for( uint32_t i = 0; i < fields_length; i++){ + offset += this->st_fields.deserialize(inbuffer + offset); + memcpy( &(this->fields[i]), &(this->st_fields), sizeof(sensor_msgs::PointField)); + } + union { + bool real; + uint8_t base; + } u_is_bigendian; + u_is_bigendian.base = 0; + u_is_bigendian.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->is_bigendian = u_is_bigendian.real; + offset += sizeof(this->is_bigendian); + this->point_step = ((uint32_t) (*(inbuffer + offset))); + this->point_step |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->point_step |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->point_step |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->point_step); + this->row_step = ((uint32_t) (*(inbuffer + offset))); + this->row_step |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->row_step |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->row_step |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->row_step); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (uint8_t*)realloc(this->data, data_lengthT * sizeof(uint8_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + this->st_data = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(uint8_t)); + } + union { + bool real; + uint8_t base; + } u_is_dense; + u_is_dense.base = 0; + u_is_dense.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->is_dense = u_is_dense.real; + offset += sizeof(this->is_dense); + return offset; + } + + const char * getType(){ return "sensor_msgs/PointCloud2"; }; + const char * getMD5(){ return "1158d486dd51d683ce2f1be655c3c181"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/PointField.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/PointField.h new file mode 100644 index 0000000..7ad0cc4 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/PointField.h @@ -0,0 +1,96 @@ +#ifndef _ROS_sensor_msgs_PointField_h +#define _ROS_sensor_msgs_PointField_h + +#include +#include +#include +#include "ros/msg.h" + +namespace sensor_msgs +{ + + class PointField : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef uint32_t _offset_type; + _offset_type offset; + typedef uint8_t _datatype_type; + _datatype_type datatype; + typedef uint32_t _count_type; + _count_type count; + enum { INT8 = 1 }; + enum { UINT8 = 2 }; + enum { INT16 = 3 }; + enum { UINT16 = 4 }; + enum { INT32 = 5 }; + enum { UINT32 = 6 }; + enum { FLOAT32 = 7 }; + enum { FLOAT64 = 8 }; + + PointField(): + name(""), + offset(0), + datatype(0), + count(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + *(outbuffer + offset + 0) = (this->offset >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->offset >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->offset >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->offset >> (8 * 3)) & 0xFF; + offset += sizeof(this->offset); + *(outbuffer + offset + 0) = (this->datatype >> (8 * 0)) & 0xFF; + offset += sizeof(this->datatype); + *(outbuffer + offset + 0) = (this->count >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->count >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->count >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->count >> (8 * 3)) & 0xFF; + offset += sizeof(this->count); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + this->offset = ((uint32_t) (*(inbuffer + offset))); + this->offset |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->offset |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->offset |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->offset); + this->datatype = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->datatype); + this->count = ((uint32_t) (*(inbuffer + offset))); + this->count |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->count |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->count |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->count); + return offset; + } + + const char * getType(){ return "sensor_msgs/PointField"; }; + const char * getMD5(){ return "268eacb2962780ceac86cbd17e328150"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/Range.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/Range.h new file mode 100644 index 0000000..bfa827e --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/Range.h @@ -0,0 +1,149 @@ +#ifndef _ROS_sensor_msgs_Range_h +#define _ROS_sensor_msgs_Range_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace sensor_msgs +{ + + class Range : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef uint8_t _radiation_type_type; + _radiation_type_type radiation_type; + typedef float _field_of_view_type; + _field_of_view_type field_of_view; + typedef float _min_range_type; + _min_range_type min_range; + typedef float _max_range_type; + _max_range_type max_range; + typedef float _range_type; + _range_type range; + enum { ULTRASOUND = 0 }; + enum { INFRARED = 1 }; + + Range(): + header(), + radiation_type(0), + field_of_view(0), + min_range(0), + max_range(0), + range(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->radiation_type >> (8 * 0)) & 0xFF; + offset += sizeof(this->radiation_type); + union { + float real; + uint32_t base; + } u_field_of_view; + u_field_of_view.real = this->field_of_view; + *(outbuffer + offset + 0) = (u_field_of_view.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_field_of_view.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_field_of_view.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_field_of_view.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->field_of_view); + union { + float real; + uint32_t base; + } u_min_range; + u_min_range.real = this->min_range; + *(outbuffer + offset + 0) = (u_min_range.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_min_range.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_min_range.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_min_range.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->min_range); + union { + float real; + uint32_t base; + } u_max_range; + u_max_range.real = this->max_range; + *(outbuffer + offset + 0) = (u_max_range.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_max_range.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_max_range.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_max_range.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->max_range); + union { + float real; + uint32_t base; + } u_range; + u_range.real = this->range; + *(outbuffer + offset + 0) = (u_range.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_range.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_range.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_range.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->range); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + this->radiation_type = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->radiation_type); + union { + float real; + uint32_t base; + } u_field_of_view; + u_field_of_view.base = 0; + u_field_of_view.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_field_of_view.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_field_of_view.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_field_of_view.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->field_of_view = u_field_of_view.real; + offset += sizeof(this->field_of_view); + union { + float real; + uint32_t base; + } u_min_range; + u_min_range.base = 0; + u_min_range.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_min_range.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_min_range.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_min_range.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->min_range = u_min_range.real; + offset += sizeof(this->min_range); + union { + float real; + uint32_t base; + } u_max_range; + u_max_range.base = 0; + u_max_range.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_max_range.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_max_range.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_max_range.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->max_range = u_max_range.real; + offset += sizeof(this->max_range); + union { + float real; + uint32_t base; + } u_range; + u_range.base = 0; + u_range.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_range.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_range.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_range.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->range = u_range.real; + offset += sizeof(this->range); + return offset; + } + + const char * getType(){ return "sensor_msgs/Range"; }; + const char * getMD5(){ return "c005c34273dc426c67a020a87bc24148"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/RegionOfInterest.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/RegionOfInterest.h new file mode 100644 index 0000000..ea0c663 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/RegionOfInterest.h @@ -0,0 +1,108 @@ +#ifndef _ROS_sensor_msgs_RegionOfInterest_h +#define _ROS_sensor_msgs_RegionOfInterest_h + +#include +#include +#include +#include "ros/msg.h" + +namespace sensor_msgs +{ + + class RegionOfInterest : public ros::Msg + { + public: + typedef uint32_t _x_offset_type; + _x_offset_type x_offset; + typedef uint32_t _y_offset_type; + _y_offset_type y_offset; + typedef uint32_t _height_type; + _height_type height; + typedef uint32_t _width_type; + _width_type width; + typedef bool _do_rectify_type; + _do_rectify_type do_rectify; + + RegionOfInterest(): + x_offset(0), + y_offset(0), + height(0), + width(0), + do_rectify(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->x_offset >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->x_offset >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->x_offset >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->x_offset >> (8 * 3)) & 0xFF; + offset += sizeof(this->x_offset); + *(outbuffer + offset + 0) = (this->y_offset >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->y_offset >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->y_offset >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->y_offset >> (8 * 3)) & 0xFF; + offset += sizeof(this->y_offset); + *(outbuffer + offset + 0) = (this->height >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->height >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->height >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->height >> (8 * 3)) & 0xFF; + offset += sizeof(this->height); + *(outbuffer + offset + 0) = (this->width >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->width >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->width >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->width >> (8 * 3)) & 0xFF; + offset += sizeof(this->width); + union { + bool real; + uint8_t base; + } u_do_rectify; + u_do_rectify.real = this->do_rectify; + *(outbuffer + offset + 0) = (u_do_rectify.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->do_rectify); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->x_offset = ((uint32_t) (*(inbuffer + offset))); + this->x_offset |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->x_offset |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->x_offset |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->x_offset); + this->y_offset = ((uint32_t) (*(inbuffer + offset))); + this->y_offset |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->y_offset |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->y_offset |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->y_offset); + this->height = ((uint32_t) (*(inbuffer + offset))); + this->height |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->height |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->height |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->height); + this->width = ((uint32_t) (*(inbuffer + offset))); + this->width |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->width |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->width |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->width); + union { + bool real; + uint8_t base; + } u_do_rectify; + u_do_rectify.base = 0; + u_do_rectify.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->do_rectify = u_do_rectify.real; + offset += sizeof(this->do_rectify); + return offset; + } + + const char * getType(){ return "sensor_msgs/RegionOfInterest"; }; + const char * getMD5(){ return "bdb633039d588fcccb441a4d43ccfe09"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/RelativeHumidity.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/RelativeHumidity.h new file mode 100644 index 0000000..a596f88 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/RelativeHumidity.h @@ -0,0 +1,108 @@ +#ifndef _ROS_sensor_msgs_RelativeHumidity_h +#define _ROS_sensor_msgs_RelativeHumidity_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace sensor_msgs +{ + + class RelativeHumidity : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef double _relative_humidity_type; + _relative_humidity_type relative_humidity; + typedef double _variance_type; + _variance_type variance; + + RelativeHumidity(): + header(), + relative_humidity(0), + variance(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + union { + double real; + uint64_t base; + } u_relative_humidity; + u_relative_humidity.real = this->relative_humidity; + *(outbuffer + offset + 0) = (u_relative_humidity.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_relative_humidity.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_relative_humidity.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_relative_humidity.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_relative_humidity.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_relative_humidity.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_relative_humidity.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_relative_humidity.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->relative_humidity); + union { + double real; + uint64_t base; + } u_variance; + u_variance.real = this->variance; + *(outbuffer + offset + 0) = (u_variance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_variance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_variance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_variance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_variance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_variance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_variance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_variance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->variance); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + union { + double real; + uint64_t base; + } u_relative_humidity; + u_relative_humidity.base = 0; + u_relative_humidity.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_relative_humidity.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_relative_humidity.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_relative_humidity.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_relative_humidity.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_relative_humidity.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_relative_humidity.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_relative_humidity.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->relative_humidity = u_relative_humidity.real; + offset += sizeof(this->relative_humidity); + union { + double real; + uint64_t base; + } u_variance; + u_variance.base = 0; + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->variance = u_variance.real; + offset += sizeof(this->variance); + return offset; + } + + const char * getType(){ return "sensor_msgs/RelativeHumidity"; }; + const char * getMD5(){ return "8730015b05955b7e992ce29a2678d90f"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/SetCameraInfo.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/SetCameraInfo.h new file mode 100644 index 0000000..3f838fb --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/SetCameraInfo.h @@ -0,0 +1,111 @@ +#ifndef _ROS_SERVICE_SetCameraInfo_h +#define _ROS_SERVICE_SetCameraInfo_h +#include +#include +#include +#include "ros/msg.h" +#include "sensor_msgs/CameraInfo.h" + +namespace sensor_msgs +{ + +static const char SETCAMERAINFO[] = "sensor_msgs/SetCameraInfo"; + + class SetCameraInfoRequest : public ros::Msg + { + public: + typedef sensor_msgs::CameraInfo _camera_info_type; + _camera_info_type camera_info; + + SetCameraInfoRequest(): + camera_info() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->camera_info.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->camera_info.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return SETCAMERAINFO; }; + const char * getMD5(){ return "ee34be01fdeee563d0d99cd594d5581d"; }; + + }; + + class SetCameraInfoResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + SetCameraInfoResponse(): + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return SETCAMERAINFO; }; + const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; }; + + }; + + class SetCameraInfo { + public: + typedef SetCameraInfoRequest Request; + typedef SetCameraInfoResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/Temperature.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/Temperature.h new file mode 100644 index 0000000..4308487 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/Temperature.h @@ -0,0 +1,108 @@ +#ifndef _ROS_sensor_msgs_Temperature_h +#define _ROS_sensor_msgs_Temperature_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace sensor_msgs +{ + + class Temperature : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef double _temperature_type; + _temperature_type temperature; + typedef double _variance_type; + _variance_type variance; + + Temperature(): + header(), + temperature(0), + variance(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + union { + double real; + uint64_t base; + } u_temperature; + u_temperature.real = this->temperature; + *(outbuffer + offset + 0) = (u_temperature.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_temperature.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_temperature.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_temperature.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_temperature.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_temperature.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_temperature.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_temperature.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->temperature); + union { + double real; + uint64_t base; + } u_variance; + u_variance.real = this->variance; + *(outbuffer + offset + 0) = (u_variance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_variance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_variance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_variance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_variance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_variance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_variance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_variance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->variance); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + union { + double real; + uint64_t base; + } u_temperature; + u_temperature.base = 0; + u_temperature.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_temperature.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_temperature.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_temperature.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_temperature.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_temperature.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_temperature.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_temperature.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->temperature = u_temperature.real; + offset += sizeof(this->temperature); + union { + double real; + uint64_t base; + } u_variance; + u_variance.base = 0; + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->variance = u_variance.real; + offset += sizeof(this->variance); + return offset; + } + + const char * getType(){ return "sensor_msgs/Temperature"; }; + const char * getMD5(){ return "ff71b307acdbe7c871a5a6d7ed359100"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/TimeReference.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/TimeReference.h new file mode 100644 index 0000000..ed81b28 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/sensor_msgs/TimeReference.h @@ -0,0 +1,85 @@ +#ifndef _ROS_sensor_msgs_TimeReference_h +#define _ROS_sensor_msgs_TimeReference_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "ros/time.h" + +namespace sensor_msgs +{ + + class TimeReference : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef ros::Time _time_ref_type; + _time_ref_type time_ref; + typedef const char* _source_type; + _source_type source; + + TimeReference(): + header(), + time_ref(), + source("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->time_ref.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->time_ref.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->time_ref.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->time_ref.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->time_ref.sec); + *(outbuffer + offset + 0) = (this->time_ref.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->time_ref.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->time_ref.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->time_ref.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->time_ref.nsec); + uint32_t length_source = strlen(this->source); + varToArr(outbuffer + offset, length_source); + offset += 4; + memcpy(outbuffer + offset, this->source, length_source); + offset += length_source; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + this->time_ref.sec = ((uint32_t) (*(inbuffer + offset))); + this->time_ref.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->time_ref.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->time_ref.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->time_ref.sec); + this->time_ref.nsec = ((uint32_t) (*(inbuffer + offset))); + this->time_ref.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->time_ref.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->time_ref.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->time_ref.nsec); + uint32_t length_source; + arrToVar(length_source, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_source; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_source-1]=0; + this->source = (char *)(inbuffer + offset-1); + offset += length_source; + return offset; + } + + const char * getType(){ return "sensor_msgs/TimeReference"; }; + const char * getMD5(){ return "fded64a0265108ba86c3d38fb11c0c16"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/shape_msgs/Mesh.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/shape_msgs/Mesh.h new file mode 100644 index 0000000..3599765 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/shape_msgs/Mesh.h @@ -0,0 +1,90 @@ +#ifndef _ROS_shape_msgs_Mesh_h +#define _ROS_shape_msgs_Mesh_h + +#include +#include +#include +#include "ros/msg.h" +#include "shape_msgs/MeshTriangle.h" +#include "geometry_msgs/Point.h" + +namespace shape_msgs +{ + + class Mesh : public ros::Msg + { + public: + uint32_t triangles_length; + typedef shape_msgs::MeshTriangle _triangles_type; + _triangles_type st_triangles; + _triangles_type * triangles; + uint32_t vertices_length; + typedef geometry_msgs::Point _vertices_type; + _vertices_type st_vertices; + _vertices_type * vertices; + + Mesh(): + triangles_length(0), triangles(NULL), + vertices_length(0), vertices(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->triangles_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->triangles_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->triangles_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->triangles_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->triangles_length); + for( uint32_t i = 0; i < triangles_length; i++){ + offset += this->triangles[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->vertices_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->vertices_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->vertices_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->vertices_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->vertices_length); + for( uint32_t i = 0; i < vertices_length; i++){ + offset += this->vertices[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t triangles_lengthT = ((uint32_t) (*(inbuffer + offset))); + triangles_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + triangles_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + triangles_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->triangles_length); + if(triangles_lengthT > triangles_length) + this->triangles = (shape_msgs::MeshTriangle*)realloc(this->triangles, triangles_lengthT * sizeof(shape_msgs::MeshTriangle)); + triangles_length = triangles_lengthT; + for( uint32_t i = 0; i < triangles_length; i++){ + offset += this->st_triangles.deserialize(inbuffer + offset); + memcpy( &(this->triangles[i]), &(this->st_triangles), sizeof(shape_msgs::MeshTriangle)); + } + uint32_t vertices_lengthT = ((uint32_t) (*(inbuffer + offset))); + vertices_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + vertices_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + vertices_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->vertices_length); + if(vertices_lengthT > vertices_length) + this->vertices = (geometry_msgs::Point*)realloc(this->vertices, vertices_lengthT * sizeof(geometry_msgs::Point)); + vertices_length = vertices_lengthT; + for( uint32_t i = 0; i < vertices_length; i++){ + offset += this->st_vertices.deserialize(inbuffer + offset); + memcpy( &(this->vertices[i]), &(this->st_vertices), sizeof(geometry_msgs::Point)); + } + return offset; + } + + const char * getType(){ return "shape_msgs/Mesh"; }; + const char * getMD5(){ return "1ffdae9486cd3316a121c578b47a85cc"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/shape_msgs/MeshTriangle.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/shape_msgs/MeshTriangle.h new file mode 100644 index 0000000..b4aad17 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/shape_msgs/MeshTriangle.h @@ -0,0 +1,54 @@ +#ifndef _ROS_shape_msgs_MeshTriangle_h +#define _ROS_shape_msgs_MeshTriangle_h + +#include +#include +#include +#include "ros/msg.h" + +namespace shape_msgs +{ + + class MeshTriangle : public ros::Msg + { + public: + uint32_t vertex_indices[3]; + + MeshTriangle(): + vertex_indices() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + for( uint32_t i = 0; i < 3; i++){ + *(outbuffer + offset + 0) = (this->vertex_indices[i] >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->vertex_indices[i] >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->vertex_indices[i] >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->vertex_indices[i] >> (8 * 3)) & 0xFF; + offset += sizeof(this->vertex_indices[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + for( uint32_t i = 0; i < 3; i++){ + this->vertex_indices[i] = ((uint32_t) (*(inbuffer + offset))); + this->vertex_indices[i] |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->vertex_indices[i] |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->vertex_indices[i] |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->vertex_indices[i]); + } + return offset; + } + + const char * getType(){ return "shape_msgs/MeshTriangle"; }; + const char * getMD5(){ return "23688b2e6d2de3d32fe8af104a903253"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/shape_msgs/Plane.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/shape_msgs/Plane.h new file mode 100644 index 0000000..6f4c332 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/shape_msgs/Plane.h @@ -0,0 +1,73 @@ +#ifndef _ROS_shape_msgs_Plane_h +#define _ROS_shape_msgs_Plane_h + +#include +#include +#include +#include "ros/msg.h" + +namespace shape_msgs +{ + + class Plane : public ros::Msg + { + public: + double coef[4]; + + Plane(): + coef() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + for( uint32_t i = 0; i < 4; i++){ + union { + double real; + uint64_t base; + } u_coefi; + u_coefi.real = this->coef[i]; + *(outbuffer + offset + 0) = (u_coefi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_coefi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_coefi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_coefi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_coefi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_coefi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_coefi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_coefi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->coef[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + for( uint32_t i = 0; i < 4; i++){ + union { + double real; + uint64_t base; + } u_coefi; + u_coefi.base = 0; + u_coefi.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_coefi.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_coefi.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_coefi.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_coefi.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_coefi.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_coefi.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_coefi.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->coef[i] = u_coefi.real; + offset += sizeof(this->coef[i]); + } + return offset; + } + + const char * getType(){ return "shape_msgs/Plane"; }; + const char * getMD5(){ return "2c1b92ed8f31492f8e73f6a4a44ca796"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/shape_msgs/SolidPrimitive.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/shape_msgs/SolidPrimitive.h new file mode 100644 index 0000000..4751ad8 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/shape_msgs/SolidPrimitive.h @@ -0,0 +1,109 @@ +#ifndef _ROS_shape_msgs_SolidPrimitive_h +#define _ROS_shape_msgs_SolidPrimitive_h + +#include +#include +#include +#include "ros/msg.h" + +namespace shape_msgs +{ + + class SolidPrimitive : public ros::Msg + { + public: + typedef uint8_t _type_type; + _type_type type; + uint32_t dimensions_length; + typedef double _dimensions_type; + _dimensions_type st_dimensions; + _dimensions_type * dimensions; + enum { BOX = 1 }; + enum { SPHERE = 2 }; + enum { CYLINDER = 3 }; + enum { CONE = 4 }; + enum { BOX_X = 0 }; + enum { BOX_Y = 1 }; + enum { BOX_Z = 2 }; + enum { SPHERE_RADIUS = 0 }; + enum { CYLINDER_HEIGHT = 0 }; + enum { CYLINDER_RADIUS = 1 }; + enum { CONE_HEIGHT = 0 }; + enum { CONE_RADIUS = 1 }; + + SolidPrimitive(): + type(0), + dimensions_length(0), dimensions(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->type >> (8 * 0)) & 0xFF; + offset += sizeof(this->type); + *(outbuffer + offset + 0) = (this->dimensions_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->dimensions_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->dimensions_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->dimensions_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->dimensions_length); + for( uint32_t i = 0; i < dimensions_length; i++){ + union { + double real; + uint64_t base; + } u_dimensionsi; + u_dimensionsi.real = this->dimensions[i]; + *(outbuffer + offset + 0) = (u_dimensionsi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_dimensionsi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_dimensionsi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_dimensionsi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_dimensionsi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_dimensionsi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_dimensionsi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_dimensionsi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->dimensions[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->type = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->type); + uint32_t dimensions_lengthT = ((uint32_t) (*(inbuffer + offset))); + dimensions_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + dimensions_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + dimensions_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->dimensions_length); + if(dimensions_lengthT > dimensions_length) + this->dimensions = (double*)realloc(this->dimensions, dimensions_lengthT * sizeof(double)); + dimensions_length = dimensions_lengthT; + for( uint32_t i = 0; i < dimensions_length; i++){ + union { + double real; + uint64_t base; + } u_st_dimensions; + u_st_dimensions.base = 0; + u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_dimensions = u_st_dimensions.real; + offset += sizeof(this->st_dimensions); + memcpy( &(this->dimensions[i]), &(this->st_dimensions), sizeof(double)); + } + return offset; + } + + const char * getType(){ return "shape_msgs/SolidPrimitive"; }; + const char * getMD5(){ return "d8f8cbc74c5ff283fca29569ccefb45d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/smach_msgs/SmachContainerInitialStatusCmd.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/smach_msgs/SmachContainerInitialStatusCmd.h new file mode 100644 index 0000000..bd1e131 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/smach_msgs/SmachContainerInitialStatusCmd.h @@ -0,0 +1,109 @@ +#ifndef _ROS_smach_msgs_SmachContainerInitialStatusCmd_h +#define _ROS_smach_msgs_SmachContainerInitialStatusCmd_h + +#include +#include +#include +#include "ros/msg.h" + +namespace smach_msgs +{ + + class SmachContainerInitialStatusCmd : public ros::Msg + { + public: + typedef const char* _path_type; + _path_type path; + uint32_t initial_states_length; + typedef char* _initial_states_type; + _initial_states_type st_initial_states; + _initial_states_type * initial_states; + typedef const char* _local_data_type; + _local_data_type local_data; + + SmachContainerInitialStatusCmd(): + path(""), + initial_states_length(0), initial_states(NULL), + local_data("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_path = strlen(this->path); + varToArr(outbuffer + offset, length_path); + offset += 4; + memcpy(outbuffer + offset, this->path, length_path); + offset += length_path; + *(outbuffer + offset + 0) = (this->initial_states_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->initial_states_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->initial_states_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->initial_states_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->initial_states_length); + for( uint32_t i = 0; i < initial_states_length; i++){ + uint32_t length_initial_statesi = strlen(this->initial_states[i]); + varToArr(outbuffer + offset, length_initial_statesi); + offset += 4; + memcpy(outbuffer + offset, this->initial_states[i], length_initial_statesi); + offset += length_initial_statesi; + } + uint32_t length_local_data = strlen(this->local_data); + varToArr(outbuffer + offset, length_local_data); + offset += 4; + memcpy(outbuffer + offset, this->local_data, length_local_data); + offset += length_local_data; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_path; + arrToVar(length_path, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_path; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_path-1]=0; + this->path = (char *)(inbuffer + offset-1); + offset += length_path; + uint32_t initial_states_lengthT = ((uint32_t) (*(inbuffer + offset))); + initial_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + initial_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + initial_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->initial_states_length); + if(initial_states_lengthT > initial_states_length) + this->initial_states = (char**)realloc(this->initial_states, initial_states_lengthT * sizeof(char*)); + initial_states_length = initial_states_lengthT; + for( uint32_t i = 0; i < initial_states_length; i++){ + uint32_t length_st_initial_states; + arrToVar(length_st_initial_states, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_initial_states; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_initial_states-1]=0; + this->st_initial_states = (char *)(inbuffer + offset-1); + offset += length_st_initial_states; + memcpy( &(this->initial_states[i]), &(this->st_initial_states), sizeof(char*)); + } + uint32_t length_local_data; + arrToVar(length_local_data, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_local_data; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_local_data-1]=0; + this->local_data = (char *)(inbuffer + offset-1); + offset += length_local_data; + return offset; + } + + const char * getType(){ return "smach_msgs/SmachContainerInitialStatusCmd"; }; + const char * getMD5(){ return "45f8cf31fc29b829db77f23001f788d6"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/smach_msgs/SmachContainerStatus.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/smach_msgs/SmachContainerStatus.h new file mode 100644 index 0000000..8c54da3 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/smach_msgs/SmachContainerStatus.h @@ -0,0 +1,169 @@ +#ifndef _ROS_smach_msgs_SmachContainerStatus_h +#define _ROS_smach_msgs_SmachContainerStatus_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace smach_msgs +{ + + class SmachContainerStatus : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef const char* _path_type; + _path_type path; + uint32_t initial_states_length; + typedef char* _initial_states_type; + _initial_states_type st_initial_states; + _initial_states_type * initial_states; + uint32_t active_states_length; + typedef char* _active_states_type; + _active_states_type st_active_states; + _active_states_type * active_states; + typedef const char* _local_data_type; + _local_data_type local_data; + typedef const char* _info_type; + _info_type info; + + SmachContainerStatus(): + header(), + path(""), + initial_states_length(0), initial_states(NULL), + active_states_length(0), active_states(NULL), + local_data(""), + info("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + uint32_t length_path = strlen(this->path); + varToArr(outbuffer + offset, length_path); + offset += 4; + memcpy(outbuffer + offset, this->path, length_path); + offset += length_path; + *(outbuffer + offset + 0) = (this->initial_states_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->initial_states_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->initial_states_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->initial_states_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->initial_states_length); + for( uint32_t i = 0; i < initial_states_length; i++){ + uint32_t length_initial_statesi = strlen(this->initial_states[i]); + varToArr(outbuffer + offset, length_initial_statesi); + offset += 4; + memcpy(outbuffer + offset, this->initial_states[i], length_initial_statesi); + offset += length_initial_statesi; + } + *(outbuffer + offset + 0) = (this->active_states_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->active_states_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->active_states_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->active_states_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->active_states_length); + for( uint32_t i = 0; i < active_states_length; i++){ + uint32_t length_active_statesi = strlen(this->active_states[i]); + varToArr(outbuffer + offset, length_active_statesi); + offset += 4; + memcpy(outbuffer + offset, this->active_states[i], length_active_statesi); + offset += length_active_statesi; + } + uint32_t length_local_data = strlen(this->local_data); + varToArr(outbuffer + offset, length_local_data); + offset += 4; + memcpy(outbuffer + offset, this->local_data, length_local_data); + offset += length_local_data; + uint32_t length_info = strlen(this->info); + varToArr(outbuffer + offset, length_info); + offset += 4; + memcpy(outbuffer + offset, this->info, length_info); + offset += length_info; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t length_path; + arrToVar(length_path, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_path; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_path-1]=0; + this->path = (char *)(inbuffer + offset-1); + offset += length_path; + uint32_t initial_states_lengthT = ((uint32_t) (*(inbuffer + offset))); + initial_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + initial_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + initial_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->initial_states_length); + if(initial_states_lengthT > initial_states_length) + this->initial_states = (char**)realloc(this->initial_states, initial_states_lengthT * sizeof(char*)); + initial_states_length = initial_states_lengthT; + for( uint32_t i = 0; i < initial_states_length; i++){ + uint32_t length_st_initial_states; + arrToVar(length_st_initial_states, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_initial_states; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_initial_states-1]=0; + this->st_initial_states = (char *)(inbuffer + offset-1); + offset += length_st_initial_states; + memcpy( &(this->initial_states[i]), &(this->st_initial_states), sizeof(char*)); + } + uint32_t active_states_lengthT = ((uint32_t) (*(inbuffer + offset))); + active_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + active_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + active_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->active_states_length); + if(active_states_lengthT > active_states_length) + this->active_states = (char**)realloc(this->active_states, active_states_lengthT * sizeof(char*)); + active_states_length = active_states_lengthT; + for( uint32_t i = 0; i < active_states_length; i++){ + uint32_t length_st_active_states; + arrToVar(length_st_active_states, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_active_states; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_active_states-1]=0; + this->st_active_states = (char *)(inbuffer + offset-1); + offset += length_st_active_states; + memcpy( &(this->active_states[i]), &(this->st_active_states), sizeof(char*)); + } + uint32_t length_local_data; + arrToVar(length_local_data, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_local_data; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_local_data-1]=0; + this->local_data = (char *)(inbuffer + offset-1); + offset += length_local_data; + uint32_t length_info; + arrToVar(length_info, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_info; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_info-1]=0; + this->info = (char *)(inbuffer + offset-1); + offset += length_info; + return offset; + } + + const char * getType(){ return "smach_msgs/SmachContainerStatus"; }; + const char * getMD5(){ return "5ba2bb79ac19e3842d562a191f2a675b"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/smach_msgs/SmachContainerStructure.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/smach_msgs/SmachContainerStructure.h new file mode 100644 index 0000000..935b7e1 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/smach_msgs/SmachContainerStructure.h @@ -0,0 +1,246 @@ +#ifndef _ROS_smach_msgs_SmachContainerStructure_h +#define _ROS_smach_msgs_SmachContainerStructure_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace smach_msgs +{ + + class SmachContainerStructure : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef const char* _path_type; + _path_type path; + uint32_t children_length; + typedef char* _children_type; + _children_type st_children; + _children_type * children; + uint32_t internal_outcomes_length; + typedef char* _internal_outcomes_type; + _internal_outcomes_type st_internal_outcomes; + _internal_outcomes_type * internal_outcomes; + uint32_t outcomes_from_length; + typedef char* _outcomes_from_type; + _outcomes_from_type st_outcomes_from; + _outcomes_from_type * outcomes_from; + uint32_t outcomes_to_length; + typedef char* _outcomes_to_type; + _outcomes_to_type st_outcomes_to; + _outcomes_to_type * outcomes_to; + uint32_t container_outcomes_length; + typedef char* _container_outcomes_type; + _container_outcomes_type st_container_outcomes; + _container_outcomes_type * container_outcomes; + + SmachContainerStructure(): + header(), + path(""), + children_length(0), children(NULL), + internal_outcomes_length(0), internal_outcomes(NULL), + outcomes_from_length(0), outcomes_from(NULL), + outcomes_to_length(0), outcomes_to(NULL), + container_outcomes_length(0), container_outcomes(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + uint32_t length_path = strlen(this->path); + varToArr(outbuffer + offset, length_path); + offset += 4; + memcpy(outbuffer + offset, this->path, length_path); + offset += length_path; + *(outbuffer + offset + 0) = (this->children_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->children_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->children_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->children_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->children_length); + for( uint32_t i = 0; i < children_length; i++){ + uint32_t length_childreni = strlen(this->children[i]); + varToArr(outbuffer + offset, length_childreni); + offset += 4; + memcpy(outbuffer + offset, this->children[i], length_childreni); + offset += length_childreni; + } + *(outbuffer + offset + 0) = (this->internal_outcomes_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->internal_outcomes_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->internal_outcomes_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->internal_outcomes_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->internal_outcomes_length); + for( uint32_t i = 0; i < internal_outcomes_length; i++){ + uint32_t length_internal_outcomesi = strlen(this->internal_outcomes[i]); + varToArr(outbuffer + offset, length_internal_outcomesi); + offset += 4; + memcpy(outbuffer + offset, this->internal_outcomes[i], length_internal_outcomesi); + offset += length_internal_outcomesi; + } + *(outbuffer + offset + 0) = (this->outcomes_from_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->outcomes_from_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->outcomes_from_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->outcomes_from_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->outcomes_from_length); + for( uint32_t i = 0; i < outcomes_from_length; i++){ + uint32_t length_outcomes_fromi = strlen(this->outcomes_from[i]); + varToArr(outbuffer + offset, length_outcomes_fromi); + offset += 4; + memcpy(outbuffer + offset, this->outcomes_from[i], length_outcomes_fromi); + offset += length_outcomes_fromi; + } + *(outbuffer + offset + 0) = (this->outcomes_to_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->outcomes_to_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->outcomes_to_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->outcomes_to_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->outcomes_to_length); + for( uint32_t i = 0; i < outcomes_to_length; i++){ + uint32_t length_outcomes_toi = strlen(this->outcomes_to[i]); + varToArr(outbuffer + offset, length_outcomes_toi); + offset += 4; + memcpy(outbuffer + offset, this->outcomes_to[i], length_outcomes_toi); + offset += length_outcomes_toi; + } + *(outbuffer + offset + 0) = (this->container_outcomes_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->container_outcomes_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->container_outcomes_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->container_outcomes_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->container_outcomes_length); + for( uint32_t i = 0; i < container_outcomes_length; i++){ + uint32_t length_container_outcomesi = strlen(this->container_outcomes[i]); + varToArr(outbuffer + offset, length_container_outcomesi); + offset += 4; + memcpy(outbuffer + offset, this->container_outcomes[i], length_container_outcomesi); + offset += length_container_outcomesi; + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t length_path; + arrToVar(length_path, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_path; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_path-1]=0; + this->path = (char *)(inbuffer + offset-1); + offset += length_path; + uint32_t children_lengthT = ((uint32_t) (*(inbuffer + offset))); + children_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + children_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + children_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->children_length); + if(children_lengthT > children_length) + this->children = (char**)realloc(this->children, children_lengthT * sizeof(char*)); + children_length = children_lengthT; + for( uint32_t i = 0; i < children_length; i++){ + uint32_t length_st_children; + arrToVar(length_st_children, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_children; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_children-1]=0; + this->st_children = (char *)(inbuffer + offset-1); + offset += length_st_children; + memcpy( &(this->children[i]), &(this->st_children), sizeof(char*)); + } + uint32_t internal_outcomes_lengthT = ((uint32_t) (*(inbuffer + offset))); + internal_outcomes_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + internal_outcomes_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + internal_outcomes_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->internal_outcomes_length); + if(internal_outcomes_lengthT > internal_outcomes_length) + this->internal_outcomes = (char**)realloc(this->internal_outcomes, internal_outcomes_lengthT * sizeof(char*)); + internal_outcomes_length = internal_outcomes_lengthT; + for( uint32_t i = 0; i < internal_outcomes_length; i++){ + uint32_t length_st_internal_outcomes; + arrToVar(length_st_internal_outcomes, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_internal_outcomes; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_internal_outcomes-1]=0; + this->st_internal_outcomes = (char *)(inbuffer + offset-1); + offset += length_st_internal_outcomes; + memcpy( &(this->internal_outcomes[i]), &(this->st_internal_outcomes), sizeof(char*)); + } + uint32_t outcomes_from_lengthT = ((uint32_t) (*(inbuffer + offset))); + outcomes_from_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + outcomes_from_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + outcomes_from_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->outcomes_from_length); + if(outcomes_from_lengthT > outcomes_from_length) + this->outcomes_from = (char**)realloc(this->outcomes_from, outcomes_from_lengthT * sizeof(char*)); + outcomes_from_length = outcomes_from_lengthT; + for( uint32_t i = 0; i < outcomes_from_length; i++){ + uint32_t length_st_outcomes_from; + arrToVar(length_st_outcomes_from, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_outcomes_from; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_outcomes_from-1]=0; + this->st_outcomes_from = (char *)(inbuffer + offset-1); + offset += length_st_outcomes_from; + memcpy( &(this->outcomes_from[i]), &(this->st_outcomes_from), sizeof(char*)); + } + uint32_t outcomes_to_lengthT = ((uint32_t) (*(inbuffer + offset))); + outcomes_to_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + outcomes_to_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + outcomes_to_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->outcomes_to_length); + if(outcomes_to_lengthT > outcomes_to_length) + this->outcomes_to = (char**)realloc(this->outcomes_to, outcomes_to_lengthT * sizeof(char*)); + outcomes_to_length = outcomes_to_lengthT; + for( uint32_t i = 0; i < outcomes_to_length; i++){ + uint32_t length_st_outcomes_to; + arrToVar(length_st_outcomes_to, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_outcomes_to; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_outcomes_to-1]=0; + this->st_outcomes_to = (char *)(inbuffer + offset-1); + offset += length_st_outcomes_to; + memcpy( &(this->outcomes_to[i]), &(this->st_outcomes_to), sizeof(char*)); + } + uint32_t container_outcomes_lengthT = ((uint32_t) (*(inbuffer + offset))); + container_outcomes_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + container_outcomes_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + container_outcomes_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->container_outcomes_length); + if(container_outcomes_lengthT > container_outcomes_length) + this->container_outcomes = (char**)realloc(this->container_outcomes, container_outcomes_lengthT * sizeof(char*)); + container_outcomes_length = container_outcomes_lengthT; + for( uint32_t i = 0; i < container_outcomes_length; i++){ + uint32_t length_st_container_outcomes; + arrToVar(length_st_container_outcomes, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_container_outcomes; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_container_outcomes-1]=0; + this->st_container_outcomes = (char *)(inbuffer + offset-1); + offset += length_st_container_outcomes; + memcpy( &(this->container_outcomes[i]), &(this->st_container_outcomes), sizeof(char*)); + } + return offset; + } + + const char * getType(){ return "smach_msgs/SmachContainerStructure"; }; + const char * getMD5(){ return "3d3d1e0d0f99779ee9e58101a5dcf7ea"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/statistics_msgs/Stats1D.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/statistics_msgs/Stats1D.h new file mode 100644 index 0000000..9b3b256 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/statistics_msgs/Stats1D.h @@ -0,0 +1,198 @@ +#ifndef _ROS_statistics_msgs_Stats1D_h +#define _ROS_statistics_msgs_Stats1D_h + +#include +#include +#include +#include "ros/msg.h" + +namespace statistics_msgs +{ + + class Stats1D : public ros::Msg + { + public: + typedef double _min_type; + _min_type min; + typedef double _max_type; + _max_type max; + typedef double _mean_type; + _mean_type mean; + typedef double _variance_type; + _variance_type variance; + typedef int64_t _N_type; + _N_type N; + + Stats1D(): + min(0), + max(0), + mean(0), + variance(0), + N(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_min; + u_min.real = this->min; + *(outbuffer + offset + 0) = (u_min.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_min.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_min.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_min.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_min.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_min.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_min.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_min.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->min); + union { + double real; + uint64_t base; + } u_max; + u_max.real = this->max; + *(outbuffer + offset + 0) = (u_max.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_max.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_max.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_max.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_max.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_max.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_max.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_max.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->max); + union { + double real; + uint64_t base; + } u_mean; + u_mean.real = this->mean; + *(outbuffer + offset + 0) = (u_mean.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_mean.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_mean.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_mean.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_mean.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_mean.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_mean.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_mean.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->mean); + union { + double real; + uint64_t base; + } u_variance; + u_variance.real = this->variance; + *(outbuffer + offset + 0) = (u_variance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_variance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_variance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_variance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_variance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_variance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_variance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_variance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->variance); + union { + int64_t real; + uint64_t base; + } u_N; + u_N.real = this->N; + *(outbuffer + offset + 0) = (u_N.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_N.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_N.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_N.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_N.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_N.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_N.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_N.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->N); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_min; + u_min.base = 0; + u_min.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_min.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_min.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_min.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_min.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_min.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_min.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_min.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->min = u_min.real; + offset += sizeof(this->min); + union { + double real; + uint64_t base; + } u_max; + u_max.base = 0; + u_max.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_max.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_max.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_max.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_max.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_max.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_max.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_max.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->max = u_max.real; + offset += sizeof(this->max); + union { + double real; + uint64_t base; + } u_mean; + u_mean.base = 0; + u_mean.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_mean.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_mean.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_mean.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_mean.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_mean.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_mean.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_mean.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->mean = u_mean.real; + offset += sizeof(this->mean); + union { + double real; + uint64_t base; + } u_variance; + u_variance.base = 0; + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->variance = u_variance.real; + offset += sizeof(this->variance); + union { + int64_t real; + uint64_t base; + } u_N; + u_N.base = 0; + u_N.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_N.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_N.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_N.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_N.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_N.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_N.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_N.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->N = u_N.real; + offset += sizeof(this->N); + return offset; + } + + const char * getType(){ return "statistics_msgs/Stats1D"; }; + const char * getMD5(){ return "5e29efbcd70d63a82b5ddfac24a5bc4b"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Bool.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Bool.h new file mode 100644 index 0000000..6641dd0 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Bool.h @@ -0,0 +1,56 @@ +#ifndef _ROS_std_msgs_Bool_h +#define _ROS_std_msgs_Bool_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class Bool : public ros::Msg + { + public: + typedef bool _data_type; + _data_type data; + + Bool(): + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_data; + u_data.real = this->data; + *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_data; + u_data.base = 0; + u_data.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->data = u_data.real; + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return "std_msgs/Bool"; }; + const char * getMD5(){ return "8b94c1b53db61fb6aed406028ad6332a"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Byte.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Byte.h new file mode 100644 index 0000000..bf81f6f --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Byte.h @@ -0,0 +1,56 @@ +#ifndef _ROS_std_msgs_Byte_h +#define _ROS_std_msgs_Byte_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class Byte : public ros::Msg + { + public: + typedef int8_t _data_type; + _data_type data; + + Byte(): + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int8_t real; + uint8_t base; + } u_data; + u_data.real = this->data; + *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int8_t real; + uint8_t base; + } u_data; + u_data.base = 0; + u_data.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->data = u_data.real; + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return "std_msgs/Byte"; }; + const char * getMD5(){ return "ad736a2e8818154c487bb80fe42ce43b"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/ByteMultiArray.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/ByteMultiArray.h new file mode 100644 index 0000000..bf3f8b4 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/ByteMultiArray.h @@ -0,0 +1,82 @@ +#ifndef _ROS_std_msgs_ByteMultiArray_h +#define _ROS_std_msgs_ByteMultiArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/MultiArrayLayout.h" + +namespace std_msgs +{ + + class ByteMultiArray : public ros::Msg + { + public: + typedef std_msgs::MultiArrayLayout _layout_type; + _layout_type layout; + uint32_t data_length; + typedef int8_t _data_type; + _data_type st_data; + _data_type * data; + + ByteMultiArray(): + layout(), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->layout.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + union { + int8_t real; + uint8_t base; + } u_datai; + u_datai.real = this->data[i]; + *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->layout.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (int8_t*)realloc(this->data, data_lengthT * sizeof(int8_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + union { + int8_t real; + uint8_t base; + } u_st_data; + u_st_data.base = 0; + u_st_data.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->st_data = u_st_data.real; + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(int8_t)); + } + return offset; + } + + const char * getType(){ return "std_msgs/ByteMultiArray"; }; + const char * getMD5(){ return "70ea476cbcfd65ac2f68f3cda1e891fe"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Char.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Char.h new file mode 100644 index 0000000..ab3340f --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Char.h @@ -0,0 +1,45 @@ +#ifndef _ROS_std_msgs_Char_h +#define _ROS_std_msgs_Char_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class Char : public ros::Msg + { + public: + typedef uint8_t _data_type; + _data_type data; + + Char(): + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->data >> (8 * 0)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->data = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return "std_msgs/Char"; }; + const char * getMD5(){ return "1bf77f25acecdedba0e224b162199717"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/ColorRGBA.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/ColorRGBA.h new file mode 100644 index 0000000..e782d2f --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/ColorRGBA.h @@ -0,0 +1,134 @@ +#ifndef _ROS_std_msgs_ColorRGBA_h +#define _ROS_std_msgs_ColorRGBA_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class ColorRGBA : public ros::Msg + { + public: + typedef float _r_type; + _r_type r; + typedef float _g_type; + _g_type g; + typedef float _b_type; + _b_type b; + typedef float _a_type; + _a_type a; + + ColorRGBA(): + r(0), + g(0), + b(0), + a(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + float real; + uint32_t base; + } u_r; + u_r.real = this->r; + *(outbuffer + offset + 0) = (u_r.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_r.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_r.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_r.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->r); + union { + float real; + uint32_t base; + } u_g; + u_g.real = this->g; + *(outbuffer + offset + 0) = (u_g.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_g.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_g.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_g.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->g); + union { + float real; + uint32_t base; + } u_b; + u_b.real = this->b; + *(outbuffer + offset + 0) = (u_b.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_b.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_b.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_b.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->b); + union { + float real; + uint32_t base; + } u_a; + u_a.real = this->a; + *(outbuffer + offset + 0) = (u_a.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_a.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_a.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_a.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->a); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + float real; + uint32_t base; + } u_r; + u_r.base = 0; + u_r.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_r.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_r.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_r.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->r = u_r.real; + offset += sizeof(this->r); + union { + float real; + uint32_t base; + } u_g; + u_g.base = 0; + u_g.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_g.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_g.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_g.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->g = u_g.real; + offset += sizeof(this->g); + union { + float real; + uint32_t base; + } u_b; + u_b.base = 0; + u_b.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_b.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_b.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_b.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->b = u_b.real; + offset += sizeof(this->b); + union { + float real; + uint32_t base; + } u_a; + u_a.base = 0; + u_a.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_a.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_a.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_a.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->a = u_a.real; + offset += sizeof(this->a); + return offset; + } + + const char * getType(){ return "std_msgs/ColorRGBA"; }; + const char * getMD5(){ return "a29a96539573343b1310c73607334b00"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Duration.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Duration.h new file mode 100644 index 0000000..9373f35 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Duration.h @@ -0,0 +1,62 @@ +#ifndef _ROS_std_msgs_Duration_h +#define _ROS_std_msgs_Duration_h + +#include +#include +#include +#include "ros/msg.h" +#include "ros/duration.h" + +namespace std_msgs +{ + + class Duration : public ros::Msg + { + public: + typedef ros::Duration _data_type; + _data_type data; + + Duration(): + data() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->data.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->data.sec); + *(outbuffer + offset + 0) = (this->data.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->data.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->data.sec = ((uint32_t) (*(inbuffer + offset))); + this->data.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->data.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->data.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data.sec); + this->data.nsec = ((uint32_t) (*(inbuffer + offset))); + this->data.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->data.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->data.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data.nsec); + return offset; + } + + const char * getType(){ return "std_msgs/Duration"; }; + const char * getMD5(){ return "3e286caf4241d664e55f3ad380e2ae46"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Empty.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Empty.h new file mode 100644 index 0000000..440e5ed --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Empty.h @@ -0,0 +1,38 @@ +#ifndef _ROS_std_msgs_Empty_h +#define _ROS_std_msgs_Empty_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class Empty : public ros::Msg + { + public: + + Empty() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "std_msgs/Empty"; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Float32.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Float32.h new file mode 100644 index 0000000..07fc435 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Float32.h @@ -0,0 +1,62 @@ +#ifndef _ROS_std_msgs_Float32_h +#define _ROS_std_msgs_Float32_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class Float32 : public ros::Msg + { + public: + typedef float _data_type; + _data_type data; + + Float32(): + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + float real; + uint32_t base; + } u_data; + u_data.real = this->data; + *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_data.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_data.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_data.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + float real; + uint32_t base; + } u_data; + u_data.base = 0; + u_data.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->data = u_data.real; + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return "std_msgs/Float32"; }; + const char * getMD5(){ return "73fcbf46b49191e672908e50842a83d4"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Float32MultiArray.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Float32MultiArray.h new file mode 100644 index 0000000..08800d0 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Float32MultiArray.h @@ -0,0 +1,88 @@ +#ifndef _ROS_std_msgs_Float32MultiArray_h +#define _ROS_std_msgs_Float32MultiArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/MultiArrayLayout.h" + +namespace std_msgs +{ + + class Float32MultiArray : public ros::Msg + { + public: + typedef std_msgs::MultiArrayLayout _layout_type; + _layout_type layout; + uint32_t data_length; + typedef float _data_type; + _data_type st_data; + _data_type * data; + + Float32MultiArray(): + layout(), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->layout.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + union { + float real; + uint32_t base; + } u_datai; + u_datai.real = this->data[i]; + *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_datai.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_datai.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_datai.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->layout.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (float*)realloc(this->data, data_lengthT * sizeof(float)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + union { + float real; + uint32_t base; + } u_st_data; + u_st_data.base = 0; + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_data = u_st_data.real; + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(float)); + } + return offset; + } + + const char * getType(){ return "std_msgs/Float32MultiArray"; }; + const char * getMD5(){ return "6a40e0ffa6a17a503ac3f8616991b1f6"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Float64.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Float64.h new file mode 100644 index 0000000..b566cb6 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Float64.h @@ -0,0 +1,70 @@ +#ifndef _ROS_std_msgs_Float64_h +#define _ROS_std_msgs_Float64_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class Float64 : public ros::Msg + { + public: + typedef double _data_type; + _data_type data; + + Float64(): + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_data; + u_data.real = this->data; + *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_data.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_data.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_data.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_data.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_data.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_data.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_data.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_data; + u_data.base = 0; + u_data.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_data.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_data.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_data.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_data.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_data.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_data.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_data.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->data = u_data.real; + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return "std_msgs/Float64"; }; + const char * getMD5(){ return "fdb28210bfa9d7c91146260178d9a584"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Float64MultiArray.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Float64MultiArray.h new file mode 100644 index 0000000..219abe6 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Float64MultiArray.h @@ -0,0 +1,96 @@ +#ifndef _ROS_std_msgs_Float64MultiArray_h +#define _ROS_std_msgs_Float64MultiArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/MultiArrayLayout.h" + +namespace std_msgs +{ + + class Float64MultiArray : public ros::Msg + { + public: + typedef std_msgs::MultiArrayLayout _layout_type; + _layout_type layout; + uint32_t data_length; + typedef double _data_type; + _data_type st_data; + _data_type * data; + + Float64MultiArray(): + layout(), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->layout.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + union { + double real; + uint64_t base; + } u_datai; + u_datai.real = this->data[i]; + *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_datai.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_datai.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_datai.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_datai.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_datai.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_datai.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_datai.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->layout.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (double*)realloc(this->data, data_lengthT * sizeof(double)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + union { + double real; + uint64_t base; + } u_st_data; + u_st_data.base = 0; + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_data = u_st_data.real; + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(double)); + } + return offset; + } + + const char * getType(){ return "std_msgs/Float64MultiArray"; }; + const char * getMD5(){ return "4b7d974086d4060e7db4613a7e6c3ba4"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Header.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Header.h new file mode 100644 index 0000000..658bd84 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Header.h @@ -0,0 +1,92 @@ +#ifndef _ROS_std_msgs_Header_h +#define _ROS_std_msgs_Header_h + +#include +#include +#include +#include "../ros/msg.h" +#include "../ros/time.h" + +namespace std_msgs +{ + + class Header : public ros::Msg + { + public: + typedef uint32_t _seq_type; + _seq_type seq; + typedef ros::Time _stamp_type; + _stamp_type stamp; + typedef const char* _frame_id_type; + _frame_id_type frame_id; + + Header(): + seq(0), + stamp(), + frame_id("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->seq >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->seq >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->seq >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->seq >> (8 * 3)) & 0xFF; + offset += sizeof(this->seq); + *(outbuffer + offset + 0) = (this->stamp.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp.sec); + *(outbuffer + offset + 0) = (this->stamp.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp.nsec); + uint32_t length_frame_id = strlen(this->frame_id); + varToArr(outbuffer + offset, length_frame_id); + offset += 4; + memcpy(outbuffer + offset, this->frame_id, length_frame_id); + offset += length_frame_id; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->seq = ((uint32_t) (*(inbuffer + offset))); + this->seq |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->seq |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->seq |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->seq); + this->stamp.sec = ((uint32_t) (*(inbuffer + offset))); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp.sec); + this->stamp.nsec = ((uint32_t) (*(inbuffer + offset))); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp.nsec); + uint32_t length_frame_id; + arrToVar(length_frame_id, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_frame_id; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_frame_id-1]=0; + this->frame_id = (char *)(inbuffer + offset-1); + offset += length_frame_id; + return offset; + } + + const char * getType(){ return "std_msgs/Header"; }; + const char * getMD5(){ return "2176decaecbce78abc3b96ef049fabed"; }; + + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Int16.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Int16.h new file mode 100644 index 0000000..8699431 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Int16.h @@ -0,0 +1,58 @@ +#ifndef _ROS_std_msgs_Int16_h +#define _ROS_std_msgs_Int16_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class Int16 : public ros::Msg + { + public: + typedef int16_t _data_type; + _data_type data; + + Int16(): + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int16_t real; + uint16_t base; + } u_data; + u_data.real = this->data; + *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_data.base >> (8 * 1)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int16_t real; + uint16_t base; + } u_data; + u_data.base = 0; + u_data.base |= ((uint16_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_data.base |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->data = u_data.real; + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return "std_msgs/Int16"; }; + const char * getMD5(){ return "8524586e34fbd7cb1c08c5f5f1ca0e57"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Int16MultiArray.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Int16MultiArray.h new file mode 100644 index 0000000..09a685a --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Int16MultiArray.h @@ -0,0 +1,84 @@ +#ifndef _ROS_std_msgs_Int16MultiArray_h +#define _ROS_std_msgs_Int16MultiArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/MultiArrayLayout.h" + +namespace std_msgs +{ + + class Int16MultiArray : public ros::Msg + { + public: + typedef std_msgs::MultiArrayLayout _layout_type; + _layout_type layout; + uint32_t data_length; + typedef int16_t _data_type; + _data_type st_data; + _data_type * data; + + Int16MultiArray(): + layout(), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->layout.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + union { + int16_t real; + uint16_t base; + } u_datai; + u_datai.real = this->data[i]; + *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_datai.base >> (8 * 1)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->layout.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (int16_t*)realloc(this->data, data_lengthT * sizeof(int16_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + union { + int16_t real; + uint16_t base; + } u_st_data; + u_st_data.base = 0; + u_st_data.base |= ((uint16_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_data.base |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->st_data = u_st_data.real; + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(int16_t)); + } + return offset; + } + + const char * getType(){ return "std_msgs/Int16MultiArray"; }; + const char * getMD5(){ return "d9338d7f523fcb692fae9d0a0e9f067c"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Int32.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Int32.h new file mode 100644 index 0000000..1f33bbd --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Int32.h @@ -0,0 +1,62 @@ +#ifndef _ROS_std_msgs_Int32_h +#define _ROS_std_msgs_Int32_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class Int32 : public ros::Msg + { + public: + typedef int32_t _data_type; + _data_type data; + + Int32(): + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_data; + u_data.real = this->data; + *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_data.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_data.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_data.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_data; + u_data.base = 0; + u_data.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->data = u_data.real; + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return "std_msgs/Int32"; }; + const char * getMD5(){ return "da5909fbe378aeaf85e547e830cc1bb7"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Int32MultiArray.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Int32MultiArray.h new file mode 100644 index 0000000..9dc349d --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Int32MultiArray.h @@ -0,0 +1,88 @@ +#ifndef _ROS_std_msgs_Int32MultiArray_h +#define _ROS_std_msgs_Int32MultiArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/MultiArrayLayout.h" + +namespace std_msgs +{ + + class Int32MultiArray : public ros::Msg + { + public: + typedef std_msgs::MultiArrayLayout _layout_type; + _layout_type layout; + uint32_t data_length; + typedef int32_t _data_type; + _data_type st_data; + _data_type * data; + + Int32MultiArray(): + layout(), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->layout.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + union { + int32_t real; + uint32_t base; + } u_datai; + u_datai.real = this->data[i]; + *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_datai.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_datai.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_datai.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->layout.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (int32_t*)realloc(this->data, data_lengthT * sizeof(int32_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + union { + int32_t real; + uint32_t base; + } u_st_data; + u_st_data.base = 0; + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_data = u_st_data.real; + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(int32_t)); + } + return offset; + } + + const char * getType(){ return "std_msgs/Int32MultiArray"; }; + const char * getMD5(){ return "1d99f79f8b325b44fee908053e9c945b"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Int64.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Int64.h new file mode 100644 index 0000000..9edec3b --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Int64.h @@ -0,0 +1,70 @@ +#ifndef _ROS_std_msgs_Int64_h +#define _ROS_std_msgs_Int64_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class Int64 : public ros::Msg + { + public: + typedef int64_t _data_type; + _data_type data; + + Int64(): + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_data; + u_data.real = this->data; + *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_data.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_data.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_data.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_data.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_data.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_data.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_data.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_data; + u_data.base = 0; + u_data.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_data.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_data.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_data.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_data.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_data.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_data.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_data.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->data = u_data.real; + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return "std_msgs/Int64"; }; + const char * getMD5(){ return "34add168574510e6e17f5d23ecc077ef"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Int64MultiArray.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Int64MultiArray.h new file mode 100644 index 0000000..7815756 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Int64MultiArray.h @@ -0,0 +1,96 @@ +#ifndef _ROS_std_msgs_Int64MultiArray_h +#define _ROS_std_msgs_Int64MultiArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/MultiArrayLayout.h" + +namespace std_msgs +{ + + class Int64MultiArray : public ros::Msg + { + public: + typedef std_msgs::MultiArrayLayout _layout_type; + _layout_type layout; + uint32_t data_length; + typedef int64_t _data_type; + _data_type st_data; + _data_type * data; + + Int64MultiArray(): + layout(), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->layout.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + union { + int64_t real; + uint64_t base; + } u_datai; + u_datai.real = this->data[i]; + *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_datai.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_datai.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_datai.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_datai.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_datai.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_datai.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_datai.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->layout.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (int64_t*)realloc(this->data, data_lengthT * sizeof(int64_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + union { + int64_t real; + uint64_t base; + } u_st_data; + u_st_data.base = 0; + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_data = u_st_data.real; + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(int64_t)); + } + return offset; + } + + const char * getType(){ return "std_msgs/Int64MultiArray"; }; + const char * getMD5(){ return "54865aa6c65be0448113a2afc6a49270"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Int8.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Int8.h new file mode 100644 index 0000000..9509136 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Int8.h @@ -0,0 +1,56 @@ +#ifndef _ROS_std_msgs_Int8_h +#define _ROS_std_msgs_Int8_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class Int8 : public ros::Msg + { + public: + typedef int8_t _data_type; + _data_type data; + + Int8(): + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int8_t real; + uint8_t base; + } u_data; + u_data.real = this->data; + *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int8_t real; + uint8_t base; + } u_data; + u_data.base = 0; + u_data.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->data = u_data.real; + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return "std_msgs/Int8"; }; + const char * getMD5(){ return "27ffa0c9c4b8fb8492252bcad9e5c57b"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Int8MultiArray.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Int8MultiArray.h new file mode 100644 index 0000000..38921a9 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Int8MultiArray.h @@ -0,0 +1,82 @@ +#ifndef _ROS_std_msgs_Int8MultiArray_h +#define _ROS_std_msgs_Int8MultiArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/MultiArrayLayout.h" + +namespace std_msgs +{ + + class Int8MultiArray : public ros::Msg + { + public: + typedef std_msgs::MultiArrayLayout _layout_type; + _layout_type layout; + uint32_t data_length; + typedef int8_t _data_type; + _data_type st_data; + _data_type * data; + + Int8MultiArray(): + layout(), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->layout.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + union { + int8_t real; + uint8_t base; + } u_datai; + u_datai.real = this->data[i]; + *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->layout.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (int8_t*)realloc(this->data, data_lengthT * sizeof(int8_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + union { + int8_t real; + uint8_t base; + } u_st_data; + u_st_data.base = 0; + u_st_data.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->st_data = u_st_data.real; + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(int8_t)); + } + return offset; + } + + const char * getType(){ return "std_msgs/Int8MultiArray"; }; + const char * getMD5(){ return "d7c1af35a1b4781bbe79e03dd94b7c13"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/MultiArrayDimension.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/MultiArrayDimension.h new file mode 100644 index 0000000..72cb416 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/MultiArrayDimension.h @@ -0,0 +1,81 @@ +#ifndef _ROS_std_msgs_MultiArrayDimension_h +#define _ROS_std_msgs_MultiArrayDimension_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class MultiArrayDimension : public ros::Msg + { + public: + typedef const char* _label_type; + _label_type label; + typedef uint32_t _size_type; + _size_type size; + typedef uint32_t _stride_type; + _stride_type stride; + + MultiArrayDimension(): + label(""), + size(0), + stride(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_label = strlen(this->label); + varToArr(outbuffer + offset, length_label); + offset += 4; + memcpy(outbuffer + offset, this->label, length_label); + offset += length_label; + *(outbuffer + offset + 0) = (this->size >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->size >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->size >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->size >> (8 * 3)) & 0xFF; + offset += sizeof(this->size); + *(outbuffer + offset + 0) = (this->stride >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stride >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stride >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stride >> (8 * 3)) & 0xFF; + offset += sizeof(this->stride); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_label; + arrToVar(length_label, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_label; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_label-1]=0; + this->label = (char *)(inbuffer + offset-1); + offset += length_label; + this->size = ((uint32_t) (*(inbuffer + offset))); + this->size |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->size |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->size |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->size); + this->stride = ((uint32_t) (*(inbuffer + offset))); + this->stride |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stride |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stride |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stride); + return offset; + } + + const char * getType(){ return "std_msgs/MultiArrayDimension"; }; + const char * getMD5(){ return "4cd0c83a8683deae40ecdac60e53bfa8"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/MultiArrayLayout.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/MultiArrayLayout.h new file mode 100644 index 0000000..3cf3cfb --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/MultiArrayLayout.h @@ -0,0 +1,77 @@ +#ifndef _ROS_std_msgs_MultiArrayLayout_h +#define _ROS_std_msgs_MultiArrayLayout_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/MultiArrayDimension.h" + +namespace std_msgs +{ + + class MultiArrayLayout : public ros::Msg + { + public: + uint32_t dim_length; + typedef std_msgs::MultiArrayDimension _dim_type; + _dim_type st_dim; + _dim_type * dim; + typedef uint32_t _data_offset_type; + _data_offset_type data_offset; + + MultiArrayLayout(): + dim_length(0), dim(NULL), + data_offset(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->dim_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->dim_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->dim_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->dim_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->dim_length); + for( uint32_t i = 0; i < dim_length; i++){ + offset += this->dim[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->data_offset >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_offset >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_offset >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_offset >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t dim_lengthT = ((uint32_t) (*(inbuffer + offset))); + dim_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + dim_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + dim_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->dim_length); + if(dim_lengthT > dim_length) + this->dim = (std_msgs::MultiArrayDimension*)realloc(this->dim, dim_lengthT * sizeof(std_msgs::MultiArrayDimension)); + dim_length = dim_lengthT; + for( uint32_t i = 0; i < dim_length; i++){ + offset += this->st_dim.deserialize(inbuffer + offset); + memcpy( &(this->dim[i]), &(this->st_dim), sizeof(std_msgs::MultiArrayDimension)); + } + this->data_offset = ((uint32_t) (*(inbuffer + offset))); + this->data_offset |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->data_offset |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->data_offset |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_offset); + return offset; + } + + const char * getType(){ return "std_msgs/MultiArrayLayout"; }; + const char * getMD5(){ return "0fed2a11c13e11c5571b4e2a995a91a3"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/String.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/String.h new file mode 100644 index 0000000..de0bfa0 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/String.h @@ -0,0 +1,55 @@ +#ifndef _ROS_std_msgs_String_h +#define _ROS_std_msgs_String_h + +#include +#include +#include +#include "../ros/msg.h" + +namespace std_msgs +{ + + class String : public ros::Msg + { + public: + typedef const char* _data_type; + _data_type data; + + String(): + data("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_data = strlen(this->data); + varToArr(outbuffer + offset, length_data); + offset += 4; + memcpy(outbuffer + offset, this->data, length_data); + offset += length_data; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_data; + arrToVar(length_data, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_data; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_data-1]=0; + this->data = (char *)(inbuffer + offset-1); + offset += length_data; + return offset; + } + + const char * getType(){ return "std_msgs/String"; }; + const char * getMD5(){ return "992ce8a1687cec8c8bd883ec73ca41d1"; }; + + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Time.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Time.h new file mode 100644 index 0000000..2a6dd26 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/Time.h @@ -0,0 +1,62 @@ +#ifndef _ROS_std_msgs_Time_h +#define _ROS_std_msgs_Time_h + +#include +#include +#include +#include "../ros/msg.h" +#include "../ros/time.h" + +namespace std_msgs +{ + + class Time : public ros::Msg + { + public: + typedef ros::Time _data_type; + _data_type data; + + Time(): + data() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->data.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->data.sec); + *(outbuffer + offset + 0) = (this->data.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->data.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->data.sec = ((uint32_t) (*(inbuffer + offset))); + this->data.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->data.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->data.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data.sec); + this->data.nsec = ((uint32_t) (*(inbuffer + offset))); + this->data.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->data.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->data.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data.nsec); + return offset; + } + + const char * getType(){ return "std_msgs/Time"; }; + const char * getMD5(){ return "cd7166c74c552c311fbcc2fe5a7bc289"; }; + + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/UInt16.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/UInt16.h new file mode 100644 index 0000000..4da6884 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/UInt16.h @@ -0,0 +1,47 @@ +#ifndef _ROS_std_msgs_UInt16_h +#define _ROS_std_msgs_UInt16_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class UInt16 : public ros::Msg + { + public: + typedef uint16_t _data_type; + _data_type data; + + UInt16(): + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->data >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data >> (8 * 1)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->data = ((uint16_t) (*(inbuffer + offset))); + this->data |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return "std_msgs/UInt16"; }; + const char * getMD5(){ return "1df79edf208b629fe6b81923a544552d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/UInt16MultiArray.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/UInt16MultiArray.h new file mode 100644 index 0000000..26c0e8f --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/UInt16MultiArray.h @@ -0,0 +1,73 @@ +#ifndef _ROS_std_msgs_UInt16MultiArray_h +#define _ROS_std_msgs_UInt16MultiArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/MultiArrayLayout.h" + +namespace std_msgs +{ + + class UInt16MultiArray : public ros::Msg + { + public: + typedef std_msgs::MultiArrayLayout _layout_type; + _layout_type layout; + uint32_t data_length; + typedef uint16_t _data_type; + _data_type st_data; + _data_type * data; + + UInt16MultiArray(): + layout(), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->layout.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data[i] >> (8 * 1)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->layout.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (uint16_t*)realloc(this->data, data_lengthT * sizeof(uint16_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + this->st_data = ((uint16_t) (*(inbuffer + offset))); + this->st_data |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(uint16_t)); + } + return offset; + } + + const char * getType(){ return "std_msgs/UInt16MultiArray"; }; + const char * getMD5(){ return "52f264f1c973c4b73790d384c6cb4484"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/UInt32.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/UInt32.h new file mode 100644 index 0000000..30ae02b --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/UInt32.h @@ -0,0 +1,51 @@ +#ifndef _ROS_std_msgs_UInt32_h +#define _ROS_std_msgs_UInt32_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class UInt32 : public ros::Msg + { + public: + typedef uint32_t _data_type; + _data_type data; + + UInt32(): + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->data >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data >> (8 * 3)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->data = ((uint32_t) (*(inbuffer + offset))); + this->data |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->data |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->data |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return "std_msgs/UInt32"; }; + const char * getMD5(){ return "304a39449588c7f8ce2df6e8001c5fce"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/UInt32MultiArray.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/UInt32MultiArray.h new file mode 100644 index 0000000..af46e79 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/UInt32MultiArray.h @@ -0,0 +1,77 @@ +#ifndef _ROS_std_msgs_UInt32MultiArray_h +#define _ROS_std_msgs_UInt32MultiArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/MultiArrayLayout.h" + +namespace std_msgs +{ + + class UInt32MultiArray : public ros::Msg + { + public: + typedef std_msgs::MultiArrayLayout _layout_type; + _layout_type layout; + uint32_t data_length; + typedef uint32_t _data_type; + _data_type st_data; + _data_type * data; + + UInt32MultiArray(): + layout(), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->layout.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data[i] >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data[i] >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data[i] >> (8 * 3)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->layout.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (uint32_t*)realloc(this->data, data_lengthT * sizeof(uint32_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + this->st_data = ((uint32_t) (*(inbuffer + offset))); + this->st_data |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->st_data |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->st_data |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(uint32_t)); + } + return offset; + } + + const char * getType(){ return "std_msgs/UInt32MultiArray"; }; + const char * getMD5(){ return "4d6a180abc9be191b96a7eda6c8a233d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/UInt64.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/UInt64.h new file mode 100644 index 0000000..b7ab02d --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/UInt64.h @@ -0,0 +1,62 @@ +#ifndef _ROS_std_msgs_UInt64_h +#define _ROS_std_msgs_UInt64_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class UInt64 : public ros::Msg + { + public: + typedef uint64_t _data_type; + _data_type data; + + UInt64(): + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + uint64_t real; + uint32_t base; + } u_data; + u_data.real = this->data; + *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_data.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_data.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_data.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + uint64_t real; + uint32_t base; + } u_data; + u_data.base = 0; + u_data.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->data = u_data.real; + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return "std_msgs/UInt64"; }; + const char * getMD5(){ return "1b2a79973e8bf53d7b53acb71299cb57"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/UInt64MultiArray.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/UInt64MultiArray.h new file mode 100644 index 0000000..4401271 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/UInt64MultiArray.h @@ -0,0 +1,88 @@ +#ifndef _ROS_std_msgs_UInt64MultiArray_h +#define _ROS_std_msgs_UInt64MultiArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/MultiArrayLayout.h" + +namespace std_msgs +{ + + class UInt64MultiArray : public ros::Msg + { + public: + typedef std_msgs::MultiArrayLayout _layout_type; + _layout_type layout; + uint32_t data_length; + typedef uint64_t _data_type; + _data_type st_data; + _data_type * data; + + UInt64MultiArray(): + layout(), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->layout.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + union { + uint64_t real; + uint32_t base; + } u_datai; + u_datai.real = this->data[i]; + *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_datai.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_datai.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_datai.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->layout.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (uint64_t*)realloc(this->data, data_lengthT * sizeof(uint64_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + union { + uint64_t real; + uint32_t base; + } u_st_data; + u_st_data.base = 0; + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_data = u_st_data.real; + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(uint64_t)); + } + return offset; + } + + const char * getType(){ return "std_msgs/UInt64MultiArray"; }; + const char * getMD5(){ return "6088f127afb1d6c72927aa1247e945af"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/UInt8.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/UInt8.h new file mode 100644 index 0000000..e41b04b --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/UInt8.h @@ -0,0 +1,45 @@ +#ifndef _ROS_std_msgs_UInt8_h +#define _ROS_std_msgs_UInt8_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class UInt8 : public ros::Msg + { + public: + typedef uint8_t _data_type; + _data_type data; + + UInt8(): + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->data >> (8 * 0)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->data = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return "std_msgs/UInt8"; }; + const char * getMD5(){ return "7c8164229e7d2c17eb95e9231617fdee"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/UInt8MultiArray.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/UInt8MultiArray.h new file mode 100644 index 0000000..9ca2ac2 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_msgs/UInt8MultiArray.h @@ -0,0 +1,71 @@ +#ifndef _ROS_std_msgs_UInt8MultiArray_h +#define _ROS_std_msgs_UInt8MultiArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/MultiArrayLayout.h" + +namespace std_msgs +{ + + class UInt8MultiArray : public ros::Msg + { + public: + typedef std_msgs::MultiArrayLayout _layout_type; + _layout_type layout; + uint32_t data_length; + typedef uint8_t _data_type; + _data_type st_data; + _data_type * data; + + UInt8MultiArray(): + layout(), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->layout.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->layout.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (uint8_t*)realloc(this->data, data_lengthT * sizeof(uint8_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + this->st_data = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(uint8_t)); + } + return offset; + } + + const char * getType(){ return "std_msgs/UInt8MultiArray"; }; + const char * getMD5(){ return "82373f1612381bb6ee473b5cd6f5d89c"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_srvs/Empty.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_srvs/Empty.h new file mode 100644 index 0000000..b040dd2 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_srvs/Empty.h @@ -0,0 +1,70 @@ +#ifndef _ROS_SERVICE_Empty_h +#define _ROS_SERVICE_Empty_h +#include +#include +#include +#include "ros/msg.h" + +namespace std_srvs +{ + +static const char EMPTY[] = "std_srvs/Empty"; + + class EmptyRequest : public ros::Msg + { + public: + + EmptyRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return EMPTY; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class EmptyResponse : public ros::Msg + { + public: + + EmptyResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return EMPTY; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class Empty { + public: + typedef EmptyRequest Request; + typedef EmptyResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_srvs/SetBool.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_srvs/SetBool.h new file mode 100644 index 0000000..1feb34e --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_srvs/SetBool.h @@ -0,0 +1,123 @@ +#ifndef _ROS_SERVICE_SetBool_h +#define _ROS_SERVICE_SetBool_h +#include +#include +#include +#include "ros/msg.h" + +namespace std_srvs +{ + +static const char SETBOOL[] = "std_srvs/SetBool"; + + class SetBoolRequest : public ros::Msg + { + public: + typedef bool _data_type; + _data_type data; + + SetBoolRequest(): + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_data; + u_data.real = this->data; + *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_data; + u_data.base = 0; + u_data.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->data = u_data.real; + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return SETBOOL; }; + const char * getMD5(){ return "8b94c1b53db61fb6aed406028ad6332a"; }; + + }; + + class SetBoolResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _message_type; + _message_type message; + + SetBoolResponse(): + success(0), + message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_message = strlen(this->message); + varToArr(outbuffer + offset, length_message); + offset += 4; + memcpy(outbuffer + offset, this->message, length_message); + offset += length_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_message; + arrToVar(length_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_message-1]=0; + this->message = (char *)(inbuffer + offset-1); + offset += length_message; + return offset; + } + + const char * getType(){ return SETBOOL; }; + const char * getMD5(){ return "937c9679a518e3a18d831e57125ea522"; }; + + }; + + class SetBool { + public: + typedef SetBoolRequest Request; + typedef SetBoolResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_srvs/Trigger.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_srvs/Trigger.h new file mode 100644 index 0000000..34d1e48 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/std_srvs/Trigger.h @@ -0,0 +1,105 @@ +#ifndef _ROS_SERVICE_Trigger_h +#define _ROS_SERVICE_Trigger_h +#include +#include +#include +#include "ros/msg.h" + +namespace std_srvs +{ + +static const char TRIGGER[] = "std_srvs/Trigger"; + + class TriggerRequest : public ros::Msg + { + public: + + TriggerRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return TRIGGER; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class TriggerResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _message_type; + _message_type message; + + TriggerResponse(): + success(0), + message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_message = strlen(this->message); + varToArr(outbuffer + offset, length_message); + offset += 4; + memcpy(outbuffer + offset, this->message, length_message); + offset += length_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_message; + arrToVar(length_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_message-1]=0; + this->message = (char *)(inbuffer + offset-1); + offset += length_message; + return offset; + } + + const char * getType(){ return TRIGGER; }; + const char * getMD5(){ return "937c9679a518e3a18d831e57125ea522"; }; + + }; + + class Trigger { + public: + typedef TriggerRequest Request; + typedef TriggerResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/stereo_msgs/DisparityImage.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/stereo_msgs/DisparityImage.h new file mode 100644 index 0000000..90b3f28 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/stereo_msgs/DisparityImage.h @@ -0,0 +1,176 @@ +#ifndef _ROS_stereo_msgs_DisparityImage_h +#define _ROS_stereo_msgs_DisparityImage_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "sensor_msgs/Image.h" +#include "sensor_msgs/RegionOfInterest.h" + +namespace stereo_msgs +{ + + class DisparityImage : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef sensor_msgs::Image _image_type; + _image_type image; + typedef float _f_type; + _f_type f; + typedef float _T_type; + _T_type T; + typedef sensor_msgs::RegionOfInterest _valid_window_type; + _valid_window_type valid_window; + typedef float _min_disparity_type; + _min_disparity_type min_disparity; + typedef float _max_disparity_type; + _max_disparity_type max_disparity; + typedef float _delta_d_type; + _delta_d_type delta_d; + + DisparityImage(): + header(), + image(), + f(0), + T(0), + valid_window(), + min_disparity(0), + max_disparity(0), + delta_d(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->image.serialize(outbuffer + offset); + union { + float real; + uint32_t base; + } u_f; + u_f.real = this->f; + *(outbuffer + offset + 0) = (u_f.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_f.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_f.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_f.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->f); + union { + float real; + uint32_t base; + } u_T; + u_T.real = this->T; + *(outbuffer + offset + 0) = (u_T.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_T.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_T.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_T.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->T); + offset += this->valid_window.serialize(outbuffer + offset); + union { + float real; + uint32_t base; + } u_min_disparity; + u_min_disparity.real = this->min_disparity; + *(outbuffer + offset + 0) = (u_min_disparity.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_min_disparity.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_min_disparity.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_min_disparity.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->min_disparity); + union { + float real; + uint32_t base; + } u_max_disparity; + u_max_disparity.real = this->max_disparity; + *(outbuffer + offset + 0) = (u_max_disparity.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_max_disparity.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_max_disparity.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_max_disparity.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->max_disparity); + union { + float real; + uint32_t base; + } u_delta_d; + u_delta_d.real = this->delta_d; + *(outbuffer + offset + 0) = (u_delta_d.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_delta_d.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_delta_d.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_delta_d.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->delta_d); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->image.deserialize(inbuffer + offset); + union { + float real; + uint32_t base; + } u_f; + u_f.base = 0; + u_f.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_f.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_f.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_f.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->f = u_f.real; + offset += sizeof(this->f); + union { + float real; + uint32_t base; + } u_T; + u_T.base = 0; + u_T.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_T.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_T.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_T.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->T = u_T.real; + offset += sizeof(this->T); + offset += this->valid_window.deserialize(inbuffer + offset); + union { + float real; + uint32_t base; + } u_min_disparity; + u_min_disparity.base = 0; + u_min_disparity.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_min_disparity.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_min_disparity.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_min_disparity.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->min_disparity = u_min_disparity.real; + offset += sizeof(this->min_disparity); + union { + float real; + uint32_t base; + } u_max_disparity; + u_max_disparity.base = 0; + u_max_disparity.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_max_disparity.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_max_disparity.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_max_disparity.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->max_disparity = u_max_disparity.real; + offset += sizeof(this->max_disparity); + union { + float real; + uint32_t base; + } u_delta_d; + u_delta_d.base = 0; + u_delta_d.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_delta_d.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_delta_d.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_delta_d.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->delta_d = u_delta_d.real; + offset += sizeof(this->delta_d); + return offset; + } + + const char * getType(){ return "stereo_msgs/DisparityImage"; }; + const char * getMD5(){ return "04a177815f75271039fa21f16acad8c9"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf/FrameGraph.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf/FrameGraph.h new file mode 100644 index 0000000..e95a945 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf/FrameGraph.h @@ -0,0 +1,87 @@ +#ifndef _ROS_SERVICE_FrameGraph_h +#define _ROS_SERVICE_FrameGraph_h +#include +#include +#include +#include "ros/msg.h" + +namespace tf +{ + +static const char FRAMEGRAPH[] = "tf/FrameGraph"; + + class FrameGraphRequest : public ros::Msg + { + public: + + FrameGraphRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return FRAMEGRAPH; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class FrameGraphResponse : public ros::Msg + { + public: + typedef const char* _dot_graph_type; + _dot_graph_type dot_graph; + + FrameGraphResponse(): + dot_graph("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_dot_graph = strlen(this->dot_graph); + varToArr(outbuffer + offset, length_dot_graph); + offset += 4; + memcpy(outbuffer + offset, this->dot_graph, length_dot_graph); + offset += length_dot_graph; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_dot_graph; + arrToVar(length_dot_graph, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_dot_graph; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_dot_graph-1]=0; + this->dot_graph = (char *)(inbuffer + offset-1); + offset += length_dot_graph; + return offset; + } + + const char * getType(){ return FRAMEGRAPH; }; + const char * getMD5(){ return "c4af9ac907e58e906eb0b6e3c58478c0"; }; + + }; + + class FrameGraph { + public: + typedef FrameGraphRequest Request; + typedef FrameGraphResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf/tf.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf/tf.h new file mode 100644 index 0000000..97858fe --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf/tf.h @@ -0,0 +1,56 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2011, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef ROS_TF_H_ +#define ROS_TF_H_ + +#include "geometry_msgs/TransformStamped.h" + +namespace tf +{ + +static inline geometry_msgs::Quaternion createQuaternionFromYaw(double yaw) +{ + geometry_msgs::Quaternion q; + q.x = 0; + q.y = 0; + q.z = sin(yaw * 0.5); + q.w = cos(yaw * 0.5); + return q; +} + +} + +#endif + diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf/tfMessage.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf/tfMessage.h new file mode 100644 index 0000000..4c0b04a --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf/tfMessage.h @@ -0,0 +1,64 @@ +#ifndef _ROS_tf_tfMessage_h +#define _ROS_tf_tfMessage_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/TransformStamped.h" + +namespace tf +{ + + class tfMessage : public ros::Msg + { + public: + uint32_t transforms_length; + typedef geometry_msgs::TransformStamped _transforms_type; + _transforms_type st_transforms; + _transforms_type * transforms; + + tfMessage(): + transforms_length(0), transforms(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->transforms_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->transforms_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->transforms_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->transforms_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->transforms_length); + for( uint32_t i = 0; i < transforms_length; i++){ + offset += this->transforms[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t transforms_lengthT = ((uint32_t) (*(inbuffer + offset))); + transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->transforms_length); + if(transforms_lengthT > transforms_length) + this->transforms = (geometry_msgs::TransformStamped*)realloc(this->transforms, transforms_lengthT * sizeof(geometry_msgs::TransformStamped)); + transforms_length = transforms_lengthT; + for( uint32_t i = 0; i < transforms_length; i++){ + offset += this->st_transforms.deserialize(inbuffer + offset); + memcpy( &(this->transforms[i]), &(this->st_transforms), sizeof(geometry_msgs::TransformStamped)); + } + return offset; + } + + const char * getType(){ return "tf/tfMessage"; }; + const char * getMD5(){ return "94810edda583a504dfda3829e70d7eec"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf/transform_broadcaster.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf/transform_broadcaster.h new file mode 100644 index 0000000..6c4e5fe --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf/transform_broadcaster.h @@ -0,0 +1,69 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2011, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef ROS_TRANSFORM_BROADCASTER_H_ +#define ROS_TRANSFORM_BROADCASTER_H_ + +#include "ros.h" +#include "tfMessage.h" + +namespace tf +{ + +class TransformBroadcaster +{ +public: + TransformBroadcaster() : publisher_("/tf", &internal_msg) {} + + void init(ros::NodeHandle &nh) + { + nh.advertise(publisher_); + } + + void sendTransform(geometry_msgs::TransformStamped &transform) + { + internal_msg.transforms_length = 1; + internal_msg.transforms = &transform; + publisher_.publish(&internal_msg); + } + +private: + tf::tfMessage internal_msg; + ros::Publisher publisher_; +}; + +} + +#endif + diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf2_msgs/FrameGraph.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf2_msgs/FrameGraph.h new file mode 100644 index 0000000..9145639 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf2_msgs/FrameGraph.h @@ -0,0 +1,87 @@ +#ifndef _ROS_SERVICE_FrameGraph_h +#define _ROS_SERVICE_FrameGraph_h +#include +#include +#include +#include "ros/msg.h" + +namespace tf2_msgs +{ + +static const char FRAMEGRAPH[] = "tf2_msgs/FrameGraph"; + + class FrameGraphRequest : public ros::Msg + { + public: + + FrameGraphRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return FRAMEGRAPH; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class FrameGraphResponse : public ros::Msg + { + public: + typedef const char* _frame_yaml_type; + _frame_yaml_type frame_yaml; + + FrameGraphResponse(): + frame_yaml("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_frame_yaml = strlen(this->frame_yaml); + varToArr(outbuffer + offset, length_frame_yaml); + offset += 4; + memcpy(outbuffer + offset, this->frame_yaml, length_frame_yaml); + offset += length_frame_yaml; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_frame_yaml; + arrToVar(length_frame_yaml, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_frame_yaml; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_frame_yaml-1]=0; + this->frame_yaml = (char *)(inbuffer + offset-1); + offset += length_frame_yaml; + return offset; + } + + const char * getType(){ return FRAMEGRAPH; }; + const char * getMD5(){ return "437ea58e9463815a0d511c7326b686b0"; }; + + }; + + class FrameGraph { + public: + typedef FrameGraphRequest Request; + typedef FrameGraphResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformAction.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformAction.h new file mode 100644 index 0000000..733d095 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_tf2_msgs_LookupTransformAction_h +#define _ROS_tf2_msgs_LookupTransformAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "tf2_msgs/LookupTransformActionGoal.h" +#include "tf2_msgs/LookupTransformActionResult.h" +#include "tf2_msgs/LookupTransformActionFeedback.h" + +namespace tf2_msgs +{ + + class LookupTransformAction : public ros::Msg + { + public: + typedef tf2_msgs::LookupTransformActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef tf2_msgs::LookupTransformActionResult _action_result_type; + _action_result_type action_result; + typedef tf2_msgs::LookupTransformActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + LookupTransformAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "tf2_msgs/LookupTransformAction"; }; + const char * getMD5(){ return "7ee01ba91a56c2245c610992dbaa3c37"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformActionFeedback.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformActionFeedback.h new file mode 100644 index 0000000..39bd3b4 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_tf2_msgs_LookupTransformActionFeedback_h +#define _ROS_tf2_msgs_LookupTransformActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "tf2_msgs/LookupTransformFeedback.h" + +namespace tf2_msgs +{ + + class LookupTransformActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef tf2_msgs::LookupTransformFeedback _feedback_type; + _feedback_type feedback; + + LookupTransformActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "tf2_msgs/LookupTransformActionFeedback"; }; + const char * getMD5(){ return "aae20e09065c3809e8a8e87c4c8953fd"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformActionGoal.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformActionGoal.h new file mode 100644 index 0000000..92bc163 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_tf2_msgs_LookupTransformActionGoal_h +#define _ROS_tf2_msgs_LookupTransformActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "tf2_msgs/LookupTransformGoal.h" + +namespace tf2_msgs +{ + + class LookupTransformActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef tf2_msgs::LookupTransformGoal _goal_type; + _goal_type goal; + + LookupTransformActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "tf2_msgs/LookupTransformActionGoal"; }; + const char * getMD5(){ return "f2e7bcdb75c847978d0351a13e699da5"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformActionResult.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformActionResult.h new file mode 100644 index 0000000..38a98bd --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_tf2_msgs_LookupTransformActionResult_h +#define _ROS_tf2_msgs_LookupTransformActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "tf2_msgs/LookupTransformResult.h" + +namespace tf2_msgs +{ + + class LookupTransformActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef tf2_msgs::LookupTransformResult _result_type; + _result_type result; + + LookupTransformActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "tf2_msgs/LookupTransformActionResult"; }; + const char * getMD5(){ return "ac26ce75a41384fa8bb4dc10f491ab90"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformFeedback.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformFeedback.h new file mode 100644 index 0000000..6be0748 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformFeedback.h @@ -0,0 +1,38 @@ +#ifndef _ROS_tf2_msgs_LookupTransformFeedback_h +#define _ROS_tf2_msgs_LookupTransformFeedback_h + +#include +#include +#include +#include "ros/msg.h" + +namespace tf2_msgs +{ + + class LookupTransformFeedback : public ros::Msg + { + public: + + LookupTransformFeedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "tf2_msgs/LookupTransformFeedback"; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformGoal.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformGoal.h new file mode 100644 index 0000000..87a79ee --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformGoal.h @@ -0,0 +1,178 @@ +#ifndef _ROS_tf2_msgs_LookupTransformGoal_h +#define _ROS_tf2_msgs_LookupTransformGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "ros/time.h" +#include "ros/duration.h" + +namespace tf2_msgs +{ + + class LookupTransformGoal : public ros::Msg + { + public: + typedef const char* _target_frame_type; + _target_frame_type target_frame; + typedef const char* _source_frame_type; + _source_frame_type source_frame; + typedef ros::Time _source_time_type; + _source_time_type source_time; + typedef ros::Duration _timeout_type; + _timeout_type timeout; + typedef ros::Time _target_time_type; + _target_time_type target_time; + typedef const char* _fixed_frame_type; + _fixed_frame_type fixed_frame; + typedef bool _advanced_type; + _advanced_type advanced; + + LookupTransformGoal(): + target_frame(""), + source_frame(""), + source_time(), + timeout(), + target_time(), + fixed_frame(""), + advanced(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_target_frame = strlen(this->target_frame); + varToArr(outbuffer + offset, length_target_frame); + offset += 4; + memcpy(outbuffer + offset, this->target_frame, length_target_frame); + offset += length_target_frame; + uint32_t length_source_frame = strlen(this->source_frame); + varToArr(outbuffer + offset, length_source_frame); + offset += 4; + memcpy(outbuffer + offset, this->source_frame, length_source_frame); + offset += length_source_frame; + *(outbuffer + offset + 0) = (this->source_time.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->source_time.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->source_time.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->source_time.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->source_time.sec); + *(outbuffer + offset + 0) = (this->source_time.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->source_time.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->source_time.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->source_time.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->source_time.nsec); + *(outbuffer + offset + 0) = (this->timeout.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->timeout.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->timeout.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->timeout.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->timeout.sec); + *(outbuffer + offset + 0) = (this->timeout.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->timeout.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->timeout.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->timeout.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->timeout.nsec); + *(outbuffer + offset + 0) = (this->target_time.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->target_time.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->target_time.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->target_time.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->target_time.sec); + *(outbuffer + offset + 0) = (this->target_time.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->target_time.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->target_time.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->target_time.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->target_time.nsec); + uint32_t length_fixed_frame = strlen(this->fixed_frame); + varToArr(outbuffer + offset, length_fixed_frame); + offset += 4; + memcpy(outbuffer + offset, this->fixed_frame, length_fixed_frame); + offset += length_fixed_frame; + union { + bool real; + uint8_t base; + } u_advanced; + u_advanced.real = this->advanced; + *(outbuffer + offset + 0) = (u_advanced.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->advanced); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_target_frame; + arrToVar(length_target_frame, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_target_frame; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_target_frame-1]=0; + this->target_frame = (char *)(inbuffer + offset-1); + offset += length_target_frame; + uint32_t length_source_frame; + arrToVar(length_source_frame, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_source_frame; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_source_frame-1]=0; + this->source_frame = (char *)(inbuffer + offset-1); + offset += length_source_frame; + this->source_time.sec = ((uint32_t) (*(inbuffer + offset))); + this->source_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->source_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->source_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->source_time.sec); + this->source_time.nsec = ((uint32_t) (*(inbuffer + offset))); + this->source_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->source_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->source_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->source_time.nsec); + this->timeout.sec = ((uint32_t) (*(inbuffer + offset))); + this->timeout.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->timeout.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->timeout.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->timeout.sec); + this->timeout.nsec = ((uint32_t) (*(inbuffer + offset))); + this->timeout.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->timeout.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->timeout.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->timeout.nsec); + this->target_time.sec = ((uint32_t) (*(inbuffer + offset))); + this->target_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->target_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->target_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->target_time.sec); + this->target_time.nsec = ((uint32_t) (*(inbuffer + offset))); + this->target_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->target_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->target_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->target_time.nsec); + uint32_t length_fixed_frame; + arrToVar(length_fixed_frame, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_fixed_frame; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_fixed_frame-1]=0; + this->fixed_frame = (char *)(inbuffer + offset-1); + offset += length_fixed_frame; + union { + bool real; + uint8_t base; + } u_advanced; + u_advanced.base = 0; + u_advanced.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->advanced = u_advanced.real; + offset += sizeof(this->advanced); + return offset; + } + + const char * getType(){ return "tf2_msgs/LookupTransformGoal"; }; + const char * getMD5(){ return "35e3720468131d675a18bb6f3e5f22f8"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformResult.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformResult.h new file mode 100644 index 0000000..5422d7e --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformResult.h @@ -0,0 +1,50 @@ +#ifndef _ROS_tf2_msgs_LookupTransformResult_h +#define _ROS_tf2_msgs_LookupTransformResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/TransformStamped.h" +#include "tf2_msgs/TF2Error.h" + +namespace tf2_msgs +{ + + class LookupTransformResult : public ros::Msg + { + public: + typedef geometry_msgs::TransformStamped _transform_type; + _transform_type transform; + typedef tf2_msgs::TF2Error _error_type; + _error_type error; + + LookupTransformResult(): + transform(), + error() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->transform.serialize(outbuffer + offset); + offset += this->error.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->transform.deserialize(inbuffer + offset); + offset += this->error.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "tf2_msgs/LookupTransformResult"; }; + const char * getMD5(){ return "3fe5db6a19ca9cfb675418c5ad875c36"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf2_msgs/TF2Error.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf2_msgs/TF2Error.h new file mode 100644 index 0000000..e6efdce --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf2_msgs/TF2Error.h @@ -0,0 +1,69 @@ +#ifndef _ROS_tf2_msgs_TF2Error_h +#define _ROS_tf2_msgs_TF2Error_h + +#include +#include +#include +#include "ros/msg.h" + +namespace tf2_msgs +{ + + class TF2Error : public ros::Msg + { + public: + typedef uint8_t _error_type; + _error_type error; + typedef const char* _error_string_type; + _error_string_type error_string; + enum { NO_ERROR = 0 }; + enum { LOOKUP_ERROR = 1 }; + enum { CONNECTIVITY_ERROR = 2 }; + enum { EXTRAPOLATION_ERROR = 3 }; + enum { INVALID_ARGUMENT_ERROR = 4 }; + enum { TIMEOUT_ERROR = 5 }; + enum { TRANSFORM_ERROR = 6 }; + + TF2Error(): + error(0), + error_string("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->error >> (8 * 0)) & 0xFF; + offset += sizeof(this->error); + uint32_t length_error_string = strlen(this->error_string); + varToArr(outbuffer + offset, length_error_string); + offset += 4; + memcpy(outbuffer + offset, this->error_string, length_error_string); + offset += length_error_string; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->error = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->error); + uint32_t length_error_string; + arrToVar(length_error_string, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_error_string; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_error_string-1]=0; + this->error_string = (char *)(inbuffer + offset-1); + offset += length_error_string; + return offset; + } + + const char * getType(){ return "tf2_msgs/TF2Error"; }; + const char * getMD5(){ return "bc6848fd6fd750c92e38575618a4917d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf2_msgs/TFMessage.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf2_msgs/TFMessage.h new file mode 100644 index 0000000..fd8ff10 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf2_msgs/TFMessage.h @@ -0,0 +1,64 @@ +#ifndef _ROS_tf2_msgs_TFMessage_h +#define _ROS_tf2_msgs_TFMessage_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/TransformStamped.h" + +namespace tf2_msgs +{ + + class TFMessage : public ros::Msg + { + public: + uint32_t transforms_length; + typedef geometry_msgs::TransformStamped _transforms_type; + _transforms_type st_transforms; + _transforms_type * transforms; + + TFMessage(): + transforms_length(0), transforms(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->transforms_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->transforms_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->transforms_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->transforms_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->transforms_length); + for( uint32_t i = 0; i < transforms_length; i++){ + offset += this->transforms[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t transforms_lengthT = ((uint32_t) (*(inbuffer + offset))); + transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->transforms_length); + if(transforms_lengthT > transforms_length) + this->transforms = (geometry_msgs::TransformStamped*)realloc(this->transforms, transforms_lengthT * sizeof(geometry_msgs::TransformStamped)); + transforms_length = transforms_lengthT; + for( uint32_t i = 0; i < transforms_length; i++){ + offset += this->st_transforms.deserialize(inbuffer + offset); + memcpy( &(this->transforms[i]), &(this->st_transforms), sizeof(geometry_msgs::TransformStamped)); + } + return offset; + } + + const char * getType(){ return "tf2_msgs/TFMessage"; }; + const char * getMD5(){ return "94810edda583a504dfda3829e70d7eec"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/theora_image_transport/Packet.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/theora_image_transport/Packet.h new file mode 100644 index 0000000..b35e696 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/theora_image_transport/Packet.h @@ -0,0 +1,183 @@ +#ifndef _ROS_theora_image_transport_Packet_h +#define _ROS_theora_image_transport_Packet_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace theora_image_transport +{ + + class Packet : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t data_length; + typedef uint8_t _data_type; + _data_type st_data; + _data_type * data; + typedef int32_t _b_o_s_type; + _b_o_s_type b_o_s; + typedef int32_t _e_o_s_type; + _e_o_s_type e_o_s; + typedef int64_t _granulepos_type; + _granulepos_type granulepos; + typedef int64_t _packetno_type; + _packetno_type packetno; + + Packet(): + header(), + data_length(0), data(NULL), + b_o_s(0), + e_o_s(0), + granulepos(0), + packetno(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF; + offset += sizeof(this->data[i]); + } + union { + int32_t real; + uint32_t base; + } u_b_o_s; + u_b_o_s.real = this->b_o_s; + *(outbuffer + offset + 0) = (u_b_o_s.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_b_o_s.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_b_o_s.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_b_o_s.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->b_o_s); + union { + int32_t real; + uint32_t base; + } u_e_o_s; + u_e_o_s.real = this->e_o_s; + *(outbuffer + offset + 0) = (u_e_o_s.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_e_o_s.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_e_o_s.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_e_o_s.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->e_o_s); + union { + int64_t real; + uint64_t base; + } u_granulepos; + u_granulepos.real = this->granulepos; + *(outbuffer + offset + 0) = (u_granulepos.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_granulepos.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_granulepos.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_granulepos.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_granulepos.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_granulepos.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_granulepos.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_granulepos.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->granulepos); + union { + int64_t real; + uint64_t base; + } u_packetno; + u_packetno.real = this->packetno; + *(outbuffer + offset + 0) = (u_packetno.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_packetno.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_packetno.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_packetno.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_packetno.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_packetno.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_packetno.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_packetno.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->packetno); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (uint8_t*)realloc(this->data, data_lengthT * sizeof(uint8_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + this->st_data = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(uint8_t)); + } + union { + int32_t real; + uint32_t base; + } u_b_o_s; + u_b_o_s.base = 0; + u_b_o_s.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_b_o_s.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_b_o_s.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_b_o_s.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->b_o_s = u_b_o_s.real; + offset += sizeof(this->b_o_s); + union { + int32_t real; + uint32_t base; + } u_e_o_s; + u_e_o_s.base = 0; + u_e_o_s.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_e_o_s.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_e_o_s.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_e_o_s.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->e_o_s = u_e_o_s.real; + offset += sizeof(this->e_o_s); + union { + int64_t real; + uint64_t base; + } u_granulepos; + u_granulepos.base = 0; + u_granulepos.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_granulepos.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_granulepos.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_granulepos.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_granulepos.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_granulepos.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_granulepos.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_granulepos.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->granulepos = u_granulepos.real; + offset += sizeof(this->granulepos); + union { + int64_t real; + uint64_t base; + } u_packetno; + u_packetno.base = 0; + u_packetno.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_packetno.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_packetno.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_packetno.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_packetno.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_packetno.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_packetno.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_packetno.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->packetno = u_packetno.real; + offset += sizeof(this->packetno); + return offset; + } + + const char * getType(){ return "theora_image_transport/Packet"; }; + const char * getMD5(){ return "33ac4e14a7cff32e7e0d65f18bb410f3"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/time.cpp b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/time.cpp new file mode 100644 index 0000000..86221f9 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/time.cpp @@ -0,0 +1,70 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2011, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include "ros/time.h" + +namespace ros +{ +void normalizeSecNSec(uint32_t& sec, uint32_t& nsec) +{ + uint32_t nsec_part = nsec % 1000000000UL; + uint32_t sec_part = nsec / 1000000000UL; + sec += sec_part; + nsec = nsec_part; +} + +Time& Time::fromNSec(int32_t t) +{ + sec = t / 1000000000; + nsec = t % 1000000000; + normalizeSecNSec(sec, nsec); + return *this; +} + +Time& Time::operator +=(const Duration &rhs) +{ + sec += rhs.sec; + nsec += rhs.nsec; + normalizeSecNSec(sec, nsec); + return *this; +} + +Time& Time::operator -=(const Duration &rhs) +{ + sec += -rhs.sec; + nsec += -rhs.nsec; + normalizeSecNSec(sec, nsec); + return *this; +} +} diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/topic_tools/DemuxAdd.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/topic_tools/DemuxAdd.h new file mode 100644 index 0000000..d8016c6 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/topic_tools/DemuxAdd.h @@ -0,0 +1,87 @@ +#ifndef _ROS_SERVICE_DemuxAdd_h +#define _ROS_SERVICE_DemuxAdd_h +#include +#include +#include +#include "ros/msg.h" + +namespace topic_tools +{ + +static const char DEMUXADD[] = "topic_tools/DemuxAdd"; + + class DemuxAddRequest : public ros::Msg + { + public: + typedef const char* _topic_type; + _topic_type topic; + + DemuxAddRequest(): + topic("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_topic = strlen(this->topic); + varToArr(outbuffer + offset, length_topic); + offset += 4; + memcpy(outbuffer + offset, this->topic, length_topic); + offset += length_topic; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_topic; + arrToVar(length_topic, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_topic; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_topic-1]=0; + this->topic = (char *)(inbuffer + offset-1); + offset += length_topic; + return offset; + } + + const char * getType(){ return DEMUXADD; }; + const char * getMD5(){ return "d8f94bae31b356b24d0427f80426d0c3"; }; + + }; + + class DemuxAddResponse : public ros::Msg + { + public: + + DemuxAddResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return DEMUXADD; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class DemuxAdd { + public: + typedef DemuxAddRequest Request; + typedef DemuxAddResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/topic_tools/DemuxDelete.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/topic_tools/DemuxDelete.h new file mode 100644 index 0000000..3f030aa --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/topic_tools/DemuxDelete.h @@ -0,0 +1,87 @@ +#ifndef _ROS_SERVICE_DemuxDelete_h +#define _ROS_SERVICE_DemuxDelete_h +#include +#include +#include +#include "ros/msg.h" + +namespace topic_tools +{ + +static const char DEMUXDELETE[] = "topic_tools/DemuxDelete"; + + class DemuxDeleteRequest : public ros::Msg + { + public: + typedef const char* _topic_type; + _topic_type topic; + + DemuxDeleteRequest(): + topic("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_topic = strlen(this->topic); + varToArr(outbuffer + offset, length_topic); + offset += 4; + memcpy(outbuffer + offset, this->topic, length_topic); + offset += length_topic; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_topic; + arrToVar(length_topic, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_topic; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_topic-1]=0; + this->topic = (char *)(inbuffer + offset-1); + offset += length_topic; + return offset; + } + + const char * getType(){ return DEMUXDELETE; }; + const char * getMD5(){ return "d8f94bae31b356b24d0427f80426d0c3"; }; + + }; + + class DemuxDeleteResponse : public ros::Msg + { + public: + + DemuxDeleteResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return DEMUXDELETE; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class DemuxDelete { + public: + typedef DemuxDeleteRequest Request; + typedef DemuxDeleteResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/topic_tools/DemuxList.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/topic_tools/DemuxList.h new file mode 100644 index 0000000..0553329 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/topic_tools/DemuxList.h @@ -0,0 +1,107 @@ +#ifndef _ROS_SERVICE_DemuxList_h +#define _ROS_SERVICE_DemuxList_h +#include +#include +#include +#include "ros/msg.h" + +namespace topic_tools +{ + +static const char DEMUXLIST[] = "topic_tools/DemuxList"; + + class DemuxListRequest : public ros::Msg + { + public: + + DemuxListRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return DEMUXLIST; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class DemuxListResponse : public ros::Msg + { + public: + uint32_t topics_length; + typedef char* _topics_type; + _topics_type st_topics; + _topics_type * topics; + + DemuxListResponse(): + topics_length(0), topics(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->topics_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->topics_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->topics_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->topics_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->topics_length); + for( uint32_t i = 0; i < topics_length; i++){ + uint32_t length_topicsi = strlen(this->topics[i]); + varToArr(outbuffer + offset, length_topicsi); + offset += 4; + memcpy(outbuffer + offset, this->topics[i], length_topicsi); + offset += length_topicsi; + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t topics_lengthT = ((uint32_t) (*(inbuffer + offset))); + topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->topics_length); + if(topics_lengthT > topics_length) + this->topics = (char**)realloc(this->topics, topics_lengthT * sizeof(char*)); + topics_length = topics_lengthT; + for( uint32_t i = 0; i < topics_length; i++){ + uint32_t length_st_topics; + arrToVar(length_st_topics, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_topics; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_topics-1]=0; + this->st_topics = (char *)(inbuffer + offset-1); + offset += length_st_topics; + memcpy( &(this->topics[i]), &(this->st_topics), sizeof(char*)); + } + return offset; + } + + const char * getType(){ return DEMUXLIST; }; + const char * getMD5(){ return "b0eef9a05d4e829092fc2f2c3c2aad3d"; }; + + }; + + class DemuxList { + public: + typedef DemuxListRequest Request; + typedef DemuxListResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/topic_tools/DemuxSelect.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/topic_tools/DemuxSelect.h new file mode 100644 index 0000000..17a6d9b --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/topic_tools/DemuxSelect.h @@ -0,0 +1,104 @@ +#ifndef _ROS_SERVICE_DemuxSelect_h +#define _ROS_SERVICE_DemuxSelect_h +#include +#include +#include +#include "ros/msg.h" + +namespace topic_tools +{ + +static const char DEMUXSELECT[] = "topic_tools/DemuxSelect"; + + class DemuxSelectRequest : public ros::Msg + { + public: + typedef const char* _topic_type; + _topic_type topic; + + DemuxSelectRequest(): + topic("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_topic = strlen(this->topic); + varToArr(outbuffer + offset, length_topic); + offset += 4; + memcpy(outbuffer + offset, this->topic, length_topic); + offset += length_topic; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_topic; + arrToVar(length_topic, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_topic; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_topic-1]=0; + this->topic = (char *)(inbuffer + offset-1); + offset += length_topic; + return offset; + } + + const char * getType(){ return DEMUXSELECT; }; + const char * getMD5(){ return "d8f94bae31b356b24d0427f80426d0c3"; }; + + }; + + class DemuxSelectResponse : public ros::Msg + { + public: + typedef const char* _prev_topic_type; + _prev_topic_type prev_topic; + + DemuxSelectResponse(): + prev_topic("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_prev_topic = strlen(this->prev_topic); + varToArr(outbuffer + offset, length_prev_topic); + offset += 4; + memcpy(outbuffer + offset, this->prev_topic, length_prev_topic); + offset += length_prev_topic; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_prev_topic; + arrToVar(length_prev_topic, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_prev_topic; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_prev_topic-1]=0; + this->prev_topic = (char *)(inbuffer + offset-1); + offset += length_prev_topic; + return offset; + } + + const char * getType(){ return DEMUXSELECT; }; + const char * getMD5(){ return "3db0a473debdbafea387c9e49358c320"; }; + + }; + + class DemuxSelect { + public: + typedef DemuxSelectRequest Request; + typedef DemuxSelectResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/topic_tools/MuxAdd.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/topic_tools/MuxAdd.h new file mode 100644 index 0000000..25a649a --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/topic_tools/MuxAdd.h @@ -0,0 +1,87 @@ +#ifndef _ROS_SERVICE_MuxAdd_h +#define _ROS_SERVICE_MuxAdd_h +#include +#include +#include +#include "ros/msg.h" + +namespace topic_tools +{ + +static const char MUXADD[] = "topic_tools/MuxAdd"; + + class MuxAddRequest : public ros::Msg + { + public: + typedef const char* _topic_type; + _topic_type topic; + + MuxAddRequest(): + topic("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_topic = strlen(this->topic); + varToArr(outbuffer + offset, length_topic); + offset += 4; + memcpy(outbuffer + offset, this->topic, length_topic); + offset += length_topic; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_topic; + arrToVar(length_topic, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_topic; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_topic-1]=0; + this->topic = (char *)(inbuffer + offset-1); + offset += length_topic; + return offset; + } + + const char * getType(){ return MUXADD; }; + const char * getMD5(){ return "d8f94bae31b356b24d0427f80426d0c3"; }; + + }; + + class MuxAddResponse : public ros::Msg + { + public: + + MuxAddResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return MUXADD; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class MuxAdd { + public: + typedef MuxAddRequest Request; + typedef MuxAddResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/topic_tools/MuxDelete.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/topic_tools/MuxDelete.h new file mode 100644 index 0000000..3672ad5 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/topic_tools/MuxDelete.h @@ -0,0 +1,87 @@ +#ifndef _ROS_SERVICE_MuxDelete_h +#define _ROS_SERVICE_MuxDelete_h +#include +#include +#include +#include "ros/msg.h" + +namespace topic_tools +{ + +static const char MUXDELETE[] = "topic_tools/MuxDelete"; + + class MuxDeleteRequest : public ros::Msg + { + public: + typedef const char* _topic_type; + _topic_type topic; + + MuxDeleteRequest(): + topic("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_topic = strlen(this->topic); + varToArr(outbuffer + offset, length_topic); + offset += 4; + memcpy(outbuffer + offset, this->topic, length_topic); + offset += length_topic; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_topic; + arrToVar(length_topic, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_topic; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_topic-1]=0; + this->topic = (char *)(inbuffer + offset-1); + offset += length_topic; + return offset; + } + + const char * getType(){ return MUXDELETE; }; + const char * getMD5(){ return "d8f94bae31b356b24d0427f80426d0c3"; }; + + }; + + class MuxDeleteResponse : public ros::Msg + { + public: + + MuxDeleteResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return MUXDELETE; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class MuxDelete { + public: + typedef MuxDeleteRequest Request; + typedef MuxDeleteResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/topic_tools/MuxList.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/topic_tools/MuxList.h new file mode 100644 index 0000000..5d7936d --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/topic_tools/MuxList.h @@ -0,0 +1,107 @@ +#ifndef _ROS_SERVICE_MuxList_h +#define _ROS_SERVICE_MuxList_h +#include +#include +#include +#include "ros/msg.h" + +namespace topic_tools +{ + +static const char MUXLIST[] = "topic_tools/MuxList"; + + class MuxListRequest : public ros::Msg + { + public: + + MuxListRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return MUXLIST; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class MuxListResponse : public ros::Msg + { + public: + uint32_t topics_length; + typedef char* _topics_type; + _topics_type st_topics; + _topics_type * topics; + + MuxListResponse(): + topics_length(0), topics(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->topics_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->topics_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->topics_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->topics_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->topics_length); + for( uint32_t i = 0; i < topics_length; i++){ + uint32_t length_topicsi = strlen(this->topics[i]); + varToArr(outbuffer + offset, length_topicsi); + offset += 4; + memcpy(outbuffer + offset, this->topics[i], length_topicsi); + offset += length_topicsi; + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t topics_lengthT = ((uint32_t) (*(inbuffer + offset))); + topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->topics_length); + if(topics_lengthT > topics_length) + this->topics = (char**)realloc(this->topics, topics_lengthT * sizeof(char*)); + topics_length = topics_lengthT; + for( uint32_t i = 0; i < topics_length; i++){ + uint32_t length_st_topics; + arrToVar(length_st_topics, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_topics; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_topics-1]=0; + this->st_topics = (char *)(inbuffer + offset-1); + offset += length_st_topics; + memcpy( &(this->topics[i]), &(this->st_topics), sizeof(char*)); + } + return offset; + } + + const char * getType(){ return MUXLIST; }; + const char * getMD5(){ return "b0eef9a05d4e829092fc2f2c3c2aad3d"; }; + + }; + + class MuxList { + public: + typedef MuxListRequest Request; + typedef MuxListResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/topic_tools/MuxSelect.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/topic_tools/MuxSelect.h new file mode 100644 index 0000000..67324a8 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/topic_tools/MuxSelect.h @@ -0,0 +1,104 @@ +#ifndef _ROS_SERVICE_MuxSelect_h +#define _ROS_SERVICE_MuxSelect_h +#include +#include +#include +#include "ros/msg.h" + +namespace topic_tools +{ + +static const char MUXSELECT[] = "topic_tools/MuxSelect"; + + class MuxSelectRequest : public ros::Msg + { + public: + typedef const char* _topic_type; + _topic_type topic; + + MuxSelectRequest(): + topic("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_topic = strlen(this->topic); + varToArr(outbuffer + offset, length_topic); + offset += 4; + memcpy(outbuffer + offset, this->topic, length_topic); + offset += length_topic; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_topic; + arrToVar(length_topic, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_topic; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_topic-1]=0; + this->topic = (char *)(inbuffer + offset-1); + offset += length_topic; + return offset; + } + + const char * getType(){ return MUXSELECT; }; + const char * getMD5(){ return "d8f94bae31b356b24d0427f80426d0c3"; }; + + }; + + class MuxSelectResponse : public ros::Msg + { + public: + typedef const char* _prev_topic_type; + _prev_topic_type prev_topic; + + MuxSelectResponse(): + prev_topic("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_prev_topic = strlen(this->prev_topic); + varToArr(outbuffer + offset, length_prev_topic); + offset += 4; + memcpy(outbuffer + offset, this->prev_topic, length_prev_topic); + offset += length_prev_topic; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_prev_topic; + arrToVar(length_prev_topic, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_prev_topic; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_prev_topic-1]=0; + this->prev_topic = (char *)(inbuffer + offset-1); + offset += length_prev_topic; + return offset; + } + + const char * getType(){ return MUXSELECT; }; + const char * getMD5(){ return "3db0a473debdbafea387c9e49358c320"; }; + + }; + + class MuxSelect { + public: + typedef MuxSelectRequest Request; + typedef MuxSelectResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/trajectory_msgs/JointTrajectory.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/trajectory_msgs/JointTrajectory.h new file mode 100644 index 0000000..f03d537 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/trajectory_msgs/JointTrajectory.h @@ -0,0 +1,107 @@ +#ifndef _ROS_trajectory_msgs_JointTrajectory_h +#define _ROS_trajectory_msgs_JointTrajectory_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "trajectory_msgs/JointTrajectoryPoint.h" + +namespace trajectory_msgs +{ + + class JointTrajectory : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t joint_names_length; + typedef char* _joint_names_type; + _joint_names_type st_joint_names; + _joint_names_type * joint_names; + uint32_t points_length; + typedef trajectory_msgs::JointTrajectoryPoint _points_type; + _points_type st_points; + _points_type * points; + + JointTrajectory(): + header(), + joint_names_length(0), joint_names(NULL), + points_length(0), points(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->joint_names_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->joint_names_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->joint_names_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->joint_names_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->joint_names_length); + for( uint32_t i = 0; i < joint_names_length; i++){ + uint32_t length_joint_namesi = strlen(this->joint_names[i]); + varToArr(outbuffer + offset, length_joint_namesi); + offset += 4; + memcpy(outbuffer + offset, this->joint_names[i], length_joint_namesi); + offset += length_joint_namesi; + } + *(outbuffer + offset + 0) = (this->points_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->points_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->points_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->points_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->points_length); + for( uint32_t i = 0; i < points_length; i++){ + offset += this->points[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t joint_names_lengthT = ((uint32_t) (*(inbuffer + offset))); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->joint_names_length); + if(joint_names_lengthT > joint_names_length) + this->joint_names = (char**)realloc(this->joint_names, joint_names_lengthT * sizeof(char*)); + joint_names_length = joint_names_lengthT; + for( uint32_t i = 0; i < joint_names_length; i++){ + uint32_t length_st_joint_names; + arrToVar(length_st_joint_names, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_joint_names; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_joint_names-1]=0; + this->st_joint_names = (char *)(inbuffer + offset-1); + offset += length_st_joint_names; + memcpy( &(this->joint_names[i]), &(this->st_joint_names), sizeof(char*)); + } + uint32_t points_lengthT = ((uint32_t) (*(inbuffer + offset))); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->points_length); + if(points_lengthT > points_length) + this->points = (trajectory_msgs::JointTrajectoryPoint*)realloc(this->points, points_lengthT * sizeof(trajectory_msgs::JointTrajectoryPoint)); + points_length = points_lengthT; + for( uint32_t i = 0; i < points_length; i++){ + offset += this->st_points.deserialize(inbuffer + offset); + memcpy( &(this->points[i]), &(this->st_points), sizeof(trajectory_msgs::JointTrajectoryPoint)); + } + return offset; + } + + const char * getType(){ return "trajectory_msgs/JointTrajectory"; }; + const char * getMD5(){ return "65b4f94a94d1ed67169da35a02f33d3f"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/trajectory_msgs/JointTrajectoryPoint.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/trajectory_msgs/JointTrajectoryPoint.h new file mode 100644 index 0000000..dac669b --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/trajectory_msgs/JointTrajectoryPoint.h @@ -0,0 +1,270 @@ +#ifndef _ROS_trajectory_msgs_JointTrajectoryPoint_h +#define _ROS_trajectory_msgs_JointTrajectoryPoint_h + +#include +#include +#include +#include "ros/msg.h" +#include "ros/duration.h" + +namespace trajectory_msgs +{ + + class JointTrajectoryPoint : public ros::Msg + { + public: + uint32_t positions_length; + typedef double _positions_type; + _positions_type st_positions; + _positions_type * positions; + uint32_t velocities_length; + typedef double _velocities_type; + _velocities_type st_velocities; + _velocities_type * velocities; + uint32_t accelerations_length; + typedef double _accelerations_type; + _accelerations_type st_accelerations; + _accelerations_type * accelerations; + uint32_t effort_length; + typedef double _effort_type; + _effort_type st_effort; + _effort_type * effort; + typedef ros::Duration _time_from_start_type; + _time_from_start_type time_from_start; + + JointTrajectoryPoint(): + positions_length(0), positions(NULL), + velocities_length(0), velocities(NULL), + accelerations_length(0), accelerations(NULL), + effort_length(0), effort(NULL), + time_from_start() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->positions_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->positions_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->positions_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->positions_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->positions_length); + for( uint32_t i = 0; i < positions_length; i++){ + union { + double real; + uint64_t base; + } u_positionsi; + u_positionsi.real = this->positions[i]; + *(outbuffer + offset + 0) = (u_positionsi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_positionsi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_positionsi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_positionsi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_positionsi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_positionsi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_positionsi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_positionsi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->positions[i]); + } + *(outbuffer + offset + 0) = (this->velocities_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->velocities_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->velocities_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->velocities_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->velocities_length); + for( uint32_t i = 0; i < velocities_length; i++){ + union { + double real; + uint64_t base; + } u_velocitiesi; + u_velocitiesi.real = this->velocities[i]; + *(outbuffer + offset + 0) = (u_velocitiesi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_velocitiesi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_velocitiesi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_velocitiesi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_velocitiesi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_velocitiesi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_velocitiesi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_velocitiesi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->velocities[i]); + } + *(outbuffer + offset + 0) = (this->accelerations_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->accelerations_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->accelerations_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->accelerations_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->accelerations_length); + for( uint32_t i = 0; i < accelerations_length; i++){ + union { + double real; + uint64_t base; + } u_accelerationsi; + u_accelerationsi.real = this->accelerations[i]; + *(outbuffer + offset + 0) = (u_accelerationsi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_accelerationsi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_accelerationsi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_accelerationsi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_accelerationsi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_accelerationsi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_accelerationsi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_accelerationsi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->accelerations[i]); + } + *(outbuffer + offset + 0) = (this->effort_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->effort_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->effort_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->effort_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->effort_length); + for( uint32_t i = 0; i < effort_length; i++){ + union { + double real; + uint64_t base; + } u_efforti; + u_efforti.real = this->effort[i]; + *(outbuffer + offset + 0) = (u_efforti.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_efforti.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_efforti.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_efforti.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_efforti.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_efforti.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_efforti.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_efforti.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->effort[i]); + } + *(outbuffer + offset + 0) = (this->time_from_start.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->time_from_start.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->time_from_start.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->time_from_start.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->time_from_start.sec); + *(outbuffer + offset + 0) = (this->time_from_start.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->time_from_start.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->time_from_start.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->time_from_start.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->time_from_start.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t positions_lengthT = ((uint32_t) (*(inbuffer + offset))); + positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->positions_length); + if(positions_lengthT > positions_length) + this->positions = (double*)realloc(this->positions, positions_lengthT * sizeof(double)); + positions_length = positions_lengthT; + for( uint32_t i = 0; i < positions_length; i++){ + union { + double real; + uint64_t base; + } u_st_positions; + u_st_positions.base = 0; + u_st_positions.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_positions.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_positions.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_positions.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_positions.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_positions.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_positions.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_positions.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_positions = u_st_positions.real; + offset += sizeof(this->st_positions); + memcpy( &(this->positions[i]), &(this->st_positions), sizeof(double)); + } + uint32_t velocities_lengthT = ((uint32_t) (*(inbuffer + offset))); + velocities_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + velocities_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + velocities_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->velocities_length); + if(velocities_lengthT > velocities_length) + this->velocities = (double*)realloc(this->velocities, velocities_lengthT * sizeof(double)); + velocities_length = velocities_lengthT; + for( uint32_t i = 0; i < velocities_length; i++){ + union { + double real; + uint64_t base; + } u_st_velocities; + u_st_velocities.base = 0; + u_st_velocities.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_velocities.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_velocities.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_velocities.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_velocities.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_velocities.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_velocities.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_velocities.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_velocities = u_st_velocities.real; + offset += sizeof(this->st_velocities); + memcpy( &(this->velocities[i]), &(this->st_velocities), sizeof(double)); + } + uint32_t accelerations_lengthT = ((uint32_t) (*(inbuffer + offset))); + accelerations_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + accelerations_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + accelerations_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->accelerations_length); + if(accelerations_lengthT > accelerations_length) + this->accelerations = (double*)realloc(this->accelerations, accelerations_lengthT * sizeof(double)); + accelerations_length = accelerations_lengthT; + for( uint32_t i = 0; i < accelerations_length; i++){ + union { + double real; + uint64_t base; + } u_st_accelerations; + u_st_accelerations.base = 0; + u_st_accelerations.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_accelerations.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_accelerations.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_accelerations.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_accelerations.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_accelerations.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_accelerations.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_accelerations.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_accelerations = u_st_accelerations.real; + offset += sizeof(this->st_accelerations); + memcpy( &(this->accelerations[i]), &(this->st_accelerations), sizeof(double)); + } + uint32_t effort_lengthT = ((uint32_t) (*(inbuffer + offset))); + effort_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + effort_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + effort_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->effort_length); + if(effort_lengthT > effort_length) + this->effort = (double*)realloc(this->effort, effort_lengthT * sizeof(double)); + effort_length = effort_lengthT; + for( uint32_t i = 0; i < effort_length; i++){ + union { + double real; + uint64_t base; + } u_st_effort; + u_st_effort.base = 0; + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_effort = u_st_effort.real; + offset += sizeof(this->st_effort); + memcpy( &(this->effort[i]), &(this->st_effort), sizeof(double)); + } + this->time_from_start.sec = ((uint32_t) (*(inbuffer + offset))); + this->time_from_start.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->time_from_start.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->time_from_start.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->time_from_start.sec); + this->time_from_start.nsec = ((uint32_t) (*(inbuffer + offset))); + this->time_from_start.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->time_from_start.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->time_from_start.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->time_from_start.nsec); + return offset; + } + + const char * getType(){ return "trajectory_msgs/JointTrajectoryPoint"; }; + const char * getMD5(){ return "f3cd1e1c4d320c79d6985c904ae5dcd3"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/trajectory_msgs/MultiDOFJointTrajectory.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/trajectory_msgs/MultiDOFJointTrajectory.h new file mode 100644 index 0000000..2ab653c --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/trajectory_msgs/MultiDOFJointTrajectory.h @@ -0,0 +1,107 @@ +#ifndef _ROS_trajectory_msgs_MultiDOFJointTrajectory_h +#define _ROS_trajectory_msgs_MultiDOFJointTrajectory_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "trajectory_msgs/MultiDOFJointTrajectoryPoint.h" + +namespace trajectory_msgs +{ + + class MultiDOFJointTrajectory : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t joint_names_length; + typedef char* _joint_names_type; + _joint_names_type st_joint_names; + _joint_names_type * joint_names; + uint32_t points_length; + typedef trajectory_msgs::MultiDOFJointTrajectoryPoint _points_type; + _points_type st_points; + _points_type * points; + + MultiDOFJointTrajectory(): + header(), + joint_names_length(0), joint_names(NULL), + points_length(0), points(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->joint_names_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->joint_names_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->joint_names_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->joint_names_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->joint_names_length); + for( uint32_t i = 0; i < joint_names_length; i++){ + uint32_t length_joint_namesi = strlen(this->joint_names[i]); + varToArr(outbuffer + offset, length_joint_namesi); + offset += 4; + memcpy(outbuffer + offset, this->joint_names[i], length_joint_namesi); + offset += length_joint_namesi; + } + *(outbuffer + offset + 0) = (this->points_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->points_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->points_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->points_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->points_length); + for( uint32_t i = 0; i < points_length; i++){ + offset += this->points[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t joint_names_lengthT = ((uint32_t) (*(inbuffer + offset))); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->joint_names_length); + if(joint_names_lengthT > joint_names_length) + this->joint_names = (char**)realloc(this->joint_names, joint_names_lengthT * sizeof(char*)); + joint_names_length = joint_names_lengthT; + for( uint32_t i = 0; i < joint_names_length; i++){ + uint32_t length_st_joint_names; + arrToVar(length_st_joint_names, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_joint_names; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_joint_names-1]=0; + this->st_joint_names = (char *)(inbuffer + offset-1); + offset += length_st_joint_names; + memcpy( &(this->joint_names[i]), &(this->st_joint_names), sizeof(char*)); + } + uint32_t points_lengthT = ((uint32_t) (*(inbuffer + offset))); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->points_length); + if(points_lengthT > points_length) + this->points = (trajectory_msgs::MultiDOFJointTrajectoryPoint*)realloc(this->points, points_lengthT * sizeof(trajectory_msgs::MultiDOFJointTrajectoryPoint)); + points_length = points_lengthT; + for( uint32_t i = 0; i < points_length; i++){ + offset += this->st_points.deserialize(inbuffer + offset); + memcpy( &(this->points[i]), &(this->st_points), sizeof(trajectory_msgs::MultiDOFJointTrajectoryPoint)); + } + return offset; + } + + const char * getType(){ return "trajectory_msgs/MultiDOFJointTrajectory"; }; + const char * getMD5(){ return "ef145a45a5f47b77b7f5cdde4b16c942"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/trajectory_msgs/MultiDOFJointTrajectoryPoint.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/trajectory_msgs/MultiDOFJointTrajectoryPoint.h new file mode 100644 index 0000000..88b4564 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/trajectory_msgs/MultiDOFJointTrajectoryPoint.h @@ -0,0 +1,139 @@ +#ifndef _ROS_trajectory_msgs_MultiDOFJointTrajectoryPoint_h +#define _ROS_trajectory_msgs_MultiDOFJointTrajectoryPoint_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Transform.h" +#include "geometry_msgs/Twist.h" +#include "ros/duration.h" + +namespace trajectory_msgs +{ + + class MultiDOFJointTrajectoryPoint : public ros::Msg + { + public: + uint32_t transforms_length; + typedef geometry_msgs::Transform _transforms_type; + _transforms_type st_transforms; + _transforms_type * transforms; + uint32_t velocities_length; + typedef geometry_msgs::Twist _velocities_type; + _velocities_type st_velocities; + _velocities_type * velocities; + uint32_t accelerations_length; + typedef geometry_msgs::Twist _accelerations_type; + _accelerations_type st_accelerations; + _accelerations_type * accelerations; + typedef ros::Duration _time_from_start_type; + _time_from_start_type time_from_start; + + MultiDOFJointTrajectoryPoint(): + transforms_length(0), transforms(NULL), + velocities_length(0), velocities(NULL), + accelerations_length(0), accelerations(NULL), + time_from_start() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->transforms_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->transforms_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->transforms_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->transforms_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->transforms_length); + for( uint32_t i = 0; i < transforms_length; i++){ + offset += this->transforms[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->velocities_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->velocities_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->velocities_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->velocities_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->velocities_length); + for( uint32_t i = 0; i < velocities_length; i++){ + offset += this->velocities[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->accelerations_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->accelerations_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->accelerations_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->accelerations_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->accelerations_length); + for( uint32_t i = 0; i < accelerations_length; i++){ + offset += this->accelerations[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->time_from_start.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->time_from_start.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->time_from_start.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->time_from_start.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->time_from_start.sec); + *(outbuffer + offset + 0) = (this->time_from_start.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->time_from_start.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->time_from_start.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->time_from_start.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->time_from_start.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t transforms_lengthT = ((uint32_t) (*(inbuffer + offset))); + transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->transforms_length); + if(transforms_lengthT > transforms_length) + this->transforms = (geometry_msgs::Transform*)realloc(this->transforms, transforms_lengthT * sizeof(geometry_msgs::Transform)); + transforms_length = transforms_lengthT; + for( uint32_t i = 0; i < transforms_length; i++){ + offset += this->st_transforms.deserialize(inbuffer + offset); + memcpy( &(this->transforms[i]), &(this->st_transforms), sizeof(geometry_msgs::Transform)); + } + uint32_t velocities_lengthT = ((uint32_t) (*(inbuffer + offset))); + velocities_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + velocities_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + velocities_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->velocities_length); + if(velocities_lengthT > velocities_length) + this->velocities = (geometry_msgs::Twist*)realloc(this->velocities, velocities_lengthT * sizeof(geometry_msgs::Twist)); + velocities_length = velocities_lengthT; + for( uint32_t i = 0; i < velocities_length; i++){ + offset += this->st_velocities.deserialize(inbuffer + offset); + memcpy( &(this->velocities[i]), &(this->st_velocities), sizeof(geometry_msgs::Twist)); + } + uint32_t accelerations_lengthT = ((uint32_t) (*(inbuffer + offset))); + accelerations_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + accelerations_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + accelerations_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->accelerations_length); + if(accelerations_lengthT > accelerations_length) + this->accelerations = (geometry_msgs::Twist*)realloc(this->accelerations, accelerations_lengthT * sizeof(geometry_msgs::Twist)); + accelerations_length = accelerations_lengthT; + for( uint32_t i = 0; i < accelerations_length; i++){ + offset += this->st_accelerations.deserialize(inbuffer + offset); + memcpy( &(this->accelerations[i]), &(this->st_accelerations), sizeof(geometry_msgs::Twist)); + } + this->time_from_start.sec = ((uint32_t) (*(inbuffer + offset))); + this->time_from_start.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->time_from_start.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->time_from_start.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->time_from_start.sec); + this->time_from_start.nsec = ((uint32_t) (*(inbuffer + offset))); + this->time_from_start.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->time_from_start.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->time_from_start.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->time_from_start.nsec); + return offset; + } + + const char * getType(){ return "trajectory_msgs/MultiDOFJointTrajectoryPoint"; }; + const char * getMD5(){ return "3ebe08d1abd5b65862d50e09430db776"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeAction.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeAction.h new file mode 100644 index 0000000..f100e9a --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_turtle_actionlib_ShapeAction_h +#define _ROS_turtle_actionlib_ShapeAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "turtle_actionlib/ShapeActionGoal.h" +#include "turtle_actionlib/ShapeActionResult.h" +#include "turtle_actionlib/ShapeActionFeedback.h" + +namespace turtle_actionlib +{ + + class ShapeAction : public ros::Msg + { + public: + typedef turtle_actionlib::ShapeActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef turtle_actionlib::ShapeActionResult _action_result_type; + _action_result_type action_result; + typedef turtle_actionlib::ShapeActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + ShapeAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "turtle_actionlib/ShapeAction"; }; + const char * getMD5(){ return "d73b17d6237a925511f5d7727a1dc903"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeActionFeedback.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeActionFeedback.h new file mode 100644 index 0000000..b57b28c --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_turtle_actionlib_ShapeActionFeedback_h +#define _ROS_turtle_actionlib_ShapeActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "turtle_actionlib/ShapeFeedback.h" + +namespace turtle_actionlib +{ + + class ShapeActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef turtle_actionlib::ShapeFeedback _feedback_type; + _feedback_type feedback; + + ShapeActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "turtle_actionlib/ShapeActionFeedback"; }; + const char * getMD5(){ return "aae20e09065c3809e8a8e87c4c8953fd"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeActionGoal.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeActionGoal.h new file mode 100644 index 0000000..732215e --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_turtle_actionlib_ShapeActionGoal_h +#define _ROS_turtle_actionlib_ShapeActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "turtle_actionlib/ShapeGoal.h" + +namespace turtle_actionlib +{ + + class ShapeActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef turtle_actionlib::ShapeGoal _goal_type; + _goal_type goal; + + ShapeActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "turtle_actionlib/ShapeActionGoal"; }; + const char * getMD5(){ return "dbfccd187f2ec9c593916447ffd6cc77"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeActionResult.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeActionResult.h new file mode 100644 index 0000000..b4e4213 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_turtle_actionlib_ShapeActionResult_h +#define _ROS_turtle_actionlib_ShapeActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "turtle_actionlib/ShapeResult.h" + +namespace turtle_actionlib +{ + + class ShapeActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef turtle_actionlib::ShapeResult _result_type; + _result_type result; + + ShapeActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "turtle_actionlib/ShapeActionResult"; }; + const char * getMD5(){ return "c8d13d5d140f1047a2e4d3bf5c045822"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeFeedback.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeFeedback.h new file mode 100644 index 0000000..6c00c07 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeFeedback.h @@ -0,0 +1,38 @@ +#ifndef _ROS_turtle_actionlib_ShapeFeedback_h +#define _ROS_turtle_actionlib_ShapeFeedback_h + +#include +#include +#include +#include "ros/msg.h" + +namespace turtle_actionlib +{ + + class ShapeFeedback : public ros::Msg + { + public: + + ShapeFeedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "turtle_actionlib/ShapeFeedback"; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeGoal.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeGoal.h new file mode 100644 index 0000000..bb72d11 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeGoal.h @@ -0,0 +1,86 @@ +#ifndef _ROS_turtle_actionlib_ShapeGoal_h +#define _ROS_turtle_actionlib_ShapeGoal_h + +#include +#include +#include +#include "ros/msg.h" + +namespace turtle_actionlib +{ + + class ShapeGoal : public ros::Msg + { + public: + typedef int32_t _edges_type; + _edges_type edges; + typedef float _radius_type; + _radius_type radius; + + ShapeGoal(): + edges(0), + radius(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_edges; + u_edges.real = this->edges; + *(outbuffer + offset + 0) = (u_edges.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_edges.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_edges.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_edges.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->edges); + union { + float real; + uint32_t base; + } u_radius; + u_radius.real = this->radius; + *(outbuffer + offset + 0) = (u_radius.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_radius.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_radius.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_radius.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->radius); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_edges; + u_edges.base = 0; + u_edges.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_edges.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_edges.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_edges.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->edges = u_edges.real; + offset += sizeof(this->edges); + union { + float real; + uint32_t base; + } u_radius; + u_radius.base = 0; + u_radius.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_radius.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_radius.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_radius.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->radius = u_radius.real; + offset += sizeof(this->radius); + return offset; + } + + const char * getType(){ return "turtle_actionlib/ShapeGoal"; }; + const char * getMD5(){ return "3b9202ab7292cebe5a95ab2bf6b9c091"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeResult.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeResult.h new file mode 100644 index 0000000..2a9127d --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeResult.h @@ -0,0 +1,86 @@ +#ifndef _ROS_turtle_actionlib_ShapeResult_h +#define _ROS_turtle_actionlib_ShapeResult_h + +#include +#include +#include +#include "ros/msg.h" + +namespace turtle_actionlib +{ + + class ShapeResult : public ros::Msg + { + public: + typedef float _interior_angle_type; + _interior_angle_type interior_angle; + typedef float _apothem_type; + _apothem_type apothem; + + ShapeResult(): + interior_angle(0), + apothem(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + float real; + uint32_t base; + } u_interior_angle; + u_interior_angle.real = this->interior_angle; + *(outbuffer + offset + 0) = (u_interior_angle.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_interior_angle.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_interior_angle.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_interior_angle.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->interior_angle); + union { + float real; + uint32_t base; + } u_apothem; + u_apothem.real = this->apothem; + *(outbuffer + offset + 0) = (u_apothem.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_apothem.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_apothem.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_apothem.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->apothem); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + float real; + uint32_t base; + } u_interior_angle; + u_interior_angle.base = 0; + u_interior_angle.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_interior_angle.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_interior_angle.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_interior_angle.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->interior_angle = u_interior_angle.real; + offset += sizeof(this->interior_angle); + union { + float real; + uint32_t base; + } u_apothem; + u_apothem.base = 0; + u_apothem.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_apothem.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_apothem.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_apothem.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->apothem = u_apothem.real; + offset += sizeof(this->apothem); + return offset; + } + + const char * getType(){ return "turtle_actionlib/ShapeResult"; }; + const char * getMD5(){ return "b06c6e2225f820dbc644270387cd1a7c"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtle_actionlib/Velocity.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtle_actionlib/Velocity.h new file mode 100644 index 0000000..ab7141e --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtle_actionlib/Velocity.h @@ -0,0 +1,86 @@ +#ifndef _ROS_turtle_actionlib_Velocity_h +#define _ROS_turtle_actionlib_Velocity_h + +#include +#include +#include +#include "ros/msg.h" + +namespace turtle_actionlib +{ + + class Velocity : public ros::Msg + { + public: + typedef float _linear_type; + _linear_type linear; + typedef float _angular_type; + _angular_type angular; + + Velocity(): + linear(0), + angular(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + float real; + uint32_t base; + } u_linear; + u_linear.real = this->linear; + *(outbuffer + offset + 0) = (u_linear.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_linear.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_linear.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_linear.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->linear); + union { + float real; + uint32_t base; + } u_angular; + u_angular.real = this->angular; + *(outbuffer + offset + 0) = (u_angular.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_angular.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_angular.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_angular.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->angular); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + float real; + uint32_t base; + } u_linear; + u_linear.base = 0; + u_linear.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_linear.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_linear.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_linear.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->linear = u_linear.real; + offset += sizeof(this->linear); + union { + float real; + uint32_t base; + } u_angular; + u_angular.base = 0; + u_angular.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_angular.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_angular.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_angular.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->angular = u_angular.real; + offset += sizeof(this->angular); + return offset; + } + + const char * getType(){ return "turtle_actionlib/Velocity"; }; + const char * getMD5(){ return "9d5c2dcd348ac8f76ce2a4307bd63a13"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/MotorPower.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/MotorPower.h new file mode 100644 index 0000000..a22dc41 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/MotorPower.h @@ -0,0 +1,47 @@ +#ifndef _ROS_turtlebot3_msgs_MotorPower_h +#define _ROS_turtlebot3_msgs_MotorPower_h + +#include +#include +#include +#include "ros/msg.h" + +namespace turtlebot3_msgs +{ + + class MotorPower : public ros::Msg + { + public: + typedef uint8_t _state_type; + _state_type state; + enum { OFF = 0 }; + enum { ON = 1 }; + + MotorPower(): + state(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->state >> (8 * 0)) & 0xFF; + offset += sizeof(this->state); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->state = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->state); + return offset; + } + + const char * getType(){ return "turtlebot3_msgs/MotorPower"; }; + const char * getMD5(){ return "8f77c0161e0f2021493136bb5f3f0e51"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/PanoramaImg.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/PanoramaImg.h new file mode 100644 index 0000000..7d29869 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/PanoramaImg.h @@ -0,0 +1,180 @@ +#ifndef _ROS_turtlebot3_msgs_PanoramaImg_h +#define _ROS_turtlebot3_msgs_PanoramaImg_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "sensor_msgs/Image.h" + +namespace turtlebot3_msgs +{ + + class PanoramaImg : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef const char* _pano_id_type; + _pano_id_type pano_id; + typedef double _latitude_type; + _latitude_type latitude; + typedef double _longitude_type; + _longitude_type longitude; + typedef double _heading_type; + _heading_type heading; + typedef const char* _geo_tag_type; + _geo_tag_type geo_tag; + typedef sensor_msgs::Image _image_type; + _image_type image; + + PanoramaImg(): + header(), + pano_id(""), + latitude(0), + longitude(0), + heading(0), + geo_tag(""), + image() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + uint32_t length_pano_id = strlen(this->pano_id); + varToArr(outbuffer + offset, length_pano_id); + offset += 4; + memcpy(outbuffer + offset, this->pano_id, length_pano_id); + offset += length_pano_id; + union { + double real; + uint64_t base; + } u_latitude; + u_latitude.real = this->latitude; + *(outbuffer + offset + 0) = (u_latitude.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_latitude.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_latitude.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_latitude.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_latitude.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_latitude.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_latitude.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_latitude.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->latitude); + union { + double real; + uint64_t base; + } u_longitude; + u_longitude.real = this->longitude; + *(outbuffer + offset + 0) = (u_longitude.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_longitude.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_longitude.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_longitude.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_longitude.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_longitude.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_longitude.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_longitude.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->longitude); + union { + double real; + uint64_t base; + } u_heading; + u_heading.real = this->heading; + *(outbuffer + offset + 0) = (u_heading.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_heading.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_heading.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_heading.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_heading.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_heading.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_heading.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_heading.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->heading); + uint32_t length_geo_tag = strlen(this->geo_tag); + varToArr(outbuffer + offset, length_geo_tag); + offset += 4; + memcpy(outbuffer + offset, this->geo_tag, length_geo_tag); + offset += length_geo_tag; + offset += this->image.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t length_pano_id; + arrToVar(length_pano_id, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_pano_id; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_pano_id-1]=0; + this->pano_id = (char *)(inbuffer + offset-1); + offset += length_pano_id; + union { + double real; + uint64_t base; + } u_latitude; + u_latitude.base = 0; + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->latitude = u_latitude.real; + offset += sizeof(this->latitude); + union { + double real; + uint64_t base; + } u_longitude; + u_longitude.base = 0; + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->longitude = u_longitude.real; + offset += sizeof(this->longitude); + union { + double real; + uint64_t base; + } u_heading; + u_heading.base = 0; + u_heading.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_heading.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_heading.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_heading.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_heading.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_heading.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_heading.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_heading.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->heading = u_heading.real; + offset += sizeof(this->heading); + uint32_t length_geo_tag; + arrToVar(length_geo_tag, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_geo_tag; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_geo_tag-1]=0; + this->geo_tag = (char *)(inbuffer + offset-1); + offset += length_geo_tag; + offset += this->image.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "turtlebot3_msgs/PanoramaImg"; }; + const char * getMD5(){ return "aedf66295b374a7249a786af27aecc87"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/SensorState.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/SensorState.h new file mode 100644 index 0000000..34b624a --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/SensorState.h @@ -0,0 +1,166 @@ +#ifndef _ROS_turtlebot3_msgs_SensorState_h +#define _ROS_turtlebot3_msgs_SensorState_h + +#include +#include +#include +#include "../ros/msg.h" +#include "../ros/time.h" + +namespace turtlebot3_msgs +{ + + class SensorState : public ros::Msg + { + public: + typedef ros::Time _stamp_type; + _stamp_type stamp; + typedef uint8_t _bumper_type; + _bumper_type bumper; + typedef uint8_t _cliff_type; + _cliff_type cliff; + typedef uint8_t _button_type; + _button_type button; + typedef int32_t _left_encoder_type; + _left_encoder_type left_encoder; + typedef int32_t _right_encoder_type; + _right_encoder_type right_encoder; + typedef float _battery_type; + _battery_type battery; + enum { BUMPER_RIGHT = 1 }; + enum { BUMPER_CENTER = 2 }; + enum { BUMPER_LEFT = 4 }; + enum { CLIFF_RIGHT = 1 }; + enum { CLIFF_CENTER = 2 }; + enum { CLIFF_LEFT = 4 }; + enum { BUTTON0 = 1 }; + enum { BUTTON1 = 2 }; + enum { BUTTON2 = 4 }; + enum { ERROR_LEFT_MOTOR = 1 }; + enum { ERROR_RIGHT_MOTOR = 2 }; + + SensorState(): + stamp(), + bumper(0), + cliff(0), + button(0), + left_encoder(0), + right_encoder(0), + battery(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->stamp.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp.sec); + *(outbuffer + offset + 0) = (this->stamp.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp.nsec); + *(outbuffer + offset + 0) = (this->bumper >> (8 * 0)) & 0xFF; + offset += sizeof(this->bumper); + *(outbuffer + offset + 0) = (this->cliff >> (8 * 0)) & 0xFF; + offset += sizeof(this->cliff); + *(outbuffer + offset + 0) = (this->button >> (8 * 0)) & 0xFF; + offset += sizeof(this->button); + union { + int32_t real; + uint32_t base; + } u_left_encoder; + u_left_encoder.real = this->left_encoder; + *(outbuffer + offset + 0) = (u_left_encoder.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_left_encoder.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_left_encoder.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_left_encoder.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->left_encoder); + union { + int32_t real; + uint32_t base; + } u_right_encoder; + u_right_encoder.real = this->right_encoder; + *(outbuffer + offset + 0) = (u_right_encoder.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_right_encoder.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_right_encoder.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_right_encoder.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->right_encoder); + union { + float real; + uint32_t base; + } u_battery; + u_battery.real = this->battery; + *(outbuffer + offset + 0) = (u_battery.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_battery.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_battery.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_battery.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->battery); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->stamp.sec = ((uint32_t) (*(inbuffer + offset))); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp.sec); + this->stamp.nsec = ((uint32_t) (*(inbuffer + offset))); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp.nsec); + this->bumper = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->bumper); + this->cliff = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->cliff); + this->button = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->button); + union { + int32_t real; + uint32_t base; + } u_left_encoder; + u_left_encoder.base = 0; + u_left_encoder.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_left_encoder.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_left_encoder.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_left_encoder.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->left_encoder = u_left_encoder.real; + offset += sizeof(this->left_encoder); + union { + int32_t real; + uint32_t base; + } u_right_encoder; + u_right_encoder.base = 0; + u_right_encoder.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_right_encoder.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_right_encoder.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_right_encoder.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->right_encoder = u_right_encoder.real; + offset += sizeof(this->right_encoder); + union { + float real; + uint32_t base; + } u_battery; + u_battery.base = 0; + u_battery.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_battery.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_battery.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_battery.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->battery = u_battery.real; + offset += sizeof(this->battery); + return offset; + } + + const char * getType(){ return "turtlebot3_msgs/SensorState"; }; + const char * getMD5(){ return "427f77f85da38bc1aa3f65ffb673c94c"; }; + + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/SetFollowState.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/SetFollowState.h new file mode 100644 index 0000000..cb16e5c --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/SetFollowState.h @@ -0,0 +1,88 @@ +#ifndef _ROS_SERVICE_SetFollowState_h +#define _ROS_SERVICE_SetFollowState_h +#include +#include +#include +#include "ros/msg.h" + +namespace turtlebot3_msgs +{ + +static const char SETFOLLOWSTATE[] = "turtlebot3_msgs/SetFollowState"; + + class SetFollowStateRequest : public ros::Msg + { + public: + typedef uint8_t _state_type; + _state_type state; + enum { STOPPED = 0 }; + enum { FOLLOW = 1 }; + + SetFollowStateRequest(): + state(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->state >> (8 * 0)) & 0xFF; + offset += sizeof(this->state); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->state = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->state); + return offset; + } + + const char * getType(){ return SETFOLLOWSTATE; }; + const char * getMD5(){ return "92b912c48c68248015bb32deb0bf7713"; }; + + }; + + class SetFollowStateResponse : public ros::Msg + { + public: + typedef uint8_t _result_type; + _result_type result; + enum { OK = 0 }; + enum { ERROR = 1 }; + + SetFollowStateResponse(): + result(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->result >> (8 * 0)) & 0xFF; + offset += sizeof(this->result); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->result = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->result); + return offset; + } + + const char * getType(){ return SETFOLLOWSTATE; }; + const char * getMD5(){ return "37065417175a2f4a49100bc798e5ee49"; }; + + }; + + class SetFollowState { + public: + typedef SetFollowStateRequest Request; + typedef SetFollowStateResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/TakePanorama.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/TakePanorama.h new file mode 100644 index 0000000..4adde37 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/TakePanorama.h @@ -0,0 +1,162 @@ +#ifndef _ROS_SERVICE_TakePanorama_h +#define _ROS_SERVICE_TakePanorama_h +#include +#include +#include +#include "ros/msg.h" + +namespace turtlebot3_msgs +{ + +static const char TAKEPANORAMA[] = "turtlebot3_msgs/TakePanorama"; + + class TakePanoramaRequest : public ros::Msg + { + public: + typedef uint8_t _mode_type; + _mode_type mode; + typedef float _pano_angle_type; + _pano_angle_type pano_angle; + typedef float _snap_interval_type; + _snap_interval_type snap_interval; + typedef float _rot_vel_type; + _rot_vel_type rot_vel; + enum { SNAPANDROTATE = 0 }; + enum { CONTINUOUS = 1 }; + enum { STOP = 2 }; + + TakePanoramaRequest(): + mode(0), + pano_angle(0), + snap_interval(0), + rot_vel(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->mode >> (8 * 0)) & 0xFF; + offset += sizeof(this->mode); + union { + float real; + uint32_t base; + } u_pano_angle; + u_pano_angle.real = this->pano_angle; + *(outbuffer + offset + 0) = (u_pano_angle.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_pano_angle.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_pano_angle.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_pano_angle.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->pano_angle); + union { + float real; + uint32_t base; + } u_snap_interval; + u_snap_interval.real = this->snap_interval; + *(outbuffer + offset + 0) = (u_snap_interval.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_snap_interval.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_snap_interval.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_snap_interval.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->snap_interval); + union { + float real; + uint32_t base; + } u_rot_vel; + u_rot_vel.real = this->rot_vel; + *(outbuffer + offset + 0) = (u_rot_vel.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_rot_vel.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_rot_vel.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_rot_vel.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->rot_vel); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->mode = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->mode); + union { + float real; + uint32_t base; + } u_pano_angle; + u_pano_angle.base = 0; + u_pano_angle.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_pano_angle.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_pano_angle.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_pano_angle.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->pano_angle = u_pano_angle.real; + offset += sizeof(this->pano_angle); + union { + float real; + uint32_t base; + } u_snap_interval; + u_snap_interval.base = 0; + u_snap_interval.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_snap_interval.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_snap_interval.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_snap_interval.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->snap_interval = u_snap_interval.real; + offset += sizeof(this->snap_interval); + union { + float real; + uint32_t base; + } u_rot_vel; + u_rot_vel.base = 0; + u_rot_vel.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_rot_vel.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_rot_vel.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_rot_vel.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->rot_vel = u_rot_vel.real; + offset += sizeof(this->rot_vel); + return offset; + } + + const char * getType(){ return TAKEPANORAMA; }; + const char * getMD5(){ return "f52c694c82704221735cc576c7587ecc"; }; + + }; + + class TakePanoramaResponse : public ros::Msg + { + public: + typedef uint8_t _status_type; + _status_type status; + enum { STARTED = 0 }; + enum { IN_PROGRESS = 1 }; + enum { STOPPED = 2 }; + + TakePanoramaResponse(): + status(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->status >> (8 * 0)) & 0xFF; + offset += sizeof(this->status); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->status = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->status); + return offset; + } + + const char * getType(){ return TAKEPANORAMA; }; + const char * getMD5(){ return "1ebe3e03b034aa9578d367d7cf6ed627"; }; + + }; + + class TakePanorama { + public: + typedef TakePanoramaRequest Request; + typedef TakePanoramaResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/VersionInfo.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/VersionInfo.h new file mode 100644 index 0000000..3d81b30 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/VersionInfo.h @@ -0,0 +1,89 @@ +#ifndef _ROS_turtlebot3_msgs_VersionInfo_h +#define _ROS_turtlebot3_msgs_VersionInfo_h + +#include +#include +#include +#include "ros/msg.h" + +namespace turtlebot3_msgs +{ + + class VersionInfo : public ros::Msg + { + public: + typedef const char* _hardware_type; + _hardware_type hardware; + typedef const char* _firmware_type; + _firmware_type firmware; + typedef const char* _software_type; + _software_type software; + + VersionInfo(): + hardware(""), + firmware(""), + software("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_hardware = strlen(this->hardware); + varToArr(outbuffer + offset, length_hardware); + offset += 4; + memcpy(outbuffer + offset, this->hardware, length_hardware); + offset += length_hardware; + uint32_t length_firmware = strlen(this->firmware); + varToArr(outbuffer + offset, length_firmware); + offset += 4; + memcpy(outbuffer + offset, this->firmware, length_firmware); + offset += length_firmware; + uint32_t length_software = strlen(this->software); + varToArr(outbuffer + offset, length_software); + offset += 4; + memcpy(outbuffer + offset, this->software, length_software); + offset += length_software; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_hardware; + arrToVar(length_hardware, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_hardware; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_hardware-1]=0; + this->hardware = (char *)(inbuffer + offset-1); + offset += length_hardware; + uint32_t length_firmware; + arrToVar(length_firmware, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_firmware; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_firmware-1]=0; + this->firmware = (char *)(inbuffer + offset-1); + offset += length_firmware; + uint32_t length_software; + arrToVar(length_software, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_software; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_software-1]=0; + this->software = (char *)(inbuffer + offset-1); + offset += length_software; + return offset; + } + + const char * getType(){ return "turtlebot3_msgs/VersionInfo"; }; + const char * getMD5(){ return "43e0361461af2970a33107409403ef3c"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlesim/Color.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlesim/Color.h new file mode 100644 index 0000000..de80290 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlesim/Color.h @@ -0,0 +1,59 @@ +#ifndef _ROS_turtlesim_Color_h +#define _ROS_turtlesim_Color_h + +#include +#include +#include +#include "ros/msg.h" + +namespace turtlesim +{ + + class Color : public ros::Msg + { + public: + typedef uint8_t _r_type; + _r_type r; + typedef uint8_t _g_type; + _g_type g; + typedef uint8_t _b_type; + _b_type b; + + Color(): + r(0), + g(0), + b(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->r >> (8 * 0)) & 0xFF; + offset += sizeof(this->r); + *(outbuffer + offset + 0) = (this->g >> (8 * 0)) & 0xFF; + offset += sizeof(this->g); + *(outbuffer + offset + 0) = (this->b >> (8 * 0)) & 0xFF; + offset += sizeof(this->b); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->r = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->r); + this->g = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->g); + this->b = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->b); + return offset; + } + + const char * getType(){ return "turtlesim/Color"; }; + const char * getMD5(){ return "353891e354491c51aabe32df673fb446"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlesim/Kill.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlesim/Kill.h new file mode 100644 index 0000000..086f2bb --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlesim/Kill.h @@ -0,0 +1,87 @@ +#ifndef _ROS_SERVICE_Kill_h +#define _ROS_SERVICE_Kill_h +#include +#include +#include +#include "ros/msg.h" + +namespace turtlesim +{ + +static const char KILL[] = "turtlesim/Kill"; + + class KillRequest : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + + KillRequest(): + name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + return offset; + } + + const char * getType(){ return KILL; }; + const char * getMD5(){ return "c1f3d28f1b044c871e6eff2e9fc3c667"; }; + + }; + + class KillResponse : public ros::Msg + { + public: + + KillResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return KILL; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class Kill { + public: + typedef KillRequest Request; + typedef KillResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlesim/Pose.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlesim/Pose.h new file mode 100644 index 0000000..7dede41 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlesim/Pose.h @@ -0,0 +1,158 @@ +#ifndef _ROS_turtlesim_Pose_h +#define _ROS_turtlesim_Pose_h + +#include +#include +#include +#include "ros/msg.h" + +namespace turtlesim +{ + + class Pose : public ros::Msg + { + public: + typedef float _x_type; + _x_type x; + typedef float _y_type; + _y_type y; + typedef float _theta_type; + _theta_type theta; + typedef float _linear_velocity_type; + _linear_velocity_type linear_velocity; + typedef float _angular_velocity_type; + _angular_velocity_type angular_velocity; + + Pose(): + x(0), + y(0), + theta(0), + linear_velocity(0), + angular_velocity(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + float real; + uint32_t base; + } u_x; + u_x.real = this->x; + *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->x); + union { + float real; + uint32_t base; + } u_y; + u_y.real = this->y; + *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->y); + union { + float real; + uint32_t base; + } u_theta; + u_theta.real = this->theta; + *(outbuffer + offset + 0) = (u_theta.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_theta.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_theta.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_theta.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->theta); + union { + float real; + uint32_t base; + } u_linear_velocity; + u_linear_velocity.real = this->linear_velocity; + *(outbuffer + offset + 0) = (u_linear_velocity.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_linear_velocity.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_linear_velocity.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_linear_velocity.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->linear_velocity); + union { + float real; + uint32_t base; + } u_angular_velocity; + u_angular_velocity.real = this->angular_velocity; + *(outbuffer + offset + 0) = (u_angular_velocity.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_angular_velocity.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_angular_velocity.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_angular_velocity.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->angular_velocity); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + float real; + uint32_t base; + } u_x; + u_x.base = 0; + u_x.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->x = u_x.real; + offset += sizeof(this->x); + union { + float real; + uint32_t base; + } u_y; + u_y.base = 0; + u_y.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->y = u_y.real; + offset += sizeof(this->y); + union { + float real; + uint32_t base; + } u_theta; + u_theta.base = 0; + u_theta.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_theta.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_theta.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_theta.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->theta = u_theta.real; + offset += sizeof(this->theta); + union { + float real; + uint32_t base; + } u_linear_velocity; + u_linear_velocity.base = 0; + u_linear_velocity.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_linear_velocity.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_linear_velocity.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_linear_velocity.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->linear_velocity = u_linear_velocity.real; + offset += sizeof(this->linear_velocity); + union { + float real; + uint32_t base; + } u_angular_velocity; + u_angular_velocity.base = 0; + u_angular_velocity.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_angular_velocity.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_angular_velocity.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_angular_velocity.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->angular_velocity = u_angular_velocity.real; + offset += sizeof(this->angular_velocity); + return offset; + } + + const char * getType(){ return "turtlesim/Pose"; }; + const char * getMD5(){ return "863b248d5016ca62ea2e895ae5265cf9"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlesim/SetPen.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlesim/SetPen.h new file mode 100644 index 0000000..a0e32c0 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlesim/SetPen.h @@ -0,0 +1,105 @@ +#ifndef _ROS_SERVICE_SetPen_h +#define _ROS_SERVICE_SetPen_h +#include +#include +#include +#include "ros/msg.h" + +namespace turtlesim +{ + +static const char SETPEN[] = "turtlesim/SetPen"; + + class SetPenRequest : public ros::Msg + { + public: + typedef uint8_t _r_type; + _r_type r; + typedef uint8_t _g_type; + _g_type g; + typedef uint8_t _b_type; + _b_type b; + typedef uint8_t _width_type; + _width_type width; + typedef uint8_t _off_type; + _off_type off; + + SetPenRequest(): + r(0), + g(0), + b(0), + width(0), + off(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->r >> (8 * 0)) & 0xFF; + offset += sizeof(this->r); + *(outbuffer + offset + 0) = (this->g >> (8 * 0)) & 0xFF; + offset += sizeof(this->g); + *(outbuffer + offset + 0) = (this->b >> (8 * 0)) & 0xFF; + offset += sizeof(this->b); + *(outbuffer + offset + 0) = (this->width >> (8 * 0)) & 0xFF; + offset += sizeof(this->width); + *(outbuffer + offset + 0) = (this->off >> (8 * 0)) & 0xFF; + offset += sizeof(this->off); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->r = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->r); + this->g = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->g); + this->b = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->b); + this->width = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->width); + this->off = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->off); + return offset; + } + + const char * getType(){ return SETPEN; }; + const char * getMD5(){ return "9f452acce566bf0c0954594f69a8e41b"; }; + + }; + + class SetPenResponse : public ros::Msg + { + public: + + SetPenResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return SETPEN; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class SetPen { + public: + typedef SetPenRequest Request; + typedef SetPenResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlesim/Spawn.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlesim/Spawn.h new file mode 100644 index 0000000..f69b42f --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlesim/Spawn.h @@ -0,0 +1,176 @@ +#ifndef _ROS_SERVICE_Spawn_h +#define _ROS_SERVICE_Spawn_h +#include +#include +#include +#include "ros/msg.h" + +namespace turtlesim +{ + +static const char SPAWN[] = "turtlesim/Spawn"; + + class SpawnRequest : public ros::Msg + { + public: + typedef float _x_type; + _x_type x; + typedef float _y_type; + _y_type y; + typedef float _theta_type; + _theta_type theta; + typedef const char* _name_type; + _name_type name; + + SpawnRequest(): + x(0), + y(0), + theta(0), + name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + float real; + uint32_t base; + } u_x; + u_x.real = this->x; + *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->x); + union { + float real; + uint32_t base; + } u_y; + u_y.real = this->y; + *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->y); + union { + float real; + uint32_t base; + } u_theta; + u_theta.real = this->theta; + *(outbuffer + offset + 0) = (u_theta.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_theta.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_theta.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_theta.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->theta); + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + float real; + uint32_t base; + } u_x; + u_x.base = 0; + u_x.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->x = u_x.real; + offset += sizeof(this->x); + union { + float real; + uint32_t base; + } u_y; + u_y.base = 0; + u_y.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->y = u_y.real; + offset += sizeof(this->y); + union { + float real; + uint32_t base; + } u_theta; + u_theta.base = 0; + u_theta.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_theta.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_theta.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_theta.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->theta = u_theta.real; + offset += sizeof(this->theta); + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + return offset; + } + + const char * getType(){ return SPAWN; }; + const char * getMD5(){ return "57f001c49ab7b11d699f8606c1f4f7ff"; }; + + }; + + class SpawnResponse : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + + SpawnResponse(): + name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + return offset; + } + + const char * getType(){ return SPAWN; }; + const char * getMD5(){ return "c1f3d28f1b044c871e6eff2e9fc3c667"; }; + + }; + + class Spawn { + public: + typedef SpawnRequest Request; + typedef SpawnResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlesim/TeleportAbsolute.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlesim/TeleportAbsolute.h new file mode 100644 index 0000000..c81489b --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlesim/TeleportAbsolute.h @@ -0,0 +1,142 @@ +#ifndef _ROS_SERVICE_TeleportAbsolute_h +#define _ROS_SERVICE_TeleportAbsolute_h +#include +#include +#include +#include "ros/msg.h" + +namespace turtlesim +{ + +static const char TELEPORTABSOLUTE[] = "turtlesim/TeleportAbsolute"; + + class TeleportAbsoluteRequest : public ros::Msg + { + public: + typedef float _x_type; + _x_type x; + typedef float _y_type; + _y_type y; + typedef float _theta_type; + _theta_type theta; + + TeleportAbsoluteRequest(): + x(0), + y(0), + theta(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + float real; + uint32_t base; + } u_x; + u_x.real = this->x; + *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->x); + union { + float real; + uint32_t base; + } u_y; + u_y.real = this->y; + *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->y); + union { + float real; + uint32_t base; + } u_theta; + u_theta.real = this->theta; + *(outbuffer + offset + 0) = (u_theta.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_theta.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_theta.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_theta.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->theta); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + float real; + uint32_t base; + } u_x; + u_x.base = 0; + u_x.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->x = u_x.real; + offset += sizeof(this->x); + union { + float real; + uint32_t base; + } u_y; + u_y.base = 0; + u_y.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->y = u_y.real; + offset += sizeof(this->y); + union { + float real; + uint32_t base; + } u_theta; + u_theta.base = 0; + u_theta.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_theta.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_theta.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_theta.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->theta = u_theta.real; + offset += sizeof(this->theta); + return offset; + } + + const char * getType(){ return TELEPORTABSOLUTE; }; + const char * getMD5(){ return "a130bc60ee6513855dc62ea83fcc5b20"; }; + + }; + + class TeleportAbsoluteResponse : public ros::Msg + { + public: + + TeleportAbsoluteResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return TELEPORTABSOLUTE; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class TeleportAbsolute { + public: + typedef TeleportAbsoluteRequest Request; + typedef TeleportAbsoluteResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlesim/TeleportRelative.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlesim/TeleportRelative.h new file mode 100644 index 0000000..2da9668 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/turtlesim/TeleportRelative.h @@ -0,0 +1,118 @@ +#ifndef _ROS_SERVICE_TeleportRelative_h +#define _ROS_SERVICE_TeleportRelative_h +#include +#include +#include +#include "ros/msg.h" + +namespace turtlesim +{ + +static const char TELEPORTRELATIVE[] = "turtlesim/TeleportRelative"; + + class TeleportRelativeRequest : public ros::Msg + { + public: + typedef float _linear_type; + _linear_type linear; + typedef float _angular_type; + _angular_type angular; + + TeleportRelativeRequest(): + linear(0), + angular(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + float real; + uint32_t base; + } u_linear; + u_linear.real = this->linear; + *(outbuffer + offset + 0) = (u_linear.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_linear.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_linear.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_linear.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->linear); + union { + float real; + uint32_t base; + } u_angular; + u_angular.real = this->angular; + *(outbuffer + offset + 0) = (u_angular.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_angular.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_angular.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_angular.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->angular); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + float real; + uint32_t base; + } u_linear; + u_linear.base = 0; + u_linear.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_linear.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_linear.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_linear.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->linear = u_linear.real; + offset += sizeof(this->linear); + union { + float real; + uint32_t base; + } u_angular; + u_angular.base = 0; + u_angular.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_angular.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_angular.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_angular.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->angular = u_angular.real; + offset += sizeof(this->angular); + return offset; + } + + const char * getType(){ return TELEPORTRELATIVE; }; + const char * getMD5(){ return "9d5c2dcd348ac8f76ce2a4307bd63a13"; }; + + }; + + class TeleportRelativeResponse : public ros::Msg + { + public: + + TeleportRelativeResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return TELEPORTRELATIVE; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class TeleportRelative { + public: + typedef TeleportRelativeRequest Request; + typedef TeleportRelativeResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/uuid_msgs/UniqueID.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/uuid_msgs/UniqueID.h new file mode 100644 index 0000000..bf14c40 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/uuid_msgs/UniqueID.h @@ -0,0 +1,48 @@ +#ifndef _ROS_uuid_msgs_UniqueID_h +#define _ROS_uuid_msgs_UniqueID_h + +#include +#include +#include +#include "ros/msg.h" + +namespace uuid_msgs +{ + + class UniqueID : public ros::Msg + { + public: + uint8_t uuid[16]; + + UniqueID(): + uuid() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + for( uint32_t i = 0; i < 16; i++){ + *(outbuffer + offset + 0) = (this->uuid[i] >> (8 * 0)) & 0xFF; + offset += sizeof(this->uuid[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + for( uint32_t i = 0; i < 16; i++){ + this->uuid[i] = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->uuid[i]); + } + return offset; + } + + const char * getType(){ return "uuid_msgs/UniqueID"; }; + const char * getMD5(){ return "fec2a93b6f5367ee8112c9c0b41ff310"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/variant_msgs/Test.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/variant_msgs/Test.h new file mode 100644 index 0000000..4316dfe --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/variant_msgs/Test.h @@ -0,0 +1,241 @@ +#ifndef _ROS_variant_msgs_Test_h +#define _ROS_variant_msgs_Test_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "std_msgs/Bool.h" +#include "std_msgs/String.h" + +namespace variant_msgs +{ + + class Test : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef int32_t _builtin_int_type; + _builtin_int_type builtin_int; + typedef bool _builtin_boolean_type; + _builtin_boolean_type builtin_boolean; + typedef std_msgs::Bool _boolean_type; + _boolean_type boolean; + typedef const char* _builtin_string_type; + _builtin_string_type builtin_string; + typedef std_msgs::String _string_type; + _string_type string; + int32_t builtin_int_array[3]; + uint32_t builtin_int_vector_length; + typedef int32_t _builtin_int_vector_type; + _builtin_int_vector_type st_builtin_int_vector; + _builtin_int_vector_type * builtin_int_vector; + std_msgs::String string_array[3]; + uint32_t string_vector_length; + typedef std_msgs::String _string_vector_type; + _string_vector_type st_string_vector; + _string_vector_type * string_vector; + bool builtin_boolean_array[3]; + enum { byte_constant = 42 }; + + Test(): + header(), + builtin_int(0), + builtin_boolean(0), + boolean(), + builtin_string(""), + string(), + builtin_int_array(), + builtin_int_vector_length(0), builtin_int_vector(NULL), + string_array(), + string_vector_length(0), string_vector(NULL), + builtin_boolean_array() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + union { + int32_t real; + uint32_t base; + } u_builtin_int; + u_builtin_int.real = this->builtin_int; + *(outbuffer + offset + 0) = (u_builtin_int.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_builtin_int.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_builtin_int.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_builtin_int.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->builtin_int); + union { + bool real; + uint8_t base; + } u_builtin_boolean; + u_builtin_boolean.real = this->builtin_boolean; + *(outbuffer + offset + 0) = (u_builtin_boolean.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->builtin_boolean); + offset += this->boolean.serialize(outbuffer + offset); + uint32_t length_builtin_string = strlen(this->builtin_string); + varToArr(outbuffer + offset, length_builtin_string); + offset += 4; + memcpy(outbuffer + offset, this->builtin_string, length_builtin_string); + offset += length_builtin_string; + offset += this->string.serialize(outbuffer + offset); + for( uint32_t i = 0; i < 3; i++){ + union { + int32_t real; + uint32_t base; + } u_builtin_int_arrayi; + u_builtin_int_arrayi.real = this->builtin_int_array[i]; + *(outbuffer + offset + 0) = (u_builtin_int_arrayi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_builtin_int_arrayi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_builtin_int_arrayi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_builtin_int_arrayi.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->builtin_int_array[i]); + } + *(outbuffer + offset + 0) = (this->builtin_int_vector_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->builtin_int_vector_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->builtin_int_vector_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->builtin_int_vector_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->builtin_int_vector_length); + for( uint32_t i = 0; i < builtin_int_vector_length; i++){ + union { + int32_t real; + uint32_t base; + } u_builtin_int_vectori; + u_builtin_int_vectori.real = this->builtin_int_vector[i]; + *(outbuffer + offset + 0) = (u_builtin_int_vectori.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_builtin_int_vectori.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_builtin_int_vectori.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_builtin_int_vectori.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->builtin_int_vector[i]); + } + for( uint32_t i = 0; i < 3; i++){ + offset += this->string_array[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->string_vector_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->string_vector_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->string_vector_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->string_vector_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->string_vector_length); + for( uint32_t i = 0; i < string_vector_length; i++){ + offset += this->string_vector[i].serialize(outbuffer + offset); + } + for( uint32_t i = 0; i < 3; i++){ + union { + bool real; + uint8_t base; + } u_builtin_boolean_arrayi; + u_builtin_boolean_arrayi.real = this->builtin_boolean_array[i]; + *(outbuffer + offset + 0) = (u_builtin_boolean_arrayi.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->builtin_boolean_array[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + union { + int32_t real; + uint32_t base; + } u_builtin_int; + u_builtin_int.base = 0; + u_builtin_int.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_builtin_int.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_builtin_int.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_builtin_int.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->builtin_int = u_builtin_int.real; + offset += sizeof(this->builtin_int); + union { + bool real; + uint8_t base; + } u_builtin_boolean; + u_builtin_boolean.base = 0; + u_builtin_boolean.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->builtin_boolean = u_builtin_boolean.real; + offset += sizeof(this->builtin_boolean); + offset += this->boolean.deserialize(inbuffer + offset); + uint32_t length_builtin_string; + arrToVar(length_builtin_string, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_builtin_string; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_builtin_string-1]=0; + this->builtin_string = (char *)(inbuffer + offset-1); + offset += length_builtin_string; + offset += this->string.deserialize(inbuffer + offset); + for( uint32_t i = 0; i < 3; i++){ + union { + int32_t real; + uint32_t base; + } u_builtin_int_arrayi; + u_builtin_int_arrayi.base = 0; + u_builtin_int_arrayi.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_builtin_int_arrayi.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_builtin_int_arrayi.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_builtin_int_arrayi.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->builtin_int_array[i] = u_builtin_int_arrayi.real; + offset += sizeof(this->builtin_int_array[i]); + } + uint32_t builtin_int_vector_lengthT = ((uint32_t) (*(inbuffer + offset))); + builtin_int_vector_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + builtin_int_vector_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + builtin_int_vector_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->builtin_int_vector_length); + if(builtin_int_vector_lengthT > builtin_int_vector_length) + this->builtin_int_vector = (int32_t*)realloc(this->builtin_int_vector, builtin_int_vector_lengthT * sizeof(int32_t)); + builtin_int_vector_length = builtin_int_vector_lengthT; + for( uint32_t i = 0; i < builtin_int_vector_length; i++){ + union { + int32_t real; + uint32_t base; + } u_st_builtin_int_vector; + u_st_builtin_int_vector.base = 0; + u_st_builtin_int_vector.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_builtin_int_vector.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_builtin_int_vector.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_builtin_int_vector.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_builtin_int_vector = u_st_builtin_int_vector.real; + offset += sizeof(this->st_builtin_int_vector); + memcpy( &(this->builtin_int_vector[i]), &(this->st_builtin_int_vector), sizeof(int32_t)); + } + for( uint32_t i = 0; i < 3; i++){ + offset += this->string_array[i].deserialize(inbuffer + offset); + } + uint32_t string_vector_lengthT = ((uint32_t) (*(inbuffer + offset))); + string_vector_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + string_vector_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + string_vector_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->string_vector_length); + if(string_vector_lengthT > string_vector_length) + this->string_vector = (std_msgs::String*)realloc(this->string_vector, string_vector_lengthT * sizeof(std_msgs::String)); + string_vector_length = string_vector_lengthT; + for( uint32_t i = 0; i < string_vector_length; i++){ + offset += this->st_string_vector.deserialize(inbuffer + offset); + memcpy( &(this->string_vector[i]), &(this->st_string_vector), sizeof(std_msgs::String)); + } + for( uint32_t i = 0; i < 3; i++){ + union { + bool real; + uint8_t base; + } u_builtin_boolean_arrayi; + u_builtin_boolean_arrayi.base = 0; + u_builtin_boolean_arrayi.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->builtin_boolean_array[i] = u_builtin_boolean_arrayi.real; + offset += sizeof(this->builtin_boolean_array[i]); + } + return offset; + } + + const char * getType(){ return "variant_msgs/Test"; }; + const char * getMD5(){ return "17d92d9cea3499753cb392766b3203a1"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/variant_msgs/Variant.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/variant_msgs/Variant.h new file mode 100644 index 0000000..c62dd44 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/variant_msgs/Variant.h @@ -0,0 +1,77 @@ +#ifndef _ROS_variant_msgs_Variant_h +#define _ROS_variant_msgs_Variant_h + +#include +#include +#include +#include "ros/msg.h" +#include "variant_msgs/VariantHeader.h" +#include "variant_msgs/VariantType.h" + +namespace variant_msgs +{ + + class Variant : public ros::Msg + { + public: + typedef variant_msgs::VariantHeader _header_type; + _header_type header; + typedef variant_msgs::VariantType _type_type; + _type_type type; + uint32_t data_length; + typedef uint8_t _data_type; + _data_type st_data; + _data_type * data; + + Variant(): + header(), + type(), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->type.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->type.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (uint8_t*)realloc(this->data, data_lengthT * sizeof(uint8_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + this->st_data = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(uint8_t)); + } + return offset; + } + + const char * getType(){ return "variant_msgs/Variant"; }; + const char * getMD5(){ return "01c24cd44ef34b0c6a309bcafb6bdfab"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/variant_msgs/VariantHeader.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/variant_msgs/VariantHeader.h new file mode 100644 index 0000000..236b5cb --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/variant_msgs/VariantHeader.h @@ -0,0 +1,90 @@ +#ifndef _ROS_variant_msgs_VariantHeader_h +#define _ROS_variant_msgs_VariantHeader_h + +#include +#include +#include +#include "ros/msg.h" + +namespace variant_msgs +{ + + class VariantHeader : public ros::Msg + { + public: + typedef const char* _publisher_type; + _publisher_type publisher; + typedef const char* _topic_type; + _topic_type topic; + typedef bool _latched_type; + _latched_type latched; + + VariantHeader(): + publisher(""), + topic(""), + latched(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_publisher = strlen(this->publisher); + varToArr(outbuffer + offset, length_publisher); + offset += 4; + memcpy(outbuffer + offset, this->publisher, length_publisher); + offset += length_publisher; + uint32_t length_topic = strlen(this->topic); + varToArr(outbuffer + offset, length_topic); + offset += 4; + memcpy(outbuffer + offset, this->topic, length_topic); + offset += length_topic; + union { + bool real; + uint8_t base; + } u_latched; + u_latched.real = this->latched; + *(outbuffer + offset + 0) = (u_latched.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->latched); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_publisher; + arrToVar(length_publisher, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_publisher; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_publisher-1]=0; + this->publisher = (char *)(inbuffer + offset-1); + offset += length_publisher; + uint32_t length_topic; + arrToVar(length_topic, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_topic; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_topic-1]=0; + this->topic = (char *)(inbuffer + offset-1); + offset += length_topic; + union { + bool real; + uint8_t base; + } u_latched; + u_latched.base = 0; + u_latched.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->latched = u_latched.real; + offset += sizeof(this->latched); + return offset; + } + + const char * getType(){ return "variant_msgs/VariantHeader"; }; + const char * getMD5(){ return "e4adbe277ed51d50644d64067b86c73d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/variant_msgs/VariantType.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/variant_msgs/VariantType.h new file mode 100644 index 0000000..66c7ac7 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/variant_msgs/VariantType.h @@ -0,0 +1,89 @@ +#ifndef _ROS_variant_msgs_VariantType_h +#define _ROS_variant_msgs_VariantType_h + +#include +#include +#include +#include "ros/msg.h" + +namespace variant_msgs +{ + + class VariantType : public ros::Msg + { + public: + typedef const char* _md5_sum_type; + _md5_sum_type md5_sum; + typedef const char* _data_type_type; + _data_type_type data_type; + typedef const char* _definition_type; + _definition_type definition; + + VariantType(): + md5_sum(""), + data_type(""), + definition("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_md5_sum = strlen(this->md5_sum); + varToArr(outbuffer + offset, length_md5_sum); + offset += 4; + memcpy(outbuffer + offset, this->md5_sum, length_md5_sum); + offset += length_md5_sum; + uint32_t length_data_type = strlen(this->data_type); + varToArr(outbuffer + offset, length_data_type); + offset += 4; + memcpy(outbuffer + offset, this->data_type, length_data_type); + offset += length_data_type; + uint32_t length_definition = strlen(this->definition); + varToArr(outbuffer + offset, length_definition); + offset += 4; + memcpy(outbuffer + offset, this->definition, length_definition); + offset += length_definition; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_md5_sum; + arrToVar(length_md5_sum, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_md5_sum; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_md5_sum-1]=0; + this->md5_sum = (char *)(inbuffer + offset-1); + offset += length_md5_sum; + uint32_t length_data_type; + arrToVar(length_data_type, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_data_type; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_data_type-1]=0; + this->data_type = (char *)(inbuffer + offset-1); + offset += length_data_type; + uint32_t length_definition; + arrToVar(length_definition, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_definition; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_definition-1]=0; + this->definition = (char *)(inbuffer + offset-1); + offset += length_definition; + return offset; + } + + const char * getType(){ return "variant_msgs/VariantType"; }; + const char * getMD5(){ return "ea49579a10d85560b62a77e2f2f84caf"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/visualization_msgs/ImageMarker.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/visualization_msgs/ImageMarker.h new file mode 100644 index 0000000..c69577a --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/visualization_msgs/ImageMarker.h @@ -0,0 +1,262 @@ +#ifndef _ROS_visualization_msgs_ImageMarker_h +#define _ROS_visualization_msgs_ImageMarker_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Point.h" +#include "std_msgs/ColorRGBA.h" +#include "ros/duration.h" + +namespace visualization_msgs +{ + + class ImageMarker : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef const char* _ns_type; + _ns_type ns; + typedef int32_t _id_type; + _id_type id; + typedef int32_t _type_type; + _type_type type; + typedef int32_t _action_type; + _action_type action; + typedef geometry_msgs::Point _position_type; + _position_type position; + typedef float _scale_type; + _scale_type scale; + typedef std_msgs::ColorRGBA _outline_color_type; + _outline_color_type outline_color; + typedef uint8_t _filled_type; + _filled_type filled; + typedef std_msgs::ColorRGBA _fill_color_type; + _fill_color_type fill_color; + typedef ros::Duration _lifetime_type; + _lifetime_type lifetime; + uint32_t points_length; + typedef geometry_msgs::Point _points_type; + _points_type st_points; + _points_type * points; + uint32_t outline_colors_length; + typedef std_msgs::ColorRGBA _outline_colors_type; + _outline_colors_type st_outline_colors; + _outline_colors_type * outline_colors; + enum { CIRCLE = 0 }; + enum { LINE_STRIP = 1 }; + enum { LINE_LIST = 2 }; + enum { POLYGON = 3 }; + enum { POINTS = 4 }; + enum { ADD = 0 }; + enum { REMOVE = 1 }; + + ImageMarker(): + header(), + ns(""), + id(0), + type(0), + action(0), + position(), + scale(0), + outline_color(), + filled(0), + fill_color(), + lifetime(), + points_length(0), points(NULL), + outline_colors_length(0), outline_colors(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + uint32_t length_ns = strlen(this->ns); + varToArr(outbuffer + offset, length_ns); + offset += 4; + memcpy(outbuffer + offset, this->ns, length_ns); + offset += length_ns; + union { + int32_t real; + uint32_t base; + } u_id; + u_id.real = this->id; + *(outbuffer + offset + 0) = (u_id.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_id.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_id.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_id.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->id); + union { + int32_t real; + uint32_t base; + } u_type; + u_type.real = this->type; + *(outbuffer + offset + 0) = (u_type.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_type.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_type.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_type.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->type); + union { + int32_t real; + uint32_t base; + } u_action; + u_action.real = this->action; + *(outbuffer + offset + 0) = (u_action.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_action.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_action.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_action.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->action); + offset += this->position.serialize(outbuffer + offset); + union { + float real; + uint32_t base; + } u_scale; + u_scale.real = this->scale; + *(outbuffer + offset + 0) = (u_scale.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_scale.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_scale.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_scale.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->scale); + offset += this->outline_color.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->filled >> (8 * 0)) & 0xFF; + offset += sizeof(this->filled); + offset += this->fill_color.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->lifetime.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->lifetime.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->lifetime.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->lifetime.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->lifetime.sec); + *(outbuffer + offset + 0) = (this->lifetime.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->lifetime.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->lifetime.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->lifetime.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->lifetime.nsec); + *(outbuffer + offset + 0) = (this->points_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->points_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->points_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->points_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->points_length); + for( uint32_t i = 0; i < points_length; i++){ + offset += this->points[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->outline_colors_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->outline_colors_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->outline_colors_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->outline_colors_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->outline_colors_length); + for( uint32_t i = 0; i < outline_colors_length; i++){ + offset += this->outline_colors[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t length_ns; + arrToVar(length_ns, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_ns; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_ns-1]=0; + this->ns = (char *)(inbuffer + offset-1); + offset += length_ns; + union { + int32_t real; + uint32_t base; + } u_id; + u_id.base = 0; + u_id.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_id.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_id.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_id.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->id = u_id.real; + offset += sizeof(this->id); + union { + int32_t real; + uint32_t base; + } u_type; + u_type.base = 0; + u_type.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_type.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_type.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_type.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->type = u_type.real; + offset += sizeof(this->type); + union { + int32_t real; + uint32_t base; + } u_action; + u_action.base = 0; + u_action.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_action.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_action.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_action.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->action = u_action.real; + offset += sizeof(this->action); + offset += this->position.deserialize(inbuffer + offset); + union { + float real; + uint32_t base; + } u_scale; + u_scale.base = 0; + u_scale.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_scale.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_scale.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_scale.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->scale = u_scale.real; + offset += sizeof(this->scale); + offset += this->outline_color.deserialize(inbuffer + offset); + this->filled = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->filled); + offset += this->fill_color.deserialize(inbuffer + offset); + this->lifetime.sec = ((uint32_t) (*(inbuffer + offset))); + this->lifetime.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->lifetime.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->lifetime.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->lifetime.sec); + this->lifetime.nsec = ((uint32_t) (*(inbuffer + offset))); + this->lifetime.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->lifetime.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->lifetime.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->lifetime.nsec); + uint32_t points_lengthT = ((uint32_t) (*(inbuffer + offset))); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->points_length); + if(points_lengthT > points_length) + this->points = (geometry_msgs::Point*)realloc(this->points, points_lengthT * sizeof(geometry_msgs::Point)); + points_length = points_lengthT; + for( uint32_t i = 0; i < points_length; i++){ + offset += this->st_points.deserialize(inbuffer + offset); + memcpy( &(this->points[i]), &(this->st_points), sizeof(geometry_msgs::Point)); + } + uint32_t outline_colors_lengthT = ((uint32_t) (*(inbuffer + offset))); + outline_colors_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + outline_colors_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + outline_colors_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->outline_colors_length); + if(outline_colors_lengthT > outline_colors_length) + this->outline_colors = (std_msgs::ColorRGBA*)realloc(this->outline_colors, outline_colors_lengthT * sizeof(std_msgs::ColorRGBA)); + outline_colors_length = outline_colors_lengthT; + for( uint32_t i = 0; i < outline_colors_length; i++){ + offset += this->st_outline_colors.deserialize(inbuffer + offset); + memcpy( &(this->outline_colors[i]), &(this->st_outline_colors), sizeof(std_msgs::ColorRGBA)); + } + return offset; + } + + const char * getType(){ return "visualization_msgs/ImageMarker"; }; + const char * getMD5(){ return "1de93c67ec8858b831025a08fbf1b35c"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarker.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarker.h new file mode 100644 index 0000000..8752679 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarker.h @@ -0,0 +1,160 @@ +#ifndef _ROS_visualization_msgs_InteractiveMarker_h +#define _ROS_visualization_msgs_InteractiveMarker_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Pose.h" +#include "visualization_msgs/MenuEntry.h" +#include "visualization_msgs/InteractiveMarkerControl.h" + +namespace visualization_msgs +{ + + class InteractiveMarker : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::Pose _pose_type; + _pose_type pose; + typedef const char* _name_type; + _name_type name; + typedef const char* _description_type; + _description_type description; + typedef float _scale_type; + _scale_type scale; + uint32_t menu_entries_length; + typedef visualization_msgs::MenuEntry _menu_entries_type; + _menu_entries_type st_menu_entries; + _menu_entries_type * menu_entries; + uint32_t controls_length; + typedef visualization_msgs::InteractiveMarkerControl _controls_type; + _controls_type st_controls; + _controls_type * controls; + + InteractiveMarker(): + header(), + pose(), + name(""), + description(""), + scale(0), + menu_entries_length(0), menu_entries(NULL), + controls_length(0), controls(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->pose.serialize(outbuffer + offset); + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + uint32_t length_description = strlen(this->description); + varToArr(outbuffer + offset, length_description); + offset += 4; + memcpy(outbuffer + offset, this->description, length_description); + offset += length_description; + union { + float real; + uint32_t base; + } u_scale; + u_scale.real = this->scale; + *(outbuffer + offset + 0) = (u_scale.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_scale.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_scale.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_scale.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->scale); + *(outbuffer + offset + 0) = (this->menu_entries_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->menu_entries_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->menu_entries_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->menu_entries_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->menu_entries_length); + for( uint32_t i = 0; i < menu_entries_length; i++){ + offset += this->menu_entries[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->controls_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->controls_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->controls_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->controls_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->controls_length); + for( uint32_t i = 0; i < controls_length; i++){ + offset += this->controls[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->pose.deserialize(inbuffer + offset); + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + uint32_t length_description; + arrToVar(length_description, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_description; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_description-1]=0; + this->description = (char *)(inbuffer + offset-1); + offset += length_description; + union { + float real; + uint32_t base; + } u_scale; + u_scale.base = 0; + u_scale.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_scale.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_scale.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_scale.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->scale = u_scale.real; + offset += sizeof(this->scale); + uint32_t menu_entries_lengthT = ((uint32_t) (*(inbuffer + offset))); + menu_entries_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + menu_entries_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + menu_entries_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->menu_entries_length); + if(menu_entries_lengthT > menu_entries_length) + this->menu_entries = (visualization_msgs::MenuEntry*)realloc(this->menu_entries, menu_entries_lengthT * sizeof(visualization_msgs::MenuEntry)); + menu_entries_length = menu_entries_lengthT; + for( uint32_t i = 0; i < menu_entries_length; i++){ + offset += this->st_menu_entries.deserialize(inbuffer + offset); + memcpy( &(this->menu_entries[i]), &(this->st_menu_entries), sizeof(visualization_msgs::MenuEntry)); + } + uint32_t controls_lengthT = ((uint32_t) (*(inbuffer + offset))); + controls_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + controls_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + controls_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->controls_length); + if(controls_lengthT > controls_length) + this->controls = (visualization_msgs::InteractiveMarkerControl*)realloc(this->controls, controls_lengthT * sizeof(visualization_msgs::InteractiveMarkerControl)); + controls_length = controls_lengthT; + for( uint32_t i = 0; i < controls_length; i++){ + offset += this->st_controls.deserialize(inbuffer + offset); + memcpy( &(this->controls[i]), &(this->st_controls), sizeof(visualization_msgs::InteractiveMarkerControl)); + } + return offset; + } + + const char * getType(){ return "visualization_msgs/InteractiveMarker"; }; + const char * getMD5(){ return "dd86d22909d5a3364b384492e35c10af"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarkerControl.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarkerControl.h new file mode 100644 index 0000000..0c905ce --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarkerControl.h @@ -0,0 +1,167 @@ +#ifndef _ROS_visualization_msgs_InteractiveMarkerControl_h +#define _ROS_visualization_msgs_InteractiveMarkerControl_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Quaternion.h" +#include "visualization_msgs/Marker.h" + +namespace visualization_msgs +{ + + class InteractiveMarkerControl : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef geometry_msgs::Quaternion _orientation_type; + _orientation_type orientation; + typedef uint8_t _orientation_mode_type; + _orientation_mode_type orientation_mode; + typedef uint8_t _interaction_mode_type; + _interaction_mode_type interaction_mode; + typedef bool _always_visible_type; + _always_visible_type always_visible; + uint32_t markers_length; + typedef visualization_msgs::Marker _markers_type; + _markers_type st_markers; + _markers_type * markers; + typedef bool _independent_marker_orientation_type; + _independent_marker_orientation_type independent_marker_orientation; + typedef const char* _description_type; + _description_type description; + enum { INHERIT = 0 }; + enum { FIXED = 1 }; + enum { VIEW_FACING = 2 }; + enum { NONE = 0 }; + enum { MENU = 1 }; + enum { BUTTON = 2 }; + enum { MOVE_AXIS = 3 }; + enum { MOVE_PLANE = 4 }; + enum { ROTATE_AXIS = 5 }; + enum { MOVE_ROTATE = 6 }; + enum { MOVE_3D = 7 }; + enum { ROTATE_3D = 8 }; + enum { MOVE_ROTATE_3D = 9 }; + + InteractiveMarkerControl(): + name(""), + orientation(), + orientation_mode(0), + interaction_mode(0), + always_visible(0), + markers_length(0), markers(NULL), + independent_marker_orientation(0), + description("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + offset += this->orientation.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->orientation_mode >> (8 * 0)) & 0xFF; + offset += sizeof(this->orientation_mode); + *(outbuffer + offset + 0) = (this->interaction_mode >> (8 * 0)) & 0xFF; + offset += sizeof(this->interaction_mode); + union { + bool real; + uint8_t base; + } u_always_visible; + u_always_visible.real = this->always_visible; + *(outbuffer + offset + 0) = (u_always_visible.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->always_visible); + *(outbuffer + offset + 0) = (this->markers_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->markers_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->markers_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->markers_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->markers_length); + for( uint32_t i = 0; i < markers_length; i++){ + offset += this->markers[i].serialize(outbuffer + offset); + } + union { + bool real; + uint8_t base; + } u_independent_marker_orientation; + u_independent_marker_orientation.real = this->independent_marker_orientation; + *(outbuffer + offset + 0) = (u_independent_marker_orientation.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->independent_marker_orientation); + uint32_t length_description = strlen(this->description); + varToArr(outbuffer + offset, length_description); + offset += 4; + memcpy(outbuffer + offset, this->description, length_description); + offset += length_description; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + offset += this->orientation.deserialize(inbuffer + offset); + this->orientation_mode = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->orientation_mode); + this->interaction_mode = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->interaction_mode); + union { + bool real; + uint8_t base; + } u_always_visible; + u_always_visible.base = 0; + u_always_visible.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->always_visible = u_always_visible.real; + offset += sizeof(this->always_visible); + uint32_t markers_lengthT = ((uint32_t) (*(inbuffer + offset))); + markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->markers_length); + if(markers_lengthT > markers_length) + this->markers = (visualization_msgs::Marker*)realloc(this->markers, markers_lengthT * sizeof(visualization_msgs::Marker)); + markers_length = markers_lengthT; + for( uint32_t i = 0; i < markers_length; i++){ + offset += this->st_markers.deserialize(inbuffer + offset); + memcpy( &(this->markers[i]), &(this->st_markers), sizeof(visualization_msgs::Marker)); + } + union { + bool real; + uint8_t base; + } u_independent_marker_orientation; + u_independent_marker_orientation.base = 0; + u_independent_marker_orientation.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->independent_marker_orientation = u_independent_marker_orientation.real; + offset += sizeof(this->independent_marker_orientation); + uint32_t length_description; + arrToVar(length_description, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_description; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_description-1]=0; + this->description = (char *)(inbuffer + offset-1); + offset += length_description; + return offset; + } + + const char * getType(){ return "visualization_msgs/InteractiveMarkerControl"; }; + const char * getMD5(){ return "b3c81e785788195d1840b86c28da1aac"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarkerFeedback.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarkerFeedback.h new file mode 100644 index 0000000..3d5cebb --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarkerFeedback.h @@ -0,0 +1,151 @@ +#ifndef _ROS_visualization_msgs_InteractiveMarkerFeedback_h +#define _ROS_visualization_msgs_InteractiveMarkerFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Pose.h" +#include "geometry_msgs/Point.h" + +namespace visualization_msgs +{ + + class InteractiveMarkerFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef const char* _client_id_type; + _client_id_type client_id; + typedef const char* _marker_name_type; + _marker_name_type marker_name; + typedef const char* _control_name_type; + _control_name_type control_name; + typedef uint8_t _event_type_type; + _event_type_type event_type; + typedef geometry_msgs::Pose _pose_type; + _pose_type pose; + typedef uint32_t _menu_entry_id_type; + _menu_entry_id_type menu_entry_id; + typedef geometry_msgs::Point _mouse_point_type; + _mouse_point_type mouse_point; + typedef bool _mouse_point_valid_type; + _mouse_point_valid_type mouse_point_valid; + enum { KEEP_ALIVE = 0 }; + enum { POSE_UPDATE = 1 }; + enum { MENU_SELECT = 2 }; + enum { BUTTON_CLICK = 3 }; + enum { MOUSE_DOWN = 4 }; + enum { MOUSE_UP = 5 }; + + InteractiveMarkerFeedback(): + header(), + client_id(""), + marker_name(""), + control_name(""), + event_type(0), + pose(), + menu_entry_id(0), + mouse_point(), + mouse_point_valid(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + uint32_t length_client_id = strlen(this->client_id); + varToArr(outbuffer + offset, length_client_id); + offset += 4; + memcpy(outbuffer + offset, this->client_id, length_client_id); + offset += length_client_id; + uint32_t length_marker_name = strlen(this->marker_name); + varToArr(outbuffer + offset, length_marker_name); + offset += 4; + memcpy(outbuffer + offset, this->marker_name, length_marker_name); + offset += length_marker_name; + uint32_t length_control_name = strlen(this->control_name); + varToArr(outbuffer + offset, length_control_name); + offset += 4; + memcpy(outbuffer + offset, this->control_name, length_control_name); + offset += length_control_name; + *(outbuffer + offset + 0) = (this->event_type >> (8 * 0)) & 0xFF; + offset += sizeof(this->event_type); + offset += this->pose.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->menu_entry_id >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->menu_entry_id >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->menu_entry_id >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->menu_entry_id >> (8 * 3)) & 0xFF; + offset += sizeof(this->menu_entry_id); + offset += this->mouse_point.serialize(outbuffer + offset); + union { + bool real; + uint8_t base; + } u_mouse_point_valid; + u_mouse_point_valid.real = this->mouse_point_valid; + *(outbuffer + offset + 0) = (u_mouse_point_valid.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->mouse_point_valid); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t length_client_id; + arrToVar(length_client_id, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_client_id; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_client_id-1]=0; + this->client_id = (char *)(inbuffer + offset-1); + offset += length_client_id; + uint32_t length_marker_name; + arrToVar(length_marker_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_marker_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_marker_name-1]=0; + this->marker_name = (char *)(inbuffer + offset-1); + offset += length_marker_name; + uint32_t length_control_name; + arrToVar(length_control_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_control_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_control_name-1]=0; + this->control_name = (char *)(inbuffer + offset-1); + offset += length_control_name; + this->event_type = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->event_type); + offset += this->pose.deserialize(inbuffer + offset); + this->menu_entry_id = ((uint32_t) (*(inbuffer + offset))); + this->menu_entry_id |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->menu_entry_id |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->menu_entry_id |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->menu_entry_id); + offset += this->mouse_point.deserialize(inbuffer + offset); + union { + bool real; + uint8_t base; + } u_mouse_point_valid; + u_mouse_point_valid.base = 0; + u_mouse_point_valid.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->mouse_point_valid = u_mouse_point_valid.real; + offset += sizeof(this->mouse_point_valid); + return offset; + } + + const char * getType(){ return "visualization_msgs/InteractiveMarkerFeedback"; }; + const char * getMD5(){ return "ab0f1eee058667e28c19ff3ffc3f4b78"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarkerInit.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarkerInit.h new file mode 100644 index 0000000..a6fb154 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarkerInit.h @@ -0,0 +1,105 @@ +#ifndef _ROS_visualization_msgs_InteractiveMarkerInit_h +#define _ROS_visualization_msgs_InteractiveMarkerInit_h + +#include +#include +#include +#include "ros/msg.h" +#include "visualization_msgs/InteractiveMarker.h" + +namespace visualization_msgs +{ + + class InteractiveMarkerInit : public ros::Msg + { + public: + typedef const char* _server_id_type; + _server_id_type server_id; + typedef uint64_t _seq_num_type; + _seq_num_type seq_num; + uint32_t markers_length; + typedef visualization_msgs::InteractiveMarker _markers_type; + _markers_type st_markers; + _markers_type * markers; + + InteractiveMarkerInit(): + server_id(""), + seq_num(0), + markers_length(0), markers(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_server_id = strlen(this->server_id); + varToArr(outbuffer + offset, length_server_id); + offset += 4; + memcpy(outbuffer + offset, this->server_id, length_server_id); + offset += length_server_id; + union { + uint64_t real; + uint32_t base; + } u_seq_num; + u_seq_num.real = this->seq_num; + *(outbuffer + offset + 0) = (u_seq_num.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_seq_num.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_seq_num.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_seq_num.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->seq_num); + *(outbuffer + offset + 0) = (this->markers_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->markers_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->markers_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->markers_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->markers_length); + for( uint32_t i = 0; i < markers_length; i++){ + offset += this->markers[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_server_id; + arrToVar(length_server_id, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_server_id; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_server_id-1]=0; + this->server_id = (char *)(inbuffer + offset-1); + offset += length_server_id; + union { + uint64_t real; + uint32_t base; + } u_seq_num; + u_seq_num.base = 0; + u_seq_num.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_seq_num.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_seq_num.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_seq_num.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->seq_num = u_seq_num.real; + offset += sizeof(this->seq_num); + uint32_t markers_lengthT = ((uint32_t) (*(inbuffer + offset))); + markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->markers_length); + if(markers_lengthT > markers_length) + this->markers = (visualization_msgs::InteractiveMarker*)realloc(this->markers, markers_lengthT * sizeof(visualization_msgs::InteractiveMarker)); + markers_length = markers_lengthT; + for( uint32_t i = 0; i < markers_length; i++){ + offset += this->st_markers.deserialize(inbuffer + offset); + memcpy( &(this->markers[i]), &(this->st_markers), sizeof(visualization_msgs::InteractiveMarker)); + } + return offset; + } + + const char * getType(){ return "visualization_msgs/InteractiveMarkerInit"; }; + const char * getMD5(){ return "d5f2c5045a72456d228676ab91048734"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarkerPose.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarkerPose.h new file mode 100644 index 0000000..f46032a --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarkerPose.h @@ -0,0 +1,67 @@ +#ifndef _ROS_visualization_msgs_InteractiveMarkerPose_h +#define _ROS_visualization_msgs_InteractiveMarkerPose_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Pose.h" + +namespace visualization_msgs +{ + + class InteractiveMarkerPose : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::Pose _pose_type; + _pose_type pose; + typedef const char* _name_type; + _name_type name; + + InteractiveMarkerPose(): + header(), + pose(), + name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->pose.serialize(outbuffer + offset); + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->pose.deserialize(inbuffer + offset); + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + return offset; + } + + const char * getType(){ return "visualization_msgs/InteractiveMarkerPose"; }; + const char * getMD5(){ return "a6e6833209a196a38d798dadb02c81f8"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarkerUpdate.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarkerUpdate.h new file mode 100644 index 0000000..8cea6ca --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarkerUpdate.h @@ -0,0 +1,177 @@ +#ifndef _ROS_visualization_msgs_InteractiveMarkerUpdate_h +#define _ROS_visualization_msgs_InteractiveMarkerUpdate_h + +#include +#include +#include +#include "ros/msg.h" +#include "visualization_msgs/InteractiveMarker.h" +#include "visualization_msgs/InteractiveMarkerPose.h" + +namespace visualization_msgs +{ + + class InteractiveMarkerUpdate : public ros::Msg + { + public: + typedef const char* _server_id_type; + _server_id_type server_id; + typedef uint64_t _seq_num_type; + _seq_num_type seq_num; + typedef uint8_t _type_type; + _type_type type; + uint32_t markers_length; + typedef visualization_msgs::InteractiveMarker _markers_type; + _markers_type st_markers; + _markers_type * markers; + uint32_t poses_length; + typedef visualization_msgs::InteractiveMarkerPose _poses_type; + _poses_type st_poses; + _poses_type * poses; + uint32_t erases_length; + typedef char* _erases_type; + _erases_type st_erases; + _erases_type * erases; + enum { KEEP_ALIVE = 0 }; + enum { UPDATE = 1 }; + + InteractiveMarkerUpdate(): + server_id(""), + seq_num(0), + type(0), + markers_length(0), markers(NULL), + poses_length(0), poses(NULL), + erases_length(0), erases(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_server_id = strlen(this->server_id); + varToArr(outbuffer + offset, length_server_id); + offset += 4; + memcpy(outbuffer + offset, this->server_id, length_server_id); + offset += length_server_id; + union { + uint64_t real; + uint32_t base; + } u_seq_num; + u_seq_num.real = this->seq_num; + *(outbuffer + offset + 0) = (u_seq_num.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_seq_num.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_seq_num.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_seq_num.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->seq_num); + *(outbuffer + offset + 0) = (this->type >> (8 * 0)) & 0xFF; + offset += sizeof(this->type); + *(outbuffer + offset + 0) = (this->markers_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->markers_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->markers_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->markers_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->markers_length); + for( uint32_t i = 0; i < markers_length; i++){ + offset += this->markers[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->poses_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->poses_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->poses_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->poses_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->poses_length); + for( uint32_t i = 0; i < poses_length; i++){ + offset += this->poses[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->erases_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->erases_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->erases_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->erases_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->erases_length); + for( uint32_t i = 0; i < erases_length; i++){ + uint32_t length_erasesi = strlen(this->erases[i]); + varToArr(outbuffer + offset, length_erasesi); + offset += 4; + memcpy(outbuffer + offset, this->erases[i], length_erasesi); + offset += length_erasesi; + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_server_id; + arrToVar(length_server_id, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_server_id; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_server_id-1]=0; + this->server_id = (char *)(inbuffer + offset-1); + offset += length_server_id; + union { + uint64_t real; + uint32_t base; + } u_seq_num; + u_seq_num.base = 0; + u_seq_num.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_seq_num.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_seq_num.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_seq_num.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->seq_num = u_seq_num.real; + offset += sizeof(this->seq_num); + this->type = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->type); + uint32_t markers_lengthT = ((uint32_t) (*(inbuffer + offset))); + markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->markers_length); + if(markers_lengthT > markers_length) + this->markers = (visualization_msgs::InteractiveMarker*)realloc(this->markers, markers_lengthT * sizeof(visualization_msgs::InteractiveMarker)); + markers_length = markers_lengthT; + for( uint32_t i = 0; i < markers_length; i++){ + offset += this->st_markers.deserialize(inbuffer + offset); + memcpy( &(this->markers[i]), &(this->st_markers), sizeof(visualization_msgs::InteractiveMarker)); + } + uint32_t poses_lengthT = ((uint32_t) (*(inbuffer + offset))); + poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->poses_length); + if(poses_lengthT > poses_length) + this->poses = (visualization_msgs::InteractiveMarkerPose*)realloc(this->poses, poses_lengthT * sizeof(visualization_msgs::InteractiveMarkerPose)); + poses_length = poses_lengthT; + for( uint32_t i = 0; i < poses_length; i++){ + offset += this->st_poses.deserialize(inbuffer + offset); + memcpy( &(this->poses[i]), &(this->st_poses), sizeof(visualization_msgs::InteractiveMarkerPose)); + } + uint32_t erases_lengthT = ((uint32_t) (*(inbuffer + offset))); + erases_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + erases_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + erases_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->erases_length); + if(erases_lengthT > erases_length) + this->erases = (char**)realloc(this->erases, erases_lengthT * sizeof(char*)); + erases_length = erases_lengthT; + for( uint32_t i = 0; i < erases_length; i++){ + uint32_t length_st_erases; + arrToVar(length_st_erases, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_erases; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_erases-1]=0; + this->st_erases = (char *)(inbuffer + offset-1); + offset += length_st_erases; + memcpy( &(this->erases[i]), &(this->st_erases), sizeof(char*)); + } + return offset; + } + + const char * getType(){ return "visualization_msgs/InteractiveMarkerUpdate"; }; + const char * getMD5(){ return "710d308d0a9276d65945e92dd30b3946"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/visualization_msgs/Marker.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/visualization_msgs/Marker.h new file mode 100644 index 0000000..1c6e1b2 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/visualization_msgs/Marker.h @@ -0,0 +1,312 @@ +#ifndef _ROS_visualization_msgs_Marker_h +#define _ROS_visualization_msgs_Marker_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Pose.h" +#include "geometry_msgs/Vector3.h" +#include "std_msgs/ColorRGBA.h" +#include "ros/duration.h" +#include "geometry_msgs/Point.h" + +namespace visualization_msgs +{ + + class Marker : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef const char* _ns_type; + _ns_type ns; + typedef int32_t _id_type; + _id_type id; + typedef int32_t _type_type; + _type_type type; + typedef int32_t _action_type; + _action_type action; + typedef geometry_msgs::Pose _pose_type; + _pose_type pose; + typedef geometry_msgs::Vector3 _scale_type; + _scale_type scale; + typedef std_msgs::ColorRGBA _color_type; + _color_type color; + typedef ros::Duration _lifetime_type; + _lifetime_type lifetime; + typedef bool _frame_locked_type; + _frame_locked_type frame_locked; + uint32_t points_length; + typedef geometry_msgs::Point _points_type; + _points_type st_points; + _points_type * points; + uint32_t colors_length; + typedef std_msgs::ColorRGBA _colors_type; + _colors_type st_colors; + _colors_type * colors; + typedef const char* _text_type; + _text_type text; + typedef const char* _mesh_resource_type; + _mesh_resource_type mesh_resource; + typedef bool _mesh_use_embedded_materials_type; + _mesh_use_embedded_materials_type mesh_use_embedded_materials; + enum { ARROW = 0 }; + enum { CUBE = 1 }; + enum { SPHERE = 2 }; + enum { CYLINDER = 3 }; + enum { LINE_STRIP = 4 }; + enum { LINE_LIST = 5 }; + enum { CUBE_LIST = 6 }; + enum { SPHERE_LIST = 7 }; + enum { POINTS = 8 }; + enum { TEXT_VIEW_FACING = 9 }; + enum { MESH_RESOURCE = 10 }; + enum { TRIANGLE_LIST = 11 }; + enum { ADD = 0 }; + enum { MODIFY = 0 }; + enum { DELETE = 2 }; + enum { DELETEALL = 3 }; + + Marker(): + header(), + ns(""), + id(0), + type(0), + action(0), + pose(), + scale(), + color(), + lifetime(), + frame_locked(0), + points_length(0), points(NULL), + colors_length(0), colors(NULL), + text(""), + mesh_resource(""), + mesh_use_embedded_materials(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + uint32_t length_ns = strlen(this->ns); + varToArr(outbuffer + offset, length_ns); + offset += 4; + memcpy(outbuffer + offset, this->ns, length_ns); + offset += length_ns; + union { + int32_t real; + uint32_t base; + } u_id; + u_id.real = this->id; + *(outbuffer + offset + 0) = (u_id.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_id.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_id.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_id.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->id); + union { + int32_t real; + uint32_t base; + } u_type; + u_type.real = this->type; + *(outbuffer + offset + 0) = (u_type.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_type.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_type.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_type.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->type); + union { + int32_t real; + uint32_t base; + } u_action; + u_action.real = this->action; + *(outbuffer + offset + 0) = (u_action.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_action.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_action.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_action.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->action); + offset += this->pose.serialize(outbuffer + offset); + offset += this->scale.serialize(outbuffer + offset); + offset += this->color.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->lifetime.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->lifetime.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->lifetime.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->lifetime.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->lifetime.sec); + *(outbuffer + offset + 0) = (this->lifetime.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->lifetime.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->lifetime.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->lifetime.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->lifetime.nsec); + union { + bool real; + uint8_t base; + } u_frame_locked; + u_frame_locked.real = this->frame_locked; + *(outbuffer + offset + 0) = (u_frame_locked.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->frame_locked); + *(outbuffer + offset + 0) = (this->points_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->points_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->points_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->points_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->points_length); + for( uint32_t i = 0; i < points_length; i++){ + offset += this->points[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->colors_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->colors_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->colors_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->colors_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->colors_length); + for( uint32_t i = 0; i < colors_length; i++){ + offset += this->colors[i].serialize(outbuffer + offset); + } + uint32_t length_text = strlen(this->text); + varToArr(outbuffer + offset, length_text); + offset += 4; + memcpy(outbuffer + offset, this->text, length_text); + offset += length_text; + uint32_t length_mesh_resource = strlen(this->mesh_resource); + varToArr(outbuffer + offset, length_mesh_resource); + offset += 4; + memcpy(outbuffer + offset, this->mesh_resource, length_mesh_resource); + offset += length_mesh_resource; + union { + bool real; + uint8_t base; + } u_mesh_use_embedded_materials; + u_mesh_use_embedded_materials.real = this->mesh_use_embedded_materials; + *(outbuffer + offset + 0) = (u_mesh_use_embedded_materials.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->mesh_use_embedded_materials); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t length_ns; + arrToVar(length_ns, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_ns; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_ns-1]=0; + this->ns = (char *)(inbuffer + offset-1); + offset += length_ns; + union { + int32_t real; + uint32_t base; + } u_id; + u_id.base = 0; + u_id.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_id.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_id.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_id.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->id = u_id.real; + offset += sizeof(this->id); + union { + int32_t real; + uint32_t base; + } u_type; + u_type.base = 0; + u_type.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_type.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_type.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_type.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->type = u_type.real; + offset += sizeof(this->type); + union { + int32_t real; + uint32_t base; + } u_action; + u_action.base = 0; + u_action.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_action.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_action.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_action.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->action = u_action.real; + offset += sizeof(this->action); + offset += this->pose.deserialize(inbuffer + offset); + offset += this->scale.deserialize(inbuffer + offset); + offset += this->color.deserialize(inbuffer + offset); + this->lifetime.sec = ((uint32_t) (*(inbuffer + offset))); + this->lifetime.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->lifetime.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->lifetime.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->lifetime.sec); + this->lifetime.nsec = ((uint32_t) (*(inbuffer + offset))); + this->lifetime.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->lifetime.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->lifetime.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->lifetime.nsec); + union { + bool real; + uint8_t base; + } u_frame_locked; + u_frame_locked.base = 0; + u_frame_locked.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->frame_locked = u_frame_locked.real; + offset += sizeof(this->frame_locked); + uint32_t points_lengthT = ((uint32_t) (*(inbuffer + offset))); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->points_length); + if(points_lengthT > points_length) + this->points = (geometry_msgs::Point*)realloc(this->points, points_lengthT * sizeof(geometry_msgs::Point)); + points_length = points_lengthT; + for( uint32_t i = 0; i < points_length; i++){ + offset += this->st_points.deserialize(inbuffer + offset); + memcpy( &(this->points[i]), &(this->st_points), sizeof(geometry_msgs::Point)); + } + uint32_t colors_lengthT = ((uint32_t) (*(inbuffer + offset))); + colors_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + colors_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + colors_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->colors_length); + if(colors_lengthT > colors_length) + this->colors = (std_msgs::ColorRGBA*)realloc(this->colors, colors_lengthT * sizeof(std_msgs::ColorRGBA)); + colors_length = colors_lengthT; + for( uint32_t i = 0; i < colors_length; i++){ + offset += this->st_colors.deserialize(inbuffer + offset); + memcpy( &(this->colors[i]), &(this->st_colors), sizeof(std_msgs::ColorRGBA)); + } + uint32_t length_text; + arrToVar(length_text, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_text; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_text-1]=0; + this->text = (char *)(inbuffer + offset-1); + offset += length_text; + uint32_t length_mesh_resource; + arrToVar(length_mesh_resource, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_mesh_resource; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_mesh_resource-1]=0; + this->mesh_resource = (char *)(inbuffer + offset-1); + offset += length_mesh_resource; + union { + bool real; + uint8_t base; + } u_mesh_use_embedded_materials; + u_mesh_use_embedded_materials.base = 0; + u_mesh_use_embedded_materials.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->mesh_use_embedded_materials = u_mesh_use_embedded_materials.real; + offset += sizeof(this->mesh_use_embedded_materials); + return offset; + } + + const char * getType(){ return "visualization_msgs/Marker"; }; + const char * getMD5(){ return "4048c9de2a16f4ae8e0538085ebf1b97"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/visualization_msgs/MarkerArray.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/visualization_msgs/MarkerArray.h new file mode 100644 index 0000000..20d1fce --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/visualization_msgs/MarkerArray.h @@ -0,0 +1,64 @@ +#ifndef _ROS_visualization_msgs_MarkerArray_h +#define _ROS_visualization_msgs_MarkerArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "visualization_msgs/Marker.h" + +namespace visualization_msgs +{ + + class MarkerArray : public ros::Msg + { + public: + uint32_t markers_length; + typedef visualization_msgs::Marker _markers_type; + _markers_type st_markers; + _markers_type * markers; + + MarkerArray(): + markers_length(0), markers(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->markers_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->markers_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->markers_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->markers_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->markers_length); + for( uint32_t i = 0; i < markers_length; i++){ + offset += this->markers[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t markers_lengthT = ((uint32_t) (*(inbuffer + offset))); + markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->markers_length); + if(markers_lengthT > markers_length) + this->markers = (visualization_msgs::Marker*)realloc(this->markers, markers_lengthT * sizeof(visualization_msgs::Marker)); + markers_length = markers_lengthT; + for( uint32_t i = 0; i < markers_length; i++){ + offset += this->st_markers.deserialize(inbuffer + offset); + memcpy( &(this->markers[i]), &(this->st_markers), sizeof(visualization_msgs::Marker)); + } + return offset; + } + + const char * getType(){ return "visualization_msgs/MarkerArray"; }; + const char * getMD5(){ return "d155b9ce5188fbaf89745847fd5882d7"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/visualization_msgs/MenuEntry.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/visualization_msgs/MenuEntry.h new file mode 100644 index 0000000..c7b6c23 --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/visualization_msgs/MenuEntry.h @@ -0,0 +1,108 @@ +#ifndef _ROS_visualization_msgs_MenuEntry_h +#define _ROS_visualization_msgs_MenuEntry_h + +#include +#include +#include +#include "ros/msg.h" + +namespace visualization_msgs +{ + + class MenuEntry : public ros::Msg + { + public: + typedef uint32_t _id_type; + _id_type id; + typedef uint32_t _parent_id_type; + _parent_id_type parent_id; + typedef const char* _title_type; + _title_type title; + typedef const char* _command_type; + _command_type command; + typedef uint8_t _command_type_type; + _command_type_type command_type; + enum { FEEDBACK = 0 }; + enum { ROSRUN = 1 }; + enum { ROSLAUNCH = 2 }; + + MenuEntry(): + id(0), + parent_id(0), + title(""), + command(""), + command_type(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->id >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->id >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->id >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->id >> (8 * 3)) & 0xFF; + offset += sizeof(this->id); + *(outbuffer + offset + 0) = (this->parent_id >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->parent_id >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->parent_id >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->parent_id >> (8 * 3)) & 0xFF; + offset += sizeof(this->parent_id); + uint32_t length_title = strlen(this->title); + varToArr(outbuffer + offset, length_title); + offset += 4; + memcpy(outbuffer + offset, this->title, length_title); + offset += length_title; + uint32_t length_command = strlen(this->command); + varToArr(outbuffer + offset, length_command); + offset += 4; + memcpy(outbuffer + offset, this->command, length_command); + offset += length_command; + *(outbuffer + offset + 0) = (this->command_type >> (8 * 0)) & 0xFF; + offset += sizeof(this->command_type); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->id = ((uint32_t) (*(inbuffer + offset))); + this->id |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->id |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->id |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->id); + this->parent_id = ((uint32_t) (*(inbuffer + offset))); + this->parent_id |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->parent_id |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->parent_id |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->parent_id); + uint32_t length_title; + arrToVar(length_title, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_title; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_title-1]=0; + this->title = (char *)(inbuffer + offset-1); + offset += length_title; + uint32_t length_command; + arrToVar(length_command, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_command; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_command-1]=0; + this->command = (char *)(inbuffer + offset-1); + offset += length_command; + this->command_type = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->command_type); + return offset; + } + + const char * getType(){ return "visualization_msgs/MenuEntry"; }; + const char * getMD5(){ return "b90ec63024573de83b57aa93eb39be2d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/wfov_camera_msgs/WFOVCompressedImage.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/wfov_camera_msgs/WFOVCompressedImage.h new file mode 100644 index 0000000..c6b05bc --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/wfov_camera_msgs/WFOVCompressedImage.h @@ -0,0 +1,169 @@ +#ifndef _ROS_wfov_camera_msgs_WFOVCompressedImage_h +#define _ROS_wfov_camera_msgs_WFOVCompressedImage_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "sensor_msgs/CompressedImage.h" +#include "sensor_msgs/CameraInfo.h" +#include "geometry_msgs/TransformStamped.h" + +namespace wfov_camera_msgs +{ + + class WFOVCompressedImage : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef const char* _time_reference_type; + _time_reference_type time_reference; + typedef sensor_msgs::CompressedImage _image_type; + _image_type image; + typedef sensor_msgs::CameraInfo _info_type; + _info_type info; + typedef float _shutter_type; + _shutter_type shutter; + typedef float _gain_type; + _gain_type gain; + typedef uint16_t _white_balance_blue_type; + _white_balance_blue_type white_balance_blue; + typedef uint16_t _white_balance_red_type; + _white_balance_red_type white_balance_red; + typedef float _temperature_type; + _temperature_type temperature; + typedef geometry_msgs::TransformStamped _worldToCamera_type; + _worldToCamera_type worldToCamera; + + WFOVCompressedImage(): + header(), + time_reference(""), + image(), + info(), + shutter(0), + gain(0), + white_balance_blue(0), + white_balance_red(0), + temperature(0), + worldToCamera() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + uint32_t length_time_reference = strlen(this->time_reference); + varToArr(outbuffer + offset, length_time_reference); + offset += 4; + memcpy(outbuffer + offset, this->time_reference, length_time_reference); + offset += length_time_reference; + offset += this->image.serialize(outbuffer + offset); + offset += this->info.serialize(outbuffer + offset); + union { + float real; + uint32_t base; + } u_shutter; + u_shutter.real = this->shutter; + *(outbuffer + offset + 0) = (u_shutter.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_shutter.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_shutter.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_shutter.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->shutter); + union { + float real; + uint32_t base; + } u_gain; + u_gain.real = this->gain; + *(outbuffer + offset + 0) = (u_gain.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_gain.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_gain.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_gain.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->gain); + *(outbuffer + offset + 0) = (this->white_balance_blue >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->white_balance_blue >> (8 * 1)) & 0xFF; + offset += sizeof(this->white_balance_blue); + *(outbuffer + offset + 0) = (this->white_balance_red >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->white_balance_red >> (8 * 1)) & 0xFF; + offset += sizeof(this->white_balance_red); + union { + float real; + uint32_t base; + } u_temperature; + u_temperature.real = this->temperature; + *(outbuffer + offset + 0) = (u_temperature.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_temperature.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_temperature.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_temperature.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->temperature); + offset += this->worldToCamera.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t length_time_reference; + arrToVar(length_time_reference, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_time_reference; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_time_reference-1]=0; + this->time_reference = (char *)(inbuffer + offset-1); + offset += length_time_reference; + offset += this->image.deserialize(inbuffer + offset); + offset += this->info.deserialize(inbuffer + offset); + union { + float real; + uint32_t base; + } u_shutter; + u_shutter.base = 0; + u_shutter.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_shutter.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_shutter.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_shutter.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->shutter = u_shutter.real; + offset += sizeof(this->shutter); + union { + float real; + uint32_t base; + } u_gain; + u_gain.base = 0; + u_gain.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_gain.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_gain.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_gain.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->gain = u_gain.real; + offset += sizeof(this->gain); + this->white_balance_blue = ((uint16_t) (*(inbuffer + offset))); + this->white_balance_blue |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->white_balance_blue); + this->white_balance_red = ((uint16_t) (*(inbuffer + offset))); + this->white_balance_red |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->white_balance_red); + union { + float real; + uint32_t base; + } u_temperature; + u_temperature.base = 0; + u_temperature.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_temperature.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_temperature.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_temperature.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->temperature = u_temperature.real; + offset += sizeof(this->temperature); + offset += this->worldToCamera.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "wfov_camera_msgs/WFOVCompressedImage"; }; + const char * getMD5(){ return "5b0f85e79ffccd27dc377911c83e026f"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/wfov_camera_msgs/WFOVImage.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/wfov_camera_msgs/WFOVImage.h new file mode 100644 index 0000000..6ce4f0e --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/wfov_camera_msgs/WFOVImage.h @@ -0,0 +1,163 @@ +#ifndef _ROS_wfov_camera_msgs_WFOVImage_h +#define _ROS_wfov_camera_msgs_WFOVImage_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "sensor_msgs/Image.h" +#include "sensor_msgs/CameraInfo.h" + +namespace wfov_camera_msgs +{ + + class WFOVImage : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef const char* _time_reference_type; + _time_reference_type time_reference; + typedef sensor_msgs::Image _image_type; + _image_type image; + typedef sensor_msgs::CameraInfo _info_type; + _info_type info; + typedef float _shutter_type; + _shutter_type shutter; + typedef float _gain_type; + _gain_type gain; + typedef uint16_t _white_balance_blue_type; + _white_balance_blue_type white_balance_blue; + typedef uint16_t _white_balance_red_type; + _white_balance_red_type white_balance_red; + typedef float _temperature_type; + _temperature_type temperature; + + WFOVImage(): + header(), + time_reference(""), + image(), + info(), + shutter(0), + gain(0), + white_balance_blue(0), + white_balance_red(0), + temperature(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + uint32_t length_time_reference = strlen(this->time_reference); + varToArr(outbuffer + offset, length_time_reference); + offset += 4; + memcpy(outbuffer + offset, this->time_reference, length_time_reference); + offset += length_time_reference; + offset += this->image.serialize(outbuffer + offset); + offset += this->info.serialize(outbuffer + offset); + union { + float real; + uint32_t base; + } u_shutter; + u_shutter.real = this->shutter; + *(outbuffer + offset + 0) = (u_shutter.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_shutter.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_shutter.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_shutter.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->shutter); + union { + float real; + uint32_t base; + } u_gain; + u_gain.real = this->gain; + *(outbuffer + offset + 0) = (u_gain.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_gain.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_gain.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_gain.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->gain); + *(outbuffer + offset + 0) = (this->white_balance_blue >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->white_balance_blue >> (8 * 1)) & 0xFF; + offset += sizeof(this->white_balance_blue); + *(outbuffer + offset + 0) = (this->white_balance_red >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->white_balance_red >> (8 * 1)) & 0xFF; + offset += sizeof(this->white_balance_red); + union { + float real; + uint32_t base; + } u_temperature; + u_temperature.real = this->temperature; + *(outbuffer + offset + 0) = (u_temperature.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_temperature.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_temperature.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_temperature.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->temperature); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t length_time_reference; + arrToVar(length_time_reference, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_time_reference; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_time_reference-1]=0; + this->time_reference = (char *)(inbuffer + offset-1); + offset += length_time_reference; + offset += this->image.deserialize(inbuffer + offset); + offset += this->info.deserialize(inbuffer + offset); + union { + float real; + uint32_t base; + } u_shutter; + u_shutter.base = 0; + u_shutter.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_shutter.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_shutter.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_shutter.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->shutter = u_shutter.real; + offset += sizeof(this->shutter); + union { + float real; + uint32_t base; + } u_gain; + u_gain.base = 0; + u_gain.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_gain.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_gain.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_gain.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->gain = u_gain.real; + offset += sizeof(this->gain); + this->white_balance_blue = ((uint16_t) (*(inbuffer + offset))); + this->white_balance_blue |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->white_balance_blue); + this->white_balance_red = ((uint16_t) (*(inbuffer + offset))); + this->white_balance_red |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->white_balance_red); + union { + float real; + uint32_t base; + } u_temperature; + u_temperature.base = 0; + u_temperature.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_temperature.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_temperature.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_temperature.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->temperature = u_temperature.real; + offset += sizeof(this->temperature); + return offset; + } + + const char * getType(){ return "wfov_camera_msgs/WFOVImage"; }; + const char * getMD5(){ return "807d0db423ab5e1561cfeba09a10bc88"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/wfov_camera_msgs/WFOVTrigger.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/wfov_camera_msgs/WFOVTrigger.h new file mode 100644 index 0000000..67b0d0f --- /dev/null +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/wfov_camera_msgs/WFOVTrigger.h @@ -0,0 +1,141 @@ +#ifndef _ROS_wfov_camera_msgs_WFOVTrigger_h +#define _ROS_wfov_camera_msgs_WFOVTrigger_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "ros/time.h" + +namespace wfov_camera_msgs +{ + + class WFOVTrigger : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef const char* _time_reference_type; + _time_reference_type time_reference; + typedef ros::Time _trigger_time_type; + _trigger_time_type trigger_time; + typedef const char* _trigger_time_reference_type; + _trigger_time_reference_type trigger_time_reference; + typedef uint32_t _shutter_type; + _shutter_type shutter; + typedef uint32_t _id_type; + _id_type id; + typedef uint32_t _trigger_seq_type; + _trigger_seq_type trigger_seq; + + WFOVTrigger(): + header(), + time_reference(""), + trigger_time(), + trigger_time_reference(""), + shutter(0), + id(0), + trigger_seq(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + uint32_t length_time_reference = strlen(this->time_reference); + varToArr(outbuffer + offset, length_time_reference); + offset += 4; + memcpy(outbuffer + offset, this->time_reference, length_time_reference); + offset += length_time_reference; + *(outbuffer + offset + 0) = (this->trigger_time.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->trigger_time.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->trigger_time.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->trigger_time.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->trigger_time.sec); + *(outbuffer + offset + 0) = (this->trigger_time.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->trigger_time.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->trigger_time.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->trigger_time.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->trigger_time.nsec); + uint32_t length_trigger_time_reference = strlen(this->trigger_time_reference); + varToArr(outbuffer + offset, length_trigger_time_reference); + offset += 4; + memcpy(outbuffer + offset, this->trigger_time_reference, length_trigger_time_reference); + offset += length_trigger_time_reference; + *(outbuffer + offset + 0) = (this->shutter >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->shutter >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->shutter >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->shutter >> (8 * 3)) & 0xFF; + offset += sizeof(this->shutter); + *(outbuffer + offset + 0) = (this->id >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->id >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->id >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->id >> (8 * 3)) & 0xFF; + offset += sizeof(this->id); + *(outbuffer + offset + 0) = (this->trigger_seq >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->trigger_seq >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->trigger_seq >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->trigger_seq >> (8 * 3)) & 0xFF; + offset += sizeof(this->trigger_seq); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t length_time_reference; + arrToVar(length_time_reference, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_time_reference; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_time_reference-1]=0; + this->time_reference = (char *)(inbuffer + offset-1); + offset += length_time_reference; + this->trigger_time.sec = ((uint32_t) (*(inbuffer + offset))); + this->trigger_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->trigger_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->trigger_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->trigger_time.sec); + this->trigger_time.nsec = ((uint32_t) (*(inbuffer + offset))); + this->trigger_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->trigger_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->trigger_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->trigger_time.nsec); + uint32_t length_trigger_time_reference; + arrToVar(length_trigger_time_reference, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_trigger_time_reference; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_trigger_time_reference-1]=0; + this->trigger_time_reference = (char *)(inbuffer + offset-1); + offset += length_trigger_time_reference; + this->shutter = ((uint32_t) (*(inbuffer + offset))); + this->shutter |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->shutter |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->shutter |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->shutter); + this->id = ((uint32_t) (*(inbuffer + offset))); + this->id |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->id |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->id |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->id); + this->trigger_seq = ((uint32_t) (*(inbuffer + offset))); + this->trigger_seq |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->trigger_seq |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->trigger_seq |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->trigger_seq); + return offset; + } + + const char * getType(){ return "wfov_camera_msgs/WFOVTrigger"; }; + const char * getMD5(){ return "e38c040150f1be3148468f6b9974f8bf"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Info.plist b/cr/externals/cr.robotout.mxo/Contents/Info.plist new file mode 100644 index 0000000..7057319 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Info.plist @@ -0,0 +1,46 @@ + + + + + BuildMachineOSBuild + 16G1314 + CFBundleDevelopmentRegion + English + CFBundleExecutable + cr.robotout + CFBundleIdentifier + boardout + CFBundleInfoDictionaryVersion + 7.0.1 + CFBundleLongVersionString + cr.robotout 7.0.1, Copyright 2014 Cycling '74 + CFBundlePackageType + iLaX + CFBundleShortVersionString + 7.0.1 + CFBundleSignature + max2 + CFBundleSupportedPlatforms + + MacOSX + + CFBundleVersion + 7.0.1 + CSResourcesFileMapped + + DTCompiler + com.apple.compilers.llvm.clang.1_0 + DTPlatformBuild + 8E3004b + DTPlatformVersion + GM + DTSDKBuild + 16E185 + DTSDKName + macosx10.12 + DTXcode + 0833 + DTXcodeBuild + 8E3004b + + diff --git a/cr/externals/cr.robotout.mxo/Contents/MacOS/cr.robotout b/cr/externals/cr.robotout.mxo/Contents/MacOS/cr.robotout new file mode 100755 index 0000000000000000000000000000000000000000..fea4005aa8209ccc35118f446955883340b2ae6e GIT binary patch literal 221828 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Ê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 +#include +#include +#include "ros/msg.h" +#include "actionlib/TestActionGoal.h" +#include "actionlib/TestActionResult.h" +#include "actionlib/TestActionFeedback.h" + +namespace actionlib +{ + + class TestAction : public ros::Msg + { + public: + typedef actionlib::TestActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef actionlib::TestActionResult _action_result_type; + _action_result_type action_result; + typedef actionlib::TestActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + TestAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib/TestAction"; }; + const char * getMD5(){ return "991e87a72802262dfbe5d1b3cf6efc9a"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestActionFeedback.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestActionFeedback.h new file mode 100644 index 0000000..aab52af --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_TestActionFeedback_h +#define _ROS_actionlib_TestActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "actionlib/TestFeedback.h" + +namespace actionlib +{ + + class TestActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef actionlib::TestFeedback _feedback_type; + _feedback_type feedback; + + TestActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib/TestActionFeedback"; }; + const char * getMD5(){ return "6d3d0bf7fb3dda24779c010a9f3eb7cb"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestActionGoal.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestActionGoal.h new file mode 100644 index 0000000..6cb7402 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_TestActionGoal_h +#define _ROS_actionlib_TestActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "actionlib/TestGoal.h" + +namespace actionlib +{ + + class TestActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef actionlib::TestGoal _goal_type; + _goal_type goal; + + TestActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib/TestActionGoal"; }; + const char * getMD5(){ return "348369c5b403676156094e8c159720bf"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestActionResult.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestActionResult.h new file mode 100644 index 0000000..d534d0a --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_TestActionResult_h +#define _ROS_actionlib_TestActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "actionlib/TestResult.h" + +namespace actionlib +{ + + class TestActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef actionlib::TestResult _result_type; + _result_type result; + + TestActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib/TestActionResult"; }; + const char * getMD5(){ return "3d669e3a63aa986c667ea7b0f46ce85e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestFeedback.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestFeedback.h new file mode 100644 index 0000000..83798cf --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestFeedback.h @@ -0,0 +1,62 @@ +#ifndef _ROS_actionlib_TestFeedback_h +#define _ROS_actionlib_TestFeedback_h + +#include +#include +#include +#include "ros/msg.h" + +namespace actionlib +{ + + class TestFeedback : public ros::Msg + { + public: + typedef int32_t _feedback_type; + _feedback_type feedback; + + TestFeedback(): + feedback(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_feedback; + u_feedback.real = this->feedback; + *(outbuffer + offset + 0) = (u_feedback.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_feedback.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_feedback.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_feedback.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->feedback); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_feedback; + u_feedback.base = 0; + u_feedback.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_feedback.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_feedback.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_feedback.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->feedback = u_feedback.real; + offset += sizeof(this->feedback); + return offset; + } + + const char * getType(){ return "actionlib/TestFeedback"; }; + const char * getMD5(){ return "49ceb5b32ea3af22073ede4a0328249e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestGoal.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestGoal.h new file mode 100644 index 0000000..40d3a99 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestGoal.h @@ -0,0 +1,62 @@ +#ifndef _ROS_actionlib_TestGoal_h +#define _ROS_actionlib_TestGoal_h + +#include +#include +#include +#include "ros/msg.h" + +namespace actionlib +{ + + class TestGoal : public ros::Msg + { + public: + typedef int32_t _goal_type; + _goal_type goal; + + TestGoal(): + goal(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_goal; + u_goal.real = this->goal; + *(outbuffer + offset + 0) = (u_goal.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_goal.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_goal.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_goal.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->goal); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_goal; + u_goal.base = 0; + u_goal.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_goal.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_goal.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_goal.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->goal = u_goal.real; + offset += sizeof(this->goal); + return offset; + } + + const char * getType(){ return "actionlib/TestGoal"; }; + const char * getMD5(){ return "18df0149936b7aa95588e3862476ebde"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestRequestAction.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestRequestAction.h new file mode 100644 index 0000000..52a2fe9 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestRequestAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_TestRequestAction_h +#define _ROS_actionlib_TestRequestAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "actionlib/TestRequestActionGoal.h" +#include "actionlib/TestRequestActionResult.h" +#include "actionlib/TestRequestActionFeedback.h" + +namespace actionlib +{ + + class TestRequestAction : public ros::Msg + { + public: + typedef actionlib::TestRequestActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef actionlib::TestRequestActionResult _action_result_type; + _action_result_type action_result; + typedef actionlib::TestRequestActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + TestRequestAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib/TestRequestAction"; }; + const char * getMD5(){ return "dc44b1f4045dbf0d1db54423b3b86b30"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestRequestActionFeedback.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestRequestActionFeedback.h new file mode 100644 index 0000000..0d585c0 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestRequestActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_TestRequestActionFeedback_h +#define _ROS_actionlib_TestRequestActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "actionlib/TestRequestFeedback.h" + +namespace actionlib +{ + + class TestRequestActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef actionlib::TestRequestFeedback _feedback_type; + _feedback_type feedback; + + TestRequestActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib/TestRequestActionFeedback"; }; + const char * getMD5(){ return "aae20e09065c3809e8a8e87c4c8953fd"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestRequestActionGoal.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestRequestActionGoal.h new file mode 100644 index 0000000..24c6c48 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestRequestActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_TestRequestActionGoal_h +#define _ROS_actionlib_TestRequestActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "actionlib/TestRequestGoal.h" + +namespace actionlib +{ + + class TestRequestActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef actionlib::TestRequestGoal _goal_type; + _goal_type goal; + + TestRequestActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib/TestRequestActionGoal"; }; + const char * getMD5(){ return "1889556d3fef88f821c7cb004e4251f3"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestRequestActionResult.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestRequestActionResult.h new file mode 100644 index 0000000..a71e715 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestRequestActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_TestRequestActionResult_h +#define _ROS_actionlib_TestRequestActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "actionlib/TestRequestResult.h" + +namespace actionlib +{ + + class TestRequestActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef actionlib::TestRequestResult _result_type; + _result_type result; + + TestRequestActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib/TestRequestActionResult"; }; + const char * getMD5(){ return "0476d1fdf437a3a6e7d6d0e9f5561298"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestRequestFeedback.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestRequestFeedback.h new file mode 100644 index 0000000..f1fc247 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestRequestFeedback.h @@ -0,0 +1,38 @@ +#ifndef _ROS_actionlib_TestRequestFeedback_h +#define _ROS_actionlib_TestRequestFeedback_h + +#include +#include +#include +#include "ros/msg.h" + +namespace actionlib +{ + + class TestRequestFeedback : public ros::Msg + { + public: + + TestRequestFeedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "actionlib/TestRequestFeedback"; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestRequestGoal.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestRequestGoal.h new file mode 100644 index 0000000..321ebd3 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestRequestGoal.h @@ -0,0 +1,215 @@ +#ifndef _ROS_actionlib_TestRequestGoal_h +#define _ROS_actionlib_TestRequestGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "ros/duration.h" + +namespace actionlib +{ + + class TestRequestGoal : public ros::Msg + { + public: + typedef int32_t _terminate_status_type; + _terminate_status_type terminate_status; + typedef bool _ignore_cancel_type; + _ignore_cancel_type ignore_cancel; + typedef const char* _result_text_type; + _result_text_type result_text; + typedef int32_t _the_result_type; + _the_result_type the_result; + typedef bool _is_simple_client_type; + _is_simple_client_type is_simple_client; + typedef ros::Duration _delay_accept_type; + _delay_accept_type delay_accept; + typedef ros::Duration _delay_terminate_type; + _delay_terminate_type delay_terminate; + typedef ros::Duration _pause_status_type; + _pause_status_type pause_status; + enum { TERMINATE_SUCCESS = 0 }; + enum { TERMINATE_ABORTED = 1 }; + enum { TERMINATE_REJECTED = 2 }; + enum { TERMINATE_LOSE = 3 }; + enum { TERMINATE_DROP = 4 }; + enum { TERMINATE_EXCEPTION = 5 }; + + TestRequestGoal(): + terminate_status(0), + ignore_cancel(0), + result_text(""), + the_result(0), + is_simple_client(0), + delay_accept(), + delay_terminate(), + pause_status() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_terminate_status; + u_terminate_status.real = this->terminate_status; + *(outbuffer + offset + 0) = (u_terminate_status.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_terminate_status.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_terminate_status.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_terminate_status.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->terminate_status); + union { + bool real; + uint8_t base; + } u_ignore_cancel; + u_ignore_cancel.real = this->ignore_cancel; + *(outbuffer + offset + 0) = (u_ignore_cancel.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->ignore_cancel); + uint32_t length_result_text = strlen(this->result_text); + varToArr(outbuffer + offset, length_result_text); + offset += 4; + memcpy(outbuffer + offset, this->result_text, length_result_text); + offset += length_result_text; + union { + int32_t real; + uint32_t base; + } u_the_result; + u_the_result.real = this->the_result; + *(outbuffer + offset + 0) = (u_the_result.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_the_result.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_the_result.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_the_result.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->the_result); + union { + bool real; + uint8_t base; + } u_is_simple_client; + u_is_simple_client.real = this->is_simple_client; + *(outbuffer + offset + 0) = (u_is_simple_client.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->is_simple_client); + *(outbuffer + offset + 0) = (this->delay_accept.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->delay_accept.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->delay_accept.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->delay_accept.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->delay_accept.sec); + *(outbuffer + offset + 0) = (this->delay_accept.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->delay_accept.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->delay_accept.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->delay_accept.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->delay_accept.nsec); + *(outbuffer + offset + 0) = (this->delay_terminate.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->delay_terminate.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->delay_terminate.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->delay_terminate.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->delay_terminate.sec); + *(outbuffer + offset + 0) = (this->delay_terminate.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->delay_terminate.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->delay_terminate.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->delay_terminate.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->delay_terminate.nsec); + *(outbuffer + offset + 0) = (this->pause_status.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->pause_status.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->pause_status.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->pause_status.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->pause_status.sec); + *(outbuffer + offset + 0) = (this->pause_status.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->pause_status.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->pause_status.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->pause_status.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->pause_status.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_terminate_status; + u_terminate_status.base = 0; + u_terminate_status.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_terminate_status.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_terminate_status.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_terminate_status.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->terminate_status = u_terminate_status.real; + offset += sizeof(this->terminate_status); + union { + bool real; + uint8_t base; + } u_ignore_cancel; + u_ignore_cancel.base = 0; + u_ignore_cancel.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->ignore_cancel = u_ignore_cancel.real; + offset += sizeof(this->ignore_cancel); + uint32_t length_result_text; + arrToVar(length_result_text, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_result_text; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_result_text-1]=0; + this->result_text = (char *)(inbuffer + offset-1); + offset += length_result_text; + union { + int32_t real; + uint32_t base; + } u_the_result; + u_the_result.base = 0; + u_the_result.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_the_result.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_the_result.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_the_result.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->the_result = u_the_result.real; + offset += sizeof(this->the_result); + union { + bool real; + uint8_t base; + } u_is_simple_client; + u_is_simple_client.base = 0; + u_is_simple_client.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->is_simple_client = u_is_simple_client.real; + offset += sizeof(this->is_simple_client); + this->delay_accept.sec = ((uint32_t) (*(inbuffer + offset))); + this->delay_accept.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->delay_accept.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->delay_accept.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->delay_accept.sec); + this->delay_accept.nsec = ((uint32_t) (*(inbuffer + offset))); + this->delay_accept.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->delay_accept.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->delay_accept.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->delay_accept.nsec); + this->delay_terminate.sec = ((uint32_t) (*(inbuffer + offset))); + this->delay_terminate.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->delay_terminate.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->delay_terminate.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->delay_terminate.sec); + this->delay_terminate.nsec = ((uint32_t) (*(inbuffer + offset))); + this->delay_terminate.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->delay_terminate.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->delay_terminate.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->delay_terminate.nsec); + this->pause_status.sec = ((uint32_t) (*(inbuffer + offset))); + this->pause_status.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->pause_status.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->pause_status.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->pause_status.sec); + this->pause_status.nsec = ((uint32_t) (*(inbuffer + offset))); + this->pause_status.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->pause_status.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->pause_status.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->pause_status.nsec); + return offset; + } + + const char * getType(){ return "actionlib/TestRequestGoal"; }; + const char * getMD5(){ return "db5d00ba98302d6c6dd3737e9a03ceea"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestRequestResult.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestRequestResult.h new file mode 100644 index 0000000..9788725 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestRequestResult.h @@ -0,0 +1,80 @@ +#ifndef _ROS_actionlib_TestRequestResult_h +#define _ROS_actionlib_TestRequestResult_h + +#include +#include +#include +#include "ros/msg.h" + +namespace actionlib +{ + + class TestRequestResult : public ros::Msg + { + public: + typedef int32_t _the_result_type; + _the_result_type the_result; + typedef bool _is_simple_server_type; + _is_simple_server_type is_simple_server; + + TestRequestResult(): + the_result(0), + is_simple_server(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_the_result; + u_the_result.real = this->the_result; + *(outbuffer + offset + 0) = (u_the_result.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_the_result.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_the_result.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_the_result.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->the_result); + union { + bool real; + uint8_t base; + } u_is_simple_server; + u_is_simple_server.real = this->is_simple_server; + *(outbuffer + offset + 0) = (u_is_simple_server.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->is_simple_server); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_the_result; + u_the_result.base = 0; + u_the_result.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_the_result.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_the_result.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_the_result.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->the_result = u_the_result.real; + offset += sizeof(this->the_result); + union { + bool real; + uint8_t base; + } u_is_simple_server; + u_is_simple_server.base = 0; + u_is_simple_server.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->is_simple_server = u_is_simple_server.real; + offset += sizeof(this->is_simple_server); + return offset; + } + + const char * getType(){ return "actionlib/TestRequestResult"; }; + const char * getMD5(){ return "61c2364524499c7c5017e2f3fce7ba06"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestResult.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestResult.h new file mode 100644 index 0000000..5c9718c --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TestResult.h @@ -0,0 +1,62 @@ +#ifndef _ROS_actionlib_TestResult_h +#define _ROS_actionlib_TestResult_h + +#include +#include +#include +#include "ros/msg.h" + +namespace actionlib +{ + + class TestResult : public ros::Msg + { + public: + typedef int32_t _result_type; + _result_type result; + + TestResult(): + result(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_result; + u_result.real = this->result; + *(outbuffer + offset + 0) = (u_result.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_result.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_result.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_result.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->result); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_result; + u_result.base = 0; + u_result.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_result.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_result.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_result.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->result = u_result.real; + offset += sizeof(this->result); + return offset; + } + + const char * getType(){ return "actionlib/TestResult"; }; + const char * getMD5(){ return "034a8e20d6a306665e3a5b340fab3f09"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsAction.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsAction.h new file mode 100644 index 0000000..30c73cc --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_TwoIntsAction_h +#define _ROS_actionlib_TwoIntsAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "actionlib/TwoIntsActionGoal.h" +#include "actionlib/TwoIntsActionResult.h" +#include "actionlib/TwoIntsActionFeedback.h" + +namespace actionlib +{ + + class TwoIntsAction : public ros::Msg + { + public: + typedef actionlib::TwoIntsActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef actionlib::TwoIntsActionResult _action_result_type; + _action_result_type action_result; + typedef actionlib::TwoIntsActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + TwoIntsAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib/TwoIntsAction"; }; + const char * getMD5(){ return "6d1aa538c4bd6183a2dfb7fcac41ee50"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsActionFeedback.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsActionFeedback.h new file mode 100644 index 0000000..8cd4862 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_TwoIntsActionFeedback_h +#define _ROS_actionlib_TwoIntsActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "actionlib/TwoIntsFeedback.h" + +namespace actionlib +{ + + class TwoIntsActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef actionlib::TwoIntsFeedback _feedback_type; + _feedback_type feedback; + + TwoIntsActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib/TwoIntsActionFeedback"; }; + const char * getMD5(){ return "aae20e09065c3809e8a8e87c4c8953fd"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsActionGoal.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsActionGoal.h new file mode 100644 index 0000000..7d33c17 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_TwoIntsActionGoal_h +#define _ROS_actionlib_TwoIntsActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "actionlib/TwoIntsGoal.h" + +namespace actionlib +{ + + class TwoIntsActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef actionlib::TwoIntsGoal _goal_type; + _goal_type goal; + + TwoIntsActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib/TwoIntsActionGoal"; }; + const char * getMD5(){ return "684a2db55d6ffb8046fb9d6764ce0860"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsActionResult.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsActionResult.h new file mode 100644 index 0000000..e36c808 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_TwoIntsActionResult_h +#define _ROS_actionlib_TwoIntsActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "actionlib/TwoIntsResult.h" + +namespace actionlib +{ + + class TwoIntsActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef actionlib::TwoIntsResult _result_type; + _result_type result; + + TwoIntsActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib/TwoIntsActionResult"; }; + const char * getMD5(){ return "3ba7dea8b8cddcae4528ade4ef74b6e7"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsFeedback.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsFeedback.h new file mode 100644 index 0000000..3789c4d --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsFeedback.h @@ -0,0 +1,38 @@ +#ifndef _ROS_actionlib_TwoIntsFeedback_h +#define _ROS_actionlib_TwoIntsFeedback_h + +#include +#include +#include +#include "ros/msg.h" + +namespace actionlib +{ + + class TwoIntsFeedback : public ros::Msg + { + public: + + TwoIntsFeedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "actionlib/TwoIntsFeedback"; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsGoal.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsGoal.h new file mode 100644 index 0000000..088c6ec --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsGoal.h @@ -0,0 +1,102 @@ +#ifndef _ROS_actionlib_TwoIntsGoal_h +#define _ROS_actionlib_TwoIntsGoal_h + +#include +#include +#include +#include "ros/msg.h" + +namespace actionlib +{ + + class TwoIntsGoal : public ros::Msg + { + public: + typedef int64_t _a_type; + _a_type a; + typedef int64_t _b_type; + _b_type b; + + TwoIntsGoal(): + a(0), + b(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_a; + u_a.real = this->a; + *(outbuffer + offset + 0) = (u_a.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_a.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_a.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_a.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_a.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_a.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_a.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_a.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->a); + union { + int64_t real; + uint64_t base; + } u_b; + u_b.real = this->b; + *(outbuffer + offset + 0) = (u_b.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_b.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_b.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_b.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_b.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_b.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_b.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_b.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->b); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_a; + u_a.base = 0; + u_a.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->a = u_a.real; + offset += sizeof(this->a); + union { + int64_t real; + uint64_t base; + } u_b; + u_b.base = 0; + u_b.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->b = u_b.real; + offset += sizeof(this->b); + return offset; + } + + const char * getType(){ return "actionlib/TwoIntsGoal"; }; + const char * getMD5(){ return "36d09b846be0b371c5f190354dd3153e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsResult.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsResult.h new file mode 100644 index 0000000..51d3cce --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib/TwoIntsResult.h @@ -0,0 +1,70 @@ +#ifndef _ROS_actionlib_TwoIntsResult_h +#define _ROS_actionlib_TwoIntsResult_h + +#include +#include +#include +#include "ros/msg.h" + +namespace actionlib +{ + + class TwoIntsResult : public ros::Msg + { + public: + typedef int64_t _sum_type; + _sum_type sum; + + TwoIntsResult(): + sum(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_sum; + u_sum.real = this->sum; + *(outbuffer + offset + 0) = (u_sum.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_sum.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_sum.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_sum.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_sum.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_sum.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_sum.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_sum.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->sum); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_sum; + u_sum.base = 0; + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->sum = u_sum.real; + offset += sizeof(this->sum); + return offset; + } + + const char * getType(){ return "actionlib/TwoIntsResult"; }; + const char * getMD5(){ return "b88405221c77b1878a3cbbfff53428d7"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_msgs/GoalID.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_msgs/GoalID.h new file mode 100644 index 0000000..24391a3 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_msgs/GoalID.h @@ -0,0 +1,79 @@ +#ifndef _ROS_actionlib_msgs_GoalID_h +#define _ROS_actionlib_msgs_GoalID_h + +#include +#include +#include +#include "ros/msg.h" +#include "ros/time.h" + +namespace actionlib_msgs +{ + + class GoalID : public ros::Msg + { + public: + typedef ros::Time _stamp_type; + _stamp_type stamp; + typedef const char* _id_type; + _id_type id; + + GoalID(): + stamp(), + id("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->stamp.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp.sec); + *(outbuffer + offset + 0) = (this->stamp.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp.nsec); + uint32_t length_id = strlen(this->id); + varToArr(outbuffer + offset, length_id); + offset += 4; + memcpy(outbuffer + offset, this->id, length_id); + offset += length_id; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->stamp.sec = ((uint32_t) (*(inbuffer + offset))); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp.sec); + this->stamp.nsec = ((uint32_t) (*(inbuffer + offset))); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp.nsec); + uint32_t length_id; + arrToVar(length_id, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_id; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_id-1]=0; + this->id = (char *)(inbuffer + offset-1); + offset += length_id; + return offset; + } + + const char * getType(){ return "actionlib_msgs/GoalID"; }; + const char * getMD5(){ return "302881f31927c1df708a2dbab0e80ee8"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_msgs/GoalStatus.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_msgs/GoalStatus.h new file mode 100644 index 0000000..349524c --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_msgs/GoalStatus.h @@ -0,0 +1,78 @@ +#ifndef _ROS_actionlib_msgs_GoalStatus_h +#define _ROS_actionlib_msgs_GoalStatus_h + +#include +#include +#include +#include "ros/msg.h" +#include "actionlib_msgs/GoalID.h" + +namespace actionlib_msgs +{ + + class GoalStatus : public ros::Msg + { + public: + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef uint8_t _status_type; + _status_type status; + typedef const char* _text_type; + _text_type text; + enum { PENDING = 0 }; + enum { ACTIVE = 1 }; + enum { PREEMPTED = 2 }; + enum { SUCCEEDED = 3 }; + enum { ABORTED = 4 }; + enum { REJECTED = 5 }; + enum { PREEMPTING = 6 }; + enum { RECALLING = 7 }; + enum { RECALLED = 8 }; + enum { LOST = 9 }; + + GoalStatus(): + goal_id(), + status(0), + text("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->goal_id.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->status >> (8 * 0)) & 0xFF; + offset += sizeof(this->status); + uint32_t length_text = strlen(this->text); + varToArr(outbuffer + offset, length_text); + offset += 4; + memcpy(outbuffer + offset, this->text, length_text); + offset += length_text; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->goal_id.deserialize(inbuffer + offset); + this->status = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->status); + uint32_t length_text; + arrToVar(length_text, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_text; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_text-1]=0; + this->text = (char *)(inbuffer + offset-1); + offset += length_text; + return offset; + } + + const char * getType(){ return "actionlib_msgs/GoalStatus"; }; + const char * getMD5(){ return "d388f9b87b3c471f784434d671988d4a"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_msgs/GoalStatusArray.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_msgs/GoalStatusArray.h new file mode 100644 index 0000000..9e39b5f --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_msgs/GoalStatusArray.h @@ -0,0 +1,70 @@ +#ifndef _ROS_actionlib_msgs_GoalStatusArray_h +#define _ROS_actionlib_msgs_GoalStatusArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" + +namespace actionlib_msgs +{ + + class GoalStatusArray : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t status_list_length; + typedef actionlib_msgs::GoalStatus _status_list_type; + _status_list_type st_status_list; + _status_list_type * status_list; + + GoalStatusArray(): + header(), + status_list_length(0), status_list(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->status_list_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->status_list_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->status_list_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->status_list_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->status_list_length); + for( uint32_t i = 0; i < status_list_length; i++){ + offset += this->status_list[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t status_list_lengthT = ((uint32_t) (*(inbuffer + offset))); + status_list_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + status_list_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + status_list_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->status_list_length); + if(status_list_lengthT > status_list_length) + this->status_list = (actionlib_msgs::GoalStatus*)realloc(this->status_list, status_list_lengthT * sizeof(actionlib_msgs::GoalStatus)); + status_list_length = status_list_lengthT; + for( uint32_t i = 0; i < status_list_length; i++){ + offset += this->st_status_list.deserialize(inbuffer + offset); + memcpy( &(this->status_list[i]), &(this->st_status_list), sizeof(actionlib_msgs::GoalStatus)); + } + return offset; + } + + const char * getType(){ return "actionlib_msgs/GoalStatusArray"; }; + const char * getMD5(){ return "8b2b82f13216d0a8ea88bd3af735e619"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingAction.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingAction.h new file mode 100644 index 0000000..16eef59 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_tutorials_AveragingAction_h +#define _ROS_actionlib_tutorials_AveragingAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "actionlib_tutorials/AveragingActionGoal.h" +#include "actionlib_tutorials/AveragingActionResult.h" +#include "actionlib_tutorials/AveragingActionFeedback.h" + +namespace actionlib_tutorials +{ + + class AveragingAction : public ros::Msg + { + public: + typedef actionlib_tutorials::AveragingActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef actionlib_tutorials::AveragingActionResult _action_result_type; + _action_result_type action_result; + typedef actionlib_tutorials::AveragingActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + AveragingAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib_tutorials/AveragingAction"; }; + const char * getMD5(){ return "628678f2b4fa6a5951746a4a2d39e716"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingActionFeedback.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingActionFeedback.h new file mode 100644 index 0000000..e269f39 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_tutorials_AveragingActionFeedback_h +#define _ROS_actionlib_tutorials_AveragingActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "actionlib_tutorials/AveragingFeedback.h" + +namespace actionlib_tutorials +{ + + class AveragingActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef actionlib_tutorials::AveragingFeedback _feedback_type; + _feedback_type feedback; + + AveragingActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib_tutorials/AveragingActionFeedback"; }; + const char * getMD5(){ return "78a4a09241b1791069223ae7ebd5b16b"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingActionGoal.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingActionGoal.h new file mode 100644 index 0000000..e9f718f --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_tutorials_AveragingActionGoal_h +#define _ROS_actionlib_tutorials_AveragingActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "actionlib_tutorials/AveragingGoal.h" + +namespace actionlib_tutorials +{ + + class AveragingActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef actionlib_tutorials::AveragingGoal _goal_type; + _goal_type goal; + + AveragingActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib_tutorials/AveragingActionGoal"; }; + const char * getMD5(){ return "1561825b734ebd6039851c501e3fb570"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingActionResult.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingActionResult.h new file mode 100644 index 0000000..db99e51 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_tutorials_AveragingActionResult_h +#define _ROS_actionlib_tutorials_AveragingActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "actionlib_tutorials/AveragingResult.h" + +namespace actionlib_tutorials +{ + + class AveragingActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef actionlib_tutorials::AveragingResult _result_type; + _result_type result; + + AveragingActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib_tutorials/AveragingActionResult"; }; + const char * getMD5(){ return "8672cb489d347580acdcd05c5d497497"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingFeedback.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingFeedback.h new file mode 100644 index 0000000..e71ad1f --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingFeedback.h @@ -0,0 +1,134 @@ +#ifndef _ROS_actionlib_tutorials_AveragingFeedback_h +#define _ROS_actionlib_tutorials_AveragingFeedback_h + +#include +#include +#include +#include "ros/msg.h" + +namespace actionlib_tutorials +{ + + class AveragingFeedback : public ros::Msg + { + public: + typedef int32_t _sample_type; + _sample_type sample; + typedef float _data_type; + _data_type data; + typedef float _mean_type; + _mean_type mean; + typedef float _std_dev_type; + _std_dev_type std_dev; + + AveragingFeedback(): + sample(0), + data(0), + mean(0), + std_dev(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_sample; + u_sample.real = this->sample; + *(outbuffer + offset + 0) = (u_sample.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_sample.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_sample.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_sample.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->sample); + union { + float real; + uint32_t base; + } u_data; + u_data.real = this->data; + *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_data.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_data.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_data.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->data); + union { + float real; + uint32_t base; + } u_mean; + u_mean.real = this->mean; + *(outbuffer + offset + 0) = (u_mean.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_mean.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_mean.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_mean.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->mean); + union { + float real; + uint32_t base; + } u_std_dev; + u_std_dev.real = this->std_dev; + *(outbuffer + offset + 0) = (u_std_dev.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_std_dev.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_std_dev.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_std_dev.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->std_dev); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_sample; + u_sample.base = 0; + u_sample.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_sample.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_sample.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_sample.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->sample = u_sample.real; + offset += sizeof(this->sample); + union { + float real; + uint32_t base; + } u_data; + u_data.base = 0; + u_data.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->data = u_data.real; + offset += sizeof(this->data); + union { + float real; + uint32_t base; + } u_mean; + u_mean.base = 0; + u_mean.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_mean.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_mean.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_mean.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->mean = u_mean.real; + offset += sizeof(this->mean); + union { + float real; + uint32_t base; + } u_std_dev; + u_std_dev.base = 0; + u_std_dev.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_std_dev.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_std_dev.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_std_dev.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->std_dev = u_std_dev.real; + offset += sizeof(this->std_dev); + return offset; + } + + const char * getType(){ return "actionlib_tutorials/AveragingFeedback"; }; + const char * getMD5(){ return "9e8dfc53c2f2a032ca33fa80ec46fd4f"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingGoal.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingGoal.h new file mode 100644 index 0000000..e1cc2ad --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingGoal.h @@ -0,0 +1,62 @@ +#ifndef _ROS_actionlib_tutorials_AveragingGoal_h +#define _ROS_actionlib_tutorials_AveragingGoal_h + +#include +#include +#include +#include "ros/msg.h" + +namespace actionlib_tutorials +{ + + class AveragingGoal : public ros::Msg + { + public: + typedef int32_t _samples_type; + _samples_type samples; + + AveragingGoal(): + samples(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_samples; + u_samples.real = this->samples; + *(outbuffer + offset + 0) = (u_samples.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_samples.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_samples.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_samples.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->samples); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_samples; + u_samples.base = 0; + u_samples.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_samples.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_samples.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_samples.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->samples = u_samples.real; + offset += sizeof(this->samples); + return offset; + } + + const char * getType(){ return "actionlib_tutorials/AveragingGoal"; }; + const char * getMD5(){ return "32c9b10ef9b253faa93b93f564762c8f"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingResult.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingResult.h new file mode 100644 index 0000000..e476e59 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/AveragingResult.h @@ -0,0 +1,86 @@ +#ifndef _ROS_actionlib_tutorials_AveragingResult_h +#define _ROS_actionlib_tutorials_AveragingResult_h + +#include +#include +#include +#include "ros/msg.h" + +namespace actionlib_tutorials +{ + + class AveragingResult : public ros::Msg + { + public: + typedef float _mean_type; + _mean_type mean; + typedef float _std_dev_type; + _std_dev_type std_dev; + + AveragingResult(): + mean(0), + std_dev(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + float real; + uint32_t base; + } u_mean; + u_mean.real = this->mean; + *(outbuffer + offset + 0) = (u_mean.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_mean.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_mean.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_mean.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->mean); + union { + float real; + uint32_t base; + } u_std_dev; + u_std_dev.real = this->std_dev; + *(outbuffer + offset + 0) = (u_std_dev.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_std_dev.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_std_dev.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_std_dev.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->std_dev); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + float real; + uint32_t base; + } u_mean; + u_mean.base = 0; + u_mean.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_mean.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_mean.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_mean.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->mean = u_mean.real; + offset += sizeof(this->mean); + union { + float real; + uint32_t base; + } u_std_dev; + u_std_dev.base = 0; + u_std_dev.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_std_dev.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_std_dev.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_std_dev.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->std_dev = u_std_dev.real; + offset += sizeof(this->std_dev); + return offset; + } + + const char * getType(){ return "actionlib_tutorials/AveragingResult"; }; + const char * getMD5(){ return "d5c7decf6df75ffb4367a05c1bcc7612"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciAction.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciAction.h new file mode 100644 index 0000000..2fd1c63 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_tutorials_FibonacciAction_h +#define _ROS_actionlib_tutorials_FibonacciAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "actionlib_tutorials/FibonacciActionGoal.h" +#include "actionlib_tutorials/FibonacciActionResult.h" +#include "actionlib_tutorials/FibonacciActionFeedback.h" + +namespace actionlib_tutorials +{ + + class FibonacciAction : public ros::Msg + { + public: + typedef actionlib_tutorials::FibonacciActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef actionlib_tutorials::FibonacciActionResult _action_result_type; + _action_result_type action_result; + typedef actionlib_tutorials::FibonacciActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + FibonacciAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib_tutorials/FibonacciAction"; }; + const char * getMD5(){ return "f59df5767bf7634684781c92598b2406"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciActionFeedback.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciActionFeedback.h new file mode 100644 index 0000000..241ebad --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_tutorials_FibonacciActionFeedback_h +#define _ROS_actionlib_tutorials_FibonacciActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "actionlib_tutorials/FibonacciFeedback.h" + +namespace actionlib_tutorials +{ + + class FibonacciActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef actionlib_tutorials::FibonacciFeedback _feedback_type; + _feedback_type feedback; + + FibonacciActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib_tutorials/FibonacciActionFeedback"; }; + const char * getMD5(){ return "73b8497a9f629a31c0020900e4148f07"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciActionGoal.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciActionGoal.h new file mode 100644 index 0000000..dd13617 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_tutorials_FibonacciActionGoal_h +#define _ROS_actionlib_tutorials_FibonacciActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "actionlib_tutorials/FibonacciGoal.h" + +namespace actionlib_tutorials +{ + + class FibonacciActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef actionlib_tutorials::FibonacciGoal _goal_type; + _goal_type goal; + + FibonacciActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib_tutorials/FibonacciActionGoal"; }; + const char * getMD5(){ return "006871c7fa1d0e3d5fe2226bf17b2a94"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciActionResult.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciActionResult.h new file mode 100644 index 0000000..35c9d48 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_tutorials_FibonacciActionResult_h +#define _ROS_actionlib_tutorials_FibonacciActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "actionlib_tutorials/FibonacciResult.h" + +namespace actionlib_tutorials +{ + + class FibonacciActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef actionlib_tutorials::FibonacciResult _result_type; + _result_type result; + + FibonacciActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib_tutorials/FibonacciActionResult"; }; + const char * getMD5(){ return "bee73a9fe29ae25e966e105f5553dd03"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciFeedback.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciFeedback.h new file mode 100644 index 0000000..87eaf8f --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciFeedback.h @@ -0,0 +1,82 @@ +#ifndef _ROS_actionlib_tutorials_FibonacciFeedback_h +#define _ROS_actionlib_tutorials_FibonacciFeedback_h + +#include +#include +#include +#include "ros/msg.h" + +namespace actionlib_tutorials +{ + + class FibonacciFeedback : public ros::Msg + { + public: + uint32_t sequence_length; + typedef int32_t _sequence_type; + _sequence_type st_sequence; + _sequence_type * sequence; + + FibonacciFeedback(): + sequence_length(0), sequence(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->sequence_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->sequence_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->sequence_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->sequence_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->sequence_length); + for( uint32_t i = 0; i < sequence_length; i++){ + union { + int32_t real; + uint32_t base; + } u_sequencei; + u_sequencei.real = this->sequence[i]; + *(outbuffer + offset + 0) = (u_sequencei.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_sequencei.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_sequencei.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_sequencei.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->sequence[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t sequence_lengthT = ((uint32_t) (*(inbuffer + offset))); + sequence_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + sequence_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + sequence_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->sequence_length); + if(sequence_lengthT > sequence_length) + this->sequence = (int32_t*)realloc(this->sequence, sequence_lengthT * sizeof(int32_t)); + sequence_length = sequence_lengthT; + for( uint32_t i = 0; i < sequence_length; i++){ + union { + int32_t real; + uint32_t base; + } u_st_sequence; + u_st_sequence.base = 0; + u_st_sequence.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_sequence.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_sequence.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_sequence.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_sequence = u_st_sequence.real; + offset += sizeof(this->st_sequence); + memcpy( &(this->sequence[i]), &(this->st_sequence), sizeof(int32_t)); + } + return offset; + } + + const char * getType(){ return "actionlib_tutorials/FibonacciFeedback"; }; + const char * getMD5(){ return "b81e37d2a31925a0e8ae261a8699cb79"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciGoal.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciGoal.h new file mode 100644 index 0000000..e711de1 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciGoal.h @@ -0,0 +1,62 @@ +#ifndef _ROS_actionlib_tutorials_FibonacciGoal_h +#define _ROS_actionlib_tutorials_FibonacciGoal_h + +#include +#include +#include +#include "ros/msg.h" + +namespace actionlib_tutorials +{ + + class FibonacciGoal : public ros::Msg + { + public: + typedef int32_t _order_type; + _order_type order; + + FibonacciGoal(): + order(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_order; + u_order.real = this->order; + *(outbuffer + offset + 0) = (u_order.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_order.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_order.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_order.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->order); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_order; + u_order.base = 0; + u_order.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_order.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_order.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_order.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->order = u_order.real; + offset += sizeof(this->order); + return offset; + } + + const char * getType(){ return "actionlib_tutorials/FibonacciGoal"; }; + const char * getMD5(){ return "6889063349a00b249bd1661df429d822"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciResult.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciResult.h new file mode 100644 index 0000000..dc71023 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/actionlib_tutorials/FibonacciResult.h @@ -0,0 +1,82 @@ +#ifndef _ROS_actionlib_tutorials_FibonacciResult_h +#define _ROS_actionlib_tutorials_FibonacciResult_h + +#include +#include +#include +#include "ros/msg.h" + +namespace actionlib_tutorials +{ + + class FibonacciResult : public ros::Msg + { + public: + uint32_t sequence_length; + typedef int32_t _sequence_type; + _sequence_type st_sequence; + _sequence_type * sequence; + + FibonacciResult(): + sequence_length(0), sequence(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->sequence_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->sequence_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->sequence_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->sequence_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->sequence_length); + for( uint32_t i = 0; i < sequence_length; i++){ + union { + int32_t real; + uint32_t base; + } u_sequencei; + u_sequencei.real = this->sequence[i]; + *(outbuffer + offset + 0) = (u_sequencei.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_sequencei.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_sequencei.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_sequencei.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->sequence[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t sequence_lengthT = ((uint32_t) (*(inbuffer + offset))); + sequence_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + sequence_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + sequence_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->sequence_length); + if(sequence_lengthT > sequence_length) + this->sequence = (int32_t*)realloc(this->sequence, sequence_lengthT * sizeof(int32_t)); + sequence_length = sequence_lengthT; + for( uint32_t i = 0; i < sequence_length; i++){ + union { + int32_t real; + uint32_t base; + } u_st_sequence; + u_st_sequence.base = 0; + u_st_sequence.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_sequence.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_sequence.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_sequence.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_sequence = u_st_sequence.real; + offset += sizeof(this->st_sequence); + memcpy( &(this->sequence[i]), &(this->st_sequence), sizeof(int32_t)); + } + return offset; + } + + const char * getType(){ return "actionlib_tutorials/FibonacciResult"; }; + const char * getMD5(){ return "b81e37d2a31925a0e8ae261a8699cb79"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/base_local_planner/Position2DInt.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/base_local_planner/Position2DInt.h new file mode 100644 index 0000000..79beed2 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/base_local_planner/Position2DInt.h @@ -0,0 +1,102 @@ +#ifndef _ROS_base_local_planner_Position2DInt_h +#define _ROS_base_local_planner_Position2DInt_h + +#include +#include +#include +#include "ros/msg.h" + +namespace base_local_planner +{ + + class Position2DInt : public ros::Msg + { + public: + typedef int64_t _x_type; + _x_type x; + typedef int64_t _y_type; + _y_type y; + + Position2DInt(): + x(0), + y(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_x; + u_x.real = this->x; + *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_x.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_x.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_x.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_x.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->x); + union { + int64_t real; + uint64_t base; + } u_y; + u_y.real = this->y; + *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_y.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_y.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_y.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_y.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->y); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_x; + u_x.base = 0; + u_x.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->x = u_x.real; + offset += sizeof(this->x); + union { + int64_t real; + uint64_t base; + } u_y; + u_y.base = 0; + u_y.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->y = u_y.real; + offset += sizeof(this->y); + return offset; + } + + const char * getType(){ return "base_local_planner/Position2DInt"; }; + const char * getMD5(){ return "3b834ede922a0fff22c43585c533b49f"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/bond/Constants.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/bond/Constants.h new file mode 100644 index 0000000..9594342 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/bond/Constants.h @@ -0,0 +1,44 @@ +#ifndef _ROS_bond_Constants_h +#define _ROS_bond_Constants_h + +#include +#include +#include +#include "ros/msg.h" + +namespace bond +{ + + class Constants : public ros::Msg + { + public: + enum { DEAD_PUBLISH_PERIOD = 0.05 }; + enum { DEFAULT_CONNECT_TIMEOUT = 10.0 }; + enum { DEFAULT_HEARTBEAT_TIMEOUT = 4.0 }; + enum { DEFAULT_DISCONNECT_TIMEOUT = 2.0 }; + enum { DEFAULT_HEARTBEAT_PERIOD = 1.0 }; + enum { DISABLE_HEARTBEAT_TIMEOUT_PARAM = /bond_disable_heartbeat_timeout }; + + Constants() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "bond/Constants"; }; + const char * getMD5(){ return "6fc594dc1d7bd7919077042712f8c8b0"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/bond/Status.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/bond/Status.h new file mode 100644 index 0000000..b9fa9a5 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/bond/Status.h @@ -0,0 +1,144 @@ +#ifndef _ROS_bond_Status_h +#define _ROS_bond_Status_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace bond +{ + + class Status : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef const char* _id_type; + _id_type id; + typedef const char* _instance_id_type; + _instance_id_type instance_id; + typedef bool _active_type; + _active_type active; + typedef float _heartbeat_timeout_type; + _heartbeat_timeout_type heartbeat_timeout; + typedef float _heartbeat_period_type; + _heartbeat_period_type heartbeat_period; + + Status(): + header(), + id(""), + instance_id(""), + active(0), + heartbeat_timeout(0), + heartbeat_period(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + uint32_t length_id = strlen(this->id); + varToArr(outbuffer + offset, length_id); + offset += 4; + memcpy(outbuffer + offset, this->id, length_id); + offset += length_id; + uint32_t length_instance_id = strlen(this->instance_id); + varToArr(outbuffer + offset, length_instance_id); + offset += 4; + memcpy(outbuffer + offset, this->instance_id, length_instance_id); + offset += length_instance_id; + union { + bool real; + uint8_t base; + } u_active; + u_active.real = this->active; + *(outbuffer + offset + 0) = (u_active.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->active); + union { + float real; + uint32_t base; + } u_heartbeat_timeout; + u_heartbeat_timeout.real = this->heartbeat_timeout; + *(outbuffer + offset + 0) = (u_heartbeat_timeout.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_heartbeat_timeout.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_heartbeat_timeout.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_heartbeat_timeout.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->heartbeat_timeout); + union { + float real; + uint32_t base; + } u_heartbeat_period; + u_heartbeat_period.real = this->heartbeat_period; + *(outbuffer + offset + 0) = (u_heartbeat_period.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_heartbeat_period.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_heartbeat_period.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_heartbeat_period.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->heartbeat_period); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t length_id; + arrToVar(length_id, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_id; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_id-1]=0; + this->id = (char *)(inbuffer + offset-1); + offset += length_id; + uint32_t length_instance_id; + arrToVar(length_instance_id, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_instance_id; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_instance_id-1]=0; + this->instance_id = (char *)(inbuffer + offset-1); + offset += length_instance_id; + union { + bool real; + uint8_t base; + } u_active; + u_active.base = 0; + u_active.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->active = u_active.real; + offset += sizeof(this->active); + union { + float real; + uint32_t base; + } u_heartbeat_timeout; + u_heartbeat_timeout.base = 0; + u_heartbeat_timeout.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_heartbeat_timeout.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_heartbeat_timeout.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_heartbeat_timeout.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->heartbeat_timeout = u_heartbeat_timeout.real; + offset += sizeof(this->heartbeat_timeout); + union { + float real; + uint32_t base; + } u_heartbeat_period; + u_heartbeat_period.base = 0; + u_heartbeat_period.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_heartbeat_period.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_heartbeat_period.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_heartbeat_period.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->heartbeat_period = u_heartbeat_period.real; + offset += sizeof(this->heartbeat_period); + return offset; + } + + const char * getType(){ return "bond/Status"; }; + const char * getMD5(){ return "eacc84bf5d65b6777d4c50f463dfb9c8"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryAction.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryAction.h new file mode 100644 index 0000000..ec67771 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_FollowJointTrajectoryAction_h +#define _ROS_control_msgs_FollowJointTrajectoryAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "control_msgs/FollowJointTrajectoryActionGoal.h" +#include "control_msgs/FollowJointTrajectoryActionResult.h" +#include "control_msgs/FollowJointTrajectoryActionFeedback.h" + +namespace control_msgs +{ + + class FollowJointTrajectoryAction : public ros::Msg + { + public: + typedef control_msgs::FollowJointTrajectoryActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef control_msgs::FollowJointTrajectoryActionResult _action_result_type; + _action_result_type action_result; + typedef control_msgs::FollowJointTrajectoryActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + FollowJointTrajectoryAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/FollowJointTrajectoryAction"; }; + const char * getMD5(){ return "bc4f9b743838566551c0390c65f1a248"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryActionFeedback.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryActionFeedback.h new file mode 100644 index 0000000..d5d037a --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_FollowJointTrajectoryActionFeedback_h +#define _ROS_control_msgs_FollowJointTrajectoryActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "control_msgs/FollowJointTrajectoryFeedback.h" + +namespace control_msgs +{ + + class FollowJointTrajectoryActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef control_msgs::FollowJointTrajectoryFeedback _feedback_type; + _feedback_type feedback; + + FollowJointTrajectoryActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/FollowJointTrajectoryActionFeedback"; }; + const char * getMD5(){ return "d8920dc4eae9fc107e00999cce4be641"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryActionGoal.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryActionGoal.h new file mode 100644 index 0000000..4aa00c6 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_FollowJointTrajectoryActionGoal_h +#define _ROS_control_msgs_FollowJointTrajectoryActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "control_msgs/FollowJointTrajectoryGoal.h" + +namespace control_msgs +{ + + class FollowJointTrajectoryActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef control_msgs::FollowJointTrajectoryGoal _goal_type; + _goal_type goal; + + FollowJointTrajectoryActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/FollowJointTrajectoryActionGoal"; }; + const char * getMD5(){ return "cff5c1d533bf2f82dd0138d57f4304bb"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryActionResult.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryActionResult.h new file mode 100644 index 0000000..aa6b2b3 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_FollowJointTrajectoryActionResult_h +#define _ROS_control_msgs_FollowJointTrajectoryActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "control_msgs/FollowJointTrajectoryResult.h" + +namespace control_msgs +{ + + class FollowJointTrajectoryActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef control_msgs::FollowJointTrajectoryResult _result_type; + _result_type result; + + FollowJointTrajectoryActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/FollowJointTrajectoryActionResult"; }; + const char * getMD5(){ return "c4fb3b000dc9da4fd99699380efcc5d9"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryFeedback.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryFeedback.h new file mode 100644 index 0000000..6f27ecc --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryFeedback.h @@ -0,0 +1,97 @@ +#ifndef _ROS_control_msgs_FollowJointTrajectoryFeedback_h +#define _ROS_control_msgs_FollowJointTrajectoryFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "trajectory_msgs/JointTrajectoryPoint.h" + +namespace control_msgs +{ + + class FollowJointTrajectoryFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t joint_names_length; + typedef char* _joint_names_type; + _joint_names_type st_joint_names; + _joint_names_type * joint_names; + typedef trajectory_msgs::JointTrajectoryPoint _desired_type; + _desired_type desired; + typedef trajectory_msgs::JointTrajectoryPoint _actual_type; + _actual_type actual; + typedef trajectory_msgs::JointTrajectoryPoint _error_type; + _error_type error; + + FollowJointTrajectoryFeedback(): + header(), + joint_names_length(0), joint_names(NULL), + desired(), + actual(), + error() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->joint_names_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->joint_names_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->joint_names_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->joint_names_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->joint_names_length); + for( uint32_t i = 0; i < joint_names_length; i++){ + uint32_t length_joint_namesi = strlen(this->joint_names[i]); + varToArr(outbuffer + offset, length_joint_namesi); + offset += 4; + memcpy(outbuffer + offset, this->joint_names[i], length_joint_namesi); + offset += length_joint_namesi; + } + offset += this->desired.serialize(outbuffer + offset); + offset += this->actual.serialize(outbuffer + offset); + offset += this->error.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t joint_names_lengthT = ((uint32_t) (*(inbuffer + offset))); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->joint_names_length); + if(joint_names_lengthT > joint_names_length) + this->joint_names = (char**)realloc(this->joint_names, joint_names_lengthT * sizeof(char*)); + joint_names_length = joint_names_lengthT; + for( uint32_t i = 0; i < joint_names_length; i++){ + uint32_t length_st_joint_names; + arrToVar(length_st_joint_names, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_joint_names; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_joint_names-1]=0; + this->st_joint_names = (char *)(inbuffer + offset-1); + offset += length_st_joint_names; + memcpy( &(this->joint_names[i]), &(this->st_joint_names), sizeof(char*)); + } + offset += this->desired.deserialize(inbuffer + offset); + offset += this->actual.deserialize(inbuffer + offset); + offset += this->error.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/FollowJointTrajectoryFeedback"; }; + const char * getMD5(){ return "10817c60c2486ef6b33e97dcd87f4474"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryGoal.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryGoal.h new file mode 100644 index 0000000..1185615 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryGoal.h @@ -0,0 +1,119 @@ +#ifndef _ROS_control_msgs_FollowJointTrajectoryGoal_h +#define _ROS_control_msgs_FollowJointTrajectoryGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "trajectory_msgs/JointTrajectory.h" +#include "control_msgs/JointTolerance.h" +#include "ros/duration.h" + +namespace control_msgs +{ + + class FollowJointTrajectoryGoal : public ros::Msg + { + public: + typedef trajectory_msgs::JointTrajectory _trajectory_type; + _trajectory_type trajectory; + uint32_t path_tolerance_length; + typedef control_msgs::JointTolerance _path_tolerance_type; + _path_tolerance_type st_path_tolerance; + _path_tolerance_type * path_tolerance; + uint32_t goal_tolerance_length; + typedef control_msgs::JointTolerance _goal_tolerance_type; + _goal_tolerance_type st_goal_tolerance; + _goal_tolerance_type * goal_tolerance; + typedef ros::Duration _goal_time_tolerance_type; + _goal_time_tolerance_type goal_time_tolerance; + + FollowJointTrajectoryGoal(): + trajectory(), + path_tolerance_length(0), path_tolerance(NULL), + goal_tolerance_length(0), goal_tolerance(NULL), + goal_time_tolerance() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->trajectory.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->path_tolerance_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->path_tolerance_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->path_tolerance_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->path_tolerance_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->path_tolerance_length); + for( uint32_t i = 0; i < path_tolerance_length; i++){ + offset += this->path_tolerance[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->goal_tolerance_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->goal_tolerance_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->goal_tolerance_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->goal_tolerance_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->goal_tolerance_length); + for( uint32_t i = 0; i < goal_tolerance_length; i++){ + offset += this->goal_tolerance[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->goal_time_tolerance.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->goal_time_tolerance.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->goal_time_tolerance.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->goal_time_tolerance.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->goal_time_tolerance.sec); + *(outbuffer + offset + 0) = (this->goal_time_tolerance.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->goal_time_tolerance.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->goal_time_tolerance.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->goal_time_tolerance.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->goal_time_tolerance.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->trajectory.deserialize(inbuffer + offset); + uint32_t path_tolerance_lengthT = ((uint32_t) (*(inbuffer + offset))); + path_tolerance_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + path_tolerance_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + path_tolerance_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->path_tolerance_length); + if(path_tolerance_lengthT > path_tolerance_length) + this->path_tolerance = (control_msgs::JointTolerance*)realloc(this->path_tolerance, path_tolerance_lengthT * sizeof(control_msgs::JointTolerance)); + path_tolerance_length = path_tolerance_lengthT; + for( uint32_t i = 0; i < path_tolerance_length; i++){ + offset += this->st_path_tolerance.deserialize(inbuffer + offset); + memcpy( &(this->path_tolerance[i]), &(this->st_path_tolerance), sizeof(control_msgs::JointTolerance)); + } + uint32_t goal_tolerance_lengthT = ((uint32_t) (*(inbuffer + offset))); + goal_tolerance_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + goal_tolerance_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + goal_tolerance_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->goal_tolerance_length); + if(goal_tolerance_lengthT > goal_tolerance_length) + this->goal_tolerance = (control_msgs::JointTolerance*)realloc(this->goal_tolerance, goal_tolerance_lengthT * sizeof(control_msgs::JointTolerance)); + goal_tolerance_length = goal_tolerance_lengthT; + for( uint32_t i = 0; i < goal_tolerance_length; i++){ + offset += this->st_goal_tolerance.deserialize(inbuffer + offset); + memcpy( &(this->goal_tolerance[i]), &(this->st_goal_tolerance), sizeof(control_msgs::JointTolerance)); + } + this->goal_time_tolerance.sec = ((uint32_t) (*(inbuffer + offset))); + this->goal_time_tolerance.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->goal_time_tolerance.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->goal_time_tolerance.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->goal_time_tolerance.sec); + this->goal_time_tolerance.nsec = ((uint32_t) (*(inbuffer + offset))); + this->goal_time_tolerance.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->goal_time_tolerance.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->goal_time_tolerance.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->goal_time_tolerance.nsec); + return offset; + } + + const char * getType(){ return "control_msgs/FollowJointTrajectoryGoal"; }; + const char * getMD5(){ return "69636787b6ecbde4d61d711979bc7ecb"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryResult.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryResult.h new file mode 100644 index 0000000..819f272 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/FollowJointTrajectoryResult.h @@ -0,0 +1,85 @@ +#ifndef _ROS_control_msgs_FollowJointTrajectoryResult_h +#define _ROS_control_msgs_FollowJointTrajectoryResult_h + +#include +#include +#include +#include "ros/msg.h" + +namespace control_msgs +{ + + class FollowJointTrajectoryResult : public ros::Msg + { + public: + typedef int32_t _error_code_type; + _error_code_type error_code; + typedef const char* _error_string_type; + _error_string_type error_string; + enum { SUCCESSFUL = 0 }; + enum { INVALID_GOAL = -1 }; + enum { INVALID_JOINTS = -2 }; + enum { OLD_HEADER_TIMESTAMP = -3 }; + enum { PATH_TOLERANCE_VIOLATED = -4 }; + enum { GOAL_TOLERANCE_VIOLATED = -5 }; + + FollowJointTrajectoryResult(): + error_code(0), + error_string("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_error_code; + u_error_code.real = this->error_code; + *(outbuffer + offset + 0) = (u_error_code.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_error_code.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_error_code.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_error_code.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->error_code); + uint32_t length_error_string = strlen(this->error_string); + varToArr(outbuffer + offset, length_error_string); + offset += 4; + memcpy(outbuffer + offset, this->error_string, length_error_string); + offset += length_error_string; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_error_code; + u_error_code.base = 0; + u_error_code.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_error_code.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_error_code.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_error_code.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->error_code = u_error_code.real; + offset += sizeof(this->error_code); + uint32_t length_error_string; + arrToVar(length_error_string, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_error_string; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_error_string-1]=0; + this->error_string = (char *)(inbuffer + offset-1); + offset += length_error_string; + return offset; + } + + const char * getType(){ return "control_msgs/FollowJointTrajectoryResult"; }; + const char * getMD5(){ return "493383b18409bfb604b4e26c676401d2"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommand.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommand.h new file mode 100644 index 0000000..0b37e5c --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommand.h @@ -0,0 +1,102 @@ +#ifndef _ROS_control_msgs_GripperCommand_h +#define _ROS_control_msgs_GripperCommand_h + +#include +#include +#include +#include "ros/msg.h" + +namespace control_msgs +{ + + class GripperCommand : public ros::Msg + { + public: + typedef double _position_type; + _position_type position; + typedef double _max_effort_type; + _max_effort_type max_effort; + + GripperCommand(): + position(0), + max_effort(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_position; + u_position.real = this->position; + *(outbuffer + offset + 0) = (u_position.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_position.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_position.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_position.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_position.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_position.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_position.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_position.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->position); + union { + double real; + uint64_t base; + } u_max_effort; + u_max_effort.real = this->max_effort; + *(outbuffer + offset + 0) = (u_max_effort.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_max_effort.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_max_effort.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_max_effort.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_max_effort.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_max_effort.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_max_effort.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_max_effort.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->max_effort); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_position; + u_position.base = 0; + u_position.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->position = u_position.real; + offset += sizeof(this->position); + union { + double real; + uint64_t base; + } u_max_effort; + u_max_effort.base = 0; + u_max_effort.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_max_effort.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_max_effort.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_max_effort.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_max_effort.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_max_effort.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_max_effort.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_max_effort.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->max_effort = u_max_effort.real; + offset += sizeof(this->max_effort); + return offset; + } + + const char * getType(){ return "control_msgs/GripperCommand"; }; + const char * getMD5(){ return "680acaff79486f017132a7f198d40f08"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandAction.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandAction.h new file mode 100644 index 0000000..68d8356 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_GripperCommandAction_h +#define _ROS_control_msgs_GripperCommandAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "control_msgs/GripperCommandActionGoal.h" +#include "control_msgs/GripperCommandActionResult.h" +#include "control_msgs/GripperCommandActionFeedback.h" + +namespace control_msgs +{ + + class GripperCommandAction : public ros::Msg + { + public: + typedef control_msgs::GripperCommandActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef control_msgs::GripperCommandActionResult _action_result_type; + _action_result_type action_result; + typedef control_msgs::GripperCommandActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + GripperCommandAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/GripperCommandAction"; }; + const char * getMD5(){ return "950b2a6ebe831f5d4f4ceaba3d8be01e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandActionFeedback.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandActionFeedback.h new file mode 100644 index 0000000..67f99c9 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_GripperCommandActionFeedback_h +#define _ROS_control_msgs_GripperCommandActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "control_msgs/GripperCommandFeedback.h" + +namespace control_msgs +{ + + class GripperCommandActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef control_msgs::GripperCommandFeedback _feedback_type; + _feedback_type feedback; + + GripperCommandActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/GripperCommandActionFeedback"; }; + const char * getMD5(){ return "653dff30c045f5e6ff3feb3409f4558d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandActionGoal.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandActionGoal.h new file mode 100644 index 0000000..efb19d1 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_GripperCommandActionGoal_h +#define _ROS_control_msgs_GripperCommandActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "control_msgs/GripperCommandGoal.h" + +namespace control_msgs +{ + + class GripperCommandActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef control_msgs::GripperCommandGoal _goal_type; + _goal_type goal; + + GripperCommandActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/GripperCommandActionGoal"; }; + const char * getMD5(){ return "aa581f648a35ed681db2ec0bf7a82bea"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandActionResult.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandActionResult.h new file mode 100644 index 0000000..704f18d --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_GripperCommandActionResult_h +#define _ROS_control_msgs_GripperCommandActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "control_msgs/GripperCommandResult.h" + +namespace control_msgs +{ + + class GripperCommandActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef control_msgs::GripperCommandResult _result_type; + _result_type result; + + GripperCommandActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/GripperCommandActionResult"; }; + const char * getMD5(){ return "143702cb2df0f163c5283cedc5efc6b6"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandFeedback.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandFeedback.h new file mode 100644 index 0000000..15d0397 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandFeedback.h @@ -0,0 +1,138 @@ +#ifndef _ROS_control_msgs_GripperCommandFeedback_h +#define _ROS_control_msgs_GripperCommandFeedback_h + +#include +#include +#include +#include "ros/msg.h" + +namespace control_msgs +{ + + class GripperCommandFeedback : public ros::Msg + { + public: + typedef double _position_type; + _position_type position; + typedef double _effort_type; + _effort_type effort; + typedef bool _stalled_type; + _stalled_type stalled; + typedef bool _reached_goal_type; + _reached_goal_type reached_goal; + + GripperCommandFeedback(): + position(0), + effort(0), + stalled(0), + reached_goal(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_position; + u_position.real = this->position; + *(outbuffer + offset + 0) = (u_position.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_position.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_position.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_position.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_position.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_position.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_position.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_position.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->position); + union { + double real; + uint64_t base; + } u_effort; + u_effort.real = this->effort; + *(outbuffer + offset + 0) = (u_effort.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_effort.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_effort.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_effort.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_effort.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_effort.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_effort.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_effort.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->effort); + union { + bool real; + uint8_t base; + } u_stalled; + u_stalled.real = this->stalled; + *(outbuffer + offset + 0) = (u_stalled.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->stalled); + union { + bool real; + uint8_t base; + } u_reached_goal; + u_reached_goal.real = this->reached_goal; + *(outbuffer + offset + 0) = (u_reached_goal.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->reached_goal); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_position; + u_position.base = 0; + u_position.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->position = u_position.real; + offset += sizeof(this->position); + union { + double real; + uint64_t base; + } u_effort; + u_effort.base = 0; + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->effort = u_effort.real; + offset += sizeof(this->effort); + union { + bool real; + uint8_t base; + } u_stalled; + u_stalled.base = 0; + u_stalled.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->stalled = u_stalled.real; + offset += sizeof(this->stalled); + union { + bool real; + uint8_t base; + } u_reached_goal; + u_reached_goal.base = 0; + u_reached_goal.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->reached_goal = u_reached_goal.real; + offset += sizeof(this->reached_goal); + return offset; + } + + const char * getType(){ return "control_msgs/GripperCommandFeedback"; }; + const char * getMD5(){ return "e4cbff56d3562bcf113da5a5adeef91f"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandGoal.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandGoal.h new file mode 100644 index 0000000..544a864 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandGoal.h @@ -0,0 +1,44 @@ +#ifndef _ROS_control_msgs_GripperCommandGoal_h +#define _ROS_control_msgs_GripperCommandGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "control_msgs/GripperCommand.h" + +namespace control_msgs +{ + + class GripperCommandGoal : public ros::Msg + { + public: + typedef control_msgs::GripperCommand _command_type; + _command_type command; + + GripperCommandGoal(): + command() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->command.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->command.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/GripperCommandGoal"; }; + const char * getMD5(){ return "86fd82f4ddc48a4cb6856cfa69217e43"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandResult.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandResult.h new file mode 100644 index 0000000..e28b260 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/GripperCommandResult.h @@ -0,0 +1,138 @@ +#ifndef _ROS_control_msgs_GripperCommandResult_h +#define _ROS_control_msgs_GripperCommandResult_h + +#include +#include +#include +#include "ros/msg.h" + +namespace control_msgs +{ + + class GripperCommandResult : public ros::Msg + { + public: + typedef double _position_type; + _position_type position; + typedef double _effort_type; + _effort_type effort; + typedef bool _stalled_type; + _stalled_type stalled; + typedef bool _reached_goal_type; + _reached_goal_type reached_goal; + + GripperCommandResult(): + position(0), + effort(0), + stalled(0), + reached_goal(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_position; + u_position.real = this->position; + *(outbuffer + offset + 0) = (u_position.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_position.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_position.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_position.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_position.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_position.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_position.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_position.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->position); + union { + double real; + uint64_t base; + } u_effort; + u_effort.real = this->effort; + *(outbuffer + offset + 0) = (u_effort.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_effort.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_effort.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_effort.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_effort.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_effort.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_effort.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_effort.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->effort); + union { + bool real; + uint8_t base; + } u_stalled; + u_stalled.real = this->stalled; + *(outbuffer + offset + 0) = (u_stalled.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->stalled); + union { + bool real; + uint8_t base; + } u_reached_goal; + u_reached_goal.real = this->reached_goal; + *(outbuffer + offset + 0) = (u_reached_goal.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->reached_goal); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_position; + u_position.base = 0; + u_position.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->position = u_position.real; + offset += sizeof(this->position); + union { + double real; + uint64_t base; + } u_effort; + u_effort.base = 0; + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->effort = u_effort.real; + offset += sizeof(this->effort); + union { + bool real; + uint8_t base; + } u_stalled; + u_stalled.base = 0; + u_stalled.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->stalled = u_stalled.real; + offset += sizeof(this->stalled); + union { + bool real; + uint8_t base; + } u_reached_goal; + u_reached_goal.base = 0; + u_reached_goal.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->reached_goal = u_reached_goal.real; + offset += sizeof(this->reached_goal); + return offset; + } + + const char * getType(){ return "control_msgs/GripperCommandResult"; }; + const char * getMD5(){ return "e4cbff56d3562bcf113da5a5adeef91f"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/JointControllerState.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/JointControllerState.h new file mode 100644 index 0000000..b70ef6d --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/JointControllerState.h @@ -0,0 +1,382 @@ +#ifndef _ROS_control_msgs_JointControllerState_h +#define _ROS_control_msgs_JointControllerState_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace control_msgs +{ + + class JointControllerState : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef double _set_point_type; + _set_point_type set_point; + typedef double _process_value_type; + _process_value_type process_value; + typedef double _process_value_dot_type; + _process_value_dot_type process_value_dot; + typedef double _error_type; + _error_type error; + typedef double _time_step_type; + _time_step_type time_step; + typedef double _command_type; + _command_type command; + typedef double _p_type; + _p_type p; + typedef double _i_type; + _i_type i; + typedef double _d_type; + _d_type d; + typedef double _i_clamp_type; + _i_clamp_type i_clamp; + typedef bool _antiwindup_type; + _antiwindup_type antiwindup; + + JointControllerState(): + header(), + set_point(0), + process_value(0), + process_value_dot(0), + error(0), + time_step(0), + command(0), + p(0), + i(0), + d(0), + i_clamp(0), + antiwindup(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + union { + double real; + uint64_t base; + } u_set_point; + u_set_point.real = this->set_point; + *(outbuffer + offset + 0) = (u_set_point.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_set_point.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_set_point.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_set_point.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_set_point.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_set_point.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_set_point.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_set_point.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->set_point); + union { + double real; + uint64_t base; + } u_process_value; + u_process_value.real = this->process_value; + *(outbuffer + offset + 0) = (u_process_value.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_process_value.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_process_value.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_process_value.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_process_value.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_process_value.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_process_value.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_process_value.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->process_value); + union { + double real; + uint64_t base; + } u_process_value_dot; + u_process_value_dot.real = this->process_value_dot; + *(outbuffer + offset + 0) = (u_process_value_dot.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_process_value_dot.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_process_value_dot.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_process_value_dot.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_process_value_dot.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_process_value_dot.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_process_value_dot.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_process_value_dot.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->process_value_dot); + union { + double real; + uint64_t base; + } u_error; + u_error.real = this->error; + *(outbuffer + offset + 0) = (u_error.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_error.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_error.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_error.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_error.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_error.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_error.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_error.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->error); + union { + double real; + uint64_t base; + } u_time_step; + u_time_step.real = this->time_step; + *(outbuffer + offset + 0) = (u_time_step.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_time_step.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_time_step.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_time_step.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_time_step.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_time_step.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_time_step.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_time_step.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->time_step); + union { + double real; + uint64_t base; + } u_command; + u_command.real = this->command; + *(outbuffer + offset + 0) = (u_command.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_command.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_command.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_command.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_command.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_command.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_command.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_command.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->command); + union { + double real; + uint64_t base; + } u_p; + u_p.real = this->p; + *(outbuffer + offset + 0) = (u_p.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_p.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_p.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_p.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_p.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_p.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_p.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_p.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->p); + union { + double real; + uint64_t base; + } u_i; + u_i.real = this->i; + *(outbuffer + offset + 0) = (u_i.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_i.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_i.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_i.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_i.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_i.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_i.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_i.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->i); + union { + double real; + uint64_t base; + } u_d; + u_d.real = this->d; + *(outbuffer + offset + 0) = (u_d.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_d.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_d.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_d.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_d.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_d.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_d.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_d.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->d); + union { + double real; + uint64_t base; + } u_i_clamp; + u_i_clamp.real = this->i_clamp; + *(outbuffer + offset + 0) = (u_i_clamp.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_i_clamp.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_i_clamp.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_i_clamp.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_i_clamp.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_i_clamp.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_i_clamp.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_i_clamp.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->i_clamp); + union { + bool real; + uint8_t base; + } u_antiwindup; + u_antiwindup.real = this->antiwindup; + *(outbuffer + offset + 0) = (u_antiwindup.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->antiwindup); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + union { + double real; + uint64_t base; + } u_set_point; + u_set_point.base = 0; + u_set_point.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_set_point.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_set_point.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_set_point.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_set_point.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_set_point.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_set_point.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_set_point.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->set_point = u_set_point.real; + offset += sizeof(this->set_point); + union { + double real; + uint64_t base; + } u_process_value; + u_process_value.base = 0; + u_process_value.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_process_value.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_process_value.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_process_value.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_process_value.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_process_value.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_process_value.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_process_value.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->process_value = u_process_value.real; + offset += sizeof(this->process_value); + union { + double real; + uint64_t base; + } u_process_value_dot; + u_process_value_dot.base = 0; + u_process_value_dot.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_process_value_dot.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_process_value_dot.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_process_value_dot.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_process_value_dot.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_process_value_dot.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_process_value_dot.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_process_value_dot.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->process_value_dot = u_process_value_dot.real; + offset += sizeof(this->process_value_dot); + union { + double real; + uint64_t base; + } u_error; + u_error.base = 0; + u_error.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->error = u_error.real; + offset += sizeof(this->error); + union { + double real; + uint64_t base; + } u_time_step; + u_time_step.base = 0; + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->time_step = u_time_step.real; + offset += sizeof(this->time_step); + union { + double real; + uint64_t base; + } u_command; + u_command.base = 0; + u_command.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_command.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_command.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_command.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_command.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_command.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_command.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_command.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->command = u_command.real; + offset += sizeof(this->command); + union { + double real; + uint64_t base; + } u_p; + u_p.base = 0; + u_p.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_p.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_p.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_p.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_p.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_p.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_p.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_p.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->p = u_p.real; + offset += sizeof(this->p); + union { + double real; + uint64_t base; + } u_i; + u_i.base = 0; + u_i.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_i.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_i.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_i.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_i.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_i.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_i.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_i.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->i = u_i.real; + offset += sizeof(this->i); + union { + double real; + uint64_t base; + } u_d; + u_d.base = 0; + u_d.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_d.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_d.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_d.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_d.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_d.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_d.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_d.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->d = u_d.real; + offset += sizeof(this->d); + union { + double real; + uint64_t base; + } u_i_clamp; + u_i_clamp.base = 0; + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->i_clamp = u_i_clamp.real; + offset += sizeof(this->i_clamp); + union { + bool real; + uint8_t base; + } u_antiwindup; + u_antiwindup.base = 0; + u_antiwindup.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->antiwindup = u_antiwindup.real; + offset += sizeof(this->antiwindup); + return offset; + } + + const char * getType(){ return "control_msgs/JointControllerState"; }; + const char * getMD5(){ return "987ad85e4756f3aef7f1e5e7fe0595d1"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/JointTolerance.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/JointTolerance.h new file mode 100644 index 0000000..051971e --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/JointTolerance.h @@ -0,0 +1,151 @@ +#ifndef _ROS_control_msgs_JointTolerance_h +#define _ROS_control_msgs_JointTolerance_h + +#include +#include +#include +#include "ros/msg.h" + +namespace control_msgs +{ + + class JointTolerance : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef double _position_type; + _position_type position; + typedef double _velocity_type; + _velocity_type velocity; + typedef double _acceleration_type; + _acceleration_type acceleration; + + JointTolerance(): + name(""), + position(0), + velocity(0), + acceleration(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + union { + double real; + uint64_t base; + } u_position; + u_position.real = this->position; + *(outbuffer + offset + 0) = (u_position.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_position.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_position.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_position.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_position.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_position.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_position.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_position.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->position); + union { + double real; + uint64_t base; + } u_velocity; + u_velocity.real = this->velocity; + *(outbuffer + offset + 0) = (u_velocity.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_velocity.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_velocity.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_velocity.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_velocity.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_velocity.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_velocity.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_velocity.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->velocity); + union { + double real; + uint64_t base; + } u_acceleration; + u_acceleration.real = this->acceleration; + *(outbuffer + offset + 0) = (u_acceleration.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_acceleration.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_acceleration.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_acceleration.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_acceleration.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_acceleration.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_acceleration.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_acceleration.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->acceleration); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + union { + double real; + uint64_t base; + } u_position; + u_position.base = 0; + u_position.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->position = u_position.real; + offset += sizeof(this->position); + union { + double real; + uint64_t base; + } u_velocity; + u_velocity.base = 0; + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->velocity = u_velocity.real; + offset += sizeof(this->velocity); + union { + double real; + uint64_t base; + } u_acceleration; + u_acceleration.base = 0; + u_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->acceleration = u_acceleration.real; + offset += sizeof(this->acceleration); + return offset; + } + + const char * getType(){ return "control_msgs/JointTolerance"; }; + const char * getMD5(){ return "f544fe9c16cf04547e135dd6063ff5be"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryAction.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryAction.h new file mode 100644 index 0000000..96bbaa4 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_JointTrajectoryAction_h +#define _ROS_control_msgs_JointTrajectoryAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "control_msgs/JointTrajectoryActionGoal.h" +#include "control_msgs/JointTrajectoryActionResult.h" +#include "control_msgs/JointTrajectoryActionFeedback.h" + +namespace control_msgs +{ + + class JointTrajectoryAction : public ros::Msg + { + public: + typedef control_msgs::JointTrajectoryActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef control_msgs::JointTrajectoryActionResult _action_result_type; + _action_result_type action_result; + typedef control_msgs::JointTrajectoryActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + JointTrajectoryAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/JointTrajectoryAction"; }; + const char * getMD5(){ return "a04ba3ee8f6a2d0985a6aeaf23d9d7ad"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryActionFeedback.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryActionFeedback.h new file mode 100644 index 0000000..8df7fee --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_JointTrajectoryActionFeedback_h +#define _ROS_control_msgs_JointTrajectoryActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "control_msgs/JointTrajectoryFeedback.h" + +namespace control_msgs +{ + + class JointTrajectoryActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef control_msgs::JointTrajectoryFeedback _feedback_type; + _feedback_type feedback; + + JointTrajectoryActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/JointTrajectoryActionFeedback"; }; + const char * getMD5(){ return "aae20e09065c3809e8a8e87c4c8953fd"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryActionGoal.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryActionGoal.h new file mode 100644 index 0000000..8c432bb --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_JointTrajectoryActionGoal_h +#define _ROS_control_msgs_JointTrajectoryActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "control_msgs/JointTrajectoryGoal.h" + +namespace control_msgs +{ + + class JointTrajectoryActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef control_msgs::JointTrajectoryGoal _goal_type; + _goal_type goal; + + JointTrajectoryActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/JointTrajectoryActionGoal"; }; + const char * getMD5(){ return "a99e83ef6185f9fdd7693efe99623a86"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryActionResult.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryActionResult.h new file mode 100644 index 0000000..2a11d22 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_JointTrajectoryActionResult_h +#define _ROS_control_msgs_JointTrajectoryActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "control_msgs/JointTrajectoryResult.h" + +namespace control_msgs +{ + + class JointTrajectoryActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef control_msgs::JointTrajectoryResult _result_type; + _result_type result; + + JointTrajectoryActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/JointTrajectoryActionResult"; }; + const char * getMD5(){ return "1eb06eeff08fa7ea874431638cb52332"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryControllerState.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryControllerState.h new file mode 100644 index 0000000..148db3a --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryControllerState.h @@ -0,0 +1,97 @@ +#ifndef _ROS_control_msgs_JointTrajectoryControllerState_h +#define _ROS_control_msgs_JointTrajectoryControllerState_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "trajectory_msgs/JointTrajectoryPoint.h" + +namespace control_msgs +{ + + class JointTrajectoryControllerState : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t joint_names_length; + typedef char* _joint_names_type; + _joint_names_type st_joint_names; + _joint_names_type * joint_names; + typedef trajectory_msgs::JointTrajectoryPoint _desired_type; + _desired_type desired; + typedef trajectory_msgs::JointTrajectoryPoint _actual_type; + _actual_type actual; + typedef trajectory_msgs::JointTrajectoryPoint _error_type; + _error_type error; + + JointTrajectoryControllerState(): + header(), + joint_names_length(0), joint_names(NULL), + desired(), + actual(), + error() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->joint_names_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->joint_names_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->joint_names_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->joint_names_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->joint_names_length); + for( uint32_t i = 0; i < joint_names_length; i++){ + uint32_t length_joint_namesi = strlen(this->joint_names[i]); + varToArr(outbuffer + offset, length_joint_namesi); + offset += 4; + memcpy(outbuffer + offset, this->joint_names[i], length_joint_namesi); + offset += length_joint_namesi; + } + offset += this->desired.serialize(outbuffer + offset); + offset += this->actual.serialize(outbuffer + offset); + offset += this->error.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t joint_names_lengthT = ((uint32_t) (*(inbuffer + offset))); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->joint_names_length); + if(joint_names_lengthT > joint_names_length) + this->joint_names = (char**)realloc(this->joint_names, joint_names_lengthT * sizeof(char*)); + joint_names_length = joint_names_lengthT; + for( uint32_t i = 0; i < joint_names_length; i++){ + uint32_t length_st_joint_names; + arrToVar(length_st_joint_names, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_joint_names; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_joint_names-1]=0; + this->st_joint_names = (char *)(inbuffer + offset-1); + offset += length_st_joint_names; + memcpy( &(this->joint_names[i]), &(this->st_joint_names), sizeof(char*)); + } + offset += this->desired.deserialize(inbuffer + offset); + offset += this->actual.deserialize(inbuffer + offset); + offset += this->error.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/JointTrajectoryControllerState"; }; + const char * getMD5(){ return "10817c60c2486ef6b33e97dcd87f4474"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryFeedback.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryFeedback.h new file mode 100644 index 0000000..9dfe808 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryFeedback.h @@ -0,0 +1,38 @@ +#ifndef _ROS_control_msgs_JointTrajectoryFeedback_h +#define _ROS_control_msgs_JointTrajectoryFeedback_h + +#include +#include +#include +#include "ros/msg.h" + +namespace control_msgs +{ + + class JointTrajectoryFeedback : public ros::Msg + { + public: + + JointTrajectoryFeedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "control_msgs/JointTrajectoryFeedback"; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryGoal.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryGoal.h new file mode 100644 index 0000000..b699132 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryGoal.h @@ -0,0 +1,44 @@ +#ifndef _ROS_control_msgs_JointTrajectoryGoal_h +#define _ROS_control_msgs_JointTrajectoryGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "trajectory_msgs/JointTrajectory.h" + +namespace control_msgs +{ + + class JointTrajectoryGoal : public ros::Msg + { + public: + typedef trajectory_msgs::JointTrajectory _trajectory_type; + _trajectory_type trajectory; + + JointTrajectoryGoal(): + trajectory() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->trajectory.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->trajectory.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/JointTrajectoryGoal"; }; + const char * getMD5(){ return "2a0eff76c870e8595636c2a562ca298e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryResult.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryResult.h new file mode 100644 index 0000000..623ed9c --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/JointTrajectoryResult.h @@ -0,0 +1,38 @@ +#ifndef _ROS_control_msgs_JointTrajectoryResult_h +#define _ROS_control_msgs_JointTrajectoryResult_h + +#include +#include +#include +#include "ros/msg.h" + +namespace control_msgs +{ + + class JointTrajectoryResult : public ros::Msg + { + public: + + JointTrajectoryResult() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "control_msgs/JointTrajectoryResult"; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/PidState.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/PidState.h new file mode 100644 index 0000000..a19ddf9 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/PidState.h @@ -0,0 +1,420 @@ +#ifndef _ROS_control_msgs_PidState_h +#define _ROS_control_msgs_PidState_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "ros/duration.h" + +namespace control_msgs +{ + + class PidState : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef ros::Duration _timestep_type; + _timestep_type timestep; + typedef double _error_type; + _error_type error; + typedef double _error_dot_type; + _error_dot_type error_dot; + typedef double _p_error_type; + _p_error_type p_error; + typedef double _i_error_type; + _i_error_type i_error; + typedef double _d_error_type; + _d_error_type d_error; + typedef double _p_term_type; + _p_term_type p_term; + typedef double _i_term_type; + _i_term_type i_term; + typedef double _d_term_type; + _d_term_type d_term; + typedef double _i_max_type; + _i_max_type i_max; + typedef double _i_min_type; + _i_min_type i_min; + typedef double _output_type; + _output_type output; + + PidState(): + header(), + timestep(), + error(0), + error_dot(0), + p_error(0), + i_error(0), + d_error(0), + p_term(0), + i_term(0), + d_term(0), + i_max(0), + i_min(0), + output(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->timestep.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->timestep.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->timestep.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->timestep.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->timestep.sec); + *(outbuffer + offset + 0) = (this->timestep.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->timestep.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->timestep.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->timestep.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->timestep.nsec); + union { + double real; + uint64_t base; + } u_error; + u_error.real = this->error; + *(outbuffer + offset + 0) = (u_error.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_error.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_error.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_error.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_error.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_error.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_error.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_error.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->error); + union { + double real; + uint64_t base; + } u_error_dot; + u_error_dot.real = this->error_dot; + *(outbuffer + offset + 0) = (u_error_dot.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_error_dot.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_error_dot.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_error_dot.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_error_dot.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_error_dot.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_error_dot.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_error_dot.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->error_dot); + union { + double real; + uint64_t base; + } u_p_error; + u_p_error.real = this->p_error; + *(outbuffer + offset + 0) = (u_p_error.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_p_error.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_p_error.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_p_error.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_p_error.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_p_error.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_p_error.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_p_error.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->p_error); + union { + double real; + uint64_t base; + } u_i_error; + u_i_error.real = this->i_error; + *(outbuffer + offset + 0) = (u_i_error.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_i_error.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_i_error.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_i_error.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_i_error.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_i_error.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_i_error.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_i_error.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->i_error); + union { + double real; + uint64_t base; + } u_d_error; + u_d_error.real = this->d_error; + *(outbuffer + offset + 0) = (u_d_error.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_d_error.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_d_error.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_d_error.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_d_error.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_d_error.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_d_error.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_d_error.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->d_error); + union { + double real; + uint64_t base; + } u_p_term; + u_p_term.real = this->p_term; + *(outbuffer + offset + 0) = (u_p_term.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_p_term.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_p_term.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_p_term.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_p_term.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_p_term.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_p_term.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_p_term.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->p_term); + union { + double real; + uint64_t base; + } u_i_term; + u_i_term.real = this->i_term; + *(outbuffer + offset + 0) = (u_i_term.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_i_term.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_i_term.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_i_term.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_i_term.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_i_term.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_i_term.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_i_term.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->i_term); + union { + double real; + uint64_t base; + } u_d_term; + u_d_term.real = this->d_term; + *(outbuffer + offset + 0) = (u_d_term.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_d_term.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_d_term.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_d_term.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_d_term.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_d_term.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_d_term.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_d_term.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->d_term); + union { + double real; + uint64_t base; + } u_i_max; + u_i_max.real = this->i_max; + *(outbuffer + offset + 0) = (u_i_max.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_i_max.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_i_max.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_i_max.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_i_max.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_i_max.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_i_max.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_i_max.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->i_max); + union { + double real; + uint64_t base; + } u_i_min; + u_i_min.real = this->i_min; + *(outbuffer + offset + 0) = (u_i_min.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_i_min.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_i_min.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_i_min.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_i_min.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_i_min.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_i_min.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_i_min.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->i_min); + union { + double real; + uint64_t base; + } u_output; + u_output.real = this->output; + *(outbuffer + offset + 0) = (u_output.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_output.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_output.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_output.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_output.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_output.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_output.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_output.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->output); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + this->timestep.sec = ((uint32_t) (*(inbuffer + offset))); + this->timestep.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->timestep.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->timestep.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->timestep.sec); + this->timestep.nsec = ((uint32_t) (*(inbuffer + offset))); + this->timestep.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->timestep.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->timestep.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->timestep.nsec); + union { + double real; + uint64_t base; + } u_error; + u_error.base = 0; + u_error.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->error = u_error.real; + offset += sizeof(this->error); + union { + double real; + uint64_t base; + } u_error_dot; + u_error_dot.base = 0; + u_error_dot.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_error_dot.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_error_dot.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_error_dot.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_error_dot.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_error_dot.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_error_dot.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_error_dot.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->error_dot = u_error_dot.real; + offset += sizeof(this->error_dot); + union { + double real; + uint64_t base; + } u_p_error; + u_p_error.base = 0; + u_p_error.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_p_error.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_p_error.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_p_error.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_p_error.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_p_error.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_p_error.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_p_error.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->p_error = u_p_error.real; + offset += sizeof(this->p_error); + union { + double real; + uint64_t base; + } u_i_error; + u_i_error.base = 0; + u_i_error.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_i_error.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_i_error.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_i_error.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_i_error.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_i_error.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_i_error.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_i_error.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->i_error = u_i_error.real; + offset += sizeof(this->i_error); + union { + double real; + uint64_t base; + } u_d_error; + u_d_error.base = 0; + u_d_error.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_d_error.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_d_error.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_d_error.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_d_error.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_d_error.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_d_error.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_d_error.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->d_error = u_d_error.real; + offset += sizeof(this->d_error); + union { + double real; + uint64_t base; + } u_p_term; + u_p_term.base = 0; + u_p_term.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_p_term.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_p_term.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_p_term.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_p_term.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_p_term.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_p_term.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_p_term.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->p_term = u_p_term.real; + offset += sizeof(this->p_term); + union { + double real; + uint64_t base; + } u_i_term; + u_i_term.base = 0; + u_i_term.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_i_term.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_i_term.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_i_term.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_i_term.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_i_term.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_i_term.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_i_term.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->i_term = u_i_term.real; + offset += sizeof(this->i_term); + union { + double real; + uint64_t base; + } u_d_term; + u_d_term.base = 0; + u_d_term.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_d_term.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_d_term.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_d_term.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_d_term.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_d_term.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_d_term.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_d_term.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->d_term = u_d_term.real; + offset += sizeof(this->d_term); + union { + double real; + uint64_t base; + } u_i_max; + u_i_max.base = 0; + u_i_max.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_i_max.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_i_max.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_i_max.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_i_max.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_i_max.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_i_max.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_i_max.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->i_max = u_i_max.real; + offset += sizeof(this->i_max); + union { + double real; + uint64_t base; + } u_i_min; + u_i_min.base = 0; + u_i_min.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_i_min.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_i_min.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_i_min.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_i_min.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_i_min.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_i_min.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_i_min.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->i_min = u_i_min.real; + offset += sizeof(this->i_min); + union { + double real; + uint64_t base; + } u_output; + u_output.base = 0; + u_output.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_output.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_output.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_output.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_output.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_output.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_output.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_output.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->output = u_output.real; + offset += sizeof(this->output); + return offset; + } + + const char * getType(){ return "control_msgs/PidState"; }; + const char * getMD5(){ return "b138ec00e886c10e73f27e8712252ea6"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadAction.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadAction.h new file mode 100644 index 0000000..82ee446 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_PointHeadAction_h +#define _ROS_control_msgs_PointHeadAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "control_msgs/PointHeadActionGoal.h" +#include "control_msgs/PointHeadActionResult.h" +#include "control_msgs/PointHeadActionFeedback.h" + +namespace control_msgs +{ + + class PointHeadAction : public ros::Msg + { + public: + typedef control_msgs::PointHeadActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef control_msgs::PointHeadActionResult _action_result_type; + _action_result_type action_result; + typedef control_msgs::PointHeadActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + PointHeadAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/PointHeadAction"; }; + const char * getMD5(){ return "7252920f1243de1b741f14f214125371"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadActionFeedback.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadActionFeedback.h new file mode 100644 index 0000000..780656b --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_PointHeadActionFeedback_h +#define _ROS_control_msgs_PointHeadActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "control_msgs/PointHeadFeedback.h" + +namespace control_msgs +{ + + class PointHeadActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef control_msgs::PointHeadFeedback _feedback_type; + _feedback_type feedback; + + PointHeadActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/PointHeadActionFeedback"; }; + const char * getMD5(){ return "33c9244957176bbba97dd641119e8460"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadActionGoal.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadActionGoal.h new file mode 100644 index 0000000..12ae791 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_PointHeadActionGoal_h +#define _ROS_control_msgs_PointHeadActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "control_msgs/PointHeadGoal.h" + +namespace control_msgs +{ + + class PointHeadActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef control_msgs::PointHeadGoal _goal_type; + _goal_type goal; + + PointHeadActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/PointHeadActionGoal"; }; + const char * getMD5(){ return "b53a8323d0ba7b310ba17a2d3a82a6b8"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadActionResult.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadActionResult.h new file mode 100644 index 0000000..7708fe6 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_PointHeadActionResult_h +#define _ROS_control_msgs_PointHeadActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "control_msgs/PointHeadResult.h" + +namespace control_msgs +{ + + class PointHeadActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef control_msgs::PointHeadResult _result_type; + _result_type result; + + PointHeadActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/PointHeadActionResult"; }; + const char * getMD5(){ return "1eb06eeff08fa7ea874431638cb52332"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadFeedback.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadFeedback.h new file mode 100644 index 0000000..beafd3e --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadFeedback.h @@ -0,0 +1,70 @@ +#ifndef _ROS_control_msgs_PointHeadFeedback_h +#define _ROS_control_msgs_PointHeadFeedback_h + +#include +#include +#include +#include "ros/msg.h" + +namespace control_msgs +{ + + class PointHeadFeedback : public ros::Msg + { + public: + typedef double _pointing_angle_error_type; + _pointing_angle_error_type pointing_angle_error; + + PointHeadFeedback(): + pointing_angle_error(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_pointing_angle_error; + u_pointing_angle_error.real = this->pointing_angle_error; + *(outbuffer + offset + 0) = (u_pointing_angle_error.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_pointing_angle_error.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_pointing_angle_error.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_pointing_angle_error.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_pointing_angle_error.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_pointing_angle_error.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_pointing_angle_error.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_pointing_angle_error.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->pointing_angle_error); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_pointing_angle_error; + u_pointing_angle_error.base = 0; + u_pointing_angle_error.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_pointing_angle_error.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_pointing_angle_error.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_pointing_angle_error.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_pointing_angle_error.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_pointing_angle_error.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_pointing_angle_error.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_pointing_angle_error.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->pointing_angle_error = u_pointing_angle_error.real; + offset += sizeof(this->pointing_angle_error); + return offset; + } + + const char * getType(){ return "control_msgs/PointHeadFeedback"; }; + const char * getMD5(){ return "cce80d27fd763682da8805a73316cab4"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadGoal.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadGoal.h new file mode 100644 index 0000000..4d7355c --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadGoal.h @@ -0,0 +1,123 @@ +#ifndef _ROS_control_msgs_PointHeadGoal_h +#define _ROS_control_msgs_PointHeadGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/PointStamped.h" +#include "geometry_msgs/Vector3.h" +#include "ros/duration.h" + +namespace control_msgs +{ + + class PointHeadGoal : public ros::Msg + { + public: + typedef geometry_msgs::PointStamped _target_type; + _target_type target; + typedef geometry_msgs::Vector3 _pointing_axis_type; + _pointing_axis_type pointing_axis; + typedef const char* _pointing_frame_type; + _pointing_frame_type pointing_frame; + typedef ros::Duration _min_duration_type; + _min_duration_type min_duration; + typedef double _max_velocity_type; + _max_velocity_type max_velocity; + + PointHeadGoal(): + target(), + pointing_axis(), + pointing_frame(""), + min_duration(), + max_velocity(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->target.serialize(outbuffer + offset); + offset += this->pointing_axis.serialize(outbuffer + offset); + uint32_t length_pointing_frame = strlen(this->pointing_frame); + varToArr(outbuffer + offset, length_pointing_frame); + offset += 4; + memcpy(outbuffer + offset, this->pointing_frame, length_pointing_frame); + offset += length_pointing_frame; + *(outbuffer + offset + 0) = (this->min_duration.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->min_duration.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->min_duration.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->min_duration.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->min_duration.sec); + *(outbuffer + offset + 0) = (this->min_duration.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->min_duration.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->min_duration.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->min_duration.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->min_duration.nsec); + union { + double real; + uint64_t base; + } u_max_velocity; + u_max_velocity.real = this->max_velocity; + *(outbuffer + offset + 0) = (u_max_velocity.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_max_velocity.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_max_velocity.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_max_velocity.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_max_velocity.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_max_velocity.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_max_velocity.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_max_velocity.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->max_velocity); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->target.deserialize(inbuffer + offset); + offset += this->pointing_axis.deserialize(inbuffer + offset); + uint32_t length_pointing_frame; + arrToVar(length_pointing_frame, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_pointing_frame; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_pointing_frame-1]=0; + this->pointing_frame = (char *)(inbuffer + offset-1); + offset += length_pointing_frame; + this->min_duration.sec = ((uint32_t) (*(inbuffer + offset))); + this->min_duration.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->min_duration.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->min_duration.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->min_duration.sec); + this->min_duration.nsec = ((uint32_t) (*(inbuffer + offset))); + this->min_duration.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->min_duration.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->min_duration.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->min_duration.nsec); + union { + double real; + uint64_t base; + } u_max_velocity; + u_max_velocity.base = 0; + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->max_velocity = u_max_velocity.real; + offset += sizeof(this->max_velocity); + return offset; + } + + const char * getType(){ return "control_msgs/PointHeadGoal"; }; + const char * getMD5(){ return "8b92b1cd5e06c8a94c917dc3209a4c1d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadResult.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadResult.h new file mode 100644 index 0000000..53f789e --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/PointHeadResult.h @@ -0,0 +1,38 @@ +#ifndef _ROS_control_msgs_PointHeadResult_h +#define _ROS_control_msgs_PointHeadResult_h + +#include +#include +#include +#include "ros/msg.h" + +namespace control_msgs +{ + + class PointHeadResult : public ros::Msg + { + public: + + PointHeadResult() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "control_msgs/PointHeadResult"; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/QueryCalibrationState.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/QueryCalibrationState.h new file mode 100644 index 0000000..0fd1a66 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/QueryCalibrationState.h @@ -0,0 +1,88 @@ +#ifndef _ROS_SERVICE_QueryCalibrationState_h +#define _ROS_SERVICE_QueryCalibrationState_h +#include +#include +#include +#include "ros/msg.h" + +namespace control_msgs +{ + +static const char QUERYCALIBRATIONSTATE[] = "control_msgs/QueryCalibrationState"; + + class QueryCalibrationStateRequest : public ros::Msg + { + public: + + QueryCalibrationStateRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return QUERYCALIBRATIONSTATE; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class QueryCalibrationStateResponse : public ros::Msg + { + public: + typedef bool _is_calibrated_type; + _is_calibrated_type is_calibrated; + + QueryCalibrationStateResponse(): + is_calibrated(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_is_calibrated; + u_is_calibrated.real = this->is_calibrated; + *(outbuffer + offset + 0) = (u_is_calibrated.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->is_calibrated); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_is_calibrated; + u_is_calibrated.base = 0; + u_is_calibrated.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->is_calibrated = u_is_calibrated.real; + offset += sizeof(this->is_calibrated); + return offset; + } + + const char * getType(){ return QUERYCALIBRATIONSTATE; }; + const char * getMD5(){ return "28af3beedcb84986b8e470dc5470507d"; }; + + }; + + class QueryCalibrationState { + public: + typedef QueryCalibrationStateRequest Request; + typedef QueryCalibrationStateResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/QueryTrajectoryState.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/QueryTrajectoryState.h new file mode 100644 index 0000000..aef19a8 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/QueryTrajectoryState.h @@ -0,0 +1,287 @@ +#ifndef _ROS_SERVICE_QueryTrajectoryState_h +#define _ROS_SERVICE_QueryTrajectoryState_h +#include +#include +#include +#include "ros/msg.h" +#include "ros/time.h" + +namespace control_msgs +{ + +static const char QUERYTRAJECTORYSTATE[] = "control_msgs/QueryTrajectoryState"; + + class QueryTrajectoryStateRequest : public ros::Msg + { + public: + typedef ros::Time _time_type; + _time_type time; + + QueryTrajectoryStateRequest(): + time() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->time.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->time.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->time.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->time.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->time.sec); + *(outbuffer + offset + 0) = (this->time.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->time.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->time.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->time.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->time.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->time.sec = ((uint32_t) (*(inbuffer + offset))); + this->time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->time.sec); + this->time.nsec = ((uint32_t) (*(inbuffer + offset))); + this->time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->time.nsec); + return offset; + } + + const char * getType(){ return QUERYTRAJECTORYSTATE; }; + const char * getMD5(){ return "556a4fb76023a469987922359d08a844"; }; + + }; + + class QueryTrajectoryStateResponse : public ros::Msg + { + public: + uint32_t name_length; + typedef char* _name_type; + _name_type st_name; + _name_type * name; + uint32_t position_length; + typedef double _position_type; + _position_type st_position; + _position_type * position; + uint32_t velocity_length; + typedef double _velocity_type; + _velocity_type st_velocity; + _velocity_type * velocity; + uint32_t acceleration_length; + typedef double _acceleration_type; + _acceleration_type st_acceleration; + _acceleration_type * acceleration; + + QueryTrajectoryStateResponse(): + name_length(0), name(NULL), + position_length(0), position(NULL), + velocity_length(0), velocity(NULL), + acceleration_length(0), acceleration(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->name_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->name_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->name_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->name_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->name_length); + for( uint32_t i = 0; i < name_length; i++){ + uint32_t length_namei = strlen(this->name[i]); + varToArr(outbuffer + offset, length_namei); + offset += 4; + memcpy(outbuffer + offset, this->name[i], length_namei); + offset += length_namei; + } + *(outbuffer + offset + 0) = (this->position_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->position_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->position_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->position_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->position_length); + for( uint32_t i = 0; i < position_length; i++){ + union { + double real; + uint64_t base; + } u_positioni; + u_positioni.real = this->position[i]; + *(outbuffer + offset + 0) = (u_positioni.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_positioni.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_positioni.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_positioni.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_positioni.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_positioni.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_positioni.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_positioni.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->position[i]); + } + *(outbuffer + offset + 0) = (this->velocity_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->velocity_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->velocity_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->velocity_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->velocity_length); + for( uint32_t i = 0; i < velocity_length; i++){ + union { + double real; + uint64_t base; + } u_velocityi; + u_velocityi.real = this->velocity[i]; + *(outbuffer + offset + 0) = (u_velocityi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_velocityi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_velocityi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_velocityi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_velocityi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_velocityi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_velocityi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_velocityi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->velocity[i]); + } + *(outbuffer + offset + 0) = (this->acceleration_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->acceleration_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->acceleration_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->acceleration_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->acceleration_length); + for( uint32_t i = 0; i < acceleration_length; i++){ + union { + double real; + uint64_t base; + } u_accelerationi; + u_accelerationi.real = this->acceleration[i]; + *(outbuffer + offset + 0) = (u_accelerationi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_accelerationi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_accelerationi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_accelerationi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_accelerationi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_accelerationi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_accelerationi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_accelerationi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->acceleration[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t name_lengthT = ((uint32_t) (*(inbuffer + offset))); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->name_length); + if(name_lengthT > name_length) + this->name = (char**)realloc(this->name, name_lengthT * sizeof(char*)); + name_length = name_lengthT; + for( uint32_t i = 0; i < name_length; i++){ + uint32_t length_st_name; + arrToVar(length_st_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_name-1]=0; + this->st_name = (char *)(inbuffer + offset-1); + offset += length_st_name; + memcpy( &(this->name[i]), &(this->st_name), sizeof(char*)); + } + uint32_t position_lengthT = ((uint32_t) (*(inbuffer + offset))); + position_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + position_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + position_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->position_length); + if(position_lengthT > position_length) + this->position = (double*)realloc(this->position, position_lengthT * sizeof(double)); + position_length = position_lengthT; + for( uint32_t i = 0; i < position_length; i++){ + union { + double real; + uint64_t base; + } u_st_position; + u_st_position.base = 0; + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_position = u_st_position.real; + offset += sizeof(this->st_position); + memcpy( &(this->position[i]), &(this->st_position), sizeof(double)); + } + uint32_t velocity_lengthT = ((uint32_t) (*(inbuffer + offset))); + velocity_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + velocity_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + velocity_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->velocity_length); + if(velocity_lengthT > velocity_length) + this->velocity = (double*)realloc(this->velocity, velocity_lengthT * sizeof(double)); + velocity_length = velocity_lengthT; + for( uint32_t i = 0; i < velocity_length; i++){ + union { + double real; + uint64_t base; + } u_st_velocity; + u_st_velocity.base = 0; + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_velocity = u_st_velocity.real; + offset += sizeof(this->st_velocity); + memcpy( &(this->velocity[i]), &(this->st_velocity), sizeof(double)); + } + uint32_t acceleration_lengthT = ((uint32_t) (*(inbuffer + offset))); + acceleration_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + acceleration_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + acceleration_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->acceleration_length); + if(acceleration_lengthT > acceleration_length) + this->acceleration = (double*)realloc(this->acceleration, acceleration_lengthT * sizeof(double)); + acceleration_length = acceleration_lengthT; + for( uint32_t i = 0; i < acceleration_length; i++){ + union { + double real; + uint64_t base; + } u_st_acceleration; + u_st_acceleration.base = 0; + u_st_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_acceleration = u_st_acceleration.real; + offset += sizeof(this->st_acceleration); + memcpy( &(this->acceleration[i]), &(this->st_acceleration), sizeof(double)); + } + return offset; + } + + const char * getType(){ return QUERYTRAJECTORYSTATE; }; + const char * getMD5(){ return "1f1a6554ad060f44d013e71868403c1a"; }; + + }; + + class QueryTrajectoryState { + public: + typedef QueryTrajectoryStateRequest Request; + typedef QueryTrajectoryStateResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionAction.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionAction.h new file mode 100644 index 0000000..3117ee1 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_SingleJointPositionAction_h +#define _ROS_control_msgs_SingleJointPositionAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "control_msgs/SingleJointPositionActionGoal.h" +#include "control_msgs/SingleJointPositionActionResult.h" +#include "control_msgs/SingleJointPositionActionFeedback.h" + +namespace control_msgs +{ + + class SingleJointPositionAction : public ros::Msg + { + public: + typedef control_msgs::SingleJointPositionActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef control_msgs::SingleJointPositionActionResult _action_result_type; + _action_result_type action_result; + typedef control_msgs::SingleJointPositionActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + SingleJointPositionAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/SingleJointPositionAction"; }; + const char * getMD5(){ return "c4a786b7d53e5d0983decf967a5a779e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionActionFeedback.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionActionFeedback.h new file mode 100644 index 0000000..82cba63 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_SingleJointPositionActionFeedback_h +#define _ROS_control_msgs_SingleJointPositionActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "control_msgs/SingleJointPositionFeedback.h" + +namespace control_msgs +{ + + class SingleJointPositionActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef control_msgs::SingleJointPositionFeedback _feedback_type; + _feedback_type feedback; + + SingleJointPositionActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/SingleJointPositionActionFeedback"; }; + const char * getMD5(){ return "3503b7cf8972f90d245850a5d8796cfa"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionActionGoal.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionActionGoal.h new file mode 100644 index 0000000..75c7898 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_SingleJointPositionActionGoal_h +#define _ROS_control_msgs_SingleJointPositionActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "control_msgs/SingleJointPositionGoal.h" + +namespace control_msgs +{ + + class SingleJointPositionActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef control_msgs::SingleJointPositionGoal _goal_type; + _goal_type goal; + + SingleJointPositionActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/SingleJointPositionActionGoal"; }; + const char * getMD5(){ return "4b0d3d091471663e17749c1d0db90f61"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionActionResult.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionActionResult.h new file mode 100644 index 0000000..ef99cd8 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_SingleJointPositionActionResult_h +#define _ROS_control_msgs_SingleJointPositionActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "control_msgs/SingleJointPositionResult.h" + +namespace control_msgs +{ + + class SingleJointPositionActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef control_msgs::SingleJointPositionResult _result_type; + _result_type result; + + SingleJointPositionActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/SingleJointPositionActionResult"; }; + const char * getMD5(){ return "1eb06eeff08fa7ea874431638cb52332"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionFeedback.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionFeedback.h new file mode 100644 index 0000000..cbf8fa4 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionFeedback.h @@ -0,0 +1,140 @@ +#ifndef _ROS_control_msgs_SingleJointPositionFeedback_h +#define _ROS_control_msgs_SingleJointPositionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace control_msgs +{ + + class SingleJointPositionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef double _position_type; + _position_type position; + typedef double _velocity_type; + _velocity_type velocity; + typedef double _error_type; + _error_type error; + + SingleJointPositionFeedback(): + header(), + position(0), + velocity(0), + error(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + union { + double real; + uint64_t base; + } u_position; + u_position.real = this->position; + *(outbuffer + offset + 0) = (u_position.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_position.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_position.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_position.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_position.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_position.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_position.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_position.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->position); + union { + double real; + uint64_t base; + } u_velocity; + u_velocity.real = this->velocity; + *(outbuffer + offset + 0) = (u_velocity.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_velocity.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_velocity.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_velocity.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_velocity.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_velocity.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_velocity.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_velocity.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->velocity); + union { + double real; + uint64_t base; + } u_error; + u_error.real = this->error; + *(outbuffer + offset + 0) = (u_error.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_error.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_error.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_error.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_error.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_error.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_error.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_error.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->error); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + union { + double real; + uint64_t base; + } u_position; + u_position.base = 0; + u_position.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->position = u_position.real; + offset += sizeof(this->position); + union { + double real; + uint64_t base; + } u_velocity; + u_velocity.base = 0; + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->velocity = u_velocity.real; + offset += sizeof(this->velocity); + union { + double real; + uint64_t base; + } u_error; + u_error.base = 0; + u_error.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->error = u_error.real; + offset += sizeof(this->error); + return offset; + } + + const char * getType(){ return "control_msgs/SingleJointPositionFeedback"; }; + const char * getMD5(){ return "8cee65610a3d08e0a1bded82f146f1fd"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionGoal.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionGoal.h new file mode 100644 index 0000000..7261176 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionGoal.h @@ -0,0 +1,126 @@ +#ifndef _ROS_control_msgs_SingleJointPositionGoal_h +#define _ROS_control_msgs_SingleJointPositionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "ros/duration.h" + +namespace control_msgs +{ + + class SingleJointPositionGoal : public ros::Msg + { + public: + typedef double _position_type; + _position_type position; + typedef ros::Duration _min_duration_type; + _min_duration_type min_duration; + typedef double _max_velocity_type; + _max_velocity_type max_velocity; + + SingleJointPositionGoal(): + position(0), + min_duration(), + max_velocity(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_position; + u_position.real = this->position; + *(outbuffer + offset + 0) = (u_position.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_position.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_position.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_position.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_position.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_position.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_position.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_position.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->position); + *(outbuffer + offset + 0) = (this->min_duration.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->min_duration.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->min_duration.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->min_duration.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->min_duration.sec); + *(outbuffer + offset + 0) = (this->min_duration.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->min_duration.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->min_duration.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->min_duration.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->min_duration.nsec); + union { + double real; + uint64_t base; + } u_max_velocity; + u_max_velocity.real = this->max_velocity; + *(outbuffer + offset + 0) = (u_max_velocity.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_max_velocity.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_max_velocity.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_max_velocity.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_max_velocity.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_max_velocity.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_max_velocity.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_max_velocity.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->max_velocity); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_position; + u_position.base = 0; + u_position.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->position = u_position.real; + offset += sizeof(this->position); + this->min_duration.sec = ((uint32_t) (*(inbuffer + offset))); + this->min_duration.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->min_duration.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->min_duration.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->min_duration.sec); + this->min_duration.nsec = ((uint32_t) (*(inbuffer + offset))); + this->min_duration.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->min_duration.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->min_duration.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->min_duration.nsec); + union { + double real; + uint64_t base; + } u_max_velocity; + u_max_velocity.base = 0; + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->max_velocity = u_max_velocity.real; + offset += sizeof(this->max_velocity); + return offset; + } + + const char * getType(){ return "control_msgs/SingleJointPositionGoal"; }; + const char * getMD5(){ return "fbaaa562a23a013fd5053e5f72cbb35c"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionResult.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionResult.h new file mode 100644 index 0000000..7593425 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_msgs/SingleJointPositionResult.h @@ -0,0 +1,38 @@ +#ifndef _ROS_control_msgs_SingleJointPositionResult_h +#define _ROS_control_msgs_SingleJointPositionResult_h + +#include +#include +#include +#include "ros/msg.h" + +namespace control_msgs +{ + + class SingleJointPositionResult : public ros::Msg + { + public: + + SingleJointPositionResult() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "control_msgs/SingleJointPositionResult"; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_toolbox/SetPidGains.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_toolbox/SetPidGains.h new file mode 100644 index 0000000..709d825 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/control_toolbox/SetPidGains.h @@ -0,0 +1,216 @@ +#ifndef _ROS_SERVICE_SetPidGains_h +#define _ROS_SERVICE_SetPidGains_h +#include +#include +#include +#include "ros/msg.h" + +namespace control_toolbox +{ + +static const char SETPIDGAINS[] = "control_toolbox/SetPidGains"; + + class SetPidGainsRequest : public ros::Msg + { + public: + typedef double _p_type; + _p_type p; + typedef double _i_type; + _i_type i; + typedef double _d_type; + _d_type d; + typedef double _i_clamp_type; + _i_clamp_type i_clamp; + typedef bool _antiwindup_type; + _antiwindup_type antiwindup; + + SetPidGainsRequest(): + p(0), + i(0), + d(0), + i_clamp(0), + antiwindup(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_p; + u_p.real = this->p; + *(outbuffer + offset + 0) = (u_p.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_p.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_p.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_p.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_p.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_p.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_p.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_p.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->p); + union { + double real; + uint64_t base; + } u_i; + u_i.real = this->i; + *(outbuffer + offset + 0) = (u_i.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_i.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_i.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_i.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_i.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_i.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_i.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_i.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->i); + union { + double real; + uint64_t base; + } u_d; + u_d.real = this->d; + *(outbuffer + offset + 0) = (u_d.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_d.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_d.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_d.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_d.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_d.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_d.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_d.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->d); + union { + double real; + uint64_t base; + } u_i_clamp; + u_i_clamp.real = this->i_clamp; + *(outbuffer + offset + 0) = (u_i_clamp.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_i_clamp.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_i_clamp.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_i_clamp.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_i_clamp.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_i_clamp.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_i_clamp.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_i_clamp.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->i_clamp); + union { + bool real; + uint8_t base; + } u_antiwindup; + u_antiwindup.real = this->antiwindup; + *(outbuffer + offset + 0) = (u_antiwindup.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->antiwindup); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_p; + u_p.base = 0; + u_p.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_p.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_p.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_p.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_p.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_p.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_p.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_p.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->p = u_p.real; + offset += sizeof(this->p); + union { + double real; + uint64_t base; + } u_i; + u_i.base = 0; + u_i.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_i.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_i.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_i.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_i.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_i.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_i.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_i.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->i = u_i.real; + offset += sizeof(this->i); + union { + double real; + uint64_t base; + } u_d; + u_d.base = 0; + u_d.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_d.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_d.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_d.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_d.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_d.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_d.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_d.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->d = u_d.real; + offset += sizeof(this->d); + union { + double real; + uint64_t base; + } u_i_clamp; + u_i_clamp.base = 0; + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->i_clamp = u_i_clamp.real; + offset += sizeof(this->i_clamp); + union { + bool real; + uint8_t base; + } u_antiwindup; + u_antiwindup.base = 0; + u_antiwindup.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->antiwindup = u_antiwindup.real; + offset += sizeof(this->antiwindup); + return offset; + } + + const char * getType(){ return SETPIDGAINS; }; + const char * getMD5(){ return "4a43159879643e60937bf2893b633607"; }; + + }; + + class SetPidGainsResponse : public ros::Msg + { + public: + + SetPidGainsResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return SETPIDGAINS; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class SetPidGains { + public: + typedef SetPidGainsRequest Request; + typedef SetPidGainsResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ControllerState.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ControllerState.h new file mode 100644 index 0000000..ea728c4 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ControllerState.h @@ -0,0 +1,115 @@ +#ifndef _ROS_controller_manager_msgs_ControllerState_h +#define _ROS_controller_manager_msgs_ControllerState_h + +#include +#include +#include +#include "ros/msg.h" +#include "controller_manager_msgs/HardwareInterfaceResources.h" + +namespace controller_manager_msgs +{ + + class ControllerState : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef const char* _state_type; + _state_type state; + typedef const char* _type_type; + _type_type type; + uint32_t claimed_resources_length; + typedef controller_manager_msgs::HardwareInterfaceResources _claimed_resources_type; + _claimed_resources_type st_claimed_resources; + _claimed_resources_type * claimed_resources; + + ControllerState(): + name(""), + state(""), + type(""), + claimed_resources_length(0), claimed_resources(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + uint32_t length_state = strlen(this->state); + varToArr(outbuffer + offset, length_state); + offset += 4; + memcpy(outbuffer + offset, this->state, length_state); + offset += length_state; + uint32_t length_type = strlen(this->type); + varToArr(outbuffer + offset, length_type); + offset += 4; + memcpy(outbuffer + offset, this->type, length_type); + offset += length_type; + *(outbuffer + offset + 0) = (this->claimed_resources_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->claimed_resources_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->claimed_resources_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->claimed_resources_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->claimed_resources_length); + for( uint32_t i = 0; i < claimed_resources_length; i++){ + offset += this->claimed_resources[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + uint32_t length_state; + arrToVar(length_state, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_state; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_state-1]=0; + this->state = (char *)(inbuffer + offset-1); + offset += length_state; + uint32_t length_type; + arrToVar(length_type, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_type; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_type-1]=0; + this->type = (char *)(inbuffer + offset-1); + offset += length_type; + uint32_t claimed_resources_lengthT = ((uint32_t) (*(inbuffer + offset))); + claimed_resources_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + claimed_resources_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + claimed_resources_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->claimed_resources_length); + if(claimed_resources_lengthT > claimed_resources_length) + this->claimed_resources = (controller_manager_msgs::HardwareInterfaceResources*)realloc(this->claimed_resources, claimed_resources_lengthT * sizeof(controller_manager_msgs::HardwareInterfaceResources)); + claimed_resources_length = claimed_resources_lengthT; + for( uint32_t i = 0; i < claimed_resources_length; i++){ + offset += this->st_claimed_resources.deserialize(inbuffer + offset); + memcpy( &(this->claimed_resources[i]), &(this->st_claimed_resources), sizeof(controller_manager_msgs::HardwareInterfaceResources)); + } + return offset; + } + + const char * getType(){ return "controller_manager_msgs/ControllerState"; }; + const char * getMD5(){ return "aeb6b261d97793ab74099a3740245272"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ControllerStatistics.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ControllerStatistics.h new file mode 100644 index 0000000..c62773c --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ControllerStatistics.h @@ -0,0 +1,231 @@ +#ifndef _ROS_controller_manager_msgs_ControllerStatistics_h +#define _ROS_controller_manager_msgs_ControllerStatistics_h + +#include +#include +#include +#include "ros/msg.h" +#include "ros/time.h" +#include "ros/duration.h" + +namespace controller_manager_msgs +{ + + class ControllerStatistics : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef const char* _type_type; + _type_type type; + typedef ros::Time _timestamp_type; + _timestamp_type timestamp; + typedef bool _running_type; + _running_type running; + typedef ros::Duration _max_time_type; + _max_time_type max_time; + typedef ros::Duration _mean_time_type; + _mean_time_type mean_time; + typedef ros::Duration _variance_time_type; + _variance_time_type variance_time; + typedef int32_t _num_control_loop_overruns_type; + _num_control_loop_overruns_type num_control_loop_overruns; + typedef ros::Time _time_last_control_loop_overrun_type; + _time_last_control_loop_overrun_type time_last_control_loop_overrun; + + ControllerStatistics(): + name(""), + type(""), + timestamp(), + running(0), + max_time(), + mean_time(), + variance_time(), + num_control_loop_overruns(0), + time_last_control_loop_overrun() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + uint32_t length_type = strlen(this->type); + varToArr(outbuffer + offset, length_type); + offset += 4; + memcpy(outbuffer + offset, this->type, length_type); + offset += length_type; + *(outbuffer + offset + 0) = (this->timestamp.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->timestamp.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->timestamp.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->timestamp.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->timestamp.sec); + *(outbuffer + offset + 0) = (this->timestamp.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->timestamp.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->timestamp.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->timestamp.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->timestamp.nsec); + union { + bool real; + uint8_t base; + } u_running; + u_running.real = this->running; + *(outbuffer + offset + 0) = (u_running.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->running); + *(outbuffer + offset + 0) = (this->max_time.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->max_time.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->max_time.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->max_time.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->max_time.sec); + *(outbuffer + offset + 0) = (this->max_time.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->max_time.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->max_time.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->max_time.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->max_time.nsec); + *(outbuffer + offset + 0) = (this->mean_time.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->mean_time.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->mean_time.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->mean_time.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->mean_time.sec); + *(outbuffer + offset + 0) = (this->mean_time.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->mean_time.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->mean_time.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->mean_time.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->mean_time.nsec); + *(outbuffer + offset + 0) = (this->variance_time.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->variance_time.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->variance_time.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->variance_time.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->variance_time.sec); + *(outbuffer + offset + 0) = (this->variance_time.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->variance_time.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->variance_time.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->variance_time.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->variance_time.nsec); + union { + int32_t real; + uint32_t base; + } u_num_control_loop_overruns; + u_num_control_loop_overruns.real = this->num_control_loop_overruns; + *(outbuffer + offset + 0) = (u_num_control_loop_overruns.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_num_control_loop_overruns.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_num_control_loop_overruns.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_num_control_loop_overruns.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->num_control_loop_overruns); + *(outbuffer + offset + 0) = (this->time_last_control_loop_overrun.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->time_last_control_loop_overrun.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->time_last_control_loop_overrun.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->time_last_control_loop_overrun.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->time_last_control_loop_overrun.sec); + *(outbuffer + offset + 0) = (this->time_last_control_loop_overrun.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->time_last_control_loop_overrun.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->time_last_control_loop_overrun.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->time_last_control_loop_overrun.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->time_last_control_loop_overrun.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + uint32_t length_type; + arrToVar(length_type, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_type; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_type-1]=0; + this->type = (char *)(inbuffer + offset-1); + offset += length_type; + this->timestamp.sec = ((uint32_t) (*(inbuffer + offset))); + this->timestamp.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->timestamp.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->timestamp.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->timestamp.sec); + this->timestamp.nsec = ((uint32_t) (*(inbuffer + offset))); + this->timestamp.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->timestamp.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->timestamp.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->timestamp.nsec); + union { + bool real; + uint8_t base; + } u_running; + u_running.base = 0; + u_running.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->running = u_running.real; + offset += sizeof(this->running); + this->max_time.sec = ((uint32_t) (*(inbuffer + offset))); + this->max_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->max_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->max_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->max_time.sec); + this->max_time.nsec = ((uint32_t) (*(inbuffer + offset))); + this->max_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->max_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->max_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->max_time.nsec); + this->mean_time.sec = ((uint32_t) (*(inbuffer + offset))); + this->mean_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->mean_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->mean_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->mean_time.sec); + this->mean_time.nsec = ((uint32_t) (*(inbuffer + offset))); + this->mean_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->mean_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->mean_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->mean_time.nsec); + this->variance_time.sec = ((uint32_t) (*(inbuffer + offset))); + this->variance_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->variance_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->variance_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->variance_time.sec); + this->variance_time.nsec = ((uint32_t) (*(inbuffer + offset))); + this->variance_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->variance_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->variance_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->variance_time.nsec); + union { + int32_t real; + uint32_t base; + } u_num_control_loop_overruns; + u_num_control_loop_overruns.base = 0; + u_num_control_loop_overruns.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_num_control_loop_overruns.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_num_control_loop_overruns.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_num_control_loop_overruns.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->num_control_loop_overruns = u_num_control_loop_overruns.real; + offset += sizeof(this->num_control_loop_overruns); + this->time_last_control_loop_overrun.sec = ((uint32_t) (*(inbuffer + offset))); + this->time_last_control_loop_overrun.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->time_last_control_loop_overrun.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->time_last_control_loop_overrun.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->time_last_control_loop_overrun.sec); + this->time_last_control_loop_overrun.nsec = ((uint32_t) (*(inbuffer + offset))); + this->time_last_control_loop_overrun.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->time_last_control_loop_overrun.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->time_last_control_loop_overrun.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->time_last_control_loop_overrun.nsec); + return offset; + } + + const char * getType(){ return "controller_manager_msgs/ControllerStatistics"; }; + const char * getMD5(){ return "697780c372c8d8597a1436d0e2ad3ba8"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ControllersStatistics.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ControllersStatistics.h new file mode 100644 index 0000000..a3c0503 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ControllersStatistics.h @@ -0,0 +1,70 @@ +#ifndef _ROS_controller_manager_msgs_ControllersStatistics_h +#define _ROS_controller_manager_msgs_ControllersStatistics_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "controller_manager_msgs/ControllerStatistics.h" + +namespace controller_manager_msgs +{ + + class ControllersStatistics : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t controller_length; + typedef controller_manager_msgs::ControllerStatistics _controller_type; + _controller_type st_controller; + _controller_type * controller; + + ControllersStatistics(): + header(), + controller_length(0), controller(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->controller_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->controller_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->controller_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->controller_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->controller_length); + for( uint32_t i = 0; i < controller_length; i++){ + offset += this->controller[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t controller_lengthT = ((uint32_t) (*(inbuffer + offset))); + controller_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + controller_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + controller_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->controller_length); + if(controller_lengthT > controller_length) + this->controller = (controller_manager_msgs::ControllerStatistics*)realloc(this->controller, controller_lengthT * sizeof(controller_manager_msgs::ControllerStatistics)); + controller_length = controller_lengthT; + for( uint32_t i = 0; i < controller_length; i++){ + offset += this->st_controller.deserialize(inbuffer + offset); + memcpy( &(this->controller[i]), &(this->st_controller), sizeof(controller_manager_msgs::ControllerStatistics)); + } + return offset; + } + + const char * getType(){ return "controller_manager_msgs/ControllersStatistics"; }; + const char * getMD5(){ return "a154c347736773e3700d1719105df29d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/controller_manager_msgs/HardwareInterfaceResources.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/controller_manager_msgs/HardwareInterfaceResources.h new file mode 100644 index 0000000..5b574c1 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/controller_manager_msgs/HardwareInterfaceResources.h @@ -0,0 +1,92 @@ +#ifndef _ROS_controller_manager_msgs_HardwareInterfaceResources_h +#define _ROS_controller_manager_msgs_HardwareInterfaceResources_h + +#include +#include +#include +#include "ros/msg.h" + +namespace controller_manager_msgs +{ + + class HardwareInterfaceResources : public ros::Msg + { + public: + typedef const char* _hardware_interface_type; + _hardware_interface_type hardware_interface; + uint32_t resources_length; + typedef char* _resources_type; + _resources_type st_resources; + _resources_type * resources; + + HardwareInterfaceResources(): + hardware_interface(""), + resources_length(0), resources(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_hardware_interface = strlen(this->hardware_interface); + varToArr(outbuffer + offset, length_hardware_interface); + offset += 4; + memcpy(outbuffer + offset, this->hardware_interface, length_hardware_interface); + offset += length_hardware_interface; + *(outbuffer + offset + 0) = (this->resources_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->resources_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->resources_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->resources_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->resources_length); + for( uint32_t i = 0; i < resources_length; i++){ + uint32_t length_resourcesi = strlen(this->resources[i]); + varToArr(outbuffer + offset, length_resourcesi); + offset += 4; + memcpy(outbuffer + offset, this->resources[i], length_resourcesi); + offset += length_resourcesi; + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_hardware_interface; + arrToVar(length_hardware_interface, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_hardware_interface; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_hardware_interface-1]=0; + this->hardware_interface = (char *)(inbuffer + offset-1); + offset += length_hardware_interface; + uint32_t resources_lengthT = ((uint32_t) (*(inbuffer + offset))); + resources_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + resources_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + resources_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->resources_length); + if(resources_lengthT > resources_length) + this->resources = (char**)realloc(this->resources, resources_lengthT * sizeof(char*)); + resources_length = resources_lengthT; + for( uint32_t i = 0; i < resources_length; i++){ + uint32_t length_st_resources; + arrToVar(length_st_resources, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_resources; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_resources-1]=0; + this->st_resources = (char *)(inbuffer + offset-1); + offset += length_st_resources; + memcpy( &(this->resources[i]), &(this->st_resources), sizeof(char*)); + } + return offset; + } + + const char * getType(){ return "controller_manager_msgs/HardwareInterfaceResources"; }; + const char * getMD5(){ return "f25b55cbf1d1f76e82e5ec9e83f76258"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ListControllerTypes.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ListControllerTypes.h new file mode 100644 index 0000000..45097f8 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ListControllerTypes.h @@ -0,0 +1,144 @@ +#ifndef _ROS_SERVICE_ListControllerTypes_h +#define _ROS_SERVICE_ListControllerTypes_h +#include +#include +#include +#include "ros/msg.h" + +namespace controller_manager_msgs +{ + +static const char LISTCONTROLLERTYPES[] = "controller_manager_msgs/ListControllerTypes"; + + class ListControllerTypesRequest : public ros::Msg + { + public: + + ListControllerTypesRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return LISTCONTROLLERTYPES; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class ListControllerTypesResponse : public ros::Msg + { + public: + uint32_t types_length; + typedef char* _types_type; + _types_type st_types; + _types_type * types; + uint32_t base_classes_length; + typedef char* _base_classes_type; + _base_classes_type st_base_classes; + _base_classes_type * base_classes; + + ListControllerTypesResponse(): + types_length(0), types(NULL), + base_classes_length(0), base_classes(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->types_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->types_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->types_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->types_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->types_length); + for( uint32_t i = 0; i < types_length; i++){ + uint32_t length_typesi = strlen(this->types[i]); + varToArr(outbuffer + offset, length_typesi); + offset += 4; + memcpy(outbuffer + offset, this->types[i], length_typesi); + offset += length_typesi; + } + *(outbuffer + offset + 0) = (this->base_classes_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->base_classes_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->base_classes_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->base_classes_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->base_classes_length); + for( uint32_t i = 0; i < base_classes_length; i++){ + uint32_t length_base_classesi = strlen(this->base_classes[i]); + varToArr(outbuffer + offset, length_base_classesi); + offset += 4; + memcpy(outbuffer + offset, this->base_classes[i], length_base_classesi); + offset += length_base_classesi; + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t types_lengthT = ((uint32_t) (*(inbuffer + offset))); + types_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + types_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + types_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->types_length); + if(types_lengthT > types_length) + this->types = (char**)realloc(this->types, types_lengthT * sizeof(char*)); + types_length = types_lengthT; + for( uint32_t i = 0; i < types_length; i++){ + uint32_t length_st_types; + arrToVar(length_st_types, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_types; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_types-1]=0; + this->st_types = (char *)(inbuffer + offset-1); + offset += length_st_types; + memcpy( &(this->types[i]), &(this->st_types), sizeof(char*)); + } + uint32_t base_classes_lengthT = ((uint32_t) (*(inbuffer + offset))); + base_classes_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + base_classes_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + base_classes_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->base_classes_length); + if(base_classes_lengthT > base_classes_length) + this->base_classes = (char**)realloc(this->base_classes, base_classes_lengthT * sizeof(char*)); + base_classes_length = base_classes_lengthT; + for( uint32_t i = 0; i < base_classes_length; i++){ + uint32_t length_st_base_classes; + arrToVar(length_st_base_classes, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_base_classes; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_base_classes-1]=0; + this->st_base_classes = (char *)(inbuffer + offset-1); + offset += length_st_base_classes; + memcpy( &(this->base_classes[i]), &(this->st_base_classes), sizeof(char*)); + } + return offset; + } + + const char * getType(){ return LISTCONTROLLERTYPES; }; + const char * getMD5(){ return "c1d4cd11aefa9f97ba4aeb5b33987f4e"; }; + + }; + + class ListControllerTypes { + public: + typedef ListControllerTypesRequest Request; + typedef ListControllerTypesResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ListControllers.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ListControllers.h new file mode 100644 index 0000000..f0d2a5e --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ListControllers.h @@ -0,0 +1,96 @@ +#ifndef _ROS_SERVICE_ListControllers_h +#define _ROS_SERVICE_ListControllers_h +#include +#include +#include +#include "ros/msg.h" +#include "controller_manager_msgs/ControllerState.h" + +namespace controller_manager_msgs +{ + +static const char LISTCONTROLLERS[] = "controller_manager_msgs/ListControllers"; + + class ListControllersRequest : public ros::Msg + { + public: + + ListControllersRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return LISTCONTROLLERS; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class ListControllersResponse : public ros::Msg + { + public: + uint32_t controller_length; + typedef controller_manager_msgs::ControllerState _controller_type; + _controller_type st_controller; + _controller_type * controller; + + ListControllersResponse(): + controller_length(0), controller(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->controller_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->controller_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->controller_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->controller_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->controller_length); + for( uint32_t i = 0; i < controller_length; i++){ + offset += this->controller[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t controller_lengthT = ((uint32_t) (*(inbuffer + offset))); + controller_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + controller_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + controller_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->controller_length); + if(controller_lengthT > controller_length) + this->controller = (controller_manager_msgs::ControllerState*)realloc(this->controller, controller_lengthT * sizeof(controller_manager_msgs::ControllerState)); + controller_length = controller_lengthT; + for( uint32_t i = 0; i < controller_length; i++){ + offset += this->st_controller.deserialize(inbuffer + offset); + memcpy( &(this->controller[i]), &(this->st_controller), sizeof(controller_manager_msgs::ControllerState)); + } + return offset; + } + + const char * getType(){ return LISTCONTROLLERS; }; + const char * getMD5(){ return "1341feb2e63fa791f855565d0da950d8"; }; + + }; + + class ListControllers { + public: + typedef ListControllersRequest Request; + typedef ListControllersResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/controller_manager_msgs/LoadController.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/controller_manager_msgs/LoadController.h new file mode 100644 index 0000000..98d018f --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/controller_manager_msgs/LoadController.h @@ -0,0 +1,105 @@ +#ifndef _ROS_SERVICE_LoadController_h +#define _ROS_SERVICE_LoadController_h +#include +#include +#include +#include "ros/msg.h" + +namespace controller_manager_msgs +{ + +static const char LOADCONTROLLER[] = "controller_manager_msgs/LoadController"; + + class LoadControllerRequest : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + + LoadControllerRequest(): + name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + return offset; + } + + const char * getType(){ return LOADCONTROLLER; }; + const char * getMD5(){ return "c1f3d28f1b044c871e6eff2e9fc3c667"; }; + + }; + + class LoadControllerResponse : public ros::Msg + { + public: + typedef bool _ok_type; + _ok_type ok; + + LoadControllerResponse(): + ok(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_ok; + u_ok.real = this->ok; + *(outbuffer + offset + 0) = (u_ok.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->ok); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_ok; + u_ok.base = 0; + u_ok.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->ok = u_ok.real; + offset += sizeof(this->ok); + return offset; + } + + const char * getType(){ return LOADCONTROLLER; }; + const char * getMD5(){ return "6f6da3883749771fac40d6deb24a8c02"; }; + + }; + + class LoadController { + public: + typedef LoadControllerRequest Request; + typedef LoadControllerResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ReloadControllerLibraries.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ReloadControllerLibraries.h new file mode 100644 index 0000000..279de97 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/controller_manager_msgs/ReloadControllerLibraries.h @@ -0,0 +1,106 @@ +#ifndef _ROS_SERVICE_ReloadControllerLibraries_h +#define _ROS_SERVICE_ReloadControllerLibraries_h +#include +#include +#include +#include "ros/msg.h" + +namespace controller_manager_msgs +{ + +static const char RELOADCONTROLLERLIBRARIES[] = "controller_manager_msgs/ReloadControllerLibraries"; + + class ReloadControllerLibrariesRequest : public ros::Msg + { + public: + typedef bool _force_kill_type; + _force_kill_type force_kill; + + ReloadControllerLibrariesRequest(): + force_kill(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_force_kill; + u_force_kill.real = this->force_kill; + *(outbuffer + offset + 0) = (u_force_kill.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->force_kill); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_force_kill; + u_force_kill.base = 0; + u_force_kill.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->force_kill = u_force_kill.real; + offset += sizeof(this->force_kill); + return offset; + } + + const char * getType(){ return RELOADCONTROLLERLIBRARIES; }; + const char * getMD5(){ return "18442b59be9479097f11c543bddbac62"; }; + + }; + + class ReloadControllerLibrariesResponse : public ros::Msg + { + public: + typedef bool _ok_type; + _ok_type ok; + + ReloadControllerLibrariesResponse(): + ok(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_ok; + u_ok.real = this->ok; + *(outbuffer + offset + 0) = (u_ok.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->ok); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_ok; + u_ok.base = 0; + u_ok.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->ok = u_ok.real; + offset += sizeof(this->ok); + return offset; + } + + const char * getType(){ return RELOADCONTROLLERLIBRARIES; }; + const char * getMD5(){ return "6f6da3883749771fac40d6deb24a8c02"; }; + + }; + + class ReloadControllerLibraries { + public: + typedef ReloadControllerLibrariesRequest Request; + typedef ReloadControllerLibrariesResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/controller_manager_msgs/SwitchController.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/controller_manager_msgs/SwitchController.h new file mode 100644 index 0000000..9b76c73 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/controller_manager_msgs/SwitchController.h @@ -0,0 +1,188 @@ +#ifndef _ROS_SERVICE_SwitchController_h +#define _ROS_SERVICE_SwitchController_h +#include +#include +#include +#include "ros/msg.h" + +namespace controller_manager_msgs +{ + +static const char SWITCHCONTROLLER[] = "controller_manager_msgs/SwitchController"; + + class SwitchControllerRequest : public ros::Msg + { + public: + uint32_t start_controllers_length; + typedef char* _start_controllers_type; + _start_controllers_type st_start_controllers; + _start_controllers_type * start_controllers; + uint32_t stop_controllers_length; + typedef char* _stop_controllers_type; + _stop_controllers_type st_stop_controllers; + _stop_controllers_type * stop_controllers; + typedef int32_t _strictness_type; + _strictness_type strictness; + enum { BEST_EFFORT = 1 }; + enum { STRICT = 2 }; + + SwitchControllerRequest(): + start_controllers_length(0), start_controllers(NULL), + stop_controllers_length(0), stop_controllers(NULL), + strictness(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->start_controllers_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->start_controllers_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->start_controllers_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->start_controllers_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->start_controllers_length); + for( uint32_t i = 0; i < start_controllers_length; i++){ + uint32_t length_start_controllersi = strlen(this->start_controllers[i]); + varToArr(outbuffer + offset, length_start_controllersi); + offset += 4; + memcpy(outbuffer + offset, this->start_controllers[i], length_start_controllersi); + offset += length_start_controllersi; + } + *(outbuffer + offset + 0) = (this->stop_controllers_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stop_controllers_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stop_controllers_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stop_controllers_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->stop_controllers_length); + for( uint32_t i = 0; i < stop_controllers_length; i++){ + uint32_t length_stop_controllersi = strlen(this->stop_controllers[i]); + varToArr(outbuffer + offset, length_stop_controllersi); + offset += 4; + memcpy(outbuffer + offset, this->stop_controllers[i], length_stop_controllersi); + offset += length_stop_controllersi; + } + union { + int32_t real; + uint32_t base; + } u_strictness; + u_strictness.real = this->strictness; + *(outbuffer + offset + 0) = (u_strictness.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_strictness.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_strictness.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_strictness.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->strictness); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t start_controllers_lengthT = ((uint32_t) (*(inbuffer + offset))); + start_controllers_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + start_controllers_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + start_controllers_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->start_controllers_length); + if(start_controllers_lengthT > start_controllers_length) + this->start_controllers = (char**)realloc(this->start_controllers, start_controllers_lengthT * sizeof(char*)); + start_controllers_length = start_controllers_lengthT; + for( uint32_t i = 0; i < start_controllers_length; i++){ + uint32_t length_st_start_controllers; + arrToVar(length_st_start_controllers, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_start_controllers; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_start_controllers-1]=0; + this->st_start_controllers = (char *)(inbuffer + offset-1); + offset += length_st_start_controllers; + memcpy( &(this->start_controllers[i]), &(this->st_start_controllers), sizeof(char*)); + } + uint32_t stop_controllers_lengthT = ((uint32_t) (*(inbuffer + offset))); + stop_controllers_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + stop_controllers_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + stop_controllers_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stop_controllers_length); + if(stop_controllers_lengthT > stop_controllers_length) + this->stop_controllers = (char**)realloc(this->stop_controllers, stop_controllers_lengthT * sizeof(char*)); + stop_controllers_length = stop_controllers_lengthT; + for( uint32_t i = 0; i < stop_controllers_length; i++){ + uint32_t length_st_stop_controllers; + arrToVar(length_st_stop_controllers, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_stop_controllers; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_stop_controllers-1]=0; + this->st_stop_controllers = (char *)(inbuffer + offset-1); + offset += length_st_stop_controllers; + memcpy( &(this->stop_controllers[i]), &(this->st_stop_controllers), sizeof(char*)); + } + union { + int32_t real; + uint32_t base; + } u_strictness; + u_strictness.base = 0; + u_strictness.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_strictness.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_strictness.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_strictness.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->strictness = u_strictness.real; + offset += sizeof(this->strictness); + return offset; + } + + const char * getType(){ return SWITCHCONTROLLER; }; + const char * getMD5(){ return "434da54adc434a5af5743ed711fd6ba1"; }; + + }; + + class SwitchControllerResponse : public ros::Msg + { + public: + typedef bool _ok_type; + _ok_type ok; + + SwitchControllerResponse(): + ok(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_ok; + u_ok.real = this->ok; + *(outbuffer + offset + 0) = (u_ok.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->ok); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_ok; + u_ok.base = 0; + u_ok.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->ok = u_ok.real; + offset += sizeof(this->ok); + return offset; + } + + const char * getType(){ return SWITCHCONTROLLER; }; + const char * getMD5(){ return "6f6da3883749771fac40d6deb24a8c02"; }; + + }; + + class SwitchController { + public: + typedef SwitchControllerRequest Request; + typedef SwitchControllerResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/controller_manager_msgs/UnloadController.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/controller_manager_msgs/UnloadController.h new file mode 100644 index 0000000..b8bba74 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/controller_manager_msgs/UnloadController.h @@ -0,0 +1,105 @@ +#ifndef _ROS_SERVICE_UnloadController_h +#define _ROS_SERVICE_UnloadController_h +#include +#include +#include +#include "ros/msg.h" + +namespace controller_manager_msgs +{ + +static const char UNLOADCONTROLLER[] = "controller_manager_msgs/UnloadController"; + + class UnloadControllerRequest : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + + UnloadControllerRequest(): + name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + return offset; + } + + const char * getType(){ return UNLOADCONTROLLER; }; + const char * getMD5(){ return "c1f3d28f1b044c871e6eff2e9fc3c667"; }; + + }; + + class UnloadControllerResponse : public ros::Msg + { + public: + typedef bool _ok_type; + _ok_type ok; + + UnloadControllerResponse(): + ok(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_ok; + u_ok.real = this->ok; + *(outbuffer + offset + 0) = (u_ok.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->ok); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_ok; + u_ok.base = 0; + u_ok.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->ok = u_ok.real; + offset += sizeof(this->ok); + return offset; + } + + const char * getType(){ return UNLOADCONTROLLER; }; + const char * getMD5(){ return "6f6da3883749771fac40d6deb24a8c02"; }; + + }; + + class UnloadController { + public: + typedef UnloadControllerRequest Request; + typedef UnloadControllerResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/costmap_2d/VoxelGrid.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/costmap_2d/VoxelGrid.h new file mode 100644 index 0000000..2fa9dce --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/costmap_2d/VoxelGrid.h @@ -0,0 +1,128 @@ +#ifndef _ROS_costmap_2d_VoxelGrid_h +#define _ROS_costmap_2d_VoxelGrid_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Point32.h" +#include "geometry_msgs/Vector3.h" + +namespace costmap_2d +{ + + class VoxelGrid : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t data_length; + typedef uint32_t _data_type; + _data_type st_data; + _data_type * data; + typedef geometry_msgs::Point32 _origin_type; + _origin_type origin; + typedef geometry_msgs::Vector3 _resolutions_type; + _resolutions_type resolutions; + typedef uint32_t _size_x_type; + _size_x_type size_x; + typedef uint32_t _size_y_type; + _size_y_type size_y; + typedef uint32_t _size_z_type; + _size_z_type size_z; + + VoxelGrid(): + header(), + data_length(0), data(NULL), + origin(), + resolutions(), + size_x(0), + size_y(0), + size_z(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data[i] >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data[i] >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data[i] >> (8 * 3)) & 0xFF; + offset += sizeof(this->data[i]); + } + offset += this->origin.serialize(outbuffer + offset); + offset += this->resolutions.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->size_x >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->size_x >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->size_x >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->size_x >> (8 * 3)) & 0xFF; + offset += sizeof(this->size_x); + *(outbuffer + offset + 0) = (this->size_y >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->size_y >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->size_y >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->size_y >> (8 * 3)) & 0xFF; + offset += sizeof(this->size_y); + *(outbuffer + offset + 0) = (this->size_z >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->size_z >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->size_z >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->size_z >> (8 * 3)) & 0xFF; + offset += sizeof(this->size_z); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (uint32_t*)realloc(this->data, data_lengthT * sizeof(uint32_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + this->st_data = ((uint32_t) (*(inbuffer + offset))); + this->st_data |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->st_data |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->st_data |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(uint32_t)); + } + offset += this->origin.deserialize(inbuffer + offset); + offset += this->resolutions.deserialize(inbuffer + offset); + this->size_x = ((uint32_t) (*(inbuffer + offset))); + this->size_x |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->size_x |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->size_x |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->size_x); + this->size_y = ((uint32_t) (*(inbuffer + offset))); + this->size_y |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->size_y |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->size_y |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->size_y); + this->size_z = ((uint32_t) (*(inbuffer + offset))); + this->size_z |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->size_z |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->size_z |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->size_z); + return offset; + } + + const char * getType(){ return "costmap_2d/VoxelGrid"; }; + const char * getMD5(){ return "48a040827e1322073d78ece5a497029c"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/diagnostic_msgs/AddDiagnostics.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/diagnostic_msgs/AddDiagnostics.h new file mode 100644 index 0000000..4180098 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/diagnostic_msgs/AddDiagnostics.h @@ -0,0 +1,122 @@ +#ifndef _ROS_SERVICE_AddDiagnostics_h +#define _ROS_SERVICE_AddDiagnostics_h +#include +#include +#include +#include "ros/msg.h" + +namespace diagnostic_msgs +{ + +static const char ADDDIAGNOSTICS[] = "diagnostic_msgs/AddDiagnostics"; + + class AddDiagnosticsRequest : public ros::Msg + { + public: + typedef const char* _load_namespace_type; + _load_namespace_type load_namespace; + + AddDiagnosticsRequest(): + load_namespace("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_load_namespace = strlen(this->load_namespace); + varToArr(outbuffer + offset, length_load_namespace); + offset += 4; + memcpy(outbuffer + offset, this->load_namespace, length_load_namespace); + offset += length_load_namespace; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_load_namespace; + arrToVar(length_load_namespace, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_load_namespace; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_load_namespace-1]=0; + this->load_namespace = (char *)(inbuffer + offset-1); + offset += length_load_namespace; + return offset; + } + + const char * getType(){ return ADDDIAGNOSTICS; }; + const char * getMD5(){ return "c26cf6e164288fbc6050d74f838bcdf0"; }; + + }; + + class AddDiagnosticsResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _message_type; + _message_type message; + + AddDiagnosticsResponse(): + success(0), + message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_message = strlen(this->message); + varToArr(outbuffer + offset, length_message); + offset += 4; + memcpy(outbuffer + offset, this->message, length_message); + offset += length_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_message; + arrToVar(length_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_message-1]=0; + this->message = (char *)(inbuffer + offset-1); + offset += length_message; + return offset; + } + + const char * getType(){ return ADDDIAGNOSTICS; }; + const char * getMD5(){ return "937c9679a518e3a18d831e57125ea522"; }; + + }; + + class AddDiagnostics { + public: + typedef AddDiagnosticsRequest Request; + typedef AddDiagnosticsResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/diagnostic_msgs/DiagnosticArray.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/diagnostic_msgs/DiagnosticArray.h new file mode 100644 index 0000000..1deb743 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/diagnostic_msgs/DiagnosticArray.h @@ -0,0 +1,70 @@ +#ifndef _ROS_diagnostic_msgs_DiagnosticArray_h +#define _ROS_diagnostic_msgs_DiagnosticArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "diagnostic_msgs/DiagnosticStatus.h" + +namespace diagnostic_msgs +{ + + class DiagnosticArray : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t status_length; + typedef diagnostic_msgs::DiagnosticStatus _status_type; + _status_type st_status; + _status_type * status; + + DiagnosticArray(): + header(), + status_length(0), status(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->status_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->status_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->status_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->status_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->status_length); + for( uint32_t i = 0; i < status_length; i++){ + offset += this->status[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t status_lengthT = ((uint32_t) (*(inbuffer + offset))); + status_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + status_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + status_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->status_length); + if(status_lengthT > status_length) + this->status = (diagnostic_msgs::DiagnosticStatus*)realloc(this->status, status_lengthT * sizeof(diagnostic_msgs::DiagnosticStatus)); + status_length = status_lengthT; + for( uint32_t i = 0; i < status_length; i++){ + offset += this->st_status.deserialize(inbuffer + offset); + memcpy( &(this->status[i]), &(this->st_status), sizeof(diagnostic_msgs::DiagnosticStatus)); + } + return offset; + } + + const char * getType(){ return "diagnostic_msgs/DiagnosticArray"; }; + const char * getMD5(){ return "60810da900de1dd6ddd437c3503511da"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/diagnostic_msgs/DiagnosticStatus.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/diagnostic_msgs/DiagnosticStatus.h new file mode 100644 index 0000000..490c163 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/diagnostic_msgs/DiagnosticStatus.h @@ -0,0 +1,137 @@ +#ifndef _ROS_diagnostic_msgs_DiagnosticStatus_h +#define _ROS_diagnostic_msgs_DiagnosticStatus_h + +#include +#include +#include +#include "ros/msg.h" +#include "diagnostic_msgs/KeyValue.h" + +namespace diagnostic_msgs +{ + + class DiagnosticStatus : public ros::Msg + { + public: + typedef int8_t _level_type; + _level_type level; + typedef const char* _name_type; + _name_type name; + typedef const char* _message_type; + _message_type message; + typedef const char* _hardware_id_type; + _hardware_id_type hardware_id; + uint32_t values_length; + typedef diagnostic_msgs::KeyValue _values_type; + _values_type st_values; + _values_type * values; + enum { OK = 0 }; + enum { WARN = 1 }; + enum { ERROR = 2 }; + enum { STALE = 3 }; + + DiagnosticStatus(): + level(0), + name(""), + message(""), + hardware_id(""), + values_length(0), values(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int8_t real; + uint8_t base; + } u_level; + u_level.real = this->level; + *(outbuffer + offset + 0) = (u_level.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->level); + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + uint32_t length_message = strlen(this->message); + varToArr(outbuffer + offset, length_message); + offset += 4; + memcpy(outbuffer + offset, this->message, length_message); + offset += length_message; + uint32_t length_hardware_id = strlen(this->hardware_id); + varToArr(outbuffer + offset, length_hardware_id); + offset += 4; + memcpy(outbuffer + offset, this->hardware_id, length_hardware_id); + offset += length_hardware_id; + *(outbuffer + offset + 0) = (this->values_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->values_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->values_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->values_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->values_length); + for( uint32_t i = 0; i < values_length; i++){ + offset += this->values[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int8_t real; + uint8_t base; + } u_level; + u_level.base = 0; + u_level.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->level = u_level.real; + offset += sizeof(this->level); + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + uint32_t length_message; + arrToVar(length_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_message-1]=0; + this->message = (char *)(inbuffer + offset-1); + offset += length_message; + uint32_t length_hardware_id; + arrToVar(length_hardware_id, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_hardware_id; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_hardware_id-1]=0; + this->hardware_id = (char *)(inbuffer + offset-1); + offset += length_hardware_id; + uint32_t values_lengthT = ((uint32_t) (*(inbuffer + offset))); + values_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + values_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + values_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->values_length); + if(values_lengthT > values_length) + this->values = (diagnostic_msgs::KeyValue*)realloc(this->values, values_lengthT * sizeof(diagnostic_msgs::KeyValue)); + values_length = values_lengthT; + for( uint32_t i = 0; i < values_length; i++){ + offset += this->st_values.deserialize(inbuffer + offset); + memcpy( &(this->values[i]), &(this->st_values), sizeof(diagnostic_msgs::KeyValue)); + } + return offset; + } + + const char * getType(){ return "diagnostic_msgs/DiagnosticStatus"; }; + const char * getMD5(){ return "d0ce08bc6e5ba34c7754f563a9cabaf1"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/diagnostic_msgs/KeyValue.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/diagnostic_msgs/KeyValue.h new file mode 100644 index 0000000..e94dd76 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/diagnostic_msgs/KeyValue.h @@ -0,0 +1,72 @@ +#ifndef _ROS_diagnostic_msgs_KeyValue_h +#define _ROS_diagnostic_msgs_KeyValue_h + +#include +#include +#include +#include "ros/msg.h" + +namespace diagnostic_msgs +{ + + class KeyValue : public ros::Msg + { + public: + typedef const char* _key_type; + _key_type key; + typedef const char* _value_type; + _value_type value; + + KeyValue(): + key(""), + value("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_key = strlen(this->key); + varToArr(outbuffer + offset, length_key); + offset += 4; + memcpy(outbuffer + offset, this->key, length_key); + offset += length_key; + uint32_t length_value = strlen(this->value); + varToArr(outbuffer + offset, length_value); + offset += 4; + memcpy(outbuffer + offset, this->value, length_value); + offset += length_value; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_key; + arrToVar(length_key, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_key; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_key-1]=0; + this->key = (char *)(inbuffer + offset-1); + offset += length_key; + uint32_t length_value; + arrToVar(length_value, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_value; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_value-1]=0; + this->value = (char *)(inbuffer + offset-1); + offset += length_value; + return offset; + } + + const char * getType(){ return "diagnostic_msgs/KeyValue"; }; + const char * getMD5(){ return "cf57fdc6617a881a88c16e768132149c"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/diagnostic_msgs/SelfTest.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/diagnostic_msgs/SelfTest.h new file mode 100644 index 0000000..6687c6b --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/diagnostic_msgs/SelfTest.h @@ -0,0 +1,131 @@ +#ifndef _ROS_SERVICE_SelfTest_h +#define _ROS_SERVICE_SelfTest_h +#include +#include +#include +#include "ros/msg.h" +#include "diagnostic_msgs/DiagnosticStatus.h" + +namespace diagnostic_msgs +{ + +static const char SELFTEST[] = "diagnostic_msgs/SelfTest"; + + class SelfTestRequest : public ros::Msg + { + public: + + SelfTestRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return SELFTEST; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class SelfTestResponse : public ros::Msg + { + public: + typedef const char* _id_type; + _id_type id; + typedef int8_t _passed_type; + _passed_type passed; + uint32_t status_length; + typedef diagnostic_msgs::DiagnosticStatus _status_type; + _status_type st_status; + _status_type * status; + + SelfTestResponse(): + id(""), + passed(0), + status_length(0), status(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_id = strlen(this->id); + varToArr(outbuffer + offset, length_id); + offset += 4; + memcpy(outbuffer + offset, this->id, length_id); + offset += length_id; + union { + int8_t real; + uint8_t base; + } u_passed; + u_passed.real = this->passed; + *(outbuffer + offset + 0) = (u_passed.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->passed); + *(outbuffer + offset + 0) = (this->status_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->status_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->status_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->status_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->status_length); + for( uint32_t i = 0; i < status_length; i++){ + offset += this->status[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_id; + arrToVar(length_id, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_id; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_id-1]=0; + this->id = (char *)(inbuffer + offset-1); + offset += length_id; + union { + int8_t real; + uint8_t base; + } u_passed; + u_passed.base = 0; + u_passed.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->passed = u_passed.real; + offset += sizeof(this->passed); + uint32_t status_lengthT = ((uint32_t) (*(inbuffer + offset))); + status_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + status_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + status_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->status_length); + if(status_lengthT > status_length) + this->status = (diagnostic_msgs::DiagnosticStatus*)realloc(this->status, status_lengthT * sizeof(diagnostic_msgs::DiagnosticStatus)); + status_length = status_lengthT; + for( uint32_t i = 0; i < status_length; i++){ + offset += this->st_status.deserialize(inbuffer + offset); + memcpy( &(this->status[i]), &(this->st_status), sizeof(diagnostic_msgs::DiagnosticStatus)); + } + return offset; + } + + const char * getType(){ return SELFTEST; }; + const char * getMD5(){ return "ac21b1bab7ab17546986536c22eb34e9"; }; + + }; + + class SelfTest { + public: + typedef SelfTestRequest Request; + typedef SelfTestResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/duration.cpp b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/duration.cpp new file mode 100644 index 0000000..d2dfdd6 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/duration.cpp @@ -0,0 +1,83 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2011, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include "ros/duration.h" + +namespace ros +{ +void normalizeSecNSecSigned(int32_t &sec, int32_t &nsec) +{ + int32_t nsec_part = nsec; + int32_t sec_part = sec; + + while (nsec_part > 1000000000L) + { + nsec_part -= 1000000000L; + ++sec_part; + } + while (nsec_part < 0) + { + nsec_part += 1000000000L; + --sec_part; + } + sec = sec_part; + nsec = nsec_part; +} + +Duration& Duration::operator+=(const Duration &rhs) +{ + sec += rhs.sec; + nsec += rhs.nsec; + normalizeSecNSecSigned(sec, nsec); + return *this; +} + +Duration& Duration::operator-=(const Duration &rhs) +{ + sec += -rhs.sec; + nsec += -rhs.nsec; + normalizeSecNSecSigned(sec, nsec); + return *this; +} + +Duration& Duration::operator*=(double scale) +{ + sec *= scale; + nsec *= scale; + normalizeSecNSecSigned(sec, nsec); + return *this; +} + +} diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/BoolParameter.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/BoolParameter.h new file mode 100644 index 0000000..9025486 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/BoolParameter.h @@ -0,0 +1,73 @@ +#ifndef _ROS_dynamic_reconfigure_BoolParameter_h +#define _ROS_dynamic_reconfigure_BoolParameter_h + +#include +#include +#include +#include "ros/msg.h" + +namespace dynamic_reconfigure +{ + + class BoolParameter : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef bool _value_type; + _value_type value; + + BoolParameter(): + name(""), + value(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + union { + bool real; + uint8_t base; + } u_value; + u_value.real = this->value; + *(outbuffer + offset + 0) = (u_value.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->value); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + union { + bool real; + uint8_t base; + } u_value; + u_value.base = 0; + u_value.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->value = u_value.real; + offset += sizeof(this->value); + return offset; + } + + const char * getType(){ return "dynamic_reconfigure/BoolParameter"; }; + const char * getMD5(){ return "23f05028c1a699fb83e22401228c3a9e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/Config.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/Config.h new file mode 100644 index 0000000..e5aca14 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/Config.h @@ -0,0 +1,168 @@ +#ifndef _ROS_dynamic_reconfigure_Config_h +#define _ROS_dynamic_reconfigure_Config_h + +#include +#include +#include +#include "ros/msg.h" +#include "dynamic_reconfigure/BoolParameter.h" +#include "dynamic_reconfigure/IntParameter.h" +#include "dynamic_reconfigure/StrParameter.h" +#include "dynamic_reconfigure/DoubleParameter.h" +#include "dynamic_reconfigure/GroupState.h" + +namespace dynamic_reconfigure +{ + + class Config : public ros::Msg + { + public: + uint32_t bools_length; + typedef dynamic_reconfigure::BoolParameter _bools_type; + _bools_type st_bools; + _bools_type * bools; + uint32_t ints_length; + typedef dynamic_reconfigure::IntParameter _ints_type; + _ints_type st_ints; + _ints_type * ints; + uint32_t strs_length; + typedef dynamic_reconfigure::StrParameter _strs_type; + _strs_type st_strs; + _strs_type * strs; + uint32_t doubles_length; + typedef dynamic_reconfigure::DoubleParameter _doubles_type; + _doubles_type st_doubles; + _doubles_type * doubles; + uint32_t groups_length; + typedef dynamic_reconfigure::GroupState _groups_type; + _groups_type st_groups; + _groups_type * groups; + + Config(): + bools_length(0), bools(NULL), + ints_length(0), ints(NULL), + strs_length(0), strs(NULL), + doubles_length(0), doubles(NULL), + groups_length(0), groups(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->bools_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->bools_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->bools_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->bools_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->bools_length); + for( uint32_t i = 0; i < bools_length; i++){ + offset += this->bools[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->ints_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->ints_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->ints_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->ints_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->ints_length); + for( uint32_t i = 0; i < ints_length; i++){ + offset += this->ints[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->strs_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->strs_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->strs_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->strs_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->strs_length); + for( uint32_t i = 0; i < strs_length; i++){ + offset += this->strs[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->doubles_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->doubles_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->doubles_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->doubles_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->doubles_length); + for( uint32_t i = 0; i < doubles_length; i++){ + offset += this->doubles[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->groups_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->groups_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->groups_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->groups_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->groups_length); + for( uint32_t i = 0; i < groups_length; i++){ + offset += this->groups[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t bools_lengthT = ((uint32_t) (*(inbuffer + offset))); + bools_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + bools_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + bools_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->bools_length); + if(bools_lengthT > bools_length) + this->bools = (dynamic_reconfigure::BoolParameter*)realloc(this->bools, bools_lengthT * sizeof(dynamic_reconfigure::BoolParameter)); + bools_length = bools_lengthT; + for( uint32_t i = 0; i < bools_length; i++){ + offset += this->st_bools.deserialize(inbuffer + offset); + memcpy( &(this->bools[i]), &(this->st_bools), sizeof(dynamic_reconfigure::BoolParameter)); + } + uint32_t ints_lengthT = ((uint32_t) (*(inbuffer + offset))); + ints_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + ints_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + ints_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->ints_length); + if(ints_lengthT > ints_length) + this->ints = (dynamic_reconfigure::IntParameter*)realloc(this->ints, ints_lengthT * sizeof(dynamic_reconfigure::IntParameter)); + ints_length = ints_lengthT; + for( uint32_t i = 0; i < ints_length; i++){ + offset += this->st_ints.deserialize(inbuffer + offset); + memcpy( &(this->ints[i]), &(this->st_ints), sizeof(dynamic_reconfigure::IntParameter)); + } + uint32_t strs_lengthT = ((uint32_t) (*(inbuffer + offset))); + strs_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + strs_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + strs_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->strs_length); + if(strs_lengthT > strs_length) + this->strs = (dynamic_reconfigure::StrParameter*)realloc(this->strs, strs_lengthT * sizeof(dynamic_reconfigure::StrParameter)); + strs_length = strs_lengthT; + for( uint32_t i = 0; i < strs_length; i++){ + offset += this->st_strs.deserialize(inbuffer + offset); + memcpy( &(this->strs[i]), &(this->st_strs), sizeof(dynamic_reconfigure::StrParameter)); + } + uint32_t doubles_lengthT = ((uint32_t) (*(inbuffer + offset))); + doubles_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + doubles_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + doubles_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->doubles_length); + if(doubles_lengthT > doubles_length) + this->doubles = (dynamic_reconfigure::DoubleParameter*)realloc(this->doubles, doubles_lengthT * sizeof(dynamic_reconfigure::DoubleParameter)); + doubles_length = doubles_lengthT; + for( uint32_t i = 0; i < doubles_length; i++){ + offset += this->st_doubles.deserialize(inbuffer + offset); + memcpy( &(this->doubles[i]), &(this->st_doubles), sizeof(dynamic_reconfigure::DoubleParameter)); + } + uint32_t groups_lengthT = ((uint32_t) (*(inbuffer + offset))); + groups_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + groups_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + groups_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->groups_length); + if(groups_lengthT > groups_length) + this->groups = (dynamic_reconfigure::GroupState*)realloc(this->groups, groups_lengthT * sizeof(dynamic_reconfigure::GroupState)); + groups_length = groups_lengthT; + for( uint32_t i = 0; i < groups_length; i++){ + offset += this->st_groups.deserialize(inbuffer + offset); + memcpy( &(this->groups[i]), &(this->st_groups), sizeof(dynamic_reconfigure::GroupState)); + } + return offset; + } + + const char * getType(){ return "dynamic_reconfigure/Config"; }; + const char * getMD5(){ return "958f16a05573709014982821e6822580"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/ConfigDescription.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/ConfigDescription.h new file mode 100644 index 0000000..4563bb7 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/ConfigDescription.h @@ -0,0 +1,80 @@ +#ifndef _ROS_dynamic_reconfigure_ConfigDescription_h +#define _ROS_dynamic_reconfigure_ConfigDescription_h + +#include +#include +#include +#include "ros/msg.h" +#include "dynamic_reconfigure/Group.h" +#include "dynamic_reconfigure/Config.h" + +namespace dynamic_reconfigure +{ + + class ConfigDescription : public ros::Msg + { + public: + uint32_t groups_length; + typedef dynamic_reconfigure::Group _groups_type; + _groups_type st_groups; + _groups_type * groups; + typedef dynamic_reconfigure::Config _max_type; + _max_type max; + typedef dynamic_reconfigure::Config _min_type; + _min_type min; + typedef dynamic_reconfigure::Config _dflt_type; + _dflt_type dflt; + + ConfigDescription(): + groups_length(0), groups(NULL), + max(), + min(), + dflt() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->groups_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->groups_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->groups_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->groups_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->groups_length); + for( uint32_t i = 0; i < groups_length; i++){ + offset += this->groups[i].serialize(outbuffer + offset); + } + offset += this->max.serialize(outbuffer + offset); + offset += this->min.serialize(outbuffer + offset); + offset += this->dflt.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t groups_lengthT = ((uint32_t) (*(inbuffer + offset))); + groups_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + groups_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + groups_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->groups_length); + if(groups_lengthT > groups_length) + this->groups = (dynamic_reconfigure::Group*)realloc(this->groups, groups_lengthT * sizeof(dynamic_reconfigure::Group)); + groups_length = groups_lengthT; + for( uint32_t i = 0; i < groups_length; i++){ + offset += this->st_groups.deserialize(inbuffer + offset); + memcpy( &(this->groups[i]), &(this->st_groups), sizeof(dynamic_reconfigure::Group)); + } + offset += this->max.deserialize(inbuffer + offset); + offset += this->min.deserialize(inbuffer + offset); + offset += this->dflt.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "dynamic_reconfigure/ConfigDescription"; }; + const char * getMD5(){ return "757ce9d44ba8ddd801bb30bc456f946f"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/DoubleParameter.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/DoubleParameter.h new file mode 100644 index 0000000..6f62e20 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/DoubleParameter.h @@ -0,0 +1,87 @@ +#ifndef _ROS_dynamic_reconfigure_DoubleParameter_h +#define _ROS_dynamic_reconfigure_DoubleParameter_h + +#include +#include +#include +#include "ros/msg.h" + +namespace dynamic_reconfigure +{ + + class DoubleParameter : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef double _value_type; + _value_type value; + + DoubleParameter(): + name(""), + value(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + union { + double real; + uint64_t base; + } u_value; + u_value.real = this->value; + *(outbuffer + offset + 0) = (u_value.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_value.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_value.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_value.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_value.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_value.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_value.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_value.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->value); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + union { + double real; + uint64_t base; + } u_value; + u_value.base = 0; + u_value.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_value.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_value.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_value.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_value.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_value.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_value.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_value.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->value = u_value.real; + offset += sizeof(this->value); + return offset; + } + + const char * getType(){ return "dynamic_reconfigure/DoubleParameter"; }; + const char * getMD5(){ return "d8512f27253c0f65f928a67c329cd658"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/Group.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/Group.h new file mode 100644 index 0000000..6f116ac --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/Group.h @@ -0,0 +1,146 @@ +#ifndef _ROS_dynamic_reconfigure_Group_h +#define _ROS_dynamic_reconfigure_Group_h + +#include +#include +#include +#include "ros/msg.h" +#include "dynamic_reconfigure/ParamDescription.h" + +namespace dynamic_reconfigure +{ + + class Group : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef const char* _type_type; + _type_type type; + uint32_t parameters_length; + typedef dynamic_reconfigure::ParamDescription _parameters_type; + _parameters_type st_parameters; + _parameters_type * parameters; + typedef int32_t _parent_type; + _parent_type parent; + typedef int32_t _id_type; + _id_type id; + + Group(): + name(""), + type(""), + parameters_length(0), parameters(NULL), + parent(0), + id(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + uint32_t length_type = strlen(this->type); + varToArr(outbuffer + offset, length_type); + offset += 4; + memcpy(outbuffer + offset, this->type, length_type); + offset += length_type; + *(outbuffer + offset + 0) = (this->parameters_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->parameters_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->parameters_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->parameters_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->parameters_length); + for( uint32_t i = 0; i < parameters_length; i++){ + offset += this->parameters[i].serialize(outbuffer + offset); + } + union { + int32_t real; + uint32_t base; + } u_parent; + u_parent.real = this->parent; + *(outbuffer + offset + 0) = (u_parent.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_parent.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_parent.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_parent.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->parent); + union { + int32_t real; + uint32_t base; + } u_id; + u_id.real = this->id; + *(outbuffer + offset + 0) = (u_id.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_id.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_id.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_id.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->id); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + uint32_t length_type; + arrToVar(length_type, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_type; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_type-1]=0; + this->type = (char *)(inbuffer + offset-1); + offset += length_type; + uint32_t parameters_lengthT = ((uint32_t) (*(inbuffer + offset))); + parameters_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + parameters_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + parameters_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->parameters_length); + if(parameters_lengthT > parameters_length) + this->parameters = (dynamic_reconfigure::ParamDescription*)realloc(this->parameters, parameters_lengthT * sizeof(dynamic_reconfigure::ParamDescription)); + parameters_length = parameters_lengthT; + for( uint32_t i = 0; i < parameters_length; i++){ + offset += this->st_parameters.deserialize(inbuffer + offset); + memcpy( &(this->parameters[i]), &(this->st_parameters), sizeof(dynamic_reconfigure::ParamDescription)); + } + union { + int32_t real; + uint32_t base; + } u_parent; + u_parent.base = 0; + u_parent.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_parent.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_parent.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_parent.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->parent = u_parent.real; + offset += sizeof(this->parent); + union { + int32_t real; + uint32_t base; + } u_id; + u_id.base = 0; + u_id.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_id.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_id.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_id.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->id = u_id.real; + offset += sizeof(this->id); + return offset; + } + + const char * getType(){ return "dynamic_reconfigure/Group"; }; + const char * getMD5(){ return "9e8cd9e9423c94823db3614dd8b1cf7a"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/GroupState.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/GroupState.h new file mode 100644 index 0000000..7988eac --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/GroupState.h @@ -0,0 +1,121 @@ +#ifndef _ROS_dynamic_reconfigure_GroupState_h +#define _ROS_dynamic_reconfigure_GroupState_h + +#include +#include +#include +#include "ros/msg.h" + +namespace dynamic_reconfigure +{ + + class GroupState : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef bool _state_type; + _state_type state; + typedef int32_t _id_type; + _id_type id; + typedef int32_t _parent_type; + _parent_type parent; + + GroupState(): + name(""), + state(0), + id(0), + parent(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + union { + bool real; + uint8_t base; + } u_state; + u_state.real = this->state; + *(outbuffer + offset + 0) = (u_state.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->state); + union { + int32_t real; + uint32_t base; + } u_id; + u_id.real = this->id; + *(outbuffer + offset + 0) = (u_id.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_id.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_id.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_id.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->id); + union { + int32_t real; + uint32_t base; + } u_parent; + u_parent.real = this->parent; + *(outbuffer + offset + 0) = (u_parent.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_parent.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_parent.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_parent.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->parent); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + union { + bool real; + uint8_t base; + } u_state; + u_state.base = 0; + u_state.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->state = u_state.real; + offset += sizeof(this->state); + union { + int32_t real; + uint32_t base; + } u_id; + u_id.base = 0; + u_id.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_id.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_id.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_id.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->id = u_id.real; + offset += sizeof(this->id); + union { + int32_t real; + uint32_t base; + } u_parent; + u_parent.base = 0; + u_parent.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_parent.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_parent.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_parent.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->parent = u_parent.real; + offset += sizeof(this->parent); + return offset; + } + + const char * getType(){ return "dynamic_reconfigure/GroupState"; }; + const char * getMD5(){ return "a2d87f51dc22930325041a2f8b1571f8"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/IntParameter.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/IntParameter.h new file mode 100644 index 0000000..aab4158 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/IntParameter.h @@ -0,0 +1,79 @@ +#ifndef _ROS_dynamic_reconfigure_IntParameter_h +#define _ROS_dynamic_reconfigure_IntParameter_h + +#include +#include +#include +#include "ros/msg.h" + +namespace dynamic_reconfigure +{ + + class IntParameter : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef int32_t _value_type; + _value_type value; + + IntParameter(): + name(""), + value(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + union { + int32_t real; + uint32_t base; + } u_value; + u_value.real = this->value; + *(outbuffer + offset + 0) = (u_value.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_value.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_value.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_value.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->value); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + union { + int32_t real; + uint32_t base; + } u_value; + u_value.base = 0; + u_value.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_value.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_value.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_value.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->value = u_value.real; + offset += sizeof(this->value); + return offset; + } + + const char * getType(){ return "dynamic_reconfigure/IntParameter"; }; + const char * getMD5(){ return "65fedc7a0cbfb8db035e46194a350bf1"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/ParamDescription.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/ParamDescription.h new file mode 100644 index 0000000..00ac5ba --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/ParamDescription.h @@ -0,0 +1,119 @@ +#ifndef _ROS_dynamic_reconfigure_ParamDescription_h +#define _ROS_dynamic_reconfigure_ParamDescription_h + +#include +#include +#include +#include "ros/msg.h" + +namespace dynamic_reconfigure +{ + + class ParamDescription : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef const char* _type_type; + _type_type type; + typedef uint32_t _level_type; + _level_type level; + typedef const char* _description_type; + _description_type description; + typedef const char* _edit_method_type; + _edit_method_type edit_method; + + ParamDescription(): + name(""), + type(""), + level(0), + description(""), + edit_method("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + uint32_t length_type = strlen(this->type); + varToArr(outbuffer + offset, length_type); + offset += 4; + memcpy(outbuffer + offset, this->type, length_type); + offset += length_type; + *(outbuffer + offset + 0) = (this->level >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->level >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->level >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->level >> (8 * 3)) & 0xFF; + offset += sizeof(this->level); + uint32_t length_description = strlen(this->description); + varToArr(outbuffer + offset, length_description); + offset += 4; + memcpy(outbuffer + offset, this->description, length_description); + offset += length_description; + uint32_t length_edit_method = strlen(this->edit_method); + varToArr(outbuffer + offset, length_edit_method); + offset += 4; + memcpy(outbuffer + offset, this->edit_method, length_edit_method); + offset += length_edit_method; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + uint32_t length_type; + arrToVar(length_type, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_type; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_type-1]=0; + this->type = (char *)(inbuffer + offset-1); + offset += length_type; + this->level = ((uint32_t) (*(inbuffer + offset))); + this->level |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->level |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->level |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->level); + uint32_t length_description; + arrToVar(length_description, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_description; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_description-1]=0; + this->description = (char *)(inbuffer + offset-1); + offset += length_description; + uint32_t length_edit_method; + arrToVar(length_edit_method, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_edit_method; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_edit_method-1]=0; + this->edit_method = (char *)(inbuffer + offset-1); + offset += length_edit_method; + return offset; + } + + const char * getType(){ return "dynamic_reconfigure/ParamDescription"; }; + const char * getMD5(){ return "7434fcb9348c13054e0c3b267c8cb34d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/Reconfigure.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/Reconfigure.h new file mode 100644 index 0000000..e4e6b79 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/Reconfigure.h @@ -0,0 +1,81 @@ +#ifndef _ROS_SERVICE_Reconfigure_h +#define _ROS_SERVICE_Reconfigure_h +#include +#include +#include +#include "ros/msg.h" +#include "dynamic_reconfigure/Config.h" + +namespace dynamic_reconfigure +{ + +static const char RECONFIGURE[] = "dynamic_reconfigure/Reconfigure"; + + class ReconfigureRequest : public ros::Msg + { + public: + typedef dynamic_reconfigure::Config _config_type; + _config_type config; + + ReconfigureRequest(): + config() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->config.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->config.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return RECONFIGURE; }; + const char * getMD5(){ return "ac41a77620a4a0348b7001641796a8a1"; }; + + }; + + class ReconfigureResponse : public ros::Msg + { + public: + typedef dynamic_reconfigure::Config _config_type; + _config_type config; + + ReconfigureResponse(): + config() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->config.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->config.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return RECONFIGURE; }; + const char * getMD5(){ return "ac41a77620a4a0348b7001641796a8a1"; }; + + }; + + class Reconfigure { + public: + typedef ReconfigureRequest Request; + typedef ReconfigureResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/SensorLevels.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/SensorLevels.h new file mode 100644 index 0000000..8f85722 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/SensorLevels.h @@ -0,0 +1,41 @@ +#ifndef _ROS_dynamic_reconfigure_SensorLevels_h +#define _ROS_dynamic_reconfigure_SensorLevels_h + +#include +#include +#include +#include "ros/msg.h" + +namespace dynamic_reconfigure +{ + + class SensorLevels : public ros::Msg + { + public: + enum { RECONFIGURE_CLOSE = 3 }; + enum { RECONFIGURE_STOP = 1 }; + enum { RECONFIGURE_RUNNING = 0 }; + + SensorLevels() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "dynamic_reconfigure/SensorLevels"; }; + const char * getMD5(){ return "6322637bee96d5489db6e2127c47602c"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/StrParameter.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/StrParameter.h new file mode 100644 index 0000000..2e743f0 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/dynamic_reconfigure/StrParameter.h @@ -0,0 +1,72 @@ +#ifndef _ROS_dynamic_reconfigure_StrParameter_h +#define _ROS_dynamic_reconfigure_StrParameter_h + +#include +#include +#include +#include "ros/msg.h" + +namespace dynamic_reconfigure +{ + + class StrParameter : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef const char* _value_type; + _value_type value; + + StrParameter(): + name(""), + value("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + uint32_t length_value = strlen(this->value); + varToArr(outbuffer + offset, length_value); + offset += 4; + memcpy(outbuffer + offset, this->value, length_value); + offset += length_value; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + uint32_t length_value; + arrToVar(length_value, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_value; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_value-1]=0; + this->value = (char *)(inbuffer + offset-1); + offset += length_value; + return offset; + } + + const char * getType(){ return "dynamic_reconfigure/StrParameter"; }; + const char * getMD5(){ return "bc6ccc4a57f61779c8eaae61e9f422e0"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/embedded_linux_comms.c b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/embedded_linux_comms.c new file mode 100644 index 0000000..bde6e37 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/embedded_linux_comms.c @@ -0,0 +1,208 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2012, Paul Bouchier + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef ROS_EMBEDDED_LINUX_COMMS_H +#define ROS_EMBEDDED_LINUX_COMMS_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define DEFAULT_PORTNUM 11411 + +void error(const char *msg) +{ + perror(msg); + exit(0); +} + +void set_nonblock(int socket) +{ + int flags; + flags = fcntl(socket, F_GETFL, 0); + assert(flags != -1); + fcntl(socket, F_SETFL, flags | O_NONBLOCK); +} + +int elCommInit(const char *portName, int baud) +{ + struct termios options; + int fd; + int sockfd; + struct sockaddr_in serv_addr; + struct hostent *server; + int rv; + + if (*portName == '/') // linux serial port names always begin with /dev + { + printf("Opening serial port %s\n", portName); + + fd = open(portName, O_RDWR | O_NOCTTY | O_NDELAY); + + if (fd == -1) + { + // Could not open the port. + perror("init(): Unable to open serial port - "); + } + else + { + // Sets the read() function to return NOW and not wait for data to enter + // buffer if there isn't anything there. + fcntl(fd, F_SETFL, FNDELAY); + + // Configure port for 8N1 transmission, 57600 baud, SW flow control. + tcgetattr(fd, &options); + cfsetispeed(&options, B57600); + cfsetospeed(&options, B57600); + options.c_cflag |= (CLOCAL | CREAD); + options.c_cflag &= ~PARENB; + options.c_cflag &= ~CSTOPB; + options.c_cflag &= ~CSIZE; + options.c_cflag |= CS8; + options.c_cflag &= ~CRTSCTS; + options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); + options.c_iflag &= ~(IXON | IXOFF | IXANY); + options.c_oflag &= ~OPOST; + + // Set the new options for the port "NOW" + tcsetattr(fd, TCSANOW, &options); + } + return fd; + } + else + { + // Split connection string into IP address and port. + const char* tcpPortNumString = strchr(portName, ':'); + long int tcpPortNum; + char ip[16]; + if (!tcpPortNumString) + { + tcpPortNum = DEFAULT_PORTNUM; + strncpy(ip, portName, 16); + } + else + { + tcpPortNum = strtol(tcpPortNumString + 1, NULL, 10); + strncpy(ip, portName, tcpPortNumString - portName); + } + + printf("Connecting to TCP server at %s:%ld....\n", ip, tcpPortNum); + + // Create the socket. + sockfd = socket(AF_INET, SOCK_STREAM, 0); + if (sockfd < 0) + { + error("ERROR opening socket"); + exit(-1); + } + + // Disable the Nagle (TCP No Delay) algorithm. + int flag = 1; + rv = setsockopt(sockfd, IPPROTO_TCP, TCP_NODELAY, (char *)&flag, sizeof(flag)); + if (rv == -1) + { + printf("Couldn't setsockopt(TCP_NODELAY)\n"); + exit(-1); + } + + // Connect to the server + server = gethostbyname(ip); + if (server == NULL) + { + fprintf(stderr, "ERROR, no such host\n"); + exit(0); + } + bzero((char *) &serv_addr, sizeof(serv_addr)); + serv_addr.sin_family = AF_INET; + bcopy((char *)server->h_addr, + (char *)&serv_addr.sin_addr.s_addr, + server->h_length); + serv_addr.sin_port = htons(tcpPortNum); + if (connect(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) + error("ERROR connecting"); + set_nonblock(sockfd); + printf("connected to server\n"); + return sockfd; + } + return -1; +} + +int elCommRead(int fd) +{ + unsigned char c; + unsigned int i; + int rv; + rv = read(fd, &c, 1); // read one byte + i = c; // convert byte to an int for return + if (rv > 0) + return i; // return the character read + if (rv < 0) + { + if ((errno != EAGAIN) && (errno != EWOULDBLOCK)) + perror("elCommRead() error:"); + } + + // return -1 or 0 either if we read nothing, or if read returned negative + return rv; +} + +int elCommWrite(int fd, uint8_t* data, int len) +{ + int rv = 0; + int length = len; + int totalsent = 0; + while (totalsent < length) + { + rv = write(fd, data + totalsent, length); + if (rv < 0) + perror("write(): error writing - trying again - "); + else + totalsent += rv; + } + return rv; +} + +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/embedded_linux_hardware.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/embedded_linux_hardware.h new file mode 100644 index 0000000..fff1b46 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/embedded_linux_hardware.h @@ -0,0 +1,172 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2011, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef ROS_EMBEDDED_LINUX_HARDWARE_H_ +#define ROS_EMBEDDED_LINUX_HARDWARE_H_ + +#include + +#ifdef BUILD_LIBROSSERIALEMBEDDEDLINUX +extern "C" int elCommInit(char *portName, int baud); +extern "C" int elCommRead(int fd); +extern "C" elCommWrite(int fd, uint8_t* data, int length); +#endif + +#ifdef __linux__ +#include +#endif + +// Includes necessary to support time on OS X. +#ifdef __MACH__ +#include +#include +static mach_timebase_info_data_t sTimebaseInfo; +#endif + +#define DEFAULT_PORT "/dev/ttyAM1" + +class EmbeddedLinuxHardware +{ +public: + EmbeddedLinuxHardware(const char *pn, long baud = 57600) + { + strncpy(portName, pn, 30); + baud_ = baud; + } + + EmbeddedLinuxHardware() + { + const char *envPortName = getenv("ROSSERIAL_PORT"); + if (envPortName == NULL) + strcpy(portName, DEFAULT_PORT); + else + strncpy(portName, envPortName, 29); + portName[29] = '\0'; // in case user gave us too long a port name + baud_ = 57600; + } + + void setBaud(long baud) + { + this->baud_ = baud; + } + + int getBaud() + { + return baud_; + } + + void init() + { + fd = elCommInit(portName, baud_); + if (fd < 0) + { + std::cout << "Exiting" << std::endl; + exit(-1); + } + std::cout << "EmbeddedHardware.h: opened serial port successfully\n"; + + initTime(); + } + + void init(const char *pName) + { + fd = elCommInit(pName, baud_); + if (fd < 0) + { + std::cout << "Exiting" << std::endl; + exit(-1); + } + std::cout << "EmbeddedHardware.h: opened comm port successfully\n"; + + initTime(); + } + + int read() + { + int c = elCommRead(fd); + return c; + } + + void write(uint8_t* data, int length) + { + elCommWrite(fd, data, length); + } + +#ifdef __linux__ + void initTime() + { + clock_gettime(CLOCK_MONOTONIC, &start); + } + + unsigned long time() + { + struct timespec end; + long seconds, nseconds; + + clock_gettime(CLOCK_MONOTONIC, &end); + + seconds = end.tv_sec - start.tv_sec; + nseconds = end.tv_nsec - start.tv_nsec; + + return ((seconds) * 1000 + nseconds / 1000000.0) + 0.5; + } + +#elif __MACH__ + void initTime() + { + start = mach_absolute_time(); + mach_timebase_info(&sTimebaseInfo); + } + + unsigned long time() + { + // See: https://developer.apple.com/library/mac/qa/qa1398/_index.html + uint64_t elapsed = mach_absolute_time() - start; + return elapsed * sTimebaseInfo.numer / (sTimebaseInfo.denom * 1000000); + } +#endif + +protected: + int fd; + char portName[30]; + long baud_; + +#ifdef __linux__ + struct timespec start; +#elif __MACH__ + uint64_t start; +#endif +}; + +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/ApplyBodyWrench.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/ApplyBodyWrench.h new file mode 100644 index 0000000..e7af6bb --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/ApplyBodyWrench.h @@ -0,0 +1,199 @@ +#ifndef _ROS_SERVICE_ApplyBodyWrench_h +#define _ROS_SERVICE_ApplyBodyWrench_h +#include +#include +#include +#include "ros/msg.h" +#include "ros/duration.h" +#include "geometry_msgs/Wrench.h" +#include "ros/time.h" +#include "geometry_msgs/Point.h" + +namespace gazebo_msgs +{ + +static const char APPLYBODYWRENCH[] = "gazebo_msgs/ApplyBodyWrench"; + + class ApplyBodyWrenchRequest : public ros::Msg + { + public: + typedef const char* _body_name_type; + _body_name_type body_name; + typedef const char* _reference_frame_type; + _reference_frame_type reference_frame; + typedef geometry_msgs::Point _reference_point_type; + _reference_point_type reference_point; + typedef geometry_msgs::Wrench _wrench_type; + _wrench_type wrench; + typedef ros::Time _start_time_type; + _start_time_type start_time; + typedef ros::Duration _duration_type; + _duration_type duration; + + ApplyBodyWrenchRequest(): + body_name(""), + reference_frame(""), + reference_point(), + wrench(), + start_time(), + duration() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_body_name = strlen(this->body_name); + varToArr(outbuffer + offset, length_body_name); + offset += 4; + memcpy(outbuffer + offset, this->body_name, length_body_name); + offset += length_body_name; + uint32_t length_reference_frame = strlen(this->reference_frame); + varToArr(outbuffer + offset, length_reference_frame); + offset += 4; + memcpy(outbuffer + offset, this->reference_frame, length_reference_frame); + offset += length_reference_frame; + offset += this->reference_point.serialize(outbuffer + offset); + offset += this->wrench.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->start_time.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->start_time.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->start_time.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->start_time.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->start_time.sec); + *(outbuffer + offset + 0) = (this->start_time.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->start_time.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->start_time.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->start_time.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->start_time.nsec); + *(outbuffer + offset + 0) = (this->duration.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->duration.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->duration.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->duration.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->duration.sec); + *(outbuffer + offset + 0) = (this->duration.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->duration.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->duration.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->duration.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->duration.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_body_name; + arrToVar(length_body_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_body_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_body_name-1]=0; + this->body_name = (char *)(inbuffer + offset-1); + offset += length_body_name; + uint32_t length_reference_frame; + arrToVar(length_reference_frame, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_reference_frame; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_reference_frame-1]=0; + this->reference_frame = (char *)(inbuffer + offset-1); + offset += length_reference_frame; + offset += this->reference_point.deserialize(inbuffer + offset); + offset += this->wrench.deserialize(inbuffer + offset); + this->start_time.sec = ((uint32_t) (*(inbuffer + offset))); + this->start_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->start_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->start_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->start_time.sec); + this->start_time.nsec = ((uint32_t) (*(inbuffer + offset))); + this->start_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->start_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->start_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->start_time.nsec); + this->duration.sec = ((uint32_t) (*(inbuffer + offset))); + this->duration.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->duration.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->duration.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->duration.sec); + this->duration.nsec = ((uint32_t) (*(inbuffer + offset))); + this->duration.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->duration.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->duration.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->duration.nsec); + return offset; + } + + const char * getType(){ return APPLYBODYWRENCH; }; + const char * getMD5(){ return "e37e6adf97eba5095baa77dffb71e5bd"; }; + + }; + + class ApplyBodyWrenchResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + ApplyBodyWrenchResponse(): + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return APPLYBODYWRENCH; }; + const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; }; + + }; + + class ApplyBodyWrench { + public: + typedef ApplyBodyWrenchRequest Request; + typedef ApplyBodyWrenchResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/ApplyJointEffort.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/ApplyJointEffort.h new file mode 100644 index 0000000..636084f --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/ApplyJointEffort.h @@ -0,0 +1,202 @@ +#ifndef _ROS_SERVICE_ApplyJointEffort_h +#define _ROS_SERVICE_ApplyJointEffort_h +#include +#include +#include +#include "ros/msg.h" +#include "ros/duration.h" +#include "ros/time.h" + +namespace gazebo_msgs +{ + +static const char APPLYJOINTEFFORT[] = "gazebo_msgs/ApplyJointEffort"; + + class ApplyJointEffortRequest : public ros::Msg + { + public: + typedef const char* _joint_name_type; + _joint_name_type joint_name; + typedef double _effort_type; + _effort_type effort; + typedef ros::Time _start_time_type; + _start_time_type start_time; + typedef ros::Duration _duration_type; + _duration_type duration; + + ApplyJointEffortRequest(): + joint_name(""), + effort(0), + start_time(), + duration() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_joint_name = strlen(this->joint_name); + varToArr(outbuffer + offset, length_joint_name); + offset += 4; + memcpy(outbuffer + offset, this->joint_name, length_joint_name); + offset += length_joint_name; + union { + double real; + uint64_t base; + } u_effort; + u_effort.real = this->effort; + *(outbuffer + offset + 0) = (u_effort.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_effort.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_effort.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_effort.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_effort.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_effort.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_effort.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_effort.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->effort); + *(outbuffer + offset + 0) = (this->start_time.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->start_time.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->start_time.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->start_time.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->start_time.sec); + *(outbuffer + offset + 0) = (this->start_time.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->start_time.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->start_time.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->start_time.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->start_time.nsec); + *(outbuffer + offset + 0) = (this->duration.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->duration.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->duration.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->duration.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->duration.sec); + *(outbuffer + offset + 0) = (this->duration.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->duration.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->duration.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->duration.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->duration.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_joint_name; + arrToVar(length_joint_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_joint_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_joint_name-1]=0; + this->joint_name = (char *)(inbuffer + offset-1); + offset += length_joint_name; + union { + double real; + uint64_t base; + } u_effort; + u_effort.base = 0; + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->effort = u_effort.real; + offset += sizeof(this->effort); + this->start_time.sec = ((uint32_t) (*(inbuffer + offset))); + this->start_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->start_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->start_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->start_time.sec); + this->start_time.nsec = ((uint32_t) (*(inbuffer + offset))); + this->start_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->start_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->start_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->start_time.nsec); + this->duration.sec = ((uint32_t) (*(inbuffer + offset))); + this->duration.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->duration.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->duration.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->duration.sec); + this->duration.nsec = ((uint32_t) (*(inbuffer + offset))); + this->duration.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->duration.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->duration.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->duration.nsec); + return offset; + } + + const char * getType(){ return APPLYJOINTEFFORT; }; + const char * getMD5(){ return "2c3396ab9af67a509ecd2167a8fe41a2"; }; + + }; + + class ApplyJointEffortResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + ApplyJointEffortResponse(): + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return APPLYJOINTEFFORT; }; + const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; }; + + }; + + class ApplyJointEffort { + public: + typedef ApplyJointEffortRequest Request; + typedef ApplyJointEffortResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/BodyRequest.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/BodyRequest.h new file mode 100644 index 0000000..bb2106d --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/BodyRequest.h @@ -0,0 +1,87 @@ +#ifndef _ROS_SERVICE_BodyRequest_h +#define _ROS_SERVICE_BodyRequest_h +#include +#include +#include +#include "ros/msg.h" + +namespace gazebo_msgs +{ + +static const char BODYREQUEST[] = "gazebo_msgs/BodyRequest"; + + class BodyRequestRequest : public ros::Msg + { + public: + typedef const char* _body_name_type; + _body_name_type body_name; + + BodyRequestRequest(): + body_name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_body_name = strlen(this->body_name); + varToArr(outbuffer + offset, length_body_name); + offset += 4; + memcpy(outbuffer + offset, this->body_name, length_body_name); + offset += length_body_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_body_name; + arrToVar(length_body_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_body_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_body_name-1]=0; + this->body_name = (char *)(inbuffer + offset-1); + offset += length_body_name; + return offset; + } + + const char * getType(){ return BODYREQUEST; }; + const char * getMD5(){ return "5eade9afe7f232d78005bd0cafeab755"; }; + + }; + + class BodyRequestResponse : public ros::Msg + { + public: + + BodyRequestResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return BODYREQUEST; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class BodyRequest { + public: + typedef BodyRequestRequest Request; + typedef BodyRequestResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/ContactState.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/ContactState.h new file mode 100644 index 0000000..a3d852d --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/ContactState.h @@ -0,0 +1,223 @@ +#ifndef _ROS_gazebo_msgs_ContactState_h +#define _ROS_gazebo_msgs_ContactState_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Wrench.h" +#include "geometry_msgs/Vector3.h" + +namespace gazebo_msgs +{ + + class ContactState : public ros::Msg + { + public: + typedef const char* _info_type; + _info_type info; + typedef const char* _collision1_name_type; + _collision1_name_type collision1_name; + typedef const char* _collision2_name_type; + _collision2_name_type collision2_name; + uint32_t wrenches_length; + typedef geometry_msgs::Wrench _wrenches_type; + _wrenches_type st_wrenches; + _wrenches_type * wrenches; + typedef geometry_msgs::Wrench _total_wrench_type; + _total_wrench_type total_wrench; + uint32_t contact_positions_length; + typedef geometry_msgs::Vector3 _contact_positions_type; + _contact_positions_type st_contact_positions; + _contact_positions_type * contact_positions; + uint32_t contact_normals_length; + typedef geometry_msgs::Vector3 _contact_normals_type; + _contact_normals_type st_contact_normals; + _contact_normals_type * contact_normals; + uint32_t depths_length; + typedef double _depths_type; + _depths_type st_depths; + _depths_type * depths; + + ContactState(): + info(""), + collision1_name(""), + collision2_name(""), + wrenches_length(0), wrenches(NULL), + total_wrench(), + contact_positions_length(0), contact_positions(NULL), + contact_normals_length(0), contact_normals(NULL), + depths_length(0), depths(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_info = strlen(this->info); + varToArr(outbuffer + offset, length_info); + offset += 4; + memcpy(outbuffer + offset, this->info, length_info); + offset += length_info; + uint32_t length_collision1_name = strlen(this->collision1_name); + varToArr(outbuffer + offset, length_collision1_name); + offset += 4; + memcpy(outbuffer + offset, this->collision1_name, length_collision1_name); + offset += length_collision1_name; + uint32_t length_collision2_name = strlen(this->collision2_name); + varToArr(outbuffer + offset, length_collision2_name); + offset += 4; + memcpy(outbuffer + offset, this->collision2_name, length_collision2_name); + offset += length_collision2_name; + *(outbuffer + offset + 0) = (this->wrenches_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->wrenches_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->wrenches_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->wrenches_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->wrenches_length); + for( uint32_t i = 0; i < wrenches_length; i++){ + offset += this->wrenches[i].serialize(outbuffer + offset); + } + offset += this->total_wrench.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->contact_positions_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->contact_positions_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->contact_positions_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->contact_positions_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->contact_positions_length); + for( uint32_t i = 0; i < contact_positions_length; i++){ + offset += this->contact_positions[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->contact_normals_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->contact_normals_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->contact_normals_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->contact_normals_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->contact_normals_length); + for( uint32_t i = 0; i < contact_normals_length; i++){ + offset += this->contact_normals[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->depths_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->depths_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->depths_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->depths_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->depths_length); + for( uint32_t i = 0; i < depths_length; i++){ + union { + double real; + uint64_t base; + } u_depthsi; + u_depthsi.real = this->depths[i]; + *(outbuffer + offset + 0) = (u_depthsi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_depthsi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_depthsi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_depthsi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_depthsi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_depthsi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_depthsi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_depthsi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->depths[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_info; + arrToVar(length_info, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_info; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_info-1]=0; + this->info = (char *)(inbuffer + offset-1); + offset += length_info; + uint32_t length_collision1_name; + arrToVar(length_collision1_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_collision1_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_collision1_name-1]=0; + this->collision1_name = (char *)(inbuffer + offset-1); + offset += length_collision1_name; + uint32_t length_collision2_name; + arrToVar(length_collision2_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_collision2_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_collision2_name-1]=0; + this->collision2_name = (char *)(inbuffer + offset-1); + offset += length_collision2_name; + uint32_t wrenches_lengthT = ((uint32_t) (*(inbuffer + offset))); + wrenches_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + wrenches_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + wrenches_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->wrenches_length); + if(wrenches_lengthT > wrenches_length) + this->wrenches = (geometry_msgs::Wrench*)realloc(this->wrenches, wrenches_lengthT * sizeof(geometry_msgs::Wrench)); + wrenches_length = wrenches_lengthT; + for( uint32_t i = 0; i < wrenches_length; i++){ + offset += this->st_wrenches.deserialize(inbuffer + offset); + memcpy( &(this->wrenches[i]), &(this->st_wrenches), sizeof(geometry_msgs::Wrench)); + } + offset += this->total_wrench.deserialize(inbuffer + offset); + uint32_t contact_positions_lengthT = ((uint32_t) (*(inbuffer + offset))); + contact_positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + contact_positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + contact_positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->contact_positions_length); + if(contact_positions_lengthT > contact_positions_length) + this->contact_positions = (geometry_msgs::Vector3*)realloc(this->contact_positions, contact_positions_lengthT * sizeof(geometry_msgs::Vector3)); + contact_positions_length = contact_positions_lengthT; + for( uint32_t i = 0; i < contact_positions_length; i++){ + offset += this->st_contact_positions.deserialize(inbuffer + offset); + memcpy( &(this->contact_positions[i]), &(this->st_contact_positions), sizeof(geometry_msgs::Vector3)); + } + uint32_t contact_normals_lengthT = ((uint32_t) (*(inbuffer + offset))); + contact_normals_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + contact_normals_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + contact_normals_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->contact_normals_length); + if(contact_normals_lengthT > contact_normals_length) + this->contact_normals = (geometry_msgs::Vector3*)realloc(this->contact_normals, contact_normals_lengthT * sizeof(geometry_msgs::Vector3)); + contact_normals_length = contact_normals_lengthT; + for( uint32_t i = 0; i < contact_normals_length; i++){ + offset += this->st_contact_normals.deserialize(inbuffer + offset); + memcpy( &(this->contact_normals[i]), &(this->st_contact_normals), sizeof(geometry_msgs::Vector3)); + } + uint32_t depths_lengthT = ((uint32_t) (*(inbuffer + offset))); + depths_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + depths_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + depths_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->depths_length); + if(depths_lengthT > depths_length) + this->depths = (double*)realloc(this->depths, depths_lengthT * sizeof(double)); + depths_length = depths_lengthT; + for( uint32_t i = 0; i < depths_length; i++){ + union { + double real; + uint64_t base; + } u_st_depths; + u_st_depths.base = 0; + u_st_depths.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_depths.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_depths.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_depths.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_depths.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_depths.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_depths.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_depths.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_depths = u_st_depths.real; + offset += sizeof(this->st_depths); + memcpy( &(this->depths[i]), &(this->st_depths), sizeof(double)); + } + return offset; + } + + const char * getType(){ return "gazebo_msgs/ContactState"; }; + const char * getMD5(){ return "48c0ffb054b8c444f870cecea1ee50d9"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/ContactsState.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/ContactsState.h new file mode 100644 index 0000000..9af62c0 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/ContactsState.h @@ -0,0 +1,70 @@ +#ifndef _ROS_gazebo_msgs_ContactsState_h +#define _ROS_gazebo_msgs_ContactsState_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "gazebo_msgs/ContactState.h" + +namespace gazebo_msgs +{ + + class ContactsState : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t states_length; + typedef gazebo_msgs::ContactState _states_type; + _states_type st_states; + _states_type * states; + + ContactsState(): + header(), + states_length(0), states(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->states_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->states_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->states_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->states_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->states_length); + for( uint32_t i = 0; i < states_length; i++){ + offset += this->states[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t states_lengthT = ((uint32_t) (*(inbuffer + offset))); + states_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + states_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + states_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->states_length); + if(states_lengthT > states_length) + this->states = (gazebo_msgs::ContactState*)realloc(this->states, states_lengthT * sizeof(gazebo_msgs::ContactState)); + states_length = states_lengthT; + for( uint32_t i = 0; i < states_length; i++){ + offset += this->st_states.deserialize(inbuffer + offset); + memcpy( &(this->states[i]), &(this->st_states), sizeof(gazebo_msgs::ContactState)); + } + return offset; + } + + const char * getType(){ return "gazebo_msgs/ContactsState"; }; + const char * getMD5(){ return "acbcb1601a8e525bf72509f18e6f668d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/DeleteLight.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/DeleteLight.h new file mode 100644 index 0000000..54a9c5d --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/DeleteLight.h @@ -0,0 +1,122 @@ +#ifndef _ROS_SERVICE_DeleteLight_h +#define _ROS_SERVICE_DeleteLight_h +#include +#include +#include +#include "ros/msg.h" + +namespace gazebo_msgs +{ + +static const char DELETELIGHT[] = "gazebo_msgs/DeleteLight"; + + class DeleteLightRequest : public ros::Msg + { + public: + typedef const char* _light_name_type; + _light_name_type light_name; + + DeleteLightRequest(): + light_name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_light_name = strlen(this->light_name); + varToArr(outbuffer + offset, length_light_name); + offset += 4; + memcpy(outbuffer + offset, this->light_name, length_light_name); + offset += length_light_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_light_name; + arrToVar(length_light_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_light_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_light_name-1]=0; + this->light_name = (char *)(inbuffer + offset-1); + offset += length_light_name; + return offset; + } + + const char * getType(){ return DELETELIGHT; }; + const char * getMD5(){ return "4fb676dfb4741fc866365702a859441c"; }; + + }; + + class DeleteLightResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + DeleteLightResponse(): + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return DELETELIGHT; }; + const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; }; + + }; + + class DeleteLight { + public: + typedef DeleteLightRequest Request; + typedef DeleteLightResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/DeleteModel.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/DeleteModel.h new file mode 100644 index 0000000..00da12d --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/DeleteModel.h @@ -0,0 +1,122 @@ +#ifndef _ROS_SERVICE_DeleteModel_h +#define _ROS_SERVICE_DeleteModel_h +#include +#include +#include +#include "ros/msg.h" + +namespace gazebo_msgs +{ + +static const char DELETEMODEL[] = "gazebo_msgs/DeleteModel"; + + class DeleteModelRequest : public ros::Msg + { + public: + typedef const char* _model_name_type; + _model_name_type model_name; + + DeleteModelRequest(): + model_name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_model_name = strlen(this->model_name); + varToArr(outbuffer + offset, length_model_name); + offset += 4; + memcpy(outbuffer + offset, this->model_name, length_model_name); + offset += length_model_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_model_name; + arrToVar(length_model_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_model_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_model_name-1]=0; + this->model_name = (char *)(inbuffer + offset-1); + offset += length_model_name; + return offset; + } + + const char * getType(){ return DELETEMODEL; }; + const char * getMD5(){ return "ea31c8eab6fc401383cf528a7c0984ba"; }; + + }; + + class DeleteModelResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + DeleteModelResponse(): + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return DELETEMODEL; }; + const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; }; + + }; + + class DeleteModel { + public: + typedef DeleteModelRequest Request; + typedef DeleteModelResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetJointProperties.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetJointProperties.h new file mode 100644 index 0000000..6ad0fe9 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetJointProperties.h @@ -0,0 +1,291 @@ +#ifndef _ROS_SERVICE_GetJointProperties_h +#define _ROS_SERVICE_GetJointProperties_h +#include +#include +#include +#include "ros/msg.h" + +namespace gazebo_msgs +{ + +static const char GETJOINTPROPERTIES[] = "gazebo_msgs/GetJointProperties"; + + class GetJointPropertiesRequest : public ros::Msg + { + public: + typedef const char* _joint_name_type; + _joint_name_type joint_name; + + GetJointPropertiesRequest(): + joint_name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_joint_name = strlen(this->joint_name); + varToArr(outbuffer + offset, length_joint_name); + offset += 4; + memcpy(outbuffer + offset, this->joint_name, length_joint_name); + offset += length_joint_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_joint_name; + arrToVar(length_joint_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_joint_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_joint_name-1]=0; + this->joint_name = (char *)(inbuffer + offset-1); + offset += length_joint_name; + return offset; + } + + const char * getType(){ return GETJOINTPROPERTIES; }; + const char * getMD5(){ return "0be1351618e1dc030eb7959d9a4902de"; }; + + }; + + class GetJointPropertiesResponse : public ros::Msg + { + public: + typedef uint8_t _type_type; + _type_type type; + uint32_t damping_length; + typedef double _damping_type; + _damping_type st_damping; + _damping_type * damping; + uint32_t position_length; + typedef double _position_type; + _position_type st_position; + _position_type * position; + uint32_t rate_length; + typedef double _rate_type; + _rate_type st_rate; + _rate_type * rate; + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + enum { REVOLUTE = 0 }; + enum { CONTINUOUS = 1 }; + enum { PRISMATIC = 2 }; + enum { FIXED = 3 }; + enum { BALL = 4 }; + enum { UNIVERSAL = 5 }; + + GetJointPropertiesResponse(): + type(0), + damping_length(0), damping(NULL), + position_length(0), position(NULL), + rate_length(0), rate(NULL), + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->type >> (8 * 0)) & 0xFF; + offset += sizeof(this->type); + *(outbuffer + offset + 0) = (this->damping_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->damping_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->damping_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->damping_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->damping_length); + for( uint32_t i = 0; i < damping_length; i++){ + union { + double real; + uint64_t base; + } u_dampingi; + u_dampingi.real = this->damping[i]; + *(outbuffer + offset + 0) = (u_dampingi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_dampingi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_dampingi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_dampingi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_dampingi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_dampingi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_dampingi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_dampingi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->damping[i]); + } + *(outbuffer + offset + 0) = (this->position_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->position_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->position_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->position_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->position_length); + for( uint32_t i = 0; i < position_length; i++){ + union { + double real; + uint64_t base; + } u_positioni; + u_positioni.real = this->position[i]; + *(outbuffer + offset + 0) = (u_positioni.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_positioni.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_positioni.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_positioni.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_positioni.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_positioni.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_positioni.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_positioni.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->position[i]); + } + *(outbuffer + offset + 0) = (this->rate_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->rate_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->rate_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->rate_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->rate_length); + for( uint32_t i = 0; i < rate_length; i++){ + union { + double real; + uint64_t base; + } u_ratei; + u_ratei.real = this->rate[i]; + *(outbuffer + offset + 0) = (u_ratei.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_ratei.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_ratei.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_ratei.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_ratei.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_ratei.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_ratei.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_ratei.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->rate[i]); + } + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->type = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->type); + uint32_t damping_lengthT = ((uint32_t) (*(inbuffer + offset))); + damping_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + damping_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + damping_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->damping_length); + if(damping_lengthT > damping_length) + this->damping = (double*)realloc(this->damping, damping_lengthT * sizeof(double)); + damping_length = damping_lengthT; + for( uint32_t i = 0; i < damping_length; i++){ + union { + double real; + uint64_t base; + } u_st_damping; + u_st_damping.base = 0; + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_damping = u_st_damping.real; + offset += sizeof(this->st_damping); + memcpy( &(this->damping[i]), &(this->st_damping), sizeof(double)); + } + uint32_t position_lengthT = ((uint32_t) (*(inbuffer + offset))); + position_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + position_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + position_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->position_length); + if(position_lengthT > position_length) + this->position = (double*)realloc(this->position, position_lengthT * sizeof(double)); + position_length = position_lengthT; + for( uint32_t i = 0; i < position_length; i++){ + union { + double real; + uint64_t base; + } u_st_position; + u_st_position.base = 0; + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_position = u_st_position.real; + offset += sizeof(this->st_position); + memcpy( &(this->position[i]), &(this->st_position), sizeof(double)); + } + uint32_t rate_lengthT = ((uint32_t) (*(inbuffer + offset))); + rate_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + rate_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + rate_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->rate_length); + if(rate_lengthT > rate_length) + this->rate = (double*)realloc(this->rate, rate_lengthT * sizeof(double)); + rate_length = rate_lengthT; + for( uint32_t i = 0; i < rate_length; i++){ + union { + double real; + uint64_t base; + } u_st_rate; + u_st_rate.base = 0; + u_st_rate.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_rate.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_rate.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_rate.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_rate.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_rate.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_rate.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_rate.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_rate = u_st_rate.real; + offset += sizeof(this->st_rate); + memcpy( &(this->rate[i]), &(this->st_rate), sizeof(double)); + } + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return GETJOINTPROPERTIES; }; + const char * getMD5(){ return "cd7b30a39faa372283dc94c5f6457f82"; }; + + }; + + class GetJointProperties { + public: + typedef GetJointPropertiesRequest Request; + typedef GetJointPropertiesResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetLightProperties.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetLightProperties.h new file mode 100644 index 0000000..7210186 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetLightProperties.h @@ -0,0 +1,224 @@ +#ifndef _ROS_SERVICE_GetLightProperties_h +#define _ROS_SERVICE_GetLightProperties_h +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/ColorRGBA.h" + +namespace gazebo_msgs +{ + +static const char GETLIGHTPROPERTIES[] = "gazebo_msgs/GetLightProperties"; + + class GetLightPropertiesRequest : public ros::Msg + { + public: + typedef const char* _light_name_type; + _light_name_type light_name; + + GetLightPropertiesRequest(): + light_name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_light_name = strlen(this->light_name); + varToArr(outbuffer + offset, length_light_name); + offset += 4; + memcpy(outbuffer + offset, this->light_name, length_light_name); + offset += length_light_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_light_name; + arrToVar(length_light_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_light_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_light_name-1]=0; + this->light_name = (char *)(inbuffer + offset-1); + offset += length_light_name; + return offset; + } + + const char * getType(){ return GETLIGHTPROPERTIES; }; + const char * getMD5(){ return "4fb676dfb4741fc866365702a859441c"; }; + + }; + + class GetLightPropertiesResponse : public ros::Msg + { + public: + typedef std_msgs::ColorRGBA _diffuse_type; + _diffuse_type diffuse; + typedef double _attenuation_constant_type; + _attenuation_constant_type attenuation_constant; + typedef double _attenuation_linear_type; + _attenuation_linear_type attenuation_linear; + typedef double _attenuation_quadratic_type; + _attenuation_quadratic_type attenuation_quadratic; + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + GetLightPropertiesResponse(): + diffuse(), + attenuation_constant(0), + attenuation_linear(0), + attenuation_quadratic(0), + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->diffuse.serialize(outbuffer + offset); + union { + double real; + uint64_t base; + } u_attenuation_constant; + u_attenuation_constant.real = this->attenuation_constant; + *(outbuffer + offset + 0) = (u_attenuation_constant.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_attenuation_constant.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_attenuation_constant.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_attenuation_constant.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_attenuation_constant.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_attenuation_constant.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_attenuation_constant.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_attenuation_constant.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->attenuation_constant); + union { + double real; + uint64_t base; + } u_attenuation_linear; + u_attenuation_linear.real = this->attenuation_linear; + *(outbuffer + offset + 0) = (u_attenuation_linear.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_attenuation_linear.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_attenuation_linear.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_attenuation_linear.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_attenuation_linear.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_attenuation_linear.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_attenuation_linear.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_attenuation_linear.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->attenuation_linear); + union { + double real; + uint64_t base; + } u_attenuation_quadratic; + u_attenuation_quadratic.real = this->attenuation_quadratic; + *(outbuffer + offset + 0) = (u_attenuation_quadratic.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_attenuation_quadratic.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_attenuation_quadratic.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_attenuation_quadratic.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_attenuation_quadratic.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_attenuation_quadratic.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_attenuation_quadratic.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_attenuation_quadratic.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->attenuation_quadratic); + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->diffuse.deserialize(inbuffer + offset); + union { + double real; + uint64_t base; + } u_attenuation_constant; + u_attenuation_constant.base = 0; + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->attenuation_constant = u_attenuation_constant.real; + offset += sizeof(this->attenuation_constant); + union { + double real; + uint64_t base; + } u_attenuation_linear; + u_attenuation_linear.base = 0; + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->attenuation_linear = u_attenuation_linear.real; + offset += sizeof(this->attenuation_linear); + union { + double real; + uint64_t base; + } u_attenuation_quadratic; + u_attenuation_quadratic.base = 0; + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->attenuation_quadratic = u_attenuation_quadratic.real; + offset += sizeof(this->attenuation_quadratic); + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return GETLIGHTPROPERTIES; }; + const char * getMD5(){ return "9a19ddd5aab4c13b7643d1722c709f1f"; }; + + }; + + class GetLightProperties { + public: + typedef GetLightPropertiesRequest Request; + typedef GetLightPropertiesResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetLinkProperties.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetLinkProperties.h new file mode 100644 index 0000000..0d4173f --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetLinkProperties.h @@ -0,0 +1,370 @@ +#ifndef _ROS_SERVICE_GetLinkProperties_h +#define _ROS_SERVICE_GetLinkProperties_h +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Pose.h" + +namespace gazebo_msgs +{ + +static const char GETLINKPROPERTIES[] = "gazebo_msgs/GetLinkProperties"; + + class GetLinkPropertiesRequest : public ros::Msg + { + public: + typedef const char* _link_name_type; + _link_name_type link_name; + + GetLinkPropertiesRequest(): + link_name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_link_name = strlen(this->link_name); + varToArr(outbuffer + offset, length_link_name); + offset += 4; + memcpy(outbuffer + offset, this->link_name, length_link_name); + offset += length_link_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_link_name; + arrToVar(length_link_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_link_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_link_name-1]=0; + this->link_name = (char *)(inbuffer + offset-1); + offset += length_link_name; + return offset; + } + + const char * getType(){ return GETLINKPROPERTIES; }; + const char * getMD5(){ return "7d82d60381f1b66a30f2157f60884345"; }; + + }; + + class GetLinkPropertiesResponse : public ros::Msg + { + public: + typedef geometry_msgs::Pose _com_type; + _com_type com; + typedef bool _gravity_mode_type; + _gravity_mode_type gravity_mode; + typedef double _mass_type; + _mass_type mass; + typedef double _ixx_type; + _ixx_type ixx; + typedef double _ixy_type; + _ixy_type ixy; + typedef double _ixz_type; + _ixz_type ixz; + typedef double _iyy_type; + _iyy_type iyy; + typedef double _iyz_type; + _iyz_type iyz; + typedef double _izz_type; + _izz_type izz; + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + GetLinkPropertiesResponse(): + com(), + gravity_mode(0), + mass(0), + ixx(0), + ixy(0), + ixz(0), + iyy(0), + iyz(0), + izz(0), + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->com.serialize(outbuffer + offset); + union { + bool real; + uint8_t base; + } u_gravity_mode; + u_gravity_mode.real = this->gravity_mode; + *(outbuffer + offset + 0) = (u_gravity_mode.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->gravity_mode); + union { + double real; + uint64_t base; + } u_mass; + u_mass.real = this->mass; + *(outbuffer + offset + 0) = (u_mass.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_mass.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_mass.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_mass.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_mass.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_mass.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_mass.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_mass.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->mass); + union { + double real; + uint64_t base; + } u_ixx; + u_ixx.real = this->ixx; + *(outbuffer + offset + 0) = (u_ixx.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_ixx.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_ixx.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_ixx.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_ixx.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_ixx.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_ixx.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_ixx.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->ixx); + union { + double real; + uint64_t base; + } u_ixy; + u_ixy.real = this->ixy; + *(outbuffer + offset + 0) = (u_ixy.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_ixy.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_ixy.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_ixy.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_ixy.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_ixy.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_ixy.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_ixy.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->ixy); + union { + double real; + uint64_t base; + } u_ixz; + u_ixz.real = this->ixz; + *(outbuffer + offset + 0) = (u_ixz.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_ixz.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_ixz.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_ixz.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_ixz.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_ixz.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_ixz.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_ixz.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->ixz); + union { + double real; + uint64_t base; + } u_iyy; + u_iyy.real = this->iyy; + *(outbuffer + offset + 0) = (u_iyy.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_iyy.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_iyy.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_iyy.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_iyy.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_iyy.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_iyy.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_iyy.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->iyy); + union { + double real; + uint64_t base; + } u_iyz; + u_iyz.real = this->iyz; + *(outbuffer + offset + 0) = (u_iyz.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_iyz.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_iyz.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_iyz.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_iyz.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_iyz.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_iyz.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_iyz.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->iyz); + union { + double real; + uint64_t base; + } u_izz; + u_izz.real = this->izz; + *(outbuffer + offset + 0) = (u_izz.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_izz.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_izz.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_izz.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_izz.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_izz.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_izz.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_izz.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->izz); + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->com.deserialize(inbuffer + offset); + union { + bool real; + uint8_t base; + } u_gravity_mode; + u_gravity_mode.base = 0; + u_gravity_mode.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->gravity_mode = u_gravity_mode.real; + offset += sizeof(this->gravity_mode); + union { + double real; + uint64_t base; + } u_mass; + u_mass.base = 0; + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->mass = u_mass.real; + offset += sizeof(this->mass); + union { + double real; + uint64_t base; + } u_ixx; + u_ixx.base = 0; + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->ixx = u_ixx.real; + offset += sizeof(this->ixx); + union { + double real; + uint64_t base; + } u_ixy; + u_ixy.base = 0; + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->ixy = u_ixy.real; + offset += sizeof(this->ixy); + union { + double real; + uint64_t base; + } u_ixz; + u_ixz.base = 0; + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->ixz = u_ixz.real; + offset += sizeof(this->ixz); + union { + double real; + uint64_t base; + } u_iyy; + u_iyy.base = 0; + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->iyy = u_iyy.real; + offset += sizeof(this->iyy); + union { + double real; + uint64_t base; + } u_iyz; + u_iyz.base = 0; + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->iyz = u_iyz.real; + offset += sizeof(this->iyz); + union { + double real; + uint64_t base; + } u_izz; + u_izz.base = 0; + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->izz = u_izz.real; + offset += sizeof(this->izz); + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return GETLINKPROPERTIES; }; + const char * getMD5(){ return "a8619f92d17cfcc3958c0fd13299443d"; }; + + }; + + class GetLinkProperties { + public: + typedef GetLinkPropertiesRequest Request; + typedef GetLinkPropertiesResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetLinkState.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetLinkState.h new file mode 100644 index 0000000..5e20764 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetLinkState.h @@ -0,0 +1,145 @@ +#ifndef _ROS_SERVICE_GetLinkState_h +#define _ROS_SERVICE_GetLinkState_h +#include +#include +#include +#include "ros/msg.h" +#include "gazebo_msgs/LinkState.h" + +namespace gazebo_msgs +{ + +static const char GETLINKSTATE[] = "gazebo_msgs/GetLinkState"; + + class GetLinkStateRequest : public ros::Msg + { + public: + typedef const char* _link_name_type; + _link_name_type link_name; + typedef const char* _reference_frame_type; + _reference_frame_type reference_frame; + + GetLinkStateRequest(): + link_name(""), + reference_frame("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_link_name = strlen(this->link_name); + varToArr(outbuffer + offset, length_link_name); + offset += 4; + memcpy(outbuffer + offset, this->link_name, length_link_name); + offset += length_link_name; + uint32_t length_reference_frame = strlen(this->reference_frame); + varToArr(outbuffer + offset, length_reference_frame); + offset += 4; + memcpy(outbuffer + offset, this->reference_frame, length_reference_frame); + offset += length_reference_frame; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_link_name; + arrToVar(length_link_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_link_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_link_name-1]=0; + this->link_name = (char *)(inbuffer + offset-1); + offset += length_link_name; + uint32_t length_reference_frame; + arrToVar(length_reference_frame, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_reference_frame; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_reference_frame-1]=0; + this->reference_frame = (char *)(inbuffer + offset-1); + offset += length_reference_frame; + return offset; + } + + const char * getType(){ return GETLINKSTATE; }; + const char * getMD5(){ return "7551675c30aaa71f7c288d4864552001"; }; + + }; + + class GetLinkStateResponse : public ros::Msg + { + public: + typedef gazebo_msgs::LinkState _link_state_type; + _link_state_type link_state; + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + GetLinkStateResponse(): + link_state(), + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->link_state.serialize(outbuffer + offset); + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->link_state.deserialize(inbuffer + offset); + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return GETLINKSTATE; }; + const char * getMD5(){ return "8ba55ad34f9c072e75c0de57b089753b"; }; + + }; + + class GetLinkState { + public: + typedef GetLinkStateRequest Request; + typedef GetLinkStateResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetModelProperties.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetModelProperties.h new file mode 100644 index 0000000..082e688 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetModelProperties.h @@ -0,0 +1,322 @@ +#ifndef _ROS_SERVICE_GetModelProperties_h +#define _ROS_SERVICE_GetModelProperties_h +#include +#include +#include +#include "ros/msg.h" + +namespace gazebo_msgs +{ + +static const char GETMODELPROPERTIES[] = "gazebo_msgs/GetModelProperties"; + + class GetModelPropertiesRequest : public ros::Msg + { + public: + typedef const char* _model_name_type; + _model_name_type model_name; + + GetModelPropertiesRequest(): + model_name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_model_name = strlen(this->model_name); + varToArr(outbuffer + offset, length_model_name); + offset += 4; + memcpy(outbuffer + offset, this->model_name, length_model_name); + offset += length_model_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_model_name; + arrToVar(length_model_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_model_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_model_name-1]=0; + this->model_name = (char *)(inbuffer + offset-1); + offset += length_model_name; + return offset; + } + + const char * getType(){ return GETMODELPROPERTIES; }; + const char * getMD5(){ return "ea31c8eab6fc401383cf528a7c0984ba"; }; + + }; + + class GetModelPropertiesResponse : public ros::Msg + { + public: + typedef const char* _parent_model_name_type; + _parent_model_name_type parent_model_name; + typedef const char* _canonical_body_name_type; + _canonical_body_name_type canonical_body_name; + uint32_t body_names_length; + typedef char* _body_names_type; + _body_names_type st_body_names; + _body_names_type * body_names; + uint32_t geom_names_length; + typedef char* _geom_names_type; + _geom_names_type st_geom_names; + _geom_names_type * geom_names; + uint32_t joint_names_length; + typedef char* _joint_names_type; + _joint_names_type st_joint_names; + _joint_names_type * joint_names; + uint32_t child_model_names_length; + typedef char* _child_model_names_type; + _child_model_names_type st_child_model_names; + _child_model_names_type * child_model_names; + typedef bool _is_static_type; + _is_static_type is_static; + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + GetModelPropertiesResponse(): + parent_model_name(""), + canonical_body_name(""), + body_names_length(0), body_names(NULL), + geom_names_length(0), geom_names(NULL), + joint_names_length(0), joint_names(NULL), + child_model_names_length(0), child_model_names(NULL), + is_static(0), + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_parent_model_name = strlen(this->parent_model_name); + varToArr(outbuffer + offset, length_parent_model_name); + offset += 4; + memcpy(outbuffer + offset, this->parent_model_name, length_parent_model_name); + offset += length_parent_model_name; + uint32_t length_canonical_body_name = strlen(this->canonical_body_name); + varToArr(outbuffer + offset, length_canonical_body_name); + offset += 4; + memcpy(outbuffer + offset, this->canonical_body_name, length_canonical_body_name); + offset += length_canonical_body_name; + *(outbuffer + offset + 0) = (this->body_names_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->body_names_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->body_names_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->body_names_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->body_names_length); + for( uint32_t i = 0; i < body_names_length; i++){ + uint32_t length_body_namesi = strlen(this->body_names[i]); + varToArr(outbuffer + offset, length_body_namesi); + offset += 4; + memcpy(outbuffer + offset, this->body_names[i], length_body_namesi); + offset += length_body_namesi; + } + *(outbuffer + offset + 0) = (this->geom_names_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->geom_names_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->geom_names_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->geom_names_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->geom_names_length); + for( uint32_t i = 0; i < geom_names_length; i++){ + uint32_t length_geom_namesi = strlen(this->geom_names[i]); + varToArr(outbuffer + offset, length_geom_namesi); + offset += 4; + memcpy(outbuffer + offset, this->geom_names[i], length_geom_namesi); + offset += length_geom_namesi; + } + *(outbuffer + offset + 0) = (this->joint_names_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->joint_names_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->joint_names_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->joint_names_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->joint_names_length); + for( uint32_t i = 0; i < joint_names_length; i++){ + uint32_t length_joint_namesi = strlen(this->joint_names[i]); + varToArr(outbuffer + offset, length_joint_namesi); + offset += 4; + memcpy(outbuffer + offset, this->joint_names[i], length_joint_namesi); + offset += length_joint_namesi; + } + *(outbuffer + offset + 0) = (this->child_model_names_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->child_model_names_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->child_model_names_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->child_model_names_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->child_model_names_length); + for( uint32_t i = 0; i < child_model_names_length; i++){ + uint32_t length_child_model_namesi = strlen(this->child_model_names[i]); + varToArr(outbuffer + offset, length_child_model_namesi); + offset += 4; + memcpy(outbuffer + offset, this->child_model_names[i], length_child_model_namesi); + offset += length_child_model_namesi; + } + union { + bool real; + uint8_t base; + } u_is_static; + u_is_static.real = this->is_static; + *(outbuffer + offset + 0) = (u_is_static.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->is_static); + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_parent_model_name; + arrToVar(length_parent_model_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_parent_model_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_parent_model_name-1]=0; + this->parent_model_name = (char *)(inbuffer + offset-1); + offset += length_parent_model_name; + uint32_t length_canonical_body_name; + arrToVar(length_canonical_body_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_canonical_body_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_canonical_body_name-1]=0; + this->canonical_body_name = (char *)(inbuffer + offset-1); + offset += length_canonical_body_name; + uint32_t body_names_lengthT = ((uint32_t) (*(inbuffer + offset))); + body_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + body_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + body_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->body_names_length); + if(body_names_lengthT > body_names_length) + this->body_names = (char**)realloc(this->body_names, body_names_lengthT * sizeof(char*)); + body_names_length = body_names_lengthT; + for( uint32_t i = 0; i < body_names_length; i++){ + uint32_t length_st_body_names; + arrToVar(length_st_body_names, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_body_names; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_body_names-1]=0; + this->st_body_names = (char *)(inbuffer + offset-1); + offset += length_st_body_names; + memcpy( &(this->body_names[i]), &(this->st_body_names), sizeof(char*)); + } + uint32_t geom_names_lengthT = ((uint32_t) (*(inbuffer + offset))); + geom_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + geom_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + geom_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->geom_names_length); + if(geom_names_lengthT > geom_names_length) + this->geom_names = (char**)realloc(this->geom_names, geom_names_lengthT * sizeof(char*)); + geom_names_length = geom_names_lengthT; + for( uint32_t i = 0; i < geom_names_length; i++){ + uint32_t length_st_geom_names; + arrToVar(length_st_geom_names, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_geom_names; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_geom_names-1]=0; + this->st_geom_names = (char *)(inbuffer + offset-1); + offset += length_st_geom_names; + memcpy( &(this->geom_names[i]), &(this->st_geom_names), sizeof(char*)); + } + uint32_t joint_names_lengthT = ((uint32_t) (*(inbuffer + offset))); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->joint_names_length); + if(joint_names_lengthT > joint_names_length) + this->joint_names = (char**)realloc(this->joint_names, joint_names_lengthT * sizeof(char*)); + joint_names_length = joint_names_lengthT; + for( uint32_t i = 0; i < joint_names_length; i++){ + uint32_t length_st_joint_names; + arrToVar(length_st_joint_names, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_joint_names; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_joint_names-1]=0; + this->st_joint_names = (char *)(inbuffer + offset-1); + offset += length_st_joint_names; + memcpy( &(this->joint_names[i]), &(this->st_joint_names), sizeof(char*)); + } + uint32_t child_model_names_lengthT = ((uint32_t) (*(inbuffer + offset))); + child_model_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + child_model_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + child_model_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->child_model_names_length); + if(child_model_names_lengthT > child_model_names_length) + this->child_model_names = (char**)realloc(this->child_model_names, child_model_names_lengthT * sizeof(char*)); + child_model_names_length = child_model_names_lengthT; + for( uint32_t i = 0; i < child_model_names_length; i++){ + uint32_t length_st_child_model_names; + arrToVar(length_st_child_model_names, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_child_model_names; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_child_model_names-1]=0; + this->st_child_model_names = (char *)(inbuffer + offset-1); + offset += length_st_child_model_names; + memcpy( &(this->child_model_names[i]), &(this->st_child_model_names), sizeof(char*)); + } + union { + bool real; + uint8_t base; + } u_is_static; + u_is_static.base = 0; + u_is_static.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->is_static = u_is_static.real; + offset += sizeof(this->is_static); + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return GETMODELPROPERTIES; }; + const char * getMD5(){ return "b7f370938ef77b464b95f1bab3ec5028"; }; + + }; + + class GetModelProperties { + public: + typedef GetModelPropertiesRequest Request; + typedef GetModelPropertiesResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetModelState.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetModelState.h new file mode 100644 index 0000000..0dbcc81 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetModelState.h @@ -0,0 +1,157 @@ +#ifndef _ROS_SERVICE_GetModelState_h +#define _ROS_SERVICE_GetModelState_h +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Pose.h" +#include "geometry_msgs/Twist.h" +#include "std_msgs/Header.h" + +namespace gazebo_msgs +{ + +static const char GETMODELSTATE[] = "gazebo_msgs/GetModelState"; + + class GetModelStateRequest : public ros::Msg + { + public: + typedef const char* _model_name_type; + _model_name_type model_name; + typedef const char* _relative_entity_name_type; + _relative_entity_name_type relative_entity_name; + + GetModelStateRequest(): + model_name(""), + relative_entity_name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_model_name = strlen(this->model_name); + varToArr(outbuffer + offset, length_model_name); + offset += 4; + memcpy(outbuffer + offset, this->model_name, length_model_name); + offset += length_model_name; + uint32_t length_relative_entity_name = strlen(this->relative_entity_name); + varToArr(outbuffer + offset, length_relative_entity_name); + offset += 4; + memcpy(outbuffer + offset, this->relative_entity_name, length_relative_entity_name); + offset += length_relative_entity_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_model_name; + arrToVar(length_model_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_model_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_model_name-1]=0; + this->model_name = (char *)(inbuffer + offset-1); + offset += length_model_name; + uint32_t length_relative_entity_name; + arrToVar(length_relative_entity_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_relative_entity_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_relative_entity_name-1]=0; + this->relative_entity_name = (char *)(inbuffer + offset-1); + offset += length_relative_entity_name; + return offset; + } + + const char * getType(){ return GETMODELSTATE; }; + const char * getMD5(){ return "19d412713cefe4a67437e17a951e759e"; }; + + }; + + class GetModelStateResponse : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::Pose _pose_type; + _pose_type pose; + typedef geometry_msgs::Twist _twist_type; + _twist_type twist; + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + GetModelStateResponse(): + header(), + pose(), + twist(), + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->pose.serialize(outbuffer + offset); + offset += this->twist.serialize(outbuffer + offset); + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->pose.deserialize(inbuffer + offset); + offset += this->twist.deserialize(inbuffer + offset); + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return GETMODELSTATE; }; + const char * getMD5(){ return "ccd51739bb00f0141629e87b792e92b9"; }; + + }; + + class GetModelState { + public: + typedef GetModelStateRequest Request; + typedef GetModelStateResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetPhysicsProperties.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetPhysicsProperties.h new file mode 100644 index 0000000..f79bc89 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetPhysicsProperties.h @@ -0,0 +1,199 @@ +#ifndef _ROS_SERVICE_GetPhysicsProperties_h +#define _ROS_SERVICE_GetPhysicsProperties_h +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Vector3.h" +#include "gazebo_msgs/ODEPhysics.h" + +namespace gazebo_msgs +{ + +static const char GETPHYSICSPROPERTIES[] = "gazebo_msgs/GetPhysicsProperties"; + + class GetPhysicsPropertiesRequest : public ros::Msg + { + public: + + GetPhysicsPropertiesRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return GETPHYSICSPROPERTIES; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class GetPhysicsPropertiesResponse : public ros::Msg + { + public: + typedef double _time_step_type; + _time_step_type time_step; + typedef bool _pause_type; + _pause_type pause; + typedef double _max_update_rate_type; + _max_update_rate_type max_update_rate; + typedef geometry_msgs::Vector3 _gravity_type; + _gravity_type gravity; + typedef gazebo_msgs::ODEPhysics _ode_config_type; + _ode_config_type ode_config; + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + GetPhysicsPropertiesResponse(): + time_step(0), + pause(0), + max_update_rate(0), + gravity(), + ode_config(), + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_time_step; + u_time_step.real = this->time_step; + *(outbuffer + offset + 0) = (u_time_step.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_time_step.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_time_step.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_time_step.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_time_step.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_time_step.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_time_step.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_time_step.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->time_step); + union { + bool real; + uint8_t base; + } u_pause; + u_pause.real = this->pause; + *(outbuffer + offset + 0) = (u_pause.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->pause); + union { + double real; + uint64_t base; + } u_max_update_rate; + u_max_update_rate.real = this->max_update_rate; + *(outbuffer + offset + 0) = (u_max_update_rate.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_max_update_rate.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_max_update_rate.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_max_update_rate.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_max_update_rate.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_max_update_rate.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_max_update_rate.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_max_update_rate.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->max_update_rate); + offset += this->gravity.serialize(outbuffer + offset); + offset += this->ode_config.serialize(outbuffer + offset); + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_time_step; + u_time_step.base = 0; + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->time_step = u_time_step.real; + offset += sizeof(this->time_step); + union { + bool real; + uint8_t base; + } u_pause; + u_pause.base = 0; + u_pause.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->pause = u_pause.real; + offset += sizeof(this->pause); + union { + double real; + uint64_t base; + } u_max_update_rate; + u_max_update_rate.base = 0; + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->max_update_rate = u_max_update_rate.real; + offset += sizeof(this->max_update_rate); + offset += this->gravity.deserialize(inbuffer + offset); + offset += this->ode_config.deserialize(inbuffer + offset); + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return GETPHYSICSPROPERTIES; }; + const char * getMD5(){ return "575a5e74786981b7df2e3afc567693a6"; }; + + }; + + class GetPhysicsProperties { + public: + typedef GetPhysicsPropertiesRequest Request; + typedef GetPhysicsPropertiesResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetWorldProperties.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetWorldProperties.h new file mode 100644 index 0000000..e9170e7 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/GetWorldProperties.h @@ -0,0 +1,192 @@ +#ifndef _ROS_SERVICE_GetWorldProperties_h +#define _ROS_SERVICE_GetWorldProperties_h +#include +#include +#include +#include "ros/msg.h" + +namespace gazebo_msgs +{ + +static const char GETWORLDPROPERTIES[] = "gazebo_msgs/GetWorldProperties"; + + class GetWorldPropertiesRequest : public ros::Msg + { + public: + + GetWorldPropertiesRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return GETWORLDPROPERTIES; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class GetWorldPropertiesResponse : public ros::Msg + { + public: + typedef double _sim_time_type; + _sim_time_type sim_time; + uint32_t model_names_length; + typedef char* _model_names_type; + _model_names_type st_model_names; + _model_names_type * model_names; + typedef bool _rendering_enabled_type; + _rendering_enabled_type rendering_enabled; + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + GetWorldPropertiesResponse(): + sim_time(0), + model_names_length(0), model_names(NULL), + rendering_enabled(0), + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_sim_time; + u_sim_time.real = this->sim_time; + *(outbuffer + offset + 0) = (u_sim_time.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_sim_time.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_sim_time.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_sim_time.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_sim_time.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_sim_time.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_sim_time.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_sim_time.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->sim_time); + *(outbuffer + offset + 0) = (this->model_names_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->model_names_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->model_names_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->model_names_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->model_names_length); + for( uint32_t i = 0; i < model_names_length; i++){ + uint32_t length_model_namesi = strlen(this->model_names[i]); + varToArr(outbuffer + offset, length_model_namesi); + offset += 4; + memcpy(outbuffer + offset, this->model_names[i], length_model_namesi); + offset += length_model_namesi; + } + union { + bool real; + uint8_t base; + } u_rendering_enabled; + u_rendering_enabled.real = this->rendering_enabled; + *(outbuffer + offset + 0) = (u_rendering_enabled.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->rendering_enabled); + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_sim_time; + u_sim_time.base = 0; + u_sim_time.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_sim_time.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_sim_time.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_sim_time.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_sim_time.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_sim_time.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_sim_time.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_sim_time.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->sim_time = u_sim_time.real; + offset += sizeof(this->sim_time); + uint32_t model_names_lengthT = ((uint32_t) (*(inbuffer + offset))); + model_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + model_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + model_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->model_names_length); + if(model_names_lengthT > model_names_length) + this->model_names = (char**)realloc(this->model_names, model_names_lengthT * sizeof(char*)); + model_names_length = model_names_lengthT; + for( uint32_t i = 0; i < model_names_length; i++){ + uint32_t length_st_model_names; + arrToVar(length_st_model_names, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_model_names; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_model_names-1]=0; + this->st_model_names = (char *)(inbuffer + offset-1); + offset += length_st_model_names; + memcpy( &(this->model_names[i]), &(this->st_model_names), sizeof(char*)); + } + union { + bool real; + uint8_t base; + } u_rendering_enabled; + u_rendering_enabled.base = 0; + u_rendering_enabled.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->rendering_enabled = u_rendering_enabled.real; + offset += sizeof(this->rendering_enabled); + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return GETWORLDPROPERTIES; }; + const char * getMD5(){ return "36bb0f2eccf4d8be971410c22818ba3f"; }; + + }; + + class GetWorldProperties { + public: + typedef GetWorldPropertiesRequest Request; + typedef GetWorldPropertiesResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/JointRequest.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/JointRequest.h new file mode 100644 index 0000000..6c2c13e --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/JointRequest.h @@ -0,0 +1,87 @@ +#ifndef _ROS_SERVICE_JointRequest_h +#define _ROS_SERVICE_JointRequest_h +#include +#include +#include +#include "ros/msg.h" + +namespace gazebo_msgs +{ + +static const char JOINTREQUEST[] = "gazebo_msgs/JointRequest"; + + class JointRequestRequest : public ros::Msg + { + public: + typedef const char* _joint_name_type; + _joint_name_type joint_name; + + JointRequestRequest(): + joint_name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_joint_name = strlen(this->joint_name); + varToArr(outbuffer + offset, length_joint_name); + offset += 4; + memcpy(outbuffer + offset, this->joint_name, length_joint_name); + offset += length_joint_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_joint_name; + arrToVar(length_joint_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_joint_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_joint_name-1]=0; + this->joint_name = (char *)(inbuffer + offset-1); + offset += length_joint_name; + return offset; + } + + const char * getType(){ return JOINTREQUEST; }; + const char * getMD5(){ return "0be1351618e1dc030eb7959d9a4902de"; }; + + }; + + class JointRequestResponse : public ros::Msg + { + public: + + JointRequestResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return JOINTREQUEST; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class JointRequest { + public: + typedef JointRequestRequest Request; + typedef JointRequestResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/LinkState.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/LinkState.h new file mode 100644 index 0000000..cd2684b --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/LinkState.h @@ -0,0 +1,84 @@ +#ifndef _ROS_gazebo_msgs_LinkState_h +#define _ROS_gazebo_msgs_LinkState_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Pose.h" +#include "geometry_msgs/Twist.h" + +namespace gazebo_msgs +{ + + class LinkState : public ros::Msg + { + public: + typedef const char* _link_name_type; + _link_name_type link_name; + typedef geometry_msgs::Pose _pose_type; + _pose_type pose; + typedef geometry_msgs::Twist _twist_type; + _twist_type twist; + typedef const char* _reference_frame_type; + _reference_frame_type reference_frame; + + LinkState(): + link_name(""), + pose(), + twist(), + reference_frame("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_link_name = strlen(this->link_name); + varToArr(outbuffer + offset, length_link_name); + offset += 4; + memcpy(outbuffer + offset, this->link_name, length_link_name); + offset += length_link_name; + offset += this->pose.serialize(outbuffer + offset); + offset += this->twist.serialize(outbuffer + offset); + uint32_t length_reference_frame = strlen(this->reference_frame); + varToArr(outbuffer + offset, length_reference_frame); + offset += 4; + memcpy(outbuffer + offset, this->reference_frame, length_reference_frame); + offset += length_reference_frame; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_link_name; + arrToVar(length_link_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_link_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_link_name-1]=0; + this->link_name = (char *)(inbuffer + offset-1); + offset += length_link_name; + offset += this->pose.deserialize(inbuffer + offset); + offset += this->twist.deserialize(inbuffer + offset); + uint32_t length_reference_frame; + arrToVar(length_reference_frame, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_reference_frame; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_reference_frame-1]=0; + this->reference_frame = (char *)(inbuffer + offset-1); + offset += length_reference_frame; + return offset; + } + + const char * getType(){ return "gazebo_msgs/LinkState"; }; + const char * getMD5(){ return "0818ebbf28ce3a08d48ab1eaa7309ebe"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/LinkStates.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/LinkStates.h new file mode 100644 index 0000000..8ec738d --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/LinkStates.h @@ -0,0 +1,127 @@ +#ifndef _ROS_gazebo_msgs_LinkStates_h +#define _ROS_gazebo_msgs_LinkStates_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Pose.h" +#include "geometry_msgs/Twist.h" + +namespace gazebo_msgs +{ + + class LinkStates : public ros::Msg + { + public: + uint32_t name_length; + typedef char* _name_type; + _name_type st_name; + _name_type * name; + uint32_t pose_length; + typedef geometry_msgs::Pose _pose_type; + _pose_type st_pose; + _pose_type * pose; + uint32_t twist_length; + typedef geometry_msgs::Twist _twist_type; + _twist_type st_twist; + _twist_type * twist; + + LinkStates(): + name_length(0), name(NULL), + pose_length(0), pose(NULL), + twist_length(0), twist(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->name_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->name_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->name_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->name_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->name_length); + for( uint32_t i = 0; i < name_length; i++){ + uint32_t length_namei = strlen(this->name[i]); + varToArr(outbuffer + offset, length_namei); + offset += 4; + memcpy(outbuffer + offset, this->name[i], length_namei); + offset += length_namei; + } + *(outbuffer + offset + 0) = (this->pose_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->pose_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->pose_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->pose_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->pose_length); + for( uint32_t i = 0; i < pose_length; i++){ + offset += this->pose[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->twist_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->twist_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->twist_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->twist_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->twist_length); + for( uint32_t i = 0; i < twist_length; i++){ + offset += this->twist[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t name_lengthT = ((uint32_t) (*(inbuffer + offset))); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->name_length); + if(name_lengthT > name_length) + this->name = (char**)realloc(this->name, name_lengthT * sizeof(char*)); + name_length = name_lengthT; + for( uint32_t i = 0; i < name_length; i++){ + uint32_t length_st_name; + arrToVar(length_st_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_name-1]=0; + this->st_name = (char *)(inbuffer + offset-1); + offset += length_st_name; + memcpy( &(this->name[i]), &(this->st_name), sizeof(char*)); + } + uint32_t pose_lengthT = ((uint32_t) (*(inbuffer + offset))); + pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->pose_length); + if(pose_lengthT > pose_length) + this->pose = (geometry_msgs::Pose*)realloc(this->pose, pose_lengthT * sizeof(geometry_msgs::Pose)); + pose_length = pose_lengthT; + for( uint32_t i = 0; i < pose_length; i++){ + offset += this->st_pose.deserialize(inbuffer + offset); + memcpy( &(this->pose[i]), &(this->st_pose), sizeof(geometry_msgs::Pose)); + } + uint32_t twist_lengthT = ((uint32_t) (*(inbuffer + offset))); + twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->twist_length); + if(twist_lengthT > twist_length) + this->twist = (geometry_msgs::Twist*)realloc(this->twist, twist_lengthT * sizeof(geometry_msgs::Twist)); + twist_length = twist_lengthT; + for( uint32_t i = 0; i < twist_length; i++){ + offset += this->st_twist.deserialize(inbuffer + offset); + memcpy( &(this->twist[i]), &(this->st_twist), sizeof(geometry_msgs::Twist)); + } + return offset; + } + + const char * getType(){ return "gazebo_msgs/LinkStates"; }; + const char * getMD5(){ return "48c080191eb15c41858319b4d8a609c2"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/ModelState.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/ModelState.h new file mode 100644 index 0000000..4a3cfd1 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/ModelState.h @@ -0,0 +1,84 @@ +#ifndef _ROS_gazebo_msgs_ModelState_h +#define _ROS_gazebo_msgs_ModelState_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Pose.h" +#include "geometry_msgs/Twist.h" + +namespace gazebo_msgs +{ + + class ModelState : public ros::Msg + { + public: + typedef const char* _model_name_type; + _model_name_type model_name; + typedef geometry_msgs::Pose _pose_type; + _pose_type pose; + typedef geometry_msgs::Twist _twist_type; + _twist_type twist; + typedef const char* _reference_frame_type; + _reference_frame_type reference_frame; + + ModelState(): + model_name(""), + pose(), + twist(), + reference_frame("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_model_name = strlen(this->model_name); + varToArr(outbuffer + offset, length_model_name); + offset += 4; + memcpy(outbuffer + offset, this->model_name, length_model_name); + offset += length_model_name; + offset += this->pose.serialize(outbuffer + offset); + offset += this->twist.serialize(outbuffer + offset); + uint32_t length_reference_frame = strlen(this->reference_frame); + varToArr(outbuffer + offset, length_reference_frame); + offset += 4; + memcpy(outbuffer + offset, this->reference_frame, length_reference_frame); + offset += length_reference_frame; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_model_name; + arrToVar(length_model_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_model_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_model_name-1]=0; + this->model_name = (char *)(inbuffer + offset-1); + offset += length_model_name; + offset += this->pose.deserialize(inbuffer + offset); + offset += this->twist.deserialize(inbuffer + offset); + uint32_t length_reference_frame; + arrToVar(length_reference_frame, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_reference_frame; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_reference_frame-1]=0; + this->reference_frame = (char *)(inbuffer + offset-1); + offset += length_reference_frame; + return offset; + } + + const char * getType(){ return "gazebo_msgs/ModelState"; }; + const char * getMD5(){ return "9330fd35f2fcd82d457e54bd54e10593"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/ModelStates.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/ModelStates.h new file mode 100644 index 0000000..f6c66d5 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/ModelStates.h @@ -0,0 +1,127 @@ +#ifndef _ROS_gazebo_msgs_ModelStates_h +#define _ROS_gazebo_msgs_ModelStates_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Pose.h" +#include "geometry_msgs/Twist.h" + +namespace gazebo_msgs +{ + + class ModelStates : public ros::Msg + { + public: + uint32_t name_length; + typedef char* _name_type; + _name_type st_name; + _name_type * name; + uint32_t pose_length; + typedef geometry_msgs::Pose _pose_type; + _pose_type st_pose; + _pose_type * pose; + uint32_t twist_length; + typedef geometry_msgs::Twist _twist_type; + _twist_type st_twist; + _twist_type * twist; + + ModelStates(): + name_length(0), name(NULL), + pose_length(0), pose(NULL), + twist_length(0), twist(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->name_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->name_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->name_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->name_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->name_length); + for( uint32_t i = 0; i < name_length; i++){ + uint32_t length_namei = strlen(this->name[i]); + varToArr(outbuffer + offset, length_namei); + offset += 4; + memcpy(outbuffer + offset, this->name[i], length_namei); + offset += length_namei; + } + *(outbuffer + offset + 0) = (this->pose_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->pose_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->pose_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->pose_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->pose_length); + for( uint32_t i = 0; i < pose_length; i++){ + offset += this->pose[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->twist_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->twist_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->twist_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->twist_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->twist_length); + for( uint32_t i = 0; i < twist_length; i++){ + offset += this->twist[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t name_lengthT = ((uint32_t) (*(inbuffer + offset))); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->name_length); + if(name_lengthT > name_length) + this->name = (char**)realloc(this->name, name_lengthT * sizeof(char*)); + name_length = name_lengthT; + for( uint32_t i = 0; i < name_length; i++){ + uint32_t length_st_name; + arrToVar(length_st_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_name-1]=0; + this->st_name = (char *)(inbuffer + offset-1); + offset += length_st_name; + memcpy( &(this->name[i]), &(this->st_name), sizeof(char*)); + } + uint32_t pose_lengthT = ((uint32_t) (*(inbuffer + offset))); + pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->pose_length); + if(pose_lengthT > pose_length) + this->pose = (geometry_msgs::Pose*)realloc(this->pose, pose_lengthT * sizeof(geometry_msgs::Pose)); + pose_length = pose_lengthT; + for( uint32_t i = 0; i < pose_length; i++){ + offset += this->st_pose.deserialize(inbuffer + offset); + memcpy( &(this->pose[i]), &(this->st_pose), sizeof(geometry_msgs::Pose)); + } + uint32_t twist_lengthT = ((uint32_t) (*(inbuffer + offset))); + twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->twist_length); + if(twist_lengthT > twist_length) + this->twist = (geometry_msgs::Twist*)realloc(this->twist, twist_lengthT * sizeof(geometry_msgs::Twist)); + twist_length = twist_lengthT; + for( uint32_t i = 0; i < twist_length; i++){ + offset += this->st_twist.deserialize(inbuffer + offset); + memcpy( &(this->twist[i]), &(this->st_twist), sizeof(geometry_msgs::Twist)); + } + return offset; + } + + const char * getType(){ return "gazebo_msgs/ModelStates"; }; + const char * getMD5(){ return "48c080191eb15c41858319b4d8a609c2"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/ODEJointProperties.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/ODEJointProperties.h new file mode 100644 index 0000000..c3fba20 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/ODEJointProperties.h @@ -0,0 +1,558 @@ +#ifndef _ROS_gazebo_msgs_ODEJointProperties_h +#define _ROS_gazebo_msgs_ODEJointProperties_h + +#include +#include +#include +#include "ros/msg.h" + +namespace gazebo_msgs +{ + + class ODEJointProperties : public ros::Msg + { + public: + uint32_t damping_length; + typedef double _damping_type; + _damping_type st_damping; + _damping_type * damping; + uint32_t hiStop_length; + typedef double _hiStop_type; + _hiStop_type st_hiStop; + _hiStop_type * hiStop; + uint32_t loStop_length; + typedef double _loStop_type; + _loStop_type st_loStop; + _loStop_type * loStop; + uint32_t erp_length; + typedef double _erp_type; + _erp_type st_erp; + _erp_type * erp; + uint32_t cfm_length; + typedef double _cfm_type; + _cfm_type st_cfm; + _cfm_type * cfm; + uint32_t stop_erp_length; + typedef double _stop_erp_type; + _stop_erp_type st_stop_erp; + _stop_erp_type * stop_erp; + uint32_t stop_cfm_length; + typedef double _stop_cfm_type; + _stop_cfm_type st_stop_cfm; + _stop_cfm_type * stop_cfm; + uint32_t fudge_factor_length; + typedef double _fudge_factor_type; + _fudge_factor_type st_fudge_factor; + _fudge_factor_type * fudge_factor; + uint32_t fmax_length; + typedef double _fmax_type; + _fmax_type st_fmax; + _fmax_type * fmax; + uint32_t vel_length; + typedef double _vel_type; + _vel_type st_vel; + _vel_type * vel; + + ODEJointProperties(): + damping_length(0), damping(NULL), + hiStop_length(0), hiStop(NULL), + loStop_length(0), loStop(NULL), + erp_length(0), erp(NULL), + cfm_length(0), cfm(NULL), + stop_erp_length(0), stop_erp(NULL), + stop_cfm_length(0), stop_cfm(NULL), + fudge_factor_length(0), fudge_factor(NULL), + fmax_length(0), fmax(NULL), + vel_length(0), vel(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->damping_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->damping_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->damping_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->damping_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->damping_length); + for( uint32_t i = 0; i < damping_length; i++){ + union { + double real; + uint64_t base; + } u_dampingi; + u_dampingi.real = this->damping[i]; + *(outbuffer + offset + 0) = (u_dampingi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_dampingi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_dampingi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_dampingi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_dampingi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_dampingi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_dampingi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_dampingi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->damping[i]); + } + *(outbuffer + offset + 0) = (this->hiStop_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->hiStop_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->hiStop_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->hiStop_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->hiStop_length); + for( uint32_t i = 0; i < hiStop_length; i++){ + union { + double real; + uint64_t base; + } u_hiStopi; + u_hiStopi.real = this->hiStop[i]; + *(outbuffer + offset + 0) = (u_hiStopi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_hiStopi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_hiStopi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_hiStopi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_hiStopi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_hiStopi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_hiStopi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_hiStopi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->hiStop[i]); + } + *(outbuffer + offset + 0) = (this->loStop_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->loStop_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->loStop_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->loStop_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->loStop_length); + for( uint32_t i = 0; i < loStop_length; i++){ + union { + double real; + uint64_t base; + } u_loStopi; + u_loStopi.real = this->loStop[i]; + *(outbuffer + offset + 0) = (u_loStopi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_loStopi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_loStopi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_loStopi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_loStopi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_loStopi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_loStopi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_loStopi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->loStop[i]); + } + *(outbuffer + offset + 0) = (this->erp_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->erp_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->erp_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->erp_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->erp_length); + for( uint32_t i = 0; i < erp_length; i++){ + union { + double real; + uint64_t base; + } u_erpi; + u_erpi.real = this->erp[i]; + *(outbuffer + offset + 0) = (u_erpi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_erpi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_erpi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_erpi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_erpi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_erpi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_erpi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_erpi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->erp[i]); + } + *(outbuffer + offset + 0) = (this->cfm_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->cfm_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->cfm_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->cfm_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->cfm_length); + for( uint32_t i = 0; i < cfm_length; i++){ + union { + double real; + uint64_t base; + } u_cfmi; + u_cfmi.real = this->cfm[i]; + *(outbuffer + offset + 0) = (u_cfmi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_cfmi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_cfmi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_cfmi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_cfmi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_cfmi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_cfmi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_cfmi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->cfm[i]); + } + *(outbuffer + offset + 0) = (this->stop_erp_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stop_erp_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stop_erp_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stop_erp_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->stop_erp_length); + for( uint32_t i = 0; i < stop_erp_length; i++){ + union { + double real; + uint64_t base; + } u_stop_erpi; + u_stop_erpi.real = this->stop_erp[i]; + *(outbuffer + offset + 0) = (u_stop_erpi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_stop_erpi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_stop_erpi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_stop_erpi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_stop_erpi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_stop_erpi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_stop_erpi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_stop_erpi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->stop_erp[i]); + } + *(outbuffer + offset + 0) = (this->stop_cfm_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stop_cfm_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stop_cfm_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stop_cfm_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->stop_cfm_length); + for( uint32_t i = 0; i < stop_cfm_length; i++){ + union { + double real; + uint64_t base; + } u_stop_cfmi; + u_stop_cfmi.real = this->stop_cfm[i]; + *(outbuffer + offset + 0) = (u_stop_cfmi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_stop_cfmi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_stop_cfmi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_stop_cfmi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_stop_cfmi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_stop_cfmi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_stop_cfmi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_stop_cfmi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->stop_cfm[i]); + } + *(outbuffer + offset + 0) = (this->fudge_factor_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->fudge_factor_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->fudge_factor_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->fudge_factor_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->fudge_factor_length); + for( uint32_t i = 0; i < fudge_factor_length; i++){ + union { + double real; + uint64_t base; + } u_fudge_factori; + u_fudge_factori.real = this->fudge_factor[i]; + *(outbuffer + offset + 0) = (u_fudge_factori.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_fudge_factori.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_fudge_factori.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_fudge_factori.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_fudge_factori.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_fudge_factori.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_fudge_factori.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_fudge_factori.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->fudge_factor[i]); + } + *(outbuffer + offset + 0) = (this->fmax_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->fmax_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->fmax_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->fmax_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->fmax_length); + for( uint32_t i = 0; i < fmax_length; i++){ + union { + double real; + uint64_t base; + } u_fmaxi; + u_fmaxi.real = this->fmax[i]; + *(outbuffer + offset + 0) = (u_fmaxi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_fmaxi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_fmaxi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_fmaxi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_fmaxi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_fmaxi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_fmaxi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_fmaxi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->fmax[i]); + } + *(outbuffer + offset + 0) = (this->vel_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->vel_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->vel_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->vel_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->vel_length); + for( uint32_t i = 0; i < vel_length; i++){ + union { + double real; + uint64_t base; + } u_veli; + u_veli.real = this->vel[i]; + *(outbuffer + offset + 0) = (u_veli.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_veli.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_veli.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_veli.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_veli.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_veli.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_veli.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_veli.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->vel[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t damping_lengthT = ((uint32_t) (*(inbuffer + offset))); + damping_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + damping_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + damping_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->damping_length); + if(damping_lengthT > damping_length) + this->damping = (double*)realloc(this->damping, damping_lengthT * sizeof(double)); + damping_length = damping_lengthT; + for( uint32_t i = 0; i < damping_length; i++){ + union { + double real; + uint64_t base; + } u_st_damping; + u_st_damping.base = 0; + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_damping = u_st_damping.real; + offset += sizeof(this->st_damping); + memcpy( &(this->damping[i]), &(this->st_damping), sizeof(double)); + } + uint32_t hiStop_lengthT = ((uint32_t) (*(inbuffer + offset))); + hiStop_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + hiStop_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + hiStop_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->hiStop_length); + if(hiStop_lengthT > hiStop_length) + this->hiStop = (double*)realloc(this->hiStop, hiStop_lengthT * sizeof(double)); + hiStop_length = hiStop_lengthT; + for( uint32_t i = 0; i < hiStop_length; i++){ + union { + double real; + uint64_t base; + } u_st_hiStop; + u_st_hiStop.base = 0; + u_st_hiStop.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_hiStop.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_hiStop.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_hiStop.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_hiStop.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_hiStop.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_hiStop.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_hiStop.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_hiStop = u_st_hiStop.real; + offset += sizeof(this->st_hiStop); + memcpy( &(this->hiStop[i]), &(this->st_hiStop), sizeof(double)); + } + uint32_t loStop_lengthT = ((uint32_t) (*(inbuffer + offset))); + loStop_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + loStop_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + loStop_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->loStop_length); + if(loStop_lengthT > loStop_length) + this->loStop = (double*)realloc(this->loStop, loStop_lengthT * sizeof(double)); + loStop_length = loStop_lengthT; + for( uint32_t i = 0; i < loStop_length; i++){ + union { + double real; + uint64_t base; + } u_st_loStop; + u_st_loStop.base = 0; + u_st_loStop.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_loStop.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_loStop.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_loStop.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_loStop.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_loStop.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_loStop.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_loStop.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_loStop = u_st_loStop.real; + offset += sizeof(this->st_loStop); + memcpy( &(this->loStop[i]), &(this->st_loStop), sizeof(double)); + } + uint32_t erp_lengthT = ((uint32_t) (*(inbuffer + offset))); + erp_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + erp_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + erp_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->erp_length); + if(erp_lengthT > erp_length) + this->erp = (double*)realloc(this->erp, erp_lengthT * sizeof(double)); + erp_length = erp_lengthT; + for( uint32_t i = 0; i < erp_length; i++){ + union { + double real; + uint64_t base; + } u_st_erp; + u_st_erp.base = 0; + u_st_erp.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_erp.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_erp.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_erp.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_erp.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_erp.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_erp.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_erp.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_erp = u_st_erp.real; + offset += sizeof(this->st_erp); + memcpy( &(this->erp[i]), &(this->st_erp), sizeof(double)); + } + uint32_t cfm_lengthT = ((uint32_t) (*(inbuffer + offset))); + cfm_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + cfm_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + cfm_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->cfm_length); + if(cfm_lengthT > cfm_length) + this->cfm = (double*)realloc(this->cfm, cfm_lengthT * sizeof(double)); + cfm_length = cfm_lengthT; + for( uint32_t i = 0; i < cfm_length; i++){ + union { + double real; + uint64_t base; + } u_st_cfm; + u_st_cfm.base = 0; + u_st_cfm.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_cfm.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_cfm.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_cfm.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_cfm.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_cfm.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_cfm.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_cfm.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_cfm = u_st_cfm.real; + offset += sizeof(this->st_cfm); + memcpy( &(this->cfm[i]), &(this->st_cfm), sizeof(double)); + } + uint32_t stop_erp_lengthT = ((uint32_t) (*(inbuffer + offset))); + stop_erp_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + stop_erp_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + stop_erp_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stop_erp_length); + if(stop_erp_lengthT > stop_erp_length) + this->stop_erp = (double*)realloc(this->stop_erp, stop_erp_lengthT * sizeof(double)); + stop_erp_length = stop_erp_lengthT; + for( uint32_t i = 0; i < stop_erp_length; i++){ + union { + double real; + uint64_t base; + } u_st_stop_erp; + u_st_stop_erp.base = 0; + u_st_stop_erp.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_stop_erp.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_stop_erp.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_stop_erp.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_stop_erp.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_stop_erp.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_stop_erp.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_stop_erp.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_stop_erp = u_st_stop_erp.real; + offset += sizeof(this->st_stop_erp); + memcpy( &(this->stop_erp[i]), &(this->st_stop_erp), sizeof(double)); + } + uint32_t stop_cfm_lengthT = ((uint32_t) (*(inbuffer + offset))); + stop_cfm_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + stop_cfm_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + stop_cfm_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stop_cfm_length); + if(stop_cfm_lengthT > stop_cfm_length) + this->stop_cfm = (double*)realloc(this->stop_cfm, stop_cfm_lengthT * sizeof(double)); + stop_cfm_length = stop_cfm_lengthT; + for( uint32_t i = 0; i < stop_cfm_length; i++){ + union { + double real; + uint64_t base; + } u_st_stop_cfm; + u_st_stop_cfm.base = 0; + u_st_stop_cfm.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_stop_cfm.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_stop_cfm.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_stop_cfm.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_stop_cfm.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_stop_cfm.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_stop_cfm.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_stop_cfm.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_stop_cfm = u_st_stop_cfm.real; + offset += sizeof(this->st_stop_cfm); + memcpy( &(this->stop_cfm[i]), &(this->st_stop_cfm), sizeof(double)); + } + uint32_t fudge_factor_lengthT = ((uint32_t) (*(inbuffer + offset))); + fudge_factor_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + fudge_factor_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + fudge_factor_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->fudge_factor_length); + if(fudge_factor_lengthT > fudge_factor_length) + this->fudge_factor = (double*)realloc(this->fudge_factor, fudge_factor_lengthT * sizeof(double)); + fudge_factor_length = fudge_factor_lengthT; + for( uint32_t i = 0; i < fudge_factor_length; i++){ + union { + double real; + uint64_t base; + } u_st_fudge_factor; + u_st_fudge_factor.base = 0; + u_st_fudge_factor.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_fudge_factor.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_fudge_factor.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_fudge_factor.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_fudge_factor.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_fudge_factor.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_fudge_factor.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_fudge_factor.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_fudge_factor = u_st_fudge_factor.real; + offset += sizeof(this->st_fudge_factor); + memcpy( &(this->fudge_factor[i]), &(this->st_fudge_factor), sizeof(double)); + } + uint32_t fmax_lengthT = ((uint32_t) (*(inbuffer + offset))); + fmax_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + fmax_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + fmax_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->fmax_length); + if(fmax_lengthT > fmax_length) + this->fmax = (double*)realloc(this->fmax, fmax_lengthT * sizeof(double)); + fmax_length = fmax_lengthT; + for( uint32_t i = 0; i < fmax_length; i++){ + union { + double real; + uint64_t base; + } u_st_fmax; + u_st_fmax.base = 0; + u_st_fmax.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_fmax.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_fmax.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_fmax.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_fmax.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_fmax.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_fmax.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_fmax.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_fmax = u_st_fmax.real; + offset += sizeof(this->st_fmax); + memcpy( &(this->fmax[i]), &(this->st_fmax), sizeof(double)); + } + uint32_t vel_lengthT = ((uint32_t) (*(inbuffer + offset))); + vel_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + vel_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + vel_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->vel_length); + if(vel_lengthT > vel_length) + this->vel = (double*)realloc(this->vel, vel_lengthT * sizeof(double)); + vel_length = vel_lengthT; + for( uint32_t i = 0; i < vel_length; i++){ + union { + double real; + uint64_t base; + } u_st_vel; + u_st_vel.base = 0; + u_st_vel.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_vel.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_vel.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_vel.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_vel.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_vel.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_vel.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_vel.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_vel = u_st_vel.real; + offset += sizeof(this->st_vel); + memcpy( &(this->vel[i]), &(this->st_vel), sizeof(double)); + } + return offset; + } + + const char * getType(){ return "gazebo_msgs/ODEJointProperties"; }; + const char * getMD5(){ return "1b744c32a920af979f53afe2f9c3511f"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/ODEPhysics.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/ODEPhysics.h new file mode 100644 index 0000000..dcb6038 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/ODEPhysics.h @@ -0,0 +1,287 @@ +#ifndef _ROS_gazebo_msgs_ODEPhysics_h +#define _ROS_gazebo_msgs_ODEPhysics_h + +#include +#include +#include +#include "ros/msg.h" + +namespace gazebo_msgs +{ + + class ODEPhysics : public ros::Msg + { + public: + typedef bool _auto_disable_bodies_type; + _auto_disable_bodies_type auto_disable_bodies; + typedef uint32_t _sor_pgs_precon_iters_type; + _sor_pgs_precon_iters_type sor_pgs_precon_iters; + typedef uint32_t _sor_pgs_iters_type; + _sor_pgs_iters_type sor_pgs_iters; + typedef double _sor_pgs_w_type; + _sor_pgs_w_type sor_pgs_w; + typedef double _sor_pgs_rms_error_tol_type; + _sor_pgs_rms_error_tol_type sor_pgs_rms_error_tol; + typedef double _contact_surface_layer_type; + _contact_surface_layer_type contact_surface_layer; + typedef double _contact_max_correcting_vel_type; + _contact_max_correcting_vel_type contact_max_correcting_vel; + typedef double _cfm_type; + _cfm_type cfm; + typedef double _erp_type; + _erp_type erp; + typedef uint32_t _max_contacts_type; + _max_contacts_type max_contacts; + + ODEPhysics(): + auto_disable_bodies(0), + sor_pgs_precon_iters(0), + sor_pgs_iters(0), + sor_pgs_w(0), + sor_pgs_rms_error_tol(0), + contact_surface_layer(0), + contact_max_correcting_vel(0), + cfm(0), + erp(0), + max_contacts(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_auto_disable_bodies; + u_auto_disable_bodies.real = this->auto_disable_bodies; + *(outbuffer + offset + 0) = (u_auto_disable_bodies.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->auto_disable_bodies); + *(outbuffer + offset + 0) = (this->sor_pgs_precon_iters >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->sor_pgs_precon_iters >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->sor_pgs_precon_iters >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->sor_pgs_precon_iters >> (8 * 3)) & 0xFF; + offset += sizeof(this->sor_pgs_precon_iters); + *(outbuffer + offset + 0) = (this->sor_pgs_iters >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->sor_pgs_iters >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->sor_pgs_iters >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->sor_pgs_iters >> (8 * 3)) & 0xFF; + offset += sizeof(this->sor_pgs_iters); + union { + double real; + uint64_t base; + } u_sor_pgs_w; + u_sor_pgs_w.real = this->sor_pgs_w; + *(outbuffer + offset + 0) = (u_sor_pgs_w.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_sor_pgs_w.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_sor_pgs_w.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_sor_pgs_w.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_sor_pgs_w.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_sor_pgs_w.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_sor_pgs_w.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_sor_pgs_w.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->sor_pgs_w); + union { + double real; + uint64_t base; + } u_sor_pgs_rms_error_tol; + u_sor_pgs_rms_error_tol.real = this->sor_pgs_rms_error_tol; + *(outbuffer + offset + 0) = (u_sor_pgs_rms_error_tol.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_sor_pgs_rms_error_tol.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_sor_pgs_rms_error_tol.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_sor_pgs_rms_error_tol.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_sor_pgs_rms_error_tol.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_sor_pgs_rms_error_tol.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_sor_pgs_rms_error_tol.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_sor_pgs_rms_error_tol.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->sor_pgs_rms_error_tol); + union { + double real; + uint64_t base; + } u_contact_surface_layer; + u_contact_surface_layer.real = this->contact_surface_layer; + *(outbuffer + offset + 0) = (u_contact_surface_layer.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_contact_surface_layer.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_contact_surface_layer.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_contact_surface_layer.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_contact_surface_layer.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_contact_surface_layer.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_contact_surface_layer.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_contact_surface_layer.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->contact_surface_layer); + union { + double real; + uint64_t base; + } u_contact_max_correcting_vel; + u_contact_max_correcting_vel.real = this->contact_max_correcting_vel; + *(outbuffer + offset + 0) = (u_contact_max_correcting_vel.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_contact_max_correcting_vel.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_contact_max_correcting_vel.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_contact_max_correcting_vel.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_contact_max_correcting_vel.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_contact_max_correcting_vel.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_contact_max_correcting_vel.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_contact_max_correcting_vel.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->contact_max_correcting_vel); + union { + double real; + uint64_t base; + } u_cfm; + u_cfm.real = this->cfm; + *(outbuffer + offset + 0) = (u_cfm.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_cfm.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_cfm.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_cfm.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_cfm.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_cfm.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_cfm.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_cfm.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->cfm); + union { + double real; + uint64_t base; + } u_erp; + u_erp.real = this->erp; + *(outbuffer + offset + 0) = (u_erp.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_erp.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_erp.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_erp.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_erp.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_erp.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_erp.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_erp.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->erp); + *(outbuffer + offset + 0) = (this->max_contacts >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->max_contacts >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->max_contacts >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->max_contacts >> (8 * 3)) & 0xFF; + offset += sizeof(this->max_contacts); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_auto_disable_bodies; + u_auto_disable_bodies.base = 0; + u_auto_disable_bodies.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->auto_disable_bodies = u_auto_disable_bodies.real; + offset += sizeof(this->auto_disable_bodies); + this->sor_pgs_precon_iters = ((uint32_t) (*(inbuffer + offset))); + this->sor_pgs_precon_iters |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->sor_pgs_precon_iters |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->sor_pgs_precon_iters |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->sor_pgs_precon_iters); + this->sor_pgs_iters = ((uint32_t) (*(inbuffer + offset))); + this->sor_pgs_iters |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->sor_pgs_iters |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->sor_pgs_iters |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->sor_pgs_iters); + union { + double real; + uint64_t base; + } u_sor_pgs_w; + u_sor_pgs_w.base = 0; + u_sor_pgs_w.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_sor_pgs_w.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_sor_pgs_w.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_sor_pgs_w.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_sor_pgs_w.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_sor_pgs_w.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_sor_pgs_w.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_sor_pgs_w.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->sor_pgs_w = u_sor_pgs_w.real; + offset += sizeof(this->sor_pgs_w); + union { + double real; + uint64_t base; + } u_sor_pgs_rms_error_tol; + u_sor_pgs_rms_error_tol.base = 0; + u_sor_pgs_rms_error_tol.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_sor_pgs_rms_error_tol.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_sor_pgs_rms_error_tol.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_sor_pgs_rms_error_tol.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_sor_pgs_rms_error_tol.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_sor_pgs_rms_error_tol.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_sor_pgs_rms_error_tol.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_sor_pgs_rms_error_tol.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->sor_pgs_rms_error_tol = u_sor_pgs_rms_error_tol.real; + offset += sizeof(this->sor_pgs_rms_error_tol); + union { + double real; + uint64_t base; + } u_contact_surface_layer; + u_contact_surface_layer.base = 0; + u_contact_surface_layer.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_contact_surface_layer.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_contact_surface_layer.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_contact_surface_layer.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_contact_surface_layer.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_contact_surface_layer.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_contact_surface_layer.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_contact_surface_layer.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->contact_surface_layer = u_contact_surface_layer.real; + offset += sizeof(this->contact_surface_layer); + union { + double real; + uint64_t base; + } u_contact_max_correcting_vel; + u_contact_max_correcting_vel.base = 0; + u_contact_max_correcting_vel.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_contact_max_correcting_vel.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_contact_max_correcting_vel.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_contact_max_correcting_vel.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_contact_max_correcting_vel.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_contact_max_correcting_vel.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_contact_max_correcting_vel.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_contact_max_correcting_vel.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->contact_max_correcting_vel = u_contact_max_correcting_vel.real; + offset += sizeof(this->contact_max_correcting_vel); + union { + double real; + uint64_t base; + } u_cfm; + u_cfm.base = 0; + u_cfm.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_cfm.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_cfm.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_cfm.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_cfm.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_cfm.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_cfm.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_cfm.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->cfm = u_cfm.real; + offset += sizeof(this->cfm); + union { + double real; + uint64_t base; + } u_erp; + u_erp.base = 0; + u_erp.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_erp.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_erp.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_erp.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_erp.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_erp.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_erp.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_erp.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->erp = u_erp.real; + offset += sizeof(this->erp); + this->max_contacts = ((uint32_t) (*(inbuffer + offset))); + this->max_contacts |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->max_contacts |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->max_contacts |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->max_contacts); + return offset; + } + + const char * getType(){ return "gazebo_msgs/ODEPhysics"; }; + const char * getMD5(){ return "667d56ddbd547918c32d1934503dc335"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetJointProperties.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetJointProperties.h new file mode 100644 index 0000000..981853d --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetJointProperties.h @@ -0,0 +1,128 @@ +#ifndef _ROS_SERVICE_SetJointProperties_h +#define _ROS_SERVICE_SetJointProperties_h +#include +#include +#include +#include "ros/msg.h" +#include "gazebo_msgs/ODEJointProperties.h" + +namespace gazebo_msgs +{ + +static const char SETJOINTPROPERTIES[] = "gazebo_msgs/SetJointProperties"; + + class SetJointPropertiesRequest : public ros::Msg + { + public: + typedef const char* _joint_name_type; + _joint_name_type joint_name; + typedef gazebo_msgs::ODEJointProperties _ode_joint_config_type; + _ode_joint_config_type ode_joint_config; + + SetJointPropertiesRequest(): + joint_name(""), + ode_joint_config() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_joint_name = strlen(this->joint_name); + varToArr(outbuffer + offset, length_joint_name); + offset += 4; + memcpy(outbuffer + offset, this->joint_name, length_joint_name); + offset += length_joint_name; + offset += this->ode_joint_config.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_joint_name; + arrToVar(length_joint_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_joint_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_joint_name-1]=0; + this->joint_name = (char *)(inbuffer + offset-1); + offset += length_joint_name; + offset += this->ode_joint_config.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return SETJOINTPROPERTIES; }; + const char * getMD5(){ return "331fd8f35fd27e3c1421175590258e26"; }; + + }; + + class SetJointPropertiesResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + SetJointPropertiesResponse(): + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return SETJOINTPROPERTIES; }; + const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; }; + + }; + + class SetJointProperties { + public: + typedef SetJointPropertiesRequest Request; + typedef SetJointPropertiesResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetJointTrajectory.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetJointTrajectory.h new file mode 100644 index 0000000..81146ce --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetJointTrajectory.h @@ -0,0 +1,170 @@ +#ifndef _ROS_SERVICE_SetJointTrajectory_h +#define _ROS_SERVICE_SetJointTrajectory_h +#include +#include +#include +#include "ros/msg.h" +#include "trajectory_msgs/JointTrajectory.h" +#include "geometry_msgs/Pose.h" + +namespace gazebo_msgs +{ + +static const char SETJOINTTRAJECTORY[] = "gazebo_msgs/SetJointTrajectory"; + + class SetJointTrajectoryRequest : public ros::Msg + { + public: + typedef const char* _model_name_type; + _model_name_type model_name; + typedef trajectory_msgs::JointTrajectory _joint_trajectory_type; + _joint_trajectory_type joint_trajectory; + typedef geometry_msgs::Pose _model_pose_type; + _model_pose_type model_pose; + typedef bool _set_model_pose_type; + _set_model_pose_type set_model_pose; + typedef bool _disable_physics_updates_type; + _disable_physics_updates_type disable_physics_updates; + + SetJointTrajectoryRequest(): + model_name(""), + joint_trajectory(), + model_pose(), + set_model_pose(0), + disable_physics_updates(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_model_name = strlen(this->model_name); + varToArr(outbuffer + offset, length_model_name); + offset += 4; + memcpy(outbuffer + offset, this->model_name, length_model_name); + offset += length_model_name; + offset += this->joint_trajectory.serialize(outbuffer + offset); + offset += this->model_pose.serialize(outbuffer + offset); + union { + bool real; + uint8_t base; + } u_set_model_pose; + u_set_model_pose.real = this->set_model_pose; + *(outbuffer + offset + 0) = (u_set_model_pose.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->set_model_pose); + union { + bool real; + uint8_t base; + } u_disable_physics_updates; + u_disable_physics_updates.real = this->disable_physics_updates; + *(outbuffer + offset + 0) = (u_disable_physics_updates.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->disable_physics_updates); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_model_name; + arrToVar(length_model_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_model_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_model_name-1]=0; + this->model_name = (char *)(inbuffer + offset-1); + offset += length_model_name; + offset += this->joint_trajectory.deserialize(inbuffer + offset); + offset += this->model_pose.deserialize(inbuffer + offset); + union { + bool real; + uint8_t base; + } u_set_model_pose; + u_set_model_pose.base = 0; + u_set_model_pose.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->set_model_pose = u_set_model_pose.real; + offset += sizeof(this->set_model_pose); + union { + bool real; + uint8_t base; + } u_disable_physics_updates; + u_disable_physics_updates.base = 0; + u_disable_physics_updates.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->disable_physics_updates = u_disable_physics_updates.real; + offset += sizeof(this->disable_physics_updates); + return offset; + } + + const char * getType(){ return SETJOINTTRAJECTORY; }; + const char * getMD5(){ return "649dd2eba5ffd358069238825f9f85ab"; }; + + }; + + class SetJointTrajectoryResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + SetJointTrajectoryResponse(): + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return SETJOINTTRAJECTORY; }; + const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; }; + + }; + + class SetJointTrajectory { + public: + typedef SetJointTrajectoryRequest Request; + typedef SetJointTrajectoryResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetLightProperties.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetLightProperties.h new file mode 100644 index 0000000..5243ae2 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetLightProperties.h @@ -0,0 +1,224 @@ +#ifndef _ROS_SERVICE_SetLightProperties_h +#define _ROS_SERVICE_SetLightProperties_h +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/ColorRGBA.h" + +namespace gazebo_msgs +{ + +static const char SETLIGHTPROPERTIES[] = "gazebo_msgs/SetLightProperties"; + + class SetLightPropertiesRequest : public ros::Msg + { + public: + typedef const char* _light_name_type; + _light_name_type light_name; + typedef std_msgs::ColorRGBA _diffuse_type; + _diffuse_type diffuse; + typedef double _attenuation_constant_type; + _attenuation_constant_type attenuation_constant; + typedef double _attenuation_linear_type; + _attenuation_linear_type attenuation_linear; + typedef double _attenuation_quadratic_type; + _attenuation_quadratic_type attenuation_quadratic; + + SetLightPropertiesRequest(): + light_name(""), + diffuse(), + attenuation_constant(0), + attenuation_linear(0), + attenuation_quadratic(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_light_name = strlen(this->light_name); + varToArr(outbuffer + offset, length_light_name); + offset += 4; + memcpy(outbuffer + offset, this->light_name, length_light_name); + offset += length_light_name; + offset += this->diffuse.serialize(outbuffer + offset); + union { + double real; + uint64_t base; + } u_attenuation_constant; + u_attenuation_constant.real = this->attenuation_constant; + *(outbuffer + offset + 0) = (u_attenuation_constant.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_attenuation_constant.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_attenuation_constant.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_attenuation_constant.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_attenuation_constant.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_attenuation_constant.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_attenuation_constant.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_attenuation_constant.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->attenuation_constant); + union { + double real; + uint64_t base; + } u_attenuation_linear; + u_attenuation_linear.real = this->attenuation_linear; + *(outbuffer + offset + 0) = (u_attenuation_linear.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_attenuation_linear.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_attenuation_linear.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_attenuation_linear.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_attenuation_linear.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_attenuation_linear.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_attenuation_linear.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_attenuation_linear.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->attenuation_linear); + union { + double real; + uint64_t base; + } u_attenuation_quadratic; + u_attenuation_quadratic.real = this->attenuation_quadratic; + *(outbuffer + offset + 0) = (u_attenuation_quadratic.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_attenuation_quadratic.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_attenuation_quadratic.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_attenuation_quadratic.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_attenuation_quadratic.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_attenuation_quadratic.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_attenuation_quadratic.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_attenuation_quadratic.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->attenuation_quadratic); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_light_name; + arrToVar(length_light_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_light_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_light_name-1]=0; + this->light_name = (char *)(inbuffer + offset-1); + offset += length_light_name; + offset += this->diffuse.deserialize(inbuffer + offset); + union { + double real; + uint64_t base; + } u_attenuation_constant; + u_attenuation_constant.base = 0; + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->attenuation_constant = u_attenuation_constant.real; + offset += sizeof(this->attenuation_constant); + union { + double real; + uint64_t base; + } u_attenuation_linear; + u_attenuation_linear.base = 0; + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->attenuation_linear = u_attenuation_linear.real; + offset += sizeof(this->attenuation_linear); + union { + double real; + uint64_t base; + } u_attenuation_quadratic; + u_attenuation_quadratic.base = 0; + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->attenuation_quadratic = u_attenuation_quadratic.real; + offset += sizeof(this->attenuation_quadratic); + return offset; + } + + const char * getType(){ return SETLIGHTPROPERTIES; }; + const char * getMD5(){ return "73ad1ac5e9e312ddf7c74f38ad843f34"; }; + + }; + + class SetLightPropertiesResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + SetLightPropertiesResponse(): + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return SETLIGHTPROPERTIES; }; + const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; }; + + }; + + class SetLightProperties { + public: + typedef SetLightPropertiesRequest Request; + typedef SetLightPropertiesResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetLinkProperties.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetLinkProperties.h new file mode 100644 index 0000000..3b0ae61 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetLinkProperties.h @@ -0,0 +1,370 @@ +#ifndef _ROS_SERVICE_SetLinkProperties_h +#define _ROS_SERVICE_SetLinkProperties_h +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Pose.h" + +namespace gazebo_msgs +{ + +static const char SETLINKPROPERTIES[] = "gazebo_msgs/SetLinkProperties"; + + class SetLinkPropertiesRequest : public ros::Msg + { + public: + typedef const char* _link_name_type; + _link_name_type link_name; + typedef geometry_msgs::Pose _com_type; + _com_type com; + typedef bool _gravity_mode_type; + _gravity_mode_type gravity_mode; + typedef double _mass_type; + _mass_type mass; + typedef double _ixx_type; + _ixx_type ixx; + typedef double _ixy_type; + _ixy_type ixy; + typedef double _ixz_type; + _ixz_type ixz; + typedef double _iyy_type; + _iyy_type iyy; + typedef double _iyz_type; + _iyz_type iyz; + typedef double _izz_type; + _izz_type izz; + + SetLinkPropertiesRequest(): + link_name(""), + com(), + gravity_mode(0), + mass(0), + ixx(0), + ixy(0), + ixz(0), + iyy(0), + iyz(0), + izz(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_link_name = strlen(this->link_name); + varToArr(outbuffer + offset, length_link_name); + offset += 4; + memcpy(outbuffer + offset, this->link_name, length_link_name); + offset += length_link_name; + offset += this->com.serialize(outbuffer + offset); + union { + bool real; + uint8_t base; + } u_gravity_mode; + u_gravity_mode.real = this->gravity_mode; + *(outbuffer + offset + 0) = (u_gravity_mode.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->gravity_mode); + union { + double real; + uint64_t base; + } u_mass; + u_mass.real = this->mass; + *(outbuffer + offset + 0) = (u_mass.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_mass.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_mass.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_mass.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_mass.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_mass.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_mass.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_mass.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->mass); + union { + double real; + uint64_t base; + } u_ixx; + u_ixx.real = this->ixx; + *(outbuffer + offset + 0) = (u_ixx.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_ixx.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_ixx.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_ixx.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_ixx.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_ixx.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_ixx.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_ixx.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->ixx); + union { + double real; + uint64_t base; + } u_ixy; + u_ixy.real = this->ixy; + *(outbuffer + offset + 0) = (u_ixy.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_ixy.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_ixy.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_ixy.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_ixy.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_ixy.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_ixy.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_ixy.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->ixy); + union { + double real; + uint64_t base; + } u_ixz; + u_ixz.real = this->ixz; + *(outbuffer + offset + 0) = (u_ixz.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_ixz.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_ixz.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_ixz.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_ixz.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_ixz.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_ixz.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_ixz.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->ixz); + union { + double real; + uint64_t base; + } u_iyy; + u_iyy.real = this->iyy; + *(outbuffer + offset + 0) = (u_iyy.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_iyy.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_iyy.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_iyy.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_iyy.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_iyy.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_iyy.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_iyy.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->iyy); + union { + double real; + uint64_t base; + } u_iyz; + u_iyz.real = this->iyz; + *(outbuffer + offset + 0) = (u_iyz.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_iyz.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_iyz.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_iyz.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_iyz.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_iyz.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_iyz.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_iyz.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->iyz); + union { + double real; + uint64_t base; + } u_izz; + u_izz.real = this->izz; + *(outbuffer + offset + 0) = (u_izz.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_izz.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_izz.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_izz.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_izz.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_izz.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_izz.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_izz.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->izz); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_link_name; + arrToVar(length_link_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_link_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_link_name-1]=0; + this->link_name = (char *)(inbuffer + offset-1); + offset += length_link_name; + offset += this->com.deserialize(inbuffer + offset); + union { + bool real; + uint8_t base; + } u_gravity_mode; + u_gravity_mode.base = 0; + u_gravity_mode.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->gravity_mode = u_gravity_mode.real; + offset += sizeof(this->gravity_mode); + union { + double real; + uint64_t base; + } u_mass; + u_mass.base = 0; + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->mass = u_mass.real; + offset += sizeof(this->mass); + union { + double real; + uint64_t base; + } u_ixx; + u_ixx.base = 0; + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->ixx = u_ixx.real; + offset += sizeof(this->ixx); + union { + double real; + uint64_t base; + } u_ixy; + u_ixy.base = 0; + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->ixy = u_ixy.real; + offset += sizeof(this->ixy); + union { + double real; + uint64_t base; + } u_ixz; + u_ixz.base = 0; + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->ixz = u_ixz.real; + offset += sizeof(this->ixz); + union { + double real; + uint64_t base; + } u_iyy; + u_iyy.base = 0; + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->iyy = u_iyy.real; + offset += sizeof(this->iyy); + union { + double real; + uint64_t base; + } u_iyz; + u_iyz.base = 0; + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->iyz = u_iyz.real; + offset += sizeof(this->iyz); + union { + double real; + uint64_t base; + } u_izz; + u_izz.base = 0; + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->izz = u_izz.real; + offset += sizeof(this->izz); + return offset; + } + + const char * getType(){ return SETLINKPROPERTIES; }; + const char * getMD5(){ return "68ac74a4be01b165bc305b5ccdc45e91"; }; + + }; + + class SetLinkPropertiesResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + SetLinkPropertiesResponse(): + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return SETLINKPROPERTIES; }; + const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; }; + + }; + + class SetLinkProperties { + public: + typedef SetLinkPropertiesRequest Request; + typedef SetLinkPropertiesResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetLinkState.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetLinkState.h new file mode 100644 index 0000000..f089492 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetLinkState.h @@ -0,0 +1,111 @@ +#ifndef _ROS_SERVICE_SetLinkState_h +#define _ROS_SERVICE_SetLinkState_h +#include +#include +#include +#include "ros/msg.h" +#include "gazebo_msgs/LinkState.h" + +namespace gazebo_msgs +{ + +static const char SETLINKSTATE[] = "gazebo_msgs/SetLinkState"; + + class SetLinkStateRequest : public ros::Msg + { + public: + typedef gazebo_msgs::LinkState _link_state_type; + _link_state_type link_state; + + SetLinkStateRequest(): + link_state() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->link_state.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->link_state.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return SETLINKSTATE; }; + const char * getMD5(){ return "22a2c757d56911b6f27868159e9a872d"; }; + + }; + + class SetLinkStateResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + SetLinkStateResponse(): + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return SETLINKSTATE; }; + const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; }; + + }; + + class SetLinkState { + public: + typedef SetLinkStateRequest Request; + typedef SetLinkStateResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetModelConfiguration.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetModelConfiguration.h new file mode 100644 index 0000000..d2da91b --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetModelConfiguration.h @@ -0,0 +1,228 @@ +#ifndef _ROS_SERVICE_SetModelConfiguration_h +#define _ROS_SERVICE_SetModelConfiguration_h +#include +#include +#include +#include "ros/msg.h" + +namespace gazebo_msgs +{ + +static const char SETMODELCONFIGURATION[] = "gazebo_msgs/SetModelConfiguration"; + + class SetModelConfigurationRequest : public ros::Msg + { + public: + typedef const char* _model_name_type; + _model_name_type model_name; + typedef const char* _urdf_param_name_type; + _urdf_param_name_type urdf_param_name; + uint32_t joint_names_length; + typedef char* _joint_names_type; + _joint_names_type st_joint_names; + _joint_names_type * joint_names; + uint32_t joint_positions_length; + typedef double _joint_positions_type; + _joint_positions_type st_joint_positions; + _joint_positions_type * joint_positions; + + SetModelConfigurationRequest(): + model_name(""), + urdf_param_name(""), + joint_names_length(0), joint_names(NULL), + joint_positions_length(0), joint_positions(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_model_name = strlen(this->model_name); + varToArr(outbuffer + offset, length_model_name); + offset += 4; + memcpy(outbuffer + offset, this->model_name, length_model_name); + offset += length_model_name; + uint32_t length_urdf_param_name = strlen(this->urdf_param_name); + varToArr(outbuffer + offset, length_urdf_param_name); + offset += 4; + memcpy(outbuffer + offset, this->urdf_param_name, length_urdf_param_name); + offset += length_urdf_param_name; + *(outbuffer + offset + 0) = (this->joint_names_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->joint_names_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->joint_names_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->joint_names_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->joint_names_length); + for( uint32_t i = 0; i < joint_names_length; i++){ + uint32_t length_joint_namesi = strlen(this->joint_names[i]); + varToArr(outbuffer + offset, length_joint_namesi); + offset += 4; + memcpy(outbuffer + offset, this->joint_names[i], length_joint_namesi); + offset += length_joint_namesi; + } + *(outbuffer + offset + 0) = (this->joint_positions_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->joint_positions_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->joint_positions_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->joint_positions_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->joint_positions_length); + for( uint32_t i = 0; i < joint_positions_length; i++){ + union { + double real; + uint64_t base; + } u_joint_positionsi; + u_joint_positionsi.real = this->joint_positions[i]; + *(outbuffer + offset + 0) = (u_joint_positionsi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_joint_positionsi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_joint_positionsi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_joint_positionsi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_joint_positionsi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_joint_positionsi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_joint_positionsi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_joint_positionsi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->joint_positions[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_model_name; + arrToVar(length_model_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_model_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_model_name-1]=0; + this->model_name = (char *)(inbuffer + offset-1); + offset += length_model_name; + uint32_t length_urdf_param_name; + arrToVar(length_urdf_param_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_urdf_param_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_urdf_param_name-1]=0; + this->urdf_param_name = (char *)(inbuffer + offset-1); + offset += length_urdf_param_name; + uint32_t joint_names_lengthT = ((uint32_t) (*(inbuffer + offset))); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->joint_names_length); + if(joint_names_lengthT > joint_names_length) + this->joint_names = (char**)realloc(this->joint_names, joint_names_lengthT * sizeof(char*)); + joint_names_length = joint_names_lengthT; + for( uint32_t i = 0; i < joint_names_length; i++){ + uint32_t length_st_joint_names; + arrToVar(length_st_joint_names, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_joint_names; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_joint_names-1]=0; + this->st_joint_names = (char *)(inbuffer + offset-1); + offset += length_st_joint_names; + memcpy( &(this->joint_names[i]), &(this->st_joint_names), sizeof(char*)); + } + uint32_t joint_positions_lengthT = ((uint32_t) (*(inbuffer + offset))); + joint_positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + joint_positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + joint_positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->joint_positions_length); + if(joint_positions_lengthT > joint_positions_length) + this->joint_positions = (double*)realloc(this->joint_positions, joint_positions_lengthT * sizeof(double)); + joint_positions_length = joint_positions_lengthT; + for( uint32_t i = 0; i < joint_positions_length; i++){ + union { + double real; + uint64_t base; + } u_st_joint_positions; + u_st_joint_positions.base = 0; + u_st_joint_positions.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_joint_positions.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_joint_positions.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_joint_positions.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_joint_positions.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_joint_positions.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_joint_positions.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_joint_positions.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_joint_positions = u_st_joint_positions.real; + offset += sizeof(this->st_joint_positions); + memcpy( &(this->joint_positions[i]), &(this->st_joint_positions), sizeof(double)); + } + return offset; + } + + const char * getType(){ return SETMODELCONFIGURATION; }; + const char * getMD5(){ return "160eae60f51fabff255480c70afa289f"; }; + + }; + + class SetModelConfigurationResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + SetModelConfigurationResponse(): + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return SETMODELCONFIGURATION; }; + const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; }; + + }; + + class SetModelConfiguration { + public: + typedef SetModelConfigurationRequest Request; + typedef SetModelConfigurationResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetModelState.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetModelState.h new file mode 100644 index 0000000..ef251ad --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetModelState.h @@ -0,0 +1,111 @@ +#ifndef _ROS_SERVICE_SetModelState_h +#define _ROS_SERVICE_SetModelState_h +#include +#include +#include +#include "ros/msg.h" +#include "gazebo_msgs/ModelState.h" + +namespace gazebo_msgs +{ + +static const char SETMODELSTATE[] = "gazebo_msgs/SetModelState"; + + class SetModelStateRequest : public ros::Msg + { + public: + typedef gazebo_msgs::ModelState _model_state_type; + _model_state_type model_state; + + SetModelStateRequest(): + model_state() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->model_state.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->model_state.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return SETMODELSTATE; }; + const char * getMD5(){ return "cb042b0e91880f4661b29ea5b6234350"; }; + + }; + + class SetModelStateResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + SetModelStateResponse(): + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return SETMODELSTATE; }; + const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; }; + + }; + + class SetModelState { + public: + typedef SetModelStateRequest Request; + typedef SetModelStateResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetPhysicsProperties.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetPhysicsProperties.h new file mode 100644 index 0000000..ea160b5 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/SetPhysicsProperties.h @@ -0,0 +1,181 @@ +#ifndef _ROS_SERVICE_SetPhysicsProperties_h +#define _ROS_SERVICE_SetPhysicsProperties_h +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Vector3.h" +#include "gazebo_msgs/ODEPhysics.h" + +namespace gazebo_msgs +{ + +static const char SETPHYSICSPROPERTIES[] = "gazebo_msgs/SetPhysicsProperties"; + + class SetPhysicsPropertiesRequest : public ros::Msg + { + public: + typedef double _time_step_type; + _time_step_type time_step; + typedef double _max_update_rate_type; + _max_update_rate_type max_update_rate; + typedef geometry_msgs::Vector3 _gravity_type; + _gravity_type gravity; + typedef gazebo_msgs::ODEPhysics _ode_config_type; + _ode_config_type ode_config; + + SetPhysicsPropertiesRequest(): + time_step(0), + max_update_rate(0), + gravity(), + ode_config() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_time_step; + u_time_step.real = this->time_step; + *(outbuffer + offset + 0) = (u_time_step.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_time_step.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_time_step.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_time_step.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_time_step.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_time_step.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_time_step.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_time_step.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->time_step); + union { + double real; + uint64_t base; + } u_max_update_rate; + u_max_update_rate.real = this->max_update_rate; + *(outbuffer + offset + 0) = (u_max_update_rate.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_max_update_rate.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_max_update_rate.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_max_update_rate.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_max_update_rate.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_max_update_rate.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_max_update_rate.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_max_update_rate.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->max_update_rate); + offset += this->gravity.serialize(outbuffer + offset); + offset += this->ode_config.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_time_step; + u_time_step.base = 0; + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->time_step = u_time_step.real; + offset += sizeof(this->time_step); + union { + double real; + uint64_t base; + } u_max_update_rate; + u_max_update_rate.base = 0; + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->max_update_rate = u_max_update_rate.real; + offset += sizeof(this->max_update_rate); + offset += this->gravity.deserialize(inbuffer + offset); + offset += this->ode_config.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return SETPHYSICSPROPERTIES; }; + const char * getMD5(){ return "abd9f82732b52b92e9d6bb36e6a82452"; }; + + }; + + class SetPhysicsPropertiesResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + SetPhysicsPropertiesResponse(): + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return SETPHYSICSPROPERTIES; }; + const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; }; + + }; + + class SetPhysicsProperties { + public: + typedef SetPhysicsPropertiesRequest Request; + typedef SetPhysicsPropertiesResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/SpawnModel.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/SpawnModel.h new file mode 100644 index 0000000..215b001 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/SpawnModel.h @@ -0,0 +1,179 @@ +#ifndef _ROS_SERVICE_SpawnModel_h +#define _ROS_SERVICE_SpawnModel_h +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Pose.h" + +namespace gazebo_msgs +{ + +static const char SPAWNMODEL[] = "gazebo_msgs/SpawnModel"; + + class SpawnModelRequest : public ros::Msg + { + public: + typedef const char* _model_name_type; + _model_name_type model_name; + typedef const char* _model_xml_type; + _model_xml_type model_xml; + typedef const char* _robot_namespace_type; + _robot_namespace_type robot_namespace; + typedef geometry_msgs::Pose _initial_pose_type; + _initial_pose_type initial_pose; + typedef const char* _reference_frame_type; + _reference_frame_type reference_frame; + + SpawnModelRequest(): + model_name(""), + model_xml(""), + robot_namespace(""), + initial_pose(), + reference_frame("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_model_name = strlen(this->model_name); + varToArr(outbuffer + offset, length_model_name); + offset += 4; + memcpy(outbuffer + offset, this->model_name, length_model_name); + offset += length_model_name; + uint32_t length_model_xml = strlen(this->model_xml); + varToArr(outbuffer + offset, length_model_xml); + offset += 4; + memcpy(outbuffer + offset, this->model_xml, length_model_xml); + offset += length_model_xml; + uint32_t length_robot_namespace = strlen(this->robot_namespace); + varToArr(outbuffer + offset, length_robot_namespace); + offset += 4; + memcpy(outbuffer + offset, this->robot_namespace, length_robot_namespace); + offset += length_robot_namespace; + offset += this->initial_pose.serialize(outbuffer + offset); + uint32_t length_reference_frame = strlen(this->reference_frame); + varToArr(outbuffer + offset, length_reference_frame); + offset += 4; + memcpy(outbuffer + offset, this->reference_frame, length_reference_frame); + offset += length_reference_frame; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_model_name; + arrToVar(length_model_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_model_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_model_name-1]=0; + this->model_name = (char *)(inbuffer + offset-1); + offset += length_model_name; + uint32_t length_model_xml; + arrToVar(length_model_xml, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_model_xml; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_model_xml-1]=0; + this->model_xml = (char *)(inbuffer + offset-1); + offset += length_model_xml; + uint32_t length_robot_namespace; + arrToVar(length_robot_namespace, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_robot_namespace; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_robot_namespace-1]=0; + this->robot_namespace = (char *)(inbuffer + offset-1); + offset += length_robot_namespace; + offset += this->initial_pose.deserialize(inbuffer + offset); + uint32_t length_reference_frame; + arrToVar(length_reference_frame, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_reference_frame; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_reference_frame-1]=0; + this->reference_frame = (char *)(inbuffer + offset-1); + offset += length_reference_frame; + return offset; + } + + const char * getType(){ return SPAWNMODEL; }; + const char * getMD5(){ return "6d0eba5753761cd57e6263a056b79930"; }; + + }; + + class SpawnModelResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + SpawnModelResponse(): + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return SPAWNMODEL; }; + const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; }; + + }; + + class SpawnModel { + public: + typedef SpawnModelRequest Request; + typedef SpawnModelResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/WorldState.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/WorldState.h new file mode 100644 index 0000000..43eb256 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/gazebo_msgs/WorldState.h @@ -0,0 +1,159 @@ +#ifndef _ROS_gazebo_msgs_WorldState_h +#define _ROS_gazebo_msgs_WorldState_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Pose.h" +#include "geometry_msgs/Twist.h" +#include "geometry_msgs/Wrench.h" + +namespace gazebo_msgs +{ + + class WorldState : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t name_length; + typedef char* _name_type; + _name_type st_name; + _name_type * name; + uint32_t pose_length; + typedef geometry_msgs::Pose _pose_type; + _pose_type st_pose; + _pose_type * pose; + uint32_t twist_length; + typedef geometry_msgs::Twist _twist_type; + _twist_type st_twist; + _twist_type * twist; + uint32_t wrench_length; + typedef geometry_msgs::Wrench _wrench_type; + _wrench_type st_wrench; + _wrench_type * wrench; + + WorldState(): + header(), + name_length(0), name(NULL), + pose_length(0), pose(NULL), + twist_length(0), twist(NULL), + wrench_length(0), wrench(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->name_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->name_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->name_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->name_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->name_length); + for( uint32_t i = 0; i < name_length; i++){ + uint32_t length_namei = strlen(this->name[i]); + varToArr(outbuffer + offset, length_namei); + offset += 4; + memcpy(outbuffer + offset, this->name[i], length_namei); + offset += length_namei; + } + *(outbuffer + offset + 0) = (this->pose_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->pose_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->pose_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->pose_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->pose_length); + for( uint32_t i = 0; i < pose_length; i++){ + offset += this->pose[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->twist_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->twist_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->twist_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->twist_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->twist_length); + for( uint32_t i = 0; i < twist_length; i++){ + offset += this->twist[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->wrench_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->wrench_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->wrench_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->wrench_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->wrench_length); + for( uint32_t i = 0; i < wrench_length; i++){ + offset += this->wrench[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t name_lengthT = ((uint32_t) (*(inbuffer + offset))); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->name_length); + if(name_lengthT > name_length) + this->name = (char**)realloc(this->name, name_lengthT * sizeof(char*)); + name_length = name_lengthT; + for( uint32_t i = 0; i < name_length; i++){ + uint32_t length_st_name; + arrToVar(length_st_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_name-1]=0; + this->st_name = (char *)(inbuffer + offset-1); + offset += length_st_name; + memcpy( &(this->name[i]), &(this->st_name), sizeof(char*)); + } + uint32_t pose_lengthT = ((uint32_t) (*(inbuffer + offset))); + pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->pose_length); + if(pose_lengthT > pose_length) + this->pose = (geometry_msgs::Pose*)realloc(this->pose, pose_lengthT * sizeof(geometry_msgs::Pose)); + pose_length = pose_lengthT; + for( uint32_t i = 0; i < pose_length; i++){ + offset += this->st_pose.deserialize(inbuffer + offset); + memcpy( &(this->pose[i]), &(this->st_pose), sizeof(geometry_msgs::Pose)); + } + uint32_t twist_lengthT = ((uint32_t) (*(inbuffer + offset))); + twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->twist_length); + if(twist_lengthT > twist_length) + this->twist = (geometry_msgs::Twist*)realloc(this->twist, twist_lengthT * sizeof(geometry_msgs::Twist)); + twist_length = twist_lengthT; + for( uint32_t i = 0; i < twist_length; i++){ + offset += this->st_twist.deserialize(inbuffer + offset); + memcpy( &(this->twist[i]), &(this->st_twist), sizeof(geometry_msgs::Twist)); + } + uint32_t wrench_lengthT = ((uint32_t) (*(inbuffer + offset))); + wrench_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + wrench_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + wrench_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->wrench_length); + if(wrench_lengthT > wrench_length) + this->wrench = (geometry_msgs::Wrench*)realloc(this->wrench, wrench_lengthT * sizeof(geometry_msgs::Wrench)); + wrench_length = wrench_lengthT; + for( uint32_t i = 0; i < wrench_length; i++){ + offset += this->st_wrench.deserialize(inbuffer + offset); + memcpy( &(this->wrench[i]), &(this->st_wrench), sizeof(geometry_msgs::Wrench)); + } + return offset; + } + + const char * getType(){ return "gazebo_msgs/WorldState"; }; + const char * getMD5(){ return "de1a9de3ab7ba97ac0e9ec01a4eb481e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Accel.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Accel.h new file mode 100644 index 0000000..b5931f6 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Accel.h @@ -0,0 +1,49 @@ +#ifndef _ROS_geometry_msgs_Accel_h +#define _ROS_geometry_msgs_Accel_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Vector3.h" + +namespace geometry_msgs +{ + + class Accel : public ros::Msg + { + public: + typedef geometry_msgs::Vector3 _linear_type; + _linear_type linear; + typedef geometry_msgs::Vector3 _angular_type; + _angular_type angular; + + Accel(): + linear(), + angular() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->linear.serialize(outbuffer + offset); + offset += this->angular.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->linear.deserialize(inbuffer + offset); + offset += this->angular.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/Accel"; }; + const char * getMD5(){ return "9f195f881246fdfa2798d1d3eebca84a"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/AccelStamped.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/AccelStamped.h new file mode 100644 index 0000000..d7f7858 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/AccelStamped.h @@ -0,0 +1,50 @@ +#ifndef _ROS_geometry_msgs_AccelStamped_h +#define _ROS_geometry_msgs_AccelStamped_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Accel.h" + +namespace geometry_msgs +{ + + class AccelStamped : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::Accel _accel_type; + _accel_type accel; + + AccelStamped(): + header(), + accel() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->accel.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->accel.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/AccelStamped"; }; + const char * getMD5(){ return "d8a98a5d81351b6eb0578c78557e7659"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/AccelWithCovariance.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/AccelWithCovariance.h new file mode 100644 index 0000000..9ce6ca2 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/AccelWithCovariance.h @@ -0,0 +1,79 @@ +#ifndef _ROS_geometry_msgs_AccelWithCovariance_h +#define _ROS_geometry_msgs_AccelWithCovariance_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Accel.h" + +namespace geometry_msgs +{ + + class AccelWithCovariance : public ros::Msg + { + public: + typedef geometry_msgs::Accel _accel_type; + _accel_type accel; + double covariance[36]; + + AccelWithCovariance(): + accel(), + covariance() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->accel.serialize(outbuffer + offset); + for( uint32_t i = 0; i < 36; i++){ + union { + double real; + uint64_t base; + } u_covariancei; + u_covariancei.real = this->covariance[i]; + *(outbuffer + offset + 0) = (u_covariancei.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_covariancei.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_covariancei.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_covariancei.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_covariancei.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_covariancei.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_covariancei.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_covariancei.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->covariance[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->accel.deserialize(inbuffer + offset); + for( uint32_t i = 0; i < 36; i++){ + union { + double real; + uint64_t base; + } u_covariancei; + u_covariancei.base = 0; + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->covariance[i] = u_covariancei.real; + offset += sizeof(this->covariance[i]); + } + return offset; + } + + const char * getType(){ return "geometry_msgs/AccelWithCovariance"; }; + const char * getMD5(){ return "ad5a718d699c6be72a02b8d6a139f334"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/AccelWithCovarianceStamped.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/AccelWithCovarianceStamped.h new file mode 100644 index 0000000..3153d39 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/AccelWithCovarianceStamped.h @@ -0,0 +1,50 @@ +#ifndef _ROS_geometry_msgs_AccelWithCovarianceStamped_h +#define _ROS_geometry_msgs_AccelWithCovarianceStamped_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/AccelWithCovariance.h" + +namespace geometry_msgs +{ + + class AccelWithCovarianceStamped : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::AccelWithCovariance _accel_type; + _accel_type accel; + + AccelWithCovarianceStamped(): + header(), + accel() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->accel.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->accel.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/AccelWithCovarianceStamped"; }; + const char * getMD5(){ return "96adb295225031ec8d57fb4251b0a886"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Inertia.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Inertia.h new file mode 100644 index 0000000..4c487c0 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Inertia.h @@ -0,0 +1,268 @@ +#ifndef _ROS_geometry_msgs_Inertia_h +#define _ROS_geometry_msgs_Inertia_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Vector3.h" + +namespace geometry_msgs +{ + + class Inertia : public ros::Msg + { + public: + typedef double _m_type; + _m_type m; + typedef geometry_msgs::Vector3 _com_type; + _com_type com; + typedef double _ixx_type; + _ixx_type ixx; + typedef double _ixy_type; + _ixy_type ixy; + typedef double _ixz_type; + _ixz_type ixz; + typedef double _iyy_type; + _iyy_type iyy; + typedef double _iyz_type; + _iyz_type iyz; + typedef double _izz_type; + _izz_type izz; + + Inertia(): + m(0), + com(), + ixx(0), + ixy(0), + ixz(0), + iyy(0), + iyz(0), + izz(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_m; + u_m.real = this->m; + *(outbuffer + offset + 0) = (u_m.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_m.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_m.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_m.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_m.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_m.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_m.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_m.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->m); + offset += this->com.serialize(outbuffer + offset); + union { + double real; + uint64_t base; + } u_ixx; + u_ixx.real = this->ixx; + *(outbuffer + offset + 0) = (u_ixx.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_ixx.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_ixx.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_ixx.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_ixx.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_ixx.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_ixx.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_ixx.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->ixx); + union { + double real; + uint64_t base; + } u_ixy; + u_ixy.real = this->ixy; + *(outbuffer + offset + 0) = (u_ixy.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_ixy.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_ixy.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_ixy.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_ixy.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_ixy.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_ixy.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_ixy.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->ixy); + union { + double real; + uint64_t base; + } u_ixz; + u_ixz.real = this->ixz; + *(outbuffer + offset + 0) = (u_ixz.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_ixz.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_ixz.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_ixz.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_ixz.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_ixz.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_ixz.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_ixz.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->ixz); + union { + double real; + uint64_t base; + } u_iyy; + u_iyy.real = this->iyy; + *(outbuffer + offset + 0) = (u_iyy.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_iyy.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_iyy.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_iyy.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_iyy.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_iyy.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_iyy.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_iyy.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->iyy); + union { + double real; + uint64_t base; + } u_iyz; + u_iyz.real = this->iyz; + *(outbuffer + offset + 0) = (u_iyz.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_iyz.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_iyz.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_iyz.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_iyz.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_iyz.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_iyz.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_iyz.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->iyz); + union { + double real; + uint64_t base; + } u_izz; + u_izz.real = this->izz; + *(outbuffer + offset + 0) = (u_izz.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_izz.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_izz.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_izz.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_izz.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_izz.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_izz.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_izz.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->izz); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_m; + u_m.base = 0; + u_m.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_m.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_m.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_m.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_m.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_m.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_m.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_m.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->m = u_m.real; + offset += sizeof(this->m); + offset += this->com.deserialize(inbuffer + offset); + union { + double real; + uint64_t base; + } u_ixx; + u_ixx.base = 0; + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->ixx = u_ixx.real; + offset += sizeof(this->ixx); + union { + double real; + uint64_t base; + } u_ixy; + u_ixy.base = 0; + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->ixy = u_ixy.real; + offset += sizeof(this->ixy); + union { + double real; + uint64_t base; + } u_ixz; + u_ixz.base = 0; + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->ixz = u_ixz.real; + offset += sizeof(this->ixz); + union { + double real; + uint64_t base; + } u_iyy; + u_iyy.base = 0; + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->iyy = u_iyy.real; + offset += sizeof(this->iyy); + union { + double real; + uint64_t base; + } u_iyz; + u_iyz.base = 0; + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->iyz = u_iyz.real; + offset += sizeof(this->iyz); + union { + double real; + uint64_t base; + } u_izz; + u_izz.base = 0; + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->izz = u_izz.real; + offset += sizeof(this->izz); + return offset; + } + + const char * getType(){ return "geometry_msgs/Inertia"; }; + const char * getMD5(){ return "1d26e4bb6c83ff141c5cf0d883c2b0fe"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/InertiaStamped.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/InertiaStamped.h new file mode 100644 index 0000000..2d8c944 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/InertiaStamped.h @@ -0,0 +1,50 @@ +#ifndef _ROS_geometry_msgs_InertiaStamped_h +#define _ROS_geometry_msgs_InertiaStamped_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Inertia.h" + +namespace geometry_msgs +{ + + class InertiaStamped : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::Inertia _inertia_type; + _inertia_type inertia; + + InertiaStamped(): + header(), + inertia() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->inertia.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->inertia.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/InertiaStamped"; }; + const char * getMD5(){ return "ddee48caeab5a966c5e8d166654a9ac7"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Point.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Point.h new file mode 100644 index 0000000..4764c84 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Point.h @@ -0,0 +1,134 @@ +#ifndef _ROS_geometry_msgs_Point_h +#define _ROS_geometry_msgs_Point_h + +#include +#include +#include +#include "../ros/msg.h" + +namespace geometry_msgs +{ + + class Point : public ros::Msg + { + public: + typedef double _x_type; + _x_type x; + typedef double _y_type; + _y_type y; + typedef double _z_type; + _z_type z; + + Point(): + x(0), + y(0), + z(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_x; + u_x.real = this->x; + *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_x.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_x.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_x.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_x.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->x); + union { + double real; + uint64_t base; + } u_y; + u_y.real = this->y; + *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_y.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_y.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_y.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_y.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->y); + union { + double real; + uint64_t base; + } u_z; + u_z.real = this->z; + *(outbuffer + offset + 0) = (u_z.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_z.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_z.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_z.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_z.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_z.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_z.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_z.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->z); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_x; + u_x.base = 0; + u_x.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->x = u_x.real; + offset += sizeof(this->x); + union { + double real; + uint64_t base; + } u_y; + u_y.base = 0; + u_y.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->y = u_y.real; + offset += sizeof(this->y); + union { + double real; + uint64_t base; + } u_z; + u_z.base = 0; + u_z.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->z = u_z.real; + offset += sizeof(this->z); + return offset; + } + + const char * getType(){ return "geometry_msgs/Point"; }; + const char * getMD5(){ return "4a842b65f413084dc2b10fb484ea7f17"; }; + + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Point32.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Point32.h new file mode 100644 index 0000000..8c3b572 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Point32.h @@ -0,0 +1,110 @@ +#ifndef _ROS_geometry_msgs_Point32_h +#define _ROS_geometry_msgs_Point32_h + +#include +#include +#include +#include "ros/msg.h" + +namespace geometry_msgs +{ + + class Point32 : public ros::Msg + { + public: + typedef float _x_type; + _x_type x; + typedef float _y_type; + _y_type y; + typedef float _z_type; + _z_type z; + + Point32(): + x(0), + y(0), + z(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + float real; + uint32_t base; + } u_x; + u_x.real = this->x; + *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->x); + union { + float real; + uint32_t base; + } u_y; + u_y.real = this->y; + *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->y); + union { + float real; + uint32_t base; + } u_z; + u_z.real = this->z; + *(outbuffer + offset + 0) = (u_z.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_z.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_z.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_z.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->z); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + float real; + uint32_t base; + } u_x; + u_x.base = 0; + u_x.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->x = u_x.real; + offset += sizeof(this->x); + union { + float real; + uint32_t base; + } u_y; + u_y.base = 0; + u_y.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->y = u_y.real; + offset += sizeof(this->y); + union { + float real; + uint32_t base; + } u_z; + u_z.base = 0; + u_z.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_z.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_z.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_z.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->z = u_z.real; + offset += sizeof(this->z); + return offset; + } + + const char * getType(){ return "geometry_msgs/Point32"; }; + const char * getMD5(){ return "cc153912f1453b708d221682bc23d9ac"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/PointStamped.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/PointStamped.h new file mode 100644 index 0000000..ce24530 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/PointStamped.h @@ -0,0 +1,50 @@ +#ifndef _ROS_geometry_msgs_PointStamped_h +#define _ROS_geometry_msgs_PointStamped_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Point.h" + +namespace geometry_msgs +{ + + class PointStamped : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::Point _point_type; + _point_type point; + + PointStamped(): + header(), + point() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->point.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->point.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/PointStamped"; }; + const char * getMD5(){ return "c63aecb41bfdfd6b7e1fac37c7cbe7bf"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Polygon.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Polygon.h new file mode 100644 index 0000000..8ff3276 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Polygon.h @@ -0,0 +1,64 @@ +#ifndef _ROS_geometry_msgs_Polygon_h +#define _ROS_geometry_msgs_Polygon_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Point32.h" + +namespace geometry_msgs +{ + + class Polygon : public ros::Msg + { + public: + uint32_t points_length; + typedef geometry_msgs::Point32 _points_type; + _points_type st_points; + _points_type * points; + + Polygon(): + points_length(0), points(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->points_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->points_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->points_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->points_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->points_length); + for( uint32_t i = 0; i < points_length; i++){ + offset += this->points[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t points_lengthT = ((uint32_t) (*(inbuffer + offset))); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->points_length); + if(points_lengthT > points_length) + this->points = (geometry_msgs::Point32*)realloc(this->points, points_lengthT * sizeof(geometry_msgs::Point32)); + points_length = points_lengthT; + for( uint32_t i = 0; i < points_length; i++){ + offset += this->st_points.deserialize(inbuffer + offset); + memcpy( &(this->points[i]), &(this->st_points), sizeof(geometry_msgs::Point32)); + } + return offset; + } + + const char * getType(){ return "geometry_msgs/Polygon"; }; + const char * getMD5(){ return "cd60a26494a087f577976f0329fa120e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/PolygonStamped.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/PolygonStamped.h new file mode 100644 index 0000000..badc359 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/PolygonStamped.h @@ -0,0 +1,50 @@ +#ifndef _ROS_geometry_msgs_PolygonStamped_h +#define _ROS_geometry_msgs_PolygonStamped_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Polygon.h" + +namespace geometry_msgs +{ + + class PolygonStamped : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::Polygon _polygon_type; + _polygon_type polygon; + + PolygonStamped(): + header(), + polygon() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->polygon.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->polygon.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/PolygonStamped"; }; + const char * getMD5(){ return "c6be8f7dc3bee7fe9e8d296070f53340"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Pose.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Pose.h new file mode 100644 index 0000000..1a9f46c --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Pose.h @@ -0,0 +1,50 @@ +#ifndef _ROS_geometry_msgs_Pose_h +#define _ROS_geometry_msgs_Pose_h + +#include +#include +#include +#include "../ros/msg.h" +#include "../geometry_msgs/Point.h" +#include "../geometry_msgs/Quaternion.h" + +namespace geometry_msgs +{ + + class Pose : public ros::Msg + { + public: + typedef geometry_msgs::Point _position_type; + _position_type position; + typedef geometry_msgs::Quaternion _orientation_type; + _orientation_type orientation; + + Pose(): + position(), + orientation() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->position.serialize(outbuffer + offset); + offset += this->orientation.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->position.deserialize(inbuffer + offset); + offset += this->orientation.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/Pose"; }; + const char * getMD5(){ return "e45d45a5a1ce597b249e23fb30fc871f"; }; + + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Pose2D.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Pose2D.h new file mode 100644 index 0000000..2858588 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Pose2D.h @@ -0,0 +1,134 @@ +#ifndef _ROS_geometry_msgs_Pose2D_h +#define _ROS_geometry_msgs_Pose2D_h + +#include +#include +#include +#include "ros/msg.h" + +namespace geometry_msgs +{ + + class Pose2D : public ros::Msg + { + public: + typedef double _x_type; + _x_type x; + typedef double _y_type; + _y_type y; + typedef double _theta_type; + _theta_type theta; + + Pose2D(): + x(0), + y(0), + theta(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_x; + u_x.real = this->x; + *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_x.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_x.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_x.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_x.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->x); + union { + double real; + uint64_t base; + } u_y; + u_y.real = this->y; + *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_y.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_y.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_y.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_y.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->y); + union { + double real; + uint64_t base; + } u_theta; + u_theta.real = this->theta; + *(outbuffer + offset + 0) = (u_theta.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_theta.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_theta.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_theta.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_theta.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_theta.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_theta.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_theta.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->theta); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_x; + u_x.base = 0; + u_x.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->x = u_x.real; + offset += sizeof(this->x); + union { + double real; + uint64_t base; + } u_y; + u_y.base = 0; + u_y.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->y = u_y.real; + offset += sizeof(this->y); + union { + double real; + uint64_t base; + } u_theta; + u_theta.base = 0; + u_theta.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_theta.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_theta.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_theta.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_theta.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_theta.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_theta.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_theta.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->theta = u_theta.real; + offset += sizeof(this->theta); + return offset; + } + + const char * getType(){ return "geometry_msgs/Pose2D"; }; + const char * getMD5(){ return "938fa65709584ad8e77d238529be13b8"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/PoseArray.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/PoseArray.h new file mode 100644 index 0000000..9e6a89e --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/PoseArray.h @@ -0,0 +1,70 @@ +#ifndef _ROS_geometry_msgs_PoseArray_h +#define _ROS_geometry_msgs_PoseArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Pose.h" + +namespace geometry_msgs +{ + + class PoseArray : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t poses_length; + typedef geometry_msgs::Pose _poses_type; + _poses_type st_poses; + _poses_type * poses; + + PoseArray(): + header(), + poses_length(0), poses(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->poses_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->poses_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->poses_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->poses_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->poses_length); + for( uint32_t i = 0; i < poses_length; i++){ + offset += this->poses[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t poses_lengthT = ((uint32_t) (*(inbuffer + offset))); + poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->poses_length); + if(poses_lengthT > poses_length) + this->poses = (geometry_msgs::Pose*)realloc(this->poses, poses_lengthT * sizeof(geometry_msgs::Pose)); + poses_length = poses_lengthT; + for( uint32_t i = 0; i < poses_length; i++){ + offset += this->st_poses.deserialize(inbuffer + offset); + memcpy( &(this->poses[i]), &(this->st_poses), sizeof(geometry_msgs::Pose)); + } + return offset; + } + + const char * getType(){ return "geometry_msgs/PoseArray"; }; + const char * getMD5(){ return "916c28c5764443f268b296bb671b9d97"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/PoseStamped.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/PoseStamped.h new file mode 100644 index 0000000..cb79251 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/PoseStamped.h @@ -0,0 +1,50 @@ +#ifndef _ROS_geometry_msgs_PoseStamped_h +#define _ROS_geometry_msgs_PoseStamped_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Pose.h" + +namespace geometry_msgs +{ + + class PoseStamped : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::Pose _pose_type; + _pose_type pose; + + PoseStamped(): + header(), + pose() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->pose.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->pose.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/PoseStamped"; }; + const char * getMD5(){ return "d3812c3cbc69362b77dc0b19b345f8f5"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/PoseWithCovariance.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/PoseWithCovariance.h new file mode 100644 index 0000000..92cb1ce --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/PoseWithCovariance.h @@ -0,0 +1,79 @@ +#ifndef _ROS_geometry_msgs_PoseWithCovariance_h +#define _ROS_geometry_msgs_PoseWithCovariance_h + +#include +#include +#include +#include "../ros/msg.h" +#include "../geometry_msgs/Pose.h" + +namespace geometry_msgs +{ + + class PoseWithCovariance : public ros::Msg + { + public: + typedef geometry_msgs::Pose _pose_type; + _pose_type pose; + double covariance[36]; + + PoseWithCovariance(): + pose(), + covariance() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->pose.serialize(outbuffer + offset); + for( uint32_t i = 0; i < 36; i++){ + union { + double real; + uint64_t base; + } u_covariancei; + u_covariancei.real = this->covariance[i]; + *(outbuffer + offset + 0) = (u_covariancei.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_covariancei.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_covariancei.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_covariancei.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_covariancei.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_covariancei.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_covariancei.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_covariancei.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->covariance[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->pose.deserialize(inbuffer + offset); + for( uint32_t i = 0; i < 36; i++){ + union { + double real; + uint64_t base; + } u_covariancei; + u_covariancei.base = 0; + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->covariance[i] = u_covariancei.real; + offset += sizeof(this->covariance[i]); + } + return offset; + } + + const char * getType(){ return "geometry_msgs/PoseWithCovariance"; }; + const char * getMD5(){ return "c23e848cf1b7533a8d7c259073a97e6f"; }; + + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/PoseWithCovarianceStamped.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/PoseWithCovarianceStamped.h new file mode 100644 index 0000000..db623cd --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/PoseWithCovarianceStamped.h @@ -0,0 +1,50 @@ +#ifndef _ROS_geometry_msgs_PoseWithCovarianceStamped_h +#define _ROS_geometry_msgs_PoseWithCovarianceStamped_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/PoseWithCovariance.h" + +namespace geometry_msgs +{ + + class PoseWithCovarianceStamped : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::PoseWithCovariance _pose_type; + _pose_type pose; + + PoseWithCovarianceStamped(): + header(), + pose() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->pose.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->pose.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/PoseWithCovarianceStamped"; }; + const char * getMD5(){ return "953b798c0f514ff060a53a3498ce6246"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Quaternion.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Quaternion.h new file mode 100644 index 0000000..19f4bb8 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Quaternion.h @@ -0,0 +1,166 @@ +#ifndef _ROS_geometry_msgs_Quaternion_h +#define _ROS_geometry_msgs_Quaternion_h + +#include +#include +#include +#include "../ros/msg.h" + +namespace geometry_msgs +{ + + class Quaternion : public ros::Msg + { + public: + typedef double _x_type; + _x_type x; + typedef double _y_type; + _y_type y; + typedef double _z_type; + _z_type z; + typedef double _w_type; + _w_type w; + + Quaternion(): + x(0), + y(0), + z(0), + w(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_x; + u_x.real = this->x; + *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_x.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_x.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_x.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_x.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->x); + union { + double real; + uint64_t base; + } u_y; + u_y.real = this->y; + *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_y.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_y.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_y.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_y.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->y); + union { + double real; + uint64_t base; + } u_z; + u_z.real = this->z; + *(outbuffer + offset + 0) = (u_z.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_z.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_z.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_z.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_z.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_z.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_z.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_z.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->z); + union { + double real; + uint64_t base; + } u_w; + u_w.real = this->w; + *(outbuffer + offset + 0) = (u_w.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_w.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_w.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_w.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_w.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_w.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_w.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_w.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->w); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_x; + u_x.base = 0; + u_x.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->x = u_x.real; + offset += sizeof(this->x); + union { + double real; + uint64_t base; + } u_y; + u_y.base = 0; + u_y.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->y = u_y.real; + offset += sizeof(this->y); + union { + double real; + uint64_t base; + } u_z; + u_z.base = 0; + u_z.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->z = u_z.real; + offset += sizeof(this->z); + union { + double real; + uint64_t base; + } u_w; + u_w.base = 0; + u_w.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_w.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_w.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_w.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_w.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_w.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_w.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_w.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->w = u_w.real; + offset += sizeof(this->w); + return offset; + } + + const char * getType(){ return "geometry_msgs/Quaternion"; }; + const char * getMD5(){ return "a779879fadf0160734f906b8c19c7004"; }; + + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/QuaternionStamped.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/QuaternionStamped.h new file mode 100644 index 0000000..626358d --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/QuaternionStamped.h @@ -0,0 +1,50 @@ +#ifndef _ROS_geometry_msgs_QuaternionStamped_h +#define _ROS_geometry_msgs_QuaternionStamped_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Quaternion.h" + +namespace geometry_msgs +{ + + class QuaternionStamped : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::Quaternion _quaternion_type; + _quaternion_type quaternion; + + QuaternionStamped(): + header(), + quaternion() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->quaternion.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->quaternion.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/QuaternionStamped"; }; + const char * getMD5(){ return "e57f1e547e0e1fd13504588ffc8334e2"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Transform.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Transform.h new file mode 100644 index 0000000..27a9944 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Transform.h @@ -0,0 +1,50 @@ +#ifndef _ROS_geometry_msgs_Transform_h +#define _ROS_geometry_msgs_Transform_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Vector3.h" +#include "geometry_msgs/Quaternion.h" + +namespace geometry_msgs +{ + + class Transform : public ros::Msg + { + public: + typedef geometry_msgs::Vector3 _translation_type; + _translation_type translation; + typedef geometry_msgs::Quaternion _rotation_type; + _rotation_type rotation; + + Transform(): + translation(), + rotation() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->translation.serialize(outbuffer + offset); + offset += this->rotation.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->translation.deserialize(inbuffer + offset); + offset += this->rotation.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/Transform"; }; + const char * getMD5(){ return "ac9eff44abf714214112b05d54a3cf9b"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/TransformStamped.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/TransformStamped.h new file mode 100644 index 0000000..b197b54 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/TransformStamped.h @@ -0,0 +1,67 @@ +#ifndef _ROS_geometry_msgs_TransformStamped_h +#define _ROS_geometry_msgs_TransformStamped_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Transform.h" + +namespace geometry_msgs +{ + + class TransformStamped : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef const char* _child_frame_id_type; + _child_frame_id_type child_frame_id; + typedef geometry_msgs::Transform _transform_type; + _transform_type transform; + + TransformStamped(): + header(), + child_frame_id(""), + transform() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + uint32_t length_child_frame_id = strlen(this->child_frame_id); + varToArr(outbuffer + offset, length_child_frame_id); + offset += 4; + memcpy(outbuffer + offset, this->child_frame_id, length_child_frame_id); + offset += length_child_frame_id; + offset += this->transform.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t length_child_frame_id; + arrToVar(length_child_frame_id, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_child_frame_id; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_child_frame_id-1]=0; + this->child_frame_id = (char *)(inbuffer + offset-1); + offset += length_child_frame_id; + offset += this->transform.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/TransformStamped"; }; + const char * getMD5(){ return "b5764a33bfeb3588febc2682852579b0"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Twist.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Twist.h new file mode 100644 index 0000000..a6f980a --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Twist.h @@ -0,0 +1,51 @@ +#ifndef _ROS_geometry_msgs_Twist_h +#define _ROS_geometry_msgs_Twist_h + +#include +#include +#include +#include "../ros/msg.h" +#include "../geometry_msgs/Vector3.h" + +namespace geometry_msgs +{ + + class Twist : public ros::Msg + { + public: + typedef geometry_msgs::Vector3 _linear_type; + _linear_type linear; + typedef geometry_msgs::Vector3 _angular_type; + _angular_type angular; + + Twist(): + linear(), + angular() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->linear.serialize(outbuffer + offset); + offset += this->angular.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->linear.deserialize(inbuffer + offset); + offset += this->angular.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/Twist"; }; + const char * getMD5(){ return "9f195f881246fdfa2798d1d3eebca84a"; }; + + }; + +} + + +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/TwistStamped.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/TwistStamped.h new file mode 100644 index 0000000..40143c8 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/TwistStamped.h @@ -0,0 +1,50 @@ +#ifndef _ROS_geometry_msgs_TwistStamped_h +#define _ROS_geometry_msgs_TwistStamped_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Twist.h" + +namespace geometry_msgs +{ + + class TwistStamped : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::Twist _twist_type; + _twist_type twist; + + TwistStamped(): + header(), + twist() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->twist.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->twist.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/TwistStamped"; }; + const char * getMD5(){ return "98d34b0043a2093cf9d9345ab6eef12e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/TwistWithCovariance.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/TwistWithCovariance.h new file mode 100644 index 0000000..ab6fb61 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/TwistWithCovariance.h @@ -0,0 +1,79 @@ +#ifndef _ROS_geometry_msgs_TwistWithCovariance_h +#define _ROS_geometry_msgs_TwistWithCovariance_h + +#include +#include +#include +#include "../ros/msg.h" +#include "../geometry_msgs/Twist.h" + +namespace geometry_msgs +{ + + class TwistWithCovariance : public ros::Msg + { + public: + typedef geometry_msgs::Twist _twist_type; + _twist_type twist; + double covariance[36]; + + TwistWithCovariance(): + twist(), + covariance() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->twist.serialize(outbuffer + offset); + for( uint32_t i = 0; i < 36; i++){ + union { + double real; + uint64_t base; + } u_covariancei; + u_covariancei.real = this->covariance[i]; + *(outbuffer + offset + 0) = (u_covariancei.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_covariancei.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_covariancei.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_covariancei.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_covariancei.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_covariancei.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_covariancei.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_covariancei.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->covariance[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->twist.deserialize(inbuffer + offset); + for( uint32_t i = 0; i < 36; i++){ + union { + double real; + uint64_t base; + } u_covariancei; + u_covariancei.base = 0; + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->covariance[i] = u_covariancei.real; + offset += sizeof(this->covariance[i]); + } + return offset; + } + + const char * getType(){ return "geometry_msgs/TwistWithCovariance"; }; + const char * getMD5(){ return "1fe8a28e6890a4cc3ae4c3ca5c7d82e6"; }; + + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/TwistWithCovarianceStamped.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/TwistWithCovarianceStamped.h new file mode 100644 index 0000000..701edff --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/TwistWithCovarianceStamped.h @@ -0,0 +1,50 @@ +#ifndef _ROS_geometry_msgs_TwistWithCovarianceStamped_h +#define _ROS_geometry_msgs_TwistWithCovarianceStamped_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/TwistWithCovariance.h" + +namespace geometry_msgs +{ + + class TwistWithCovarianceStamped : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::TwistWithCovariance _twist_type; + _twist_type twist; + + TwistWithCovarianceStamped(): + header(), + twist() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->twist.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->twist.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/TwistWithCovarianceStamped"; }; + const char * getMD5(){ return "8927a1a12fb2607ceea095b2dc440a96"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Vector3.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Vector3.h new file mode 100644 index 0000000..efbab98 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Vector3.h @@ -0,0 +1,134 @@ +#ifndef _ROS_geometry_msgs_Vector3_h +#define _ROS_geometry_msgs_Vector3_h + +#include +#include +#include +#include "../ros/msg.h" + +namespace geometry_msgs +{ + + class Vector3 : public ros::Msg + { + public: + typedef double _x_type; + _x_type x; + typedef double _y_type; + _y_type y; + typedef double _z_type; + _z_type z; + + Vector3(): + x(0), + y(0), + z(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_x; + u_x.real = this->x; + *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_x.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_x.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_x.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_x.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->x); + union { + double real; + uint64_t base; + } u_y; + u_y.real = this->y; + *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_y.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_y.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_y.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_y.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->y); + union { + double real; + uint64_t base; + } u_z; + u_z.real = this->z; + *(outbuffer + offset + 0) = (u_z.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_z.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_z.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_z.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_z.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_z.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_z.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_z.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->z); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_x; + u_x.base = 0; + u_x.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->x = u_x.real; + offset += sizeof(this->x); + union { + double real; + uint64_t base; + } u_y; + u_y.base = 0; + u_y.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->y = u_y.real; + offset += sizeof(this->y); + union { + double real; + uint64_t base; + } u_z; + u_z.base = 0; + u_z.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->z = u_z.real; + offset += sizeof(this->z); + return offset; + } + + const char * getType(){ return "geometry_msgs/Vector3"; }; + const char * getMD5(){ return "4a842b65f413084dc2b10fb484ea7f17"; }; + + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Vector3Stamped.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Vector3Stamped.h new file mode 100644 index 0000000..9032066 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Vector3Stamped.h @@ -0,0 +1,50 @@ +#ifndef _ROS_geometry_msgs_Vector3Stamped_h +#define _ROS_geometry_msgs_Vector3Stamped_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Vector3.h" + +namespace geometry_msgs +{ + + class Vector3Stamped : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::Vector3 _vector_type; + _vector_type vector; + + Vector3Stamped(): + header(), + vector() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->vector.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->vector.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/Vector3Stamped"; }; + const char * getMD5(){ return "7b324c7325e683bf02a9b14b01090ec7"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Wrench.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Wrench.h new file mode 100644 index 0000000..52e5934 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Wrench.h @@ -0,0 +1,49 @@ +#ifndef _ROS_geometry_msgs_Wrench_h +#define _ROS_geometry_msgs_Wrench_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Vector3.h" + +namespace geometry_msgs +{ + + class Wrench : public ros::Msg + { + public: + typedef geometry_msgs::Vector3 _force_type; + _force_type force; + typedef geometry_msgs::Vector3 _torque_type; + _torque_type torque; + + Wrench(): + force(), + torque() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->force.serialize(outbuffer + offset); + offset += this->torque.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->force.deserialize(inbuffer + offset); + offset += this->torque.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/Wrench"; }; + const char * getMD5(){ return "4f539cf138b23283b520fd271b567936"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/WrenchStamped.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/WrenchStamped.h new file mode 100644 index 0000000..41b82f9 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/WrenchStamped.h @@ -0,0 +1,50 @@ +#ifndef _ROS_geometry_msgs_WrenchStamped_h +#define _ROS_geometry_msgs_WrenchStamped_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Wrench.h" + +namespace geometry_msgs +{ + + class WrenchStamped : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::Wrench _wrench_type; + _wrench_type wrench; + + WrenchStamped(): + header(), + wrench() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->wrench.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->wrench.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/WrenchStamped"; }; + const char * getMD5(){ return "d78d3cb249ce23087ade7e7d0c40cfa7"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/image_exposure_msgs/ExposureSequence.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/image_exposure_msgs/ExposureSequence.h new file mode 100644 index 0000000..7cbcdf7 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/image_exposure_msgs/ExposureSequence.h @@ -0,0 +1,119 @@ +#ifndef _ROS_image_exposure_msgs_ExposureSequence_h +#define _ROS_image_exposure_msgs_ExposureSequence_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace image_exposure_msgs +{ + + class ExposureSequence : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t shutter_length; + typedef uint32_t _shutter_type; + _shutter_type st_shutter; + _shutter_type * shutter; + typedef float _gain_type; + _gain_type gain; + typedef uint16_t _white_balance_blue_type; + _white_balance_blue_type white_balance_blue; + typedef uint16_t _white_balance_red_type; + _white_balance_red_type white_balance_red; + + ExposureSequence(): + header(), + shutter_length(0), shutter(NULL), + gain(0), + white_balance_blue(0), + white_balance_red(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->shutter_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->shutter_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->shutter_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->shutter_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->shutter_length); + for( uint32_t i = 0; i < shutter_length; i++){ + *(outbuffer + offset + 0) = (this->shutter[i] >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->shutter[i] >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->shutter[i] >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->shutter[i] >> (8 * 3)) & 0xFF; + offset += sizeof(this->shutter[i]); + } + union { + float real; + uint32_t base; + } u_gain; + u_gain.real = this->gain; + *(outbuffer + offset + 0) = (u_gain.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_gain.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_gain.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_gain.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->gain); + *(outbuffer + offset + 0) = (this->white_balance_blue >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->white_balance_blue >> (8 * 1)) & 0xFF; + offset += sizeof(this->white_balance_blue); + *(outbuffer + offset + 0) = (this->white_balance_red >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->white_balance_red >> (8 * 1)) & 0xFF; + offset += sizeof(this->white_balance_red); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t shutter_lengthT = ((uint32_t) (*(inbuffer + offset))); + shutter_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + shutter_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + shutter_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->shutter_length); + if(shutter_lengthT > shutter_length) + this->shutter = (uint32_t*)realloc(this->shutter, shutter_lengthT * sizeof(uint32_t)); + shutter_length = shutter_lengthT; + for( uint32_t i = 0; i < shutter_length; i++){ + this->st_shutter = ((uint32_t) (*(inbuffer + offset))); + this->st_shutter |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->st_shutter |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->st_shutter |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->st_shutter); + memcpy( &(this->shutter[i]), &(this->st_shutter), sizeof(uint32_t)); + } + union { + float real; + uint32_t base; + } u_gain; + u_gain.base = 0; + u_gain.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_gain.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_gain.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_gain.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->gain = u_gain.real; + offset += sizeof(this->gain); + this->white_balance_blue = ((uint16_t) (*(inbuffer + offset))); + this->white_balance_blue |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->white_balance_blue); + this->white_balance_red = ((uint16_t) (*(inbuffer + offset))); + this->white_balance_red |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->white_balance_red); + return offset; + } + + const char * getType(){ return "image_exposure_msgs/ExposureSequence"; }; + const char * getMD5(){ return "81d98e1e20eab8beb4bd07beeba6a398"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/image_exposure_msgs/ImageExposureStatistics.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/image_exposure_msgs/ImageExposureStatistics.h new file mode 100644 index 0000000..2c366c3 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/image_exposure_msgs/ImageExposureStatistics.h @@ -0,0 +1,324 @@ +#ifndef _ROS_image_exposure_msgs_ImageExposureStatistics_h +#define _ROS_image_exposure_msgs_ImageExposureStatistics_h + +#include +#include +#include +#include "ros/msg.h" +#include "ros/time.h" +#include "statistics_msgs/Stats1D.h" + +namespace image_exposure_msgs +{ + + class ImageExposureStatistics : public ros::Msg + { + public: + typedef ros::Time _stamp_type; + _stamp_type stamp; + typedef const char* _time_reference_type; + _time_reference_type time_reference; + typedef float _shutterms_type; + _shutterms_type shutterms; + typedef float _gaindb_type; + _gaindb_type gaindb; + typedef uint32_t _underExposed_type; + _underExposed_type underExposed; + typedef uint32_t _overExposed_type; + _overExposed_type overExposed; + typedef statistics_msgs::Stats1D _pixelVal_type; + _pixelVal_type pixelVal; + typedef statistics_msgs::Stats1D _pixelAge_type; + _pixelAge_type pixelAge; + typedef double _meanIrradiance_type; + _meanIrradiance_type meanIrradiance; + typedef double _minMeasurableIrradiance_type; + _minMeasurableIrradiance_type minMeasurableIrradiance; + typedef double _maxMeasurableIrradiance_type; + _maxMeasurableIrradiance_type maxMeasurableIrradiance; + typedef double _minObservedIrradiance_type; + _minObservedIrradiance_type minObservedIrradiance; + typedef double _maxObservedIrradiance_type; + _maxObservedIrradiance_type maxObservedIrradiance; + + ImageExposureStatistics(): + stamp(), + time_reference(""), + shutterms(0), + gaindb(0), + underExposed(0), + overExposed(0), + pixelVal(), + pixelAge(), + meanIrradiance(0), + minMeasurableIrradiance(0), + maxMeasurableIrradiance(0), + minObservedIrradiance(0), + maxObservedIrradiance(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->stamp.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp.sec); + *(outbuffer + offset + 0) = (this->stamp.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp.nsec); + uint32_t length_time_reference = strlen(this->time_reference); + varToArr(outbuffer + offset, length_time_reference); + offset += 4; + memcpy(outbuffer + offset, this->time_reference, length_time_reference); + offset += length_time_reference; + union { + float real; + uint32_t base; + } u_shutterms; + u_shutterms.real = this->shutterms; + *(outbuffer + offset + 0) = (u_shutterms.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_shutterms.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_shutterms.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_shutterms.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->shutterms); + union { + float real; + uint32_t base; + } u_gaindb; + u_gaindb.real = this->gaindb; + *(outbuffer + offset + 0) = (u_gaindb.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_gaindb.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_gaindb.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_gaindb.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->gaindb); + *(outbuffer + offset + 0) = (this->underExposed >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->underExposed >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->underExposed >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->underExposed >> (8 * 3)) & 0xFF; + offset += sizeof(this->underExposed); + *(outbuffer + offset + 0) = (this->overExposed >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->overExposed >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->overExposed >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->overExposed >> (8 * 3)) & 0xFF; + offset += sizeof(this->overExposed); + offset += this->pixelVal.serialize(outbuffer + offset); + offset += this->pixelAge.serialize(outbuffer + offset); + union { + double real; + uint64_t base; + } u_meanIrradiance; + u_meanIrradiance.real = this->meanIrradiance; + *(outbuffer + offset + 0) = (u_meanIrradiance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_meanIrradiance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_meanIrradiance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_meanIrradiance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_meanIrradiance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_meanIrradiance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_meanIrradiance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_meanIrradiance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->meanIrradiance); + union { + double real; + uint64_t base; + } u_minMeasurableIrradiance; + u_minMeasurableIrradiance.real = this->minMeasurableIrradiance; + *(outbuffer + offset + 0) = (u_minMeasurableIrradiance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_minMeasurableIrradiance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_minMeasurableIrradiance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_minMeasurableIrradiance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_minMeasurableIrradiance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_minMeasurableIrradiance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_minMeasurableIrradiance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_minMeasurableIrradiance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->minMeasurableIrradiance); + union { + double real; + uint64_t base; + } u_maxMeasurableIrradiance; + u_maxMeasurableIrradiance.real = this->maxMeasurableIrradiance; + *(outbuffer + offset + 0) = (u_maxMeasurableIrradiance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_maxMeasurableIrradiance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_maxMeasurableIrradiance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_maxMeasurableIrradiance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_maxMeasurableIrradiance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_maxMeasurableIrradiance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_maxMeasurableIrradiance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_maxMeasurableIrradiance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->maxMeasurableIrradiance); + union { + double real; + uint64_t base; + } u_minObservedIrradiance; + u_minObservedIrradiance.real = this->minObservedIrradiance; + *(outbuffer + offset + 0) = (u_minObservedIrradiance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_minObservedIrradiance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_minObservedIrradiance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_minObservedIrradiance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_minObservedIrradiance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_minObservedIrradiance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_minObservedIrradiance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_minObservedIrradiance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->minObservedIrradiance); + union { + double real; + uint64_t base; + } u_maxObservedIrradiance; + u_maxObservedIrradiance.real = this->maxObservedIrradiance; + *(outbuffer + offset + 0) = (u_maxObservedIrradiance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_maxObservedIrradiance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_maxObservedIrradiance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_maxObservedIrradiance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_maxObservedIrradiance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_maxObservedIrradiance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_maxObservedIrradiance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_maxObservedIrradiance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->maxObservedIrradiance); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->stamp.sec = ((uint32_t) (*(inbuffer + offset))); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp.sec); + this->stamp.nsec = ((uint32_t) (*(inbuffer + offset))); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp.nsec); + uint32_t length_time_reference; + arrToVar(length_time_reference, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_time_reference; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_time_reference-1]=0; + this->time_reference = (char *)(inbuffer + offset-1); + offset += length_time_reference; + union { + float real; + uint32_t base; + } u_shutterms; + u_shutterms.base = 0; + u_shutterms.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_shutterms.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_shutterms.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_shutterms.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->shutterms = u_shutterms.real; + offset += sizeof(this->shutterms); + union { + float real; + uint32_t base; + } u_gaindb; + u_gaindb.base = 0; + u_gaindb.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_gaindb.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_gaindb.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_gaindb.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->gaindb = u_gaindb.real; + offset += sizeof(this->gaindb); + this->underExposed = ((uint32_t) (*(inbuffer + offset))); + this->underExposed |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->underExposed |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->underExposed |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->underExposed); + this->overExposed = ((uint32_t) (*(inbuffer + offset))); + this->overExposed |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->overExposed |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->overExposed |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->overExposed); + offset += this->pixelVal.deserialize(inbuffer + offset); + offset += this->pixelAge.deserialize(inbuffer + offset); + union { + double real; + uint64_t base; + } u_meanIrradiance; + u_meanIrradiance.base = 0; + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->meanIrradiance = u_meanIrradiance.real; + offset += sizeof(this->meanIrradiance); + union { + double real; + uint64_t base; + } u_minMeasurableIrradiance; + u_minMeasurableIrradiance.base = 0; + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->minMeasurableIrradiance = u_minMeasurableIrradiance.real; + offset += sizeof(this->minMeasurableIrradiance); + union { + double real; + uint64_t base; + } u_maxMeasurableIrradiance; + u_maxMeasurableIrradiance.base = 0; + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->maxMeasurableIrradiance = u_maxMeasurableIrradiance.real; + offset += sizeof(this->maxMeasurableIrradiance); + union { + double real; + uint64_t base; + } u_minObservedIrradiance; + u_minObservedIrradiance.base = 0; + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->minObservedIrradiance = u_minObservedIrradiance.real; + offset += sizeof(this->minObservedIrradiance); + union { + double real; + uint64_t base; + } u_maxObservedIrradiance; + u_maxObservedIrradiance.base = 0; + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->maxObservedIrradiance = u_maxObservedIrradiance.real; + offset += sizeof(this->maxObservedIrradiance); + return offset; + } + + const char * getType(){ return "image_exposure_msgs/ImageExposureStatistics"; }; + const char * getMD5(){ return "334dc170ce6287d1de470f25be78dd9e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/image_exposure_msgs/SequenceExposureStatistics.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/image_exposure_msgs/SequenceExposureStatistics.h new file mode 100644 index 0000000..2ba1b31 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/image_exposure_msgs/SequenceExposureStatistics.h @@ -0,0 +1,250 @@ +#ifndef _ROS_image_exposure_msgs_SequenceExposureStatistics_h +#define _ROS_image_exposure_msgs_SequenceExposureStatistics_h + +#include +#include +#include +#include "ros/msg.h" +#include "image_exposure_msgs/ImageExposureStatistics.h" + +namespace image_exposure_msgs +{ + + class SequenceExposureStatistics : public ros::Msg + { + public: + uint32_t exposures_length; + typedef image_exposure_msgs::ImageExposureStatistics _exposures_type; + _exposures_type st_exposures; + _exposures_type * exposures; + typedef uint32_t _underExposed_type; + _underExposed_type underExposed; + typedef uint32_t _overExposed_type; + _overExposed_type overExposed; + typedef double _meanIrradiance_type; + _meanIrradiance_type meanIrradiance; + typedef double _minMeasurableIrradiance_type; + _minMeasurableIrradiance_type minMeasurableIrradiance; + typedef double _maxMeasurableIrradiance_type; + _maxMeasurableIrradiance_type maxMeasurableIrradiance; + typedef double _minObservedIrradiance_type; + _minObservedIrradiance_type minObservedIrradiance; + typedef double _maxObservedIrradiance_type; + _maxObservedIrradiance_type maxObservedIrradiance; + + SequenceExposureStatistics(): + exposures_length(0), exposures(NULL), + underExposed(0), + overExposed(0), + meanIrradiance(0), + minMeasurableIrradiance(0), + maxMeasurableIrradiance(0), + minObservedIrradiance(0), + maxObservedIrradiance(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->exposures_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->exposures_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->exposures_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->exposures_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->exposures_length); + for( uint32_t i = 0; i < exposures_length; i++){ + offset += this->exposures[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->underExposed >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->underExposed >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->underExposed >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->underExposed >> (8 * 3)) & 0xFF; + offset += sizeof(this->underExposed); + *(outbuffer + offset + 0) = (this->overExposed >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->overExposed >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->overExposed >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->overExposed >> (8 * 3)) & 0xFF; + offset += sizeof(this->overExposed); + union { + double real; + uint64_t base; + } u_meanIrradiance; + u_meanIrradiance.real = this->meanIrradiance; + *(outbuffer + offset + 0) = (u_meanIrradiance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_meanIrradiance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_meanIrradiance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_meanIrradiance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_meanIrradiance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_meanIrradiance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_meanIrradiance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_meanIrradiance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->meanIrradiance); + union { + double real; + uint64_t base; + } u_minMeasurableIrradiance; + u_minMeasurableIrradiance.real = this->minMeasurableIrradiance; + *(outbuffer + offset + 0) = (u_minMeasurableIrradiance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_minMeasurableIrradiance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_minMeasurableIrradiance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_minMeasurableIrradiance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_minMeasurableIrradiance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_minMeasurableIrradiance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_minMeasurableIrradiance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_minMeasurableIrradiance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->minMeasurableIrradiance); + union { + double real; + uint64_t base; + } u_maxMeasurableIrradiance; + u_maxMeasurableIrradiance.real = this->maxMeasurableIrradiance; + *(outbuffer + offset + 0) = (u_maxMeasurableIrradiance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_maxMeasurableIrradiance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_maxMeasurableIrradiance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_maxMeasurableIrradiance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_maxMeasurableIrradiance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_maxMeasurableIrradiance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_maxMeasurableIrradiance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_maxMeasurableIrradiance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->maxMeasurableIrradiance); + union { + double real; + uint64_t base; + } u_minObservedIrradiance; + u_minObservedIrradiance.real = this->minObservedIrradiance; + *(outbuffer + offset + 0) = (u_minObservedIrradiance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_minObservedIrradiance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_minObservedIrradiance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_minObservedIrradiance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_minObservedIrradiance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_minObservedIrradiance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_minObservedIrradiance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_minObservedIrradiance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->minObservedIrradiance); + union { + double real; + uint64_t base; + } u_maxObservedIrradiance; + u_maxObservedIrradiance.real = this->maxObservedIrradiance; + *(outbuffer + offset + 0) = (u_maxObservedIrradiance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_maxObservedIrradiance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_maxObservedIrradiance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_maxObservedIrradiance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_maxObservedIrradiance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_maxObservedIrradiance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_maxObservedIrradiance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_maxObservedIrradiance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->maxObservedIrradiance); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t exposures_lengthT = ((uint32_t) (*(inbuffer + offset))); + exposures_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + exposures_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + exposures_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->exposures_length); + if(exposures_lengthT > exposures_length) + this->exposures = (image_exposure_msgs::ImageExposureStatistics*)realloc(this->exposures, exposures_lengthT * sizeof(image_exposure_msgs::ImageExposureStatistics)); + exposures_length = exposures_lengthT; + for( uint32_t i = 0; i < exposures_length; i++){ + offset += this->st_exposures.deserialize(inbuffer + offset); + memcpy( &(this->exposures[i]), &(this->st_exposures), sizeof(image_exposure_msgs::ImageExposureStatistics)); + } + this->underExposed = ((uint32_t) (*(inbuffer + offset))); + this->underExposed |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->underExposed |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->underExposed |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->underExposed); + this->overExposed = ((uint32_t) (*(inbuffer + offset))); + this->overExposed |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->overExposed |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->overExposed |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->overExposed); + union { + double real; + uint64_t base; + } u_meanIrradiance; + u_meanIrradiance.base = 0; + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->meanIrradiance = u_meanIrradiance.real; + offset += sizeof(this->meanIrradiance); + union { + double real; + uint64_t base; + } u_minMeasurableIrradiance; + u_minMeasurableIrradiance.base = 0; + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->minMeasurableIrradiance = u_minMeasurableIrradiance.real; + offset += sizeof(this->minMeasurableIrradiance); + union { + double real; + uint64_t base; + } u_maxMeasurableIrradiance; + u_maxMeasurableIrradiance.base = 0; + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->maxMeasurableIrradiance = u_maxMeasurableIrradiance.real; + offset += sizeof(this->maxMeasurableIrradiance); + union { + double real; + uint64_t base; + } u_minObservedIrradiance; + u_minObservedIrradiance.base = 0; + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->minObservedIrradiance = u_minObservedIrradiance.real; + offset += sizeof(this->minObservedIrradiance); + union { + double real; + uint64_t base; + } u_maxObservedIrradiance; + u_maxObservedIrradiance.base = 0; + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->maxObservedIrradiance = u_maxObservedIrradiance.real; + offset += sizeof(this->maxObservedIrradiance); + return offset; + } + + const char * getType(){ return "image_exposure_msgs/SequenceExposureStatistics"; }; + const char * getMD5(){ return "2a4f3187c50e7b3544984e9e28ce4328"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/laser_assembler/AssembleScans.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/laser_assembler/AssembleScans.h new file mode 100644 index 0000000..7aa8745 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/laser_assembler/AssembleScans.h @@ -0,0 +1,123 @@ +#ifndef _ROS_SERVICE_AssembleScans_h +#define _ROS_SERVICE_AssembleScans_h +#include +#include +#include +#include "ros/msg.h" +#include "ros/time.h" +#include "sensor_msgs/PointCloud.h" + +namespace laser_assembler +{ + +static const char ASSEMBLESCANS[] = "laser_assembler/AssembleScans"; + + class AssembleScansRequest : public ros::Msg + { + public: + typedef ros::Time _begin_type; + _begin_type begin; + typedef ros::Time _end_type; + _end_type end; + + AssembleScansRequest(): + begin(), + end() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->begin.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->begin.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->begin.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->begin.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->begin.sec); + *(outbuffer + offset + 0) = (this->begin.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->begin.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->begin.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->begin.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->begin.nsec); + *(outbuffer + offset + 0) = (this->end.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->end.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->end.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->end.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->end.sec); + *(outbuffer + offset + 0) = (this->end.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->end.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->end.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->end.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->end.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->begin.sec = ((uint32_t) (*(inbuffer + offset))); + this->begin.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->begin.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->begin.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->begin.sec); + this->begin.nsec = ((uint32_t) (*(inbuffer + offset))); + this->begin.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->begin.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->begin.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->begin.nsec); + this->end.sec = ((uint32_t) (*(inbuffer + offset))); + this->end.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->end.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->end.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->end.sec); + this->end.nsec = ((uint32_t) (*(inbuffer + offset))); + this->end.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->end.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->end.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->end.nsec); + return offset; + } + + const char * getType(){ return ASSEMBLESCANS; }; + const char * getMD5(){ return "b341004f74e15bf5e1b2053a9183bdc7"; }; + + }; + + class AssembleScansResponse : public ros::Msg + { + public: + typedef sensor_msgs::PointCloud _cloud_type; + _cloud_type cloud; + + AssembleScansResponse(): + cloud() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->cloud.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->cloud.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return ASSEMBLESCANS; }; + const char * getMD5(){ return "4217b28a903e4ad7869a83b3653110ff"; }; + + }; + + class AssembleScans { + public: + typedef AssembleScansRequest Request; + typedef AssembleScansResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/laser_assembler/AssembleScans2.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/laser_assembler/AssembleScans2.h new file mode 100644 index 0000000..ae2f6b7 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/laser_assembler/AssembleScans2.h @@ -0,0 +1,123 @@ +#ifndef _ROS_SERVICE_AssembleScans2_h +#define _ROS_SERVICE_AssembleScans2_h +#include +#include +#include +#include "ros/msg.h" +#include "sensor_msgs/PointCloud2.h" +#include "ros/time.h" + +namespace laser_assembler +{ + +static const char ASSEMBLESCANS2[] = "laser_assembler/AssembleScans2"; + + class AssembleScans2Request : public ros::Msg + { + public: + typedef ros::Time _begin_type; + _begin_type begin; + typedef ros::Time _end_type; + _end_type end; + + AssembleScans2Request(): + begin(), + end() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->begin.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->begin.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->begin.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->begin.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->begin.sec); + *(outbuffer + offset + 0) = (this->begin.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->begin.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->begin.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->begin.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->begin.nsec); + *(outbuffer + offset + 0) = (this->end.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->end.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->end.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->end.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->end.sec); + *(outbuffer + offset + 0) = (this->end.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->end.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->end.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->end.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->end.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->begin.sec = ((uint32_t) (*(inbuffer + offset))); + this->begin.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->begin.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->begin.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->begin.sec); + this->begin.nsec = ((uint32_t) (*(inbuffer + offset))); + this->begin.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->begin.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->begin.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->begin.nsec); + this->end.sec = ((uint32_t) (*(inbuffer + offset))); + this->end.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->end.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->end.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->end.sec); + this->end.nsec = ((uint32_t) (*(inbuffer + offset))); + this->end.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->end.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->end.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->end.nsec); + return offset; + } + + const char * getType(){ return ASSEMBLESCANS2; }; + const char * getMD5(){ return "b341004f74e15bf5e1b2053a9183bdc7"; }; + + }; + + class AssembleScans2Response : public ros::Msg + { + public: + typedef sensor_msgs::PointCloud2 _cloud_type; + _cloud_type cloud; + + AssembleScans2Response(): + cloud() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->cloud.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->cloud.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return ASSEMBLESCANS2; }; + const char * getMD5(){ return "96cec5374164b3b3d1d7ef5d7628a7ed"; }; + + }; + + class AssembleScans2 { + public: + typedef AssembleScans2Request Request; + typedef AssembleScans2Response Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/main.cpp b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/main.cpp new file mode 100644 index 0000000..1e769e4 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/main.cpp @@ -0,0 +1,118 @@ +// +// main.cpp +// ros_test +// +// Created by Orly Natan on 13/4/18. +// Copyright © 2018 Orly Natan. All rights reserved. +// + +/* (1) +#include + +int main(int argc, const char * argv[]) { + // insert code here... + std::cout << "Hello, World!\n"; + return 0; +} +*/ + +/* (2) + * rosserial Publisher Example + * Prints "hello ROS!" + */ + + +/* +#include "wrapper.h" + +char rosSrvrIp[] = "149.171.153.49"; +char hello[] = "Hello ROS From C/XCode!"; + + + int main() + { + ros_init_pub(rosSrvrIp); + ros_pub(hello); + } + + +*/ + + + + + + + + + + + + + + + + + +/* +#include "ros.h" +#include "std_msgs/String.h" +#include + +ros::NodeHandle nh; + +std_msgs::String str_msg; +ros::Publisher chatter("chatter", &str_msg); + +char rosSrvrIp[] = "149.171.153.49"; //192.168.15.121"; +char hello[] = "Hello ROS!"; + +int main() +{ + //nh.initNode(); + + + nh.initNode(rosSrvrIp); + nh.advertise(chatter); + + while(1) { + str_msg.data = hello; + chatter.publish( &str_msg ); + nh.spinOnce(); + printf("chattered\n"); + sleep(1); + } + +}*/ + +/* (3) + * rosserial_embeddedlinux subscriber example + * + * Prints a string sent on a subscribed ros topic. + * The string can be sent with e.g. + * $ rostopic pub chatter std_msgs/String -- "Hello Embedded Linux" + */ +/* +#include "ros.h" +#include "std_msgs/String.h" +#include + +ros::NodeHandle nh; +char rosSrvrIp[] = "149.171.153.52"; + +void messageCb(const std_msgs::String& received_msg){ + printf("Received subscribed chatter message: %s\n", received_msg.data); +} +ros::Subscriber sub("chatter", messageCb ); + +int main() +{ + //nh.initNode(); + nh.initNode(rosSrvrIp); + nh.subscribe(sub); + + while(1) { + sleep(1); + nh.spinOnce(); + } +}*/ diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/map_msgs/GetMapROI.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/map_msgs/GetMapROI.h new file mode 100644 index 0000000..3d39495 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/map_msgs/GetMapROI.h @@ -0,0 +1,204 @@ +#ifndef _ROS_SERVICE_GetMapROI_h +#define _ROS_SERVICE_GetMapROI_h +#include +#include +#include +#include "ros/msg.h" +#include "nav_msgs/OccupancyGrid.h" + +namespace map_msgs +{ + +static const char GETMAPROI[] = "map_msgs/GetMapROI"; + + class GetMapROIRequest : public ros::Msg + { + public: + typedef double _x_type; + _x_type x; + typedef double _y_type; + _y_type y; + typedef double _l_x_type; + _l_x_type l_x; + typedef double _l_y_type; + _l_y_type l_y; + + GetMapROIRequest(): + x(0), + y(0), + l_x(0), + l_y(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_x; + u_x.real = this->x; + *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_x.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_x.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_x.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_x.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->x); + union { + double real; + uint64_t base; + } u_y; + u_y.real = this->y; + *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_y.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_y.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_y.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_y.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->y); + union { + double real; + uint64_t base; + } u_l_x; + u_l_x.real = this->l_x; + *(outbuffer + offset + 0) = (u_l_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_l_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_l_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_l_x.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_l_x.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_l_x.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_l_x.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_l_x.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->l_x); + union { + double real; + uint64_t base; + } u_l_y; + u_l_y.real = this->l_y; + *(outbuffer + offset + 0) = (u_l_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_l_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_l_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_l_y.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_l_y.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_l_y.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_l_y.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_l_y.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->l_y); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_x; + u_x.base = 0; + u_x.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->x = u_x.real; + offset += sizeof(this->x); + union { + double real; + uint64_t base; + } u_y; + u_y.base = 0; + u_y.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->y = u_y.real; + offset += sizeof(this->y); + union { + double real; + uint64_t base; + } u_l_x; + u_l_x.base = 0; + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->l_x = u_l_x.real; + offset += sizeof(this->l_x); + union { + double real; + uint64_t base; + } u_l_y; + u_l_y.base = 0; + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->l_y = u_l_y.real; + offset += sizeof(this->l_y); + return offset; + } + + const char * getType(){ return GETMAPROI; }; + const char * getMD5(){ return "43c2ff8f45af555c0eaf070c401e9a47"; }; + + }; + + class GetMapROIResponse : public ros::Msg + { + public: + typedef nav_msgs::OccupancyGrid _sub_map_type; + _sub_map_type sub_map; + + GetMapROIResponse(): + sub_map() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->sub_map.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->sub_map.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return GETMAPROI; }; + const char * getMD5(){ return "4d1986519c00d81967d2891a606b234c"; }; + + }; + + class GetMapROI { + public: + typedef GetMapROIRequest Request; + typedef GetMapROIResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/map_msgs/GetPointMap.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/map_msgs/GetPointMap.h new file mode 100644 index 0000000..3da8ab1 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/map_msgs/GetPointMap.h @@ -0,0 +1,76 @@ +#ifndef _ROS_SERVICE_GetPointMap_h +#define _ROS_SERVICE_GetPointMap_h +#include +#include +#include +#include "ros/msg.h" +#include "sensor_msgs/PointCloud2.h" + +namespace map_msgs +{ + +static const char GETPOINTMAP[] = "map_msgs/GetPointMap"; + + class GetPointMapRequest : public ros::Msg + { + public: + + GetPointMapRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return GETPOINTMAP; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class GetPointMapResponse : public ros::Msg + { + public: + typedef sensor_msgs::PointCloud2 _map_type; + _map_type map; + + GetPointMapResponse(): + map() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->map.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->map.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return GETPOINTMAP; }; + const char * getMD5(){ return "b84fbb39505086eb6a62d933c75cb7b4"; }; + + }; + + class GetPointMap { + public: + typedef GetPointMapRequest Request; + typedef GetPointMapResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/map_msgs/GetPointMapROI.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/map_msgs/GetPointMapROI.h new file mode 100644 index 0000000..b7c4cda --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/map_msgs/GetPointMapROI.h @@ -0,0 +1,300 @@ +#ifndef _ROS_SERVICE_GetPointMapROI_h +#define _ROS_SERVICE_GetPointMapROI_h +#include +#include +#include +#include "ros/msg.h" +#include "sensor_msgs/PointCloud2.h" + +namespace map_msgs +{ + +static const char GETPOINTMAPROI[] = "map_msgs/GetPointMapROI"; + + class GetPointMapROIRequest : public ros::Msg + { + public: + typedef double _x_type; + _x_type x; + typedef double _y_type; + _y_type y; + typedef double _z_type; + _z_type z; + typedef double _r_type; + _r_type r; + typedef double _l_x_type; + _l_x_type l_x; + typedef double _l_y_type; + _l_y_type l_y; + typedef double _l_z_type; + _l_z_type l_z; + + GetPointMapROIRequest(): + x(0), + y(0), + z(0), + r(0), + l_x(0), + l_y(0), + l_z(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_x; + u_x.real = this->x; + *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_x.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_x.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_x.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_x.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->x); + union { + double real; + uint64_t base; + } u_y; + u_y.real = this->y; + *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_y.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_y.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_y.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_y.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->y); + union { + double real; + uint64_t base; + } u_z; + u_z.real = this->z; + *(outbuffer + offset + 0) = (u_z.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_z.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_z.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_z.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_z.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_z.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_z.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_z.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->z); + union { + double real; + uint64_t base; + } u_r; + u_r.real = this->r; + *(outbuffer + offset + 0) = (u_r.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_r.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_r.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_r.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_r.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_r.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_r.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_r.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->r); + union { + double real; + uint64_t base; + } u_l_x; + u_l_x.real = this->l_x; + *(outbuffer + offset + 0) = (u_l_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_l_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_l_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_l_x.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_l_x.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_l_x.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_l_x.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_l_x.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->l_x); + union { + double real; + uint64_t base; + } u_l_y; + u_l_y.real = this->l_y; + *(outbuffer + offset + 0) = (u_l_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_l_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_l_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_l_y.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_l_y.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_l_y.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_l_y.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_l_y.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->l_y); + union { + double real; + uint64_t base; + } u_l_z; + u_l_z.real = this->l_z; + *(outbuffer + offset + 0) = (u_l_z.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_l_z.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_l_z.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_l_z.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_l_z.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_l_z.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_l_z.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_l_z.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->l_z); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_x; + u_x.base = 0; + u_x.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->x = u_x.real; + offset += sizeof(this->x); + union { + double real; + uint64_t base; + } u_y; + u_y.base = 0; + u_y.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->y = u_y.real; + offset += sizeof(this->y); + union { + double real; + uint64_t base; + } u_z; + u_z.base = 0; + u_z.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->z = u_z.real; + offset += sizeof(this->z); + union { + double real; + uint64_t base; + } u_r; + u_r.base = 0; + u_r.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_r.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_r.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_r.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_r.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_r.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_r.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_r.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->r = u_r.real; + offset += sizeof(this->r); + union { + double real; + uint64_t base; + } u_l_x; + u_l_x.base = 0; + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->l_x = u_l_x.real; + offset += sizeof(this->l_x); + union { + double real; + uint64_t base; + } u_l_y; + u_l_y.base = 0; + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->l_y = u_l_y.real; + offset += sizeof(this->l_y); + union { + double real; + uint64_t base; + } u_l_z; + u_l_z.base = 0; + u_l_z.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_l_z.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_l_z.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_l_z.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_l_z.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_l_z.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_l_z.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_l_z.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->l_z = u_l_z.real; + offset += sizeof(this->l_z); + return offset; + } + + const char * getType(){ return GETPOINTMAPROI; }; + const char * getMD5(){ return "895f7e437a9a6dd225316872b187a303"; }; + + }; + + class GetPointMapROIResponse : public ros::Msg + { + public: + typedef sensor_msgs::PointCloud2 _sub_map_type; + _sub_map_type sub_map; + + GetPointMapROIResponse(): + sub_map() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->sub_map.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->sub_map.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return GETPOINTMAPROI; }; + const char * getMD5(){ return "313769f8b0e724525c6463336cbccd63"; }; + + }; + + class GetPointMapROI { + public: + typedef GetPointMapROIRequest Request; + typedef GetPointMapROIResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/map_msgs/OccupancyGridUpdate.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/map_msgs/OccupancyGridUpdate.h new file mode 100644 index 0000000..23590d2 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/map_msgs/OccupancyGridUpdate.h @@ -0,0 +1,156 @@ +#ifndef _ROS_map_msgs_OccupancyGridUpdate_h +#define _ROS_map_msgs_OccupancyGridUpdate_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace map_msgs +{ + + class OccupancyGridUpdate : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef int32_t _x_type; + _x_type x; + typedef int32_t _y_type; + _y_type y; + typedef uint32_t _width_type; + _width_type width; + typedef uint32_t _height_type; + _height_type height; + uint32_t data_length; + typedef int8_t _data_type; + _data_type st_data; + _data_type * data; + + OccupancyGridUpdate(): + header(), + x(0), + y(0), + width(0), + height(0), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + union { + int32_t real; + uint32_t base; + } u_x; + u_x.real = this->x; + *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->x); + union { + int32_t real; + uint32_t base; + } u_y; + u_y.real = this->y; + *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->y); + *(outbuffer + offset + 0) = (this->width >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->width >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->width >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->width >> (8 * 3)) & 0xFF; + offset += sizeof(this->width); + *(outbuffer + offset + 0) = (this->height >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->height >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->height >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->height >> (8 * 3)) & 0xFF; + offset += sizeof(this->height); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + union { + int8_t real; + uint8_t base; + } u_datai; + u_datai.real = this->data[i]; + *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + union { + int32_t real; + uint32_t base; + } u_x; + u_x.base = 0; + u_x.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->x = u_x.real; + offset += sizeof(this->x); + union { + int32_t real; + uint32_t base; + } u_y; + u_y.base = 0; + u_y.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->y = u_y.real; + offset += sizeof(this->y); + this->width = ((uint32_t) (*(inbuffer + offset))); + this->width |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->width |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->width |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->width); + this->height = ((uint32_t) (*(inbuffer + offset))); + this->height |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->height |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->height |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->height); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (int8_t*)realloc(this->data, data_lengthT * sizeof(int8_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + union { + int8_t real; + uint8_t base; + } u_st_data; + u_st_data.base = 0; + u_st_data.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->st_data = u_st_data.real; + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(int8_t)); + } + return offset; + } + + const char * getType(){ return "map_msgs/OccupancyGridUpdate"; }; + const char * getMD5(){ return "b295be292b335c34718bd939deebe1c9"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/map_msgs/PointCloud2Update.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/map_msgs/PointCloud2Update.h new file mode 100644 index 0000000..eee4cb1 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/map_msgs/PointCloud2Update.h @@ -0,0 +1,65 @@ +#ifndef _ROS_map_msgs_PointCloud2Update_h +#define _ROS_map_msgs_PointCloud2Update_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "sensor_msgs/PointCloud2.h" + +namespace map_msgs +{ + + class PointCloud2Update : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef uint32_t _type_type; + _type_type type; + typedef sensor_msgs::PointCloud2 _points_type; + _points_type points; + enum { ADD = 0 }; + enum { DELETE = 1 }; + + PointCloud2Update(): + header(), + type(0), + points() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->type >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->type >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->type >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->type >> (8 * 3)) & 0xFF; + offset += sizeof(this->type); + offset += this->points.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + this->type = ((uint32_t) (*(inbuffer + offset))); + this->type |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->type |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->type |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->type); + offset += this->points.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "map_msgs/PointCloud2Update"; }; + const char * getMD5(){ return "6c58e4f249ae9cd2b24fb1ee0f99195e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/map_msgs/ProjectedMap.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/map_msgs/ProjectedMap.h new file mode 100644 index 0000000..84e5be5 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/map_msgs/ProjectedMap.h @@ -0,0 +1,108 @@ +#ifndef _ROS_map_msgs_ProjectedMap_h +#define _ROS_map_msgs_ProjectedMap_h + +#include +#include +#include +#include "ros/msg.h" +#include "nav_msgs/OccupancyGrid.h" + +namespace map_msgs +{ + + class ProjectedMap : public ros::Msg + { + public: + typedef nav_msgs::OccupancyGrid _map_type; + _map_type map; + typedef double _min_z_type; + _min_z_type min_z; + typedef double _max_z_type; + _max_z_type max_z; + + ProjectedMap(): + map(), + min_z(0), + max_z(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->map.serialize(outbuffer + offset); + union { + double real; + uint64_t base; + } u_min_z; + u_min_z.real = this->min_z; + *(outbuffer + offset + 0) = (u_min_z.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_min_z.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_min_z.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_min_z.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_min_z.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_min_z.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_min_z.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_min_z.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->min_z); + union { + double real; + uint64_t base; + } u_max_z; + u_max_z.real = this->max_z; + *(outbuffer + offset + 0) = (u_max_z.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_max_z.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_max_z.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_max_z.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_max_z.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_max_z.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_max_z.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_max_z.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->max_z); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->map.deserialize(inbuffer + offset); + union { + double real; + uint64_t base; + } u_min_z; + u_min_z.base = 0; + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->min_z = u_min_z.real; + offset += sizeof(this->min_z); + union { + double real; + uint64_t base; + } u_max_z; + u_max_z.base = 0; + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->max_z = u_max_z.real; + offset += sizeof(this->max_z); + return offset; + } + + const char * getType(){ return "map_msgs/ProjectedMap"; }; + const char * getMD5(){ return "7bbe8f96e45089681dc1ea7d023cbfca"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/map_msgs/ProjectedMapInfo.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/map_msgs/ProjectedMapInfo.h new file mode 100644 index 0000000..5c7456e --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/map_msgs/ProjectedMapInfo.h @@ -0,0 +1,247 @@ +#ifndef _ROS_map_msgs_ProjectedMapInfo_h +#define _ROS_map_msgs_ProjectedMapInfo_h + +#include +#include +#include +#include "ros/msg.h" + +namespace map_msgs +{ + + class ProjectedMapInfo : public ros::Msg + { + public: + typedef const char* _frame_id_type; + _frame_id_type frame_id; + typedef double _x_type; + _x_type x; + typedef double _y_type; + _y_type y; + typedef double _width_type; + _width_type width; + typedef double _height_type; + _height_type height; + typedef double _min_z_type; + _min_z_type min_z; + typedef double _max_z_type; + _max_z_type max_z; + + ProjectedMapInfo(): + frame_id(""), + x(0), + y(0), + width(0), + height(0), + min_z(0), + max_z(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_frame_id = strlen(this->frame_id); + varToArr(outbuffer + offset, length_frame_id); + offset += 4; + memcpy(outbuffer + offset, this->frame_id, length_frame_id); + offset += length_frame_id; + union { + double real; + uint64_t base; + } u_x; + u_x.real = this->x; + *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_x.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_x.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_x.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_x.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->x); + union { + double real; + uint64_t base; + } u_y; + u_y.real = this->y; + *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_y.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_y.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_y.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_y.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->y); + union { + double real; + uint64_t base; + } u_width; + u_width.real = this->width; + *(outbuffer + offset + 0) = (u_width.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_width.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_width.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_width.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_width.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_width.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_width.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_width.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->width); + union { + double real; + uint64_t base; + } u_height; + u_height.real = this->height; + *(outbuffer + offset + 0) = (u_height.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_height.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_height.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_height.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_height.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_height.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_height.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_height.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->height); + union { + double real; + uint64_t base; + } u_min_z; + u_min_z.real = this->min_z; + *(outbuffer + offset + 0) = (u_min_z.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_min_z.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_min_z.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_min_z.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_min_z.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_min_z.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_min_z.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_min_z.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->min_z); + union { + double real; + uint64_t base; + } u_max_z; + u_max_z.real = this->max_z; + *(outbuffer + offset + 0) = (u_max_z.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_max_z.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_max_z.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_max_z.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_max_z.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_max_z.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_max_z.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_max_z.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->max_z); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_frame_id; + arrToVar(length_frame_id, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_frame_id; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_frame_id-1]=0; + this->frame_id = (char *)(inbuffer + offset-1); + offset += length_frame_id; + union { + double real; + uint64_t base; + } u_x; + u_x.base = 0; + u_x.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->x = u_x.real; + offset += sizeof(this->x); + union { + double real; + uint64_t base; + } u_y; + u_y.base = 0; + u_y.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->y = u_y.real; + offset += sizeof(this->y); + union { + double real; + uint64_t base; + } u_width; + u_width.base = 0; + u_width.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_width.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_width.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_width.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_width.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_width.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_width.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_width.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->width = u_width.real; + offset += sizeof(this->width); + union { + double real; + uint64_t base; + } u_height; + u_height.base = 0; + u_height.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_height.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_height.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_height.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_height.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_height.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_height.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_height.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->height = u_height.real; + offset += sizeof(this->height); + union { + double real; + uint64_t base; + } u_min_z; + u_min_z.base = 0; + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->min_z = u_min_z.real; + offset += sizeof(this->min_z); + union { + double real; + uint64_t base; + } u_max_z; + u_max_z.base = 0; + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->max_z = u_max_z.real; + offset += sizeof(this->max_z); + return offset; + } + + const char * getType(){ return "map_msgs/ProjectedMapInfo"; }; + const char * getMD5(){ return "2dc10595ae94de23f22f8a6d2a0eef7a"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/map_msgs/ProjectedMapsInfo.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/map_msgs/ProjectedMapsInfo.h new file mode 100644 index 0000000..b515b94 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/map_msgs/ProjectedMapsInfo.h @@ -0,0 +1,96 @@ +#ifndef _ROS_SERVICE_ProjectedMapsInfo_h +#define _ROS_SERVICE_ProjectedMapsInfo_h +#include +#include +#include +#include "ros/msg.h" +#include "map_msgs/ProjectedMapInfo.h" + +namespace map_msgs +{ + +static const char PROJECTEDMAPSINFO[] = "map_msgs/ProjectedMapsInfo"; + + class ProjectedMapsInfoRequest : public ros::Msg + { + public: + uint32_t projected_maps_info_length; + typedef map_msgs::ProjectedMapInfo _projected_maps_info_type; + _projected_maps_info_type st_projected_maps_info; + _projected_maps_info_type * projected_maps_info; + + ProjectedMapsInfoRequest(): + projected_maps_info_length(0), projected_maps_info(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->projected_maps_info_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->projected_maps_info_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->projected_maps_info_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->projected_maps_info_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->projected_maps_info_length); + for( uint32_t i = 0; i < projected_maps_info_length; i++){ + offset += this->projected_maps_info[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t projected_maps_info_lengthT = ((uint32_t) (*(inbuffer + offset))); + projected_maps_info_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + projected_maps_info_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + projected_maps_info_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->projected_maps_info_length); + if(projected_maps_info_lengthT > projected_maps_info_length) + this->projected_maps_info = (map_msgs::ProjectedMapInfo*)realloc(this->projected_maps_info, projected_maps_info_lengthT * sizeof(map_msgs::ProjectedMapInfo)); + projected_maps_info_length = projected_maps_info_lengthT; + for( uint32_t i = 0; i < projected_maps_info_length; i++){ + offset += this->st_projected_maps_info.deserialize(inbuffer + offset); + memcpy( &(this->projected_maps_info[i]), &(this->st_projected_maps_info), sizeof(map_msgs::ProjectedMapInfo)); + } + return offset; + } + + const char * getType(){ return PROJECTEDMAPSINFO; }; + const char * getMD5(){ return "d7980a33202421c8cd74565e57a4d229"; }; + + }; + + class ProjectedMapsInfoResponse : public ros::Msg + { + public: + + ProjectedMapsInfoResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return PROJECTEDMAPSINFO; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class ProjectedMapsInfo { + public: + typedef ProjectedMapsInfoRequest Request; + typedef ProjectedMapsInfoResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/map_msgs/SaveMap.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/map_msgs/SaveMap.h new file mode 100644 index 0000000..c304c22 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/map_msgs/SaveMap.h @@ -0,0 +1,76 @@ +#ifndef _ROS_SERVICE_SaveMap_h +#define _ROS_SERVICE_SaveMap_h +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/String.h" + +namespace map_msgs +{ + +static const char SAVEMAP[] = "map_msgs/SaveMap"; + + class SaveMapRequest : public ros::Msg + { + public: + typedef std_msgs::String _filename_type; + _filename_type filename; + + SaveMapRequest(): + filename() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->filename.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->filename.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return SAVEMAP; }; + const char * getMD5(){ return "716e25f9d9dc76ceba197f93cbf05dc7"; }; + + }; + + class SaveMapResponse : public ros::Msg + { + public: + + SaveMapResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return SAVEMAP; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class SaveMap { + public: + typedef SaveMapRequest Request; + typedef SaveMapResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/map_msgs/SetMapProjections.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/map_msgs/SetMapProjections.h new file mode 100644 index 0000000..1ead172 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/map_msgs/SetMapProjections.h @@ -0,0 +1,96 @@ +#ifndef _ROS_SERVICE_SetMapProjections_h +#define _ROS_SERVICE_SetMapProjections_h +#include +#include +#include +#include "ros/msg.h" +#include "map_msgs/ProjectedMapInfo.h" + +namespace map_msgs +{ + +static const char SETMAPPROJECTIONS[] = "map_msgs/SetMapProjections"; + + class SetMapProjectionsRequest : public ros::Msg + { + public: + + SetMapProjectionsRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return SETMAPPROJECTIONS; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class SetMapProjectionsResponse : public ros::Msg + { + public: + uint32_t projected_maps_info_length; + typedef map_msgs::ProjectedMapInfo _projected_maps_info_type; + _projected_maps_info_type st_projected_maps_info; + _projected_maps_info_type * projected_maps_info; + + SetMapProjectionsResponse(): + projected_maps_info_length(0), projected_maps_info(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->projected_maps_info_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->projected_maps_info_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->projected_maps_info_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->projected_maps_info_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->projected_maps_info_length); + for( uint32_t i = 0; i < projected_maps_info_length; i++){ + offset += this->projected_maps_info[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t projected_maps_info_lengthT = ((uint32_t) (*(inbuffer + offset))); + projected_maps_info_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + projected_maps_info_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + projected_maps_info_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->projected_maps_info_length); + if(projected_maps_info_lengthT > projected_maps_info_length) + this->projected_maps_info = (map_msgs::ProjectedMapInfo*)realloc(this->projected_maps_info, projected_maps_info_lengthT * sizeof(map_msgs::ProjectedMapInfo)); + projected_maps_info_length = projected_maps_info_lengthT; + for( uint32_t i = 0; i < projected_maps_info_length; i++){ + offset += this->st_projected_maps_info.deserialize(inbuffer + offset); + memcpy( &(this->projected_maps_info[i]), &(this->st_projected_maps_info), sizeof(map_msgs::ProjectedMapInfo)); + } + return offset; + } + + const char * getType(){ return SETMAPPROJECTIONS; }; + const char * getMD5(){ return "d7980a33202421c8cd74565e57a4d229"; }; + + }; + + class SetMapProjections { + public: + typedef SetMapProjectionsRequest Request; + typedef SetMapProjectionsResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseAction.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseAction.h new file mode 100644 index 0000000..ad79c6a --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_move_base_msgs_MoveBaseAction_h +#define _ROS_move_base_msgs_MoveBaseAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "move_base_msgs/MoveBaseActionGoal.h" +#include "move_base_msgs/MoveBaseActionResult.h" +#include "move_base_msgs/MoveBaseActionFeedback.h" + +namespace move_base_msgs +{ + + class MoveBaseAction : public ros::Msg + { + public: + typedef move_base_msgs::MoveBaseActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef move_base_msgs::MoveBaseActionResult _action_result_type; + _action_result_type action_result; + typedef move_base_msgs::MoveBaseActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + MoveBaseAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "move_base_msgs/MoveBaseAction"; }; + const char * getMD5(){ return "70b6aca7c7f7746d8d1609ad94c80bb8"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseActionFeedback.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseActionFeedback.h new file mode 100644 index 0000000..1cfebc6 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_move_base_msgs_MoveBaseActionFeedback_h +#define _ROS_move_base_msgs_MoveBaseActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "move_base_msgs/MoveBaseFeedback.h" + +namespace move_base_msgs +{ + + class MoveBaseActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef move_base_msgs::MoveBaseFeedback _feedback_type; + _feedback_type feedback; + + MoveBaseActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "move_base_msgs/MoveBaseActionFeedback"; }; + const char * getMD5(){ return "7d1870ff6e0decea702b943b5af0b42e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseActionGoal.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseActionGoal.h new file mode 100644 index 0000000..686c496 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_move_base_msgs_MoveBaseActionGoal_h +#define _ROS_move_base_msgs_MoveBaseActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "move_base_msgs/MoveBaseGoal.h" + +namespace move_base_msgs +{ + + class MoveBaseActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef move_base_msgs::MoveBaseGoal _goal_type; + _goal_type goal; + + MoveBaseActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "move_base_msgs/MoveBaseActionGoal"; }; + const char * getMD5(){ return "660d6895a1b9a16dce51fbdd9a64a56b"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseActionResult.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseActionResult.h new file mode 100644 index 0000000..b9614e5 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_move_base_msgs_MoveBaseActionResult_h +#define _ROS_move_base_msgs_MoveBaseActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "move_base_msgs/MoveBaseResult.h" + +namespace move_base_msgs +{ + + class MoveBaseActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef move_base_msgs::MoveBaseResult _result_type; + _result_type result; + + MoveBaseActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "move_base_msgs/MoveBaseActionResult"; }; + const char * getMD5(){ return "1eb06eeff08fa7ea874431638cb52332"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseFeedback.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseFeedback.h new file mode 100644 index 0000000..09adc4f --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseFeedback.h @@ -0,0 +1,44 @@ +#ifndef _ROS_move_base_msgs_MoveBaseFeedback_h +#define _ROS_move_base_msgs_MoveBaseFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/PoseStamped.h" + +namespace move_base_msgs +{ + + class MoveBaseFeedback : public ros::Msg + { + public: + typedef geometry_msgs::PoseStamped _base_position_type; + _base_position_type base_position; + + MoveBaseFeedback(): + base_position() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->base_position.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->base_position.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "move_base_msgs/MoveBaseFeedback"; }; + const char * getMD5(){ return "3fb824c456a757373a226f6d08071bf0"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseGoal.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseGoal.h new file mode 100644 index 0000000..d228217 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseGoal.h @@ -0,0 +1,44 @@ +#ifndef _ROS_move_base_msgs_MoveBaseGoal_h +#define _ROS_move_base_msgs_MoveBaseGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/PoseStamped.h" + +namespace move_base_msgs +{ + + class MoveBaseGoal : public ros::Msg + { + public: + typedef geometry_msgs::PoseStamped _target_pose_type; + _target_pose_type target_pose; + + MoveBaseGoal(): + target_pose() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->target_pose.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->target_pose.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "move_base_msgs/MoveBaseGoal"; }; + const char * getMD5(){ return "257d089627d7eb7136c24d3593d05a16"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseResult.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseResult.h new file mode 100644 index 0000000..c43c536 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/move_base_msgs/MoveBaseResult.h @@ -0,0 +1,38 @@ +#ifndef _ROS_move_base_msgs_MoveBaseResult_h +#define _ROS_move_base_msgs_MoveBaseResult_h + +#include +#include +#include +#include "ros/msg.h" + +namespace move_base_msgs +{ + + class MoveBaseResult : public ros::Msg + { + public: + + MoveBaseResult() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "move_base_msgs/MoveBaseResult"; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/GetMap.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/GetMap.h new file mode 100644 index 0000000..ef7e3fa --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/GetMap.h @@ -0,0 +1,76 @@ +#ifndef _ROS_SERVICE_GetMap_h +#define _ROS_SERVICE_GetMap_h +#include +#include +#include +#include "ros/msg.h" +#include "nav_msgs/OccupancyGrid.h" + +namespace nav_msgs +{ + +static const char GETMAP[] = "nav_msgs/GetMap"; + + class GetMapRequest : public ros::Msg + { + public: + + GetMapRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return GETMAP; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class GetMapResponse : public ros::Msg + { + public: + typedef nav_msgs::OccupancyGrid _map_type; + _map_type map; + + GetMapResponse(): + map() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->map.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->map.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return GETMAP; }; + const char * getMD5(){ return "6cdd0a18e0aff5b0a3ca2326a89b54ff"; }; + + }; + + class GetMap { + public: + typedef GetMapRequest Request; + typedef GetMapResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapAction.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapAction.h new file mode 100644 index 0000000..56e8299 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_nav_msgs_GetMapAction_h +#define _ROS_nav_msgs_GetMapAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "nav_msgs/GetMapActionGoal.h" +#include "nav_msgs/GetMapActionResult.h" +#include "nav_msgs/GetMapActionFeedback.h" + +namespace nav_msgs +{ + + class GetMapAction : public ros::Msg + { + public: + typedef nav_msgs::GetMapActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef nav_msgs::GetMapActionResult _action_result_type; + _action_result_type action_result; + typedef nav_msgs::GetMapActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + GetMapAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "nav_msgs/GetMapAction"; }; + const char * getMD5(){ return "e611ad23fbf237c031b7536416dc7cd7"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapActionFeedback.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapActionFeedback.h new file mode 100644 index 0000000..fb60003 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_nav_msgs_GetMapActionFeedback_h +#define _ROS_nav_msgs_GetMapActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "nav_msgs/GetMapFeedback.h" + +namespace nav_msgs +{ + + class GetMapActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef nav_msgs::GetMapFeedback _feedback_type; + _feedback_type feedback; + + GetMapActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "nav_msgs/GetMapActionFeedback"; }; + const char * getMD5(){ return "aae20e09065c3809e8a8e87c4c8953fd"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapActionGoal.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapActionGoal.h new file mode 100644 index 0000000..da4244a --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_nav_msgs_GetMapActionGoal_h +#define _ROS_nav_msgs_GetMapActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "nav_msgs/GetMapGoal.h" + +namespace nav_msgs +{ + + class GetMapActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef nav_msgs::GetMapGoal _goal_type; + _goal_type goal; + + GetMapActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "nav_msgs/GetMapActionGoal"; }; + const char * getMD5(){ return "4b30be6cd12b9e72826df56b481f40e0"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapActionResult.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapActionResult.h new file mode 100644 index 0000000..f614a35 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_nav_msgs_GetMapActionResult_h +#define _ROS_nav_msgs_GetMapActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "nav_msgs/GetMapResult.h" + +namespace nav_msgs +{ + + class GetMapActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef nav_msgs::GetMapResult _result_type; + _result_type result; + + GetMapActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "nav_msgs/GetMapActionResult"; }; + const char * getMD5(){ return "ac66e5b9a79bb4bbd33dab245236c892"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapFeedback.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapFeedback.h new file mode 100644 index 0000000..e3b4560 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapFeedback.h @@ -0,0 +1,38 @@ +#ifndef _ROS_nav_msgs_GetMapFeedback_h +#define _ROS_nav_msgs_GetMapFeedback_h + +#include +#include +#include +#include "ros/msg.h" + +namespace nav_msgs +{ + + class GetMapFeedback : public ros::Msg + { + public: + + GetMapFeedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "nav_msgs/GetMapFeedback"; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapGoal.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapGoal.h new file mode 100644 index 0000000..88a17c5 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapGoal.h @@ -0,0 +1,38 @@ +#ifndef _ROS_nav_msgs_GetMapGoal_h +#define _ROS_nav_msgs_GetMapGoal_h + +#include +#include +#include +#include "ros/msg.h" + +namespace nav_msgs +{ + + class GetMapGoal : public ros::Msg + { + public: + + GetMapGoal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "nav_msgs/GetMapGoal"; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapResult.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapResult.h new file mode 100644 index 0000000..1ef8fbd --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/GetMapResult.h @@ -0,0 +1,44 @@ +#ifndef _ROS_nav_msgs_GetMapResult_h +#define _ROS_nav_msgs_GetMapResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "nav_msgs/OccupancyGrid.h" + +namespace nav_msgs +{ + + class GetMapResult : public ros::Msg + { + public: + typedef nav_msgs::OccupancyGrid _map_type; + _map_type map; + + GetMapResult(): + map() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->map.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->map.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "nav_msgs/GetMapResult"; }; + const char * getMD5(){ return "6cdd0a18e0aff5b0a3ca2326a89b54ff"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/GetPlan.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/GetPlan.h new file mode 100644 index 0000000..fe312b2 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/GetPlan.h @@ -0,0 +1,111 @@ +#ifndef _ROS_SERVICE_GetPlan_h +#define _ROS_SERVICE_GetPlan_h +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/PoseStamped.h" +#include "nav_msgs/Path.h" + +namespace nav_msgs +{ + +static const char GETPLAN[] = "nav_msgs/GetPlan"; + + class GetPlanRequest : public ros::Msg + { + public: + typedef geometry_msgs::PoseStamped _start_type; + _start_type start; + typedef geometry_msgs::PoseStamped _goal_type; + _goal_type goal; + typedef float _tolerance_type; + _tolerance_type tolerance; + + GetPlanRequest(): + start(), + goal(), + tolerance(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->start.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + union { + float real; + uint32_t base; + } u_tolerance; + u_tolerance.real = this->tolerance; + *(outbuffer + offset + 0) = (u_tolerance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_tolerance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_tolerance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_tolerance.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->tolerance); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->start.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + union { + float real; + uint32_t base; + } u_tolerance; + u_tolerance.base = 0; + u_tolerance.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_tolerance.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_tolerance.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_tolerance.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->tolerance = u_tolerance.real; + offset += sizeof(this->tolerance); + return offset; + } + + const char * getType(){ return GETPLAN; }; + const char * getMD5(){ return "e25a43e0752bcca599a8c2eef8282df8"; }; + + }; + + class GetPlanResponse : public ros::Msg + { + public: + typedef nav_msgs::Path _plan_type; + _plan_type plan; + + GetPlanResponse(): + plan() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->plan.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->plan.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return GETPLAN; }; + const char * getMD5(){ return "0002bc113c0259d71f6cf8cbc9430e18"; }; + + }; + + class GetPlan { + public: + typedef GetPlanRequest Request; + typedef GetPlanResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/GridCells.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/GridCells.h new file mode 100644 index 0000000..6c41cc6 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/GridCells.h @@ -0,0 +1,118 @@ +#ifndef _ROS_nav_msgs_GridCells_h +#define _ROS_nav_msgs_GridCells_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Point.h" + +namespace nav_msgs +{ + + class GridCells : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef float _cell_width_type; + _cell_width_type cell_width; + typedef float _cell_height_type; + _cell_height_type cell_height; + uint32_t cells_length; + typedef geometry_msgs::Point _cells_type; + _cells_type st_cells; + _cells_type * cells; + + GridCells(): + header(), + cell_width(0), + cell_height(0), + cells_length(0), cells(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + union { + float real; + uint32_t base; + } u_cell_width; + u_cell_width.real = this->cell_width; + *(outbuffer + offset + 0) = (u_cell_width.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_cell_width.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_cell_width.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_cell_width.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->cell_width); + union { + float real; + uint32_t base; + } u_cell_height; + u_cell_height.real = this->cell_height; + *(outbuffer + offset + 0) = (u_cell_height.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_cell_height.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_cell_height.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_cell_height.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->cell_height); + *(outbuffer + offset + 0) = (this->cells_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->cells_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->cells_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->cells_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->cells_length); + for( uint32_t i = 0; i < cells_length; i++){ + offset += this->cells[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + union { + float real; + uint32_t base; + } u_cell_width; + u_cell_width.base = 0; + u_cell_width.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_cell_width.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_cell_width.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_cell_width.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->cell_width = u_cell_width.real; + offset += sizeof(this->cell_width); + union { + float real; + uint32_t base; + } u_cell_height; + u_cell_height.base = 0; + u_cell_height.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_cell_height.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_cell_height.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_cell_height.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->cell_height = u_cell_height.real; + offset += sizeof(this->cell_height); + uint32_t cells_lengthT = ((uint32_t) (*(inbuffer + offset))); + cells_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + cells_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + cells_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->cells_length); + if(cells_lengthT > cells_length) + this->cells = (geometry_msgs::Point*)realloc(this->cells, cells_lengthT * sizeof(geometry_msgs::Point)); + cells_length = cells_lengthT; + for( uint32_t i = 0; i < cells_length; i++){ + offset += this->st_cells.deserialize(inbuffer + offset); + memcpy( &(this->cells[i]), &(this->st_cells), sizeof(geometry_msgs::Point)); + } + return offset; + } + + const char * getType(){ return "nav_msgs/GridCells"; }; + const char * getMD5(){ return "b9e4f5df6d28e272ebde00a3994830f5"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/MapMetaData.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/MapMetaData.h new file mode 100644 index 0000000..47733d9 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/MapMetaData.h @@ -0,0 +1,118 @@ +#ifndef _ROS_nav_msgs_MapMetaData_h +#define _ROS_nav_msgs_MapMetaData_h + +#include +#include +#include +#include "ros/msg.h" +#include "ros/time.h" +#include "geometry_msgs/Pose.h" + +namespace nav_msgs +{ + + class MapMetaData : public ros::Msg + { + public: + typedef ros::Time _map_load_time_type; + _map_load_time_type map_load_time; + typedef float _resolution_type; + _resolution_type resolution; + typedef uint32_t _width_type; + _width_type width; + typedef uint32_t _height_type; + _height_type height; + typedef geometry_msgs::Pose _origin_type; + _origin_type origin; + + MapMetaData(): + map_load_time(), + resolution(0), + width(0), + height(0), + origin() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->map_load_time.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->map_load_time.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->map_load_time.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->map_load_time.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->map_load_time.sec); + *(outbuffer + offset + 0) = (this->map_load_time.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->map_load_time.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->map_load_time.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->map_load_time.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->map_load_time.nsec); + union { + float real; + uint32_t base; + } u_resolution; + u_resolution.real = this->resolution; + *(outbuffer + offset + 0) = (u_resolution.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_resolution.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_resolution.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_resolution.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->resolution); + *(outbuffer + offset + 0) = (this->width >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->width >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->width >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->width >> (8 * 3)) & 0xFF; + offset += sizeof(this->width); + *(outbuffer + offset + 0) = (this->height >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->height >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->height >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->height >> (8 * 3)) & 0xFF; + offset += sizeof(this->height); + offset += this->origin.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->map_load_time.sec = ((uint32_t) (*(inbuffer + offset))); + this->map_load_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->map_load_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->map_load_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->map_load_time.sec); + this->map_load_time.nsec = ((uint32_t) (*(inbuffer + offset))); + this->map_load_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->map_load_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->map_load_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->map_load_time.nsec); + union { + float real; + uint32_t base; + } u_resolution; + u_resolution.base = 0; + u_resolution.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_resolution.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_resolution.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_resolution.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->resolution = u_resolution.real; + offset += sizeof(this->resolution); + this->width = ((uint32_t) (*(inbuffer + offset))); + this->width |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->width |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->width |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->width); + this->height = ((uint32_t) (*(inbuffer + offset))); + this->height |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->height |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->height |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->height); + offset += this->origin.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "nav_msgs/MapMetaData"; }; + const char * getMD5(){ return "10cfc8a2818024d3248802c00c95f11b"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/OccupancyGrid.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/OccupancyGrid.h new file mode 100644 index 0000000..4205f43 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/OccupancyGrid.h @@ -0,0 +1,88 @@ +#ifndef _ROS_nav_msgs_OccupancyGrid_h +#define _ROS_nav_msgs_OccupancyGrid_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "nav_msgs/MapMetaData.h" + +namespace nav_msgs +{ + + class OccupancyGrid : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef nav_msgs::MapMetaData _info_type; + _info_type info; + uint32_t data_length; + typedef int8_t _data_type; + _data_type st_data; + _data_type * data; + + OccupancyGrid(): + header(), + info(), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->info.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + union { + int8_t real; + uint8_t base; + } u_datai; + u_datai.real = this->data[i]; + *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->info.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (int8_t*)realloc(this->data, data_lengthT * sizeof(int8_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + union { + int8_t real; + uint8_t base; + } u_st_data; + u_st_data.base = 0; + u_st_data.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->st_data = u_st_data.real; + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(int8_t)); + } + return offset; + } + + const char * getType(){ return "nav_msgs/OccupancyGrid"; }; + const char * getMD5(){ return "3381f2d731d4076ec5c71b0759edbe4e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/Odometry.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/Odometry.h new file mode 100644 index 0000000..e8eaca5 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/Odometry.h @@ -0,0 +1,73 @@ +#ifndef _ROS_nav_msgs_Odometry_h +#define _ROS_nav_msgs_Odometry_h + +#include +#include +#include +#include "../ros/msg.h" +#include "../std_msgs/Header.h" +#include "../geometry_msgs/PoseWithCovariance.h" +#include "../geometry_msgs/TwistWithCovariance.h" + +namespace nav_msgs +{ + + class Odometry : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef const char* _child_frame_id_type; + _child_frame_id_type child_frame_id; + typedef geometry_msgs::PoseWithCovariance _pose_type; + _pose_type pose; + typedef geometry_msgs::TwistWithCovariance _twist_type; + _twist_type twist; + + Odometry(): + header(), + child_frame_id(""), + pose(), + twist() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + uint32_t length_child_frame_id = strlen(this->child_frame_id); + varToArr(outbuffer + offset, length_child_frame_id); + offset += 4; + memcpy(outbuffer + offset, this->child_frame_id, length_child_frame_id); + offset += length_child_frame_id; + offset += this->pose.serialize(outbuffer + offset); + offset += this->twist.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t length_child_frame_id; + arrToVar(length_child_frame_id, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_child_frame_id; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_child_frame_id-1]=0; + this->child_frame_id = (char *)(inbuffer + offset-1); + offset += length_child_frame_id; + offset += this->pose.deserialize(inbuffer + offset); + offset += this->twist.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "nav_msgs/Odometry"; }; + const char * getMD5(){ return "cd5e73d190d741a2f92e81eda573aca7"; }; + + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/Path.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/Path.h new file mode 100644 index 0000000..8587706 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/Path.h @@ -0,0 +1,70 @@ +#ifndef _ROS_nav_msgs_Path_h +#define _ROS_nav_msgs_Path_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/PoseStamped.h" + +namespace nav_msgs +{ + + class Path : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t poses_length; + typedef geometry_msgs::PoseStamped _poses_type; + _poses_type st_poses; + _poses_type * poses; + + Path(): + header(), + poses_length(0), poses(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->poses_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->poses_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->poses_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->poses_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->poses_length); + for( uint32_t i = 0; i < poses_length; i++){ + offset += this->poses[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t poses_lengthT = ((uint32_t) (*(inbuffer + offset))); + poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->poses_length); + if(poses_lengthT > poses_length) + this->poses = (geometry_msgs::PoseStamped*)realloc(this->poses, poses_lengthT * sizeof(geometry_msgs::PoseStamped)); + poses_length = poses_lengthT; + for( uint32_t i = 0; i < poses_length; i++){ + offset += this->st_poses.deserialize(inbuffer + offset); + memcpy( &(this->poses[i]), &(this->st_poses), sizeof(geometry_msgs::PoseStamped)); + } + return offset; + } + + const char * getType(){ return "nav_msgs/Path"; }; + const char * getMD5(){ return "6227e2b7e9cce15051f669a5e197bbf7"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/SetMap.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/SetMap.h new file mode 100644 index 0000000..717cead --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nav_msgs/SetMap.h @@ -0,0 +1,100 @@ +#ifndef _ROS_SERVICE_SetMap_h +#define _ROS_SERVICE_SetMap_h +#include +#include +#include +#include "ros/msg.h" +#include "nav_msgs/OccupancyGrid.h" +#include "geometry_msgs/PoseWithCovarianceStamped.h" + +namespace nav_msgs +{ + +static const char SETMAP[] = "nav_msgs/SetMap"; + + class SetMapRequest : public ros::Msg + { + public: + typedef nav_msgs::OccupancyGrid _map_type; + _map_type map; + typedef geometry_msgs::PoseWithCovarianceStamped _initial_pose_type; + _initial_pose_type initial_pose; + + SetMapRequest(): + map(), + initial_pose() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->map.serialize(outbuffer + offset); + offset += this->initial_pose.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->map.deserialize(inbuffer + offset); + offset += this->initial_pose.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return SETMAP; }; + const char * getMD5(){ return "91149a20d7be299b87c340df8cc94fd4"; }; + + }; + + class SetMapResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + + SetMapResponse(): + success(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + return offset; + } + + const char * getType(){ return SETMAP; }; + const char * getMD5(){ return "358e233cde0c8a8bcfea4ce193f8fc15"; }; + + }; + + class SetMap { + public: + typedef SetMapRequest Request; + typedef SetMapResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/navfn/MakeNavPlan.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/navfn/MakeNavPlan.h new file mode 100644 index 0000000..787905b --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/navfn/MakeNavPlan.h @@ -0,0 +1,130 @@ +#ifndef _ROS_SERVICE_MakeNavPlan_h +#define _ROS_SERVICE_MakeNavPlan_h +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/PoseStamped.h" + +namespace navfn +{ + +static const char MAKENAVPLAN[] = "navfn/MakeNavPlan"; + + class MakeNavPlanRequest : public ros::Msg + { + public: + typedef geometry_msgs::PoseStamped _start_type; + _start_type start; + typedef geometry_msgs::PoseStamped _goal_type; + _goal_type goal; + + MakeNavPlanRequest(): + start(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->start.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->start.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return MAKENAVPLAN; }; + const char * getMD5(){ return "2fe3126bd5b2d56edd5005220333d4fd"; }; + + }; + + class MakeNavPlanResponse : public ros::Msg + { + public: + typedef uint8_t _plan_found_type; + _plan_found_type plan_found; + typedef const char* _error_message_type; + _error_message_type error_message; + uint32_t path_length; + typedef geometry_msgs::PoseStamped _path_type; + _path_type st_path; + _path_type * path; + + MakeNavPlanResponse(): + plan_found(0), + error_message(""), + path_length(0), path(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->plan_found >> (8 * 0)) & 0xFF; + offset += sizeof(this->plan_found); + uint32_t length_error_message = strlen(this->error_message); + varToArr(outbuffer + offset, length_error_message); + offset += 4; + memcpy(outbuffer + offset, this->error_message, length_error_message); + offset += length_error_message; + *(outbuffer + offset + 0) = (this->path_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->path_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->path_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->path_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->path_length); + for( uint32_t i = 0; i < path_length; i++){ + offset += this->path[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->plan_found = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->plan_found); + uint32_t length_error_message; + arrToVar(length_error_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_error_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_error_message-1]=0; + this->error_message = (char *)(inbuffer + offset-1); + offset += length_error_message; + uint32_t path_lengthT = ((uint32_t) (*(inbuffer + offset))); + path_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + path_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + path_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->path_length); + if(path_lengthT > path_length) + this->path = (geometry_msgs::PoseStamped*)realloc(this->path, path_lengthT * sizeof(geometry_msgs::PoseStamped)); + path_length = path_lengthT; + for( uint32_t i = 0; i < path_length; i++){ + offset += this->st_path.deserialize(inbuffer + offset); + memcpy( &(this->path[i]), &(this->st_path), sizeof(geometry_msgs::PoseStamped)); + } + return offset; + } + + const char * getType(){ return MAKENAVPLAN; }; + const char * getMD5(){ return "8b8ed7edf1b237dc9ddda8c8ffed5d3a"; }; + + }; + + class MakeNavPlan { + public: + typedef MakeNavPlanRequest Request; + typedef MakeNavPlanResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/navfn/SetCostmap.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/navfn/SetCostmap.h new file mode 100644 index 0000000..8f746c5 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/navfn/SetCostmap.h @@ -0,0 +1,115 @@ +#ifndef _ROS_SERVICE_SetCostmap_h +#define _ROS_SERVICE_SetCostmap_h +#include +#include +#include +#include "ros/msg.h" + +namespace navfn +{ + +static const char SETCOSTMAP[] = "navfn/SetCostmap"; + + class SetCostmapRequest : public ros::Msg + { + public: + uint32_t costs_length; + typedef uint8_t _costs_type; + _costs_type st_costs; + _costs_type * costs; + typedef uint16_t _height_type; + _height_type height; + typedef uint16_t _width_type; + _width_type width; + + SetCostmapRequest(): + costs_length(0), costs(NULL), + height(0), + width(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->costs_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->costs_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->costs_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->costs_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->costs_length); + for( uint32_t i = 0; i < costs_length; i++){ + *(outbuffer + offset + 0) = (this->costs[i] >> (8 * 0)) & 0xFF; + offset += sizeof(this->costs[i]); + } + *(outbuffer + offset + 0) = (this->height >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->height >> (8 * 1)) & 0xFF; + offset += sizeof(this->height); + *(outbuffer + offset + 0) = (this->width >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->width >> (8 * 1)) & 0xFF; + offset += sizeof(this->width); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t costs_lengthT = ((uint32_t) (*(inbuffer + offset))); + costs_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + costs_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + costs_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->costs_length); + if(costs_lengthT > costs_length) + this->costs = (uint8_t*)realloc(this->costs, costs_lengthT * sizeof(uint8_t)); + costs_length = costs_lengthT; + for( uint32_t i = 0; i < costs_length; i++){ + this->st_costs = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->st_costs); + memcpy( &(this->costs[i]), &(this->st_costs), sizeof(uint8_t)); + } + this->height = ((uint16_t) (*(inbuffer + offset))); + this->height |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->height); + this->width = ((uint16_t) (*(inbuffer + offset))); + this->width |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->width); + return offset; + } + + const char * getType(){ return SETCOSTMAP; }; + const char * getMD5(){ return "370ec969cdb71f9cde7c7cbe0d752308"; }; + + }; + + class SetCostmapResponse : public ros::Msg + { + public: + + SetCostmapResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return SETCOSTMAP; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class SetCostmap { + public: + typedef SetCostmapRequest Request; + typedef SetCostmapResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nodelet/NodeletList.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nodelet/NodeletList.h new file mode 100644 index 0000000..6210fa0 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nodelet/NodeletList.h @@ -0,0 +1,107 @@ +#ifndef _ROS_SERVICE_NodeletList_h +#define _ROS_SERVICE_NodeletList_h +#include +#include +#include +#include "ros/msg.h" + +namespace nodelet +{ + +static const char NODELETLIST[] = "nodelet/NodeletList"; + + class NodeletListRequest : public ros::Msg + { + public: + + NodeletListRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return NODELETLIST; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class NodeletListResponse : public ros::Msg + { + public: + uint32_t nodelets_length; + typedef char* _nodelets_type; + _nodelets_type st_nodelets; + _nodelets_type * nodelets; + + NodeletListResponse(): + nodelets_length(0), nodelets(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->nodelets_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->nodelets_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->nodelets_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->nodelets_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->nodelets_length); + for( uint32_t i = 0; i < nodelets_length; i++){ + uint32_t length_nodeletsi = strlen(this->nodelets[i]); + varToArr(outbuffer + offset, length_nodeletsi); + offset += 4; + memcpy(outbuffer + offset, this->nodelets[i], length_nodeletsi); + offset += length_nodeletsi; + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t nodelets_lengthT = ((uint32_t) (*(inbuffer + offset))); + nodelets_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + nodelets_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + nodelets_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->nodelets_length); + if(nodelets_lengthT > nodelets_length) + this->nodelets = (char**)realloc(this->nodelets, nodelets_lengthT * sizeof(char*)); + nodelets_length = nodelets_lengthT; + for( uint32_t i = 0; i < nodelets_length; i++){ + uint32_t length_st_nodelets; + arrToVar(length_st_nodelets, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_nodelets; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_nodelets-1]=0; + this->st_nodelets = (char *)(inbuffer + offset-1); + offset += length_st_nodelets; + memcpy( &(this->nodelets[i]), &(this->st_nodelets), sizeof(char*)); + } + return offset; + } + + const char * getType(){ return NODELETLIST; }; + const char * getMD5(){ return "99c7b10e794f5600b8030e697e946ca7"; }; + + }; + + class NodeletList { + public: + typedef NodeletListRequest Request; + typedef NodeletListResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nodelet/NodeletLoad.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nodelet/NodeletLoad.h new file mode 100644 index 0000000..e7a9c5c --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nodelet/NodeletLoad.h @@ -0,0 +1,250 @@ +#ifndef _ROS_SERVICE_NodeletLoad_h +#define _ROS_SERVICE_NodeletLoad_h +#include +#include +#include +#include "ros/msg.h" + +namespace nodelet +{ + +static const char NODELETLOAD[] = "nodelet/NodeletLoad"; + + class NodeletLoadRequest : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef const char* _type_type; + _type_type type; + uint32_t remap_source_args_length; + typedef char* _remap_source_args_type; + _remap_source_args_type st_remap_source_args; + _remap_source_args_type * remap_source_args; + uint32_t remap_target_args_length; + typedef char* _remap_target_args_type; + _remap_target_args_type st_remap_target_args; + _remap_target_args_type * remap_target_args; + uint32_t my_argv_length; + typedef char* _my_argv_type; + _my_argv_type st_my_argv; + _my_argv_type * my_argv; + typedef const char* _bond_id_type; + _bond_id_type bond_id; + + NodeletLoadRequest(): + name(""), + type(""), + remap_source_args_length(0), remap_source_args(NULL), + remap_target_args_length(0), remap_target_args(NULL), + my_argv_length(0), my_argv(NULL), + bond_id("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + uint32_t length_type = strlen(this->type); + varToArr(outbuffer + offset, length_type); + offset += 4; + memcpy(outbuffer + offset, this->type, length_type); + offset += length_type; + *(outbuffer + offset + 0) = (this->remap_source_args_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->remap_source_args_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->remap_source_args_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->remap_source_args_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->remap_source_args_length); + for( uint32_t i = 0; i < remap_source_args_length; i++){ + uint32_t length_remap_source_argsi = strlen(this->remap_source_args[i]); + varToArr(outbuffer + offset, length_remap_source_argsi); + offset += 4; + memcpy(outbuffer + offset, this->remap_source_args[i], length_remap_source_argsi); + offset += length_remap_source_argsi; + } + *(outbuffer + offset + 0) = (this->remap_target_args_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->remap_target_args_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->remap_target_args_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->remap_target_args_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->remap_target_args_length); + for( uint32_t i = 0; i < remap_target_args_length; i++){ + uint32_t length_remap_target_argsi = strlen(this->remap_target_args[i]); + varToArr(outbuffer + offset, length_remap_target_argsi); + offset += 4; + memcpy(outbuffer + offset, this->remap_target_args[i], length_remap_target_argsi); + offset += length_remap_target_argsi; + } + *(outbuffer + offset + 0) = (this->my_argv_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->my_argv_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->my_argv_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->my_argv_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->my_argv_length); + for( uint32_t i = 0; i < my_argv_length; i++){ + uint32_t length_my_argvi = strlen(this->my_argv[i]); + varToArr(outbuffer + offset, length_my_argvi); + offset += 4; + memcpy(outbuffer + offset, this->my_argv[i], length_my_argvi); + offset += length_my_argvi; + } + uint32_t length_bond_id = strlen(this->bond_id); + varToArr(outbuffer + offset, length_bond_id); + offset += 4; + memcpy(outbuffer + offset, this->bond_id, length_bond_id); + offset += length_bond_id; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + uint32_t length_type; + arrToVar(length_type, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_type; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_type-1]=0; + this->type = (char *)(inbuffer + offset-1); + offset += length_type; + uint32_t remap_source_args_lengthT = ((uint32_t) (*(inbuffer + offset))); + remap_source_args_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + remap_source_args_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + remap_source_args_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->remap_source_args_length); + if(remap_source_args_lengthT > remap_source_args_length) + this->remap_source_args = (char**)realloc(this->remap_source_args, remap_source_args_lengthT * sizeof(char*)); + remap_source_args_length = remap_source_args_lengthT; + for( uint32_t i = 0; i < remap_source_args_length; i++){ + uint32_t length_st_remap_source_args; + arrToVar(length_st_remap_source_args, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_remap_source_args; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_remap_source_args-1]=0; + this->st_remap_source_args = (char *)(inbuffer + offset-1); + offset += length_st_remap_source_args; + memcpy( &(this->remap_source_args[i]), &(this->st_remap_source_args), sizeof(char*)); + } + uint32_t remap_target_args_lengthT = ((uint32_t) (*(inbuffer + offset))); + remap_target_args_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + remap_target_args_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + remap_target_args_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->remap_target_args_length); + if(remap_target_args_lengthT > remap_target_args_length) + this->remap_target_args = (char**)realloc(this->remap_target_args, remap_target_args_lengthT * sizeof(char*)); + remap_target_args_length = remap_target_args_lengthT; + for( uint32_t i = 0; i < remap_target_args_length; i++){ + uint32_t length_st_remap_target_args; + arrToVar(length_st_remap_target_args, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_remap_target_args; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_remap_target_args-1]=0; + this->st_remap_target_args = (char *)(inbuffer + offset-1); + offset += length_st_remap_target_args; + memcpy( &(this->remap_target_args[i]), &(this->st_remap_target_args), sizeof(char*)); + } + uint32_t my_argv_lengthT = ((uint32_t) (*(inbuffer + offset))); + my_argv_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + my_argv_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + my_argv_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->my_argv_length); + if(my_argv_lengthT > my_argv_length) + this->my_argv = (char**)realloc(this->my_argv, my_argv_lengthT * sizeof(char*)); + my_argv_length = my_argv_lengthT; + for( uint32_t i = 0; i < my_argv_length; i++){ + uint32_t length_st_my_argv; + arrToVar(length_st_my_argv, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_my_argv; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_my_argv-1]=0; + this->st_my_argv = (char *)(inbuffer + offset-1); + offset += length_st_my_argv; + memcpy( &(this->my_argv[i]), &(this->st_my_argv), sizeof(char*)); + } + uint32_t length_bond_id; + arrToVar(length_bond_id, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_bond_id; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_bond_id-1]=0; + this->bond_id = (char *)(inbuffer + offset-1); + offset += length_bond_id; + return offset; + } + + const char * getType(){ return NODELETLOAD; }; + const char * getMD5(){ return "c6e28cc4d2e259249d96cfb50658fbec"; }; + + }; + + class NodeletLoadResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + + NodeletLoadResponse(): + success(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + return offset; + } + + const char * getType(){ return NODELETLOAD; }; + const char * getMD5(){ return "358e233cde0c8a8bcfea4ce193f8fc15"; }; + + }; + + class NodeletLoad { + public: + typedef NodeletLoadRequest Request; + typedef NodeletLoadResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nodelet/NodeletUnload.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nodelet/NodeletUnload.h new file mode 100644 index 0000000..bc865b4 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/nodelet/NodeletUnload.h @@ -0,0 +1,105 @@ +#ifndef _ROS_SERVICE_NodeletUnload_h +#define _ROS_SERVICE_NodeletUnload_h +#include +#include +#include +#include "ros/msg.h" + +namespace nodelet +{ + +static const char NODELETUNLOAD[] = "nodelet/NodeletUnload"; + + class NodeletUnloadRequest : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + + NodeletUnloadRequest(): + name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + return offset; + } + + const char * getType(){ return NODELETUNLOAD; }; + const char * getMD5(){ return "c1f3d28f1b044c871e6eff2e9fc3c667"; }; + + }; + + class NodeletUnloadResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + + NodeletUnloadResponse(): + success(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + return offset; + } + + const char * getType(){ return NODELETUNLOAD; }; + const char * getMD5(){ return "358e233cde0c8a8bcfea4ce193f8fc15"; }; + + }; + + class NodeletUnload { + public: + typedef NodeletUnloadRequest Request; + typedef NodeletUnloadResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/openni2_camera/GetSerial.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/openni2_camera/GetSerial.h new file mode 100644 index 0000000..c0f1cdf --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/openni2_camera/GetSerial.h @@ -0,0 +1,87 @@ +#ifndef _ROS_SERVICE_GetSerial_h +#define _ROS_SERVICE_GetSerial_h +#include +#include +#include +#include "ros/msg.h" + +namespace openni2_camera +{ + +static const char GETSERIAL[] = "openni2_camera/GetSerial"; + + class GetSerialRequest : public ros::Msg + { + public: + + GetSerialRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return GETSERIAL; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class GetSerialResponse : public ros::Msg + { + public: + typedef const char* _serial_type; + _serial_type serial; + + GetSerialResponse(): + serial("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_serial = strlen(this->serial); + varToArr(outbuffer + offset, length_serial); + offset += 4; + memcpy(outbuffer + offset, this->serial, length_serial); + offset += length_serial; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_serial; + arrToVar(length_serial, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_serial; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_serial-1]=0; + this->serial = (char *)(inbuffer + offset-1); + offset += length_serial; + return offset; + } + + const char * getType(){ return GETSERIAL; }; + const char * getMD5(){ return "fca40cf463282a80db4e2037c8a61741"; }; + + }; + + class GetSerial { + public: + typedef GetSerialRequest Request; + typedef GetSerialResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/pcl_msgs/ModelCoefficients.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/pcl_msgs/ModelCoefficients.h new file mode 100644 index 0000000..3256a94 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/pcl_msgs/ModelCoefficients.h @@ -0,0 +1,88 @@ +#ifndef _ROS_pcl_msgs_ModelCoefficients_h +#define _ROS_pcl_msgs_ModelCoefficients_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace pcl_msgs +{ + + class ModelCoefficients : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t values_length; + typedef float _values_type; + _values_type st_values; + _values_type * values; + + ModelCoefficients(): + header(), + values_length(0), values(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->values_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->values_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->values_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->values_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->values_length); + for( uint32_t i = 0; i < values_length; i++){ + union { + float real; + uint32_t base; + } u_valuesi; + u_valuesi.real = this->values[i]; + *(outbuffer + offset + 0) = (u_valuesi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_valuesi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_valuesi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_valuesi.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->values[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t values_lengthT = ((uint32_t) (*(inbuffer + offset))); + values_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + values_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + values_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->values_length); + if(values_lengthT > values_length) + this->values = (float*)realloc(this->values, values_lengthT * sizeof(float)); + values_length = values_lengthT; + for( uint32_t i = 0; i < values_length; i++){ + union { + float real; + uint32_t base; + } u_st_values; + u_st_values.base = 0; + u_st_values.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_values.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_values.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_values.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_values = u_st_values.real; + offset += sizeof(this->st_values); + memcpy( &(this->values[i]), &(this->st_values), sizeof(float)); + } + return offset; + } + + const char * getType(){ return "pcl_msgs/ModelCoefficients"; }; + const char * getMD5(){ return "ca27dea75e72cb894cd36f9e5005e93e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/pcl_msgs/PointIndices.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/pcl_msgs/PointIndices.h new file mode 100644 index 0000000..56feb9b --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/pcl_msgs/PointIndices.h @@ -0,0 +1,88 @@ +#ifndef _ROS_pcl_msgs_PointIndices_h +#define _ROS_pcl_msgs_PointIndices_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace pcl_msgs +{ + + class PointIndices : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t indices_length; + typedef int32_t _indices_type; + _indices_type st_indices; + _indices_type * indices; + + PointIndices(): + header(), + indices_length(0), indices(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->indices_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->indices_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->indices_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->indices_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->indices_length); + for( uint32_t i = 0; i < indices_length; i++){ + union { + int32_t real; + uint32_t base; + } u_indicesi; + u_indicesi.real = this->indices[i]; + *(outbuffer + offset + 0) = (u_indicesi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_indicesi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_indicesi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_indicesi.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->indices[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t indices_lengthT = ((uint32_t) (*(inbuffer + offset))); + indices_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + indices_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + indices_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->indices_length); + if(indices_lengthT > indices_length) + this->indices = (int32_t*)realloc(this->indices, indices_lengthT * sizeof(int32_t)); + indices_length = indices_lengthT; + for( uint32_t i = 0; i < indices_length; i++){ + union { + int32_t real; + uint32_t base; + } u_st_indices; + u_st_indices.base = 0; + u_st_indices.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_indices.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_indices.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_indices.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_indices = u_st_indices.real; + offset += sizeof(this->st_indices); + memcpy( &(this->indices[i]), &(this->st_indices), sizeof(int32_t)); + } + return offset; + } + + const char * getType(){ return "pcl_msgs/PointIndices"; }; + const char * getMD5(){ return "458c7998b7eaf99908256472e273b3d4"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/pcl_msgs/PolygonMesh.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/pcl_msgs/PolygonMesh.h new file mode 100644 index 0000000..d98e4c1 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/pcl_msgs/PolygonMesh.h @@ -0,0 +1,76 @@ +#ifndef _ROS_pcl_msgs_PolygonMesh_h +#define _ROS_pcl_msgs_PolygonMesh_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "sensor_msgs/PointCloud2.h" +#include "pcl_msgs/Vertices.h" + +namespace pcl_msgs +{ + + class PolygonMesh : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef sensor_msgs::PointCloud2 _cloud_type; + _cloud_type cloud; + uint32_t polygons_length; + typedef pcl_msgs::Vertices _polygons_type; + _polygons_type st_polygons; + _polygons_type * polygons; + + PolygonMesh(): + header(), + cloud(), + polygons_length(0), polygons(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->cloud.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->polygons_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->polygons_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->polygons_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->polygons_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->polygons_length); + for( uint32_t i = 0; i < polygons_length; i++){ + offset += this->polygons[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->cloud.deserialize(inbuffer + offset); + uint32_t polygons_lengthT = ((uint32_t) (*(inbuffer + offset))); + polygons_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + polygons_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + polygons_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->polygons_length); + if(polygons_lengthT > polygons_length) + this->polygons = (pcl_msgs::Vertices*)realloc(this->polygons, polygons_lengthT * sizeof(pcl_msgs::Vertices)); + polygons_length = polygons_lengthT; + for( uint32_t i = 0; i < polygons_length; i++){ + offset += this->st_polygons.deserialize(inbuffer + offset); + memcpy( &(this->polygons[i]), &(this->st_polygons), sizeof(pcl_msgs::Vertices)); + } + return offset; + } + + const char * getType(){ return "pcl_msgs/PolygonMesh"; }; + const char * getMD5(){ return "45a5fc6ad2cde8489600a790acc9a38a"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/pcl_msgs/Vertices.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/pcl_msgs/Vertices.h new file mode 100644 index 0000000..55a6704 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/pcl_msgs/Vertices.h @@ -0,0 +1,71 @@ +#ifndef _ROS_pcl_msgs_Vertices_h +#define _ROS_pcl_msgs_Vertices_h + +#include +#include +#include +#include "ros/msg.h" + +namespace pcl_msgs +{ + + class Vertices : public ros::Msg + { + public: + uint32_t vertices_length; + typedef uint32_t _vertices_type; + _vertices_type st_vertices; + _vertices_type * vertices; + + Vertices(): + vertices_length(0), vertices(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->vertices_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->vertices_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->vertices_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->vertices_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->vertices_length); + for( uint32_t i = 0; i < vertices_length; i++){ + *(outbuffer + offset + 0) = (this->vertices[i] >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->vertices[i] >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->vertices[i] >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->vertices[i] >> (8 * 3)) & 0xFF; + offset += sizeof(this->vertices[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t vertices_lengthT = ((uint32_t) (*(inbuffer + offset))); + vertices_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + vertices_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + vertices_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->vertices_length); + if(vertices_lengthT > vertices_length) + this->vertices = (uint32_t*)realloc(this->vertices, vertices_lengthT * sizeof(uint32_t)); + vertices_length = vertices_lengthT; + for( uint32_t i = 0; i < vertices_length; i++){ + this->st_vertices = ((uint32_t) (*(inbuffer + offset))); + this->st_vertices |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->st_vertices |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->st_vertices |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->st_vertices); + memcpy( &(this->vertices[i]), &(this->st_vertices), sizeof(uint32_t)); + } + return offset; + } + + const char * getType(){ return "pcl_msgs/Vertices"; }; + const char * getMD5(){ return "39bd7b1c23763ddd1b882b97cb7cfe11"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/polled_camera/GetPolledImage.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/polled_camera/GetPolledImage.h new file mode 100644 index 0000000..b062405 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/polled_camera/GetPolledImage.h @@ -0,0 +1,202 @@ +#ifndef _ROS_SERVICE_GetPolledImage_h +#define _ROS_SERVICE_GetPolledImage_h +#include +#include +#include +#include "ros/msg.h" +#include "sensor_msgs/RegionOfInterest.h" +#include "ros/duration.h" +#include "ros/time.h" + +namespace polled_camera +{ + +static const char GETPOLLEDIMAGE[] = "polled_camera/GetPolledImage"; + + class GetPolledImageRequest : public ros::Msg + { + public: + typedef const char* _response_namespace_type; + _response_namespace_type response_namespace; + typedef ros::Duration _timeout_type; + _timeout_type timeout; + typedef uint32_t _binning_x_type; + _binning_x_type binning_x; + typedef uint32_t _binning_y_type; + _binning_y_type binning_y; + typedef sensor_msgs::RegionOfInterest _roi_type; + _roi_type roi; + + GetPolledImageRequest(): + response_namespace(""), + timeout(), + binning_x(0), + binning_y(0), + roi() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_response_namespace = strlen(this->response_namespace); + varToArr(outbuffer + offset, length_response_namespace); + offset += 4; + memcpy(outbuffer + offset, this->response_namespace, length_response_namespace); + offset += length_response_namespace; + *(outbuffer + offset + 0) = (this->timeout.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->timeout.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->timeout.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->timeout.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->timeout.sec); + *(outbuffer + offset + 0) = (this->timeout.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->timeout.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->timeout.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->timeout.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->timeout.nsec); + *(outbuffer + offset + 0) = (this->binning_x >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->binning_x >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->binning_x >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->binning_x >> (8 * 3)) & 0xFF; + offset += sizeof(this->binning_x); + *(outbuffer + offset + 0) = (this->binning_y >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->binning_y >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->binning_y >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->binning_y >> (8 * 3)) & 0xFF; + offset += sizeof(this->binning_y); + offset += this->roi.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_response_namespace; + arrToVar(length_response_namespace, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_response_namespace; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_response_namespace-1]=0; + this->response_namespace = (char *)(inbuffer + offset-1); + offset += length_response_namespace; + this->timeout.sec = ((uint32_t) (*(inbuffer + offset))); + this->timeout.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->timeout.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->timeout.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->timeout.sec); + this->timeout.nsec = ((uint32_t) (*(inbuffer + offset))); + this->timeout.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->timeout.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->timeout.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->timeout.nsec); + this->binning_x = ((uint32_t) (*(inbuffer + offset))); + this->binning_x |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->binning_x |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->binning_x |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->binning_x); + this->binning_y = ((uint32_t) (*(inbuffer + offset))); + this->binning_y |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->binning_y |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->binning_y |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->binning_y); + offset += this->roi.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return GETPOLLEDIMAGE; }; + const char * getMD5(){ return "c77ed43e530fd48e9e7a2a93845e154c"; }; + + }; + + class GetPolledImageResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + typedef ros::Time _stamp_type; + _stamp_type stamp; + + GetPolledImageResponse(): + success(0), + status_message(""), + stamp() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + *(outbuffer + offset + 0) = (this->stamp.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp.sec); + *(outbuffer + offset + 0) = (this->stamp.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + this->stamp.sec = ((uint32_t) (*(inbuffer + offset))); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp.sec); + this->stamp.nsec = ((uint32_t) (*(inbuffer + offset))); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp.nsec); + return offset; + } + + const char * getType(){ return GETPOLLEDIMAGE; }; + const char * getMD5(){ return "dbf1f851bc511800e6129ccd5a3542ab"; }; + + }; + + class GetPolledImage { + public: + typedef GetPolledImageRequest Request; + typedef GetPolledImageResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/Behaviour.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/Behaviour.h new file mode 100644 index 0000000..04c5d8a --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/Behaviour.h @@ -0,0 +1,183 @@ +#ifndef _ROS_py_trees_msgs_Behaviour_h +#define _ROS_py_trees_msgs_Behaviour_h + +#include +#include +#include +#include "ros/msg.h" +#include "uuid_msgs/UniqueID.h" + +namespace py_trees_msgs +{ + + class Behaviour : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef const char* _class_name_type; + _class_name_type class_name; + typedef uuid_msgs::UniqueID _own_id_type; + _own_id_type own_id; + typedef uuid_msgs::UniqueID _parent_id_type; + _parent_id_type parent_id; + typedef uuid_msgs::UniqueID _tip_id_type; + _tip_id_type tip_id; + uint32_t child_ids_length; + typedef uuid_msgs::UniqueID _child_ids_type; + _child_ids_type st_child_ids; + _child_ids_type * child_ids; + typedef uint8_t _type_type; + _type_type type; + typedef uint8_t _blackbox_level_type; + _blackbox_level_type blackbox_level; + typedef uint8_t _status_type; + _status_type status; + typedef const char* _message_type; + _message_type message; + typedef bool _is_active_type; + _is_active_type is_active; + enum { INVALID = 1 }; + enum { RUNNING = 2 }; + enum { SUCCESS = 3 }; + enum { FAILURE = 4 }; + enum { UNKNOWN_TYPE = 0 }; + enum { BEHAVIOUR = 1 }; + enum { SEQUENCE = 2 }; + enum { SELECTOR = 3 }; + enum { PARALLEL = 4 }; + enum { CHOOSER = 5 }; + enum { BLACKBOX_LEVEL_DETAIL = 1 }; + enum { BLACKBOX_LEVEL_COMPONENT = 2 }; + enum { BLACKBOX_LEVEL_BIG_PICTURE = 3 }; + enum { BLACKBOX_LEVEL_NOT_A_BLACKBOX = 4 }; + + Behaviour(): + name(""), + class_name(""), + own_id(), + parent_id(), + tip_id(), + child_ids_length(0), child_ids(NULL), + type(0), + blackbox_level(0), + status(0), + message(""), + is_active(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + uint32_t length_class_name = strlen(this->class_name); + varToArr(outbuffer + offset, length_class_name); + offset += 4; + memcpy(outbuffer + offset, this->class_name, length_class_name); + offset += length_class_name; + offset += this->own_id.serialize(outbuffer + offset); + offset += this->parent_id.serialize(outbuffer + offset); + offset += this->tip_id.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->child_ids_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->child_ids_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->child_ids_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->child_ids_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->child_ids_length); + for( uint32_t i = 0; i < child_ids_length; i++){ + offset += this->child_ids[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->type >> (8 * 0)) & 0xFF; + offset += sizeof(this->type); + *(outbuffer + offset + 0) = (this->blackbox_level >> (8 * 0)) & 0xFF; + offset += sizeof(this->blackbox_level); + *(outbuffer + offset + 0) = (this->status >> (8 * 0)) & 0xFF; + offset += sizeof(this->status); + uint32_t length_message = strlen(this->message); + varToArr(outbuffer + offset, length_message); + offset += 4; + memcpy(outbuffer + offset, this->message, length_message); + offset += length_message; + union { + bool real; + uint8_t base; + } u_is_active; + u_is_active.real = this->is_active; + *(outbuffer + offset + 0) = (u_is_active.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->is_active); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + uint32_t length_class_name; + arrToVar(length_class_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_class_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_class_name-1]=0; + this->class_name = (char *)(inbuffer + offset-1); + offset += length_class_name; + offset += this->own_id.deserialize(inbuffer + offset); + offset += this->parent_id.deserialize(inbuffer + offset); + offset += this->tip_id.deserialize(inbuffer + offset); + uint32_t child_ids_lengthT = ((uint32_t) (*(inbuffer + offset))); + child_ids_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + child_ids_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + child_ids_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->child_ids_length); + if(child_ids_lengthT > child_ids_length) + this->child_ids = (uuid_msgs::UniqueID*)realloc(this->child_ids, child_ids_lengthT * sizeof(uuid_msgs::UniqueID)); + child_ids_length = child_ids_lengthT; + for( uint32_t i = 0; i < child_ids_length; i++){ + offset += this->st_child_ids.deserialize(inbuffer + offset); + memcpy( &(this->child_ids[i]), &(this->st_child_ids), sizeof(uuid_msgs::UniqueID)); + } + this->type = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->type); + this->blackbox_level = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->blackbox_level); + this->status = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->status); + uint32_t length_message; + arrToVar(length_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_message-1]=0; + this->message = (char *)(inbuffer + offset-1); + offset += length_message; + union { + bool real; + uint8_t base; + } u_is_active; + u_is_active.base = 0; + u_is_active.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->is_active = u_is_active.real; + offset += sizeof(this->is_active); + return offset; + } + + const char * getType(){ return "py_trees_msgs/Behaviour"; }; + const char * getMD5(){ return "88ddda148fc81f5dc402f56e3e333222"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/BehaviourTree.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/BehaviourTree.h new file mode 100644 index 0000000..33bfd19 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/BehaviourTree.h @@ -0,0 +1,70 @@ +#ifndef _ROS_py_trees_msgs_BehaviourTree_h +#define _ROS_py_trees_msgs_BehaviourTree_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "py_trees_msgs/Behaviour.h" + +namespace py_trees_msgs +{ + + class BehaviourTree : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t behaviours_length; + typedef py_trees_msgs::Behaviour _behaviours_type; + _behaviours_type st_behaviours; + _behaviours_type * behaviours; + + BehaviourTree(): + header(), + behaviours_length(0), behaviours(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->behaviours_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->behaviours_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->behaviours_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->behaviours_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->behaviours_length); + for( uint32_t i = 0; i < behaviours_length; i++){ + offset += this->behaviours[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t behaviours_lengthT = ((uint32_t) (*(inbuffer + offset))); + behaviours_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + behaviours_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + behaviours_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->behaviours_length); + if(behaviours_lengthT > behaviours_length) + this->behaviours = (py_trees_msgs::Behaviour*)realloc(this->behaviours, behaviours_lengthT * sizeof(py_trees_msgs::Behaviour)); + behaviours_length = behaviours_lengthT; + for( uint32_t i = 0; i < behaviours_length; i++){ + offset += this->st_behaviours.deserialize(inbuffer + offset); + memcpy( &(this->behaviours[i]), &(this->st_behaviours), sizeof(py_trees_msgs::Behaviour)); + } + return offset; + } + + const char * getType(){ return "py_trees_msgs/BehaviourTree"; }; + const char * getMD5(){ return "239023f5538cba34a10a3a5cd6610fa0"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/CloseBlackboardWatcher.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/CloseBlackboardWatcher.h new file mode 100644 index 0000000..5c6d392 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/CloseBlackboardWatcher.h @@ -0,0 +1,105 @@ +#ifndef _ROS_SERVICE_CloseBlackboardWatcher_h +#define _ROS_SERVICE_CloseBlackboardWatcher_h +#include +#include +#include +#include "ros/msg.h" + +namespace py_trees_msgs +{ + +static const char CLOSEBLACKBOARDWATCHER[] = "py_trees_msgs/CloseBlackboardWatcher"; + + class CloseBlackboardWatcherRequest : public ros::Msg + { + public: + typedef const char* _topic_name_type; + _topic_name_type topic_name; + + CloseBlackboardWatcherRequest(): + topic_name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_topic_name = strlen(this->topic_name); + varToArr(outbuffer + offset, length_topic_name); + offset += 4; + memcpy(outbuffer + offset, this->topic_name, length_topic_name); + offset += length_topic_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_topic_name; + arrToVar(length_topic_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_topic_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_topic_name-1]=0; + this->topic_name = (char *)(inbuffer + offset-1); + offset += length_topic_name; + return offset; + } + + const char * getType(){ return CLOSEBLACKBOARDWATCHER; }; + const char * getMD5(){ return "b38cc2f19f45368c2db7867751ce95a9"; }; + + }; + + class CloseBlackboardWatcherResponse : public ros::Msg + { + public: + typedef bool _result_type; + _result_type result; + + CloseBlackboardWatcherResponse(): + result(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_result; + u_result.real = this->result; + *(outbuffer + offset + 0) = (u_result.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->result); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_result; + u_result.base = 0; + u_result.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->result = u_result.real; + offset += sizeof(this->result); + return offset; + } + + const char * getType(){ return CLOSEBLACKBOARDWATCHER; }; + const char * getMD5(){ return "eb13ac1f1354ccecb7941ee8fa2192e8"; }; + + }; + + class CloseBlackboardWatcher { + public: + typedef CloseBlackboardWatcherRequest Request; + typedef CloseBlackboardWatcherResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockAction.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockAction.h new file mode 100644 index 0000000..d9945d0 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_py_trees_msgs_DockAction_h +#define _ROS_py_trees_msgs_DockAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "py_trees_msgs/DockActionGoal.h" +#include "py_trees_msgs/DockActionResult.h" +#include "py_trees_msgs/DockActionFeedback.h" + +namespace py_trees_msgs +{ + + class DockAction : public ros::Msg + { + public: + typedef py_trees_msgs::DockActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef py_trees_msgs::DockActionResult _action_result_type; + _action_result_type action_result; + typedef py_trees_msgs::DockActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + DockAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "py_trees_msgs/DockAction"; }; + const char * getMD5(){ return "1487f2ccdee1636e3fa5ee088040ee3a"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockActionFeedback.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockActionFeedback.h new file mode 100644 index 0000000..f485e2b --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_py_trees_msgs_DockActionFeedback_h +#define _ROS_py_trees_msgs_DockActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "py_trees_msgs/DockFeedback.h" + +namespace py_trees_msgs +{ + + class DockActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef py_trees_msgs::DockFeedback _feedback_type; + _feedback_type feedback; + + DockActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "py_trees_msgs/DockActionFeedback"; }; + const char * getMD5(){ return "2ff213e56f8a13eff9119a87d46f6e06"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockActionGoal.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockActionGoal.h new file mode 100644 index 0000000..e900929 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_py_trees_msgs_DockActionGoal_h +#define _ROS_py_trees_msgs_DockActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "py_trees_msgs/DockGoal.h" + +namespace py_trees_msgs +{ + + class DockActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef py_trees_msgs::DockGoal _goal_type; + _goal_type goal; + + DockActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "py_trees_msgs/DockActionGoal"; }; + const char * getMD5(){ return "792a8f48465c33ddc8270c5f2a92be76"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockActionResult.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockActionResult.h new file mode 100644 index 0000000..622b666 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_py_trees_msgs_DockActionResult_h +#define _ROS_py_trees_msgs_DockActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "py_trees_msgs/DockResult.h" + +namespace py_trees_msgs +{ + + class DockActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef py_trees_msgs::DockResult _result_type; + _result_type result; + + DockActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "py_trees_msgs/DockActionResult"; }; + const char * getMD5(){ return "4eda63f75c02197dafd2a62a0d413ab0"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockFeedback.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockFeedback.h new file mode 100644 index 0000000..8f6e2a1 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockFeedback.h @@ -0,0 +1,62 @@ +#ifndef _ROS_py_trees_msgs_DockFeedback_h +#define _ROS_py_trees_msgs_DockFeedback_h + +#include +#include +#include +#include "ros/msg.h" + +namespace py_trees_msgs +{ + + class DockFeedback : public ros::Msg + { + public: + typedef float _percentage_completed_type; + _percentage_completed_type percentage_completed; + + DockFeedback(): + percentage_completed(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + float real; + uint32_t base; + } u_percentage_completed; + u_percentage_completed.real = this->percentage_completed; + *(outbuffer + offset + 0) = (u_percentage_completed.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_percentage_completed.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_percentage_completed.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_percentage_completed.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->percentage_completed); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + float real; + uint32_t base; + } u_percentage_completed; + u_percentage_completed.base = 0; + u_percentage_completed.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_percentage_completed.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_percentage_completed.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_percentage_completed.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->percentage_completed = u_percentage_completed.real; + offset += sizeof(this->percentage_completed); + return offset; + } + + const char * getType(){ return "py_trees_msgs/DockFeedback"; }; + const char * getMD5(){ return "26e2c7154b190781742892deccb6c8f0"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockGoal.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockGoal.h new file mode 100644 index 0000000..ac04af8 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_py_trees_msgs_DockGoal_h +#define _ROS_py_trees_msgs_DockGoal_h + +#include +#include +#include +#include "ros/msg.h" + +namespace py_trees_msgs +{ + + class DockGoal : public ros::Msg + { + public: + typedef bool _dock_type; + _dock_type dock; + + DockGoal(): + dock(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_dock; + u_dock.real = this->dock; + *(outbuffer + offset + 0) = (u_dock.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->dock); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_dock; + u_dock.base = 0; + u_dock.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->dock = u_dock.real; + offset += sizeof(this->dock); + return offset; + } + + const char * getType(){ return "py_trees_msgs/DockGoal"; }; + const char * getMD5(){ return "035360b0bb03f7f742a0b2d734a3a660"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockResult.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockResult.h new file mode 100644 index 0000000..685ba13 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/DockResult.h @@ -0,0 +1,75 @@ +#ifndef _ROS_py_trees_msgs_DockResult_h +#define _ROS_py_trees_msgs_DockResult_h + +#include +#include +#include +#include "ros/msg.h" + +namespace py_trees_msgs +{ + + class DockResult : public ros::Msg + { + public: + typedef int8_t _value_type; + _value_type value; + typedef const char* _message_type; + _message_type message; + enum { SUCCESS = 0 }; + enum { ERROR = 1 }; + + DockResult(): + value(0), + message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int8_t real; + uint8_t base; + } u_value; + u_value.real = this->value; + *(outbuffer + offset + 0) = (u_value.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->value); + uint32_t length_message = strlen(this->message); + varToArr(outbuffer + offset, length_message); + offset += 4; + memcpy(outbuffer + offset, this->message, length_message); + offset += length_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int8_t real; + uint8_t base; + } u_value; + u_value.base = 0; + u_value.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->value = u_value.real; + offset += sizeof(this->value); + uint32_t length_message; + arrToVar(length_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_message-1]=0; + this->message = (char *)(inbuffer + offset-1); + offset += length_message; + return offset; + } + + const char * getType(){ return "py_trees_msgs/DockResult"; }; + const char * getMD5(){ return "7e3448b3518ac363f90f534593733372"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/GetBlackboardVariables.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/GetBlackboardVariables.h new file mode 100644 index 0000000..cd90747 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/GetBlackboardVariables.h @@ -0,0 +1,107 @@ +#ifndef _ROS_SERVICE_GetBlackboardVariables_h +#define _ROS_SERVICE_GetBlackboardVariables_h +#include +#include +#include +#include "ros/msg.h" + +namespace py_trees_msgs +{ + +static const char GETBLACKBOARDVARIABLES[] = "py_trees_msgs/GetBlackboardVariables"; + + class GetBlackboardVariablesRequest : public ros::Msg + { + public: + + GetBlackboardVariablesRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return GETBLACKBOARDVARIABLES; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class GetBlackboardVariablesResponse : public ros::Msg + { + public: + uint32_t variables_length; + typedef char* _variables_type; + _variables_type st_variables; + _variables_type * variables; + + GetBlackboardVariablesResponse(): + variables_length(0), variables(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->variables_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->variables_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->variables_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->variables_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->variables_length); + for( uint32_t i = 0; i < variables_length; i++){ + uint32_t length_variablesi = strlen(this->variables[i]); + varToArr(outbuffer + offset, length_variablesi); + offset += 4; + memcpy(outbuffer + offset, this->variables[i], length_variablesi); + offset += length_variablesi; + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t variables_lengthT = ((uint32_t) (*(inbuffer + offset))); + variables_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + variables_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + variables_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->variables_length); + if(variables_lengthT > variables_length) + this->variables = (char**)realloc(this->variables, variables_lengthT * sizeof(char*)); + variables_length = variables_lengthT; + for( uint32_t i = 0; i < variables_length; i++){ + uint32_t length_st_variables; + arrToVar(length_st_variables, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_variables; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_variables-1]=0; + this->st_variables = (char *)(inbuffer + offset-1); + offset += length_st_variables; + memcpy( &(this->variables[i]), &(this->st_variables), sizeof(char*)); + } + return offset; + } + + const char * getType(){ return GETBLACKBOARDVARIABLES; }; + const char * getMD5(){ return "8f184382c36d538fab610317191b119e"; }; + + }; + + class GetBlackboardVariables { + public: + typedef GetBlackboardVariablesRequest Request; + typedef GetBlackboardVariablesResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/OpenBlackboardWatcher.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/OpenBlackboardWatcher.h new file mode 100644 index 0000000..e4fb763 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/OpenBlackboardWatcher.h @@ -0,0 +1,124 @@ +#ifndef _ROS_SERVICE_OpenBlackboardWatcher_h +#define _ROS_SERVICE_OpenBlackboardWatcher_h +#include +#include +#include +#include "ros/msg.h" + +namespace py_trees_msgs +{ + +static const char OPENBLACKBOARDWATCHER[] = "py_trees_msgs/OpenBlackboardWatcher"; + + class OpenBlackboardWatcherRequest : public ros::Msg + { + public: + uint32_t variables_length; + typedef char* _variables_type; + _variables_type st_variables; + _variables_type * variables; + + OpenBlackboardWatcherRequest(): + variables_length(0), variables(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->variables_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->variables_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->variables_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->variables_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->variables_length); + for( uint32_t i = 0; i < variables_length; i++){ + uint32_t length_variablesi = strlen(this->variables[i]); + varToArr(outbuffer + offset, length_variablesi); + offset += 4; + memcpy(outbuffer + offset, this->variables[i], length_variablesi); + offset += length_variablesi; + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t variables_lengthT = ((uint32_t) (*(inbuffer + offset))); + variables_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + variables_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + variables_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->variables_length); + if(variables_lengthT > variables_length) + this->variables = (char**)realloc(this->variables, variables_lengthT * sizeof(char*)); + variables_length = variables_lengthT; + for( uint32_t i = 0; i < variables_length; i++){ + uint32_t length_st_variables; + arrToVar(length_st_variables, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_variables; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_variables-1]=0; + this->st_variables = (char *)(inbuffer + offset-1); + offset += length_st_variables; + memcpy( &(this->variables[i]), &(this->st_variables), sizeof(char*)); + } + return offset; + } + + const char * getType(){ return OPENBLACKBOARDWATCHER; }; + const char * getMD5(){ return "8f184382c36d538fab610317191b119e"; }; + + }; + + class OpenBlackboardWatcherResponse : public ros::Msg + { + public: + typedef const char* _topic_type; + _topic_type topic; + + OpenBlackboardWatcherResponse(): + topic("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_topic = strlen(this->topic); + varToArr(outbuffer + offset, length_topic); + offset += 4; + memcpy(outbuffer + offset, this->topic, length_topic); + offset += length_topic; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_topic; + arrToVar(length_topic, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_topic; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_topic-1]=0; + this->topic = (char *)(inbuffer + offset-1); + offset += length_topic; + return offset; + } + + const char * getType(){ return OPENBLACKBOARDWATCHER; }; + const char * getMD5(){ return "d8f94bae31b356b24d0427f80426d0c3"; }; + + }; + + class OpenBlackboardWatcher { + public: + typedef OpenBlackboardWatcherRequest Request; + typedef OpenBlackboardWatcherResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateAction.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateAction.h new file mode 100644 index 0000000..dda6c2f --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_py_trees_msgs_RotateAction_h +#define _ROS_py_trees_msgs_RotateAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "py_trees_msgs/RotateActionGoal.h" +#include "py_trees_msgs/RotateActionResult.h" +#include "py_trees_msgs/RotateActionFeedback.h" + +namespace py_trees_msgs +{ + + class RotateAction : public ros::Msg + { + public: + typedef py_trees_msgs::RotateActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef py_trees_msgs::RotateActionResult _action_result_type; + _action_result_type action_result; + typedef py_trees_msgs::RotateActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + RotateAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "py_trees_msgs/RotateAction"; }; + const char * getMD5(){ return "c68d9e0a719660a32868a081a56942db"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateActionFeedback.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateActionFeedback.h new file mode 100644 index 0000000..e1a7f5b --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_py_trees_msgs_RotateActionFeedback_h +#define _ROS_py_trees_msgs_RotateActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "py_trees_msgs/RotateFeedback.h" + +namespace py_trees_msgs +{ + + class RotateActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef py_trees_msgs::RotateFeedback _feedback_type; + _feedback_type feedback; + + RotateActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "py_trees_msgs/RotateActionFeedback"; }; + const char * getMD5(){ return "344ed0daa120e01d5801edcb980cf618"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateActionGoal.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateActionGoal.h new file mode 100644 index 0000000..1afb37b --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_py_trees_msgs_RotateActionGoal_h +#define _ROS_py_trees_msgs_RotateActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "py_trees_msgs/RotateGoal.h" + +namespace py_trees_msgs +{ + + class RotateActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef py_trees_msgs::RotateGoal _goal_type; + _goal_type goal; + + RotateActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "py_trees_msgs/RotateActionGoal"; }; + const char * getMD5(){ return "4b30be6cd12b9e72826df56b481f40e0"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateActionResult.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateActionResult.h new file mode 100644 index 0000000..7291431 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_py_trees_msgs_RotateActionResult_h +#define _ROS_py_trees_msgs_RotateActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "py_trees_msgs/RotateResult.h" + +namespace py_trees_msgs +{ + + class RotateActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef py_trees_msgs::RotateResult _result_type; + _result_type result; + + RotateActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "py_trees_msgs/RotateActionResult"; }; + const char * getMD5(){ return "4eda63f75c02197dafd2a62a0d413ab0"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateFeedback.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateFeedback.h new file mode 100644 index 0000000..52aa269 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateFeedback.h @@ -0,0 +1,86 @@ +#ifndef _ROS_py_trees_msgs_RotateFeedback_h +#define _ROS_py_trees_msgs_RotateFeedback_h + +#include +#include +#include +#include "ros/msg.h" + +namespace py_trees_msgs +{ + + class RotateFeedback : public ros::Msg + { + public: + typedef float _percentage_completed_type; + _percentage_completed_type percentage_completed; + typedef float _angle_rotated_type; + _angle_rotated_type angle_rotated; + + RotateFeedback(): + percentage_completed(0), + angle_rotated(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + float real; + uint32_t base; + } u_percentage_completed; + u_percentage_completed.real = this->percentage_completed; + *(outbuffer + offset + 0) = (u_percentage_completed.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_percentage_completed.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_percentage_completed.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_percentage_completed.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->percentage_completed); + union { + float real; + uint32_t base; + } u_angle_rotated; + u_angle_rotated.real = this->angle_rotated; + *(outbuffer + offset + 0) = (u_angle_rotated.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_angle_rotated.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_angle_rotated.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_angle_rotated.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->angle_rotated); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + float real; + uint32_t base; + } u_percentage_completed; + u_percentage_completed.base = 0; + u_percentage_completed.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_percentage_completed.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_percentage_completed.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_percentage_completed.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->percentage_completed = u_percentage_completed.real; + offset += sizeof(this->percentage_completed); + union { + float real; + uint32_t base; + } u_angle_rotated; + u_angle_rotated.base = 0; + u_angle_rotated.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_angle_rotated.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_angle_rotated.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_angle_rotated.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->angle_rotated = u_angle_rotated.real; + offset += sizeof(this->angle_rotated); + return offset; + } + + const char * getType(){ return "py_trees_msgs/RotateFeedback"; }; + const char * getMD5(){ return "f1088922e17b4a9f4319356ac8d99645"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateGoal.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateGoal.h new file mode 100644 index 0000000..4d196ed --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateGoal.h @@ -0,0 +1,38 @@ +#ifndef _ROS_py_trees_msgs_RotateGoal_h +#define _ROS_py_trees_msgs_RotateGoal_h + +#include +#include +#include +#include "ros/msg.h" + +namespace py_trees_msgs +{ + + class RotateGoal : public ros::Msg + { + public: + + RotateGoal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "py_trees_msgs/RotateGoal"; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateResult.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateResult.h new file mode 100644 index 0000000..d84dc61 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/py_trees_msgs/RotateResult.h @@ -0,0 +1,75 @@ +#ifndef _ROS_py_trees_msgs_RotateResult_h +#define _ROS_py_trees_msgs_RotateResult_h + +#include +#include +#include +#include "ros/msg.h" + +namespace py_trees_msgs +{ + + class RotateResult : public ros::Msg + { + public: + typedef int8_t _value_type; + _value_type value; + typedef const char* _message_type; + _message_type message; + enum { SUCCESS = 0 }; + enum { ERROR = 1 }; + + RotateResult(): + value(0), + message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int8_t real; + uint8_t base; + } u_value; + u_value.real = this->value; + *(outbuffer + offset + 0) = (u_value.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->value); + uint32_t length_message = strlen(this->message); + varToArr(outbuffer + offset, length_message); + offset += 4; + memcpy(outbuffer + offset, this->message, length_message); + offset += length_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int8_t real; + uint8_t base; + } u_value; + u_value.base = 0; + u_value.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->value = u_value.real; + offset += sizeof(this->value); + uint32_t length_message; + arrToVar(length_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_message-1]=0; + this->message = (char *)(inbuffer + offset-1); + offset += length_message; + return offset; + } + + const char * getType(){ return "py_trees_msgs/RotateResult"; }; + const char * getMD5(){ return "7e3448b3518ac363f90f534593733372"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/robot_pose_ekf/GetStatus.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/robot_pose_ekf/GetStatus.h new file mode 100644 index 0000000..155cde3 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/robot_pose_ekf/GetStatus.h @@ -0,0 +1,87 @@ +#ifndef _ROS_SERVICE_GetStatus_h +#define _ROS_SERVICE_GetStatus_h +#include +#include +#include +#include "ros/msg.h" + +namespace robot_pose_ekf +{ + +static const char GETSTATUS[] = "robot_pose_ekf/GetStatus"; + + class GetStatusRequest : public ros::Msg + { + public: + + GetStatusRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return GETSTATUS; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class GetStatusResponse : public ros::Msg + { + public: + typedef const char* _status_type; + _status_type status; + + GetStatusResponse(): + status("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_status = strlen(this->status); + varToArr(outbuffer + offset, length_status); + offset += 4; + memcpy(outbuffer + offset, this->status, length_status); + offset += length_status; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_status; + arrToVar(length_status, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status-1]=0; + this->status = (char *)(inbuffer + offset-1); + offset += length_status; + return offset; + } + + const char * getType(){ return GETSTATUS; }; + const char * getMD5(){ return "4fe5af303955c287688e7347e9b00278"; }; + + }; + + class GetStatus { + public: + typedef GetStatusRequest Request; + typedef GetStatusResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_service_pair_msgs/TestiesPair.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_service_pair_msgs/TestiesPair.h new file mode 100644 index 0000000..4ea6cfd --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_service_pair_msgs/TestiesPair.h @@ -0,0 +1,50 @@ +#ifndef _ROS_rocon_service_pair_msgs_TestiesPair_h +#define _ROS_rocon_service_pair_msgs_TestiesPair_h + +#include +#include +#include +#include "ros/msg.h" +#include "rocon_service_pair_msgs/TestiesPairRequest.h" +#include "rocon_service_pair_msgs/TestiesPairResponse.h" + +namespace rocon_service_pair_msgs +{ + + class TestiesPair : public ros::Msg + { + public: + typedef rocon_service_pair_msgs::TestiesPairRequest _pair_request_type; + _pair_request_type pair_request; + typedef rocon_service_pair_msgs::TestiesPairResponse _pair_response_type; + _pair_response_type pair_response; + + TestiesPair(): + pair_request(), + pair_response() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->pair_request.serialize(outbuffer + offset); + offset += this->pair_response.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->pair_request.deserialize(inbuffer + offset); + offset += this->pair_response.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "rocon_service_pair_msgs/TestiesPair"; }; + const char * getMD5(){ return "7b5cb9b4ccdb74840ce04ea92d2a141d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_service_pair_msgs/TestiesPairRequest.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_service_pair_msgs/TestiesPairRequest.h new file mode 100644 index 0000000..8da52e4 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_service_pair_msgs/TestiesPairRequest.h @@ -0,0 +1,50 @@ +#ifndef _ROS_rocon_service_pair_msgs_TestiesPairRequest_h +#define _ROS_rocon_service_pair_msgs_TestiesPairRequest_h + +#include +#include +#include +#include "ros/msg.h" +#include "uuid_msgs/UniqueID.h" +#include "rocon_service_pair_msgs/TestiesRequest.h" + +namespace rocon_service_pair_msgs +{ + + class TestiesPairRequest : public ros::Msg + { + public: + typedef uuid_msgs::UniqueID _id_type; + _id_type id; + typedef rocon_service_pair_msgs::TestiesRequest _request_type; + _request_type request; + + TestiesPairRequest(): + id(), + request() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->id.serialize(outbuffer + offset); + offset += this->request.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->id.deserialize(inbuffer + offset); + offset += this->request.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "rocon_service_pair_msgs/TestiesPairRequest"; }; + const char * getMD5(){ return "71ec95e384ce52aa32491f3b69a62027"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_service_pair_msgs/TestiesPairResponse.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_service_pair_msgs/TestiesPairResponse.h new file mode 100644 index 0000000..4fec039 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_service_pair_msgs/TestiesPairResponse.h @@ -0,0 +1,50 @@ +#ifndef _ROS_rocon_service_pair_msgs_TestiesPairResponse_h +#define _ROS_rocon_service_pair_msgs_TestiesPairResponse_h + +#include +#include +#include +#include "ros/msg.h" +#include "uuid_msgs/UniqueID.h" +#include "rocon_service_pair_msgs/TestiesResponse.h" + +namespace rocon_service_pair_msgs +{ + + class TestiesPairResponse : public ros::Msg + { + public: + typedef uuid_msgs::UniqueID _id_type; + _id_type id; + typedef rocon_service_pair_msgs::TestiesResponse _response_type; + _response_type response; + + TestiesPairResponse(): + id(), + response() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->id.serialize(outbuffer + offset); + offset += this->response.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->id.deserialize(inbuffer + offset); + offset += this->response.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "rocon_service_pair_msgs/TestiesPairResponse"; }; + const char * getMD5(){ return "05404c9fe275eda57650fdfced8cf402"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_service_pair_msgs/TestiesRequest.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_service_pair_msgs/TestiesRequest.h new file mode 100644 index 0000000..058b24d --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_service_pair_msgs/TestiesRequest.h @@ -0,0 +1,55 @@ +#ifndef _ROS_rocon_service_pair_msgs_TestiesRequest_h +#define _ROS_rocon_service_pair_msgs_TestiesRequest_h + +#include +#include +#include +#include "ros/msg.h" + +namespace rocon_service_pair_msgs +{ + + class TestiesRequest : public ros::Msg + { + public: + typedef const char* _data_type; + _data_type data; + + TestiesRequest(): + data("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_data = strlen(this->data); + varToArr(outbuffer + offset, length_data); + offset += 4; + memcpy(outbuffer + offset, this->data, length_data); + offset += length_data; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_data; + arrToVar(length_data, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_data; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_data-1]=0; + this->data = (char *)(inbuffer + offset-1); + offset += length_data; + return offset; + } + + const char * getType(){ return "rocon_service_pair_msgs/TestiesRequest"; }; + const char * getMD5(){ return "992ce8a1687cec8c8bd883ec73ca41d1"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_service_pair_msgs/TestiesResponse.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_service_pair_msgs/TestiesResponse.h new file mode 100644 index 0000000..3449e71 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_service_pair_msgs/TestiesResponse.h @@ -0,0 +1,61 @@ +#ifndef _ROS_rocon_service_pair_msgs_TestiesResponse_h +#define _ROS_rocon_service_pair_msgs_TestiesResponse_h + +#include +#include +#include +#include "ros/msg.h" +#include "uuid_msgs/UniqueID.h" + +namespace rocon_service_pair_msgs +{ + + class TestiesResponse : public ros::Msg + { + public: + typedef uuid_msgs::UniqueID _id_type; + _id_type id; + typedef const char* _data_type; + _data_type data; + + TestiesResponse(): + id(), + data("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->id.serialize(outbuffer + offset); + uint32_t length_data = strlen(this->data); + varToArr(outbuffer + offset, length_data); + offset += 4; + memcpy(outbuffer + offset, this->data, length_data); + offset += length_data; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->id.deserialize(inbuffer + offset); + uint32_t length_data; + arrToVar(length_data, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_data; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_data-1]=0; + this->data = (char *)(inbuffer + offset-1); + offset += length_data; + return offset; + } + + const char * getType(){ return "rocon_service_pair_msgs/TestiesResponse"; }; + const char * getMD5(){ return "f2e0bb16a22dc66826bb64ac8b44aeb3"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/Connection.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/Connection.h new file mode 100644 index 0000000..6b4ac1d --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/Connection.h @@ -0,0 +1,146 @@ +#ifndef _ROS_rocon_std_msgs_Connection_h +#define _ROS_rocon_std_msgs_Connection_h + +#include +#include +#include +#include "ros/msg.h" + +namespace rocon_std_msgs +{ + + class Connection : public ros::Msg + { + public: + typedef const char* _type_type; + _type_type type; + typedef const char* _name_type; + _name_type name; + typedef const char* _node_type; + _node_type node; + typedef const char* _type_msg_type; + _type_msg_type type_msg; + typedef const char* _type_info_type; + _type_info_type type_info; + typedef const char* _xmlrpc_uri_type; + _xmlrpc_uri_type xmlrpc_uri; + enum { PUBLISHER = publisher }; + enum { SUBSCRIBER = subscriber }; + enum { SERVICE = service }; + enum { ACTION_CLIENT = action_client }; + enum { ACTION_SERVER = action_server }; + enum { INVALID = invalid }; + + Connection(): + type(""), + name(""), + node(""), + type_msg(""), + type_info(""), + xmlrpc_uri("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_type = strlen(this->type); + varToArr(outbuffer + offset, length_type); + offset += 4; + memcpy(outbuffer + offset, this->type, length_type); + offset += length_type; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + uint32_t length_node = strlen(this->node); + varToArr(outbuffer + offset, length_node); + offset += 4; + memcpy(outbuffer + offset, this->node, length_node); + offset += length_node; + uint32_t length_type_msg = strlen(this->type_msg); + varToArr(outbuffer + offset, length_type_msg); + offset += 4; + memcpy(outbuffer + offset, this->type_msg, length_type_msg); + offset += length_type_msg; + uint32_t length_type_info = strlen(this->type_info); + varToArr(outbuffer + offset, length_type_info); + offset += 4; + memcpy(outbuffer + offset, this->type_info, length_type_info); + offset += length_type_info; + uint32_t length_xmlrpc_uri = strlen(this->xmlrpc_uri); + varToArr(outbuffer + offset, length_xmlrpc_uri); + offset += 4; + memcpy(outbuffer + offset, this->xmlrpc_uri, length_xmlrpc_uri); + offset += length_xmlrpc_uri; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_type; + arrToVar(length_type, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_type; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_type-1]=0; + this->type = (char *)(inbuffer + offset-1); + offset += length_type; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + uint32_t length_node; + arrToVar(length_node, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_node; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_node-1]=0; + this->node = (char *)(inbuffer + offset-1); + offset += length_node; + uint32_t length_type_msg; + arrToVar(length_type_msg, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_type_msg; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_type_msg-1]=0; + this->type_msg = (char *)(inbuffer + offset-1); + offset += length_type_msg; + uint32_t length_type_info; + arrToVar(length_type_info, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_type_info; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_type_info-1]=0; + this->type_info = (char *)(inbuffer + offset-1); + offset += length_type_info; + uint32_t length_xmlrpc_uri; + arrToVar(length_xmlrpc_uri, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_xmlrpc_uri; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_xmlrpc_uri-1]=0; + this->xmlrpc_uri = (char *)(inbuffer + offset-1); + offset += length_xmlrpc_uri; + return offset; + } + + const char * getType(){ return "rocon_std_msgs/Connection"; }; + const char * getMD5(){ return "0dee991006513320090e2ee648136101"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/ConnectionCacheSpin.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/ConnectionCacheSpin.h new file mode 100644 index 0000000..274a452 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/ConnectionCacheSpin.h @@ -0,0 +1,86 @@ +#ifndef _ROS_rocon_std_msgs_ConnectionCacheSpin_h +#define _ROS_rocon_std_msgs_ConnectionCacheSpin_h + +#include +#include +#include +#include "ros/msg.h" + +namespace rocon_std_msgs +{ + + class ConnectionCacheSpin : public ros::Msg + { + public: + typedef float _spin_freq_type; + _spin_freq_type spin_freq; + typedef float _spin_timer_type; + _spin_timer_type spin_timer; + + ConnectionCacheSpin(): + spin_freq(0), + spin_timer(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + float real; + uint32_t base; + } u_spin_freq; + u_spin_freq.real = this->spin_freq; + *(outbuffer + offset + 0) = (u_spin_freq.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_spin_freq.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_spin_freq.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_spin_freq.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->spin_freq); + union { + float real; + uint32_t base; + } u_spin_timer; + u_spin_timer.real = this->spin_timer; + *(outbuffer + offset + 0) = (u_spin_timer.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_spin_timer.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_spin_timer.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_spin_timer.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->spin_timer); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + float real; + uint32_t base; + } u_spin_freq; + u_spin_freq.base = 0; + u_spin_freq.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_spin_freq.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_spin_freq.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_spin_freq.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->spin_freq = u_spin_freq.real; + offset += sizeof(this->spin_freq); + union { + float real; + uint32_t base; + } u_spin_timer; + u_spin_timer.base = 0; + u_spin_timer.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_spin_timer.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_spin_timer.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_spin_timer.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->spin_timer = u_spin_timer.real; + offset += sizeof(this->spin_timer); + return offset; + } + + const char * getType(){ return "rocon_std_msgs/ConnectionCacheSpin"; }; + const char * getMD5(){ return "b6c0b0ddb1d2a2de9918dc5f6d87680a"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/ConnectionsDiff.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/ConnectionsDiff.h new file mode 100644 index 0000000..f7848ac --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/ConnectionsDiff.h @@ -0,0 +1,89 @@ +#ifndef _ROS_rocon_std_msgs_ConnectionsDiff_h +#define _ROS_rocon_std_msgs_ConnectionsDiff_h + +#include +#include +#include +#include "ros/msg.h" +#include "rocon_std_msgs/Connection.h" + +namespace rocon_std_msgs +{ + + class ConnectionsDiff : public ros::Msg + { + public: + uint32_t added_length; + typedef rocon_std_msgs::Connection _added_type; + _added_type st_added; + _added_type * added; + uint32_t lost_length; + typedef rocon_std_msgs::Connection _lost_type; + _lost_type st_lost; + _lost_type * lost; + + ConnectionsDiff(): + added_length(0), added(NULL), + lost_length(0), lost(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->added_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->added_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->added_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->added_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->added_length); + for( uint32_t i = 0; i < added_length; i++){ + offset += this->added[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->lost_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->lost_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->lost_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->lost_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->lost_length); + for( uint32_t i = 0; i < lost_length; i++){ + offset += this->lost[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t added_lengthT = ((uint32_t) (*(inbuffer + offset))); + added_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + added_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + added_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->added_length); + if(added_lengthT > added_length) + this->added = (rocon_std_msgs::Connection*)realloc(this->added, added_lengthT * sizeof(rocon_std_msgs::Connection)); + added_length = added_lengthT; + for( uint32_t i = 0; i < added_length; i++){ + offset += this->st_added.deserialize(inbuffer + offset); + memcpy( &(this->added[i]), &(this->st_added), sizeof(rocon_std_msgs::Connection)); + } + uint32_t lost_lengthT = ((uint32_t) (*(inbuffer + offset))); + lost_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + lost_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + lost_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->lost_length); + if(lost_lengthT > lost_length) + this->lost = (rocon_std_msgs::Connection*)realloc(this->lost, lost_lengthT * sizeof(rocon_std_msgs::Connection)); + lost_length = lost_lengthT; + for( uint32_t i = 0; i < lost_length; i++){ + offset += this->st_lost.deserialize(inbuffer + offset); + memcpy( &(this->lost[i]), &(this->st_lost), sizeof(rocon_std_msgs::Connection)); + } + return offset; + } + + const char * getType(){ return "rocon_std_msgs/ConnectionsDiff"; }; + const char * getMD5(){ return "19f9e3bef1153b4bc619ec3d21b94718"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/ConnectionsList.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/ConnectionsList.h new file mode 100644 index 0000000..3d595df --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/ConnectionsList.h @@ -0,0 +1,64 @@ +#ifndef _ROS_rocon_std_msgs_ConnectionsList_h +#define _ROS_rocon_std_msgs_ConnectionsList_h + +#include +#include +#include +#include "ros/msg.h" +#include "rocon_std_msgs/Connection.h" + +namespace rocon_std_msgs +{ + + class ConnectionsList : public ros::Msg + { + public: + uint32_t connections_length; + typedef rocon_std_msgs::Connection _connections_type; + _connections_type st_connections; + _connections_type * connections; + + ConnectionsList(): + connections_length(0), connections(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->connections_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->connections_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->connections_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->connections_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->connections_length); + for( uint32_t i = 0; i < connections_length; i++){ + offset += this->connections[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t connections_lengthT = ((uint32_t) (*(inbuffer + offset))); + connections_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + connections_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + connections_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->connections_length); + if(connections_lengthT > connections_length) + this->connections = (rocon_std_msgs::Connection*)realloc(this->connections, connections_lengthT * sizeof(rocon_std_msgs::Connection)); + connections_length = connections_lengthT; + for( uint32_t i = 0; i < connections_length; i++){ + offset += this->st_connections.deserialize(inbuffer + offset); + memcpy( &(this->connections[i]), &(this->st_connections), sizeof(rocon_std_msgs::Connection)); + } + return offset; + } + + const char * getType(){ return "rocon_std_msgs/ConnectionsList"; }; + const char * getMD5(){ return "672d6ad69b684884f8fb6f4acedbd39f"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/EmptyString.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/EmptyString.h new file mode 100644 index 0000000..a6d8733 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/EmptyString.h @@ -0,0 +1,87 @@ +#ifndef _ROS_SERVICE_EmptyString_h +#define _ROS_SERVICE_EmptyString_h +#include +#include +#include +#include "ros/msg.h" + +namespace rocon_std_msgs +{ + +static const char EMPTYSTRING[] = "rocon_std_msgs/EmptyString"; + + class EmptyStringRequest : public ros::Msg + { + public: + + EmptyStringRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return EMPTYSTRING; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class EmptyStringResponse : public ros::Msg + { + public: + typedef const char* _data_type; + _data_type data; + + EmptyStringResponse(): + data("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_data = strlen(this->data); + varToArr(outbuffer + offset, length_data); + offset += 4; + memcpy(outbuffer + offset, this->data, length_data); + offset += length_data; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_data; + arrToVar(length_data, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_data; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_data-1]=0; + this->data = (char *)(inbuffer + offset-1); + offset += length_data; + return offset; + } + + const char * getType(){ return EMPTYSTRING; }; + const char * getMD5(){ return "992ce8a1687cec8c8bd883ec73ca41d1"; }; + + }; + + class EmptyString { + public: + typedef EmptyStringRequest Request; + typedef EmptyStringResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/Float32Stamped.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/Float32Stamped.h new file mode 100644 index 0000000..fd8f5ff --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/Float32Stamped.h @@ -0,0 +1,68 @@ +#ifndef _ROS_rocon_std_msgs_Float32Stamped_h +#define _ROS_rocon_std_msgs_Float32Stamped_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace rocon_std_msgs +{ + + class Float32Stamped : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef float _data_type; + _data_type data; + + Float32Stamped(): + header(), + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + union { + float real; + uint32_t base; + } u_data; + u_data.real = this->data; + *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_data.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_data.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_data.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + union { + float real; + uint32_t base; + } u_data; + u_data.base = 0; + u_data.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->data = u_data.real; + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return "rocon_std_msgs/Float32Stamped"; }; + const char * getMD5(){ return "ef848af8cf12f6df11682cc76fba477b"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/Icon.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/Icon.h new file mode 100644 index 0000000..b30516e --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/Icon.h @@ -0,0 +1,99 @@ +#ifndef _ROS_rocon_std_msgs_Icon_h +#define _ROS_rocon_std_msgs_Icon_h + +#include +#include +#include +#include "ros/msg.h" + +namespace rocon_std_msgs +{ + + class Icon : public ros::Msg + { + public: + typedef const char* _resource_name_type; + _resource_name_type resource_name; + typedef const char* _format_type; + _format_type format; + uint32_t data_length; + typedef uint8_t _data_type; + _data_type st_data; + _data_type * data; + + Icon(): + resource_name(""), + format(""), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_resource_name = strlen(this->resource_name); + varToArr(outbuffer + offset, length_resource_name); + offset += 4; + memcpy(outbuffer + offset, this->resource_name, length_resource_name); + offset += length_resource_name; + uint32_t length_format = strlen(this->format); + varToArr(outbuffer + offset, length_format); + offset += 4; + memcpy(outbuffer + offset, this->format, length_format); + offset += length_format; + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_resource_name; + arrToVar(length_resource_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_resource_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_resource_name-1]=0; + this->resource_name = (char *)(inbuffer + offset-1); + offset += length_resource_name; + uint32_t length_format; + arrToVar(length_format, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_format; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_format-1]=0; + this->format = (char *)(inbuffer + offset-1); + offset += length_format; + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (uint8_t*)realloc(this->data, data_lengthT * sizeof(uint8_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + this->st_data = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(uint8_t)); + } + return offset; + } + + const char * getType(){ return "rocon_std_msgs/Icon"; }; + const char * getMD5(){ return "2ddacfedd31b6da3f723794afbd3b9de"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/KeyValue.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/KeyValue.h new file mode 100644 index 0000000..980b1b5 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/KeyValue.h @@ -0,0 +1,72 @@ +#ifndef _ROS_rocon_std_msgs_KeyValue_h +#define _ROS_rocon_std_msgs_KeyValue_h + +#include +#include +#include +#include "ros/msg.h" + +namespace rocon_std_msgs +{ + + class KeyValue : public ros::Msg + { + public: + typedef const char* _key_type; + _key_type key; + typedef const char* _value_type; + _value_type value; + + KeyValue(): + key(""), + value("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_key = strlen(this->key); + varToArr(outbuffer + offset, length_key); + offset += 4; + memcpy(outbuffer + offset, this->key, length_key); + offset += length_key; + uint32_t length_value = strlen(this->value); + varToArr(outbuffer + offset, length_value); + offset += 4; + memcpy(outbuffer + offset, this->value, length_value); + offset += length_value; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_key; + arrToVar(length_key, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_key; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_key-1]=0; + this->key = (char *)(inbuffer + offset-1); + offset += length_key; + uint32_t length_value; + arrToVar(length_value, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_value; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_value-1]=0; + this->value = (char *)(inbuffer + offset-1); + offset += length_value; + return offset; + } + + const char * getType(){ return "rocon_std_msgs/KeyValue"; }; + const char * getMD5(){ return "cf57fdc6617a881a88c16e768132149c"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/MasterInfo.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/MasterInfo.h new file mode 100644 index 0000000..7cf4d4a --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/MasterInfo.h @@ -0,0 +1,112 @@ +#ifndef _ROS_rocon_std_msgs_MasterInfo_h +#define _ROS_rocon_std_msgs_MasterInfo_h + +#include +#include +#include +#include "ros/msg.h" +#include "rocon_std_msgs/Icon.h" + +namespace rocon_std_msgs +{ + + class MasterInfo : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef const char* _rocon_uri_type; + _rocon_uri_type rocon_uri; + typedef const char* _description_type; + _description_type description; + typedef rocon_std_msgs::Icon _icon_type; + _icon_type icon; + typedef const char* _version_type; + _version_type version; + + MasterInfo(): + name(""), + rocon_uri(""), + description(""), + icon(), + version("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + uint32_t length_rocon_uri = strlen(this->rocon_uri); + varToArr(outbuffer + offset, length_rocon_uri); + offset += 4; + memcpy(outbuffer + offset, this->rocon_uri, length_rocon_uri); + offset += length_rocon_uri; + uint32_t length_description = strlen(this->description); + varToArr(outbuffer + offset, length_description); + offset += 4; + memcpy(outbuffer + offset, this->description, length_description); + offset += length_description; + offset += this->icon.serialize(outbuffer + offset); + uint32_t length_version = strlen(this->version); + varToArr(outbuffer + offset, length_version); + offset += 4; + memcpy(outbuffer + offset, this->version, length_version); + offset += length_version; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + uint32_t length_rocon_uri; + arrToVar(length_rocon_uri, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_rocon_uri; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_rocon_uri-1]=0; + this->rocon_uri = (char *)(inbuffer + offset-1); + offset += length_rocon_uri; + uint32_t length_description; + arrToVar(length_description, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_description; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_description-1]=0; + this->description = (char *)(inbuffer + offset-1); + offset += length_description; + offset += this->icon.deserialize(inbuffer + offset); + uint32_t length_version; + arrToVar(length_version, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_version; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_version-1]=0; + this->version = (char *)(inbuffer + offset-1); + offset += length_version; + return offset; + } + + const char * getType(){ return "rocon_std_msgs/MasterInfo"; }; + const char * getMD5(){ return "e85613ae2e3faade6b77d94b4e0bf4bf"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/Remapping.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/Remapping.h new file mode 100644 index 0000000..5e94955 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/Remapping.h @@ -0,0 +1,72 @@ +#ifndef _ROS_rocon_std_msgs_Remapping_h +#define _ROS_rocon_std_msgs_Remapping_h + +#include +#include +#include +#include "ros/msg.h" + +namespace rocon_std_msgs +{ + + class Remapping : public ros::Msg + { + public: + typedef const char* _remap_from_type; + _remap_from_type remap_from; + typedef const char* _remap_to_type; + _remap_to_type remap_to; + + Remapping(): + remap_from(""), + remap_to("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_remap_from = strlen(this->remap_from); + varToArr(outbuffer + offset, length_remap_from); + offset += 4; + memcpy(outbuffer + offset, this->remap_from, length_remap_from); + offset += length_remap_from; + uint32_t length_remap_to = strlen(this->remap_to); + varToArr(outbuffer + offset, length_remap_to); + offset += 4; + memcpy(outbuffer + offset, this->remap_to, length_remap_to); + offset += length_remap_to; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_remap_from; + arrToVar(length_remap_from, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_remap_from; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_remap_from-1]=0; + this->remap_from = (char *)(inbuffer + offset-1); + offset += length_remap_from; + uint32_t length_remap_to; + arrToVar(length_remap_to, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_remap_to; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_remap_to-1]=0; + this->remap_to = (char *)(inbuffer + offset-1); + offset += length_remap_to; + return offset; + } + + const char * getType(){ return "rocon_std_msgs/Remapping"; }; + const char * getMD5(){ return "26f16c667d483280bc5d040bf2c0cd8d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringArray.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringArray.h new file mode 100644 index 0000000..9beb93a --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringArray.h @@ -0,0 +1,75 @@ +#ifndef _ROS_rocon_std_msgs_StringArray_h +#define _ROS_rocon_std_msgs_StringArray_h + +#include +#include +#include +#include "ros/msg.h" + +namespace rocon_std_msgs +{ + + class StringArray : public ros::Msg + { + public: + uint32_t strings_length; + typedef char* _strings_type; + _strings_type st_strings; + _strings_type * strings; + + StringArray(): + strings_length(0), strings(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->strings_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->strings_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->strings_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->strings_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->strings_length); + for( uint32_t i = 0; i < strings_length; i++){ + uint32_t length_stringsi = strlen(this->strings[i]); + varToArr(outbuffer + offset, length_stringsi); + offset += 4; + memcpy(outbuffer + offset, this->strings[i], length_stringsi); + offset += length_stringsi; + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t strings_lengthT = ((uint32_t) (*(inbuffer + offset))); + strings_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + strings_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + strings_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->strings_length); + if(strings_lengthT > strings_length) + this->strings = (char**)realloc(this->strings, strings_lengthT * sizeof(char*)); + strings_length = strings_lengthT; + for( uint32_t i = 0; i < strings_length; i++){ + uint32_t length_st_strings; + arrToVar(length_st_strings, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_strings; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_strings-1]=0; + this->st_strings = (char *)(inbuffer + offset-1); + offset += length_st_strings; + memcpy( &(this->strings[i]), &(this->st_strings), sizeof(char*)); + } + return offset; + } + + const char * getType(){ return "rocon_std_msgs/StringArray"; }; + const char * getMD5(){ return "51789d20146e565223d0963361aecda1"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/Strings.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/Strings.h new file mode 100644 index 0000000..71f9809 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/Strings.h @@ -0,0 +1,83 @@ +#ifndef _ROS_rocon_std_msgs_Strings_h +#define _ROS_rocon_std_msgs_Strings_h + +#include +#include +#include +#include "ros/msg.h" + +namespace rocon_std_msgs +{ + + class Strings : public ros::Msg + { + public: + enum { ROCON_VERSION = acdc }; + enum { URI_WILDCARD = * }; + enum { HW_PC = pc }; + enum { HW_TURTLEBOT2 = turtlebot2 }; + enum { HW_PR2 = pr2 }; + enum { HW_WAITERBOT = waiterbot }; + enum { HW_ROBOT_OTHER = robot_other }; + enum { HW_GALAXY = galaxy }; + enum { HW_MEGA = mega }; + enum { HW_NOTE3 = note3 }; + enum { HW_PHONE_OTHER = phone_other }; + enum { HW_XOOM = xoom }; + enum { HW_NOTE10 = note10 }; + enum { HW_TABLET_OTHER = tablet_other }; + enum { APPLICATION_FRAMEWORK_OTHER = application_framework_other }; + enum { APPLICATION_FRAMEWORK_OPROS = opros }; + enum { APPLICATION_FRAMEWORK_GROOVY = groovy }; + enum { APPLICATION_FRAMEWORK_HYDRO = hydro }; + enum { APPLICATION_FRAMEWORK_INDIGO = indigo }; + enum { APPLICATION_FRAMEWORK_ROS_OTHER = ros_other }; + enum { OS_OSX = osx }; + enum { OS_FREEBSD = freebsd }; + enum { OS_WINXP = winxp }; + enum { OS_WINDOWS7 = windows7 }; + enum { OS_ARCH = arch }; + enum { OS_DEBIAN = debian }; + enum { OS_FEDORA = fedora }; + enum { OS_GENTOO = gentoo }; + enum { OS_PRECISE = precise }; + enum { OS_QUANTAL = quantal }; + enum { OS_RARING = raring }; + enum { OS_SAUCY = saucy }; + enum { OS_HONEYCOMB = honeycomb }; + enum { OS_ICE_CREAM_SANDWICH = ice_cream_sandwich }; + enum { OS_JELLYBEAN = jellybean }; + enum { OS_KITKAT = kitkat }; + enum { OS_CHROME = chrome }; + enum { OS_FIREFOX = firefox }; + enum { OS_INTERNET_EXPLORER = internet_explorer }; + enum { OS_SAFARI = safari }; + enum { OS_OPERA = opera }; + enum { TAG_SERVICE = concert_service }; + enum { TAG_RAPP = rocon_app }; + enum { TAG_GAZEBO_ROBOT_TYPE = concert_gazebo }; + enum { TAG_SOFTWARE = software_farm }; + + Strings() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "rocon_std_msgs/Strings"; }; + const char * getMD5(){ return "58fa1e54e6c0338b3faebae82a13e892"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringsPair.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringsPair.h new file mode 100644 index 0000000..1a80716 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringsPair.h @@ -0,0 +1,50 @@ +#ifndef _ROS_rocon_std_msgs_StringsPair_h +#define _ROS_rocon_std_msgs_StringsPair_h + +#include +#include +#include +#include "ros/msg.h" +#include "rocon_std_msgs/StringsPairRequest.h" +#include "rocon_std_msgs/StringsPairResponse.h" + +namespace rocon_std_msgs +{ + + class StringsPair : public ros::Msg + { + public: + typedef rocon_std_msgs::StringsPairRequest _pair_request_type; + _pair_request_type pair_request; + typedef rocon_std_msgs::StringsPairResponse _pair_response_type; + _pair_response_type pair_response; + + StringsPair(): + pair_request(), + pair_response() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->pair_request.serialize(outbuffer + offset); + offset += this->pair_response.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->pair_request.deserialize(inbuffer + offset); + offset += this->pair_response.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "rocon_std_msgs/StringsPair"; }; + const char * getMD5(){ return "d41c9071bd514be249c417a13ec83e65"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringsPairRequest.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringsPairRequest.h new file mode 100644 index 0000000..ba89251 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringsPairRequest.h @@ -0,0 +1,50 @@ +#ifndef _ROS_rocon_std_msgs_StringsPairRequest_h +#define _ROS_rocon_std_msgs_StringsPairRequest_h + +#include +#include +#include +#include "ros/msg.h" +#include "uuid_msgs/UniqueID.h" +#include "rocon_std_msgs/StringsRequest.h" + +namespace rocon_std_msgs +{ + + class StringsPairRequest : public ros::Msg + { + public: + typedef uuid_msgs::UniqueID _id_type; + _id_type id; + typedef rocon_std_msgs::StringsRequest _request_type; + _request_type request; + + StringsPairRequest(): + id(), + request() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->id.serialize(outbuffer + offset); + offset += this->request.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->id.deserialize(inbuffer + offset); + offset += this->request.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "rocon_std_msgs/StringsPairRequest"; }; + const char * getMD5(){ return "71ec95e384ce52aa32491f3b69a62027"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringsPairResponse.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringsPairResponse.h new file mode 100644 index 0000000..65e29cd --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringsPairResponse.h @@ -0,0 +1,50 @@ +#ifndef _ROS_rocon_std_msgs_StringsPairResponse_h +#define _ROS_rocon_std_msgs_StringsPairResponse_h + +#include +#include +#include +#include "ros/msg.h" +#include "uuid_msgs/UniqueID.h" +#include "rocon_std_msgs/StringsResponse.h" + +namespace rocon_std_msgs +{ + + class StringsPairResponse : public ros::Msg + { + public: + typedef uuid_msgs::UniqueID _id_type; + _id_type id; + typedef rocon_std_msgs::StringsResponse _response_type; + _response_type response; + + StringsPairResponse(): + id(), + response() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->id.serialize(outbuffer + offset); + offset += this->response.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->id.deserialize(inbuffer + offset); + offset += this->response.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "rocon_std_msgs/StringsPairResponse"; }; + const char * getMD5(){ return "7b20492548347a7692aa8c5680af8d1b"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringsRequest.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringsRequest.h new file mode 100644 index 0000000..ce30bde --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringsRequest.h @@ -0,0 +1,55 @@ +#ifndef _ROS_rocon_std_msgs_StringsRequest_h +#define _ROS_rocon_std_msgs_StringsRequest_h + +#include +#include +#include +#include "ros/msg.h" + +namespace rocon_std_msgs +{ + + class StringsRequest : public ros::Msg + { + public: + typedef const char* _data_type; + _data_type data; + + StringsRequest(): + data("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_data = strlen(this->data); + varToArr(outbuffer + offset, length_data); + offset += 4; + memcpy(outbuffer + offset, this->data, length_data); + offset += length_data; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_data; + arrToVar(length_data, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_data; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_data-1]=0; + this->data = (char *)(inbuffer + offset-1); + offset += length_data; + return offset; + } + + const char * getType(){ return "rocon_std_msgs/StringsRequest"; }; + const char * getMD5(){ return "992ce8a1687cec8c8bd883ec73ca41d1"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringsResponse.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringsResponse.h new file mode 100644 index 0000000..31a9bec --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rocon_std_msgs/StringsResponse.h @@ -0,0 +1,55 @@ +#ifndef _ROS_rocon_std_msgs_StringsResponse_h +#define _ROS_rocon_std_msgs_StringsResponse_h + +#include +#include +#include +#include "ros/msg.h" + +namespace rocon_std_msgs +{ + + class StringsResponse : public ros::Msg + { + public: + typedef const char* _data_type; + _data_type data; + + StringsResponse(): + data("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_data = strlen(this->data); + varToArr(outbuffer + offset, length_data); + offset += 4; + memcpy(outbuffer + offset, this->data, length_data); + offset += length_data; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_data; + arrToVar(length_data, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_data; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_data-1]=0; + this->data = (char *)(inbuffer + offset-1); + offset += length_data; + return offset; + } + + const char * getType(){ return "rocon_std_msgs/StringsResponse"; }; + const char * getMD5(){ return "992ce8a1687cec8c8bd883ec73ca41d1"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/ros.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/ros.h new file mode 100644 index 0000000..a81550b --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/ros.h @@ -0,0 +1,52 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2011, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _ROS_H_ +#define _ROS_H_ + +#ifndef BUILD_LIBROSSERIALEMBEDDEDLINUX +#include "embedded_linux_comms.c" +#include "duration.cpp" +#include "time.cpp" +#endif + +#include "ros/node_handle.h" +#include "embedded_linux_hardware.h" + +namespace ros +{ +typedef NodeHandle_ NodeHandle; +} + +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/ros/duration.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/ros/duration.h new file mode 100644 index 0000000..5ec6d90 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/ros/duration.h @@ -0,0 +1,75 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2011, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _ROS_DURATION_H_ +#define _ROS_DURATION_H_ + +#include +#include + +namespace ros +{ + +void normalizeSecNSecSigned(int32_t& sec, int32_t& nsec); + +class Duration +{ +public: + int32_t sec, nsec; + + Duration() : sec(0), nsec(0) {} + Duration(int32_t _sec, int32_t _nsec) : sec(_sec), nsec(_nsec) + { + normalizeSecNSecSigned(sec, nsec); + } + + double toSec() const + { + return (double)sec + 1e-9 * (double)nsec; + }; + void fromSec(double t) + { + sec = (uint32_t) floor(t); + nsec = (uint32_t) round((t - sec) * 1e9); + }; + + Duration& operator+=(const Duration &rhs); + Duration& operator-=(const Duration &rhs); + Duration& operator*=(double scale); +}; + +} + +#endif + diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/ros/msg.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/ros/msg.h new file mode 100644 index 0000000..aea0f6f --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/ros/msg.h @@ -0,0 +1,148 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2011, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _ROS_MSG_H_ +#define _ROS_MSG_H_ + +#include +#include + +namespace ros +{ + +/* Base Message Type */ +class Msg +{ +public: + virtual int serialize(unsigned char *outbuffer) const = 0; + virtual int deserialize(unsigned char *data) = 0; + virtual const char * getType() = 0; + virtual const char * getMD5() = 0; + + /** + * @brief This tricky function handles promoting a 32bit float to a 64bit + * double, so that AVR can publish messages containing float64 + * fields, despite AVV having no native support for double. + * + * @param[out] outbuffer pointer for buffer to serialize to. + * @param[in] f value to serialize. + * + * @return number of bytes to advance the buffer pointer. + * + */ + static int serializeAvrFloat64(unsigned char* outbuffer, const float f) + { + const int32_t* val = (int32_t*) &f; + int32_t exp = ((*val >> 23) & 255); + if (exp != 0) + { + exp += 1023 - 127; + } + + int32_t sig = *val; + *(outbuffer++) = 0; + *(outbuffer++) = 0; + *(outbuffer++) = 0; + *(outbuffer++) = (sig << 5) & 0xff; + *(outbuffer++) = (sig >> 3) & 0xff; + *(outbuffer++) = (sig >> 11) & 0xff; + *(outbuffer++) = ((exp << 4) & 0xF0) | ((sig >> 19) & 0x0F); + *(outbuffer++) = (exp >> 4) & 0x7F; + + // Mark negative bit as necessary. + if (f < 0) + { + *(outbuffer - 1) |= 0x80; + } + + return 8; + } + + /** + * @brief This tricky function handles demoting a 64bit double to a + * 32bit float, so that AVR can understand messages containing + * float64 fields, despite AVR having no native support for double. + * + * @param[in] inbuffer pointer for buffer to deserialize from. + * @param[out] f pointer to place the deserialized value in. + * + * @return number of bytes to advance the buffer pointer. + */ + static int deserializeAvrFloat64(const unsigned char* inbuffer, float* f) + { + uint32_t* val = (uint32_t*)f; + inbuffer += 3; + + // Copy truncated mantissa. + *val = ((uint32_t)(*(inbuffer++)) >> 5 & 0x07); + *val |= ((uint32_t)(*(inbuffer++)) & 0xff) << 3; + *val |= ((uint32_t)(*(inbuffer++)) & 0xff) << 11; + *val |= ((uint32_t)(*inbuffer) & 0x0f) << 19; + + // Copy truncated exponent. + uint32_t exp = ((uint32_t)(*(inbuffer++)) & 0xf0) >> 4; + exp |= ((uint32_t)(*inbuffer) & 0x7f) << 4; + if (exp != 0) + { + *val |= ((exp) - 1023 + 127) << 23; + } + + // Copy negative sign. + *val |= ((uint32_t)(*(inbuffer++)) & 0x80) << 24; + + return 8; + } + + // Copy data from variable into a byte array + template + static void varToArr(A arr, const V var) + { + for (size_t i = 0; i < sizeof(V); i++) + arr[i] = (var >> (8 * i)); + } + + // Copy data from a byte array into variable + template + static void arrToVar(V& var, const A arr) + { + var = 0; + for (size_t i = 0; i < sizeof(V); i++) + var |= (arr[i] << (8 * i)); + } + +}; + +} // namespace ros + +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/ros/node_handle.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/ros/node_handle.h new file mode 100644 index 0000000..fa2416a --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/ros/node_handle.h @@ -0,0 +1,668 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2011, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef ROS_NODE_HANDLE_H_ +#define ROS_NODE_HANDLE_H_ + +#include + +#include "../std_msgs/Time.h" +#include "../rosserial_msgs/TopicInfo.h" +#include "../rosserial_msgs/Log.h" +#include "../rosserial_msgs/RequestParam.h" + +#include "../ros/msg.h" + +namespace ros +{ + +class NodeHandleBase_ +{ +public: + virtual int publish(int id, const Msg* msg) = 0; + virtual int spinOnce() = 0; + virtual bool connected() = 0; +}; +} + +#include "../ros/publisher.h" +#include "../ros/subscriber.h" +#include "../ros/service_server.h" +#include "../ros/service_client.h" + +namespace ros +{ + +const int SPIN_OK = 0; +const int SPIN_ERR = -1; +const int SPIN_TIMEOUT = -2; + +const uint8_t SYNC_SECONDS = 5; +const uint8_t MODE_FIRST_FF = 0; +/* + * The second sync byte is a protocol version. It's value is 0xff for the first + * version of the rosserial protocol (used up to hydro), 0xfe for the second version + * (introduced in hydro), 0xfd for the next, and so on. Its purpose is to enable + * detection of mismatched protocol versions (e.g. hydro rosserial_python with groovy + * rosserial_arduino. It must be changed in both this file and in + * rosserial_python/src/rosserial_python/SerialClient.py + */ +const uint8_t MODE_PROTOCOL_VER = 1; +const uint8_t PROTOCOL_VER1 = 0xff; // through groovy +const uint8_t PROTOCOL_VER2 = 0xfe; // in hydro +const uint8_t PROTOCOL_VER = PROTOCOL_VER2; +const uint8_t MODE_SIZE_L = 2; +const uint8_t MODE_SIZE_H = 3; +const uint8_t MODE_SIZE_CHECKSUM = 4; // checksum for msg size received from size L and H +const uint8_t MODE_TOPIC_L = 5; // waiting for topic id +const uint8_t MODE_TOPIC_H = 6; +const uint8_t MODE_MESSAGE = 7; +const uint8_t MODE_MSG_CHECKSUM = 8; // checksum for msg and topic id + + +const uint8_t SERIAL_MSG_TIMEOUT = 20; // 20 milliseconds to recieve all of message data + +using rosserial_msgs::TopicInfo; + +/* Node Handle */ +template +class NodeHandle_ : public NodeHandleBase_ +{ +protected: + Hardware hardware_; + + /* time used for syncing */ + uint32_t rt_time; + + /* used for computing current time */ + uint32_t sec_offset, nsec_offset; + + /* Spinonce maximum work timeout */ + uint32_t spin_timeout_; + + uint8_t message_in[INPUT_SIZE]; + uint8_t message_out[OUTPUT_SIZE]; + + Publisher * publishers[MAX_PUBLISHERS]; + Subscriber_ * subscribers[MAX_SUBSCRIBERS]; + + /* + * Setup Functions + */ +public: + NodeHandle_() : configured_(false) + { + + for (unsigned int i = 0; i < MAX_PUBLISHERS; i++) + publishers[i] = 0; + + for (unsigned int i = 0; i < MAX_SUBSCRIBERS; i++) + subscribers[i] = 0; + + for (unsigned int i = 0; i < INPUT_SIZE; i++) + message_in[i] = 0; + + for (unsigned int i = 0; i < OUTPUT_SIZE; i++) + message_out[i] = 0; + + req_param_resp.ints_length = 0; + req_param_resp.ints = NULL; + req_param_resp.floats_length = 0; + req_param_resp.floats = NULL; + req_param_resp.ints_length = 0; + req_param_resp.ints = NULL; + + spin_timeout_ = 0; + } + + Hardware* getHardware() + { + return &hardware_; + } + + /* Start serial, initialize buffers */ + void initNode() + { + hardware_.init(); + mode_ = 0; + bytes_ = 0; + index_ = 0; + topic_ = 0; + }; + + /* Start a named port, which may be network server IP, initialize buffers */ + void initNode(char *portName) + { + hardware_.init(portName); + mode_ = 0; + bytes_ = 0; + index_ = 0; + topic_ = 0; + }; + + /** + * @brief Sets the maximum time in millisconds that spinOnce() can work. + * This will not effect the processing of the buffer, as spinOnce processes + * one byte at a time. It simply sets the maximum time that one call can + * process for. You can choose to clear the buffer if that is beneficial if + * SPIN_TIMEOUT is returned from spinOnce(). + * @param timeout The timeout in milliseconds that spinOnce will function. + */ + void setSpinTimeout(const uint32_t& timeout) + { + spin_timeout_ = timeout; + } + +protected: + //State machine variables for spinOnce + int mode_; + int bytes_; + int topic_; + int index_; + int checksum_; + + bool configured_; + + /* used for syncing the time */ + uint32_t last_sync_time; + uint32_t last_sync_receive_time; + uint32_t last_msg_timeout_time; + +public: + /* This function goes in your loop() function, it handles + * serial input and callbacks for subscribers. + */ + + + virtual int spinOnce() + { + /* restart if timed out */ + uint32_t c_time = hardware_.time(); + if ((c_time - last_sync_receive_time) > (SYNC_SECONDS * 2200)) + { + configured_ = false; + } + + /* reset if message has timed out */ + if (mode_ != MODE_FIRST_FF) + { + if (c_time > last_msg_timeout_time) + { + mode_ = MODE_FIRST_FF; + } + } + + /* while available buffer, read data */ + while (true) + { + // If a timeout has been specified, check how long spinOnce has been running. + if (spin_timeout_ > 0) + { + // If the maximum processing timeout has been exceeded, exit with error. + // The next spinOnce can continue where it left off, or optionally + // based on the application in use, the hardware buffer could be flushed + // and start fresh. + if ((hardware_.time() - c_time) > spin_timeout_) + { + // Exit the spin, processing timeout exceeded. + return SPIN_TIMEOUT; + } + } + int data = hardware_.read(); + if (data < 0) + break; + checksum_ += data; + if (mode_ == MODE_MESSAGE) /* message data being recieved */ + { + message_in[index_++] = data; + bytes_--; + if (bytes_ == 0) /* is message complete? if so, checksum */ + mode_ = MODE_MSG_CHECKSUM; + } + else if (mode_ == MODE_FIRST_FF) + { + if (data == 0xff) + { + mode_++; + last_msg_timeout_time = c_time + SERIAL_MSG_TIMEOUT; + } + else if (hardware_.time() - c_time > (SYNC_SECONDS * 1000)) + { + /* We have been stuck in spinOnce too long, return error */ + configured_ = false; + return SPIN_TIMEOUT; + } + } + else if (mode_ == MODE_PROTOCOL_VER) + { + if (data == PROTOCOL_VER) + { + mode_++; + } + else + { + mode_ = MODE_FIRST_FF; + if (configured_ == false) + requestSyncTime(); /* send a msg back showing our protocol version */ + } + } + else if (mode_ == MODE_SIZE_L) /* bottom half of message size */ + { + bytes_ = data; + index_ = 0; + mode_++; + checksum_ = data; /* first byte for calculating size checksum */ + } + else if (mode_ == MODE_SIZE_H) /* top half of message size */ + { + bytes_ += data << 8; + mode_++; + } + else if (mode_ == MODE_SIZE_CHECKSUM) + { + if ((checksum_ % 256) == 255) + mode_++; + else + mode_ = MODE_FIRST_FF; /* Abandon the frame if the msg len is wrong */ + } + else if (mode_ == MODE_TOPIC_L) /* bottom half of topic id */ + { + topic_ = data; + mode_++; + checksum_ = data; /* first byte included in checksum */ + } + else if (mode_ == MODE_TOPIC_H) /* top half of topic id */ + { + topic_ += data << 8; + mode_ = MODE_MESSAGE; + if (bytes_ == 0) + mode_ = MODE_MSG_CHECKSUM; + } + else if (mode_ == MODE_MSG_CHECKSUM) /* do checksum */ + { + mode_ = MODE_FIRST_FF; + if ((checksum_ % 256) == 255) + { + if (topic_ == TopicInfo::ID_PUBLISHER) + { + requestSyncTime(); + negotiateTopics(); + last_sync_time = c_time; + last_sync_receive_time = c_time; + return SPIN_ERR; + } + else if (topic_ == TopicInfo::ID_TIME) + { + syncTime(message_in); + } + else if (topic_ == TopicInfo::ID_PARAMETER_REQUEST) + { + req_param_resp.deserialize(message_in); + param_recieved = true; + } + else if (topic_ == TopicInfo::ID_TX_STOP) + { + configured_ = false; + } + else + { + if (subscribers[topic_ - 100]) + subscribers[topic_ - 100]->callback(message_in); + } + } + } + } + + /* occasionally sync time */ + if (configured_ && ((c_time - last_sync_time) > (SYNC_SECONDS * 500))) + { + requestSyncTime(); + last_sync_time = c_time; + } + + return SPIN_OK; + } + + + /* Are we connected to the PC? */ + virtual bool connected() + { + return configured_; + }; + + /******************************************************************** + * Time functions + */ + + void requestSyncTime() + { + std_msgs::Time t; + publish(TopicInfo::ID_TIME, &t); + rt_time = hardware_.time(); + } + + void syncTime(uint8_t * data) + { + std_msgs::Time t; + uint32_t offset = hardware_.time() - rt_time; + + t.deserialize(data); + t.data.sec += offset / 1000; + t.data.nsec += (offset % 1000) * 1000000UL; + + this->setNow(t.data); + last_sync_receive_time = hardware_.time(); + } + + Time now() + { + uint32_t ms = hardware_.time(); + Time current_time; + current_time.sec = ms / 1000 + sec_offset; + current_time.nsec = (ms % 1000) * 1000000UL + nsec_offset; + normalizeSecNSec(current_time.sec, current_time.nsec); + return current_time; + } + + void setNow(Time & new_now) + { + uint32_t ms = hardware_.time(); + sec_offset = new_now.sec - ms / 1000 - 1; + nsec_offset = new_now.nsec - (ms % 1000) * 1000000UL + 1000000000UL; + normalizeSecNSec(sec_offset, nsec_offset); + } + + /******************************************************************** + * Topic Management + */ + + /* Register a new publisher */ + bool advertise(Publisher & p) + { + for (int i = 0; i < MAX_PUBLISHERS; i++) + { + if (publishers[i] == 0) // empty slot + { + publishers[i] = &p; + p.id_ = i + 100 + MAX_SUBSCRIBERS; + p.nh_ = this; + return true; + } + } + return false; + } + + /* Register a new subscriber */ + template + bool subscribe(SubscriberT& s) + { + for (int i = 0; i < MAX_SUBSCRIBERS; i++) + { + if (subscribers[i] == 0) // empty slot + { + subscribers[i] = static_cast(&s); + s.id_ = i + 100; + return true; + } + } + return false; + } + + /* Register a new Service Server */ + template + bool advertiseService(ServiceServer& srv) + { + bool v = advertise(srv.pub); + for (int i = 0; i < MAX_SUBSCRIBERS; i++) + { + if (subscribers[i] == 0) // empty slot + { + subscribers[i] = static_cast(&srv); + srv.id_ = i + 100; + return v; + } + } + return false; + } + + /* Register a new Service Client */ + template + bool serviceClient(ServiceClient& srv) + { + bool v = advertise(srv.pub); + for (int i = 0; i < MAX_SUBSCRIBERS; i++) + { + if (subscribers[i] == 0) // empty slot + { + subscribers[i] = static_cast(&srv); + srv.id_ = i + 100; + return v; + } + } + return false; + } + + void negotiateTopics() + { + rosserial_msgs::TopicInfo ti; + int i; + for (i = 0; i < MAX_PUBLISHERS; i++) + { + if (publishers[i] != 0) // non-empty slot + { + ti.topic_id = publishers[i]->id_; + ti.topic_name = (char *) publishers[i]->topic_; + ti.message_type = (char *) publishers[i]->msg_->getType(); + ti.md5sum = (char *) publishers[i]->msg_->getMD5(); + ti.buffer_size = OUTPUT_SIZE; + publish(publishers[i]->getEndpointType(), &ti); + } + } + for (i = 0; i < MAX_SUBSCRIBERS; i++) + { + if (subscribers[i] != 0) // non-empty slot + { + ti.topic_id = subscribers[i]->id_; + ti.topic_name = (char *) subscribers[i]->topic_; + ti.message_type = (char *) subscribers[i]->getMsgType(); + ti.md5sum = (char *) subscribers[i]->getMsgMD5(); + ti.buffer_size = INPUT_SIZE; + publish(subscribers[i]->getEndpointType(), &ti); + } + } + configured_ = true; + } + + virtual int publish(int id, const Msg * msg) + { + if (id >= 100 && !configured_) + return 0; + + /* serialize message */ + int l = msg->serialize(message_out + 7); + + /* setup the header */ + message_out[0] = 0xff; + message_out[1] = PROTOCOL_VER; + message_out[2] = (uint8_t)((uint16_t)l & 255); + message_out[3] = (uint8_t)((uint16_t)l >> 8); + message_out[4] = 255 - ((message_out[2] + message_out[3]) % 256); + message_out[5] = (uint8_t)((int16_t)id & 255); + message_out[6] = (uint8_t)((int16_t)id >> 8); + + /* calculate checksum */ + int chk = 0; + for (int i = 5; i < l + 7; i++) + chk += message_out[i]; + l += 7; + message_out[l++] = 255 - (chk % 256); + + if (l <= OUTPUT_SIZE) + { + hardware_.write(message_out, l); + return l; + } + else + { + logerror("Message from device dropped: message larger than buffer."); + return -1; + } + } + + /******************************************************************** + * Logging + */ + +private: + void log(char byte, const char * msg) + { + rosserial_msgs::Log l; + l.level = byte; + l.msg = (char*)msg; + publish(rosserial_msgs::TopicInfo::ID_LOG, &l); + } + +public: + void logdebug(const char* msg) + { + log(rosserial_msgs::Log::ROSDEBUG, msg); + } + void loginfo(const char * msg) + { + log(rosserial_msgs::Log::INFO, msg); + } + void logwarn(const char *msg) + { + log(rosserial_msgs::Log::WARN, msg); + } + void logerror(const char*msg) + { + log(rosserial_msgs::Log::ERROR, msg); + } + void logfatal(const char*msg) + { + log(rosserial_msgs::Log::FATAL, msg); + } + + /******************************************************************** + * Parameters + */ + +private: + bool param_recieved; + rosserial_msgs::RequestParamResponse req_param_resp; + + bool requestParam(const char * name, int time_out = 1000) + { + param_recieved = false; + rosserial_msgs::RequestParamRequest req; + req.name = (char*)name; + publish(TopicInfo::ID_PARAMETER_REQUEST, &req); + uint32_t end_time = hardware_.time() + time_out; + while (!param_recieved) + { + spinOnce(); + if (hardware_.time() > end_time) + { + logwarn("Failed to get param: timeout expired"); + return false; + } + } + return true; + } + +public: + bool getParam(const char* name, int* param, int length = 1, int timeout = 1000) + { + if (requestParam(name, timeout)) + { + if (length == req_param_resp.ints_length) + { + //copy it over + for (int i = 0; i < length; i++) + param[i] = req_param_resp.ints[i]; + return true; + } + else + { + logwarn("Failed to get param: length mismatch"); + } + } + return false; + } + bool getParam(const char* name, float* param, int length = 1, int timeout = 1000) + { + if (requestParam(name, timeout)) + { + if (length == req_param_resp.floats_length) + { + //copy it over + for (int i = 0; i < length; i++) + param[i] = req_param_resp.floats[i]; + return true; + } + else + { + logwarn("Failed to get param: length mismatch"); + } + } + return false; + } + bool getParam(const char* name, char** param, int length = 1, int timeout = 1000) + { + if (requestParam(name, timeout)) + { + if (length == req_param_resp.strings_length) + { + //copy it over + for (int i = 0; i < length; i++) + strcpy(param[i], req_param_resp.strings[i]); + return true; + } + else + { + logwarn("Failed to get param: length mismatch"); + } + } + return false; + } +}; + +} + +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/ros/publisher.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/ros/publisher.h new file mode 100644 index 0000000..86dde38 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/ros/publisher.h @@ -0,0 +1,74 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2011, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _ROS_PUBLISHER_H_ +#define _ROS_PUBLISHER_H_ + +#include "../rosserial_msgs/TopicInfo.h" +#include "../ros/node_handle.h" + +namespace ros +{ + +/* Generic Publisher */ +class Publisher +{ +public: + Publisher(const char * topic_name, Msg * msg, int endpoint = rosserial_msgs::TopicInfo::ID_PUBLISHER) : + topic_(topic_name), + msg_(msg), + endpoint_(endpoint) {}; + + int publish(const Msg * msg) + { + return nh_->publish(id_, msg); + }; + int getEndpointType() + { + return endpoint_; + } + + const char * topic_; + Msg *msg_; + // id_ and no_ are set by NodeHandle when we advertise + int id_; + NodeHandleBase_* nh_; + +private: + int endpoint_; +}; + +} + +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/ros/service_client.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/ros/service_client.h new file mode 100644 index 0000000..d0629a4 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/ros/service_client.h @@ -0,0 +1,95 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2011, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _ROS_SERVICE_CLIENT_H_ +#define _ROS_SERVICE_CLIENT_H_ + +#include "../rosserial_msgs/TopicInfo.h" + +#include "../ros/publisher.h" +#include "../ros/subscriber.h" + +namespace ros +{ + +template +class ServiceClient : public Subscriber_ +{ +public: + ServiceClient(const char* topic_name) : + pub(topic_name, &req, rosserial_msgs::TopicInfo::ID_SERVICE_CLIENT + rosserial_msgs::TopicInfo::ID_PUBLISHER) + { + this->topic_ = topic_name; + this->waiting = true; + } + + virtual void call(const MReq & request, MRes & response) + { + if (!pub.nh_->connected()) return; + ret = &response; + waiting = true; + pub.publish(&request); + while (waiting && pub.nh_->connected()) + if (pub.nh_->spinOnce() < 0) break; + } + + // these refer to the subscriber + virtual void callback(unsigned char *data) + { + ret->deserialize(data); + waiting = false; + } + virtual const char * getMsgType() + { + return this->resp.getType(); + } + virtual const char * getMsgMD5() + { + return this->resp.getMD5(); + } + virtual int getEndpointType() + { + return rosserial_msgs::TopicInfo::ID_SERVICE_CLIENT + rosserial_msgs::TopicInfo::ID_SUBSCRIBER; + } + + MReq req; + MRes resp; + MRes * ret; + bool waiting; + Publisher pub; +}; + +} + +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/ros/service_server.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/ros/service_server.h new file mode 100644 index 0000000..1b95a9e --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/ros/service_server.h @@ -0,0 +1,130 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2011, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _ROS_SERVICE_SERVER_H_ +#define _ROS_SERVICE_SERVER_H_ + +#include "../rosserial_msgs/TopicInfo.h" + +#include "../ros/publisher.h" +#include "../ros/subscriber.h" + +namespace ros +{ + +template +class ServiceServer : public Subscriber_ +{ +public: + typedef void(ObjT::*CallbackT)(const MReq&, MRes&); + + ServiceServer(const char* topic_name, CallbackT cb, ObjT* obj) : + pub(topic_name, &resp, rosserial_msgs::TopicInfo::ID_SERVICE_SERVER + rosserial_msgs::TopicInfo::ID_PUBLISHER), + obj_(obj) + { + this->topic_ = topic_name; + this->cb_ = cb; + } + + // these refer to the subscriber + virtual void callback(unsigned char *data) + { + req.deserialize(data); + (obj_->*cb_)(req, resp); + pub.publish(&resp); + } + virtual const char * getMsgType() + { + return this->req.getType(); + } + virtual const char * getMsgMD5() + { + return this->req.getMD5(); + } + virtual int getEndpointType() + { + return rosserial_msgs::TopicInfo::ID_SERVICE_SERVER + rosserial_msgs::TopicInfo::ID_SUBSCRIBER; + } + + MReq req; + MRes resp; + Publisher pub; +private: + CallbackT cb_; + ObjT* obj_; +}; + +template +class ServiceServer : public Subscriber_ +{ +public: + typedef void(*CallbackT)(const MReq&, MRes&); + + ServiceServer(const char* topic_name, CallbackT cb) : + pub(topic_name, &resp, rosserial_msgs::TopicInfo::ID_SERVICE_SERVER + rosserial_msgs::TopicInfo::ID_PUBLISHER) + { + this->topic_ = topic_name; + this->cb_ = cb; + } + + // these refer to the subscriber + virtual void callback(unsigned char *data) + { + req.deserialize(data); + cb_(req, resp); + pub.publish(&resp); + } + virtual const char * getMsgType() + { + return this->req.getType(); + } + virtual const char * getMsgMD5() + { + return this->req.getMD5(); + } + virtual int getEndpointType() + { + return rosserial_msgs::TopicInfo::ID_SERVICE_SERVER + rosserial_msgs::TopicInfo::ID_SUBSCRIBER; + } + + MReq req; + MRes resp; + Publisher pub; +private: + CallbackT cb_; +}; + +} + +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/ros/subscriber.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/ros/subscriber.h new file mode 100644 index 0000000..0f7364a --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/ros/subscriber.h @@ -0,0 +1,140 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2011, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef ROS_SUBSCRIBER_H_ +#define ROS_SUBSCRIBER_H_ + +#include "../rosserial_msgs/TopicInfo.h" + +namespace ros +{ + +/* Base class for objects subscribers. */ +class Subscriber_ +{ +public: + virtual void callback(unsigned char *data) = 0; + virtual int getEndpointType() = 0; + + // id_ is set by NodeHandle when we advertise + int id_; + + virtual const char * getMsgType() = 0; + virtual const char * getMsgMD5() = 0; + const char * topic_; +}; + +/* Bound function subscriber. */ +template +class Subscriber: public Subscriber_ +{ +public: + typedef void(ObjT::*CallbackT)(const MsgT&); + MsgT msg; + + Subscriber(const char * topic_name, CallbackT cb, ObjT* obj, int endpoint = rosserial_msgs::TopicInfo::ID_SUBSCRIBER) : + cb_(cb), + obj_(obj), + endpoint_(endpoint) + { + topic_ = topic_name; + }; + + virtual void callback(unsigned char* data) + { + msg.deserialize(data); + (obj_->*cb_)(msg); + } + + virtual const char * getMsgType() + { + return this->msg.getType(); + } + virtual const char * getMsgMD5() + { + return this->msg.getMD5(); + } + virtual int getEndpointType() + { + return endpoint_; + } + +private: + CallbackT cb_; + ObjT* obj_; + int endpoint_; +}; + +/* Standalone function subscriber. */ +template +class Subscriber: public Subscriber_ +{ +public: + typedef void(*CallbackT)(const MsgT&); + MsgT msg; + + Subscriber(const char * topic_name, CallbackT cb, int endpoint = rosserial_msgs::TopicInfo::ID_SUBSCRIBER) : + cb_(cb), + endpoint_(endpoint) + { + topic_ = topic_name; + }; + + virtual void callback(unsigned char* data) + { + msg.deserialize(data); + this->cb_(msg); + } + + virtual const char * getMsgType() + { + return this->msg.getType(); + } + virtual const char * getMsgMD5() + { + return this->msg.getMD5(); + } + virtual int getEndpointType() + { + return endpoint_; + } + +private: + CallbackT cb_; + int endpoint_; +}; + +} + +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/ros/time.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/ros/time.h new file mode 100644 index 0000000..72657cb --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/ros/time.h @@ -0,0 +1,82 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2011, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef ROS_TIME_H_ +#define ROS_TIME_H_ + +#include "duration.h" +#include +#include + +namespace ros +{ +void normalizeSecNSec(uint32_t &sec, uint32_t &nsec); + +class Time +{ +public: + uint32_t sec, nsec; + + Time() : sec(0), nsec(0) {} + Time(uint32_t _sec, uint32_t _nsec) : sec(_sec), nsec(_nsec) + { + normalizeSecNSec(sec, nsec); + } + + double toSec() const + { + return (double)sec + 1e-9 * (double)nsec; + }; + void fromSec(double t) + { + sec = (uint32_t) floor(t); + nsec = (uint32_t) round((t - sec) * 1e9); + }; + + uint32_t toNsec() + { + return (uint32_t)sec * 1000000000ull + (uint32_t)nsec; + }; + Time& fromNSec(int32_t t); + + Time& operator +=(const Duration &rhs); + Time& operator -=(const Duration &rhs); + + static Time now(); + static void setNow(Time & new_now); +}; + +} + +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/roscpp/Empty.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/roscpp/Empty.h new file mode 100644 index 0000000..df021b7 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/roscpp/Empty.h @@ -0,0 +1,70 @@ +#ifndef _ROS_SERVICE_Empty_h +#define _ROS_SERVICE_Empty_h +#include +#include +#include +#include "ros/msg.h" + +namespace roscpp +{ + +static const char EMPTY[] = "roscpp/Empty"; + + class EmptyRequest : public ros::Msg + { + public: + + EmptyRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return EMPTY; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class EmptyResponse : public ros::Msg + { + public: + + EmptyResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return EMPTY; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class Empty { + public: + typedef EmptyRequest Request; + typedef EmptyResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/roscpp/GetLoggers.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/roscpp/GetLoggers.h new file mode 100644 index 0000000..35f67fb --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/roscpp/GetLoggers.h @@ -0,0 +1,96 @@ +#ifndef _ROS_SERVICE_GetLoggers_h +#define _ROS_SERVICE_GetLoggers_h +#include +#include +#include +#include "ros/msg.h" +#include "roscpp/Logger.h" + +namespace roscpp +{ + +static const char GETLOGGERS[] = "roscpp/GetLoggers"; + + class GetLoggersRequest : public ros::Msg + { + public: + + GetLoggersRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return GETLOGGERS; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class GetLoggersResponse : public ros::Msg + { + public: + uint32_t loggers_length; + typedef roscpp::Logger _loggers_type; + _loggers_type st_loggers; + _loggers_type * loggers; + + GetLoggersResponse(): + loggers_length(0), loggers(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->loggers_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->loggers_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->loggers_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->loggers_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->loggers_length); + for( uint32_t i = 0; i < loggers_length; i++){ + offset += this->loggers[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t loggers_lengthT = ((uint32_t) (*(inbuffer + offset))); + loggers_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + loggers_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + loggers_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->loggers_length); + if(loggers_lengthT > loggers_length) + this->loggers = (roscpp::Logger*)realloc(this->loggers, loggers_lengthT * sizeof(roscpp::Logger)); + loggers_length = loggers_lengthT; + for( uint32_t i = 0; i < loggers_length; i++){ + offset += this->st_loggers.deserialize(inbuffer + offset); + memcpy( &(this->loggers[i]), &(this->st_loggers), sizeof(roscpp::Logger)); + } + return offset; + } + + const char * getType(){ return GETLOGGERS; }; + const char * getMD5(){ return "32e97e85527d4678a8f9279894bb64b0"; }; + + }; + + class GetLoggers { + public: + typedef GetLoggersRequest Request; + typedef GetLoggersResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/roscpp/Logger.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/roscpp/Logger.h new file mode 100644 index 0000000..b954b71 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/roscpp/Logger.h @@ -0,0 +1,72 @@ +#ifndef _ROS_roscpp_Logger_h +#define _ROS_roscpp_Logger_h + +#include +#include +#include +#include "ros/msg.h" + +namespace roscpp +{ + + class Logger : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef const char* _level_type; + _level_type level; + + Logger(): + name(""), + level("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + uint32_t length_level = strlen(this->level); + varToArr(outbuffer + offset, length_level); + offset += 4; + memcpy(outbuffer + offset, this->level, length_level); + offset += length_level; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + uint32_t length_level; + arrToVar(length_level, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_level; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_level-1]=0; + this->level = (char *)(inbuffer + offset-1); + offset += length_level; + return offset; + } + + const char * getType(){ return "roscpp/Logger"; }; + const char * getMD5(){ return "a6069a2ff40db7bd32143dd66e1f408e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/roscpp/SetLoggerLevel.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/roscpp/SetLoggerLevel.h new file mode 100644 index 0000000..64f2a24 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/roscpp/SetLoggerLevel.h @@ -0,0 +1,104 @@ +#ifndef _ROS_SERVICE_SetLoggerLevel_h +#define _ROS_SERVICE_SetLoggerLevel_h +#include +#include +#include +#include "ros/msg.h" + +namespace roscpp +{ + +static const char SETLOGGERLEVEL[] = "roscpp/SetLoggerLevel"; + + class SetLoggerLevelRequest : public ros::Msg + { + public: + typedef const char* _logger_type; + _logger_type logger; + typedef const char* _level_type; + _level_type level; + + SetLoggerLevelRequest(): + logger(""), + level("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_logger = strlen(this->logger); + varToArr(outbuffer + offset, length_logger); + offset += 4; + memcpy(outbuffer + offset, this->logger, length_logger); + offset += length_logger; + uint32_t length_level = strlen(this->level); + varToArr(outbuffer + offset, length_level); + offset += 4; + memcpy(outbuffer + offset, this->level, length_level); + offset += length_level; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_logger; + arrToVar(length_logger, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_logger; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_logger-1]=0; + this->logger = (char *)(inbuffer + offset-1); + offset += length_logger; + uint32_t length_level; + arrToVar(length_level, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_level; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_level-1]=0; + this->level = (char *)(inbuffer + offset-1); + offset += length_level; + return offset; + } + + const char * getType(){ return SETLOGGERLEVEL; }; + const char * getMD5(){ return "51da076440d78ca1684d36c868df61ea"; }; + + }; + + class SetLoggerLevelResponse : public ros::Msg + { + public: + + SetLoggerLevelResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return SETLOGGERLEVEL; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class SetLoggerLevel { + public: + typedef SetLoggerLevelRequest Request; + typedef SetLoggerLevelResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/roscpp_tutorials/TwoInts.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/roscpp_tutorials/TwoInts.h new file mode 100644 index 0000000..03510bb --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/roscpp_tutorials/TwoInts.h @@ -0,0 +1,166 @@ +#ifndef _ROS_SERVICE_TwoInts_h +#define _ROS_SERVICE_TwoInts_h +#include +#include +#include +#include "ros/msg.h" + +namespace roscpp_tutorials +{ + +static const char TWOINTS[] = "roscpp_tutorials/TwoInts"; + + class TwoIntsRequest : public ros::Msg + { + public: + typedef int64_t _a_type; + _a_type a; + typedef int64_t _b_type; + _b_type b; + + TwoIntsRequest(): + a(0), + b(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_a; + u_a.real = this->a; + *(outbuffer + offset + 0) = (u_a.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_a.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_a.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_a.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_a.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_a.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_a.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_a.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->a); + union { + int64_t real; + uint64_t base; + } u_b; + u_b.real = this->b; + *(outbuffer + offset + 0) = (u_b.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_b.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_b.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_b.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_b.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_b.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_b.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_b.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->b); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_a; + u_a.base = 0; + u_a.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->a = u_a.real; + offset += sizeof(this->a); + union { + int64_t real; + uint64_t base; + } u_b; + u_b.base = 0; + u_b.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->b = u_b.real; + offset += sizeof(this->b); + return offset; + } + + const char * getType(){ return TWOINTS; }; + const char * getMD5(){ return "36d09b846be0b371c5f190354dd3153e"; }; + + }; + + class TwoIntsResponse : public ros::Msg + { + public: + typedef int64_t _sum_type; + _sum_type sum; + + TwoIntsResponse(): + sum(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_sum; + u_sum.real = this->sum; + *(outbuffer + offset + 0) = (u_sum.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_sum.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_sum.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_sum.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_sum.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_sum.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_sum.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_sum.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->sum); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_sum; + u_sum.base = 0; + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->sum = u_sum.real; + offset += sizeof(this->sum); + return offset; + } + + const char * getType(){ return TWOINTS; }; + const char * getMD5(){ return "b88405221c77b1878a3cbbfff53428d7"; }; + + }; + + class TwoInts { + public: + typedef TwoIntsRequest Request; + typedef TwoIntsResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosgraph_msgs/Clock.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosgraph_msgs/Clock.h new file mode 100644 index 0000000..4d8736c --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosgraph_msgs/Clock.h @@ -0,0 +1,62 @@ +#ifndef _ROS_rosgraph_msgs_Clock_h +#define _ROS_rosgraph_msgs_Clock_h + +#include +#include +#include +#include "ros/msg.h" +#include "ros/time.h" + +namespace rosgraph_msgs +{ + + class Clock : public ros::Msg + { + public: + typedef ros::Time _clock_type; + _clock_type clock; + + Clock(): + clock() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->clock.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->clock.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->clock.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->clock.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->clock.sec); + *(outbuffer + offset + 0) = (this->clock.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->clock.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->clock.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->clock.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->clock.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->clock.sec = ((uint32_t) (*(inbuffer + offset))); + this->clock.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->clock.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->clock.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->clock.sec); + this->clock.nsec = ((uint32_t) (*(inbuffer + offset))); + this->clock.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->clock.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->clock.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->clock.nsec); + return offset; + } + + const char * getType(){ return "rosgraph_msgs/Clock"; }; + const char * getMD5(){ return "a9c97c1d230cfc112e270351a944ee47"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosgraph_msgs/Log.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosgraph_msgs/Log.h new file mode 100644 index 0000000..45c4566 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosgraph_msgs/Log.h @@ -0,0 +1,185 @@ +#ifndef _ROS_rosgraph_msgs_Log_h +#define _ROS_rosgraph_msgs_Log_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace rosgraph_msgs +{ + + class Log : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef int8_t _level_type; + _level_type level; + typedef const char* _name_type; + _name_type name; + typedef const char* _msg_type; + _msg_type msg; + typedef const char* _file_type; + _file_type file; + typedef const char* _function_type; + _function_type function; + typedef uint32_t _line_type; + _line_type line; + uint32_t topics_length; + typedef char* _topics_type; + _topics_type st_topics; + _topics_type * topics; + enum { DEBUG = 1 }; + enum { INFO = 2 }; + enum { WARN = 4 }; + enum { ERROR = 8 }; + enum { FATAL = 16 }; + + Log(): + header(), + level(0), + name(""), + msg(""), + file(""), + function(""), + line(0), + topics_length(0), topics(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + union { + int8_t real; + uint8_t base; + } u_level; + u_level.real = this->level; + *(outbuffer + offset + 0) = (u_level.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->level); + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + uint32_t length_msg = strlen(this->msg); + varToArr(outbuffer + offset, length_msg); + offset += 4; + memcpy(outbuffer + offset, this->msg, length_msg); + offset += length_msg; + uint32_t length_file = strlen(this->file); + varToArr(outbuffer + offset, length_file); + offset += 4; + memcpy(outbuffer + offset, this->file, length_file); + offset += length_file; + uint32_t length_function = strlen(this->function); + varToArr(outbuffer + offset, length_function); + offset += 4; + memcpy(outbuffer + offset, this->function, length_function); + offset += length_function; + *(outbuffer + offset + 0) = (this->line >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->line >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->line >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->line >> (8 * 3)) & 0xFF; + offset += sizeof(this->line); + *(outbuffer + offset + 0) = (this->topics_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->topics_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->topics_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->topics_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->topics_length); + for( uint32_t i = 0; i < topics_length; i++){ + uint32_t length_topicsi = strlen(this->topics[i]); + varToArr(outbuffer + offset, length_topicsi); + offset += 4; + memcpy(outbuffer + offset, this->topics[i], length_topicsi); + offset += length_topicsi; + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + union { + int8_t real; + uint8_t base; + } u_level; + u_level.base = 0; + u_level.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->level = u_level.real; + offset += sizeof(this->level); + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + uint32_t length_msg; + arrToVar(length_msg, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_msg; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_msg-1]=0; + this->msg = (char *)(inbuffer + offset-1); + offset += length_msg; + uint32_t length_file; + arrToVar(length_file, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_file; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_file-1]=0; + this->file = (char *)(inbuffer + offset-1); + offset += length_file; + uint32_t length_function; + arrToVar(length_function, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_function; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_function-1]=0; + this->function = (char *)(inbuffer + offset-1); + offset += length_function; + this->line = ((uint32_t) (*(inbuffer + offset))); + this->line |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->line |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->line |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->line); + uint32_t topics_lengthT = ((uint32_t) (*(inbuffer + offset))); + topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->topics_length); + if(topics_lengthT > topics_length) + this->topics = (char**)realloc(this->topics, topics_lengthT * sizeof(char*)); + topics_length = topics_lengthT; + for( uint32_t i = 0; i < topics_length; i++){ + uint32_t length_st_topics; + arrToVar(length_st_topics, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_topics; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_topics-1]=0; + this->st_topics = (char *)(inbuffer + offset-1); + offset += length_st_topics; + memcpy( &(this->topics[i]), &(this->st_topics), sizeof(char*)); + } + return offset; + } + + const char * getType(){ return "rosgraph_msgs/Log"; }; + const char * getMD5(){ return "acffd30cd6b6de30f120938c17c593fb"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosgraph_msgs/TopicStatistics.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosgraph_msgs/TopicStatistics.h new file mode 100644 index 0000000..c62f2f9 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosgraph_msgs/TopicStatistics.h @@ -0,0 +1,347 @@ +#ifndef _ROS_rosgraph_msgs_TopicStatistics_h +#define _ROS_rosgraph_msgs_TopicStatistics_h + +#include +#include +#include +#include "ros/msg.h" +#include "ros/time.h" +#include "ros/duration.h" + +namespace rosgraph_msgs +{ + + class TopicStatistics : public ros::Msg + { + public: + typedef const char* _topic_type; + _topic_type topic; + typedef const char* _node_pub_type; + _node_pub_type node_pub; + typedef const char* _node_sub_type; + _node_sub_type node_sub; + typedef ros::Time _window_start_type; + _window_start_type window_start; + typedef ros::Time _window_stop_type; + _window_stop_type window_stop; + typedef int32_t _delivered_msgs_type; + _delivered_msgs_type delivered_msgs; + typedef int32_t _dropped_msgs_type; + _dropped_msgs_type dropped_msgs; + typedef int32_t _traffic_type; + _traffic_type traffic; + typedef ros::Duration _period_mean_type; + _period_mean_type period_mean; + typedef ros::Duration _period_stddev_type; + _period_stddev_type period_stddev; + typedef ros::Duration _period_max_type; + _period_max_type period_max; + typedef ros::Duration _stamp_age_mean_type; + _stamp_age_mean_type stamp_age_mean; + typedef ros::Duration _stamp_age_stddev_type; + _stamp_age_stddev_type stamp_age_stddev; + typedef ros::Duration _stamp_age_max_type; + _stamp_age_max_type stamp_age_max; + + TopicStatistics(): + topic(""), + node_pub(""), + node_sub(""), + window_start(), + window_stop(), + delivered_msgs(0), + dropped_msgs(0), + traffic(0), + period_mean(), + period_stddev(), + period_max(), + stamp_age_mean(), + stamp_age_stddev(), + stamp_age_max() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_topic = strlen(this->topic); + varToArr(outbuffer + offset, length_topic); + offset += 4; + memcpy(outbuffer + offset, this->topic, length_topic); + offset += length_topic; + uint32_t length_node_pub = strlen(this->node_pub); + varToArr(outbuffer + offset, length_node_pub); + offset += 4; + memcpy(outbuffer + offset, this->node_pub, length_node_pub); + offset += length_node_pub; + uint32_t length_node_sub = strlen(this->node_sub); + varToArr(outbuffer + offset, length_node_sub); + offset += 4; + memcpy(outbuffer + offset, this->node_sub, length_node_sub); + offset += length_node_sub; + *(outbuffer + offset + 0) = (this->window_start.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->window_start.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->window_start.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->window_start.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->window_start.sec); + *(outbuffer + offset + 0) = (this->window_start.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->window_start.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->window_start.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->window_start.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->window_start.nsec); + *(outbuffer + offset + 0) = (this->window_stop.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->window_stop.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->window_stop.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->window_stop.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->window_stop.sec); + *(outbuffer + offset + 0) = (this->window_stop.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->window_stop.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->window_stop.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->window_stop.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->window_stop.nsec); + union { + int32_t real; + uint32_t base; + } u_delivered_msgs; + u_delivered_msgs.real = this->delivered_msgs; + *(outbuffer + offset + 0) = (u_delivered_msgs.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_delivered_msgs.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_delivered_msgs.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_delivered_msgs.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->delivered_msgs); + union { + int32_t real; + uint32_t base; + } u_dropped_msgs; + u_dropped_msgs.real = this->dropped_msgs; + *(outbuffer + offset + 0) = (u_dropped_msgs.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_dropped_msgs.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_dropped_msgs.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_dropped_msgs.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->dropped_msgs); + union { + int32_t real; + uint32_t base; + } u_traffic; + u_traffic.real = this->traffic; + *(outbuffer + offset + 0) = (u_traffic.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_traffic.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_traffic.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_traffic.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->traffic); + *(outbuffer + offset + 0) = (this->period_mean.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->period_mean.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->period_mean.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->period_mean.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->period_mean.sec); + *(outbuffer + offset + 0) = (this->period_mean.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->period_mean.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->period_mean.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->period_mean.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->period_mean.nsec); + *(outbuffer + offset + 0) = (this->period_stddev.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->period_stddev.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->period_stddev.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->period_stddev.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->period_stddev.sec); + *(outbuffer + offset + 0) = (this->period_stddev.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->period_stddev.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->period_stddev.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->period_stddev.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->period_stddev.nsec); + *(outbuffer + offset + 0) = (this->period_max.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->period_max.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->period_max.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->period_max.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->period_max.sec); + *(outbuffer + offset + 0) = (this->period_max.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->period_max.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->period_max.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->period_max.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->period_max.nsec); + *(outbuffer + offset + 0) = (this->stamp_age_mean.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp_age_mean.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp_age_mean.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp_age_mean.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp_age_mean.sec); + *(outbuffer + offset + 0) = (this->stamp_age_mean.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp_age_mean.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp_age_mean.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp_age_mean.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp_age_mean.nsec); + *(outbuffer + offset + 0) = (this->stamp_age_stddev.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp_age_stddev.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp_age_stddev.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp_age_stddev.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp_age_stddev.sec); + *(outbuffer + offset + 0) = (this->stamp_age_stddev.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp_age_stddev.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp_age_stddev.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp_age_stddev.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp_age_stddev.nsec); + *(outbuffer + offset + 0) = (this->stamp_age_max.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp_age_max.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp_age_max.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp_age_max.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp_age_max.sec); + *(outbuffer + offset + 0) = (this->stamp_age_max.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp_age_max.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp_age_max.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp_age_max.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp_age_max.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_topic; + arrToVar(length_topic, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_topic; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_topic-1]=0; + this->topic = (char *)(inbuffer + offset-1); + offset += length_topic; + uint32_t length_node_pub; + arrToVar(length_node_pub, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_node_pub; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_node_pub-1]=0; + this->node_pub = (char *)(inbuffer + offset-1); + offset += length_node_pub; + uint32_t length_node_sub; + arrToVar(length_node_sub, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_node_sub; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_node_sub-1]=0; + this->node_sub = (char *)(inbuffer + offset-1); + offset += length_node_sub; + this->window_start.sec = ((uint32_t) (*(inbuffer + offset))); + this->window_start.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->window_start.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->window_start.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->window_start.sec); + this->window_start.nsec = ((uint32_t) (*(inbuffer + offset))); + this->window_start.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->window_start.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->window_start.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->window_start.nsec); + this->window_stop.sec = ((uint32_t) (*(inbuffer + offset))); + this->window_stop.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->window_stop.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->window_stop.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->window_stop.sec); + this->window_stop.nsec = ((uint32_t) (*(inbuffer + offset))); + this->window_stop.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->window_stop.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->window_stop.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->window_stop.nsec); + union { + int32_t real; + uint32_t base; + } u_delivered_msgs; + u_delivered_msgs.base = 0; + u_delivered_msgs.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_delivered_msgs.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_delivered_msgs.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_delivered_msgs.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->delivered_msgs = u_delivered_msgs.real; + offset += sizeof(this->delivered_msgs); + union { + int32_t real; + uint32_t base; + } u_dropped_msgs; + u_dropped_msgs.base = 0; + u_dropped_msgs.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_dropped_msgs.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_dropped_msgs.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_dropped_msgs.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->dropped_msgs = u_dropped_msgs.real; + offset += sizeof(this->dropped_msgs); + union { + int32_t real; + uint32_t base; + } u_traffic; + u_traffic.base = 0; + u_traffic.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_traffic.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_traffic.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_traffic.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->traffic = u_traffic.real; + offset += sizeof(this->traffic); + this->period_mean.sec = ((uint32_t) (*(inbuffer + offset))); + this->period_mean.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->period_mean.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->period_mean.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->period_mean.sec); + this->period_mean.nsec = ((uint32_t) (*(inbuffer + offset))); + this->period_mean.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->period_mean.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->period_mean.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->period_mean.nsec); + this->period_stddev.sec = ((uint32_t) (*(inbuffer + offset))); + this->period_stddev.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->period_stddev.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->period_stddev.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->period_stddev.sec); + this->period_stddev.nsec = ((uint32_t) (*(inbuffer + offset))); + this->period_stddev.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->period_stddev.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->period_stddev.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->period_stddev.nsec); + this->period_max.sec = ((uint32_t) (*(inbuffer + offset))); + this->period_max.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->period_max.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->period_max.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->period_max.sec); + this->period_max.nsec = ((uint32_t) (*(inbuffer + offset))); + this->period_max.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->period_max.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->period_max.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->period_max.nsec); + this->stamp_age_mean.sec = ((uint32_t) (*(inbuffer + offset))); + this->stamp_age_mean.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp_age_mean.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp_age_mean.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp_age_mean.sec); + this->stamp_age_mean.nsec = ((uint32_t) (*(inbuffer + offset))); + this->stamp_age_mean.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp_age_mean.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp_age_mean.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp_age_mean.nsec); + this->stamp_age_stddev.sec = ((uint32_t) (*(inbuffer + offset))); + this->stamp_age_stddev.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp_age_stddev.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp_age_stddev.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp_age_stddev.sec); + this->stamp_age_stddev.nsec = ((uint32_t) (*(inbuffer + offset))); + this->stamp_age_stddev.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp_age_stddev.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp_age_stddev.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp_age_stddev.nsec); + this->stamp_age_max.sec = ((uint32_t) (*(inbuffer + offset))); + this->stamp_age_max.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp_age_max.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp_age_max.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp_age_max.sec); + this->stamp_age_max.nsec = ((uint32_t) (*(inbuffer + offset))); + this->stamp_age_max.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp_age_max.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp_age_max.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp_age_max.nsec); + return offset; + } + + const char * getType(){ return "rosgraph_msgs/TopicStatistics"; }; + const char * getMD5(){ return "10152ed868c5097a5e2e4a89d7daa710"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rospy_tutorials/AddTwoInts.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rospy_tutorials/AddTwoInts.h new file mode 100644 index 0000000..04dec98 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rospy_tutorials/AddTwoInts.h @@ -0,0 +1,166 @@ +#ifndef _ROS_SERVICE_AddTwoInts_h +#define _ROS_SERVICE_AddTwoInts_h +#include +#include +#include +#include "ros/msg.h" + +namespace rospy_tutorials +{ + +static const char ADDTWOINTS[] = "rospy_tutorials/AddTwoInts"; + + class AddTwoIntsRequest : public ros::Msg + { + public: + typedef int64_t _a_type; + _a_type a; + typedef int64_t _b_type; + _b_type b; + + AddTwoIntsRequest(): + a(0), + b(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_a; + u_a.real = this->a; + *(outbuffer + offset + 0) = (u_a.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_a.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_a.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_a.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_a.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_a.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_a.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_a.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->a); + union { + int64_t real; + uint64_t base; + } u_b; + u_b.real = this->b; + *(outbuffer + offset + 0) = (u_b.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_b.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_b.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_b.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_b.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_b.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_b.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_b.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->b); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_a; + u_a.base = 0; + u_a.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->a = u_a.real; + offset += sizeof(this->a); + union { + int64_t real; + uint64_t base; + } u_b; + u_b.base = 0; + u_b.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->b = u_b.real; + offset += sizeof(this->b); + return offset; + } + + const char * getType(){ return ADDTWOINTS; }; + const char * getMD5(){ return "36d09b846be0b371c5f190354dd3153e"; }; + + }; + + class AddTwoIntsResponse : public ros::Msg + { + public: + typedef int64_t _sum_type; + _sum_type sum; + + AddTwoIntsResponse(): + sum(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_sum; + u_sum.real = this->sum; + *(outbuffer + offset + 0) = (u_sum.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_sum.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_sum.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_sum.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_sum.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_sum.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_sum.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_sum.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->sum); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_sum; + u_sum.base = 0; + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->sum = u_sum.real; + offset += sizeof(this->sum); + return offset; + } + + const char * getType(){ return ADDTWOINTS; }; + const char * getMD5(){ return "b88405221c77b1878a3cbbfff53428d7"; }; + + }; + + class AddTwoInts { + public: + typedef AddTwoIntsRequest Request; + typedef AddTwoIntsResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rospy_tutorials/BadTwoInts.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rospy_tutorials/BadTwoInts.h new file mode 100644 index 0000000..0218f54 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rospy_tutorials/BadTwoInts.h @@ -0,0 +1,150 @@ +#ifndef _ROS_SERVICE_BadTwoInts_h +#define _ROS_SERVICE_BadTwoInts_h +#include +#include +#include +#include "ros/msg.h" + +namespace rospy_tutorials +{ + +static const char BADTWOINTS[] = "rospy_tutorials/BadTwoInts"; + + class BadTwoIntsRequest : public ros::Msg + { + public: + typedef int64_t _a_type; + _a_type a; + typedef int32_t _b_type; + _b_type b; + + BadTwoIntsRequest(): + a(0), + b(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_a; + u_a.real = this->a; + *(outbuffer + offset + 0) = (u_a.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_a.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_a.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_a.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_a.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_a.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_a.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_a.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->a); + union { + int32_t real; + uint32_t base; + } u_b; + u_b.real = this->b; + *(outbuffer + offset + 0) = (u_b.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_b.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_b.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_b.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->b); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_a; + u_a.base = 0; + u_a.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->a = u_a.real; + offset += sizeof(this->a); + union { + int32_t real; + uint32_t base; + } u_b; + u_b.base = 0; + u_b.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_b.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_b.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_b.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->b = u_b.real; + offset += sizeof(this->b); + return offset; + } + + const char * getType(){ return BADTWOINTS; }; + const char * getMD5(){ return "29bb5c7dea8bf822f53e94b0ee5a3a56"; }; + + }; + + class BadTwoIntsResponse : public ros::Msg + { + public: + typedef int32_t _sum_type; + _sum_type sum; + + BadTwoIntsResponse(): + sum(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_sum; + u_sum.real = this->sum; + *(outbuffer + offset + 0) = (u_sum.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_sum.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_sum.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_sum.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->sum); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_sum; + u_sum.base = 0; + u_sum.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_sum.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_sum.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_sum.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->sum = u_sum.real; + offset += sizeof(this->sum); + return offset; + } + + const char * getType(){ return BADTWOINTS; }; + const char * getMD5(){ return "0ba699c25c9418c0366f3595c0c8e8ec"; }; + + }; + + class BadTwoInts { + public: + typedef BadTwoIntsRequest Request; + typedef BadTwoIntsResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rospy_tutorials/Floats.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rospy_tutorials/Floats.h new file mode 100644 index 0000000..c0d284c --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rospy_tutorials/Floats.h @@ -0,0 +1,82 @@ +#ifndef _ROS_rospy_tutorials_Floats_h +#define _ROS_rospy_tutorials_Floats_h + +#include +#include +#include +#include "ros/msg.h" + +namespace rospy_tutorials +{ + + class Floats : public ros::Msg + { + public: + uint32_t data_length; + typedef float _data_type; + _data_type st_data; + _data_type * data; + + Floats(): + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + union { + float real; + uint32_t base; + } u_datai; + u_datai.real = this->data[i]; + *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_datai.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_datai.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_datai.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (float*)realloc(this->data, data_lengthT * sizeof(float)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + union { + float real; + uint32_t base; + } u_st_data; + u_st_data.base = 0; + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_data = u_st_data.real; + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(float)); + } + return offset; + } + + const char * getType(){ return "rospy_tutorials/Floats"; }; + const char * getMD5(){ return "420cd38b6b071cd49f2970c3e2cee511"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rospy_tutorials/HeaderString.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rospy_tutorials/HeaderString.h new file mode 100644 index 0000000..9fac4ef --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rospy_tutorials/HeaderString.h @@ -0,0 +1,61 @@ +#ifndef _ROS_rospy_tutorials_HeaderString_h +#define _ROS_rospy_tutorials_HeaderString_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace rospy_tutorials +{ + + class HeaderString : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef const char* _data_type; + _data_type data; + + HeaderString(): + header(), + data("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + uint32_t length_data = strlen(this->data); + varToArr(outbuffer + offset, length_data); + offset += 4; + memcpy(outbuffer + offset, this->data, length_data); + offset += length_data; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t length_data; + arrToVar(length_data, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_data; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_data-1]=0; + this->data = (char *)(inbuffer + offset-1); + offset += length_data; + return offset; + } + + const char * getType(){ return "rospy_tutorials/HeaderString"; }; + const char * getMD5(){ return "c99a9440709e4d4a9716d55b8270d5e7"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosserial_arduino/Adc.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosserial_arduino/Adc.h new file mode 100644 index 0000000..ac48677 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosserial_arduino/Adc.h @@ -0,0 +1,92 @@ +#ifndef _ROS_rosserial_arduino_Adc_h +#define _ROS_rosserial_arduino_Adc_h + +#include +#include +#include +#include "ros/msg.h" + +namespace rosserial_arduino +{ + + class Adc : public ros::Msg + { + public: + typedef uint16_t _adc0_type; + _adc0_type adc0; + typedef uint16_t _adc1_type; + _adc1_type adc1; + typedef uint16_t _adc2_type; + _adc2_type adc2; + typedef uint16_t _adc3_type; + _adc3_type adc3; + typedef uint16_t _adc4_type; + _adc4_type adc4; + typedef uint16_t _adc5_type; + _adc5_type adc5; + + Adc(): + adc0(0), + adc1(0), + adc2(0), + adc3(0), + adc4(0), + adc5(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->adc0 >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->adc0 >> (8 * 1)) & 0xFF; + offset += sizeof(this->adc0); + *(outbuffer + offset + 0) = (this->adc1 >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->adc1 >> (8 * 1)) & 0xFF; + offset += sizeof(this->adc1); + *(outbuffer + offset + 0) = (this->adc2 >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->adc2 >> (8 * 1)) & 0xFF; + offset += sizeof(this->adc2); + *(outbuffer + offset + 0) = (this->adc3 >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->adc3 >> (8 * 1)) & 0xFF; + offset += sizeof(this->adc3); + *(outbuffer + offset + 0) = (this->adc4 >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->adc4 >> (8 * 1)) & 0xFF; + offset += sizeof(this->adc4); + *(outbuffer + offset + 0) = (this->adc5 >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->adc5 >> (8 * 1)) & 0xFF; + offset += sizeof(this->adc5); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->adc0 = ((uint16_t) (*(inbuffer + offset))); + this->adc0 |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->adc0); + this->adc1 = ((uint16_t) (*(inbuffer + offset))); + this->adc1 |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->adc1); + this->adc2 = ((uint16_t) (*(inbuffer + offset))); + this->adc2 |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->adc2); + this->adc3 = ((uint16_t) (*(inbuffer + offset))); + this->adc3 |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->adc3); + this->adc4 = ((uint16_t) (*(inbuffer + offset))); + this->adc4 |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->adc4); + this->adc5 = ((uint16_t) (*(inbuffer + offset))); + this->adc5 |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->adc5); + return offset; + } + + const char * getType(){ return "rosserial_arduino/Adc"; }; + const char * getMD5(){ return "6d7853a614e2e821319068311f2af25b"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosserial_arduino/Test.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosserial_arduino/Test.h new file mode 100644 index 0000000..cd806db --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosserial_arduino/Test.h @@ -0,0 +1,104 @@ +#ifndef _ROS_SERVICE_Test_h +#define _ROS_SERVICE_Test_h +#include +#include +#include +#include "ros/msg.h" + +namespace rosserial_arduino +{ + +static const char TEST[] = "rosserial_arduino/Test"; + + class TestRequest : public ros::Msg + { + public: + typedef const char* _input_type; + _input_type input; + + TestRequest(): + input("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_input = strlen(this->input); + varToArr(outbuffer + offset, length_input); + offset += 4; + memcpy(outbuffer + offset, this->input, length_input); + offset += length_input; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_input; + arrToVar(length_input, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_input; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_input-1]=0; + this->input = (char *)(inbuffer + offset-1); + offset += length_input; + return offset; + } + + const char * getType(){ return TEST; }; + const char * getMD5(){ return "39e92f1778057359c64c7b8a7d7b19de"; }; + + }; + + class TestResponse : public ros::Msg + { + public: + typedef const char* _output_type; + _output_type output; + + TestResponse(): + output("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_output = strlen(this->output); + varToArr(outbuffer + offset, length_output); + offset += 4; + memcpy(outbuffer + offset, this->output, length_output); + offset += length_output; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_output; + arrToVar(length_output, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_output; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_output-1]=0; + this->output = (char *)(inbuffer + offset-1); + offset += length_output; + return offset; + } + + const char * getType(){ return TEST; }; + const char * getMD5(){ return "0825d95fdfa2c8f4bbb4e9c74bccd3fd"; }; + + }; + + class Test { + public: + typedef TestRequest Request; + typedef TestResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosserial_mbed/Adc.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosserial_mbed/Adc.h new file mode 100644 index 0000000..0de6480 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosserial_mbed/Adc.h @@ -0,0 +1,92 @@ +#ifndef _ROS_rosserial_mbed_Adc_h +#define _ROS_rosserial_mbed_Adc_h + +#include +#include +#include +#include "ros/msg.h" + +namespace rosserial_mbed +{ + + class Adc : public ros::Msg + { + public: + typedef uint16_t _adc0_type; + _adc0_type adc0; + typedef uint16_t _adc1_type; + _adc1_type adc1; + typedef uint16_t _adc2_type; + _adc2_type adc2; + typedef uint16_t _adc3_type; + _adc3_type adc3; + typedef uint16_t _adc4_type; + _adc4_type adc4; + typedef uint16_t _adc5_type; + _adc5_type adc5; + + Adc(): + adc0(0), + adc1(0), + adc2(0), + adc3(0), + adc4(0), + adc5(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->adc0 >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->adc0 >> (8 * 1)) & 0xFF; + offset += sizeof(this->adc0); + *(outbuffer + offset + 0) = (this->adc1 >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->adc1 >> (8 * 1)) & 0xFF; + offset += sizeof(this->adc1); + *(outbuffer + offset + 0) = (this->adc2 >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->adc2 >> (8 * 1)) & 0xFF; + offset += sizeof(this->adc2); + *(outbuffer + offset + 0) = (this->adc3 >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->adc3 >> (8 * 1)) & 0xFF; + offset += sizeof(this->adc3); + *(outbuffer + offset + 0) = (this->adc4 >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->adc4 >> (8 * 1)) & 0xFF; + offset += sizeof(this->adc4); + *(outbuffer + offset + 0) = (this->adc5 >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->adc5 >> (8 * 1)) & 0xFF; + offset += sizeof(this->adc5); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->adc0 = ((uint16_t) (*(inbuffer + offset))); + this->adc0 |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->adc0); + this->adc1 = ((uint16_t) (*(inbuffer + offset))); + this->adc1 |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->adc1); + this->adc2 = ((uint16_t) (*(inbuffer + offset))); + this->adc2 |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->adc2); + this->adc3 = ((uint16_t) (*(inbuffer + offset))); + this->adc3 |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->adc3); + this->adc4 = ((uint16_t) (*(inbuffer + offset))); + this->adc4 |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->adc4); + this->adc5 = ((uint16_t) (*(inbuffer + offset))); + this->adc5 |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->adc5); + return offset; + } + + const char * getType(){ return "rosserial_mbed/Adc"; }; + const char * getMD5(){ return "6d7853a614e2e821319068311f2af25b"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosserial_mbed/Test.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosserial_mbed/Test.h new file mode 100644 index 0000000..6a2658f --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosserial_mbed/Test.h @@ -0,0 +1,104 @@ +#ifndef _ROS_SERVICE_Test_h +#define _ROS_SERVICE_Test_h +#include +#include +#include +#include "ros/msg.h" + +namespace rosserial_mbed +{ + +static const char TEST[] = "rosserial_mbed/Test"; + + class TestRequest : public ros::Msg + { + public: + typedef const char* _input_type; + _input_type input; + + TestRequest(): + input("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_input = strlen(this->input); + varToArr(outbuffer + offset, length_input); + offset += 4; + memcpy(outbuffer + offset, this->input, length_input); + offset += length_input; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_input; + arrToVar(length_input, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_input; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_input-1]=0; + this->input = (char *)(inbuffer + offset-1); + offset += length_input; + return offset; + } + + const char * getType(){ return TEST; }; + const char * getMD5(){ return "39e92f1778057359c64c7b8a7d7b19de"; }; + + }; + + class TestResponse : public ros::Msg + { + public: + typedef const char* _output_type; + _output_type output; + + TestResponse(): + output("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_output = strlen(this->output); + varToArr(outbuffer + offset, length_output); + offset += 4; + memcpy(outbuffer + offset, this->output, length_output); + offset += length_output; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_output; + arrToVar(length_output, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_output; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_output-1]=0; + this->output = (char *)(inbuffer + offset-1); + offset += length_output; + return offset; + } + + const char * getType(){ return TEST; }; + const char * getMD5(){ return "0825d95fdfa2c8f4bbb4e9c74bccd3fd"; }; + + }; + + class Test { + public: + typedef TestRequest Request; + typedef TestResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosserial_msgs/Log.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosserial_msgs/Log.h new file mode 100644 index 0000000..a162ca8 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosserial_msgs/Log.h @@ -0,0 +1,67 @@ +#ifndef _ROS_rosserial_msgs_Log_h +#define _ROS_rosserial_msgs_Log_h + +#include +#include +#include +#include "../ros/msg.h" + +namespace rosserial_msgs +{ + + class Log : public ros::Msg + { + public: + typedef uint8_t _level_type; + _level_type level; + typedef const char* _msg_type; + _msg_type msg; + enum { ROSDEBUG = 0 }; + enum { INFO = 1 }; + enum { WARN = 2 }; + enum { ERROR = 3 }; + enum { FATAL = 4 }; + + Log(): + level(0), + msg("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->level >> (8 * 0)) & 0xFF; + offset += sizeof(this->level); + uint32_t length_msg = strlen(this->msg); + varToArr(outbuffer + offset, length_msg); + offset += 4; + memcpy(outbuffer + offset, this->msg, length_msg); + offset += length_msg; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->level = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->level); + uint32_t length_msg; + arrToVar(length_msg, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_msg; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_msg-1]=0; + this->msg = (char *)(inbuffer + offset-1); + offset += length_msg; + return offset; + } + + const char * getType(){ return "rosserial_msgs/Log"; }; + const char * getMD5(){ return "11abd731c25933261cd6183bd12d6295"; }; + + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosserial_msgs/RequestMessageInfo.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosserial_msgs/RequestMessageInfo.h new file mode 100644 index 0000000..3466ddc --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosserial_msgs/RequestMessageInfo.h @@ -0,0 +1,121 @@ +#ifndef _ROS_SERVICE_RequestMessageInfo_h +#define _ROS_SERVICE_RequestMessageInfo_h +#include +#include +#include +#include "ros/msg.h" + +namespace rosserial_msgs +{ + +static const char REQUESTMESSAGEINFO[] = "rosserial_msgs/RequestMessageInfo"; + + class RequestMessageInfoRequest : public ros::Msg + { + public: + typedef const char* _type_type; + _type_type type; + + RequestMessageInfoRequest(): + type("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_type = strlen(this->type); + varToArr(outbuffer + offset, length_type); + offset += 4; + memcpy(outbuffer + offset, this->type, length_type); + offset += length_type; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_type; + arrToVar(length_type, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_type; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_type-1]=0; + this->type = (char *)(inbuffer + offset-1); + offset += length_type; + return offset; + } + + const char * getType(){ return REQUESTMESSAGEINFO; }; + const char * getMD5(){ return "dc67331de85cf97091b7d45e5c64ab75"; }; + + }; + + class RequestMessageInfoResponse : public ros::Msg + { + public: + typedef const char* _md5_type; + _md5_type md5; + typedef const char* _definition_type; + _definition_type definition; + + RequestMessageInfoResponse(): + md5(""), + definition("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_md5 = strlen(this->md5); + varToArr(outbuffer + offset, length_md5); + offset += 4; + memcpy(outbuffer + offset, this->md5, length_md5); + offset += length_md5; + uint32_t length_definition = strlen(this->definition); + varToArr(outbuffer + offset, length_definition); + offset += 4; + memcpy(outbuffer + offset, this->definition, length_definition); + offset += length_definition; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_md5; + arrToVar(length_md5, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_md5; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_md5-1]=0; + this->md5 = (char *)(inbuffer + offset-1); + offset += length_md5; + uint32_t length_definition; + arrToVar(length_definition, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_definition; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_definition-1]=0; + this->definition = (char *)(inbuffer + offset-1); + offset += length_definition; + return offset; + } + + const char * getType(){ return REQUESTMESSAGEINFO; }; + const char * getMD5(){ return "fe452186a069bed40f09b8628fe5eac8"; }; + + }; + + class RequestMessageInfo { + public: + typedef RequestMessageInfoRequest Request; + typedef RequestMessageInfoResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosserial_msgs/RequestParam.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosserial_msgs/RequestParam.h new file mode 100644 index 0000000..aaecd13 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosserial_msgs/RequestParam.h @@ -0,0 +1,212 @@ +#ifndef _ROS_SERVICE_RequestParam_h +#define _ROS_SERVICE_RequestParam_h +#include +#include +#include +#include "../ros/msg.h" + +namespace rosserial_msgs +{ + +static const char REQUESTPARAM[] = "rosserial_msgs/RequestParam"; + + class RequestParamRequest : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + + RequestParamRequest(): + name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + return offset; + } + + const char * getType(){ return REQUESTPARAM; }; + const char * getMD5(){ return "c1f3d28f1b044c871e6eff2e9fc3c667"; }; + + }; + + class RequestParamResponse : public ros::Msg + { + public: + uint32_t ints_length; + typedef int32_t _ints_type; + _ints_type st_ints; + _ints_type * ints; + uint32_t floats_length; + typedef float _floats_type; + _floats_type st_floats; + _floats_type * floats; + uint32_t strings_length; + typedef char* _strings_type; + _strings_type st_strings; + _strings_type * strings; + + RequestParamResponse(): + ints_length(0), ints(NULL), + floats_length(0), floats(NULL), + strings_length(0), strings(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->ints_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->ints_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->ints_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->ints_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->ints_length); + for( uint32_t i = 0; i < ints_length; i++){ + union { + int32_t real; + uint32_t base; + } u_intsi; + u_intsi.real = this->ints[i]; + *(outbuffer + offset + 0) = (u_intsi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_intsi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_intsi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_intsi.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->ints[i]); + } + *(outbuffer + offset + 0) = (this->floats_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->floats_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->floats_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->floats_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->floats_length); + for( uint32_t i = 0; i < floats_length; i++){ + union { + float real; + uint32_t base; + } u_floatsi; + u_floatsi.real = this->floats[i]; + *(outbuffer + offset + 0) = (u_floatsi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_floatsi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_floatsi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_floatsi.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->floats[i]); + } + *(outbuffer + offset + 0) = (this->strings_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->strings_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->strings_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->strings_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->strings_length); + for( uint32_t i = 0; i < strings_length; i++){ + uint32_t length_stringsi = strlen(this->strings[i]); + varToArr(outbuffer + offset, length_stringsi); + offset += 4; + memcpy(outbuffer + offset, this->strings[i], length_stringsi); + offset += length_stringsi; + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t ints_lengthT = ((uint32_t) (*(inbuffer + offset))); + ints_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + ints_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + ints_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->ints_length); + if(ints_lengthT > ints_length) + this->ints = (int32_t*)realloc(this->ints, ints_lengthT * sizeof(int32_t)); + ints_length = ints_lengthT; + for( uint32_t i = 0; i < ints_length; i++){ + union { + int32_t real; + uint32_t base; + } u_st_ints; + u_st_ints.base = 0; + u_st_ints.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_ints.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_ints.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_ints.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_ints = u_st_ints.real; + offset += sizeof(this->st_ints); + memcpy( &(this->ints[i]), &(this->st_ints), sizeof(int32_t)); + } + uint32_t floats_lengthT = ((uint32_t) (*(inbuffer + offset))); + floats_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + floats_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + floats_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->floats_length); + if(floats_lengthT > floats_length) + this->floats = (float*)realloc(this->floats, floats_lengthT * sizeof(float)); + floats_length = floats_lengthT; + for( uint32_t i = 0; i < floats_length; i++){ + union { + float real; + uint32_t base; + } u_st_floats; + u_st_floats.base = 0; + u_st_floats.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_floats.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_floats.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_floats.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_floats = u_st_floats.real; + offset += sizeof(this->st_floats); + memcpy( &(this->floats[i]), &(this->st_floats), sizeof(float)); + } + uint32_t strings_lengthT = ((uint32_t) (*(inbuffer + offset))); + strings_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + strings_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + strings_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->strings_length); + if(strings_lengthT > strings_length) + this->strings = (char**)realloc(this->strings, strings_lengthT * sizeof(char*)); + strings_length = strings_lengthT; + for( uint32_t i = 0; i < strings_length; i++){ + uint32_t length_st_strings; + arrToVar(length_st_strings, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_strings; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_strings-1]=0; + this->st_strings = (char *)(inbuffer + offset-1); + offset += length_st_strings; + memcpy( &(this->strings[i]), &(this->st_strings), sizeof(char*)); + } + return offset; + } + + const char * getType(){ return REQUESTPARAM; }; + const char * getMD5(){ return "9f0e98bda65981986ddf53afa7a40e49"; }; + + }; + + class RequestParam { + public: + typedef RequestParamRequest Request; + typedef RequestParamResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosserial_msgs/RequestServiceInfo.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosserial_msgs/RequestServiceInfo.h new file mode 100644 index 0000000..b18cf9d --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosserial_msgs/RequestServiceInfo.h @@ -0,0 +1,138 @@ +#ifndef _ROS_SERVICE_RequestServiceInfo_h +#define _ROS_SERVICE_RequestServiceInfo_h +#include +#include +#include +#include "ros/msg.h" + +namespace rosserial_msgs +{ + +static const char REQUESTSERVICEINFO[] = "rosserial_msgs/RequestServiceInfo"; + + class RequestServiceInfoRequest : public ros::Msg + { + public: + typedef const char* _service_type; + _service_type service; + + RequestServiceInfoRequest(): + service("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_service = strlen(this->service); + varToArr(outbuffer + offset, length_service); + offset += 4; + memcpy(outbuffer + offset, this->service, length_service); + offset += length_service; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_service; + arrToVar(length_service, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_service; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_service-1]=0; + this->service = (char *)(inbuffer + offset-1); + offset += length_service; + return offset; + } + + const char * getType(){ return REQUESTSERVICEINFO; }; + const char * getMD5(){ return "1cbcfa13b08f6d36710b9af8741e6112"; }; + + }; + + class RequestServiceInfoResponse : public ros::Msg + { + public: + typedef const char* _service_md5_type; + _service_md5_type service_md5; + typedef const char* _request_md5_type; + _request_md5_type request_md5; + typedef const char* _response_md5_type; + _response_md5_type response_md5; + + RequestServiceInfoResponse(): + service_md5(""), + request_md5(""), + response_md5("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_service_md5 = strlen(this->service_md5); + varToArr(outbuffer + offset, length_service_md5); + offset += 4; + memcpy(outbuffer + offset, this->service_md5, length_service_md5); + offset += length_service_md5; + uint32_t length_request_md5 = strlen(this->request_md5); + varToArr(outbuffer + offset, length_request_md5); + offset += 4; + memcpy(outbuffer + offset, this->request_md5, length_request_md5); + offset += length_request_md5; + uint32_t length_response_md5 = strlen(this->response_md5); + varToArr(outbuffer + offset, length_response_md5); + offset += 4; + memcpy(outbuffer + offset, this->response_md5, length_response_md5); + offset += length_response_md5; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_service_md5; + arrToVar(length_service_md5, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_service_md5; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_service_md5-1]=0; + this->service_md5 = (char *)(inbuffer + offset-1); + offset += length_service_md5; + uint32_t length_request_md5; + arrToVar(length_request_md5, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_request_md5; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_request_md5-1]=0; + this->request_md5 = (char *)(inbuffer + offset-1); + offset += length_request_md5; + uint32_t length_response_md5; + arrToVar(length_response_md5, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_response_md5; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_response_md5-1]=0; + this->response_md5 = (char *)(inbuffer + offset-1); + offset += length_response_md5; + return offset; + } + + const char * getType(){ return REQUESTSERVICEINFO; }; + const char * getMD5(){ return "c3d6dd25b909596479fbbc6559fa6874"; }; + + }; + + class RequestServiceInfo { + public: + typedef RequestServiceInfoRequest Request; + typedef RequestServiceInfoResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosserial_msgs/TopicInfo.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosserial_msgs/TopicInfo.h new file mode 100644 index 0000000..987c161 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/rosserial_msgs/TopicInfo.h @@ -0,0 +1,130 @@ +#ifndef _ROS_rosserial_msgs_TopicInfo_h +#define _ROS_rosserial_msgs_TopicInfo_h + +#include +#include +#include +#include "../ros/msg.h" + +namespace rosserial_msgs +{ + + class TopicInfo : public ros::Msg + { + public: + typedef uint16_t _topic_id_type; + _topic_id_type topic_id; + typedef const char* _topic_name_type; + _topic_name_type topic_name; + typedef const char* _message_type_type; + _message_type_type message_type; + typedef const char* _md5sum_type; + _md5sum_type md5sum; + typedef int32_t _buffer_size_type; + _buffer_size_type buffer_size; + enum { ID_PUBLISHER = 0 }; + enum { ID_SUBSCRIBER = 1 }; + enum { ID_SERVICE_SERVER = 2 }; + enum { ID_SERVICE_CLIENT = 4 }; + enum { ID_PARAMETER_REQUEST = 6 }; + enum { ID_LOG = 7 }; + enum { ID_TIME = 10 }; + enum { ID_TX_STOP = 11 }; + + TopicInfo(): + topic_id(0), + topic_name(""), + message_type(""), + md5sum(""), + buffer_size(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->topic_id >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->topic_id >> (8 * 1)) & 0xFF; + offset += sizeof(this->topic_id); + uint32_t length_topic_name = strlen(this->topic_name); + varToArr(outbuffer + offset, length_topic_name); + offset += 4; + memcpy(outbuffer + offset, this->topic_name, length_topic_name); + offset += length_topic_name; + uint32_t length_message_type = strlen(this->message_type); + varToArr(outbuffer + offset, length_message_type); + offset += 4; + memcpy(outbuffer + offset, this->message_type, length_message_type); + offset += length_message_type; + uint32_t length_md5sum = strlen(this->md5sum); + varToArr(outbuffer + offset, length_md5sum); + offset += 4; + memcpy(outbuffer + offset, this->md5sum, length_md5sum); + offset += length_md5sum; + union { + int32_t real; + uint32_t base; + } u_buffer_size; + u_buffer_size.real = this->buffer_size; + *(outbuffer + offset + 0) = (u_buffer_size.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_buffer_size.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_buffer_size.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_buffer_size.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->buffer_size); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->topic_id = ((uint16_t) (*(inbuffer + offset))); + this->topic_id |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->topic_id); + uint32_t length_topic_name; + arrToVar(length_topic_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_topic_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_topic_name-1]=0; + this->topic_name = (char *)(inbuffer + offset-1); + offset += length_topic_name; + uint32_t length_message_type; + arrToVar(length_message_type, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_message_type; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_message_type-1]=0; + this->message_type = (char *)(inbuffer + offset-1); + offset += length_message_type; + uint32_t length_md5sum; + arrToVar(length_md5sum, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_md5sum; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_md5sum-1]=0; + this->md5sum = (char *)(inbuffer + offset-1); + offset += length_md5sum; + union { + int32_t real; + uint32_t base; + } u_buffer_size; + u_buffer_size.base = 0; + u_buffer_size.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_buffer_size.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_buffer_size.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_buffer_size.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->buffer_size = u_buffer_size.real; + offset += sizeof(this->buffer_size); + return offset; + } + + const char * getType(){ return "rosserial_msgs/TopicInfo"; }; + const char * getMD5(){ return "0ad51f88fc44892f8c10684077646005"; }; + + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/BatteryState.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/BatteryState.h new file mode 100644 index 0000000..4e9cba4 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/BatteryState.h @@ -0,0 +1,326 @@ +#ifndef _ROS_sensor_msgs_BatteryState_h +#define _ROS_sensor_msgs_BatteryState_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace sensor_msgs +{ + + class BatteryState : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef float _voltage_type; + _voltage_type voltage; + typedef float _current_type; + _current_type current; + typedef float _charge_type; + _charge_type charge; + typedef float _capacity_type; + _capacity_type capacity; + typedef float _design_capacity_type; + _design_capacity_type design_capacity; + typedef float _percentage_type; + _percentage_type percentage; + typedef uint8_t _power_supply_status_type; + _power_supply_status_type power_supply_status; + typedef uint8_t _power_supply_health_type; + _power_supply_health_type power_supply_health; + typedef uint8_t _power_supply_technology_type; + _power_supply_technology_type power_supply_technology; + typedef bool _present_type; + _present_type present; + uint32_t cell_voltage_length; + typedef float _cell_voltage_type; + _cell_voltage_type st_cell_voltage; + _cell_voltage_type * cell_voltage; + typedef const char* _location_type; + _location_type location; + typedef const char* _serial_number_type; + _serial_number_type serial_number; + enum { POWER_SUPPLY_STATUS_UNKNOWN = 0 }; + enum { POWER_SUPPLY_STATUS_CHARGING = 1 }; + enum { POWER_SUPPLY_STATUS_DISCHARGING = 2 }; + enum { POWER_SUPPLY_STATUS_NOT_CHARGING = 3 }; + enum { POWER_SUPPLY_STATUS_FULL = 4 }; + enum { POWER_SUPPLY_HEALTH_UNKNOWN = 0 }; + enum { POWER_SUPPLY_HEALTH_GOOD = 1 }; + enum { POWER_SUPPLY_HEALTH_OVERHEAT = 2 }; + enum { POWER_SUPPLY_HEALTH_DEAD = 3 }; + enum { POWER_SUPPLY_HEALTH_OVERVOLTAGE = 4 }; + enum { POWER_SUPPLY_HEALTH_UNSPEC_FAILURE = 5 }; + enum { POWER_SUPPLY_HEALTH_COLD = 6 }; + enum { POWER_SUPPLY_HEALTH_WATCHDOG_TIMER_EXPIRE = 7 }; + enum { POWER_SUPPLY_HEALTH_SAFETY_TIMER_EXPIRE = 8 }; + enum { POWER_SUPPLY_TECHNOLOGY_UNKNOWN = 0 }; + enum { POWER_SUPPLY_TECHNOLOGY_NIMH = 1 }; + enum { POWER_SUPPLY_TECHNOLOGY_LION = 2 }; + enum { POWER_SUPPLY_TECHNOLOGY_LIPO = 3 }; + enum { POWER_SUPPLY_TECHNOLOGY_LIFE = 4 }; + enum { POWER_SUPPLY_TECHNOLOGY_NICD = 5 }; + enum { POWER_SUPPLY_TECHNOLOGY_LIMN = 6 }; + + BatteryState(): + header(), + voltage(0), + current(0), + charge(0), + capacity(0), + design_capacity(0), + percentage(0), + power_supply_status(0), + power_supply_health(0), + power_supply_technology(0), + present(0), + cell_voltage_length(0), cell_voltage(NULL), + location(""), + serial_number("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + union { + float real; + uint32_t base; + } u_voltage; + u_voltage.real = this->voltage; + *(outbuffer + offset + 0) = (u_voltage.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_voltage.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_voltage.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_voltage.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->voltage); + union { + float real; + uint32_t base; + } u_current; + u_current.real = this->current; + *(outbuffer + offset + 0) = (u_current.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_current.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_current.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_current.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->current); + union { + float real; + uint32_t base; + } u_charge; + u_charge.real = this->charge; + *(outbuffer + offset + 0) = (u_charge.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_charge.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_charge.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_charge.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->charge); + union { + float real; + uint32_t base; + } u_capacity; + u_capacity.real = this->capacity; + *(outbuffer + offset + 0) = (u_capacity.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_capacity.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_capacity.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_capacity.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->capacity); + union { + float real; + uint32_t base; + } u_design_capacity; + u_design_capacity.real = this->design_capacity; + *(outbuffer + offset + 0) = (u_design_capacity.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_design_capacity.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_design_capacity.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_design_capacity.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->design_capacity); + union { + float real; + uint32_t base; + } u_percentage; + u_percentage.real = this->percentage; + *(outbuffer + offset + 0) = (u_percentage.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_percentage.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_percentage.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_percentage.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->percentage); + *(outbuffer + offset + 0) = (this->power_supply_status >> (8 * 0)) & 0xFF; + offset += sizeof(this->power_supply_status); + *(outbuffer + offset + 0) = (this->power_supply_health >> (8 * 0)) & 0xFF; + offset += sizeof(this->power_supply_health); + *(outbuffer + offset + 0) = (this->power_supply_technology >> (8 * 0)) & 0xFF; + offset += sizeof(this->power_supply_technology); + union { + bool real; + uint8_t base; + } u_present; + u_present.real = this->present; + *(outbuffer + offset + 0) = (u_present.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->present); + *(outbuffer + offset + 0) = (this->cell_voltage_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->cell_voltage_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->cell_voltage_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->cell_voltage_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->cell_voltage_length); + for( uint32_t i = 0; i < cell_voltage_length; i++){ + union { + float real; + uint32_t base; + } u_cell_voltagei; + u_cell_voltagei.real = this->cell_voltage[i]; + *(outbuffer + offset + 0) = (u_cell_voltagei.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_cell_voltagei.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_cell_voltagei.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_cell_voltagei.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->cell_voltage[i]); + } + uint32_t length_location = strlen(this->location); + varToArr(outbuffer + offset, length_location); + offset += 4; + memcpy(outbuffer + offset, this->location, length_location); + offset += length_location; + uint32_t length_serial_number = strlen(this->serial_number); + varToArr(outbuffer + offset, length_serial_number); + offset += 4; + memcpy(outbuffer + offset, this->serial_number, length_serial_number); + offset += length_serial_number; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + union { + float real; + uint32_t base; + } u_voltage; + u_voltage.base = 0; + u_voltage.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_voltage.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_voltage.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_voltage.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->voltage = u_voltage.real; + offset += sizeof(this->voltage); + union { + float real; + uint32_t base; + } u_current; + u_current.base = 0; + u_current.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_current.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_current.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_current.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->current = u_current.real; + offset += sizeof(this->current); + union { + float real; + uint32_t base; + } u_charge; + u_charge.base = 0; + u_charge.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_charge.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_charge.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_charge.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->charge = u_charge.real; + offset += sizeof(this->charge); + union { + float real; + uint32_t base; + } u_capacity; + u_capacity.base = 0; + u_capacity.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_capacity.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_capacity.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_capacity.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->capacity = u_capacity.real; + offset += sizeof(this->capacity); + union { + float real; + uint32_t base; + } u_design_capacity; + u_design_capacity.base = 0; + u_design_capacity.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_design_capacity.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_design_capacity.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_design_capacity.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->design_capacity = u_design_capacity.real; + offset += sizeof(this->design_capacity); + union { + float real; + uint32_t base; + } u_percentage; + u_percentage.base = 0; + u_percentage.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_percentage.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_percentage.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_percentage.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->percentage = u_percentage.real; + offset += sizeof(this->percentage); + this->power_supply_status = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->power_supply_status); + this->power_supply_health = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->power_supply_health); + this->power_supply_technology = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->power_supply_technology); + union { + bool real; + uint8_t base; + } u_present; + u_present.base = 0; + u_present.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->present = u_present.real; + offset += sizeof(this->present); + uint32_t cell_voltage_lengthT = ((uint32_t) (*(inbuffer + offset))); + cell_voltage_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + cell_voltage_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + cell_voltage_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->cell_voltage_length); + if(cell_voltage_lengthT > cell_voltage_length) + this->cell_voltage = (float*)realloc(this->cell_voltage, cell_voltage_lengthT * sizeof(float)); + cell_voltage_length = cell_voltage_lengthT; + for( uint32_t i = 0; i < cell_voltage_length; i++){ + union { + float real; + uint32_t base; + } u_st_cell_voltage; + u_st_cell_voltage.base = 0; + u_st_cell_voltage.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_cell_voltage.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_cell_voltage.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_cell_voltage.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_cell_voltage = u_st_cell_voltage.real; + offset += sizeof(this->st_cell_voltage); + memcpy( &(this->cell_voltage[i]), &(this->st_cell_voltage), sizeof(float)); + } + uint32_t length_location; + arrToVar(length_location, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_location; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_location-1]=0; + this->location = (char *)(inbuffer + offset-1); + offset += length_location; + uint32_t length_serial_number; + arrToVar(length_serial_number, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_serial_number; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_serial_number-1]=0; + this->serial_number = (char *)(inbuffer + offset-1); + offset += length_serial_number; + return offset; + } + + const char * getType(){ return "sensor_msgs/BatteryState"; }; + const char * getMD5(){ return "476f837fa6771f6e16e3bf4ef96f8770"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/CameraInfo.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/CameraInfo.h new file mode 100644 index 0000000..5bd1c7d --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/CameraInfo.h @@ -0,0 +1,276 @@ +#ifndef _ROS_sensor_msgs_CameraInfo_h +#define _ROS_sensor_msgs_CameraInfo_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "sensor_msgs/RegionOfInterest.h" + +namespace sensor_msgs +{ + + class CameraInfo : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef uint32_t _height_type; + _height_type height; + typedef uint32_t _width_type; + _width_type width; + typedef const char* _distortion_model_type; + _distortion_model_type distortion_model; + uint32_t D_length; + typedef double _D_type; + _D_type st_D; + _D_type * D; + double K[9]; + double R[9]; + double P[12]; + typedef uint32_t _binning_x_type; + _binning_x_type binning_x; + typedef uint32_t _binning_y_type; + _binning_y_type binning_y; + typedef sensor_msgs::RegionOfInterest _roi_type; + _roi_type roi; + + CameraInfo(): + header(), + height(0), + width(0), + distortion_model(""), + D_length(0), D(NULL), + K(), + R(), + P(), + binning_x(0), + binning_y(0), + roi() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->height >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->height >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->height >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->height >> (8 * 3)) & 0xFF; + offset += sizeof(this->height); + *(outbuffer + offset + 0) = (this->width >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->width >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->width >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->width >> (8 * 3)) & 0xFF; + offset += sizeof(this->width); + uint32_t length_distortion_model = strlen(this->distortion_model); + varToArr(outbuffer + offset, length_distortion_model); + offset += 4; + memcpy(outbuffer + offset, this->distortion_model, length_distortion_model); + offset += length_distortion_model; + *(outbuffer + offset + 0) = (this->D_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->D_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->D_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->D_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->D_length); + for( uint32_t i = 0; i < D_length; i++){ + union { + double real; + uint64_t base; + } u_Di; + u_Di.real = this->D[i]; + *(outbuffer + offset + 0) = (u_Di.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_Di.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_Di.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_Di.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_Di.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_Di.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_Di.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_Di.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->D[i]); + } + for( uint32_t i = 0; i < 9; i++){ + union { + double real; + uint64_t base; + } u_Ki; + u_Ki.real = this->K[i]; + *(outbuffer + offset + 0) = (u_Ki.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_Ki.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_Ki.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_Ki.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_Ki.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_Ki.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_Ki.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_Ki.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->K[i]); + } + for( uint32_t i = 0; i < 9; i++){ + union { + double real; + uint64_t base; + } u_Ri; + u_Ri.real = this->R[i]; + *(outbuffer + offset + 0) = (u_Ri.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_Ri.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_Ri.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_Ri.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_Ri.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_Ri.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_Ri.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_Ri.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->R[i]); + } + for( uint32_t i = 0; i < 12; i++){ + union { + double real; + uint64_t base; + } u_Pi; + u_Pi.real = this->P[i]; + *(outbuffer + offset + 0) = (u_Pi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_Pi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_Pi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_Pi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_Pi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_Pi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_Pi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_Pi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->P[i]); + } + *(outbuffer + offset + 0) = (this->binning_x >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->binning_x >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->binning_x >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->binning_x >> (8 * 3)) & 0xFF; + offset += sizeof(this->binning_x); + *(outbuffer + offset + 0) = (this->binning_y >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->binning_y >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->binning_y >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->binning_y >> (8 * 3)) & 0xFF; + offset += sizeof(this->binning_y); + offset += this->roi.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + this->height = ((uint32_t) (*(inbuffer + offset))); + this->height |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->height |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->height |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->height); + this->width = ((uint32_t) (*(inbuffer + offset))); + this->width |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->width |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->width |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->width); + uint32_t length_distortion_model; + arrToVar(length_distortion_model, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_distortion_model; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_distortion_model-1]=0; + this->distortion_model = (char *)(inbuffer + offset-1); + offset += length_distortion_model; + uint32_t D_lengthT = ((uint32_t) (*(inbuffer + offset))); + D_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + D_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + D_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->D_length); + if(D_lengthT > D_length) + this->D = (double*)realloc(this->D, D_lengthT * sizeof(double)); + D_length = D_lengthT; + for( uint32_t i = 0; i < D_length; i++){ + union { + double real; + uint64_t base; + } u_st_D; + u_st_D.base = 0; + u_st_D.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_D.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_D.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_D.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_D.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_D.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_D.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_D.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_D = u_st_D.real; + offset += sizeof(this->st_D); + memcpy( &(this->D[i]), &(this->st_D), sizeof(double)); + } + for( uint32_t i = 0; i < 9; i++){ + union { + double real; + uint64_t base; + } u_Ki; + u_Ki.base = 0; + u_Ki.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_Ki.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_Ki.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_Ki.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_Ki.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_Ki.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_Ki.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_Ki.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->K[i] = u_Ki.real; + offset += sizeof(this->K[i]); + } + for( uint32_t i = 0; i < 9; i++){ + union { + double real; + uint64_t base; + } u_Ri; + u_Ri.base = 0; + u_Ri.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_Ri.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_Ri.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_Ri.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_Ri.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_Ri.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_Ri.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_Ri.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->R[i] = u_Ri.real; + offset += sizeof(this->R[i]); + } + for( uint32_t i = 0; i < 12; i++){ + union { + double real; + uint64_t base; + } u_Pi; + u_Pi.base = 0; + u_Pi.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_Pi.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_Pi.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_Pi.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_Pi.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_Pi.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_Pi.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_Pi.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->P[i] = u_Pi.real; + offset += sizeof(this->P[i]); + } + this->binning_x = ((uint32_t) (*(inbuffer + offset))); + this->binning_x |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->binning_x |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->binning_x |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->binning_x); + this->binning_y = ((uint32_t) (*(inbuffer + offset))); + this->binning_y |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->binning_y |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->binning_y |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->binning_y); + offset += this->roi.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "sensor_msgs/CameraInfo"; }; + const char * getMD5(){ return "c9a58c1b0b154e0e6da7578cb991d214"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/ChannelFloat32.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/ChannelFloat32.h new file mode 100644 index 0000000..c5c433d --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/ChannelFloat32.h @@ -0,0 +1,99 @@ +#ifndef _ROS_sensor_msgs_ChannelFloat32_h +#define _ROS_sensor_msgs_ChannelFloat32_h + +#include +#include +#include +#include "ros/msg.h" + +namespace sensor_msgs +{ + + class ChannelFloat32 : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + uint32_t values_length; + typedef float _values_type; + _values_type st_values; + _values_type * values; + + ChannelFloat32(): + name(""), + values_length(0), values(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + *(outbuffer + offset + 0) = (this->values_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->values_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->values_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->values_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->values_length); + for( uint32_t i = 0; i < values_length; i++){ + union { + float real; + uint32_t base; + } u_valuesi; + u_valuesi.real = this->values[i]; + *(outbuffer + offset + 0) = (u_valuesi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_valuesi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_valuesi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_valuesi.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->values[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + uint32_t values_lengthT = ((uint32_t) (*(inbuffer + offset))); + values_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + values_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + values_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->values_length); + if(values_lengthT > values_length) + this->values = (float*)realloc(this->values, values_lengthT * sizeof(float)); + values_length = values_lengthT; + for( uint32_t i = 0; i < values_length; i++){ + union { + float real; + uint32_t base; + } u_st_values; + u_st_values.base = 0; + u_st_values.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_values.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_values.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_values.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_values = u_st_values.real; + offset += sizeof(this->st_values); + memcpy( &(this->values[i]), &(this->st_values), sizeof(float)); + } + return offset; + } + + const char * getType(){ return "sensor_msgs/ChannelFloat32"; }; + const char * getMD5(){ return "3d40139cdd33dfedcb71ffeeeb42ae7f"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/CompressedImage.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/CompressedImage.h new file mode 100644 index 0000000..a11f62c --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/CompressedImage.h @@ -0,0 +1,88 @@ +#ifndef _ROS_sensor_msgs_CompressedImage_h +#define _ROS_sensor_msgs_CompressedImage_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace sensor_msgs +{ + + class CompressedImage : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef const char* _format_type; + _format_type format; + uint32_t data_length; + typedef uint8_t _data_type; + _data_type st_data; + _data_type * data; + + CompressedImage(): + header(), + format(""), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + uint32_t length_format = strlen(this->format); + varToArr(outbuffer + offset, length_format); + offset += 4; + memcpy(outbuffer + offset, this->format, length_format); + offset += length_format; + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t length_format; + arrToVar(length_format, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_format; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_format-1]=0; + this->format = (char *)(inbuffer + offset-1); + offset += length_format; + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (uint8_t*)realloc(this->data, data_lengthT * sizeof(uint8_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + this->st_data = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(uint8_t)); + } + return offset; + } + + const char * getType(){ return "sensor_msgs/CompressedImage"; }; + const char * getMD5(){ return "8f7a12909da2c9d3332d540a0977563f"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/FluidPressure.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/FluidPressure.h new file mode 100644 index 0000000..3df5165 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/FluidPressure.h @@ -0,0 +1,108 @@ +#ifndef _ROS_sensor_msgs_FluidPressure_h +#define _ROS_sensor_msgs_FluidPressure_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace sensor_msgs +{ + + class FluidPressure : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef double _fluid_pressure_type; + _fluid_pressure_type fluid_pressure; + typedef double _variance_type; + _variance_type variance; + + FluidPressure(): + header(), + fluid_pressure(0), + variance(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + union { + double real; + uint64_t base; + } u_fluid_pressure; + u_fluid_pressure.real = this->fluid_pressure; + *(outbuffer + offset + 0) = (u_fluid_pressure.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_fluid_pressure.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_fluid_pressure.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_fluid_pressure.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_fluid_pressure.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_fluid_pressure.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_fluid_pressure.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_fluid_pressure.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->fluid_pressure); + union { + double real; + uint64_t base; + } u_variance; + u_variance.real = this->variance; + *(outbuffer + offset + 0) = (u_variance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_variance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_variance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_variance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_variance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_variance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_variance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_variance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->variance); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + union { + double real; + uint64_t base; + } u_fluid_pressure; + u_fluid_pressure.base = 0; + u_fluid_pressure.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_fluid_pressure.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_fluid_pressure.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_fluid_pressure.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_fluid_pressure.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_fluid_pressure.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_fluid_pressure.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_fluid_pressure.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->fluid_pressure = u_fluid_pressure.real; + offset += sizeof(this->fluid_pressure); + union { + double real; + uint64_t base; + } u_variance; + u_variance.base = 0; + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->variance = u_variance.real; + offset += sizeof(this->variance); + return offset; + } + + const char * getType(){ return "sensor_msgs/FluidPressure"; }; + const char * getMD5(){ return "804dc5cea1c5306d6a2eb80b9833befe"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/Illuminance.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/Illuminance.h new file mode 100644 index 0000000..d6fbb2c --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/Illuminance.h @@ -0,0 +1,108 @@ +#ifndef _ROS_sensor_msgs_Illuminance_h +#define _ROS_sensor_msgs_Illuminance_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace sensor_msgs +{ + + class Illuminance : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef double _illuminance_type; + _illuminance_type illuminance; + typedef double _variance_type; + _variance_type variance; + + Illuminance(): + header(), + illuminance(0), + variance(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + union { + double real; + uint64_t base; + } u_illuminance; + u_illuminance.real = this->illuminance; + *(outbuffer + offset + 0) = (u_illuminance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_illuminance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_illuminance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_illuminance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_illuminance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_illuminance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_illuminance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_illuminance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->illuminance); + union { + double real; + uint64_t base; + } u_variance; + u_variance.real = this->variance; + *(outbuffer + offset + 0) = (u_variance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_variance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_variance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_variance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_variance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_variance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_variance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_variance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->variance); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + union { + double real; + uint64_t base; + } u_illuminance; + u_illuminance.base = 0; + u_illuminance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_illuminance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_illuminance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_illuminance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_illuminance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_illuminance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_illuminance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_illuminance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->illuminance = u_illuminance.real; + offset += sizeof(this->illuminance); + union { + double real; + uint64_t base; + } u_variance; + u_variance.base = 0; + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->variance = u_variance.real; + offset += sizeof(this->variance); + return offset; + } + + const char * getType(){ return "sensor_msgs/Illuminance"; }; + const char * getMD5(){ return "8cf5febb0952fca9d650c3d11a81a188"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/Image.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/Image.h new file mode 100644 index 0000000..15842a3 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/Image.h @@ -0,0 +1,134 @@ +#ifndef _ROS_sensor_msgs_Image_h +#define _ROS_sensor_msgs_Image_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace sensor_msgs +{ + + class Image : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef uint32_t _height_type; + _height_type height; + typedef uint32_t _width_type; + _width_type width; + typedef const char* _encoding_type; + _encoding_type encoding; + typedef uint8_t _is_bigendian_type; + _is_bigendian_type is_bigendian; + typedef uint32_t _step_type; + _step_type step; + uint32_t data_length; + typedef uint8_t _data_type; + _data_type st_data; + _data_type * data; + + Image(): + header(), + height(0), + width(0), + encoding(""), + is_bigendian(0), + step(0), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->height >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->height >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->height >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->height >> (8 * 3)) & 0xFF; + offset += sizeof(this->height); + *(outbuffer + offset + 0) = (this->width >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->width >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->width >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->width >> (8 * 3)) & 0xFF; + offset += sizeof(this->width); + uint32_t length_encoding = strlen(this->encoding); + varToArr(outbuffer + offset, length_encoding); + offset += 4; + memcpy(outbuffer + offset, this->encoding, length_encoding); + offset += length_encoding; + *(outbuffer + offset + 0) = (this->is_bigendian >> (8 * 0)) & 0xFF; + offset += sizeof(this->is_bigendian); + *(outbuffer + offset + 0) = (this->step >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->step >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->step >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->step >> (8 * 3)) & 0xFF; + offset += sizeof(this->step); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + this->height = ((uint32_t) (*(inbuffer + offset))); + this->height |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->height |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->height |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->height); + this->width = ((uint32_t) (*(inbuffer + offset))); + this->width |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->width |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->width |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->width); + uint32_t length_encoding; + arrToVar(length_encoding, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_encoding; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_encoding-1]=0; + this->encoding = (char *)(inbuffer + offset-1); + offset += length_encoding; + this->is_bigendian = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->is_bigendian); + this->step = ((uint32_t) (*(inbuffer + offset))); + this->step |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->step |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->step |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->step); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (uint8_t*)realloc(this->data, data_lengthT * sizeof(uint8_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + this->st_data = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(uint8_t)); + } + return offset; + } + + const char * getType(){ return "sensor_msgs/Image"; }; + const char * getMD5(){ return "060021388200f6f0f447d0fcd9c64743"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/Imu.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/Imu.h new file mode 100644 index 0000000..c18b583 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/Imu.h @@ -0,0 +1,166 @@ +#ifndef _ROS_sensor_msgs_Imu_h +#define _ROS_sensor_msgs_Imu_h + +#include +#include +#include +#include "../ros/msg.h" +#include "../std_msgs/Header.h" +#include "../geometry_msgs/Quaternion.h" +#include "../geometry_msgs/Vector3.h" + +namespace sensor_msgs +{ + + class Imu : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::Quaternion _orientation_type; + _orientation_type orientation; + double orientation_covariance[9]; + typedef geometry_msgs::Vector3 _angular_velocity_type; + _angular_velocity_type angular_velocity; + double angular_velocity_covariance[9]; + typedef geometry_msgs::Vector3 _linear_acceleration_type; + _linear_acceleration_type linear_acceleration; + double linear_acceleration_covariance[9]; + + Imu(): + header(), + orientation(), + orientation_covariance(), + angular_velocity(), + angular_velocity_covariance(), + linear_acceleration(), + linear_acceleration_covariance() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->orientation.serialize(outbuffer + offset); + for( uint32_t i = 0; i < 9; i++){ + union { + double real; + uint64_t base; + } u_orientation_covariancei; + u_orientation_covariancei.real = this->orientation_covariance[i]; + *(outbuffer + offset + 0) = (u_orientation_covariancei.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_orientation_covariancei.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_orientation_covariancei.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_orientation_covariancei.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_orientation_covariancei.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_orientation_covariancei.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_orientation_covariancei.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_orientation_covariancei.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->orientation_covariance[i]); + } + offset += this->angular_velocity.serialize(outbuffer + offset); + for( uint32_t i = 0; i < 9; i++){ + union { + double real; + uint64_t base; + } u_angular_velocity_covariancei; + u_angular_velocity_covariancei.real = this->angular_velocity_covariance[i]; + *(outbuffer + offset + 0) = (u_angular_velocity_covariancei.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_angular_velocity_covariancei.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_angular_velocity_covariancei.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_angular_velocity_covariancei.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_angular_velocity_covariancei.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_angular_velocity_covariancei.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_angular_velocity_covariancei.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_angular_velocity_covariancei.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->angular_velocity_covariance[i]); + } + offset += this->linear_acceleration.serialize(outbuffer + offset); + for( uint32_t i = 0; i < 9; i++){ + union { + double real; + uint64_t base; + } u_linear_acceleration_covariancei; + u_linear_acceleration_covariancei.real = this->linear_acceleration_covariance[i]; + *(outbuffer + offset + 0) = (u_linear_acceleration_covariancei.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_linear_acceleration_covariancei.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_linear_acceleration_covariancei.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_linear_acceleration_covariancei.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_linear_acceleration_covariancei.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_linear_acceleration_covariancei.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_linear_acceleration_covariancei.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_linear_acceleration_covariancei.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->linear_acceleration_covariance[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->orientation.deserialize(inbuffer + offset); + for( uint32_t i = 0; i < 9; i++){ + union { + double real; + uint64_t base; + } u_orientation_covariancei; + u_orientation_covariancei.base = 0; + u_orientation_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_orientation_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_orientation_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_orientation_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_orientation_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_orientation_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_orientation_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_orientation_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->orientation_covariance[i] = u_orientation_covariancei.real; + offset += sizeof(this->orientation_covariance[i]); + } + offset += this->angular_velocity.deserialize(inbuffer + offset); + for( uint32_t i = 0; i < 9; i++){ + union { + double real; + uint64_t base; + } u_angular_velocity_covariancei; + u_angular_velocity_covariancei.base = 0; + u_angular_velocity_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_angular_velocity_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_angular_velocity_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_angular_velocity_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_angular_velocity_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_angular_velocity_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_angular_velocity_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_angular_velocity_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->angular_velocity_covariance[i] = u_angular_velocity_covariancei.real; + offset += sizeof(this->angular_velocity_covariance[i]); + } + offset += this->linear_acceleration.deserialize(inbuffer + offset); + for( uint32_t i = 0; i < 9; i++){ + union { + double real; + uint64_t base; + } u_linear_acceleration_covariancei; + u_linear_acceleration_covariancei.base = 0; + u_linear_acceleration_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_linear_acceleration_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_linear_acceleration_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_linear_acceleration_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_linear_acceleration_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_linear_acceleration_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_linear_acceleration_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_linear_acceleration_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->linear_acceleration_covariance[i] = u_linear_acceleration_covariancei.real; + offset += sizeof(this->linear_acceleration_covariance[i]); + } + return offset; + } + + const char * getType(){ return "sensor_msgs/Imu"; }; + const char * getMD5(){ return "6a62c6daae103f4ff57a132d6f95cec2"; }; + + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/JointState.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/JointState.h new file mode 100644 index 0000000..6195757 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/JointState.h @@ -0,0 +1,237 @@ +#ifndef _ROS_sensor_msgs_JointState_h +#define _ROS_sensor_msgs_JointState_h + +#include +#include +#include +#include "../ros/msg.h" +#include "../std_msgs/Header.h" + +namespace sensor_msgs +{ + + class JointState : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t name_length; + typedef char* _name_type; + _name_type st_name; + _name_type * name; + uint32_t position_length; + typedef double _position_type; + _position_type st_position; + _position_type * position; + uint32_t velocity_length; + typedef double _velocity_type; + _velocity_type st_velocity; + _velocity_type * velocity; + uint32_t effort_length; + typedef double _effort_type; + _effort_type st_effort; + _effort_type * effort; + + JointState(): + header(), + name_length(0), name(NULL), + position_length(0), position(NULL), + velocity_length(0), velocity(NULL), + effort_length(0), effort(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->name_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->name_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->name_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->name_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->name_length); + for( uint32_t i = 0; i < name_length; i++){ + uint32_t length_namei = strlen(this->name[i]); + varToArr(outbuffer + offset, length_namei); + offset += 4; + memcpy(outbuffer + offset, this->name[i], length_namei); + offset += length_namei; + } + *(outbuffer + offset + 0) = (this->position_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->position_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->position_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->position_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->position_length); + for( uint32_t i = 0; i < position_length; i++){ + union { + double real; + uint64_t base; + } u_positioni; + u_positioni.real = this->position[i]; + *(outbuffer + offset + 0) = (u_positioni.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_positioni.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_positioni.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_positioni.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_positioni.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_positioni.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_positioni.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_positioni.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->position[i]); + } + *(outbuffer + offset + 0) = (this->velocity_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->velocity_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->velocity_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->velocity_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->velocity_length); + for( uint32_t i = 0; i < velocity_length; i++){ + union { + double real; + uint64_t base; + } u_velocityi; + u_velocityi.real = this->velocity[i]; + *(outbuffer + offset + 0) = (u_velocityi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_velocityi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_velocityi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_velocityi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_velocityi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_velocityi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_velocityi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_velocityi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->velocity[i]); + } + *(outbuffer + offset + 0) = (this->effort_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->effort_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->effort_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->effort_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->effort_length); + for( uint32_t i = 0; i < effort_length; i++){ + union { + double real; + uint64_t base; + } u_efforti; + u_efforti.real = this->effort[i]; + *(outbuffer + offset + 0) = (u_efforti.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_efforti.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_efforti.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_efforti.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_efforti.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_efforti.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_efforti.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_efforti.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->effort[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t name_lengthT = ((uint32_t) (*(inbuffer + offset))); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->name_length); + if(name_lengthT > name_length) + this->name = (char**)realloc(this->name, name_lengthT * sizeof(char*)); + name_length = name_lengthT; + for( uint32_t i = 0; i < name_length; i++){ + uint32_t length_st_name; + arrToVar(length_st_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_name-1]=0; + this->st_name = (char *)(inbuffer + offset-1); + offset += length_st_name; + memcpy( &(this->name[i]), &(this->st_name), sizeof(char*)); + } + uint32_t position_lengthT = ((uint32_t) (*(inbuffer + offset))); + position_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + position_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + position_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->position_length); + if(position_lengthT > position_length) + this->position = (double*)realloc(this->position, position_lengthT * sizeof(double)); + position_length = position_lengthT; + for( uint32_t i = 0; i < position_length; i++){ + union { + double real; + uint64_t base; + } u_st_position; + u_st_position.base = 0; + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_position = u_st_position.real; + offset += sizeof(this->st_position); + memcpy( &(this->position[i]), &(this->st_position), sizeof(double)); + } + uint32_t velocity_lengthT = ((uint32_t) (*(inbuffer + offset))); + velocity_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + velocity_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + velocity_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->velocity_length); + if(velocity_lengthT > velocity_length) + this->velocity = (double*)realloc(this->velocity, velocity_lengthT * sizeof(double)); + velocity_length = velocity_lengthT; + for( uint32_t i = 0; i < velocity_length; i++){ + union { + double real; + uint64_t base; + } u_st_velocity; + u_st_velocity.base = 0; + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_velocity = u_st_velocity.real; + offset += sizeof(this->st_velocity); + memcpy( &(this->velocity[i]), &(this->st_velocity), sizeof(double)); + } + uint32_t effort_lengthT = ((uint32_t) (*(inbuffer + offset))); + effort_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + effort_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + effort_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->effort_length); + if(effort_lengthT > effort_length) + this->effort = (double*)realloc(this->effort, effort_lengthT * sizeof(double)); + effort_length = effort_lengthT; + for( uint32_t i = 0; i < effort_length; i++){ + union { + double real; + uint64_t base; + } u_st_effort; + u_st_effort.base = 0; + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_effort = u_st_effort.real; + offset += sizeof(this->st_effort); + memcpy( &(this->effort[i]), &(this->st_effort), sizeof(double)); + } + return offset; + } + + const char * getType(){ return "sensor_msgs/JointState"; }; + const char * getMD5(){ return "3066dcd76a6cfaef579bd0f34173e9fd"; }; + + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/Joy.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/Joy.h new file mode 100644 index 0000000..bd56d41 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/Joy.h @@ -0,0 +1,132 @@ +#ifndef _ROS_sensor_msgs_Joy_h +#define _ROS_sensor_msgs_Joy_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace sensor_msgs +{ + + class Joy : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t axes_length; + typedef float _axes_type; + _axes_type st_axes; + _axes_type * axes; + uint32_t buttons_length; + typedef int32_t _buttons_type; + _buttons_type st_buttons; + _buttons_type * buttons; + + Joy(): + header(), + axes_length(0), axes(NULL), + buttons_length(0), buttons(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->axes_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->axes_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->axes_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->axes_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->axes_length); + for( uint32_t i = 0; i < axes_length; i++){ + union { + float real; + uint32_t base; + } u_axesi; + u_axesi.real = this->axes[i]; + *(outbuffer + offset + 0) = (u_axesi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_axesi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_axesi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_axesi.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->axes[i]); + } + *(outbuffer + offset + 0) = (this->buttons_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->buttons_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->buttons_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->buttons_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->buttons_length); + for( uint32_t i = 0; i < buttons_length; i++){ + union { + int32_t real; + uint32_t base; + } u_buttonsi; + u_buttonsi.real = this->buttons[i]; + *(outbuffer + offset + 0) = (u_buttonsi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_buttonsi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_buttonsi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_buttonsi.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->buttons[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t axes_lengthT = ((uint32_t) (*(inbuffer + offset))); + axes_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + axes_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + axes_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->axes_length); + if(axes_lengthT > axes_length) + this->axes = (float*)realloc(this->axes, axes_lengthT * sizeof(float)); + axes_length = axes_lengthT; + for( uint32_t i = 0; i < axes_length; i++){ + union { + float real; + uint32_t base; + } u_st_axes; + u_st_axes.base = 0; + u_st_axes.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_axes.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_axes.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_axes.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_axes = u_st_axes.real; + offset += sizeof(this->st_axes); + memcpy( &(this->axes[i]), &(this->st_axes), sizeof(float)); + } + uint32_t buttons_lengthT = ((uint32_t) (*(inbuffer + offset))); + buttons_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + buttons_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + buttons_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->buttons_length); + if(buttons_lengthT > buttons_length) + this->buttons = (int32_t*)realloc(this->buttons, buttons_lengthT * sizeof(int32_t)); + buttons_length = buttons_lengthT; + for( uint32_t i = 0; i < buttons_length; i++){ + union { + int32_t real; + uint32_t base; + } u_st_buttons; + u_st_buttons.base = 0; + u_st_buttons.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_buttons.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_buttons.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_buttons.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_buttons = u_st_buttons.real; + offset += sizeof(this->st_buttons); + memcpy( &(this->buttons[i]), &(this->st_buttons), sizeof(int32_t)); + } + return offset; + } + + const char * getType(){ return "sensor_msgs/Joy"; }; + const char * getMD5(){ return "5a9ea5f83505693b71e785041e67a8bb"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/JoyFeedback.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/JoyFeedback.h new file mode 100644 index 0000000..7a12993 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/JoyFeedback.h @@ -0,0 +1,79 @@ +#ifndef _ROS_sensor_msgs_JoyFeedback_h +#define _ROS_sensor_msgs_JoyFeedback_h + +#include +#include +#include +#include "ros/msg.h" + +namespace sensor_msgs +{ + + class JoyFeedback : public ros::Msg + { + public: + typedef uint8_t _type_type; + _type_type type; + typedef uint8_t _id_type; + _id_type id; + typedef float _intensity_type; + _intensity_type intensity; + enum { TYPE_LED = 0 }; + enum { TYPE_RUMBLE = 1 }; + enum { TYPE_BUZZER = 2 }; + + JoyFeedback(): + type(0), + id(0), + intensity(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->type >> (8 * 0)) & 0xFF; + offset += sizeof(this->type); + *(outbuffer + offset + 0) = (this->id >> (8 * 0)) & 0xFF; + offset += sizeof(this->id); + union { + float real; + uint32_t base; + } u_intensity; + u_intensity.real = this->intensity; + *(outbuffer + offset + 0) = (u_intensity.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_intensity.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_intensity.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_intensity.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->intensity); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->type = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->type); + this->id = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->id); + union { + float real; + uint32_t base; + } u_intensity; + u_intensity.base = 0; + u_intensity.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_intensity.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_intensity.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_intensity.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->intensity = u_intensity.real; + offset += sizeof(this->intensity); + return offset; + } + + const char * getType(){ return "sensor_msgs/JoyFeedback"; }; + const char * getMD5(){ return "f4dcd73460360d98f36e55ee7f2e46f1"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/JoyFeedbackArray.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/JoyFeedbackArray.h new file mode 100644 index 0000000..8fe8064 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/JoyFeedbackArray.h @@ -0,0 +1,64 @@ +#ifndef _ROS_sensor_msgs_JoyFeedbackArray_h +#define _ROS_sensor_msgs_JoyFeedbackArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "sensor_msgs/JoyFeedback.h" + +namespace sensor_msgs +{ + + class JoyFeedbackArray : public ros::Msg + { + public: + uint32_t array_length; + typedef sensor_msgs::JoyFeedback _array_type; + _array_type st_array; + _array_type * array; + + JoyFeedbackArray(): + array_length(0), array(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->array_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->array_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->array_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->array_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->array_length); + for( uint32_t i = 0; i < array_length; i++){ + offset += this->array[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t array_lengthT = ((uint32_t) (*(inbuffer + offset))); + array_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + array_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + array_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->array_length); + if(array_lengthT > array_length) + this->array = (sensor_msgs::JoyFeedback*)realloc(this->array, array_lengthT * sizeof(sensor_msgs::JoyFeedback)); + array_length = array_lengthT; + for( uint32_t i = 0; i < array_length; i++){ + offset += this->st_array.deserialize(inbuffer + offset); + memcpy( &(this->array[i]), &(this->st_array), sizeof(sensor_msgs::JoyFeedback)); + } + return offset; + } + + const char * getType(){ return "sensor_msgs/JoyFeedbackArray"; }; + const char * getMD5(){ return "cde5730a895b1fc4dee6f91b754b213d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/LaserEcho.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/LaserEcho.h new file mode 100644 index 0000000..b8f4c49 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/LaserEcho.h @@ -0,0 +1,82 @@ +#ifndef _ROS_sensor_msgs_LaserEcho_h +#define _ROS_sensor_msgs_LaserEcho_h + +#include +#include +#include +#include "ros/msg.h" + +namespace sensor_msgs +{ + + class LaserEcho : public ros::Msg + { + public: + uint32_t echoes_length; + typedef float _echoes_type; + _echoes_type st_echoes; + _echoes_type * echoes; + + LaserEcho(): + echoes_length(0), echoes(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->echoes_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->echoes_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->echoes_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->echoes_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->echoes_length); + for( uint32_t i = 0; i < echoes_length; i++){ + union { + float real; + uint32_t base; + } u_echoesi; + u_echoesi.real = this->echoes[i]; + *(outbuffer + offset + 0) = (u_echoesi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_echoesi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_echoesi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_echoesi.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->echoes[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t echoes_lengthT = ((uint32_t) (*(inbuffer + offset))); + echoes_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + echoes_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + echoes_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->echoes_length); + if(echoes_lengthT > echoes_length) + this->echoes = (float*)realloc(this->echoes, echoes_lengthT * sizeof(float)); + echoes_length = echoes_lengthT; + for( uint32_t i = 0; i < echoes_length; i++){ + union { + float real; + uint32_t base; + } u_st_echoes; + u_st_echoes.base = 0; + u_st_echoes.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_echoes.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_echoes.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_echoes.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_echoes = u_st_echoes.real; + offset += sizeof(this->st_echoes); + memcpy( &(this->echoes[i]), &(this->st_echoes), sizeof(float)); + } + return offset; + } + + const char * getType(){ return "sensor_msgs/LaserEcho"; }; + const char * getMD5(){ return "8bc5ae449b200fba4d552b4225586696"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/LaserScan.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/LaserScan.h new file mode 100644 index 0000000..203e739 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/LaserScan.h @@ -0,0 +1,300 @@ +#ifndef _ROS_sensor_msgs_LaserScan_h +#define _ROS_sensor_msgs_LaserScan_h + +#include +#include +#include +#include "../ros/msg.h" +#include "../std_msgs/Header.h" + +namespace sensor_msgs +{ + + class LaserScan : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef float _angle_min_type; + _angle_min_type angle_min; + typedef float _angle_max_type; + _angle_max_type angle_max; + typedef float _angle_increment_type; + _angle_increment_type angle_increment; + typedef float _time_increment_type; + _time_increment_type time_increment; + typedef float _scan_time_type; + _scan_time_type scan_time; + typedef float _range_min_type; + _range_min_type range_min; + typedef float _range_max_type; + _range_max_type range_max; + uint32_t ranges_length; + typedef float _ranges_type; + _ranges_type st_ranges; + _ranges_type * ranges; + uint32_t intensities_length; + typedef float _intensities_type; + _intensities_type st_intensities; + _intensities_type * intensities; + + LaserScan(): + header(), + angle_min(0), + angle_max(0), + angle_increment(0), + time_increment(0), + scan_time(0), + range_min(0), + range_max(0), + ranges_length(0), ranges(NULL), + intensities_length(0), intensities(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + union { + float real; + uint32_t base; + } u_angle_min; + u_angle_min.real = this->angle_min; + *(outbuffer + offset + 0) = (u_angle_min.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_angle_min.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_angle_min.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_angle_min.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->angle_min); + union { + float real; + uint32_t base; + } u_angle_max; + u_angle_max.real = this->angle_max; + *(outbuffer + offset + 0) = (u_angle_max.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_angle_max.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_angle_max.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_angle_max.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->angle_max); + union { + float real; + uint32_t base; + } u_angle_increment; + u_angle_increment.real = this->angle_increment; + *(outbuffer + offset + 0) = (u_angle_increment.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_angle_increment.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_angle_increment.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_angle_increment.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->angle_increment); + union { + float real; + uint32_t base; + } u_time_increment; + u_time_increment.real = this->time_increment; + *(outbuffer + offset + 0) = (u_time_increment.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_time_increment.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_time_increment.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_time_increment.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->time_increment); + union { + float real; + uint32_t base; + } u_scan_time; + u_scan_time.real = this->scan_time; + *(outbuffer + offset + 0) = (u_scan_time.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_scan_time.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_scan_time.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_scan_time.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->scan_time); + union { + float real; + uint32_t base; + } u_range_min; + u_range_min.real = this->range_min; + *(outbuffer + offset + 0) = (u_range_min.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_range_min.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_range_min.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_range_min.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->range_min); + union { + float real; + uint32_t base; + } u_range_max; + u_range_max.real = this->range_max; + *(outbuffer + offset + 0) = (u_range_max.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_range_max.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_range_max.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_range_max.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->range_max); + *(outbuffer + offset + 0) = (this->ranges_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->ranges_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->ranges_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->ranges_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->ranges_length); + for( uint32_t i = 0; i < ranges_length; i++){ + union { + float real; + uint32_t base; + } u_rangesi; + u_rangesi.real = this->ranges[i]; + *(outbuffer + offset + 0) = (u_rangesi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_rangesi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_rangesi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_rangesi.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->ranges[i]); + } + *(outbuffer + offset + 0) = (this->intensities_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->intensities_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->intensities_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->intensities_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->intensities_length); + for( uint32_t i = 0; i < intensities_length; i++){ + union { + float real; + uint32_t base; + } u_intensitiesi; + u_intensitiesi.real = this->intensities[i]; + *(outbuffer + offset + 0) = (u_intensitiesi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_intensitiesi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_intensitiesi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_intensitiesi.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->intensities[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + union { + float real; + uint32_t base; + } u_angle_min; + u_angle_min.base = 0; + u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->angle_min = u_angle_min.real; + offset += sizeof(this->angle_min); + union { + float real; + uint32_t base; + } u_angle_max; + u_angle_max.base = 0; + u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->angle_max = u_angle_max.real; + offset += sizeof(this->angle_max); + union { + float real; + uint32_t base; + } u_angle_increment; + u_angle_increment.base = 0; + u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->angle_increment = u_angle_increment.real; + offset += sizeof(this->angle_increment); + union { + float real; + uint32_t base; + } u_time_increment; + u_time_increment.base = 0; + u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->time_increment = u_time_increment.real; + offset += sizeof(this->time_increment); + union { + float real; + uint32_t base; + } u_scan_time; + u_scan_time.base = 0; + u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->scan_time = u_scan_time.real; + offset += sizeof(this->scan_time); + union { + float real; + uint32_t base; + } u_range_min; + u_range_min.base = 0; + u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->range_min = u_range_min.real; + offset += sizeof(this->range_min); + union { + float real; + uint32_t base; + } u_range_max; + u_range_max.base = 0; + u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->range_max = u_range_max.real; + offset += sizeof(this->range_max); + uint32_t ranges_lengthT = ((uint32_t) (*(inbuffer + offset))); + ranges_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + ranges_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + ranges_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->ranges_length); + if(ranges_lengthT > ranges_length) + this->ranges = (float*)realloc(this->ranges, ranges_lengthT * sizeof(float)); + ranges_length = ranges_lengthT; + for( uint32_t i = 0; i < ranges_length; i++){ + union { + float real; + uint32_t base; + } u_st_ranges; + u_st_ranges.base = 0; + u_st_ranges.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_ranges.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_ranges.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_ranges.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_ranges = u_st_ranges.real; + offset += sizeof(this->st_ranges); + memcpy( &(this->ranges[i]), &(this->st_ranges), sizeof(float)); + } + uint32_t intensities_lengthT = ((uint32_t) (*(inbuffer + offset))); + intensities_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + intensities_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + intensities_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->intensities_length); + if(intensities_lengthT > intensities_length) + this->intensities = (float*)realloc(this->intensities, intensities_lengthT * sizeof(float)); + intensities_length = intensities_lengthT; + for( uint32_t i = 0; i < intensities_length; i++){ + union { + float real; + uint32_t base; + } u_st_intensities; + u_st_intensities.base = 0; + u_st_intensities.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_intensities.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_intensities.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_intensities.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_intensities = u_st_intensities.real; + offset += sizeof(this->st_intensities); + memcpy( &(this->intensities[i]), &(this->st_intensities), sizeof(float)); + } + return offset; + } + + const char * getType(){ return "sensor_msgs/LaserScan"; }; + const char * getMD5(){ return "90c7ef2dc6895d81024acba2ac42f369"; }; + + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/MagneticField.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/MagneticField.h new file mode 100644 index 0000000..69a7344 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/MagneticField.h @@ -0,0 +1,85 @@ +#ifndef _ROS_sensor_msgs_MagneticField_h +#define _ROS_sensor_msgs_MagneticField_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Vector3.h" + +namespace sensor_msgs +{ + + class MagneticField : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::Vector3 _magnetic_field_type; + _magnetic_field_type magnetic_field; + double magnetic_field_covariance[9]; + + MagneticField(): + header(), + magnetic_field(), + magnetic_field_covariance() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->magnetic_field.serialize(outbuffer + offset); + for( uint32_t i = 0; i < 9; i++){ + union { + double real; + uint64_t base; + } u_magnetic_field_covariancei; + u_magnetic_field_covariancei.real = this->magnetic_field_covariance[i]; + *(outbuffer + offset + 0) = (u_magnetic_field_covariancei.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_magnetic_field_covariancei.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_magnetic_field_covariancei.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_magnetic_field_covariancei.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_magnetic_field_covariancei.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_magnetic_field_covariancei.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_magnetic_field_covariancei.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_magnetic_field_covariancei.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->magnetic_field_covariance[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->magnetic_field.deserialize(inbuffer + offset); + for( uint32_t i = 0; i < 9; i++){ + union { + double real; + uint64_t base; + } u_magnetic_field_covariancei; + u_magnetic_field_covariancei.base = 0; + u_magnetic_field_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_magnetic_field_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_magnetic_field_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_magnetic_field_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_magnetic_field_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_magnetic_field_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_magnetic_field_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_magnetic_field_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->magnetic_field_covariance[i] = u_magnetic_field_covariancei.real; + offset += sizeof(this->magnetic_field_covariance[i]); + } + return offset; + } + + const char * getType(){ return "sensor_msgs/MagneticField"; }; + const char * getMD5(){ return "2f3b0b43eed0c9501de0fa3ff89a45aa"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/MultiDOFJointState.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/MultiDOFJointState.h new file mode 100644 index 0000000..ed07797 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/MultiDOFJointState.h @@ -0,0 +1,159 @@ +#ifndef _ROS_sensor_msgs_MultiDOFJointState_h +#define _ROS_sensor_msgs_MultiDOFJointState_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Transform.h" +#include "geometry_msgs/Twist.h" +#include "geometry_msgs/Wrench.h" + +namespace sensor_msgs +{ + + class MultiDOFJointState : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t joint_names_length; + typedef char* _joint_names_type; + _joint_names_type st_joint_names; + _joint_names_type * joint_names; + uint32_t transforms_length; + typedef geometry_msgs::Transform _transforms_type; + _transforms_type st_transforms; + _transforms_type * transforms; + uint32_t twist_length; + typedef geometry_msgs::Twist _twist_type; + _twist_type st_twist; + _twist_type * twist; + uint32_t wrench_length; + typedef geometry_msgs::Wrench _wrench_type; + _wrench_type st_wrench; + _wrench_type * wrench; + + MultiDOFJointState(): + header(), + joint_names_length(0), joint_names(NULL), + transforms_length(0), transforms(NULL), + twist_length(0), twist(NULL), + wrench_length(0), wrench(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->joint_names_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->joint_names_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->joint_names_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->joint_names_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->joint_names_length); + for( uint32_t i = 0; i < joint_names_length; i++){ + uint32_t length_joint_namesi = strlen(this->joint_names[i]); + varToArr(outbuffer + offset, length_joint_namesi); + offset += 4; + memcpy(outbuffer + offset, this->joint_names[i], length_joint_namesi); + offset += length_joint_namesi; + } + *(outbuffer + offset + 0) = (this->transforms_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->transforms_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->transforms_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->transforms_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->transforms_length); + for( uint32_t i = 0; i < transforms_length; i++){ + offset += this->transforms[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->twist_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->twist_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->twist_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->twist_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->twist_length); + for( uint32_t i = 0; i < twist_length; i++){ + offset += this->twist[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->wrench_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->wrench_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->wrench_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->wrench_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->wrench_length); + for( uint32_t i = 0; i < wrench_length; i++){ + offset += this->wrench[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t joint_names_lengthT = ((uint32_t) (*(inbuffer + offset))); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->joint_names_length); + if(joint_names_lengthT > joint_names_length) + this->joint_names = (char**)realloc(this->joint_names, joint_names_lengthT * sizeof(char*)); + joint_names_length = joint_names_lengthT; + for( uint32_t i = 0; i < joint_names_length; i++){ + uint32_t length_st_joint_names; + arrToVar(length_st_joint_names, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_joint_names; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_joint_names-1]=0; + this->st_joint_names = (char *)(inbuffer + offset-1); + offset += length_st_joint_names; + memcpy( &(this->joint_names[i]), &(this->st_joint_names), sizeof(char*)); + } + uint32_t transforms_lengthT = ((uint32_t) (*(inbuffer + offset))); + transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->transforms_length); + if(transforms_lengthT > transforms_length) + this->transforms = (geometry_msgs::Transform*)realloc(this->transforms, transforms_lengthT * sizeof(geometry_msgs::Transform)); + transforms_length = transforms_lengthT; + for( uint32_t i = 0; i < transforms_length; i++){ + offset += this->st_transforms.deserialize(inbuffer + offset); + memcpy( &(this->transforms[i]), &(this->st_transforms), sizeof(geometry_msgs::Transform)); + } + uint32_t twist_lengthT = ((uint32_t) (*(inbuffer + offset))); + twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->twist_length); + if(twist_lengthT > twist_length) + this->twist = (geometry_msgs::Twist*)realloc(this->twist, twist_lengthT * sizeof(geometry_msgs::Twist)); + twist_length = twist_lengthT; + for( uint32_t i = 0; i < twist_length; i++){ + offset += this->st_twist.deserialize(inbuffer + offset); + memcpy( &(this->twist[i]), &(this->st_twist), sizeof(geometry_msgs::Twist)); + } + uint32_t wrench_lengthT = ((uint32_t) (*(inbuffer + offset))); + wrench_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + wrench_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + wrench_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->wrench_length); + if(wrench_lengthT > wrench_length) + this->wrench = (geometry_msgs::Wrench*)realloc(this->wrench, wrench_lengthT * sizeof(geometry_msgs::Wrench)); + wrench_length = wrench_lengthT; + for( uint32_t i = 0; i < wrench_length; i++){ + offset += this->st_wrench.deserialize(inbuffer + offset); + memcpy( &(this->wrench[i]), &(this->st_wrench), sizeof(geometry_msgs::Wrench)); + } + return offset; + } + + const char * getType(){ return "sensor_msgs/MultiDOFJointState"; }; + const char * getMD5(){ return "690f272f0640d2631c305eeb8301e59d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/MultiEchoLaserScan.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/MultiEchoLaserScan.h new file mode 100644 index 0000000..35af2b2 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/MultiEchoLaserScan.h @@ -0,0 +1,263 @@ +#ifndef _ROS_sensor_msgs_MultiEchoLaserScan_h +#define _ROS_sensor_msgs_MultiEchoLaserScan_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "sensor_msgs/LaserEcho.h" + +namespace sensor_msgs +{ + + class MultiEchoLaserScan : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef float _angle_min_type; + _angle_min_type angle_min; + typedef float _angle_max_type; + _angle_max_type angle_max; + typedef float _angle_increment_type; + _angle_increment_type angle_increment; + typedef float _time_increment_type; + _time_increment_type time_increment; + typedef float _scan_time_type; + _scan_time_type scan_time; + typedef float _range_min_type; + _range_min_type range_min; + typedef float _range_max_type; + _range_max_type range_max; + uint32_t ranges_length; + typedef sensor_msgs::LaserEcho _ranges_type; + _ranges_type st_ranges; + _ranges_type * ranges; + uint32_t intensities_length; + typedef sensor_msgs::LaserEcho _intensities_type; + _intensities_type st_intensities; + _intensities_type * intensities; + + MultiEchoLaserScan(): + header(), + angle_min(0), + angle_max(0), + angle_increment(0), + time_increment(0), + scan_time(0), + range_min(0), + range_max(0), + ranges_length(0), ranges(NULL), + intensities_length(0), intensities(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + union { + float real; + uint32_t base; + } u_angle_min; + u_angle_min.real = this->angle_min; + *(outbuffer + offset + 0) = (u_angle_min.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_angle_min.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_angle_min.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_angle_min.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->angle_min); + union { + float real; + uint32_t base; + } u_angle_max; + u_angle_max.real = this->angle_max; + *(outbuffer + offset + 0) = (u_angle_max.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_angle_max.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_angle_max.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_angle_max.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->angle_max); + union { + float real; + uint32_t base; + } u_angle_increment; + u_angle_increment.real = this->angle_increment; + *(outbuffer + offset + 0) = (u_angle_increment.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_angle_increment.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_angle_increment.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_angle_increment.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->angle_increment); + union { + float real; + uint32_t base; + } u_time_increment; + u_time_increment.real = this->time_increment; + *(outbuffer + offset + 0) = (u_time_increment.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_time_increment.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_time_increment.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_time_increment.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->time_increment); + union { + float real; + uint32_t base; + } u_scan_time; + u_scan_time.real = this->scan_time; + *(outbuffer + offset + 0) = (u_scan_time.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_scan_time.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_scan_time.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_scan_time.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->scan_time); + union { + float real; + uint32_t base; + } u_range_min; + u_range_min.real = this->range_min; + *(outbuffer + offset + 0) = (u_range_min.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_range_min.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_range_min.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_range_min.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->range_min); + union { + float real; + uint32_t base; + } u_range_max; + u_range_max.real = this->range_max; + *(outbuffer + offset + 0) = (u_range_max.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_range_max.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_range_max.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_range_max.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->range_max); + *(outbuffer + offset + 0) = (this->ranges_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->ranges_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->ranges_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->ranges_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->ranges_length); + for( uint32_t i = 0; i < ranges_length; i++){ + offset += this->ranges[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->intensities_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->intensities_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->intensities_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->intensities_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->intensities_length); + for( uint32_t i = 0; i < intensities_length; i++){ + offset += this->intensities[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + union { + float real; + uint32_t base; + } u_angle_min; + u_angle_min.base = 0; + u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->angle_min = u_angle_min.real; + offset += sizeof(this->angle_min); + union { + float real; + uint32_t base; + } u_angle_max; + u_angle_max.base = 0; + u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->angle_max = u_angle_max.real; + offset += sizeof(this->angle_max); + union { + float real; + uint32_t base; + } u_angle_increment; + u_angle_increment.base = 0; + u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->angle_increment = u_angle_increment.real; + offset += sizeof(this->angle_increment); + union { + float real; + uint32_t base; + } u_time_increment; + u_time_increment.base = 0; + u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->time_increment = u_time_increment.real; + offset += sizeof(this->time_increment); + union { + float real; + uint32_t base; + } u_scan_time; + u_scan_time.base = 0; + u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->scan_time = u_scan_time.real; + offset += sizeof(this->scan_time); + union { + float real; + uint32_t base; + } u_range_min; + u_range_min.base = 0; + u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->range_min = u_range_min.real; + offset += sizeof(this->range_min); + union { + float real; + uint32_t base; + } u_range_max; + u_range_max.base = 0; + u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->range_max = u_range_max.real; + offset += sizeof(this->range_max); + uint32_t ranges_lengthT = ((uint32_t) (*(inbuffer + offset))); + ranges_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + ranges_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + ranges_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->ranges_length); + if(ranges_lengthT > ranges_length) + this->ranges = (sensor_msgs::LaserEcho*)realloc(this->ranges, ranges_lengthT * sizeof(sensor_msgs::LaserEcho)); + ranges_length = ranges_lengthT; + for( uint32_t i = 0; i < ranges_length; i++){ + offset += this->st_ranges.deserialize(inbuffer + offset); + memcpy( &(this->ranges[i]), &(this->st_ranges), sizeof(sensor_msgs::LaserEcho)); + } + uint32_t intensities_lengthT = ((uint32_t) (*(inbuffer + offset))); + intensities_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + intensities_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + intensities_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->intensities_length); + if(intensities_lengthT > intensities_length) + this->intensities = (sensor_msgs::LaserEcho*)realloc(this->intensities, intensities_lengthT * sizeof(sensor_msgs::LaserEcho)); + intensities_length = intensities_lengthT; + for( uint32_t i = 0; i < intensities_length; i++){ + offset += this->st_intensities.deserialize(inbuffer + offset); + memcpy( &(this->intensities[i]), &(this->st_intensities), sizeof(sensor_msgs::LaserEcho)); + } + return offset; + } + + const char * getType(){ return "sensor_msgs/MultiEchoLaserScan"; }; + const char * getMD5(){ return "6fefb0c6da89d7c8abe4b339f5c2f8fb"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/NavSatFix.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/NavSatFix.h new file mode 100644 index 0000000..9edc7c1 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/NavSatFix.h @@ -0,0 +1,192 @@ +#ifndef _ROS_sensor_msgs_NavSatFix_h +#define _ROS_sensor_msgs_NavSatFix_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "sensor_msgs/NavSatStatus.h" + +namespace sensor_msgs +{ + + class NavSatFix : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef sensor_msgs::NavSatStatus _status_type; + _status_type status; + typedef double _latitude_type; + _latitude_type latitude; + typedef double _longitude_type; + _longitude_type longitude; + typedef double _altitude_type; + _altitude_type altitude; + double position_covariance[9]; + typedef uint8_t _position_covariance_type_type; + _position_covariance_type_type position_covariance_type; + enum { COVARIANCE_TYPE_UNKNOWN = 0 }; + enum { COVARIANCE_TYPE_APPROXIMATED = 1 }; + enum { COVARIANCE_TYPE_DIAGONAL_KNOWN = 2 }; + enum { COVARIANCE_TYPE_KNOWN = 3 }; + + NavSatFix(): + header(), + status(), + latitude(0), + longitude(0), + altitude(0), + position_covariance(), + position_covariance_type(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + union { + double real; + uint64_t base; + } u_latitude; + u_latitude.real = this->latitude; + *(outbuffer + offset + 0) = (u_latitude.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_latitude.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_latitude.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_latitude.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_latitude.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_latitude.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_latitude.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_latitude.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->latitude); + union { + double real; + uint64_t base; + } u_longitude; + u_longitude.real = this->longitude; + *(outbuffer + offset + 0) = (u_longitude.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_longitude.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_longitude.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_longitude.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_longitude.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_longitude.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_longitude.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_longitude.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->longitude); + union { + double real; + uint64_t base; + } u_altitude; + u_altitude.real = this->altitude; + *(outbuffer + offset + 0) = (u_altitude.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_altitude.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_altitude.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_altitude.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_altitude.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_altitude.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_altitude.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_altitude.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->altitude); + for( uint32_t i = 0; i < 9; i++){ + union { + double real; + uint64_t base; + } u_position_covariancei; + u_position_covariancei.real = this->position_covariance[i]; + *(outbuffer + offset + 0) = (u_position_covariancei.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_position_covariancei.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_position_covariancei.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_position_covariancei.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_position_covariancei.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_position_covariancei.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_position_covariancei.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_position_covariancei.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->position_covariance[i]); + } + *(outbuffer + offset + 0) = (this->position_covariance_type >> (8 * 0)) & 0xFF; + offset += sizeof(this->position_covariance_type); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + union { + double real; + uint64_t base; + } u_latitude; + u_latitude.base = 0; + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->latitude = u_latitude.real; + offset += sizeof(this->latitude); + union { + double real; + uint64_t base; + } u_longitude; + u_longitude.base = 0; + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->longitude = u_longitude.real; + offset += sizeof(this->longitude); + union { + double real; + uint64_t base; + } u_altitude; + u_altitude.base = 0; + u_altitude.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_altitude.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_altitude.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_altitude.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_altitude.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_altitude.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_altitude.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_altitude.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->altitude = u_altitude.real; + offset += sizeof(this->altitude); + for( uint32_t i = 0; i < 9; i++){ + union { + double real; + uint64_t base; + } u_position_covariancei; + u_position_covariancei.base = 0; + u_position_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_position_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_position_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_position_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_position_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_position_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_position_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_position_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->position_covariance[i] = u_position_covariancei.real; + offset += sizeof(this->position_covariance[i]); + } + this->position_covariance_type = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->position_covariance_type); + return offset; + } + + const char * getType(){ return "sensor_msgs/NavSatFix"; }; + const char * getMD5(){ return "2d3a8cd499b9b4a0249fb98fd05cfa48"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/NavSatStatus.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/NavSatStatus.h new file mode 100644 index 0000000..79d8abd --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/NavSatStatus.h @@ -0,0 +1,73 @@ +#ifndef _ROS_sensor_msgs_NavSatStatus_h +#define _ROS_sensor_msgs_NavSatStatus_h + +#include +#include +#include +#include "ros/msg.h" + +namespace sensor_msgs +{ + + class NavSatStatus : public ros::Msg + { + public: + typedef int8_t _status_type; + _status_type status; + typedef uint16_t _service_type; + _service_type service; + enum { STATUS_NO_FIX = -1 }; + enum { STATUS_FIX = 0 }; + enum { STATUS_SBAS_FIX = 1 }; + enum { STATUS_GBAS_FIX = 2 }; + enum { SERVICE_GPS = 1 }; + enum { SERVICE_GLONASS = 2 }; + enum { SERVICE_COMPASS = 4 }; + enum { SERVICE_GALILEO = 8 }; + + NavSatStatus(): + status(0), + service(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int8_t real; + uint8_t base; + } u_status; + u_status.real = this->status; + *(outbuffer + offset + 0) = (u_status.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->status); + *(outbuffer + offset + 0) = (this->service >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->service >> (8 * 1)) & 0xFF; + offset += sizeof(this->service); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int8_t real; + uint8_t base; + } u_status; + u_status.base = 0; + u_status.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->status = u_status.real; + offset += sizeof(this->status); + this->service = ((uint16_t) (*(inbuffer + offset))); + this->service |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->service); + return offset; + } + + const char * getType(){ return "sensor_msgs/NavSatStatus"; }; + const char * getMD5(){ return "331cdbddfa4bc96ffc3b9ad98900a54c"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/PointCloud.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/PointCloud.h new file mode 100644 index 0000000..f56e8d7 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/PointCloud.h @@ -0,0 +1,96 @@ +#ifndef _ROS_sensor_msgs_PointCloud_h +#define _ROS_sensor_msgs_PointCloud_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Point32.h" +#include "sensor_msgs/ChannelFloat32.h" + +namespace sensor_msgs +{ + + class PointCloud : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t points_length; + typedef geometry_msgs::Point32 _points_type; + _points_type st_points; + _points_type * points; + uint32_t channels_length; + typedef sensor_msgs::ChannelFloat32 _channels_type; + _channels_type st_channels; + _channels_type * channels; + + PointCloud(): + header(), + points_length(0), points(NULL), + channels_length(0), channels(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->points_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->points_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->points_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->points_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->points_length); + for( uint32_t i = 0; i < points_length; i++){ + offset += this->points[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->channels_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->channels_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->channels_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->channels_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->channels_length); + for( uint32_t i = 0; i < channels_length; i++){ + offset += this->channels[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t points_lengthT = ((uint32_t) (*(inbuffer + offset))); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->points_length); + if(points_lengthT > points_length) + this->points = (geometry_msgs::Point32*)realloc(this->points, points_lengthT * sizeof(geometry_msgs::Point32)); + points_length = points_lengthT; + for( uint32_t i = 0; i < points_length; i++){ + offset += this->st_points.deserialize(inbuffer + offset); + memcpy( &(this->points[i]), &(this->st_points), sizeof(geometry_msgs::Point32)); + } + uint32_t channels_lengthT = ((uint32_t) (*(inbuffer + offset))); + channels_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + channels_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + channels_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->channels_length); + if(channels_lengthT > channels_length) + this->channels = (sensor_msgs::ChannelFloat32*)realloc(this->channels, channels_lengthT * sizeof(sensor_msgs::ChannelFloat32)); + channels_length = channels_lengthT; + for( uint32_t i = 0; i < channels_length; i++){ + offset += this->st_channels.deserialize(inbuffer + offset); + memcpy( &(this->channels[i]), &(this->st_channels), sizeof(sensor_msgs::ChannelFloat32)); + } + return offset; + } + + const char * getType(){ return "sensor_msgs/PointCloud"; }; + const char * getMD5(){ return "d8e9c3f5afbdd8a130fd1d2763945fca"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/PointCloud2.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/PointCloud2.h new file mode 100644 index 0000000..c545de1 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/PointCloud2.h @@ -0,0 +1,185 @@ +#ifndef _ROS_sensor_msgs_PointCloud2_h +#define _ROS_sensor_msgs_PointCloud2_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "sensor_msgs/PointField.h" + +namespace sensor_msgs +{ + + class PointCloud2 : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef uint32_t _height_type; + _height_type height; + typedef uint32_t _width_type; + _width_type width; + uint32_t fields_length; + typedef sensor_msgs::PointField _fields_type; + _fields_type st_fields; + _fields_type * fields; + typedef bool _is_bigendian_type; + _is_bigendian_type is_bigendian; + typedef uint32_t _point_step_type; + _point_step_type point_step; + typedef uint32_t _row_step_type; + _row_step_type row_step; + uint32_t data_length; + typedef uint8_t _data_type; + _data_type st_data; + _data_type * data; + typedef bool _is_dense_type; + _is_dense_type is_dense; + + PointCloud2(): + header(), + height(0), + width(0), + fields_length(0), fields(NULL), + is_bigendian(0), + point_step(0), + row_step(0), + data_length(0), data(NULL), + is_dense(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->height >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->height >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->height >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->height >> (8 * 3)) & 0xFF; + offset += sizeof(this->height); + *(outbuffer + offset + 0) = (this->width >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->width >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->width >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->width >> (8 * 3)) & 0xFF; + offset += sizeof(this->width); + *(outbuffer + offset + 0) = (this->fields_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->fields_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->fields_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->fields_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->fields_length); + for( uint32_t i = 0; i < fields_length; i++){ + offset += this->fields[i].serialize(outbuffer + offset); + } + union { + bool real; + uint8_t base; + } u_is_bigendian; + u_is_bigendian.real = this->is_bigendian; + *(outbuffer + offset + 0) = (u_is_bigendian.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->is_bigendian); + *(outbuffer + offset + 0) = (this->point_step >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->point_step >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->point_step >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->point_step >> (8 * 3)) & 0xFF; + offset += sizeof(this->point_step); + *(outbuffer + offset + 0) = (this->row_step >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->row_step >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->row_step >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->row_step >> (8 * 3)) & 0xFF; + offset += sizeof(this->row_step); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF; + offset += sizeof(this->data[i]); + } + union { + bool real; + uint8_t base; + } u_is_dense; + u_is_dense.real = this->is_dense; + *(outbuffer + offset + 0) = (u_is_dense.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->is_dense); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + this->height = ((uint32_t) (*(inbuffer + offset))); + this->height |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->height |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->height |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->height); + this->width = ((uint32_t) (*(inbuffer + offset))); + this->width |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->width |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->width |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->width); + uint32_t fields_lengthT = ((uint32_t) (*(inbuffer + offset))); + fields_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + fields_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + fields_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->fields_length); + if(fields_lengthT > fields_length) + this->fields = (sensor_msgs::PointField*)realloc(this->fields, fields_lengthT * sizeof(sensor_msgs::PointField)); + fields_length = fields_lengthT; + for( uint32_t i = 0; i < fields_length; i++){ + offset += this->st_fields.deserialize(inbuffer + offset); + memcpy( &(this->fields[i]), &(this->st_fields), sizeof(sensor_msgs::PointField)); + } + union { + bool real; + uint8_t base; + } u_is_bigendian; + u_is_bigendian.base = 0; + u_is_bigendian.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->is_bigendian = u_is_bigendian.real; + offset += sizeof(this->is_bigendian); + this->point_step = ((uint32_t) (*(inbuffer + offset))); + this->point_step |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->point_step |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->point_step |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->point_step); + this->row_step = ((uint32_t) (*(inbuffer + offset))); + this->row_step |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->row_step |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->row_step |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->row_step); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (uint8_t*)realloc(this->data, data_lengthT * sizeof(uint8_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + this->st_data = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(uint8_t)); + } + union { + bool real; + uint8_t base; + } u_is_dense; + u_is_dense.base = 0; + u_is_dense.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->is_dense = u_is_dense.real; + offset += sizeof(this->is_dense); + return offset; + } + + const char * getType(){ return "sensor_msgs/PointCloud2"; }; + const char * getMD5(){ return "1158d486dd51d683ce2f1be655c3c181"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/PointField.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/PointField.h new file mode 100644 index 0000000..7ad0cc4 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/PointField.h @@ -0,0 +1,96 @@ +#ifndef _ROS_sensor_msgs_PointField_h +#define _ROS_sensor_msgs_PointField_h + +#include +#include +#include +#include "ros/msg.h" + +namespace sensor_msgs +{ + + class PointField : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef uint32_t _offset_type; + _offset_type offset; + typedef uint8_t _datatype_type; + _datatype_type datatype; + typedef uint32_t _count_type; + _count_type count; + enum { INT8 = 1 }; + enum { UINT8 = 2 }; + enum { INT16 = 3 }; + enum { UINT16 = 4 }; + enum { INT32 = 5 }; + enum { UINT32 = 6 }; + enum { FLOAT32 = 7 }; + enum { FLOAT64 = 8 }; + + PointField(): + name(""), + offset(0), + datatype(0), + count(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + *(outbuffer + offset + 0) = (this->offset >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->offset >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->offset >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->offset >> (8 * 3)) & 0xFF; + offset += sizeof(this->offset); + *(outbuffer + offset + 0) = (this->datatype >> (8 * 0)) & 0xFF; + offset += sizeof(this->datatype); + *(outbuffer + offset + 0) = (this->count >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->count >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->count >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->count >> (8 * 3)) & 0xFF; + offset += sizeof(this->count); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + this->offset = ((uint32_t) (*(inbuffer + offset))); + this->offset |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->offset |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->offset |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->offset); + this->datatype = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->datatype); + this->count = ((uint32_t) (*(inbuffer + offset))); + this->count |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->count |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->count |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->count); + return offset; + } + + const char * getType(){ return "sensor_msgs/PointField"; }; + const char * getMD5(){ return "268eacb2962780ceac86cbd17e328150"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/Range.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/Range.h new file mode 100644 index 0000000..bfa827e --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/Range.h @@ -0,0 +1,149 @@ +#ifndef _ROS_sensor_msgs_Range_h +#define _ROS_sensor_msgs_Range_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace sensor_msgs +{ + + class Range : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef uint8_t _radiation_type_type; + _radiation_type_type radiation_type; + typedef float _field_of_view_type; + _field_of_view_type field_of_view; + typedef float _min_range_type; + _min_range_type min_range; + typedef float _max_range_type; + _max_range_type max_range; + typedef float _range_type; + _range_type range; + enum { ULTRASOUND = 0 }; + enum { INFRARED = 1 }; + + Range(): + header(), + radiation_type(0), + field_of_view(0), + min_range(0), + max_range(0), + range(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->radiation_type >> (8 * 0)) & 0xFF; + offset += sizeof(this->radiation_type); + union { + float real; + uint32_t base; + } u_field_of_view; + u_field_of_view.real = this->field_of_view; + *(outbuffer + offset + 0) = (u_field_of_view.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_field_of_view.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_field_of_view.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_field_of_view.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->field_of_view); + union { + float real; + uint32_t base; + } u_min_range; + u_min_range.real = this->min_range; + *(outbuffer + offset + 0) = (u_min_range.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_min_range.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_min_range.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_min_range.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->min_range); + union { + float real; + uint32_t base; + } u_max_range; + u_max_range.real = this->max_range; + *(outbuffer + offset + 0) = (u_max_range.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_max_range.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_max_range.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_max_range.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->max_range); + union { + float real; + uint32_t base; + } u_range; + u_range.real = this->range; + *(outbuffer + offset + 0) = (u_range.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_range.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_range.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_range.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->range); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + this->radiation_type = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->radiation_type); + union { + float real; + uint32_t base; + } u_field_of_view; + u_field_of_view.base = 0; + u_field_of_view.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_field_of_view.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_field_of_view.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_field_of_view.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->field_of_view = u_field_of_view.real; + offset += sizeof(this->field_of_view); + union { + float real; + uint32_t base; + } u_min_range; + u_min_range.base = 0; + u_min_range.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_min_range.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_min_range.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_min_range.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->min_range = u_min_range.real; + offset += sizeof(this->min_range); + union { + float real; + uint32_t base; + } u_max_range; + u_max_range.base = 0; + u_max_range.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_max_range.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_max_range.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_max_range.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->max_range = u_max_range.real; + offset += sizeof(this->max_range); + union { + float real; + uint32_t base; + } u_range; + u_range.base = 0; + u_range.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_range.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_range.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_range.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->range = u_range.real; + offset += sizeof(this->range); + return offset; + } + + const char * getType(){ return "sensor_msgs/Range"; }; + const char * getMD5(){ return "c005c34273dc426c67a020a87bc24148"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/RegionOfInterest.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/RegionOfInterest.h new file mode 100644 index 0000000..ea0c663 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/RegionOfInterest.h @@ -0,0 +1,108 @@ +#ifndef _ROS_sensor_msgs_RegionOfInterest_h +#define _ROS_sensor_msgs_RegionOfInterest_h + +#include +#include +#include +#include "ros/msg.h" + +namespace sensor_msgs +{ + + class RegionOfInterest : public ros::Msg + { + public: + typedef uint32_t _x_offset_type; + _x_offset_type x_offset; + typedef uint32_t _y_offset_type; + _y_offset_type y_offset; + typedef uint32_t _height_type; + _height_type height; + typedef uint32_t _width_type; + _width_type width; + typedef bool _do_rectify_type; + _do_rectify_type do_rectify; + + RegionOfInterest(): + x_offset(0), + y_offset(0), + height(0), + width(0), + do_rectify(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->x_offset >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->x_offset >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->x_offset >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->x_offset >> (8 * 3)) & 0xFF; + offset += sizeof(this->x_offset); + *(outbuffer + offset + 0) = (this->y_offset >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->y_offset >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->y_offset >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->y_offset >> (8 * 3)) & 0xFF; + offset += sizeof(this->y_offset); + *(outbuffer + offset + 0) = (this->height >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->height >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->height >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->height >> (8 * 3)) & 0xFF; + offset += sizeof(this->height); + *(outbuffer + offset + 0) = (this->width >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->width >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->width >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->width >> (8 * 3)) & 0xFF; + offset += sizeof(this->width); + union { + bool real; + uint8_t base; + } u_do_rectify; + u_do_rectify.real = this->do_rectify; + *(outbuffer + offset + 0) = (u_do_rectify.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->do_rectify); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->x_offset = ((uint32_t) (*(inbuffer + offset))); + this->x_offset |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->x_offset |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->x_offset |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->x_offset); + this->y_offset = ((uint32_t) (*(inbuffer + offset))); + this->y_offset |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->y_offset |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->y_offset |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->y_offset); + this->height = ((uint32_t) (*(inbuffer + offset))); + this->height |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->height |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->height |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->height); + this->width = ((uint32_t) (*(inbuffer + offset))); + this->width |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->width |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->width |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->width); + union { + bool real; + uint8_t base; + } u_do_rectify; + u_do_rectify.base = 0; + u_do_rectify.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->do_rectify = u_do_rectify.real; + offset += sizeof(this->do_rectify); + return offset; + } + + const char * getType(){ return "sensor_msgs/RegionOfInterest"; }; + const char * getMD5(){ return "bdb633039d588fcccb441a4d43ccfe09"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/RelativeHumidity.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/RelativeHumidity.h new file mode 100644 index 0000000..a596f88 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/RelativeHumidity.h @@ -0,0 +1,108 @@ +#ifndef _ROS_sensor_msgs_RelativeHumidity_h +#define _ROS_sensor_msgs_RelativeHumidity_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace sensor_msgs +{ + + class RelativeHumidity : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef double _relative_humidity_type; + _relative_humidity_type relative_humidity; + typedef double _variance_type; + _variance_type variance; + + RelativeHumidity(): + header(), + relative_humidity(0), + variance(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + union { + double real; + uint64_t base; + } u_relative_humidity; + u_relative_humidity.real = this->relative_humidity; + *(outbuffer + offset + 0) = (u_relative_humidity.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_relative_humidity.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_relative_humidity.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_relative_humidity.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_relative_humidity.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_relative_humidity.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_relative_humidity.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_relative_humidity.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->relative_humidity); + union { + double real; + uint64_t base; + } u_variance; + u_variance.real = this->variance; + *(outbuffer + offset + 0) = (u_variance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_variance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_variance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_variance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_variance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_variance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_variance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_variance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->variance); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + union { + double real; + uint64_t base; + } u_relative_humidity; + u_relative_humidity.base = 0; + u_relative_humidity.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_relative_humidity.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_relative_humidity.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_relative_humidity.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_relative_humidity.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_relative_humidity.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_relative_humidity.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_relative_humidity.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->relative_humidity = u_relative_humidity.real; + offset += sizeof(this->relative_humidity); + union { + double real; + uint64_t base; + } u_variance; + u_variance.base = 0; + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->variance = u_variance.real; + offset += sizeof(this->variance); + return offset; + } + + const char * getType(){ return "sensor_msgs/RelativeHumidity"; }; + const char * getMD5(){ return "8730015b05955b7e992ce29a2678d90f"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/SetCameraInfo.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/SetCameraInfo.h new file mode 100644 index 0000000..3f838fb --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/SetCameraInfo.h @@ -0,0 +1,111 @@ +#ifndef _ROS_SERVICE_SetCameraInfo_h +#define _ROS_SERVICE_SetCameraInfo_h +#include +#include +#include +#include "ros/msg.h" +#include "sensor_msgs/CameraInfo.h" + +namespace sensor_msgs +{ + +static const char SETCAMERAINFO[] = "sensor_msgs/SetCameraInfo"; + + class SetCameraInfoRequest : public ros::Msg + { + public: + typedef sensor_msgs::CameraInfo _camera_info_type; + _camera_info_type camera_info; + + SetCameraInfoRequest(): + camera_info() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->camera_info.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->camera_info.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return SETCAMERAINFO; }; + const char * getMD5(){ return "ee34be01fdeee563d0d99cd594d5581d"; }; + + }; + + class SetCameraInfoResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + SetCameraInfoResponse(): + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return SETCAMERAINFO; }; + const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; }; + + }; + + class SetCameraInfo { + public: + typedef SetCameraInfoRequest Request; + typedef SetCameraInfoResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/Temperature.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/Temperature.h new file mode 100644 index 0000000..4308487 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/Temperature.h @@ -0,0 +1,108 @@ +#ifndef _ROS_sensor_msgs_Temperature_h +#define _ROS_sensor_msgs_Temperature_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace sensor_msgs +{ + + class Temperature : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef double _temperature_type; + _temperature_type temperature; + typedef double _variance_type; + _variance_type variance; + + Temperature(): + header(), + temperature(0), + variance(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + union { + double real; + uint64_t base; + } u_temperature; + u_temperature.real = this->temperature; + *(outbuffer + offset + 0) = (u_temperature.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_temperature.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_temperature.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_temperature.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_temperature.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_temperature.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_temperature.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_temperature.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->temperature); + union { + double real; + uint64_t base; + } u_variance; + u_variance.real = this->variance; + *(outbuffer + offset + 0) = (u_variance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_variance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_variance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_variance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_variance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_variance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_variance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_variance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->variance); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + union { + double real; + uint64_t base; + } u_temperature; + u_temperature.base = 0; + u_temperature.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_temperature.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_temperature.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_temperature.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_temperature.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_temperature.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_temperature.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_temperature.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->temperature = u_temperature.real; + offset += sizeof(this->temperature); + union { + double real; + uint64_t base; + } u_variance; + u_variance.base = 0; + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->variance = u_variance.real; + offset += sizeof(this->variance); + return offset; + } + + const char * getType(){ return "sensor_msgs/Temperature"; }; + const char * getMD5(){ return "ff71b307acdbe7c871a5a6d7ed359100"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/TimeReference.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/TimeReference.h new file mode 100644 index 0000000..ed81b28 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/sensor_msgs/TimeReference.h @@ -0,0 +1,85 @@ +#ifndef _ROS_sensor_msgs_TimeReference_h +#define _ROS_sensor_msgs_TimeReference_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "ros/time.h" + +namespace sensor_msgs +{ + + class TimeReference : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef ros::Time _time_ref_type; + _time_ref_type time_ref; + typedef const char* _source_type; + _source_type source; + + TimeReference(): + header(), + time_ref(), + source("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->time_ref.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->time_ref.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->time_ref.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->time_ref.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->time_ref.sec); + *(outbuffer + offset + 0) = (this->time_ref.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->time_ref.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->time_ref.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->time_ref.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->time_ref.nsec); + uint32_t length_source = strlen(this->source); + varToArr(outbuffer + offset, length_source); + offset += 4; + memcpy(outbuffer + offset, this->source, length_source); + offset += length_source; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + this->time_ref.sec = ((uint32_t) (*(inbuffer + offset))); + this->time_ref.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->time_ref.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->time_ref.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->time_ref.sec); + this->time_ref.nsec = ((uint32_t) (*(inbuffer + offset))); + this->time_ref.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->time_ref.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->time_ref.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->time_ref.nsec); + uint32_t length_source; + arrToVar(length_source, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_source; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_source-1]=0; + this->source = (char *)(inbuffer + offset-1); + offset += length_source; + return offset; + } + + const char * getType(){ return "sensor_msgs/TimeReference"; }; + const char * getMD5(){ return "fded64a0265108ba86c3d38fb11c0c16"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/shape_msgs/Mesh.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/shape_msgs/Mesh.h new file mode 100644 index 0000000..3599765 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/shape_msgs/Mesh.h @@ -0,0 +1,90 @@ +#ifndef _ROS_shape_msgs_Mesh_h +#define _ROS_shape_msgs_Mesh_h + +#include +#include +#include +#include "ros/msg.h" +#include "shape_msgs/MeshTriangle.h" +#include "geometry_msgs/Point.h" + +namespace shape_msgs +{ + + class Mesh : public ros::Msg + { + public: + uint32_t triangles_length; + typedef shape_msgs::MeshTriangle _triangles_type; + _triangles_type st_triangles; + _triangles_type * triangles; + uint32_t vertices_length; + typedef geometry_msgs::Point _vertices_type; + _vertices_type st_vertices; + _vertices_type * vertices; + + Mesh(): + triangles_length(0), triangles(NULL), + vertices_length(0), vertices(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->triangles_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->triangles_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->triangles_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->triangles_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->triangles_length); + for( uint32_t i = 0; i < triangles_length; i++){ + offset += this->triangles[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->vertices_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->vertices_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->vertices_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->vertices_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->vertices_length); + for( uint32_t i = 0; i < vertices_length; i++){ + offset += this->vertices[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t triangles_lengthT = ((uint32_t) (*(inbuffer + offset))); + triangles_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + triangles_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + triangles_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->triangles_length); + if(triangles_lengthT > triangles_length) + this->triangles = (shape_msgs::MeshTriangle*)realloc(this->triangles, triangles_lengthT * sizeof(shape_msgs::MeshTriangle)); + triangles_length = triangles_lengthT; + for( uint32_t i = 0; i < triangles_length; i++){ + offset += this->st_triangles.deserialize(inbuffer + offset); + memcpy( &(this->triangles[i]), &(this->st_triangles), sizeof(shape_msgs::MeshTriangle)); + } + uint32_t vertices_lengthT = ((uint32_t) (*(inbuffer + offset))); + vertices_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + vertices_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + vertices_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->vertices_length); + if(vertices_lengthT > vertices_length) + this->vertices = (geometry_msgs::Point*)realloc(this->vertices, vertices_lengthT * sizeof(geometry_msgs::Point)); + vertices_length = vertices_lengthT; + for( uint32_t i = 0; i < vertices_length; i++){ + offset += this->st_vertices.deserialize(inbuffer + offset); + memcpy( &(this->vertices[i]), &(this->st_vertices), sizeof(geometry_msgs::Point)); + } + return offset; + } + + const char * getType(){ return "shape_msgs/Mesh"; }; + const char * getMD5(){ return "1ffdae9486cd3316a121c578b47a85cc"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/shape_msgs/MeshTriangle.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/shape_msgs/MeshTriangle.h new file mode 100644 index 0000000..b4aad17 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/shape_msgs/MeshTriangle.h @@ -0,0 +1,54 @@ +#ifndef _ROS_shape_msgs_MeshTriangle_h +#define _ROS_shape_msgs_MeshTriangle_h + +#include +#include +#include +#include "ros/msg.h" + +namespace shape_msgs +{ + + class MeshTriangle : public ros::Msg + { + public: + uint32_t vertex_indices[3]; + + MeshTriangle(): + vertex_indices() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + for( uint32_t i = 0; i < 3; i++){ + *(outbuffer + offset + 0) = (this->vertex_indices[i] >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->vertex_indices[i] >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->vertex_indices[i] >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->vertex_indices[i] >> (8 * 3)) & 0xFF; + offset += sizeof(this->vertex_indices[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + for( uint32_t i = 0; i < 3; i++){ + this->vertex_indices[i] = ((uint32_t) (*(inbuffer + offset))); + this->vertex_indices[i] |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->vertex_indices[i] |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->vertex_indices[i] |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->vertex_indices[i]); + } + return offset; + } + + const char * getType(){ return "shape_msgs/MeshTriangle"; }; + const char * getMD5(){ return "23688b2e6d2de3d32fe8af104a903253"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/shape_msgs/Plane.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/shape_msgs/Plane.h new file mode 100644 index 0000000..6f4c332 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/shape_msgs/Plane.h @@ -0,0 +1,73 @@ +#ifndef _ROS_shape_msgs_Plane_h +#define _ROS_shape_msgs_Plane_h + +#include +#include +#include +#include "ros/msg.h" + +namespace shape_msgs +{ + + class Plane : public ros::Msg + { + public: + double coef[4]; + + Plane(): + coef() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + for( uint32_t i = 0; i < 4; i++){ + union { + double real; + uint64_t base; + } u_coefi; + u_coefi.real = this->coef[i]; + *(outbuffer + offset + 0) = (u_coefi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_coefi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_coefi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_coefi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_coefi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_coefi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_coefi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_coefi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->coef[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + for( uint32_t i = 0; i < 4; i++){ + union { + double real; + uint64_t base; + } u_coefi; + u_coefi.base = 0; + u_coefi.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_coefi.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_coefi.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_coefi.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_coefi.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_coefi.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_coefi.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_coefi.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->coef[i] = u_coefi.real; + offset += sizeof(this->coef[i]); + } + return offset; + } + + const char * getType(){ return "shape_msgs/Plane"; }; + const char * getMD5(){ return "2c1b92ed8f31492f8e73f6a4a44ca796"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/shape_msgs/SolidPrimitive.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/shape_msgs/SolidPrimitive.h new file mode 100644 index 0000000..4751ad8 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/shape_msgs/SolidPrimitive.h @@ -0,0 +1,109 @@ +#ifndef _ROS_shape_msgs_SolidPrimitive_h +#define _ROS_shape_msgs_SolidPrimitive_h + +#include +#include +#include +#include "ros/msg.h" + +namespace shape_msgs +{ + + class SolidPrimitive : public ros::Msg + { + public: + typedef uint8_t _type_type; + _type_type type; + uint32_t dimensions_length; + typedef double _dimensions_type; + _dimensions_type st_dimensions; + _dimensions_type * dimensions; + enum { BOX = 1 }; + enum { SPHERE = 2 }; + enum { CYLINDER = 3 }; + enum { CONE = 4 }; + enum { BOX_X = 0 }; + enum { BOX_Y = 1 }; + enum { BOX_Z = 2 }; + enum { SPHERE_RADIUS = 0 }; + enum { CYLINDER_HEIGHT = 0 }; + enum { CYLINDER_RADIUS = 1 }; + enum { CONE_HEIGHT = 0 }; + enum { CONE_RADIUS = 1 }; + + SolidPrimitive(): + type(0), + dimensions_length(0), dimensions(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->type >> (8 * 0)) & 0xFF; + offset += sizeof(this->type); + *(outbuffer + offset + 0) = (this->dimensions_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->dimensions_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->dimensions_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->dimensions_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->dimensions_length); + for( uint32_t i = 0; i < dimensions_length; i++){ + union { + double real; + uint64_t base; + } u_dimensionsi; + u_dimensionsi.real = this->dimensions[i]; + *(outbuffer + offset + 0) = (u_dimensionsi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_dimensionsi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_dimensionsi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_dimensionsi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_dimensionsi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_dimensionsi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_dimensionsi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_dimensionsi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->dimensions[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->type = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->type); + uint32_t dimensions_lengthT = ((uint32_t) (*(inbuffer + offset))); + dimensions_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + dimensions_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + dimensions_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->dimensions_length); + if(dimensions_lengthT > dimensions_length) + this->dimensions = (double*)realloc(this->dimensions, dimensions_lengthT * sizeof(double)); + dimensions_length = dimensions_lengthT; + for( uint32_t i = 0; i < dimensions_length; i++){ + union { + double real; + uint64_t base; + } u_st_dimensions; + u_st_dimensions.base = 0; + u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_dimensions = u_st_dimensions.real; + offset += sizeof(this->st_dimensions); + memcpy( &(this->dimensions[i]), &(this->st_dimensions), sizeof(double)); + } + return offset; + } + + const char * getType(){ return "shape_msgs/SolidPrimitive"; }; + const char * getMD5(){ return "d8f8cbc74c5ff283fca29569ccefb45d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/smach_msgs/SmachContainerInitialStatusCmd.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/smach_msgs/SmachContainerInitialStatusCmd.h new file mode 100644 index 0000000..bd1e131 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/smach_msgs/SmachContainerInitialStatusCmd.h @@ -0,0 +1,109 @@ +#ifndef _ROS_smach_msgs_SmachContainerInitialStatusCmd_h +#define _ROS_smach_msgs_SmachContainerInitialStatusCmd_h + +#include +#include +#include +#include "ros/msg.h" + +namespace smach_msgs +{ + + class SmachContainerInitialStatusCmd : public ros::Msg + { + public: + typedef const char* _path_type; + _path_type path; + uint32_t initial_states_length; + typedef char* _initial_states_type; + _initial_states_type st_initial_states; + _initial_states_type * initial_states; + typedef const char* _local_data_type; + _local_data_type local_data; + + SmachContainerInitialStatusCmd(): + path(""), + initial_states_length(0), initial_states(NULL), + local_data("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_path = strlen(this->path); + varToArr(outbuffer + offset, length_path); + offset += 4; + memcpy(outbuffer + offset, this->path, length_path); + offset += length_path; + *(outbuffer + offset + 0) = (this->initial_states_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->initial_states_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->initial_states_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->initial_states_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->initial_states_length); + for( uint32_t i = 0; i < initial_states_length; i++){ + uint32_t length_initial_statesi = strlen(this->initial_states[i]); + varToArr(outbuffer + offset, length_initial_statesi); + offset += 4; + memcpy(outbuffer + offset, this->initial_states[i], length_initial_statesi); + offset += length_initial_statesi; + } + uint32_t length_local_data = strlen(this->local_data); + varToArr(outbuffer + offset, length_local_data); + offset += 4; + memcpy(outbuffer + offset, this->local_data, length_local_data); + offset += length_local_data; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_path; + arrToVar(length_path, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_path; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_path-1]=0; + this->path = (char *)(inbuffer + offset-1); + offset += length_path; + uint32_t initial_states_lengthT = ((uint32_t) (*(inbuffer + offset))); + initial_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + initial_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + initial_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->initial_states_length); + if(initial_states_lengthT > initial_states_length) + this->initial_states = (char**)realloc(this->initial_states, initial_states_lengthT * sizeof(char*)); + initial_states_length = initial_states_lengthT; + for( uint32_t i = 0; i < initial_states_length; i++){ + uint32_t length_st_initial_states; + arrToVar(length_st_initial_states, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_initial_states; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_initial_states-1]=0; + this->st_initial_states = (char *)(inbuffer + offset-1); + offset += length_st_initial_states; + memcpy( &(this->initial_states[i]), &(this->st_initial_states), sizeof(char*)); + } + uint32_t length_local_data; + arrToVar(length_local_data, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_local_data; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_local_data-1]=0; + this->local_data = (char *)(inbuffer + offset-1); + offset += length_local_data; + return offset; + } + + const char * getType(){ return "smach_msgs/SmachContainerInitialStatusCmd"; }; + const char * getMD5(){ return "45f8cf31fc29b829db77f23001f788d6"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/smach_msgs/SmachContainerStatus.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/smach_msgs/SmachContainerStatus.h new file mode 100644 index 0000000..8c54da3 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/smach_msgs/SmachContainerStatus.h @@ -0,0 +1,169 @@ +#ifndef _ROS_smach_msgs_SmachContainerStatus_h +#define _ROS_smach_msgs_SmachContainerStatus_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace smach_msgs +{ + + class SmachContainerStatus : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef const char* _path_type; + _path_type path; + uint32_t initial_states_length; + typedef char* _initial_states_type; + _initial_states_type st_initial_states; + _initial_states_type * initial_states; + uint32_t active_states_length; + typedef char* _active_states_type; + _active_states_type st_active_states; + _active_states_type * active_states; + typedef const char* _local_data_type; + _local_data_type local_data; + typedef const char* _info_type; + _info_type info; + + SmachContainerStatus(): + header(), + path(""), + initial_states_length(0), initial_states(NULL), + active_states_length(0), active_states(NULL), + local_data(""), + info("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + uint32_t length_path = strlen(this->path); + varToArr(outbuffer + offset, length_path); + offset += 4; + memcpy(outbuffer + offset, this->path, length_path); + offset += length_path; + *(outbuffer + offset + 0) = (this->initial_states_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->initial_states_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->initial_states_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->initial_states_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->initial_states_length); + for( uint32_t i = 0; i < initial_states_length; i++){ + uint32_t length_initial_statesi = strlen(this->initial_states[i]); + varToArr(outbuffer + offset, length_initial_statesi); + offset += 4; + memcpy(outbuffer + offset, this->initial_states[i], length_initial_statesi); + offset += length_initial_statesi; + } + *(outbuffer + offset + 0) = (this->active_states_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->active_states_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->active_states_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->active_states_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->active_states_length); + for( uint32_t i = 0; i < active_states_length; i++){ + uint32_t length_active_statesi = strlen(this->active_states[i]); + varToArr(outbuffer + offset, length_active_statesi); + offset += 4; + memcpy(outbuffer + offset, this->active_states[i], length_active_statesi); + offset += length_active_statesi; + } + uint32_t length_local_data = strlen(this->local_data); + varToArr(outbuffer + offset, length_local_data); + offset += 4; + memcpy(outbuffer + offset, this->local_data, length_local_data); + offset += length_local_data; + uint32_t length_info = strlen(this->info); + varToArr(outbuffer + offset, length_info); + offset += 4; + memcpy(outbuffer + offset, this->info, length_info); + offset += length_info; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t length_path; + arrToVar(length_path, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_path; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_path-1]=0; + this->path = (char *)(inbuffer + offset-1); + offset += length_path; + uint32_t initial_states_lengthT = ((uint32_t) (*(inbuffer + offset))); + initial_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + initial_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + initial_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->initial_states_length); + if(initial_states_lengthT > initial_states_length) + this->initial_states = (char**)realloc(this->initial_states, initial_states_lengthT * sizeof(char*)); + initial_states_length = initial_states_lengthT; + for( uint32_t i = 0; i < initial_states_length; i++){ + uint32_t length_st_initial_states; + arrToVar(length_st_initial_states, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_initial_states; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_initial_states-1]=0; + this->st_initial_states = (char *)(inbuffer + offset-1); + offset += length_st_initial_states; + memcpy( &(this->initial_states[i]), &(this->st_initial_states), sizeof(char*)); + } + uint32_t active_states_lengthT = ((uint32_t) (*(inbuffer + offset))); + active_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + active_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + active_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->active_states_length); + if(active_states_lengthT > active_states_length) + this->active_states = (char**)realloc(this->active_states, active_states_lengthT * sizeof(char*)); + active_states_length = active_states_lengthT; + for( uint32_t i = 0; i < active_states_length; i++){ + uint32_t length_st_active_states; + arrToVar(length_st_active_states, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_active_states; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_active_states-1]=0; + this->st_active_states = (char *)(inbuffer + offset-1); + offset += length_st_active_states; + memcpy( &(this->active_states[i]), &(this->st_active_states), sizeof(char*)); + } + uint32_t length_local_data; + arrToVar(length_local_data, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_local_data; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_local_data-1]=0; + this->local_data = (char *)(inbuffer + offset-1); + offset += length_local_data; + uint32_t length_info; + arrToVar(length_info, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_info; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_info-1]=0; + this->info = (char *)(inbuffer + offset-1); + offset += length_info; + return offset; + } + + const char * getType(){ return "smach_msgs/SmachContainerStatus"; }; + const char * getMD5(){ return "5ba2bb79ac19e3842d562a191f2a675b"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/smach_msgs/SmachContainerStructure.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/smach_msgs/SmachContainerStructure.h new file mode 100644 index 0000000..935b7e1 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/smach_msgs/SmachContainerStructure.h @@ -0,0 +1,246 @@ +#ifndef _ROS_smach_msgs_SmachContainerStructure_h +#define _ROS_smach_msgs_SmachContainerStructure_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace smach_msgs +{ + + class SmachContainerStructure : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef const char* _path_type; + _path_type path; + uint32_t children_length; + typedef char* _children_type; + _children_type st_children; + _children_type * children; + uint32_t internal_outcomes_length; + typedef char* _internal_outcomes_type; + _internal_outcomes_type st_internal_outcomes; + _internal_outcomes_type * internal_outcomes; + uint32_t outcomes_from_length; + typedef char* _outcomes_from_type; + _outcomes_from_type st_outcomes_from; + _outcomes_from_type * outcomes_from; + uint32_t outcomes_to_length; + typedef char* _outcomes_to_type; + _outcomes_to_type st_outcomes_to; + _outcomes_to_type * outcomes_to; + uint32_t container_outcomes_length; + typedef char* _container_outcomes_type; + _container_outcomes_type st_container_outcomes; + _container_outcomes_type * container_outcomes; + + SmachContainerStructure(): + header(), + path(""), + children_length(0), children(NULL), + internal_outcomes_length(0), internal_outcomes(NULL), + outcomes_from_length(0), outcomes_from(NULL), + outcomes_to_length(0), outcomes_to(NULL), + container_outcomes_length(0), container_outcomes(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + uint32_t length_path = strlen(this->path); + varToArr(outbuffer + offset, length_path); + offset += 4; + memcpy(outbuffer + offset, this->path, length_path); + offset += length_path; + *(outbuffer + offset + 0) = (this->children_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->children_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->children_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->children_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->children_length); + for( uint32_t i = 0; i < children_length; i++){ + uint32_t length_childreni = strlen(this->children[i]); + varToArr(outbuffer + offset, length_childreni); + offset += 4; + memcpy(outbuffer + offset, this->children[i], length_childreni); + offset += length_childreni; + } + *(outbuffer + offset + 0) = (this->internal_outcomes_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->internal_outcomes_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->internal_outcomes_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->internal_outcomes_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->internal_outcomes_length); + for( uint32_t i = 0; i < internal_outcomes_length; i++){ + uint32_t length_internal_outcomesi = strlen(this->internal_outcomes[i]); + varToArr(outbuffer + offset, length_internal_outcomesi); + offset += 4; + memcpy(outbuffer + offset, this->internal_outcomes[i], length_internal_outcomesi); + offset += length_internal_outcomesi; + } + *(outbuffer + offset + 0) = (this->outcomes_from_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->outcomes_from_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->outcomes_from_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->outcomes_from_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->outcomes_from_length); + for( uint32_t i = 0; i < outcomes_from_length; i++){ + uint32_t length_outcomes_fromi = strlen(this->outcomes_from[i]); + varToArr(outbuffer + offset, length_outcomes_fromi); + offset += 4; + memcpy(outbuffer + offset, this->outcomes_from[i], length_outcomes_fromi); + offset += length_outcomes_fromi; + } + *(outbuffer + offset + 0) = (this->outcomes_to_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->outcomes_to_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->outcomes_to_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->outcomes_to_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->outcomes_to_length); + for( uint32_t i = 0; i < outcomes_to_length; i++){ + uint32_t length_outcomes_toi = strlen(this->outcomes_to[i]); + varToArr(outbuffer + offset, length_outcomes_toi); + offset += 4; + memcpy(outbuffer + offset, this->outcomes_to[i], length_outcomes_toi); + offset += length_outcomes_toi; + } + *(outbuffer + offset + 0) = (this->container_outcomes_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->container_outcomes_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->container_outcomes_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->container_outcomes_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->container_outcomes_length); + for( uint32_t i = 0; i < container_outcomes_length; i++){ + uint32_t length_container_outcomesi = strlen(this->container_outcomes[i]); + varToArr(outbuffer + offset, length_container_outcomesi); + offset += 4; + memcpy(outbuffer + offset, this->container_outcomes[i], length_container_outcomesi); + offset += length_container_outcomesi; + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t length_path; + arrToVar(length_path, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_path; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_path-1]=0; + this->path = (char *)(inbuffer + offset-1); + offset += length_path; + uint32_t children_lengthT = ((uint32_t) (*(inbuffer + offset))); + children_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + children_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + children_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->children_length); + if(children_lengthT > children_length) + this->children = (char**)realloc(this->children, children_lengthT * sizeof(char*)); + children_length = children_lengthT; + for( uint32_t i = 0; i < children_length; i++){ + uint32_t length_st_children; + arrToVar(length_st_children, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_children; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_children-1]=0; + this->st_children = (char *)(inbuffer + offset-1); + offset += length_st_children; + memcpy( &(this->children[i]), &(this->st_children), sizeof(char*)); + } + uint32_t internal_outcomes_lengthT = ((uint32_t) (*(inbuffer + offset))); + internal_outcomes_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + internal_outcomes_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + internal_outcomes_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->internal_outcomes_length); + if(internal_outcomes_lengthT > internal_outcomes_length) + this->internal_outcomes = (char**)realloc(this->internal_outcomes, internal_outcomes_lengthT * sizeof(char*)); + internal_outcomes_length = internal_outcomes_lengthT; + for( uint32_t i = 0; i < internal_outcomes_length; i++){ + uint32_t length_st_internal_outcomes; + arrToVar(length_st_internal_outcomes, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_internal_outcomes; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_internal_outcomes-1]=0; + this->st_internal_outcomes = (char *)(inbuffer + offset-1); + offset += length_st_internal_outcomes; + memcpy( &(this->internal_outcomes[i]), &(this->st_internal_outcomes), sizeof(char*)); + } + uint32_t outcomes_from_lengthT = ((uint32_t) (*(inbuffer + offset))); + outcomes_from_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + outcomes_from_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + outcomes_from_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->outcomes_from_length); + if(outcomes_from_lengthT > outcomes_from_length) + this->outcomes_from = (char**)realloc(this->outcomes_from, outcomes_from_lengthT * sizeof(char*)); + outcomes_from_length = outcomes_from_lengthT; + for( uint32_t i = 0; i < outcomes_from_length; i++){ + uint32_t length_st_outcomes_from; + arrToVar(length_st_outcomes_from, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_outcomes_from; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_outcomes_from-1]=0; + this->st_outcomes_from = (char *)(inbuffer + offset-1); + offset += length_st_outcomes_from; + memcpy( &(this->outcomes_from[i]), &(this->st_outcomes_from), sizeof(char*)); + } + uint32_t outcomes_to_lengthT = ((uint32_t) (*(inbuffer + offset))); + outcomes_to_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + outcomes_to_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + outcomes_to_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->outcomes_to_length); + if(outcomes_to_lengthT > outcomes_to_length) + this->outcomes_to = (char**)realloc(this->outcomes_to, outcomes_to_lengthT * sizeof(char*)); + outcomes_to_length = outcomes_to_lengthT; + for( uint32_t i = 0; i < outcomes_to_length; i++){ + uint32_t length_st_outcomes_to; + arrToVar(length_st_outcomes_to, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_outcomes_to; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_outcomes_to-1]=0; + this->st_outcomes_to = (char *)(inbuffer + offset-1); + offset += length_st_outcomes_to; + memcpy( &(this->outcomes_to[i]), &(this->st_outcomes_to), sizeof(char*)); + } + uint32_t container_outcomes_lengthT = ((uint32_t) (*(inbuffer + offset))); + container_outcomes_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + container_outcomes_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + container_outcomes_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->container_outcomes_length); + if(container_outcomes_lengthT > container_outcomes_length) + this->container_outcomes = (char**)realloc(this->container_outcomes, container_outcomes_lengthT * sizeof(char*)); + container_outcomes_length = container_outcomes_lengthT; + for( uint32_t i = 0; i < container_outcomes_length; i++){ + uint32_t length_st_container_outcomes; + arrToVar(length_st_container_outcomes, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_container_outcomes; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_container_outcomes-1]=0; + this->st_container_outcomes = (char *)(inbuffer + offset-1); + offset += length_st_container_outcomes; + memcpy( &(this->container_outcomes[i]), &(this->st_container_outcomes), sizeof(char*)); + } + return offset; + } + + const char * getType(){ return "smach_msgs/SmachContainerStructure"; }; + const char * getMD5(){ return "3d3d1e0d0f99779ee9e58101a5dcf7ea"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/statistics_msgs/Stats1D.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/statistics_msgs/Stats1D.h new file mode 100644 index 0000000..9b3b256 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/statistics_msgs/Stats1D.h @@ -0,0 +1,198 @@ +#ifndef _ROS_statistics_msgs_Stats1D_h +#define _ROS_statistics_msgs_Stats1D_h + +#include +#include +#include +#include "ros/msg.h" + +namespace statistics_msgs +{ + + class Stats1D : public ros::Msg + { + public: + typedef double _min_type; + _min_type min; + typedef double _max_type; + _max_type max; + typedef double _mean_type; + _mean_type mean; + typedef double _variance_type; + _variance_type variance; + typedef int64_t _N_type; + _N_type N; + + Stats1D(): + min(0), + max(0), + mean(0), + variance(0), + N(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_min; + u_min.real = this->min; + *(outbuffer + offset + 0) = (u_min.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_min.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_min.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_min.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_min.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_min.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_min.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_min.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->min); + union { + double real; + uint64_t base; + } u_max; + u_max.real = this->max; + *(outbuffer + offset + 0) = (u_max.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_max.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_max.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_max.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_max.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_max.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_max.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_max.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->max); + union { + double real; + uint64_t base; + } u_mean; + u_mean.real = this->mean; + *(outbuffer + offset + 0) = (u_mean.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_mean.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_mean.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_mean.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_mean.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_mean.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_mean.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_mean.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->mean); + union { + double real; + uint64_t base; + } u_variance; + u_variance.real = this->variance; + *(outbuffer + offset + 0) = (u_variance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_variance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_variance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_variance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_variance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_variance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_variance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_variance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->variance); + union { + int64_t real; + uint64_t base; + } u_N; + u_N.real = this->N; + *(outbuffer + offset + 0) = (u_N.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_N.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_N.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_N.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_N.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_N.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_N.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_N.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->N); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_min; + u_min.base = 0; + u_min.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_min.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_min.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_min.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_min.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_min.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_min.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_min.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->min = u_min.real; + offset += sizeof(this->min); + union { + double real; + uint64_t base; + } u_max; + u_max.base = 0; + u_max.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_max.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_max.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_max.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_max.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_max.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_max.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_max.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->max = u_max.real; + offset += sizeof(this->max); + union { + double real; + uint64_t base; + } u_mean; + u_mean.base = 0; + u_mean.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_mean.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_mean.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_mean.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_mean.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_mean.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_mean.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_mean.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->mean = u_mean.real; + offset += sizeof(this->mean); + union { + double real; + uint64_t base; + } u_variance; + u_variance.base = 0; + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->variance = u_variance.real; + offset += sizeof(this->variance); + union { + int64_t real; + uint64_t base; + } u_N; + u_N.base = 0; + u_N.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_N.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_N.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_N.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_N.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_N.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_N.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_N.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->N = u_N.real; + offset += sizeof(this->N); + return offset; + } + + const char * getType(){ return "statistics_msgs/Stats1D"; }; + const char * getMD5(){ return "5e29efbcd70d63a82b5ddfac24a5bc4b"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Bool.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Bool.h new file mode 100644 index 0000000..6641dd0 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Bool.h @@ -0,0 +1,56 @@ +#ifndef _ROS_std_msgs_Bool_h +#define _ROS_std_msgs_Bool_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class Bool : public ros::Msg + { + public: + typedef bool _data_type; + _data_type data; + + Bool(): + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_data; + u_data.real = this->data; + *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_data; + u_data.base = 0; + u_data.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->data = u_data.real; + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return "std_msgs/Bool"; }; + const char * getMD5(){ return "8b94c1b53db61fb6aed406028ad6332a"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Byte.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Byte.h new file mode 100644 index 0000000..bf81f6f --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Byte.h @@ -0,0 +1,56 @@ +#ifndef _ROS_std_msgs_Byte_h +#define _ROS_std_msgs_Byte_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class Byte : public ros::Msg + { + public: + typedef int8_t _data_type; + _data_type data; + + Byte(): + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int8_t real; + uint8_t base; + } u_data; + u_data.real = this->data; + *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int8_t real; + uint8_t base; + } u_data; + u_data.base = 0; + u_data.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->data = u_data.real; + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return "std_msgs/Byte"; }; + const char * getMD5(){ return "ad736a2e8818154c487bb80fe42ce43b"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/ByteMultiArray.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/ByteMultiArray.h new file mode 100644 index 0000000..bf3f8b4 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/ByteMultiArray.h @@ -0,0 +1,82 @@ +#ifndef _ROS_std_msgs_ByteMultiArray_h +#define _ROS_std_msgs_ByteMultiArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/MultiArrayLayout.h" + +namespace std_msgs +{ + + class ByteMultiArray : public ros::Msg + { + public: + typedef std_msgs::MultiArrayLayout _layout_type; + _layout_type layout; + uint32_t data_length; + typedef int8_t _data_type; + _data_type st_data; + _data_type * data; + + ByteMultiArray(): + layout(), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->layout.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + union { + int8_t real; + uint8_t base; + } u_datai; + u_datai.real = this->data[i]; + *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->layout.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (int8_t*)realloc(this->data, data_lengthT * sizeof(int8_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + union { + int8_t real; + uint8_t base; + } u_st_data; + u_st_data.base = 0; + u_st_data.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->st_data = u_st_data.real; + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(int8_t)); + } + return offset; + } + + const char * getType(){ return "std_msgs/ByteMultiArray"; }; + const char * getMD5(){ return "70ea476cbcfd65ac2f68f3cda1e891fe"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Char.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Char.h new file mode 100644 index 0000000..ab3340f --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Char.h @@ -0,0 +1,45 @@ +#ifndef _ROS_std_msgs_Char_h +#define _ROS_std_msgs_Char_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class Char : public ros::Msg + { + public: + typedef uint8_t _data_type; + _data_type data; + + Char(): + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->data >> (8 * 0)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->data = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return "std_msgs/Char"; }; + const char * getMD5(){ return "1bf77f25acecdedba0e224b162199717"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/ColorRGBA.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/ColorRGBA.h new file mode 100644 index 0000000..e782d2f --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/ColorRGBA.h @@ -0,0 +1,134 @@ +#ifndef _ROS_std_msgs_ColorRGBA_h +#define _ROS_std_msgs_ColorRGBA_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class ColorRGBA : public ros::Msg + { + public: + typedef float _r_type; + _r_type r; + typedef float _g_type; + _g_type g; + typedef float _b_type; + _b_type b; + typedef float _a_type; + _a_type a; + + ColorRGBA(): + r(0), + g(0), + b(0), + a(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + float real; + uint32_t base; + } u_r; + u_r.real = this->r; + *(outbuffer + offset + 0) = (u_r.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_r.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_r.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_r.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->r); + union { + float real; + uint32_t base; + } u_g; + u_g.real = this->g; + *(outbuffer + offset + 0) = (u_g.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_g.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_g.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_g.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->g); + union { + float real; + uint32_t base; + } u_b; + u_b.real = this->b; + *(outbuffer + offset + 0) = (u_b.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_b.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_b.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_b.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->b); + union { + float real; + uint32_t base; + } u_a; + u_a.real = this->a; + *(outbuffer + offset + 0) = (u_a.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_a.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_a.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_a.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->a); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + float real; + uint32_t base; + } u_r; + u_r.base = 0; + u_r.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_r.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_r.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_r.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->r = u_r.real; + offset += sizeof(this->r); + union { + float real; + uint32_t base; + } u_g; + u_g.base = 0; + u_g.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_g.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_g.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_g.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->g = u_g.real; + offset += sizeof(this->g); + union { + float real; + uint32_t base; + } u_b; + u_b.base = 0; + u_b.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_b.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_b.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_b.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->b = u_b.real; + offset += sizeof(this->b); + union { + float real; + uint32_t base; + } u_a; + u_a.base = 0; + u_a.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_a.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_a.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_a.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->a = u_a.real; + offset += sizeof(this->a); + return offset; + } + + const char * getType(){ return "std_msgs/ColorRGBA"; }; + const char * getMD5(){ return "a29a96539573343b1310c73607334b00"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Duration.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Duration.h new file mode 100644 index 0000000..9373f35 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Duration.h @@ -0,0 +1,62 @@ +#ifndef _ROS_std_msgs_Duration_h +#define _ROS_std_msgs_Duration_h + +#include +#include +#include +#include "ros/msg.h" +#include "ros/duration.h" + +namespace std_msgs +{ + + class Duration : public ros::Msg + { + public: + typedef ros::Duration _data_type; + _data_type data; + + Duration(): + data() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->data.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->data.sec); + *(outbuffer + offset + 0) = (this->data.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->data.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->data.sec = ((uint32_t) (*(inbuffer + offset))); + this->data.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->data.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->data.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data.sec); + this->data.nsec = ((uint32_t) (*(inbuffer + offset))); + this->data.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->data.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->data.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data.nsec); + return offset; + } + + const char * getType(){ return "std_msgs/Duration"; }; + const char * getMD5(){ return "3e286caf4241d664e55f3ad380e2ae46"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Empty.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Empty.h new file mode 100644 index 0000000..440e5ed --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Empty.h @@ -0,0 +1,38 @@ +#ifndef _ROS_std_msgs_Empty_h +#define _ROS_std_msgs_Empty_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class Empty : public ros::Msg + { + public: + + Empty() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "std_msgs/Empty"; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Float32.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Float32.h new file mode 100644 index 0000000..07fc435 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Float32.h @@ -0,0 +1,62 @@ +#ifndef _ROS_std_msgs_Float32_h +#define _ROS_std_msgs_Float32_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class Float32 : public ros::Msg + { + public: + typedef float _data_type; + _data_type data; + + Float32(): + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + float real; + uint32_t base; + } u_data; + u_data.real = this->data; + *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_data.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_data.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_data.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + float real; + uint32_t base; + } u_data; + u_data.base = 0; + u_data.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->data = u_data.real; + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return "std_msgs/Float32"; }; + const char * getMD5(){ return "73fcbf46b49191e672908e50842a83d4"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Float32MultiArray.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Float32MultiArray.h new file mode 100644 index 0000000..08800d0 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Float32MultiArray.h @@ -0,0 +1,88 @@ +#ifndef _ROS_std_msgs_Float32MultiArray_h +#define _ROS_std_msgs_Float32MultiArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/MultiArrayLayout.h" + +namespace std_msgs +{ + + class Float32MultiArray : public ros::Msg + { + public: + typedef std_msgs::MultiArrayLayout _layout_type; + _layout_type layout; + uint32_t data_length; + typedef float _data_type; + _data_type st_data; + _data_type * data; + + Float32MultiArray(): + layout(), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->layout.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + union { + float real; + uint32_t base; + } u_datai; + u_datai.real = this->data[i]; + *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_datai.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_datai.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_datai.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->layout.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (float*)realloc(this->data, data_lengthT * sizeof(float)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + union { + float real; + uint32_t base; + } u_st_data; + u_st_data.base = 0; + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_data = u_st_data.real; + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(float)); + } + return offset; + } + + const char * getType(){ return "std_msgs/Float32MultiArray"; }; + const char * getMD5(){ return "6a40e0ffa6a17a503ac3f8616991b1f6"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Float64.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Float64.h new file mode 100644 index 0000000..b566cb6 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Float64.h @@ -0,0 +1,70 @@ +#ifndef _ROS_std_msgs_Float64_h +#define _ROS_std_msgs_Float64_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class Float64 : public ros::Msg + { + public: + typedef double _data_type; + _data_type data; + + Float64(): + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_data; + u_data.real = this->data; + *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_data.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_data.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_data.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_data.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_data.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_data.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_data.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_data; + u_data.base = 0; + u_data.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_data.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_data.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_data.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_data.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_data.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_data.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_data.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->data = u_data.real; + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return "std_msgs/Float64"; }; + const char * getMD5(){ return "fdb28210bfa9d7c91146260178d9a584"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Float64MultiArray.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Float64MultiArray.h new file mode 100644 index 0000000..219abe6 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Float64MultiArray.h @@ -0,0 +1,96 @@ +#ifndef _ROS_std_msgs_Float64MultiArray_h +#define _ROS_std_msgs_Float64MultiArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/MultiArrayLayout.h" + +namespace std_msgs +{ + + class Float64MultiArray : public ros::Msg + { + public: + typedef std_msgs::MultiArrayLayout _layout_type; + _layout_type layout; + uint32_t data_length; + typedef double _data_type; + _data_type st_data; + _data_type * data; + + Float64MultiArray(): + layout(), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->layout.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + union { + double real; + uint64_t base; + } u_datai; + u_datai.real = this->data[i]; + *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_datai.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_datai.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_datai.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_datai.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_datai.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_datai.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_datai.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->layout.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (double*)realloc(this->data, data_lengthT * sizeof(double)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + union { + double real; + uint64_t base; + } u_st_data; + u_st_data.base = 0; + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_data = u_st_data.real; + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(double)); + } + return offset; + } + + const char * getType(){ return "std_msgs/Float64MultiArray"; }; + const char * getMD5(){ return "4b7d974086d4060e7db4613a7e6c3ba4"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Header.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Header.h new file mode 100644 index 0000000..658bd84 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Header.h @@ -0,0 +1,92 @@ +#ifndef _ROS_std_msgs_Header_h +#define _ROS_std_msgs_Header_h + +#include +#include +#include +#include "../ros/msg.h" +#include "../ros/time.h" + +namespace std_msgs +{ + + class Header : public ros::Msg + { + public: + typedef uint32_t _seq_type; + _seq_type seq; + typedef ros::Time _stamp_type; + _stamp_type stamp; + typedef const char* _frame_id_type; + _frame_id_type frame_id; + + Header(): + seq(0), + stamp(), + frame_id("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->seq >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->seq >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->seq >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->seq >> (8 * 3)) & 0xFF; + offset += sizeof(this->seq); + *(outbuffer + offset + 0) = (this->stamp.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp.sec); + *(outbuffer + offset + 0) = (this->stamp.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp.nsec); + uint32_t length_frame_id = strlen(this->frame_id); + varToArr(outbuffer + offset, length_frame_id); + offset += 4; + memcpy(outbuffer + offset, this->frame_id, length_frame_id); + offset += length_frame_id; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->seq = ((uint32_t) (*(inbuffer + offset))); + this->seq |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->seq |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->seq |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->seq); + this->stamp.sec = ((uint32_t) (*(inbuffer + offset))); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp.sec); + this->stamp.nsec = ((uint32_t) (*(inbuffer + offset))); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp.nsec); + uint32_t length_frame_id; + arrToVar(length_frame_id, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_frame_id; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_frame_id-1]=0; + this->frame_id = (char *)(inbuffer + offset-1); + offset += length_frame_id; + return offset; + } + + const char * getType(){ return "std_msgs/Header"; }; + const char * getMD5(){ return "2176decaecbce78abc3b96ef049fabed"; }; + + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Int16.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Int16.h new file mode 100644 index 0000000..8699431 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Int16.h @@ -0,0 +1,58 @@ +#ifndef _ROS_std_msgs_Int16_h +#define _ROS_std_msgs_Int16_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class Int16 : public ros::Msg + { + public: + typedef int16_t _data_type; + _data_type data; + + Int16(): + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int16_t real; + uint16_t base; + } u_data; + u_data.real = this->data; + *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_data.base >> (8 * 1)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int16_t real; + uint16_t base; + } u_data; + u_data.base = 0; + u_data.base |= ((uint16_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_data.base |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->data = u_data.real; + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return "std_msgs/Int16"; }; + const char * getMD5(){ return "8524586e34fbd7cb1c08c5f5f1ca0e57"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Int16MultiArray.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Int16MultiArray.h new file mode 100644 index 0000000..09a685a --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Int16MultiArray.h @@ -0,0 +1,84 @@ +#ifndef _ROS_std_msgs_Int16MultiArray_h +#define _ROS_std_msgs_Int16MultiArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/MultiArrayLayout.h" + +namespace std_msgs +{ + + class Int16MultiArray : public ros::Msg + { + public: + typedef std_msgs::MultiArrayLayout _layout_type; + _layout_type layout; + uint32_t data_length; + typedef int16_t _data_type; + _data_type st_data; + _data_type * data; + + Int16MultiArray(): + layout(), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->layout.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + union { + int16_t real; + uint16_t base; + } u_datai; + u_datai.real = this->data[i]; + *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_datai.base >> (8 * 1)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->layout.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (int16_t*)realloc(this->data, data_lengthT * sizeof(int16_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + union { + int16_t real; + uint16_t base; + } u_st_data; + u_st_data.base = 0; + u_st_data.base |= ((uint16_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_data.base |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->st_data = u_st_data.real; + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(int16_t)); + } + return offset; + } + + const char * getType(){ return "std_msgs/Int16MultiArray"; }; + const char * getMD5(){ return "d9338d7f523fcb692fae9d0a0e9f067c"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Int32.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Int32.h new file mode 100644 index 0000000..1f33bbd --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Int32.h @@ -0,0 +1,62 @@ +#ifndef _ROS_std_msgs_Int32_h +#define _ROS_std_msgs_Int32_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class Int32 : public ros::Msg + { + public: + typedef int32_t _data_type; + _data_type data; + + Int32(): + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_data; + u_data.real = this->data; + *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_data.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_data.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_data.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_data; + u_data.base = 0; + u_data.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->data = u_data.real; + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return "std_msgs/Int32"; }; + const char * getMD5(){ return "da5909fbe378aeaf85e547e830cc1bb7"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Int32MultiArray.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Int32MultiArray.h new file mode 100644 index 0000000..9dc349d --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Int32MultiArray.h @@ -0,0 +1,88 @@ +#ifndef _ROS_std_msgs_Int32MultiArray_h +#define _ROS_std_msgs_Int32MultiArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/MultiArrayLayout.h" + +namespace std_msgs +{ + + class Int32MultiArray : public ros::Msg + { + public: + typedef std_msgs::MultiArrayLayout _layout_type; + _layout_type layout; + uint32_t data_length; + typedef int32_t _data_type; + _data_type st_data; + _data_type * data; + + Int32MultiArray(): + layout(), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->layout.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + union { + int32_t real; + uint32_t base; + } u_datai; + u_datai.real = this->data[i]; + *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_datai.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_datai.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_datai.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->layout.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (int32_t*)realloc(this->data, data_lengthT * sizeof(int32_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + union { + int32_t real; + uint32_t base; + } u_st_data; + u_st_data.base = 0; + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_data = u_st_data.real; + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(int32_t)); + } + return offset; + } + + const char * getType(){ return "std_msgs/Int32MultiArray"; }; + const char * getMD5(){ return "1d99f79f8b325b44fee908053e9c945b"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Int64.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Int64.h new file mode 100644 index 0000000..9edec3b --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Int64.h @@ -0,0 +1,70 @@ +#ifndef _ROS_std_msgs_Int64_h +#define _ROS_std_msgs_Int64_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class Int64 : public ros::Msg + { + public: + typedef int64_t _data_type; + _data_type data; + + Int64(): + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_data; + u_data.real = this->data; + *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_data.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_data.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_data.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_data.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_data.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_data.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_data.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_data; + u_data.base = 0; + u_data.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_data.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_data.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_data.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_data.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_data.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_data.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_data.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->data = u_data.real; + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return "std_msgs/Int64"; }; + const char * getMD5(){ return "34add168574510e6e17f5d23ecc077ef"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Int64MultiArray.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Int64MultiArray.h new file mode 100644 index 0000000..7815756 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Int64MultiArray.h @@ -0,0 +1,96 @@ +#ifndef _ROS_std_msgs_Int64MultiArray_h +#define _ROS_std_msgs_Int64MultiArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/MultiArrayLayout.h" + +namespace std_msgs +{ + + class Int64MultiArray : public ros::Msg + { + public: + typedef std_msgs::MultiArrayLayout _layout_type; + _layout_type layout; + uint32_t data_length; + typedef int64_t _data_type; + _data_type st_data; + _data_type * data; + + Int64MultiArray(): + layout(), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->layout.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + union { + int64_t real; + uint64_t base; + } u_datai; + u_datai.real = this->data[i]; + *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_datai.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_datai.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_datai.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_datai.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_datai.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_datai.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_datai.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->layout.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (int64_t*)realloc(this->data, data_lengthT * sizeof(int64_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + union { + int64_t real; + uint64_t base; + } u_st_data; + u_st_data.base = 0; + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_data = u_st_data.real; + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(int64_t)); + } + return offset; + } + + const char * getType(){ return "std_msgs/Int64MultiArray"; }; + const char * getMD5(){ return "54865aa6c65be0448113a2afc6a49270"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Int8.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Int8.h new file mode 100644 index 0000000..9509136 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Int8.h @@ -0,0 +1,56 @@ +#ifndef _ROS_std_msgs_Int8_h +#define _ROS_std_msgs_Int8_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class Int8 : public ros::Msg + { + public: + typedef int8_t _data_type; + _data_type data; + + Int8(): + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int8_t real; + uint8_t base; + } u_data; + u_data.real = this->data; + *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int8_t real; + uint8_t base; + } u_data; + u_data.base = 0; + u_data.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->data = u_data.real; + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return "std_msgs/Int8"; }; + const char * getMD5(){ return "27ffa0c9c4b8fb8492252bcad9e5c57b"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Int8MultiArray.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Int8MultiArray.h new file mode 100644 index 0000000..38921a9 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Int8MultiArray.h @@ -0,0 +1,82 @@ +#ifndef _ROS_std_msgs_Int8MultiArray_h +#define _ROS_std_msgs_Int8MultiArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/MultiArrayLayout.h" + +namespace std_msgs +{ + + class Int8MultiArray : public ros::Msg + { + public: + typedef std_msgs::MultiArrayLayout _layout_type; + _layout_type layout; + uint32_t data_length; + typedef int8_t _data_type; + _data_type st_data; + _data_type * data; + + Int8MultiArray(): + layout(), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->layout.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + union { + int8_t real; + uint8_t base; + } u_datai; + u_datai.real = this->data[i]; + *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->layout.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (int8_t*)realloc(this->data, data_lengthT * sizeof(int8_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + union { + int8_t real; + uint8_t base; + } u_st_data; + u_st_data.base = 0; + u_st_data.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->st_data = u_st_data.real; + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(int8_t)); + } + return offset; + } + + const char * getType(){ return "std_msgs/Int8MultiArray"; }; + const char * getMD5(){ return "d7c1af35a1b4781bbe79e03dd94b7c13"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/MultiArrayDimension.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/MultiArrayDimension.h new file mode 100644 index 0000000..72cb416 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/MultiArrayDimension.h @@ -0,0 +1,81 @@ +#ifndef _ROS_std_msgs_MultiArrayDimension_h +#define _ROS_std_msgs_MultiArrayDimension_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class MultiArrayDimension : public ros::Msg + { + public: + typedef const char* _label_type; + _label_type label; + typedef uint32_t _size_type; + _size_type size; + typedef uint32_t _stride_type; + _stride_type stride; + + MultiArrayDimension(): + label(""), + size(0), + stride(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_label = strlen(this->label); + varToArr(outbuffer + offset, length_label); + offset += 4; + memcpy(outbuffer + offset, this->label, length_label); + offset += length_label; + *(outbuffer + offset + 0) = (this->size >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->size >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->size >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->size >> (8 * 3)) & 0xFF; + offset += sizeof(this->size); + *(outbuffer + offset + 0) = (this->stride >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stride >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stride >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stride >> (8 * 3)) & 0xFF; + offset += sizeof(this->stride); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_label; + arrToVar(length_label, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_label; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_label-1]=0; + this->label = (char *)(inbuffer + offset-1); + offset += length_label; + this->size = ((uint32_t) (*(inbuffer + offset))); + this->size |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->size |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->size |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->size); + this->stride = ((uint32_t) (*(inbuffer + offset))); + this->stride |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stride |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stride |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stride); + return offset; + } + + const char * getType(){ return "std_msgs/MultiArrayDimension"; }; + const char * getMD5(){ return "4cd0c83a8683deae40ecdac60e53bfa8"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/MultiArrayLayout.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/MultiArrayLayout.h new file mode 100644 index 0000000..3cf3cfb --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/MultiArrayLayout.h @@ -0,0 +1,77 @@ +#ifndef _ROS_std_msgs_MultiArrayLayout_h +#define _ROS_std_msgs_MultiArrayLayout_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/MultiArrayDimension.h" + +namespace std_msgs +{ + + class MultiArrayLayout : public ros::Msg + { + public: + uint32_t dim_length; + typedef std_msgs::MultiArrayDimension _dim_type; + _dim_type st_dim; + _dim_type * dim; + typedef uint32_t _data_offset_type; + _data_offset_type data_offset; + + MultiArrayLayout(): + dim_length(0), dim(NULL), + data_offset(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->dim_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->dim_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->dim_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->dim_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->dim_length); + for( uint32_t i = 0; i < dim_length; i++){ + offset += this->dim[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->data_offset >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_offset >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_offset >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_offset >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t dim_lengthT = ((uint32_t) (*(inbuffer + offset))); + dim_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + dim_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + dim_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->dim_length); + if(dim_lengthT > dim_length) + this->dim = (std_msgs::MultiArrayDimension*)realloc(this->dim, dim_lengthT * sizeof(std_msgs::MultiArrayDimension)); + dim_length = dim_lengthT; + for( uint32_t i = 0; i < dim_length; i++){ + offset += this->st_dim.deserialize(inbuffer + offset); + memcpy( &(this->dim[i]), &(this->st_dim), sizeof(std_msgs::MultiArrayDimension)); + } + this->data_offset = ((uint32_t) (*(inbuffer + offset))); + this->data_offset |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->data_offset |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->data_offset |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_offset); + return offset; + } + + const char * getType(){ return "std_msgs/MultiArrayLayout"; }; + const char * getMD5(){ return "0fed2a11c13e11c5571b4e2a995a91a3"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/String.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/String.h new file mode 100644 index 0000000..de0bfa0 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/String.h @@ -0,0 +1,55 @@ +#ifndef _ROS_std_msgs_String_h +#define _ROS_std_msgs_String_h + +#include +#include +#include +#include "../ros/msg.h" + +namespace std_msgs +{ + + class String : public ros::Msg + { + public: + typedef const char* _data_type; + _data_type data; + + String(): + data("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_data = strlen(this->data); + varToArr(outbuffer + offset, length_data); + offset += 4; + memcpy(outbuffer + offset, this->data, length_data); + offset += length_data; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_data; + arrToVar(length_data, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_data; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_data-1]=0; + this->data = (char *)(inbuffer + offset-1); + offset += length_data; + return offset; + } + + const char * getType(){ return "std_msgs/String"; }; + const char * getMD5(){ return "992ce8a1687cec8c8bd883ec73ca41d1"; }; + + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Time.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Time.h new file mode 100644 index 0000000..2a6dd26 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/Time.h @@ -0,0 +1,62 @@ +#ifndef _ROS_std_msgs_Time_h +#define _ROS_std_msgs_Time_h + +#include +#include +#include +#include "../ros/msg.h" +#include "../ros/time.h" + +namespace std_msgs +{ + + class Time : public ros::Msg + { + public: + typedef ros::Time _data_type; + _data_type data; + + Time(): + data() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->data.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->data.sec); + *(outbuffer + offset + 0) = (this->data.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->data.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->data.sec = ((uint32_t) (*(inbuffer + offset))); + this->data.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->data.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->data.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data.sec); + this->data.nsec = ((uint32_t) (*(inbuffer + offset))); + this->data.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->data.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->data.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data.nsec); + return offset; + } + + const char * getType(){ return "std_msgs/Time"; }; + const char * getMD5(){ return "cd7166c74c552c311fbcc2fe5a7bc289"; }; + + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/UInt16.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/UInt16.h new file mode 100644 index 0000000..4da6884 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/UInt16.h @@ -0,0 +1,47 @@ +#ifndef _ROS_std_msgs_UInt16_h +#define _ROS_std_msgs_UInt16_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class UInt16 : public ros::Msg + { + public: + typedef uint16_t _data_type; + _data_type data; + + UInt16(): + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->data >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data >> (8 * 1)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->data = ((uint16_t) (*(inbuffer + offset))); + this->data |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return "std_msgs/UInt16"; }; + const char * getMD5(){ return "1df79edf208b629fe6b81923a544552d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/UInt16MultiArray.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/UInt16MultiArray.h new file mode 100644 index 0000000..26c0e8f --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/UInt16MultiArray.h @@ -0,0 +1,73 @@ +#ifndef _ROS_std_msgs_UInt16MultiArray_h +#define _ROS_std_msgs_UInt16MultiArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/MultiArrayLayout.h" + +namespace std_msgs +{ + + class UInt16MultiArray : public ros::Msg + { + public: + typedef std_msgs::MultiArrayLayout _layout_type; + _layout_type layout; + uint32_t data_length; + typedef uint16_t _data_type; + _data_type st_data; + _data_type * data; + + UInt16MultiArray(): + layout(), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->layout.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data[i] >> (8 * 1)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->layout.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (uint16_t*)realloc(this->data, data_lengthT * sizeof(uint16_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + this->st_data = ((uint16_t) (*(inbuffer + offset))); + this->st_data |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(uint16_t)); + } + return offset; + } + + const char * getType(){ return "std_msgs/UInt16MultiArray"; }; + const char * getMD5(){ return "52f264f1c973c4b73790d384c6cb4484"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/UInt32.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/UInt32.h new file mode 100644 index 0000000..30ae02b --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/UInt32.h @@ -0,0 +1,51 @@ +#ifndef _ROS_std_msgs_UInt32_h +#define _ROS_std_msgs_UInt32_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class UInt32 : public ros::Msg + { + public: + typedef uint32_t _data_type; + _data_type data; + + UInt32(): + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->data >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data >> (8 * 3)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->data = ((uint32_t) (*(inbuffer + offset))); + this->data |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->data |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->data |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return "std_msgs/UInt32"; }; + const char * getMD5(){ return "304a39449588c7f8ce2df6e8001c5fce"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/UInt32MultiArray.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/UInt32MultiArray.h new file mode 100644 index 0000000..af46e79 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/UInt32MultiArray.h @@ -0,0 +1,77 @@ +#ifndef _ROS_std_msgs_UInt32MultiArray_h +#define _ROS_std_msgs_UInt32MultiArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/MultiArrayLayout.h" + +namespace std_msgs +{ + + class UInt32MultiArray : public ros::Msg + { + public: + typedef std_msgs::MultiArrayLayout _layout_type; + _layout_type layout; + uint32_t data_length; + typedef uint32_t _data_type; + _data_type st_data; + _data_type * data; + + UInt32MultiArray(): + layout(), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->layout.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data[i] >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data[i] >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data[i] >> (8 * 3)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->layout.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (uint32_t*)realloc(this->data, data_lengthT * sizeof(uint32_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + this->st_data = ((uint32_t) (*(inbuffer + offset))); + this->st_data |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->st_data |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->st_data |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(uint32_t)); + } + return offset; + } + + const char * getType(){ return "std_msgs/UInt32MultiArray"; }; + const char * getMD5(){ return "4d6a180abc9be191b96a7eda6c8a233d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/UInt64.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/UInt64.h new file mode 100644 index 0000000..b7ab02d --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/UInt64.h @@ -0,0 +1,62 @@ +#ifndef _ROS_std_msgs_UInt64_h +#define _ROS_std_msgs_UInt64_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class UInt64 : public ros::Msg + { + public: + typedef uint64_t _data_type; + _data_type data; + + UInt64(): + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + uint64_t real; + uint32_t base; + } u_data; + u_data.real = this->data; + *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_data.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_data.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_data.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + uint64_t real; + uint32_t base; + } u_data; + u_data.base = 0; + u_data.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->data = u_data.real; + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return "std_msgs/UInt64"; }; + const char * getMD5(){ return "1b2a79973e8bf53d7b53acb71299cb57"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/UInt64MultiArray.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/UInt64MultiArray.h new file mode 100644 index 0000000..4401271 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/UInt64MultiArray.h @@ -0,0 +1,88 @@ +#ifndef _ROS_std_msgs_UInt64MultiArray_h +#define _ROS_std_msgs_UInt64MultiArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/MultiArrayLayout.h" + +namespace std_msgs +{ + + class UInt64MultiArray : public ros::Msg + { + public: + typedef std_msgs::MultiArrayLayout _layout_type; + _layout_type layout; + uint32_t data_length; + typedef uint64_t _data_type; + _data_type st_data; + _data_type * data; + + UInt64MultiArray(): + layout(), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->layout.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + union { + uint64_t real; + uint32_t base; + } u_datai; + u_datai.real = this->data[i]; + *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_datai.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_datai.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_datai.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->layout.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (uint64_t*)realloc(this->data, data_lengthT * sizeof(uint64_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + union { + uint64_t real; + uint32_t base; + } u_st_data; + u_st_data.base = 0; + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_data = u_st_data.real; + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(uint64_t)); + } + return offset; + } + + const char * getType(){ return "std_msgs/UInt64MultiArray"; }; + const char * getMD5(){ return "6088f127afb1d6c72927aa1247e945af"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/UInt8.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/UInt8.h new file mode 100644 index 0000000..e41b04b --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/UInt8.h @@ -0,0 +1,45 @@ +#ifndef _ROS_std_msgs_UInt8_h +#define _ROS_std_msgs_UInt8_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class UInt8 : public ros::Msg + { + public: + typedef uint8_t _data_type; + _data_type data; + + UInt8(): + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->data >> (8 * 0)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->data = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return "std_msgs/UInt8"; }; + const char * getMD5(){ return "7c8164229e7d2c17eb95e9231617fdee"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/UInt8MultiArray.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/UInt8MultiArray.h new file mode 100644 index 0000000..9ca2ac2 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_msgs/UInt8MultiArray.h @@ -0,0 +1,71 @@ +#ifndef _ROS_std_msgs_UInt8MultiArray_h +#define _ROS_std_msgs_UInt8MultiArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/MultiArrayLayout.h" + +namespace std_msgs +{ + + class UInt8MultiArray : public ros::Msg + { + public: + typedef std_msgs::MultiArrayLayout _layout_type; + _layout_type layout; + uint32_t data_length; + typedef uint8_t _data_type; + _data_type st_data; + _data_type * data; + + UInt8MultiArray(): + layout(), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->layout.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->layout.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (uint8_t*)realloc(this->data, data_lengthT * sizeof(uint8_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + this->st_data = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(uint8_t)); + } + return offset; + } + + const char * getType(){ return "std_msgs/UInt8MultiArray"; }; + const char * getMD5(){ return "82373f1612381bb6ee473b5cd6f5d89c"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_srvs/Empty.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_srvs/Empty.h new file mode 100644 index 0000000..b040dd2 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_srvs/Empty.h @@ -0,0 +1,70 @@ +#ifndef _ROS_SERVICE_Empty_h +#define _ROS_SERVICE_Empty_h +#include +#include +#include +#include "ros/msg.h" + +namespace std_srvs +{ + +static const char EMPTY[] = "std_srvs/Empty"; + + class EmptyRequest : public ros::Msg + { + public: + + EmptyRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return EMPTY; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class EmptyResponse : public ros::Msg + { + public: + + EmptyResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return EMPTY; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class Empty { + public: + typedef EmptyRequest Request; + typedef EmptyResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_srvs/SetBool.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_srvs/SetBool.h new file mode 100644 index 0000000..1feb34e --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_srvs/SetBool.h @@ -0,0 +1,123 @@ +#ifndef _ROS_SERVICE_SetBool_h +#define _ROS_SERVICE_SetBool_h +#include +#include +#include +#include "ros/msg.h" + +namespace std_srvs +{ + +static const char SETBOOL[] = "std_srvs/SetBool"; + + class SetBoolRequest : public ros::Msg + { + public: + typedef bool _data_type; + _data_type data; + + SetBoolRequest(): + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_data; + u_data.real = this->data; + *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_data; + u_data.base = 0; + u_data.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->data = u_data.real; + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return SETBOOL; }; + const char * getMD5(){ return "8b94c1b53db61fb6aed406028ad6332a"; }; + + }; + + class SetBoolResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _message_type; + _message_type message; + + SetBoolResponse(): + success(0), + message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_message = strlen(this->message); + varToArr(outbuffer + offset, length_message); + offset += 4; + memcpy(outbuffer + offset, this->message, length_message); + offset += length_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_message; + arrToVar(length_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_message-1]=0; + this->message = (char *)(inbuffer + offset-1); + offset += length_message; + return offset; + } + + const char * getType(){ return SETBOOL; }; + const char * getMD5(){ return "937c9679a518e3a18d831e57125ea522"; }; + + }; + + class SetBool { + public: + typedef SetBoolRequest Request; + typedef SetBoolResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_srvs/Trigger.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_srvs/Trigger.h new file mode 100644 index 0000000..34d1e48 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/std_srvs/Trigger.h @@ -0,0 +1,105 @@ +#ifndef _ROS_SERVICE_Trigger_h +#define _ROS_SERVICE_Trigger_h +#include +#include +#include +#include "ros/msg.h" + +namespace std_srvs +{ + +static const char TRIGGER[] = "std_srvs/Trigger"; + + class TriggerRequest : public ros::Msg + { + public: + + TriggerRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return TRIGGER; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class TriggerResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _message_type; + _message_type message; + + TriggerResponse(): + success(0), + message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_message = strlen(this->message); + varToArr(outbuffer + offset, length_message); + offset += 4; + memcpy(outbuffer + offset, this->message, length_message); + offset += length_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_message; + arrToVar(length_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_message-1]=0; + this->message = (char *)(inbuffer + offset-1); + offset += length_message; + return offset; + } + + const char * getType(){ return TRIGGER; }; + const char * getMD5(){ return "937c9679a518e3a18d831e57125ea522"; }; + + }; + + class Trigger { + public: + typedef TriggerRequest Request; + typedef TriggerResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/stereo_msgs/DisparityImage.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/stereo_msgs/DisparityImage.h new file mode 100644 index 0000000..90b3f28 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/stereo_msgs/DisparityImage.h @@ -0,0 +1,176 @@ +#ifndef _ROS_stereo_msgs_DisparityImage_h +#define _ROS_stereo_msgs_DisparityImage_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "sensor_msgs/Image.h" +#include "sensor_msgs/RegionOfInterest.h" + +namespace stereo_msgs +{ + + class DisparityImage : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef sensor_msgs::Image _image_type; + _image_type image; + typedef float _f_type; + _f_type f; + typedef float _T_type; + _T_type T; + typedef sensor_msgs::RegionOfInterest _valid_window_type; + _valid_window_type valid_window; + typedef float _min_disparity_type; + _min_disparity_type min_disparity; + typedef float _max_disparity_type; + _max_disparity_type max_disparity; + typedef float _delta_d_type; + _delta_d_type delta_d; + + DisparityImage(): + header(), + image(), + f(0), + T(0), + valid_window(), + min_disparity(0), + max_disparity(0), + delta_d(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->image.serialize(outbuffer + offset); + union { + float real; + uint32_t base; + } u_f; + u_f.real = this->f; + *(outbuffer + offset + 0) = (u_f.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_f.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_f.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_f.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->f); + union { + float real; + uint32_t base; + } u_T; + u_T.real = this->T; + *(outbuffer + offset + 0) = (u_T.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_T.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_T.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_T.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->T); + offset += this->valid_window.serialize(outbuffer + offset); + union { + float real; + uint32_t base; + } u_min_disparity; + u_min_disparity.real = this->min_disparity; + *(outbuffer + offset + 0) = (u_min_disparity.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_min_disparity.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_min_disparity.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_min_disparity.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->min_disparity); + union { + float real; + uint32_t base; + } u_max_disparity; + u_max_disparity.real = this->max_disparity; + *(outbuffer + offset + 0) = (u_max_disparity.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_max_disparity.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_max_disparity.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_max_disparity.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->max_disparity); + union { + float real; + uint32_t base; + } u_delta_d; + u_delta_d.real = this->delta_d; + *(outbuffer + offset + 0) = (u_delta_d.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_delta_d.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_delta_d.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_delta_d.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->delta_d); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->image.deserialize(inbuffer + offset); + union { + float real; + uint32_t base; + } u_f; + u_f.base = 0; + u_f.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_f.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_f.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_f.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->f = u_f.real; + offset += sizeof(this->f); + union { + float real; + uint32_t base; + } u_T; + u_T.base = 0; + u_T.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_T.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_T.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_T.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->T = u_T.real; + offset += sizeof(this->T); + offset += this->valid_window.deserialize(inbuffer + offset); + union { + float real; + uint32_t base; + } u_min_disparity; + u_min_disparity.base = 0; + u_min_disparity.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_min_disparity.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_min_disparity.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_min_disparity.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->min_disparity = u_min_disparity.real; + offset += sizeof(this->min_disparity); + union { + float real; + uint32_t base; + } u_max_disparity; + u_max_disparity.base = 0; + u_max_disparity.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_max_disparity.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_max_disparity.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_max_disparity.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->max_disparity = u_max_disparity.real; + offset += sizeof(this->max_disparity); + union { + float real; + uint32_t base; + } u_delta_d; + u_delta_d.base = 0; + u_delta_d.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_delta_d.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_delta_d.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_delta_d.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->delta_d = u_delta_d.real; + offset += sizeof(this->delta_d); + return offset; + } + + const char * getType(){ return "stereo_msgs/DisparityImage"; }; + const char * getMD5(){ return "04a177815f75271039fa21f16acad8c9"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf/FrameGraph.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf/FrameGraph.h new file mode 100644 index 0000000..e95a945 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf/FrameGraph.h @@ -0,0 +1,87 @@ +#ifndef _ROS_SERVICE_FrameGraph_h +#define _ROS_SERVICE_FrameGraph_h +#include +#include +#include +#include "ros/msg.h" + +namespace tf +{ + +static const char FRAMEGRAPH[] = "tf/FrameGraph"; + + class FrameGraphRequest : public ros::Msg + { + public: + + FrameGraphRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return FRAMEGRAPH; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class FrameGraphResponse : public ros::Msg + { + public: + typedef const char* _dot_graph_type; + _dot_graph_type dot_graph; + + FrameGraphResponse(): + dot_graph("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_dot_graph = strlen(this->dot_graph); + varToArr(outbuffer + offset, length_dot_graph); + offset += 4; + memcpy(outbuffer + offset, this->dot_graph, length_dot_graph); + offset += length_dot_graph; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_dot_graph; + arrToVar(length_dot_graph, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_dot_graph; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_dot_graph-1]=0; + this->dot_graph = (char *)(inbuffer + offset-1); + offset += length_dot_graph; + return offset; + } + + const char * getType(){ return FRAMEGRAPH; }; + const char * getMD5(){ return "c4af9ac907e58e906eb0b6e3c58478c0"; }; + + }; + + class FrameGraph { + public: + typedef FrameGraphRequest Request; + typedef FrameGraphResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf/tf.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf/tf.h new file mode 100644 index 0000000..97858fe --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf/tf.h @@ -0,0 +1,56 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2011, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef ROS_TF_H_ +#define ROS_TF_H_ + +#include "geometry_msgs/TransformStamped.h" + +namespace tf +{ + +static inline geometry_msgs::Quaternion createQuaternionFromYaw(double yaw) +{ + geometry_msgs::Quaternion q; + q.x = 0; + q.y = 0; + q.z = sin(yaw * 0.5); + q.w = cos(yaw * 0.5); + return q; +} + +} + +#endif + diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf/tfMessage.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf/tfMessage.h new file mode 100644 index 0000000..4c0b04a --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf/tfMessage.h @@ -0,0 +1,64 @@ +#ifndef _ROS_tf_tfMessage_h +#define _ROS_tf_tfMessage_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/TransformStamped.h" + +namespace tf +{ + + class tfMessage : public ros::Msg + { + public: + uint32_t transforms_length; + typedef geometry_msgs::TransformStamped _transforms_type; + _transforms_type st_transforms; + _transforms_type * transforms; + + tfMessage(): + transforms_length(0), transforms(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->transforms_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->transforms_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->transforms_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->transforms_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->transforms_length); + for( uint32_t i = 0; i < transforms_length; i++){ + offset += this->transforms[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t transforms_lengthT = ((uint32_t) (*(inbuffer + offset))); + transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->transforms_length); + if(transforms_lengthT > transforms_length) + this->transforms = (geometry_msgs::TransformStamped*)realloc(this->transforms, transforms_lengthT * sizeof(geometry_msgs::TransformStamped)); + transforms_length = transforms_lengthT; + for( uint32_t i = 0; i < transforms_length; i++){ + offset += this->st_transforms.deserialize(inbuffer + offset); + memcpy( &(this->transforms[i]), &(this->st_transforms), sizeof(geometry_msgs::TransformStamped)); + } + return offset; + } + + const char * getType(){ return "tf/tfMessage"; }; + const char * getMD5(){ return "94810edda583a504dfda3829e70d7eec"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf/transform_broadcaster.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf/transform_broadcaster.h new file mode 100644 index 0000000..6c4e5fe --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf/transform_broadcaster.h @@ -0,0 +1,69 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2011, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef ROS_TRANSFORM_BROADCASTER_H_ +#define ROS_TRANSFORM_BROADCASTER_H_ + +#include "ros.h" +#include "tfMessage.h" + +namespace tf +{ + +class TransformBroadcaster +{ +public: + TransformBroadcaster() : publisher_("/tf", &internal_msg) {} + + void init(ros::NodeHandle &nh) + { + nh.advertise(publisher_); + } + + void sendTransform(geometry_msgs::TransformStamped &transform) + { + internal_msg.transforms_length = 1; + internal_msg.transforms = &transform; + publisher_.publish(&internal_msg); + } + +private: + tf::tfMessage internal_msg; + ros::Publisher publisher_; +}; + +} + +#endif + diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf2_msgs/FrameGraph.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf2_msgs/FrameGraph.h new file mode 100644 index 0000000..9145639 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf2_msgs/FrameGraph.h @@ -0,0 +1,87 @@ +#ifndef _ROS_SERVICE_FrameGraph_h +#define _ROS_SERVICE_FrameGraph_h +#include +#include +#include +#include "ros/msg.h" + +namespace tf2_msgs +{ + +static const char FRAMEGRAPH[] = "tf2_msgs/FrameGraph"; + + class FrameGraphRequest : public ros::Msg + { + public: + + FrameGraphRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return FRAMEGRAPH; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class FrameGraphResponse : public ros::Msg + { + public: + typedef const char* _frame_yaml_type; + _frame_yaml_type frame_yaml; + + FrameGraphResponse(): + frame_yaml("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_frame_yaml = strlen(this->frame_yaml); + varToArr(outbuffer + offset, length_frame_yaml); + offset += 4; + memcpy(outbuffer + offset, this->frame_yaml, length_frame_yaml); + offset += length_frame_yaml; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_frame_yaml; + arrToVar(length_frame_yaml, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_frame_yaml; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_frame_yaml-1]=0; + this->frame_yaml = (char *)(inbuffer + offset-1); + offset += length_frame_yaml; + return offset; + } + + const char * getType(){ return FRAMEGRAPH; }; + const char * getMD5(){ return "437ea58e9463815a0d511c7326b686b0"; }; + + }; + + class FrameGraph { + public: + typedef FrameGraphRequest Request; + typedef FrameGraphResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformAction.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformAction.h new file mode 100644 index 0000000..733d095 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_tf2_msgs_LookupTransformAction_h +#define _ROS_tf2_msgs_LookupTransformAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "tf2_msgs/LookupTransformActionGoal.h" +#include "tf2_msgs/LookupTransformActionResult.h" +#include "tf2_msgs/LookupTransformActionFeedback.h" + +namespace tf2_msgs +{ + + class LookupTransformAction : public ros::Msg + { + public: + typedef tf2_msgs::LookupTransformActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef tf2_msgs::LookupTransformActionResult _action_result_type; + _action_result_type action_result; + typedef tf2_msgs::LookupTransformActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + LookupTransformAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "tf2_msgs/LookupTransformAction"; }; + const char * getMD5(){ return "7ee01ba91a56c2245c610992dbaa3c37"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformActionFeedback.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformActionFeedback.h new file mode 100644 index 0000000..39bd3b4 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_tf2_msgs_LookupTransformActionFeedback_h +#define _ROS_tf2_msgs_LookupTransformActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "tf2_msgs/LookupTransformFeedback.h" + +namespace tf2_msgs +{ + + class LookupTransformActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef tf2_msgs::LookupTransformFeedback _feedback_type; + _feedback_type feedback; + + LookupTransformActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "tf2_msgs/LookupTransformActionFeedback"; }; + const char * getMD5(){ return "aae20e09065c3809e8a8e87c4c8953fd"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformActionGoal.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformActionGoal.h new file mode 100644 index 0000000..92bc163 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_tf2_msgs_LookupTransformActionGoal_h +#define _ROS_tf2_msgs_LookupTransformActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "tf2_msgs/LookupTransformGoal.h" + +namespace tf2_msgs +{ + + class LookupTransformActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef tf2_msgs::LookupTransformGoal _goal_type; + _goal_type goal; + + LookupTransformActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "tf2_msgs/LookupTransformActionGoal"; }; + const char * getMD5(){ return "f2e7bcdb75c847978d0351a13e699da5"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformActionResult.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformActionResult.h new file mode 100644 index 0000000..38a98bd --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_tf2_msgs_LookupTransformActionResult_h +#define _ROS_tf2_msgs_LookupTransformActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "tf2_msgs/LookupTransformResult.h" + +namespace tf2_msgs +{ + + class LookupTransformActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef tf2_msgs::LookupTransformResult _result_type; + _result_type result; + + LookupTransformActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "tf2_msgs/LookupTransformActionResult"; }; + const char * getMD5(){ return "ac26ce75a41384fa8bb4dc10f491ab90"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformFeedback.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformFeedback.h new file mode 100644 index 0000000..6be0748 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformFeedback.h @@ -0,0 +1,38 @@ +#ifndef _ROS_tf2_msgs_LookupTransformFeedback_h +#define _ROS_tf2_msgs_LookupTransformFeedback_h + +#include +#include +#include +#include "ros/msg.h" + +namespace tf2_msgs +{ + + class LookupTransformFeedback : public ros::Msg + { + public: + + LookupTransformFeedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "tf2_msgs/LookupTransformFeedback"; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformGoal.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformGoal.h new file mode 100644 index 0000000..87a79ee --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformGoal.h @@ -0,0 +1,178 @@ +#ifndef _ROS_tf2_msgs_LookupTransformGoal_h +#define _ROS_tf2_msgs_LookupTransformGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "ros/time.h" +#include "ros/duration.h" + +namespace tf2_msgs +{ + + class LookupTransformGoal : public ros::Msg + { + public: + typedef const char* _target_frame_type; + _target_frame_type target_frame; + typedef const char* _source_frame_type; + _source_frame_type source_frame; + typedef ros::Time _source_time_type; + _source_time_type source_time; + typedef ros::Duration _timeout_type; + _timeout_type timeout; + typedef ros::Time _target_time_type; + _target_time_type target_time; + typedef const char* _fixed_frame_type; + _fixed_frame_type fixed_frame; + typedef bool _advanced_type; + _advanced_type advanced; + + LookupTransformGoal(): + target_frame(""), + source_frame(""), + source_time(), + timeout(), + target_time(), + fixed_frame(""), + advanced(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_target_frame = strlen(this->target_frame); + varToArr(outbuffer + offset, length_target_frame); + offset += 4; + memcpy(outbuffer + offset, this->target_frame, length_target_frame); + offset += length_target_frame; + uint32_t length_source_frame = strlen(this->source_frame); + varToArr(outbuffer + offset, length_source_frame); + offset += 4; + memcpy(outbuffer + offset, this->source_frame, length_source_frame); + offset += length_source_frame; + *(outbuffer + offset + 0) = (this->source_time.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->source_time.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->source_time.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->source_time.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->source_time.sec); + *(outbuffer + offset + 0) = (this->source_time.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->source_time.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->source_time.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->source_time.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->source_time.nsec); + *(outbuffer + offset + 0) = (this->timeout.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->timeout.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->timeout.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->timeout.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->timeout.sec); + *(outbuffer + offset + 0) = (this->timeout.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->timeout.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->timeout.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->timeout.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->timeout.nsec); + *(outbuffer + offset + 0) = (this->target_time.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->target_time.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->target_time.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->target_time.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->target_time.sec); + *(outbuffer + offset + 0) = (this->target_time.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->target_time.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->target_time.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->target_time.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->target_time.nsec); + uint32_t length_fixed_frame = strlen(this->fixed_frame); + varToArr(outbuffer + offset, length_fixed_frame); + offset += 4; + memcpy(outbuffer + offset, this->fixed_frame, length_fixed_frame); + offset += length_fixed_frame; + union { + bool real; + uint8_t base; + } u_advanced; + u_advanced.real = this->advanced; + *(outbuffer + offset + 0) = (u_advanced.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->advanced); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_target_frame; + arrToVar(length_target_frame, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_target_frame; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_target_frame-1]=0; + this->target_frame = (char *)(inbuffer + offset-1); + offset += length_target_frame; + uint32_t length_source_frame; + arrToVar(length_source_frame, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_source_frame; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_source_frame-1]=0; + this->source_frame = (char *)(inbuffer + offset-1); + offset += length_source_frame; + this->source_time.sec = ((uint32_t) (*(inbuffer + offset))); + this->source_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->source_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->source_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->source_time.sec); + this->source_time.nsec = ((uint32_t) (*(inbuffer + offset))); + this->source_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->source_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->source_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->source_time.nsec); + this->timeout.sec = ((uint32_t) (*(inbuffer + offset))); + this->timeout.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->timeout.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->timeout.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->timeout.sec); + this->timeout.nsec = ((uint32_t) (*(inbuffer + offset))); + this->timeout.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->timeout.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->timeout.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->timeout.nsec); + this->target_time.sec = ((uint32_t) (*(inbuffer + offset))); + this->target_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->target_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->target_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->target_time.sec); + this->target_time.nsec = ((uint32_t) (*(inbuffer + offset))); + this->target_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->target_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->target_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->target_time.nsec); + uint32_t length_fixed_frame; + arrToVar(length_fixed_frame, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_fixed_frame; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_fixed_frame-1]=0; + this->fixed_frame = (char *)(inbuffer + offset-1); + offset += length_fixed_frame; + union { + bool real; + uint8_t base; + } u_advanced; + u_advanced.base = 0; + u_advanced.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->advanced = u_advanced.real; + offset += sizeof(this->advanced); + return offset; + } + + const char * getType(){ return "tf2_msgs/LookupTransformGoal"; }; + const char * getMD5(){ return "35e3720468131d675a18bb6f3e5f22f8"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformResult.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformResult.h new file mode 100644 index 0000000..5422d7e --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf2_msgs/LookupTransformResult.h @@ -0,0 +1,50 @@ +#ifndef _ROS_tf2_msgs_LookupTransformResult_h +#define _ROS_tf2_msgs_LookupTransformResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/TransformStamped.h" +#include "tf2_msgs/TF2Error.h" + +namespace tf2_msgs +{ + + class LookupTransformResult : public ros::Msg + { + public: + typedef geometry_msgs::TransformStamped _transform_type; + _transform_type transform; + typedef tf2_msgs::TF2Error _error_type; + _error_type error; + + LookupTransformResult(): + transform(), + error() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->transform.serialize(outbuffer + offset); + offset += this->error.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->transform.deserialize(inbuffer + offset); + offset += this->error.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "tf2_msgs/LookupTransformResult"; }; + const char * getMD5(){ return "3fe5db6a19ca9cfb675418c5ad875c36"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf2_msgs/TF2Error.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf2_msgs/TF2Error.h new file mode 100644 index 0000000..e6efdce --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf2_msgs/TF2Error.h @@ -0,0 +1,69 @@ +#ifndef _ROS_tf2_msgs_TF2Error_h +#define _ROS_tf2_msgs_TF2Error_h + +#include +#include +#include +#include "ros/msg.h" + +namespace tf2_msgs +{ + + class TF2Error : public ros::Msg + { + public: + typedef uint8_t _error_type; + _error_type error; + typedef const char* _error_string_type; + _error_string_type error_string; + enum { NO_ERROR = 0 }; + enum { LOOKUP_ERROR = 1 }; + enum { CONNECTIVITY_ERROR = 2 }; + enum { EXTRAPOLATION_ERROR = 3 }; + enum { INVALID_ARGUMENT_ERROR = 4 }; + enum { TIMEOUT_ERROR = 5 }; + enum { TRANSFORM_ERROR = 6 }; + + TF2Error(): + error(0), + error_string("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->error >> (8 * 0)) & 0xFF; + offset += sizeof(this->error); + uint32_t length_error_string = strlen(this->error_string); + varToArr(outbuffer + offset, length_error_string); + offset += 4; + memcpy(outbuffer + offset, this->error_string, length_error_string); + offset += length_error_string; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->error = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->error); + uint32_t length_error_string; + arrToVar(length_error_string, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_error_string; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_error_string-1]=0; + this->error_string = (char *)(inbuffer + offset-1); + offset += length_error_string; + return offset; + } + + const char * getType(){ return "tf2_msgs/TF2Error"; }; + const char * getMD5(){ return "bc6848fd6fd750c92e38575618a4917d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf2_msgs/TFMessage.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf2_msgs/TFMessage.h new file mode 100644 index 0000000..fd8ff10 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf2_msgs/TFMessage.h @@ -0,0 +1,64 @@ +#ifndef _ROS_tf2_msgs_TFMessage_h +#define _ROS_tf2_msgs_TFMessage_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/TransformStamped.h" + +namespace tf2_msgs +{ + + class TFMessage : public ros::Msg + { + public: + uint32_t transforms_length; + typedef geometry_msgs::TransformStamped _transforms_type; + _transforms_type st_transforms; + _transforms_type * transforms; + + TFMessage(): + transforms_length(0), transforms(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->transforms_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->transforms_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->transforms_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->transforms_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->transforms_length); + for( uint32_t i = 0; i < transforms_length; i++){ + offset += this->transforms[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t transforms_lengthT = ((uint32_t) (*(inbuffer + offset))); + transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->transforms_length); + if(transforms_lengthT > transforms_length) + this->transforms = (geometry_msgs::TransformStamped*)realloc(this->transforms, transforms_lengthT * sizeof(geometry_msgs::TransformStamped)); + transforms_length = transforms_lengthT; + for( uint32_t i = 0; i < transforms_length; i++){ + offset += this->st_transforms.deserialize(inbuffer + offset); + memcpy( &(this->transforms[i]), &(this->st_transforms), sizeof(geometry_msgs::TransformStamped)); + } + return offset; + } + + const char * getType(){ return "tf2_msgs/TFMessage"; }; + const char * getMD5(){ return "94810edda583a504dfda3829e70d7eec"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/theora_image_transport/Packet.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/theora_image_transport/Packet.h new file mode 100644 index 0000000..b35e696 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/theora_image_transport/Packet.h @@ -0,0 +1,183 @@ +#ifndef _ROS_theora_image_transport_Packet_h +#define _ROS_theora_image_transport_Packet_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace theora_image_transport +{ + + class Packet : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t data_length; + typedef uint8_t _data_type; + _data_type st_data; + _data_type * data; + typedef int32_t _b_o_s_type; + _b_o_s_type b_o_s; + typedef int32_t _e_o_s_type; + _e_o_s_type e_o_s; + typedef int64_t _granulepos_type; + _granulepos_type granulepos; + typedef int64_t _packetno_type; + _packetno_type packetno; + + Packet(): + header(), + data_length(0), data(NULL), + b_o_s(0), + e_o_s(0), + granulepos(0), + packetno(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF; + offset += sizeof(this->data[i]); + } + union { + int32_t real; + uint32_t base; + } u_b_o_s; + u_b_o_s.real = this->b_o_s; + *(outbuffer + offset + 0) = (u_b_o_s.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_b_o_s.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_b_o_s.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_b_o_s.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->b_o_s); + union { + int32_t real; + uint32_t base; + } u_e_o_s; + u_e_o_s.real = this->e_o_s; + *(outbuffer + offset + 0) = (u_e_o_s.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_e_o_s.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_e_o_s.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_e_o_s.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->e_o_s); + union { + int64_t real; + uint64_t base; + } u_granulepos; + u_granulepos.real = this->granulepos; + *(outbuffer + offset + 0) = (u_granulepos.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_granulepos.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_granulepos.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_granulepos.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_granulepos.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_granulepos.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_granulepos.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_granulepos.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->granulepos); + union { + int64_t real; + uint64_t base; + } u_packetno; + u_packetno.real = this->packetno; + *(outbuffer + offset + 0) = (u_packetno.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_packetno.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_packetno.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_packetno.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_packetno.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_packetno.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_packetno.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_packetno.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->packetno); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (uint8_t*)realloc(this->data, data_lengthT * sizeof(uint8_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + this->st_data = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(uint8_t)); + } + union { + int32_t real; + uint32_t base; + } u_b_o_s; + u_b_o_s.base = 0; + u_b_o_s.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_b_o_s.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_b_o_s.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_b_o_s.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->b_o_s = u_b_o_s.real; + offset += sizeof(this->b_o_s); + union { + int32_t real; + uint32_t base; + } u_e_o_s; + u_e_o_s.base = 0; + u_e_o_s.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_e_o_s.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_e_o_s.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_e_o_s.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->e_o_s = u_e_o_s.real; + offset += sizeof(this->e_o_s); + union { + int64_t real; + uint64_t base; + } u_granulepos; + u_granulepos.base = 0; + u_granulepos.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_granulepos.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_granulepos.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_granulepos.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_granulepos.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_granulepos.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_granulepos.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_granulepos.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->granulepos = u_granulepos.real; + offset += sizeof(this->granulepos); + union { + int64_t real; + uint64_t base; + } u_packetno; + u_packetno.base = 0; + u_packetno.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_packetno.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_packetno.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_packetno.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_packetno.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_packetno.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_packetno.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_packetno.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->packetno = u_packetno.real; + offset += sizeof(this->packetno); + return offset; + } + + const char * getType(){ return "theora_image_transport/Packet"; }; + const char * getMD5(){ return "33ac4e14a7cff32e7e0d65f18bb410f3"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/time.cpp b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/time.cpp new file mode 100644 index 0000000..86221f9 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/time.cpp @@ -0,0 +1,70 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2011, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include "ros/time.h" + +namespace ros +{ +void normalizeSecNSec(uint32_t& sec, uint32_t& nsec) +{ + uint32_t nsec_part = nsec % 1000000000UL; + uint32_t sec_part = nsec / 1000000000UL; + sec += sec_part; + nsec = nsec_part; +} + +Time& Time::fromNSec(int32_t t) +{ + sec = t / 1000000000; + nsec = t % 1000000000; + normalizeSecNSec(sec, nsec); + return *this; +} + +Time& Time::operator +=(const Duration &rhs) +{ + sec += rhs.sec; + nsec += rhs.nsec; + normalizeSecNSec(sec, nsec); + return *this; +} + +Time& Time::operator -=(const Duration &rhs) +{ + sec += -rhs.sec; + nsec += -rhs.nsec; + normalizeSecNSec(sec, nsec); + return *this; +} +} diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/topic_tools/DemuxAdd.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/topic_tools/DemuxAdd.h new file mode 100644 index 0000000..d8016c6 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/topic_tools/DemuxAdd.h @@ -0,0 +1,87 @@ +#ifndef _ROS_SERVICE_DemuxAdd_h +#define _ROS_SERVICE_DemuxAdd_h +#include +#include +#include +#include "ros/msg.h" + +namespace topic_tools +{ + +static const char DEMUXADD[] = "topic_tools/DemuxAdd"; + + class DemuxAddRequest : public ros::Msg + { + public: + typedef const char* _topic_type; + _topic_type topic; + + DemuxAddRequest(): + topic("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_topic = strlen(this->topic); + varToArr(outbuffer + offset, length_topic); + offset += 4; + memcpy(outbuffer + offset, this->topic, length_topic); + offset += length_topic; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_topic; + arrToVar(length_topic, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_topic; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_topic-1]=0; + this->topic = (char *)(inbuffer + offset-1); + offset += length_topic; + return offset; + } + + const char * getType(){ return DEMUXADD; }; + const char * getMD5(){ return "d8f94bae31b356b24d0427f80426d0c3"; }; + + }; + + class DemuxAddResponse : public ros::Msg + { + public: + + DemuxAddResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return DEMUXADD; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class DemuxAdd { + public: + typedef DemuxAddRequest Request; + typedef DemuxAddResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/topic_tools/DemuxDelete.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/topic_tools/DemuxDelete.h new file mode 100644 index 0000000..3f030aa --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/topic_tools/DemuxDelete.h @@ -0,0 +1,87 @@ +#ifndef _ROS_SERVICE_DemuxDelete_h +#define _ROS_SERVICE_DemuxDelete_h +#include +#include +#include +#include "ros/msg.h" + +namespace topic_tools +{ + +static const char DEMUXDELETE[] = "topic_tools/DemuxDelete"; + + class DemuxDeleteRequest : public ros::Msg + { + public: + typedef const char* _topic_type; + _topic_type topic; + + DemuxDeleteRequest(): + topic("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_topic = strlen(this->topic); + varToArr(outbuffer + offset, length_topic); + offset += 4; + memcpy(outbuffer + offset, this->topic, length_topic); + offset += length_topic; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_topic; + arrToVar(length_topic, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_topic; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_topic-1]=0; + this->topic = (char *)(inbuffer + offset-1); + offset += length_topic; + return offset; + } + + const char * getType(){ return DEMUXDELETE; }; + const char * getMD5(){ return "d8f94bae31b356b24d0427f80426d0c3"; }; + + }; + + class DemuxDeleteResponse : public ros::Msg + { + public: + + DemuxDeleteResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return DEMUXDELETE; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class DemuxDelete { + public: + typedef DemuxDeleteRequest Request; + typedef DemuxDeleteResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/topic_tools/DemuxList.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/topic_tools/DemuxList.h new file mode 100644 index 0000000..0553329 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/topic_tools/DemuxList.h @@ -0,0 +1,107 @@ +#ifndef _ROS_SERVICE_DemuxList_h +#define _ROS_SERVICE_DemuxList_h +#include +#include +#include +#include "ros/msg.h" + +namespace topic_tools +{ + +static const char DEMUXLIST[] = "topic_tools/DemuxList"; + + class DemuxListRequest : public ros::Msg + { + public: + + DemuxListRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return DEMUXLIST; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class DemuxListResponse : public ros::Msg + { + public: + uint32_t topics_length; + typedef char* _topics_type; + _topics_type st_topics; + _topics_type * topics; + + DemuxListResponse(): + topics_length(0), topics(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->topics_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->topics_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->topics_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->topics_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->topics_length); + for( uint32_t i = 0; i < topics_length; i++){ + uint32_t length_topicsi = strlen(this->topics[i]); + varToArr(outbuffer + offset, length_topicsi); + offset += 4; + memcpy(outbuffer + offset, this->topics[i], length_topicsi); + offset += length_topicsi; + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t topics_lengthT = ((uint32_t) (*(inbuffer + offset))); + topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->topics_length); + if(topics_lengthT > topics_length) + this->topics = (char**)realloc(this->topics, topics_lengthT * sizeof(char*)); + topics_length = topics_lengthT; + for( uint32_t i = 0; i < topics_length; i++){ + uint32_t length_st_topics; + arrToVar(length_st_topics, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_topics; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_topics-1]=0; + this->st_topics = (char *)(inbuffer + offset-1); + offset += length_st_topics; + memcpy( &(this->topics[i]), &(this->st_topics), sizeof(char*)); + } + return offset; + } + + const char * getType(){ return DEMUXLIST; }; + const char * getMD5(){ return "b0eef9a05d4e829092fc2f2c3c2aad3d"; }; + + }; + + class DemuxList { + public: + typedef DemuxListRequest Request; + typedef DemuxListResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/topic_tools/DemuxSelect.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/topic_tools/DemuxSelect.h new file mode 100644 index 0000000..17a6d9b --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/topic_tools/DemuxSelect.h @@ -0,0 +1,104 @@ +#ifndef _ROS_SERVICE_DemuxSelect_h +#define _ROS_SERVICE_DemuxSelect_h +#include +#include +#include +#include "ros/msg.h" + +namespace topic_tools +{ + +static const char DEMUXSELECT[] = "topic_tools/DemuxSelect"; + + class DemuxSelectRequest : public ros::Msg + { + public: + typedef const char* _topic_type; + _topic_type topic; + + DemuxSelectRequest(): + topic("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_topic = strlen(this->topic); + varToArr(outbuffer + offset, length_topic); + offset += 4; + memcpy(outbuffer + offset, this->topic, length_topic); + offset += length_topic; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_topic; + arrToVar(length_topic, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_topic; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_topic-1]=0; + this->topic = (char *)(inbuffer + offset-1); + offset += length_topic; + return offset; + } + + const char * getType(){ return DEMUXSELECT; }; + const char * getMD5(){ return "d8f94bae31b356b24d0427f80426d0c3"; }; + + }; + + class DemuxSelectResponse : public ros::Msg + { + public: + typedef const char* _prev_topic_type; + _prev_topic_type prev_topic; + + DemuxSelectResponse(): + prev_topic("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_prev_topic = strlen(this->prev_topic); + varToArr(outbuffer + offset, length_prev_topic); + offset += 4; + memcpy(outbuffer + offset, this->prev_topic, length_prev_topic); + offset += length_prev_topic; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_prev_topic; + arrToVar(length_prev_topic, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_prev_topic; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_prev_topic-1]=0; + this->prev_topic = (char *)(inbuffer + offset-1); + offset += length_prev_topic; + return offset; + } + + const char * getType(){ return DEMUXSELECT; }; + const char * getMD5(){ return "3db0a473debdbafea387c9e49358c320"; }; + + }; + + class DemuxSelect { + public: + typedef DemuxSelectRequest Request; + typedef DemuxSelectResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/topic_tools/MuxAdd.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/topic_tools/MuxAdd.h new file mode 100644 index 0000000..25a649a --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/topic_tools/MuxAdd.h @@ -0,0 +1,87 @@ +#ifndef _ROS_SERVICE_MuxAdd_h +#define _ROS_SERVICE_MuxAdd_h +#include +#include +#include +#include "ros/msg.h" + +namespace topic_tools +{ + +static const char MUXADD[] = "topic_tools/MuxAdd"; + + class MuxAddRequest : public ros::Msg + { + public: + typedef const char* _topic_type; + _topic_type topic; + + MuxAddRequest(): + topic("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_topic = strlen(this->topic); + varToArr(outbuffer + offset, length_topic); + offset += 4; + memcpy(outbuffer + offset, this->topic, length_topic); + offset += length_topic; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_topic; + arrToVar(length_topic, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_topic; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_topic-1]=0; + this->topic = (char *)(inbuffer + offset-1); + offset += length_topic; + return offset; + } + + const char * getType(){ return MUXADD; }; + const char * getMD5(){ return "d8f94bae31b356b24d0427f80426d0c3"; }; + + }; + + class MuxAddResponse : public ros::Msg + { + public: + + MuxAddResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return MUXADD; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class MuxAdd { + public: + typedef MuxAddRequest Request; + typedef MuxAddResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/topic_tools/MuxDelete.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/topic_tools/MuxDelete.h new file mode 100644 index 0000000..3672ad5 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/topic_tools/MuxDelete.h @@ -0,0 +1,87 @@ +#ifndef _ROS_SERVICE_MuxDelete_h +#define _ROS_SERVICE_MuxDelete_h +#include +#include +#include +#include "ros/msg.h" + +namespace topic_tools +{ + +static const char MUXDELETE[] = "topic_tools/MuxDelete"; + + class MuxDeleteRequest : public ros::Msg + { + public: + typedef const char* _topic_type; + _topic_type topic; + + MuxDeleteRequest(): + topic("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_topic = strlen(this->topic); + varToArr(outbuffer + offset, length_topic); + offset += 4; + memcpy(outbuffer + offset, this->topic, length_topic); + offset += length_topic; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_topic; + arrToVar(length_topic, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_topic; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_topic-1]=0; + this->topic = (char *)(inbuffer + offset-1); + offset += length_topic; + return offset; + } + + const char * getType(){ return MUXDELETE; }; + const char * getMD5(){ return "d8f94bae31b356b24d0427f80426d0c3"; }; + + }; + + class MuxDeleteResponse : public ros::Msg + { + public: + + MuxDeleteResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return MUXDELETE; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class MuxDelete { + public: + typedef MuxDeleteRequest Request; + typedef MuxDeleteResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/topic_tools/MuxList.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/topic_tools/MuxList.h new file mode 100644 index 0000000..5d7936d --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/topic_tools/MuxList.h @@ -0,0 +1,107 @@ +#ifndef _ROS_SERVICE_MuxList_h +#define _ROS_SERVICE_MuxList_h +#include +#include +#include +#include "ros/msg.h" + +namespace topic_tools +{ + +static const char MUXLIST[] = "topic_tools/MuxList"; + + class MuxListRequest : public ros::Msg + { + public: + + MuxListRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return MUXLIST; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class MuxListResponse : public ros::Msg + { + public: + uint32_t topics_length; + typedef char* _topics_type; + _topics_type st_topics; + _topics_type * topics; + + MuxListResponse(): + topics_length(0), topics(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->topics_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->topics_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->topics_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->topics_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->topics_length); + for( uint32_t i = 0; i < topics_length; i++){ + uint32_t length_topicsi = strlen(this->topics[i]); + varToArr(outbuffer + offset, length_topicsi); + offset += 4; + memcpy(outbuffer + offset, this->topics[i], length_topicsi); + offset += length_topicsi; + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t topics_lengthT = ((uint32_t) (*(inbuffer + offset))); + topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->topics_length); + if(topics_lengthT > topics_length) + this->topics = (char**)realloc(this->topics, topics_lengthT * sizeof(char*)); + topics_length = topics_lengthT; + for( uint32_t i = 0; i < topics_length; i++){ + uint32_t length_st_topics; + arrToVar(length_st_topics, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_topics; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_topics-1]=0; + this->st_topics = (char *)(inbuffer + offset-1); + offset += length_st_topics; + memcpy( &(this->topics[i]), &(this->st_topics), sizeof(char*)); + } + return offset; + } + + const char * getType(){ return MUXLIST; }; + const char * getMD5(){ return "b0eef9a05d4e829092fc2f2c3c2aad3d"; }; + + }; + + class MuxList { + public: + typedef MuxListRequest Request; + typedef MuxListResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/topic_tools/MuxSelect.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/topic_tools/MuxSelect.h new file mode 100644 index 0000000..67324a8 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/topic_tools/MuxSelect.h @@ -0,0 +1,104 @@ +#ifndef _ROS_SERVICE_MuxSelect_h +#define _ROS_SERVICE_MuxSelect_h +#include +#include +#include +#include "ros/msg.h" + +namespace topic_tools +{ + +static const char MUXSELECT[] = "topic_tools/MuxSelect"; + + class MuxSelectRequest : public ros::Msg + { + public: + typedef const char* _topic_type; + _topic_type topic; + + MuxSelectRequest(): + topic("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_topic = strlen(this->topic); + varToArr(outbuffer + offset, length_topic); + offset += 4; + memcpy(outbuffer + offset, this->topic, length_topic); + offset += length_topic; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_topic; + arrToVar(length_topic, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_topic; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_topic-1]=0; + this->topic = (char *)(inbuffer + offset-1); + offset += length_topic; + return offset; + } + + const char * getType(){ return MUXSELECT; }; + const char * getMD5(){ return "d8f94bae31b356b24d0427f80426d0c3"; }; + + }; + + class MuxSelectResponse : public ros::Msg + { + public: + typedef const char* _prev_topic_type; + _prev_topic_type prev_topic; + + MuxSelectResponse(): + prev_topic("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_prev_topic = strlen(this->prev_topic); + varToArr(outbuffer + offset, length_prev_topic); + offset += 4; + memcpy(outbuffer + offset, this->prev_topic, length_prev_topic); + offset += length_prev_topic; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_prev_topic; + arrToVar(length_prev_topic, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_prev_topic; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_prev_topic-1]=0; + this->prev_topic = (char *)(inbuffer + offset-1); + offset += length_prev_topic; + return offset; + } + + const char * getType(){ return MUXSELECT; }; + const char * getMD5(){ return "3db0a473debdbafea387c9e49358c320"; }; + + }; + + class MuxSelect { + public: + typedef MuxSelectRequest Request; + typedef MuxSelectResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/trajectory_msgs/JointTrajectory.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/trajectory_msgs/JointTrajectory.h new file mode 100644 index 0000000..f03d537 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/trajectory_msgs/JointTrajectory.h @@ -0,0 +1,107 @@ +#ifndef _ROS_trajectory_msgs_JointTrajectory_h +#define _ROS_trajectory_msgs_JointTrajectory_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "trajectory_msgs/JointTrajectoryPoint.h" + +namespace trajectory_msgs +{ + + class JointTrajectory : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t joint_names_length; + typedef char* _joint_names_type; + _joint_names_type st_joint_names; + _joint_names_type * joint_names; + uint32_t points_length; + typedef trajectory_msgs::JointTrajectoryPoint _points_type; + _points_type st_points; + _points_type * points; + + JointTrajectory(): + header(), + joint_names_length(0), joint_names(NULL), + points_length(0), points(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->joint_names_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->joint_names_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->joint_names_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->joint_names_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->joint_names_length); + for( uint32_t i = 0; i < joint_names_length; i++){ + uint32_t length_joint_namesi = strlen(this->joint_names[i]); + varToArr(outbuffer + offset, length_joint_namesi); + offset += 4; + memcpy(outbuffer + offset, this->joint_names[i], length_joint_namesi); + offset += length_joint_namesi; + } + *(outbuffer + offset + 0) = (this->points_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->points_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->points_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->points_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->points_length); + for( uint32_t i = 0; i < points_length; i++){ + offset += this->points[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t joint_names_lengthT = ((uint32_t) (*(inbuffer + offset))); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->joint_names_length); + if(joint_names_lengthT > joint_names_length) + this->joint_names = (char**)realloc(this->joint_names, joint_names_lengthT * sizeof(char*)); + joint_names_length = joint_names_lengthT; + for( uint32_t i = 0; i < joint_names_length; i++){ + uint32_t length_st_joint_names; + arrToVar(length_st_joint_names, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_joint_names; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_joint_names-1]=0; + this->st_joint_names = (char *)(inbuffer + offset-1); + offset += length_st_joint_names; + memcpy( &(this->joint_names[i]), &(this->st_joint_names), sizeof(char*)); + } + uint32_t points_lengthT = ((uint32_t) (*(inbuffer + offset))); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->points_length); + if(points_lengthT > points_length) + this->points = (trajectory_msgs::JointTrajectoryPoint*)realloc(this->points, points_lengthT * sizeof(trajectory_msgs::JointTrajectoryPoint)); + points_length = points_lengthT; + for( uint32_t i = 0; i < points_length; i++){ + offset += this->st_points.deserialize(inbuffer + offset); + memcpy( &(this->points[i]), &(this->st_points), sizeof(trajectory_msgs::JointTrajectoryPoint)); + } + return offset; + } + + const char * getType(){ return "trajectory_msgs/JointTrajectory"; }; + const char * getMD5(){ return "65b4f94a94d1ed67169da35a02f33d3f"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/trajectory_msgs/JointTrajectoryPoint.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/trajectory_msgs/JointTrajectoryPoint.h new file mode 100644 index 0000000..dac669b --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/trajectory_msgs/JointTrajectoryPoint.h @@ -0,0 +1,270 @@ +#ifndef _ROS_trajectory_msgs_JointTrajectoryPoint_h +#define _ROS_trajectory_msgs_JointTrajectoryPoint_h + +#include +#include +#include +#include "ros/msg.h" +#include "ros/duration.h" + +namespace trajectory_msgs +{ + + class JointTrajectoryPoint : public ros::Msg + { + public: + uint32_t positions_length; + typedef double _positions_type; + _positions_type st_positions; + _positions_type * positions; + uint32_t velocities_length; + typedef double _velocities_type; + _velocities_type st_velocities; + _velocities_type * velocities; + uint32_t accelerations_length; + typedef double _accelerations_type; + _accelerations_type st_accelerations; + _accelerations_type * accelerations; + uint32_t effort_length; + typedef double _effort_type; + _effort_type st_effort; + _effort_type * effort; + typedef ros::Duration _time_from_start_type; + _time_from_start_type time_from_start; + + JointTrajectoryPoint(): + positions_length(0), positions(NULL), + velocities_length(0), velocities(NULL), + accelerations_length(0), accelerations(NULL), + effort_length(0), effort(NULL), + time_from_start() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->positions_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->positions_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->positions_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->positions_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->positions_length); + for( uint32_t i = 0; i < positions_length; i++){ + union { + double real; + uint64_t base; + } u_positionsi; + u_positionsi.real = this->positions[i]; + *(outbuffer + offset + 0) = (u_positionsi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_positionsi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_positionsi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_positionsi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_positionsi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_positionsi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_positionsi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_positionsi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->positions[i]); + } + *(outbuffer + offset + 0) = (this->velocities_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->velocities_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->velocities_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->velocities_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->velocities_length); + for( uint32_t i = 0; i < velocities_length; i++){ + union { + double real; + uint64_t base; + } u_velocitiesi; + u_velocitiesi.real = this->velocities[i]; + *(outbuffer + offset + 0) = (u_velocitiesi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_velocitiesi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_velocitiesi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_velocitiesi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_velocitiesi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_velocitiesi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_velocitiesi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_velocitiesi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->velocities[i]); + } + *(outbuffer + offset + 0) = (this->accelerations_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->accelerations_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->accelerations_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->accelerations_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->accelerations_length); + for( uint32_t i = 0; i < accelerations_length; i++){ + union { + double real; + uint64_t base; + } u_accelerationsi; + u_accelerationsi.real = this->accelerations[i]; + *(outbuffer + offset + 0) = (u_accelerationsi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_accelerationsi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_accelerationsi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_accelerationsi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_accelerationsi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_accelerationsi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_accelerationsi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_accelerationsi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->accelerations[i]); + } + *(outbuffer + offset + 0) = (this->effort_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->effort_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->effort_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->effort_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->effort_length); + for( uint32_t i = 0; i < effort_length; i++){ + union { + double real; + uint64_t base; + } u_efforti; + u_efforti.real = this->effort[i]; + *(outbuffer + offset + 0) = (u_efforti.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_efforti.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_efforti.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_efforti.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_efforti.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_efforti.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_efforti.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_efforti.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->effort[i]); + } + *(outbuffer + offset + 0) = (this->time_from_start.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->time_from_start.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->time_from_start.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->time_from_start.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->time_from_start.sec); + *(outbuffer + offset + 0) = (this->time_from_start.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->time_from_start.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->time_from_start.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->time_from_start.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->time_from_start.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t positions_lengthT = ((uint32_t) (*(inbuffer + offset))); + positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->positions_length); + if(positions_lengthT > positions_length) + this->positions = (double*)realloc(this->positions, positions_lengthT * sizeof(double)); + positions_length = positions_lengthT; + for( uint32_t i = 0; i < positions_length; i++){ + union { + double real; + uint64_t base; + } u_st_positions; + u_st_positions.base = 0; + u_st_positions.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_positions.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_positions.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_positions.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_positions.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_positions.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_positions.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_positions.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_positions = u_st_positions.real; + offset += sizeof(this->st_positions); + memcpy( &(this->positions[i]), &(this->st_positions), sizeof(double)); + } + uint32_t velocities_lengthT = ((uint32_t) (*(inbuffer + offset))); + velocities_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + velocities_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + velocities_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->velocities_length); + if(velocities_lengthT > velocities_length) + this->velocities = (double*)realloc(this->velocities, velocities_lengthT * sizeof(double)); + velocities_length = velocities_lengthT; + for( uint32_t i = 0; i < velocities_length; i++){ + union { + double real; + uint64_t base; + } u_st_velocities; + u_st_velocities.base = 0; + u_st_velocities.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_velocities.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_velocities.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_velocities.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_velocities.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_velocities.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_velocities.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_velocities.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_velocities = u_st_velocities.real; + offset += sizeof(this->st_velocities); + memcpy( &(this->velocities[i]), &(this->st_velocities), sizeof(double)); + } + uint32_t accelerations_lengthT = ((uint32_t) (*(inbuffer + offset))); + accelerations_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + accelerations_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + accelerations_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->accelerations_length); + if(accelerations_lengthT > accelerations_length) + this->accelerations = (double*)realloc(this->accelerations, accelerations_lengthT * sizeof(double)); + accelerations_length = accelerations_lengthT; + for( uint32_t i = 0; i < accelerations_length; i++){ + union { + double real; + uint64_t base; + } u_st_accelerations; + u_st_accelerations.base = 0; + u_st_accelerations.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_accelerations.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_accelerations.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_accelerations.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_accelerations.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_accelerations.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_accelerations.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_accelerations.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_accelerations = u_st_accelerations.real; + offset += sizeof(this->st_accelerations); + memcpy( &(this->accelerations[i]), &(this->st_accelerations), sizeof(double)); + } + uint32_t effort_lengthT = ((uint32_t) (*(inbuffer + offset))); + effort_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + effort_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + effort_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->effort_length); + if(effort_lengthT > effort_length) + this->effort = (double*)realloc(this->effort, effort_lengthT * sizeof(double)); + effort_length = effort_lengthT; + for( uint32_t i = 0; i < effort_length; i++){ + union { + double real; + uint64_t base; + } u_st_effort; + u_st_effort.base = 0; + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_effort = u_st_effort.real; + offset += sizeof(this->st_effort); + memcpy( &(this->effort[i]), &(this->st_effort), sizeof(double)); + } + this->time_from_start.sec = ((uint32_t) (*(inbuffer + offset))); + this->time_from_start.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->time_from_start.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->time_from_start.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->time_from_start.sec); + this->time_from_start.nsec = ((uint32_t) (*(inbuffer + offset))); + this->time_from_start.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->time_from_start.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->time_from_start.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->time_from_start.nsec); + return offset; + } + + const char * getType(){ return "trajectory_msgs/JointTrajectoryPoint"; }; + const char * getMD5(){ return "f3cd1e1c4d320c79d6985c904ae5dcd3"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/trajectory_msgs/MultiDOFJointTrajectory.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/trajectory_msgs/MultiDOFJointTrajectory.h new file mode 100644 index 0000000..2ab653c --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/trajectory_msgs/MultiDOFJointTrajectory.h @@ -0,0 +1,107 @@ +#ifndef _ROS_trajectory_msgs_MultiDOFJointTrajectory_h +#define _ROS_trajectory_msgs_MultiDOFJointTrajectory_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "trajectory_msgs/MultiDOFJointTrajectoryPoint.h" + +namespace trajectory_msgs +{ + + class MultiDOFJointTrajectory : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t joint_names_length; + typedef char* _joint_names_type; + _joint_names_type st_joint_names; + _joint_names_type * joint_names; + uint32_t points_length; + typedef trajectory_msgs::MultiDOFJointTrajectoryPoint _points_type; + _points_type st_points; + _points_type * points; + + MultiDOFJointTrajectory(): + header(), + joint_names_length(0), joint_names(NULL), + points_length(0), points(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->joint_names_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->joint_names_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->joint_names_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->joint_names_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->joint_names_length); + for( uint32_t i = 0; i < joint_names_length; i++){ + uint32_t length_joint_namesi = strlen(this->joint_names[i]); + varToArr(outbuffer + offset, length_joint_namesi); + offset += 4; + memcpy(outbuffer + offset, this->joint_names[i], length_joint_namesi); + offset += length_joint_namesi; + } + *(outbuffer + offset + 0) = (this->points_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->points_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->points_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->points_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->points_length); + for( uint32_t i = 0; i < points_length; i++){ + offset += this->points[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t joint_names_lengthT = ((uint32_t) (*(inbuffer + offset))); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->joint_names_length); + if(joint_names_lengthT > joint_names_length) + this->joint_names = (char**)realloc(this->joint_names, joint_names_lengthT * sizeof(char*)); + joint_names_length = joint_names_lengthT; + for( uint32_t i = 0; i < joint_names_length; i++){ + uint32_t length_st_joint_names; + arrToVar(length_st_joint_names, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_joint_names; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_joint_names-1]=0; + this->st_joint_names = (char *)(inbuffer + offset-1); + offset += length_st_joint_names; + memcpy( &(this->joint_names[i]), &(this->st_joint_names), sizeof(char*)); + } + uint32_t points_lengthT = ((uint32_t) (*(inbuffer + offset))); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->points_length); + if(points_lengthT > points_length) + this->points = (trajectory_msgs::MultiDOFJointTrajectoryPoint*)realloc(this->points, points_lengthT * sizeof(trajectory_msgs::MultiDOFJointTrajectoryPoint)); + points_length = points_lengthT; + for( uint32_t i = 0; i < points_length; i++){ + offset += this->st_points.deserialize(inbuffer + offset); + memcpy( &(this->points[i]), &(this->st_points), sizeof(trajectory_msgs::MultiDOFJointTrajectoryPoint)); + } + return offset; + } + + const char * getType(){ return "trajectory_msgs/MultiDOFJointTrajectory"; }; + const char * getMD5(){ return "ef145a45a5f47b77b7f5cdde4b16c942"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/trajectory_msgs/MultiDOFJointTrajectoryPoint.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/trajectory_msgs/MultiDOFJointTrajectoryPoint.h new file mode 100644 index 0000000..88b4564 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/trajectory_msgs/MultiDOFJointTrajectoryPoint.h @@ -0,0 +1,139 @@ +#ifndef _ROS_trajectory_msgs_MultiDOFJointTrajectoryPoint_h +#define _ROS_trajectory_msgs_MultiDOFJointTrajectoryPoint_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Transform.h" +#include "geometry_msgs/Twist.h" +#include "ros/duration.h" + +namespace trajectory_msgs +{ + + class MultiDOFJointTrajectoryPoint : public ros::Msg + { + public: + uint32_t transforms_length; + typedef geometry_msgs::Transform _transforms_type; + _transforms_type st_transforms; + _transforms_type * transforms; + uint32_t velocities_length; + typedef geometry_msgs::Twist _velocities_type; + _velocities_type st_velocities; + _velocities_type * velocities; + uint32_t accelerations_length; + typedef geometry_msgs::Twist _accelerations_type; + _accelerations_type st_accelerations; + _accelerations_type * accelerations; + typedef ros::Duration _time_from_start_type; + _time_from_start_type time_from_start; + + MultiDOFJointTrajectoryPoint(): + transforms_length(0), transforms(NULL), + velocities_length(0), velocities(NULL), + accelerations_length(0), accelerations(NULL), + time_from_start() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->transforms_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->transforms_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->transforms_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->transforms_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->transforms_length); + for( uint32_t i = 0; i < transforms_length; i++){ + offset += this->transforms[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->velocities_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->velocities_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->velocities_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->velocities_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->velocities_length); + for( uint32_t i = 0; i < velocities_length; i++){ + offset += this->velocities[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->accelerations_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->accelerations_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->accelerations_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->accelerations_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->accelerations_length); + for( uint32_t i = 0; i < accelerations_length; i++){ + offset += this->accelerations[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->time_from_start.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->time_from_start.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->time_from_start.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->time_from_start.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->time_from_start.sec); + *(outbuffer + offset + 0) = (this->time_from_start.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->time_from_start.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->time_from_start.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->time_from_start.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->time_from_start.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t transforms_lengthT = ((uint32_t) (*(inbuffer + offset))); + transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->transforms_length); + if(transforms_lengthT > transforms_length) + this->transforms = (geometry_msgs::Transform*)realloc(this->transforms, transforms_lengthT * sizeof(geometry_msgs::Transform)); + transforms_length = transforms_lengthT; + for( uint32_t i = 0; i < transforms_length; i++){ + offset += this->st_transforms.deserialize(inbuffer + offset); + memcpy( &(this->transforms[i]), &(this->st_transforms), sizeof(geometry_msgs::Transform)); + } + uint32_t velocities_lengthT = ((uint32_t) (*(inbuffer + offset))); + velocities_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + velocities_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + velocities_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->velocities_length); + if(velocities_lengthT > velocities_length) + this->velocities = (geometry_msgs::Twist*)realloc(this->velocities, velocities_lengthT * sizeof(geometry_msgs::Twist)); + velocities_length = velocities_lengthT; + for( uint32_t i = 0; i < velocities_length; i++){ + offset += this->st_velocities.deserialize(inbuffer + offset); + memcpy( &(this->velocities[i]), &(this->st_velocities), sizeof(geometry_msgs::Twist)); + } + uint32_t accelerations_lengthT = ((uint32_t) (*(inbuffer + offset))); + accelerations_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + accelerations_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + accelerations_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->accelerations_length); + if(accelerations_lengthT > accelerations_length) + this->accelerations = (geometry_msgs::Twist*)realloc(this->accelerations, accelerations_lengthT * sizeof(geometry_msgs::Twist)); + accelerations_length = accelerations_lengthT; + for( uint32_t i = 0; i < accelerations_length; i++){ + offset += this->st_accelerations.deserialize(inbuffer + offset); + memcpy( &(this->accelerations[i]), &(this->st_accelerations), sizeof(geometry_msgs::Twist)); + } + this->time_from_start.sec = ((uint32_t) (*(inbuffer + offset))); + this->time_from_start.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->time_from_start.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->time_from_start.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->time_from_start.sec); + this->time_from_start.nsec = ((uint32_t) (*(inbuffer + offset))); + this->time_from_start.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->time_from_start.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->time_from_start.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->time_from_start.nsec); + return offset; + } + + const char * getType(){ return "trajectory_msgs/MultiDOFJointTrajectoryPoint"; }; + const char * getMD5(){ return "3ebe08d1abd5b65862d50e09430db776"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeAction.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeAction.h new file mode 100644 index 0000000..f100e9a --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_turtle_actionlib_ShapeAction_h +#define _ROS_turtle_actionlib_ShapeAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "turtle_actionlib/ShapeActionGoal.h" +#include "turtle_actionlib/ShapeActionResult.h" +#include "turtle_actionlib/ShapeActionFeedback.h" + +namespace turtle_actionlib +{ + + class ShapeAction : public ros::Msg + { + public: + typedef turtle_actionlib::ShapeActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef turtle_actionlib::ShapeActionResult _action_result_type; + _action_result_type action_result; + typedef turtle_actionlib::ShapeActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + ShapeAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "turtle_actionlib/ShapeAction"; }; + const char * getMD5(){ return "d73b17d6237a925511f5d7727a1dc903"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeActionFeedback.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeActionFeedback.h new file mode 100644 index 0000000..b57b28c --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_turtle_actionlib_ShapeActionFeedback_h +#define _ROS_turtle_actionlib_ShapeActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "turtle_actionlib/ShapeFeedback.h" + +namespace turtle_actionlib +{ + + class ShapeActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef turtle_actionlib::ShapeFeedback _feedback_type; + _feedback_type feedback; + + ShapeActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "turtle_actionlib/ShapeActionFeedback"; }; + const char * getMD5(){ return "aae20e09065c3809e8a8e87c4c8953fd"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeActionGoal.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeActionGoal.h new file mode 100644 index 0000000..732215e --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_turtle_actionlib_ShapeActionGoal_h +#define _ROS_turtle_actionlib_ShapeActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "turtle_actionlib/ShapeGoal.h" + +namespace turtle_actionlib +{ + + class ShapeActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef turtle_actionlib::ShapeGoal _goal_type; + _goal_type goal; + + ShapeActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "turtle_actionlib/ShapeActionGoal"; }; + const char * getMD5(){ return "dbfccd187f2ec9c593916447ffd6cc77"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeActionResult.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeActionResult.h new file mode 100644 index 0000000..b4e4213 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_turtle_actionlib_ShapeActionResult_h +#define _ROS_turtle_actionlib_ShapeActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "turtle_actionlib/ShapeResult.h" + +namespace turtle_actionlib +{ + + class ShapeActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef turtle_actionlib::ShapeResult _result_type; + _result_type result; + + ShapeActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "turtle_actionlib/ShapeActionResult"; }; + const char * getMD5(){ return "c8d13d5d140f1047a2e4d3bf5c045822"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeFeedback.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeFeedback.h new file mode 100644 index 0000000..6c00c07 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeFeedback.h @@ -0,0 +1,38 @@ +#ifndef _ROS_turtle_actionlib_ShapeFeedback_h +#define _ROS_turtle_actionlib_ShapeFeedback_h + +#include +#include +#include +#include "ros/msg.h" + +namespace turtle_actionlib +{ + + class ShapeFeedback : public ros::Msg + { + public: + + ShapeFeedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "turtle_actionlib/ShapeFeedback"; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeGoal.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeGoal.h new file mode 100644 index 0000000..bb72d11 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeGoal.h @@ -0,0 +1,86 @@ +#ifndef _ROS_turtle_actionlib_ShapeGoal_h +#define _ROS_turtle_actionlib_ShapeGoal_h + +#include +#include +#include +#include "ros/msg.h" + +namespace turtle_actionlib +{ + + class ShapeGoal : public ros::Msg + { + public: + typedef int32_t _edges_type; + _edges_type edges; + typedef float _radius_type; + _radius_type radius; + + ShapeGoal(): + edges(0), + radius(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_edges; + u_edges.real = this->edges; + *(outbuffer + offset + 0) = (u_edges.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_edges.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_edges.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_edges.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->edges); + union { + float real; + uint32_t base; + } u_radius; + u_radius.real = this->radius; + *(outbuffer + offset + 0) = (u_radius.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_radius.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_radius.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_radius.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->radius); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_edges; + u_edges.base = 0; + u_edges.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_edges.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_edges.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_edges.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->edges = u_edges.real; + offset += sizeof(this->edges); + union { + float real; + uint32_t base; + } u_radius; + u_radius.base = 0; + u_radius.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_radius.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_radius.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_radius.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->radius = u_radius.real; + offset += sizeof(this->radius); + return offset; + } + + const char * getType(){ return "turtle_actionlib/ShapeGoal"; }; + const char * getMD5(){ return "3b9202ab7292cebe5a95ab2bf6b9c091"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeResult.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeResult.h new file mode 100644 index 0000000..2a9127d --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtle_actionlib/ShapeResult.h @@ -0,0 +1,86 @@ +#ifndef _ROS_turtle_actionlib_ShapeResult_h +#define _ROS_turtle_actionlib_ShapeResult_h + +#include +#include +#include +#include "ros/msg.h" + +namespace turtle_actionlib +{ + + class ShapeResult : public ros::Msg + { + public: + typedef float _interior_angle_type; + _interior_angle_type interior_angle; + typedef float _apothem_type; + _apothem_type apothem; + + ShapeResult(): + interior_angle(0), + apothem(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + float real; + uint32_t base; + } u_interior_angle; + u_interior_angle.real = this->interior_angle; + *(outbuffer + offset + 0) = (u_interior_angle.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_interior_angle.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_interior_angle.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_interior_angle.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->interior_angle); + union { + float real; + uint32_t base; + } u_apothem; + u_apothem.real = this->apothem; + *(outbuffer + offset + 0) = (u_apothem.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_apothem.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_apothem.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_apothem.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->apothem); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + float real; + uint32_t base; + } u_interior_angle; + u_interior_angle.base = 0; + u_interior_angle.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_interior_angle.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_interior_angle.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_interior_angle.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->interior_angle = u_interior_angle.real; + offset += sizeof(this->interior_angle); + union { + float real; + uint32_t base; + } u_apothem; + u_apothem.base = 0; + u_apothem.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_apothem.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_apothem.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_apothem.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->apothem = u_apothem.real; + offset += sizeof(this->apothem); + return offset; + } + + const char * getType(){ return "turtle_actionlib/ShapeResult"; }; + const char * getMD5(){ return "b06c6e2225f820dbc644270387cd1a7c"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtle_actionlib/Velocity.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtle_actionlib/Velocity.h new file mode 100644 index 0000000..ab7141e --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtle_actionlib/Velocity.h @@ -0,0 +1,86 @@ +#ifndef _ROS_turtle_actionlib_Velocity_h +#define _ROS_turtle_actionlib_Velocity_h + +#include +#include +#include +#include "ros/msg.h" + +namespace turtle_actionlib +{ + + class Velocity : public ros::Msg + { + public: + typedef float _linear_type; + _linear_type linear; + typedef float _angular_type; + _angular_type angular; + + Velocity(): + linear(0), + angular(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + float real; + uint32_t base; + } u_linear; + u_linear.real = this->linear; + *(outbuffer + offset + 0) = (u_linear.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_linear.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_linear.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_linear.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->linear); + union { + float real; + uint32_t base; + } u_angular; + u_angular.real = this->angular; + *(outbuffer + offset + 0) = (u_angular.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_angular.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_angular.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_angular.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->angular); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + float real; + uint32_t base; + } u_linear; + u_linear.base = 0; + u_linear.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_linear.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_linear.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_linear.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->linear = u_linear.real; + offset += sizeof(this->linear); + union { + float real; + uint32_t base; + } u_angular; + u_angular.base = 0; + u_angular.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_angular.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_angular.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_angular.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->angular = u_angular.real; + offset += sizeof(this->angular); + return offset; + } + + const char * getType(){ return "turtle_actionlib/Velocity"; }; + const char * getMD5(){ return "9d5c2dcd348ac8f76ce2a4307bd63a13"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/MotorPower.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/MotorPower.h new file mode 100644 index 0000000..a22dc41 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/MotorPower.h @@ -0,0 +1,47 @@ +#ifndef _ROS_turtlebot3_msgs_MotorPower_h +#define _ROS_turtlebot3_msgs_MotorPower_h + +#include +#include +#include +#include "ros/msg.h" + +namespace turtlebot3_msgs +{ + + class MotorPower : public ros::Msg + { + public: + typedef uint8_t _state_type; + _state_type state; + enum { OFF = 0 }; + enum { ON = 1 }; + + MotorPower(): + state(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->state >> (8 * 0)) & 0xFF; + offset += sizeof(this->state); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->state = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->state); + return offset; + } + + const char * getType(){ return "turtlebot3_msgs/MotorPower"; }; + const char * getMD5(){ return "8f77c0161e0f2021493136bb5f3f0e51"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/PanoramaImg.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/PanoramaImg.h new file mode 100644 index 0000000..7d29869 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/PanoramaImg.h @@ -0,0 +1,180 @@ +#ifndef _ROS_turtlebot3_msgs_PanoramaImg_h +#define _ROS_turtlebot3_msgs_PanoramaImg_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "sensor_msgs/Image.h" + +namespace turtlebot3_msgs +{ + + class PanoramaImg : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef const char* _pano_id_type; + _pano_id_type pano_id; + typedef double _latitude_type; + _latitude_type latitude; + typedef double _longitude_type; + _longitude_type longitude; + typedef double _heading_type; + _heading_type heading; + typedef const char* _geo_tag_type; + _geo_tag_type geo_tag; + typedef sensor_msgs::Image _image_type; + _image_type image; + + PanoramaImg(): + header(), + pano_id(""), + latitude(0), + longitude(0), + heading(0), + geo_tag(""), + image() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + uint32_t length_pano_id = strlen(this->pano_id); + varToArr(outbuffer + offset, length_pano_id); + offset += 4; + memcpy(outbuffer + offset, this->pano_id, length_pano_id); + offset += length_pano_id; + union { + double real; + uint64_t base; + } u_latitude; + u_latitude.real = this->latitude; + *(outbuffer + offset + 0) = (u_latitude.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_latitude.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_latitude.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_latitude.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_latitude.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_latitude.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_latitude.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_latitude.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->latitude); + union { + double real; + uint64_t base; + } u_longitude; + u_longitude.real = this->longitude; + *(outbuffer + offset + 0) = (u_longitude.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_longitude.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_longitude.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_longitude.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_longitude.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_longitude.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_longitude.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_longitude.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->longitude); + union { + double real; + uint64_t base; + } u_heading; + u_heading.real = this->heading; + *(outbuffer + offset + 0) = (u_heading.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_heading.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_heading.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_heading.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_heading.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_heading.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_heading.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_heading.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->heading); + uint32_t length_geo_tag = strlen(this->geo_tag); + varToArr(outbuffer + offset, length_geo_tag); + offset += 4; + memcpy(outbuffer + offset, this->geo_tag, length_geo_tag); + offset += length_geo_tag; + offset += this->image.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t length_pano_id; + arrToVar(length_pano_id, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_pano_id; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_pano_id-1]=0; + this->pano_id = (char *)(inbuffer + offset-1); + offset += length_pano_id; + union { + double real; + uint64_t base; + } u_latitude; + u_latitude.base = 0; + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->latitude = u_latitude.real; + offset += sizeof(this->latitude); + union { + double real; + uint64_t base; + } u_longitude; + u_longitude.base = 0; + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->longitude = u_longitude.real; + offset += sizeof(this->longitude); + union { + double real; + uint64_t base; + } u_heading; + u_heading.base = 0; + u_heading.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_heading.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_heading.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_heading.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_heading.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_heading.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_heading.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_heading.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->heading = u_heading.real; + offset += sizeof(this->heading); + uint32_t length_geo_tag; + arrToVar(length_geo_tag, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_geo_tag; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_geo_tag-1]=0; + this->geo_tag = (char *)(inbuffer + offset-1); + offset += length_geo_tag; + offset += this->image.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "turtlebot3_msgs/PanoramaImg"; }; + const char * getMD5(){ return "aedf66295b374a7249a786af27aecc87"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/SensorState.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/SensorState.h new file mode 100644 index 0000000..34b624a --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/SensorState.h @@ -0,0 +1,166 @@ +#ifndef _ROS_turtlebot3_msgs_SensorState_h +#define _ROS_turtlebot3_msgs_SensorState_h + +#include +#include +#include +#include "../ros/msg.h" +#include "../ros/time.h" + +namespace turtlebot3_msgs +{ + + class SensorState : public ros::Msg + { + public: + typedef ros::Time _stamp_type; + _stamp_type stamp; + typedef uint8_t _bumper_type; + _bumper_type bumper; + typedef uint8_t _cliff_type; + _cliff_type cliff; + typedef uint8_t _button_type; + _button_type button; + typedef int32_t _left_encoder_type; + _left_encoder_type left_encoder; + typedef int32_t _right_encoder_type; + _right_encoder_type right_encoder; + typedef float _battery_type; + _battery_type battery; + enum { BUMPER_RIGHT = 1 }; + enum { BUMPER_CENTER = 2 }; + enum { BUMPER_LEFT = 4 }; + enum { CLIFF_RIGHT = 1 }; + enum { CLIFF_CENTER = 2 }; + enum { CLIFF_LEFT = 4 }; + enum { BUTTON0 = 1 }; + enum { BUTTON1 = 2 }; + enum { BUTTON2 = 4 }; + enum { ERROR_LEFT_MOTOR = 1 }; + enum { ERROR_RIGHT_MOTOR = 2 }; + + SensorState(): + stamp(), + bumper(0), + cliff(0), + button(0), + left_encoder(0), + right_encoder(0), + battery(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->stamp.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp.sec); + *(outbuffer + offset + 0) = (this->stamp.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp.nsec); + *(outbuffer + offset + 0) = (this->bumper >> (8 * 0)) & 0xFF; + offset += sizeof(this->bumper); + *(outbuffer + offset + 0) = (this->cliff >> (8 * 0)) & 0xFF; + offset += sizeof(this->cliff); + *(outbuffer + offset + 0) = (this->button >> (8 * 0)) & 0xFF; + offset += sizeof(this->button); + union { + int32_t real; + uint32_t base; + } u_left_encoder; + u_left_encoder.real = this->left_encoder; + *(outbuffer + offset + 0) = (u_left_encoder.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_left_encoder.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_left_encoder.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_left_encoder.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->left_encoder); + union { + int32_t real; + uint32_t base; + } u_right_encoder; + u_right_encoder.real = this->right_encoder; + *(outbuffer + offset + 0) = (u_right_encoder.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_right_encoder.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_right_encoder.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_right_encoder.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->right_encoder); + union { + float real; + uint32_t base; + } u_battery; + u_battery.real = this->battery; + *(outbuffer + offset + 0) = (u_battery.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_battery.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_battery.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_battery.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->battery); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->stamp.sec = ((uint32_t) (*(inbuffer + offset))); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp.sec); + this->stamp.nsec = ((uint32_t) (*(inbuffer + offset))); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp.nsec); + this->bumper = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->bumper); + this->cliff = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->cliff); + this->button = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->button); + union { + int32_t real; + uint32_t base; + } u_left_encoder; + u_left_encoder.base = 0; + u_left_encoder.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_left_encoder.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_left_encoder.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_left_encoder.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->left_encoder = u_left_encoder.real; + offset += sizeof(this->left_encoder); + union { + int32_t real; + uint32_t base; + } u_right_encoder; + u_right_encoder.base = 0; + u_right_encoder.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_right_encoder.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_right_encoder.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_right_encoder.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->right_encoder = u_right_encoder.real; + offset += sizeof(this->right_encoder); + union { + float real; + uint32_t base; + } u_battery; + u_battery.base = 0; + u_battery.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_battery.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_battery.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_battery.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->battery = u_battery.real; + offset += sizeof(this->battery); + return offset; + } + + const char * getType(){ return "turtlebot3_msgs/SensorState"; }; + const char * getMD5(){ return "427f77f85da38bc1aa3f65ffb673c94c"; }; + + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/SetFollowState.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/SetFollowState.h new file mode 100644 index 0000000..cb16e5c --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/SetFollowState.h @@ -0,0 +1,88 @@ +#ifndef _ROS_SERVICE_SetFollowState_h +#define _ROS_SERVICE_SetFollowState_h +#include +#include +#include +#include "ros/msg.h" + +namespace turtlebot3_msgs +{ + +static const char SETFOLLOWSTATE[] = "turtlebot3_msgs/SetFollowState"; + + class SetFollowStateRequest : public ros::Msg + { + public: + typedef uint8_t _state_type; + _state_type state; + enum { STOPPED = 0 }; + enum { FOLLOW = 1 }; + + SetFollowStateRequest(): + state(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->state >> (8 * 0)) & 0xFF; + offset += sizeof(this->state); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->state = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->state); + return offset; + } + + const char * getType(){ return SETFOLLOWSTATE; }; + const char * getMD5(){ return "92b912c48c68248015bb32deb0bf7713"; }; + + }; + + class SetFollowStateResponse : public ros::Msg + { + public: + typedef uint8_t _result_type; + _result_type result; + enum { OK = 0 }; + enum { ERROR = 1 }; + + SetFollowStateResponse(): + result(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->result >> (8 * 0)) & 0xFF; + offset += sizeof(this->result); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->result = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->result); + return offset; + } + + const char * getType(){ return SETFOLLOWSTATE; }; + const char * getMD5(){ return "37065417175a2f4a49100bc798e5ee49"; }; + + }; + + class SetFollowState { + public: + typedef SetFollowStateRequest Request; + typedef SetFollowStateResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/TakePanorama.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/TakePanorama.h new file mode 100644 index 0000000..4adde37 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/TakePanorama.h @@ -0,0 +1,162 @@ +#ifndef _ROS_SERVICE_TakePanorama_h +#define _ROS_SERVICE_TakePanorama_h +#include +#include +#include +#include "ros/msg.h" + +namespace turtlebot3_msgs +{ + +static const char TAKEPANORAMA[] = "turtlebot3_msgs/TakePanorama"; + + class TakePanoramaRequest : public ros::Msg + { + public: + typedef uint8_t _mode_type; + _mode_type mode; + typedef float _pano_angle_type; + _pano_angle_type pano_angle; + typedef float _snap_interval_type; + _snap_interval_type snap_interval; + typedef float _rot_vel_type; + _rot_vel_type rot_vel; + enum { SNAPANDROTATE = 0 }; + enum { CONTINUOUS = 1 }; + enum { STOP = 2 }; + + TakePanoramaRequest(): + mode(0), + pano_angle(0), + snap_interval(0), + rot_vel(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->mode >> (8 * 0)) & 0xFF; + offset += sizeof(this->mode); + union { + float real; + uint32_t base; + } u_pano_angle; + u_pano_angle.real = this->pano_angle; + *(outbuffer + offset + 0) = (u_pano_angle.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_pano_angle.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_pano_angle.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_pano_angle.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->pano_angle); + union { + float real; + uint32_t base; + } u_snap_interval; + u_snap_interval.real = this->snap_interval; + *(outbuffer + offset + 0) = (u_snap_interval.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_snap_interval.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_snap_interval.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_snap_interval.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->snap_interval); + union { + float real; + uint32_t base; + } u_rot_vel; + u_rot_vel.real = this->rot_vel; + *(outbuffer + offset + 0) = (u_rot_vel.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_rot_vel.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_rot_vel.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_rot_vel.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->rot_vel); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->mode = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->mode); + union { + float real; + uint32_t base; + } u_pano_angle; + u_pano_angle.base = 0; + u_pano_angle.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_pano_angle.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_pano_angle.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_pano_angle.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->pano_angle = u_pano_angle.real; + offset += sizeof(this->pano_angle); + union { + float real; + uint32_t base; + } u_snap_interval; + u_snap_interval.base = 0; + u_snap_interval.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_snap_interval.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_snap_interval.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_snap_interval.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->snap_interval = u_snap_interval.real; + offset += sizeof(this->snap_interval); + union { + float real; + uint32_t base; + } u_rot_vel; + u_rot_vel.base = 0; + u_rot_vel.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_rot_vel.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_rot_vel.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_rot_vel.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->rot_vel = u_rot_vel.real; + offset += sizeof(this->rot_vel); + return offset; + } + + const char * getType(){ return TAKEPANORAMA; }; + const char * getMD5(){ return "f52c694c82704221735cc576c7587ecc"; }; + + }; + + class TakePanoramaResponse : public ros::Msg + { + public: + typedef uint8_t _status_type; + _status_type status; + enum { STARTED = 0 }; + enum { IN_PROGRESS = 1 }; + enum { STOPPED = 2 }; + + TakePanoramaResponse(): + status(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->status >> (8 * 0)) & 0xFF; + offset += sizeof(this->status); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->status = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->status); + return offset; + } + + const char * getType(){ return TAKEPANORAMA; }; + const char * getMD5(){ return "1ebe3e03b034aa9578d367d7cf6ed627"; }; + + }; + + class TakePanorama { + public: + typedef TakePanoramaRequest Request; + typedef TakePanoramaResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/VersionInfo.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/VersionInfo.h new file mode 100644 index 0000000..3d81b30 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlebot3_msgs/VersionInfo.h @@ -0,0 +1,89 @@ +#ifndef _ROS_turtlebot3_msgs_VersionInfo_h +#define _ROS_turtlebot3_msgs_VersionInfo_h + +#include +#include +#include +#include "ros/msg.h" + +namespace turtlebot3_msgs +{ + + class VersionInfo : public ros::Msg + { + public: + typedef const char* _hardware_type; + _hardware_type hardware; + typedef const char* _firmware_type; + _firmware_type firmware; + typedef const char* _software_type; + _software_type software; + + VersionInfo(): + hardware(""), + firmware(""), + software("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_hardware = strlen(this->hardware); + varToArr(outbuffer + offset, length_hardware); + offset += 4; + memcpy(outbuffer + offset, this->hardware, length_hardware); + offset += length_hardware; + uint32_t length_firmware = strlen(this->firmware); + varToArr(outbuffer + offset, length_firmware); + offset += 4; + memcpy(outbuffer + offset, this->firmware, length_firmware); + offset += length_firmware; + uint32_t length_software = strlen(this->software); + varToArr(outbuffer + offset, length_software); + offset += 4; + memcpy(outbuffer + offset, this->software, length_software); + offset += length_software; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_hardware; + arrToVar(length_hardware, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_hardware; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_hardware-1]=0; + this->hardware = (char *)(inbuffer + offset-1); + offset += length_hardware; + uint32_t length_firmware; + arrToVar(length_firmware, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_firmware; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_firmware-1]=0; + this->firmware = (char *)(inbuffer + offset-1); + offset += length_firmware; + uint32_t length_software; + arrToVar(length_software, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_software; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_software-1]=0; + this->software = (char *)(inbuffer + offset-1); + offset += length_software; + return offset; + } + + const char * getType(){ return "turtlebot3_msgs/VersionInfo"; }; + const char * getMD5(){ return "43e0361461af2970a33107409403ef3c"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlesim/Color.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlesim/Color.h new file mode 100644 index 0000000..de80290 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlesim/Color.h @@ -0,0 +1,59 @@ +#ifndef _ROS_turtlesim_Color_h +#define _ROS_turtlesim_Color_h + +#include +#include +#include +#include "ros/msg.h" + +namespace turtlesim +{ + + class Color : public ros::Msg + { + public: + typedef uint8_t _r_type; + _r_type r; + typedef uint8_t _g_type; + _g_type g; + typedef uint8_t _b_type; + _b_type b; + + Color(): + r(0), + g(0), + b(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->r >> (8 * 0)) & 0xFF; + offset += sizeof(this->r); + *(outbuffer + offset + 0) = (this->g >> (8 * 0)) & 0xFF; + offset += sizeof(this->g); + *(outbuffer + offset + 0) = (this->b >> (8 * 0)) & 0xFF; + offset += sizeof(this->b); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->r = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->r); + this->g = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->g); + this->b = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->b); + return offset; + } + + const char * getType(){ return "turtlesim/Color"; }; + const char * getMD5(){ return "353891e354491c51aabe32df673fb446"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlesim/Kill.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlesim/Kill.h new file mode 100644 index 0000000..086f2bb --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlesim/Kill.h @@ -0,0 +1,87 @@ +#ifndef _ROS_SERVICE_Kill_h +#define _ROS_SERVICE_Kill_h +#include +#include +#include +#include "ros/msg.h" + +namespace turtlesim +{ + +static const char KILL[] = "turtlesim/Kill"; + + class KillRequest : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + + KillRequest(): + name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + return offset; + } + + const char * getType(){ return KILL; }; + const char * getMD5(){ return "c1f3d28f1b044c871e6eff2e9fc3c667"; }; + + }; + + class KillResponse : public ros::Msg + { + public: + + KillResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return KILL; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class Kill { + public: + typedef KillRequest Request; + typedef KillResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlesim/Pose.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlesim/Pose.h new file mode 100644 index 0000000..7dede41 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlesim/Pose.h @@ -0,0 +1,158 @@ +#ifndef _ROS_turtlesim_Pose_h +#define _ROS_turtlesim_Pose_h + +#include +#include +#include +#include "ros/msg.h" + +namespace turtlesim +{ + + class Pose : public ros::Msg + { + public: + typedef float _x_type; + _x_type x; + typedef float _y_type; + _y_type y; + typedef float _theta_type; + _theta_type theta; + typedef float _linear_velocity_type; + _linear_velocity_type linear_velocity; + typedef float _angular_velocity_type; + _angular_velocity_type angular_velocity; + + Pose(): + x(0), + y(0), + theta(0), + linear_velocity(0), + angular_velocity(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + float real; + uint32_t base; + } u_x; + u_x.real = this->x; + *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->x); + union { + float real; + uint32_t base; + } u_y; + u_y.real = this->y; + *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->y); + union { + float real; + uint32_t base; + } u_theta; + u_theta.real = this->theta; + *(outbuffer + offset + 0) = (u_theta.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_theta.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_theta.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_theta.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->theta); + union { + float real; + uint32_t base; + } u_linear_velocity; + u_linear_velocity.real = this->linear_velocity; + *(outbuffer + offset + 0) = (u_linear_velocity.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_linear_velocity.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_linear_velocity.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_linear_velocity.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->linear_velocity); + union { + float real; + uint32_t base; + } u_angular_velocity; + u_angular_velocity.real = this->angular_velocity; + *(outbuffer + offset + 0) = (u_angular_velocity.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_angular_velocity.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_angular_velocity.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_angular_velocity.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->angular_velocity); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + float real; + uint32_t base; + } u_x; + u_x.base = 0; + u_x.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->x = u_x.real; + offset += sizeof(this->x); + union { + float real; + uint32_t base; + } u_y; + u_y.base = 0; + u_y.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->y = u_y.real; + offset += sizeof(this->y); + union { + float real; + uint32_t base; + } u_theta; + u_theta.base = 0; + u_theta.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_theta.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_theta.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_theta.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->theta = u_theta.real; + offset += sizeof(this->theta); + union { + float real; + uint32_t base; + } u_linear_velocity; + u_linear_velocity.base = 0; + u_linear_velocity.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_linear_velocity.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_linear_velocity.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_linear_velocity.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->linear_velocity = u_linear_velocity.real; + offset += sizeof(this->linear_velocity); + union { + float real; + uint32_t base; + } u_angular_velocity; + u_angular_velocity.base = 0; + u_angular_velocity.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_angular_velocity.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_angular_velocity.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_angular_velocity.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->angular_velocity = u_angular_velocity.real; + offset += sizeof(this->angular_velocity); + return offset; + } + + const char * getType(){ return "turtlesim/Pose"; }; + const char * getMD5(){ return "863b248d5016ca62ea2e895ae5265cf9"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlesim/SetPen.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlesim/SetPen.h new file mode 100644 index 0000000..a0e32c0 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlesim/SetPen.h @@ -0,0 +1,105 @@ +#ifndef _ROS_SERVICE_SetPen_h +#define _ROS_SERVICE_SetPen_h +#include +#include +#include +#include "ros/msg.h" + +namespace turtlesim +{ + +static const char SETPEN[] = "turtlesim/SetPen"; + + class SetPenRequest : public ros::Msg + { + public: + typedef uint8_t _r_type; + _r_type r; + typedef uint8_t _g_type; + _g_type g; + typedef uint8_t _b_type; + _b_type b; + typedef uint8_t _width_type; + _width_type width; + typedef uint8_t _off_type; + _off_type off; + + SetPenRequest(): + r(0), + g(0), + b(0), + width(0), + off(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->r >> (8 * 0)) & 0xFF; + offset += sizeof(this->r); + *(outbuffer + offset + 0) = (this->g >> (8 * 0)) & 0xFF; + offset += sizeof(this->g); + *(outbuffer + offset + 0) = (this->b >> (8 * 0)) & 0xFF; + offset += sizeof(this->b); + *(outbuffer + offset + 0) = (this->width >> (8 * 0)) & 0xFF; + offset += sizeof(this->width); + *(outbuffer + offset + 0) = (this->off >> (8 * 0)) & 0xFF; + offset += sizeof(this->off); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->r = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->r); + this->g = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->g); + this->b = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->b); + this->width = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->width); + this->off = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->off); + return offset; + } + + const char * getType(){ return SETPEN; }; + const char * getMD5(){ return "9f452acce566bf0c0954594f69a8e41b"; }; + + }; + + class SetPenResponse : public ros::Msg + { + public: + + SetPenResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return SETPEN; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class SetPen { + public: + typedef SetPenRequest Request; + typedef SetPenResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlesim/Spawn.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlesim/Spawn.h new file mode 100644 index 0000000..f69b42f --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlesim/Spawn.h @@ -0,0 +1,176 @@ +#ifndef _ROS_SERVICE_Spawn_h +#define _ROS_SERVICE_Spawn_h +#include +#include +#include +#include "ros/msg.h" + +namespace turtlesim +{ + +static const char SPAWN[] = "turtlesim/Spawn"; + + class SpawnRequest : public ros::Msg + { + public: + typedef float _x_type; + _x_type x; + typedef float _y_type; + _y_type y; + typedef float _theta_type; + _theta_type theta; + typedef const char* _name_type; + _name_type name; + + SpawnRequest(): + x(0), + y(0), + theta(0), + name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + float real; + uint32_t base; + } u_x; + u_x.real = this->x; + *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->x); + union { + float real; + uint32_t base; + } u_y; + u_y.real = this->y; + *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->y); + union { + float real; + uint32_t base; + } u_theta; + u_theta.real = this->theta; + *(outbuffer + offset + 0) = (u_theta.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_theta.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_theta.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_theta.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->theta); + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + float real; + uint32_t base; + } u_x; + u_x.base = 0; + u_x.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->x = u_x.real; + offset += sizeof(this->x); + union { + float real; + uint32_t base; + } u_y; + u_y.base = 0; + u_y.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->y = u_y.real; + offset += sizeof(this->y); + union { + float real; + uint32_t base; + } u_theta; + u_theta.base = 0; + u_theta.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_theta.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_theta.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_theta.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->theta = u_theta.real; + offset += sizeof(this->theta); + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + return offset; + } + + const char * getType(){ return SPAWN; }; + const char * getMD5(){ return "57f001c49ab7b11d699f8606c1f4f7ff"; }; + + }; + + class SpawnResponse : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + + SpawnResponse(): + name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + return offset; + } + + const char * getType(){ return SPAWN; }; + const char * getMD5(){ return "c1f3d28f1b044c871e6eff2e9fc3c667"; }; + + }; + + class Spawn { + public: + typedef SpawnRequest Request; + typedef SpawnResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlesim/TeleportAbsolute.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlesim/TeleportAbsolute.h new file mode 100644 index 0000000..c81489b --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlesim/TeleportAbsolute.h @@ -0,0 +1,142 @@ +#ifndef _ROS_SERVICE_TeleportAbsolute_h +#define _ROS_SERVICE_TeleportAbsolute_h +#include +#include +#include +#include "ros/msg.h" + +namespace turtlesim +{ + +static const char TELEPORTABSOLUTE[] = "turtlesim/TeleportAbsolute"; + + class TeleportAbsoluteRequest : public ros::Msg + { + public: + typedef float _x_type; + _x_type x; + typedef float _y_type; + _y_type y; + typedef float _theta_type; + _theta_type theta; + + TeleportAbsoluteRequest(): + x(0), + y(0), + theta(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + float real; + uint32_t base; + } u_x; + u_x.real = this->x; + *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->x); + union { + float real; + uint32_t base; + } u_y; + u_y.real = this->y; + *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->y); + union { + float real; + uint32_t base; + } u_theta; + u_theta.real = this->theta; + *(outbuffer + offset + 0) = (u_theta.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_theta.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_theta.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_theta.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->theta); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + float real; + uint32_t base; + } u_x; + u_x.base = 0; + u_x.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->x = u_x.real; + offset += sizeof(this->x); + union { + float real; + uint32_t base; + } u_y; + u_y.base = 0; + u_y.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->y = u_y.real; + offset += sizeof(this->y); + union { + float real; + uint32_t base; + } u_theta; + u_theta.base = 0; + u_theta.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_theta.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_theta.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_theta.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->theta = u_theta.real; + offset += sizeof(this->theta); + return offset; + } + + const char * getType(){ return TELEPORTABSOLUTE; }; + const char * getMD5(){ return "a130bc60ee6513855dc62ea83fcc5b20"; }; + + }; + + class TeleportAbsoluteResponse : public ros::Msg + { + public: + + TeleportAbsoluteResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return TELEPORTABSOLUTE; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class TeleportAbsolute { + public: + typedef TeleportAbsoluteRequest Request; + typedef TeleportAbsoluteResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlesim/TeleportRelative.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlesim/TeleportRelative.h new file mode 100644 index 0000000..2da9668 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/turtlesim/TeleportRelative.h @@ -0,0 +1,118 @@ +#ifndef _ROS_SERVICE_TeleportRelative_h +#define _ROS_SERVICE_TeleportRelative_h +#include +#include +#include +#include "ros/msg.h" + +namespace turtlesim +{ + +static const char TELEPORTRELATIVE[] = "turtlesim/TeleportRelative"; + + class TeleportRelativeRequest : public ros::Msg + { + public: + typedef float _linear_type; + _linear_type linear; + typedef float _angular_type; + _angular_type angular; + + TeleportRelativeRequest(): + linear(0), + angular(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + float real; + uint32_t base; + } u_linear; + u_linear.real = this->linear; + *(outbuffer + offset + 0) = (u_linear.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_linear.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_linear.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_linear.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->linear); + union { + float real; + uint32_t base; + } u_angular; + u_angular.real = this->angular; + *(outbuffer + offset + 0) = (u_angular.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_angular.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_angular.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_angular.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->angular); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + float real; + uint32_t base; + } u_linear; + u_linear.base = 0; + u_linear.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_linear.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_linear.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_linear.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->linear = u_linear.real; + offset += sizeof(this->linear); + union { + float real; + uint32_t base; + } u_angular; + u_angular.base = 0; + u_angular.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_angular.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_angular.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_angular.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->angular = u_angular.real; + offset += sizeof(this->angular); + return offset; + } + + const char * getType(){ return TELEPORTRELATIVE; }; + const char * getMD5(){ return "9d5c2dcd348ac8f76ce2a4307bd63a13"; }; + + }; + + class TeleportRelativeResponse : public ros::Msg + { + public: + + TeleportRelativeResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return TELEPORTRELATIVE; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class TeleportRelative { + public: + typedef TeleportRelativeRequest Request; + typedef TeleportRelativeResponse Response; + }; + +} +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/uuid_msgs/UniqueID.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/uuid_msgs/UniqueID.h new file mode 100644 index 0000000..bf14c40 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/uuid_msgs/UniqueID.h @@ -0,0 +1,48 @@ +#ifndef _ROS_uuid_msgs_UniqueID_h +#define _ROS_uuid_msgs_UniqueID_h + +#include +#include +#include +#include "ros/msg.h" + +namespace uuid_msgs +{ + + class UniqueID : public ros::Msg + { + public: + uint8_t uuid[16]; + + UniqueID(): + uuid() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + for( uint32_t i = 0; i < 16; i++){ + *(outbuffer + offset + 0) = (this->uuid[i] >> (8 * 0)) & 0xFF; + offset += sizeof(this->uuid[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + for( uint32_t i = 0; i < 16; i++){ + this->uuid[i] = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->uuid[i]); + } + return offset; + } + + const char * getType(){ return "uuid_msgs/UniqueID"; }; + const char * getMD5(){ return "fec2a93b6f5367ee8112c9c0b41ff310"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/variant_msgs/Test.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/variant_msgs/Test.h new file mode 100644 index 0000000..4316dfe --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/variant_msgs/Test.h @@ -0,0 +1,241 @@ +#ifndef _ROS_variant_msgs_Test_h +#define _ROS_variant_msgs_Test_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "std_msgs/Bool.h" +#include "std_msgs/String.h" + +namespace variant_msgs +{ + + class Test : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef int32_t _builtin_int_type; + _builtin_int_type builtin_int; + typedef bool _builtin_boolean_type; + _builtin_boolean_type builtin_boolean; + typedef std_msgs::Bool _boolean_type; + _boolean_type boolean; + typedef const char* _builtin_string_type; + _builtin_string_type builtin_string; + typedef std_msgs::String _string_type; + _string_type string; + int32_t builtin_int_array[3]; + uint32_t builtin_int_vector_length; + typedef int32_t _builtin_int_vector_type; + _builtin_int_vector_type st_builtin_int_vector; + _builtin_int_vector_type * builtin_int_vector; + std_msgs::String string_array[3]; + uint32_t string_vector_length; + typedef std_msgs::String _string_vector_type; + _string_vector_type st_string_vector; + _string_vector_type * string_vector; + bool builtin_boolean_array[3]; + enum { byte_constant = 42 }; + + Test(): + header(), + builtin_int(0), + builtin_boolean(0), + boolean(), + builtin_string(""), + string(), + builtin_int_array(), + builtin_int_vector_length(0), builtin_int_vector(NULL), + string_array(), + string_vector_length(0), string_vector(NULL), + builtin_boolean_array() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + union { + int32_t real; + uint32_t base; + } u_builtin_int; + u_builtin_int.real = this->builtin_int; + *(outbuffer + offset + 0) = (u_builtin_int.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_builtin_int.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_builtin_int.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_builtin_int.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->builtin_int); + union { + bool real; + uint8_t base; + } u_builtin_boolean; + u_builtin_boolean.real = this->builtin_boolean; + *(outbuffer + offset + 0) = (u_builtin_boolean.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->builtin_boolean); + offset += this->boolean.serialize(outbuffer + offset); + uint32_t length_builtin_string = strlen(this->builtin_string); + varToArr(outbuffer + offset, length_builtin_string); + offset += 4; + memcpy(outbuffer + offset, this->builtin_string, length_builtin_string); + offset += length_builtin_string; + offset += this->string.serialize(outbuffer + offset); + for( uint32_t i = 0; i < 3; i++){ + union { + int32_t real; + uint32_t base; + } u_builtin_int_arrayi; + u_builtin_int_arrayi.real = this->builtin_int_array[i]; + *(outbuffer + offset + 0) = (u_builtin_int_arrayi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_builtin_int_arrayi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_builtin_int_arrayi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_builtin_int_arrayi.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->builtin_int_array[i]); + } + *(outbuffer + offset + 0) = (this->builtin_int_vector_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->builtin_int_vector_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->builtin_int_vector_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->builtin_int_vector_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->builtin_int_vector_length); + for( uint32_t i = 0; i < builtin_int_vector_length; i++){ + union { + int32_t real; + uint32_t base; + } u_builtin_int_vectori; + u_builtin_int_vectori.real = this->builtin_int_vector[i]; + *(outbuffer + offset + 0) = (u_builtin_int_vectori.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_builtin_int_vectori.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_builtin_int_vectori.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_builtin_int_vectori.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->builtin_int_vector[i]); + } + for( uint32_t i = 0; i < 3; i++){ + offset += this->string_array[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->string_vector_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->string_vector_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->string_vector_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->string_vector_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->string_vector_length); + for( uint32_t i = 0; i < string_vector_length; i++){ + offset += this->string_vector[i].serialize(outbuffer + offset); + } + for( uint32_t i = 0; i < 3; i++){ + union { + bool real; + uint8_t base; + } u_builtin_boolean_arrayi; + u_builtin_boolean_arrayi.real = this->builtin_boolean_array[i]; + *(outbuffer + offset + 0) = (u_builtin_boolean_arrayi.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->builtin_boolean_array[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + union { + int32_t real; + uint32_t base; + } u_builtin_int; + u_builtin_int.base = 0; + u_builtin_int.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_builtin_int.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_builtin_int.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_builtin_int.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->builtin_int = u_builtin_int.real; + offset += sizeof(this->builtin_int); + union { + bool real; + uint8_t base; + } u_builtin_boolean; + u_builtin_boolean.base = 0; + u_builtin_boolean.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->builtin_boolean = u_builtin_boolean.real; + offset += sizeof(this->builtin_boolean); + offset += this->boolean.deserialize(inbuffer + offset); + uint32_t length_builtin_string; + arrToVar(length_builtin_string, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_builtin_string; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_builtin_string-1]=0; + this->builtin_string = (char *)(inbuffer + offset-1); + offset += length_builtin_string; + offset += this->string.deserialize(inbuffer + offset); + for( uint32_t i = 0; i < 3; i++){ + union { + int32_t real; + uint32_t base; + } u_builtin_int_arrayi; + u_builtin_int_arrayi.base = 0; + u_builtin_int_arrayi.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_builtin_int_arrayi.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_builtin_int_arrayi.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_builtin_int_arrayi.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->builtin_int_array[i] = u_builtin_int_arrayi.real; + offset += sizeof(this->builtin_int_array[i]); + } + uint32_t builtin_int_vector_lengthT = ((uint32_t) (*(inbuffer + offset))); + builtin_int_vector_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + builtin_int_vector_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + builtin_int_vector_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->builtin_int_vector_length); + if(builtin_int_vector_lengthT > builtin_int_vector_length) + this->builtin_int_vector = (int32_t*)realloc(this->builtin_int_vector, builtin_int_vector_lengthT * sizeof(int32_t)); + builtin_int_vector_length = builtin_int_vector_lengthT; + for( uint32_t i = 0; i < builtin_int_vector_length; i++){ + union { + int32_t real; + uint32_t base; + } u_st_builtin_int_vector; + u_st_builtin_int_vector.base = 0; + u_st_builtin_int_vector.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_builtin_int_vector.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_builtin_int_vector.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_builtin_int_vector.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_builtin_int_vector = u_st_builtin_int_vector.real; + offset += sizeof(this->st_builtin_int_vector); + memcpy( &(this->builtin_int_vector[i]), &(this->st_builtin_int_vector), sizeof(int32_t)); + } + for( uint32_t i = 0; i < 3; i++){ + offset += this->string_array[i].deserialize(inbuffer + offset); + } + uint32_t string_vector_lengthT = ((uint32_t) (*(inbuffer + offset))); + string_vector_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + string_vector_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + string_vector_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->string_vector_length); + if(string_vector_lengthT > string_vector_length) + this->string_vector = (std_msgs::String*)realloc(this->string_vector, string_vector_lengthT * sizeof(std_msgs::String)); + string_vector_length = string_vector_lengthT; + for( uint32_t i = 0; i < string_vector_length; i++){ + offset += this->st_string_vector.deserialize(inbuffer + offset); + memcpy( &(this->string_vector[i]), &(this->st_string_vector), sizeof(std_msgs::String)); + } + for( uint32_t i = 0; i < 3; i++){ + union { + bool real; + uint8_t base; + } u_builtin_boolean_arrayi; + u_builtin_boolean_arrayi.base = 0; + u_builtin_boolean_arrayi.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->builtin_boolean_array[i] = u_builtin_boolean_arrayi.real; + offset += sizeof(this->builtin_boolean_array[i]); + } + return offset; + } + + const char * getType(){ return "variant_msgs/Test"; }; + const char * getMD5(){ return "17d92d9cea3499753cb392766b3203a1"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/variant_msgs/Variant.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/variant_msgs/Variant.h new file mode 100644 index 0000000..c62dd44 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/variant_msgs/Variant.h @@ -0,0 +1,77 @@ +#ifndef _ROS_variant_msgs_Variant_h +#define _ROS_variant_msgs_Variant_h + +#include +#include +#include +#include "ros/msg.h" +#include "variant_msgs/VariantHeader.h" +#include "variant_msgs/VariantType.h" + +namespace variant_msgs +{ + + class Variant : public ros::Msg + { + public: + typedef variant_msgs::VariantHeader _header_type; + _header_type header; + typedef variant_msgs::VariantType _type_type; + _type_type type; + uint32_t data_length; + typedef uint8_t _data_type; + _data_type st_data; + _data_type * data; + + Variant(): + header(), + type(), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->type.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->type.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (uint8_t*)realloc(this->data, data_lengthT * sizeof(uint8_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + this->st_data = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(uint8_t)); + } + return offset; + } + + const char * getType(){ return "variant_msgs/Variant"; }; + const char * getMD5(){ return "01c24cd44ef34b0c6a309bcafb6bdfab"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/variant_msgs/VariantHeader.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/variant_msgs/VariantHeader.h new file mode 100644 index 0000000..236b5cb --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/variant_msgs/VariantHeader.h @@ -0,0 +1,90 @@ +#ifndef _ROS_variant_msgs_VariantHeader_h +#define _ROS_variant_msgs_VariantHeader_h + +#include +#include +#include +#include "ros/msg.h" + +namespace variant_msgs +{ + + class VariantHeader : public ros::Msg + { + public: + typedef const char* _publisher_type; + _publisher_type publisher; + typedef const char* _topic_type; + _topic_type topic; + typedef bool _latched_type; + _latched_type latched; + + VariantHeader(): + publisher(""), + topic(""), + latched(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_publisher = strlen(this->publisher); + varToArr(outbuffer + offset, length_publisher); + offset += 4; + memcpy(outbuffer + offset, this->publisher, length_publisher); + offset += length_publisher; + uint32_t length_topic = strlen(this->topic); + varToArr(outbuffer + offset, length_topic); + offset += 4; + memcpy(outbuffer + offset, this->topic, length_topic); + offset += length_topic; + union { + bool real; + uint8_t base; + } u_latched; + u_latched.real = this->latched; + *(outbuffer + offset + 0) = (u_latched.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->latched); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_publisher; + arrToVar(length_publisher, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_publisher; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_publisher-1]=0; + this->publisher = (char *)(inbuffer + offset-1); + offset += length_publisher; + uint32_t length_topic; + arrToVar(length_topic, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_topic; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_topic-1]=0; + this->topic = (char *)(inbuffer + offset-1); + offset += length_topic; + union { + bool real; + uint8_t base; + } u_latched; + u_latched.base = 0; + u_latched.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->latched = u_latched.real; + offset += sizeof(this->latched); + return offset; + } + + const char * getType(){ return "variant_msgs/VariantHeader"; }; + const char * getMD5(){ return "e4adbe277ed51d50644d64067b86c73d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/variant_msgs/VariantType.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/variant_msgs/VariantType.h new file mode 100644 index 0000000..66c7ac7 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/variant_msgs/VariantType.h @@ -0,0 +1,89 @@ +#ifndef _ROS_variant_msgs_VariantType_h +#define _ROS_variant_msgs_VariantType_h + +#include +#include +#include +#include "ros/msg.h" + +namespace variant_msgs +{ + + class VariantType : public ros::Msg + { + public: + typedef const char* _md5_sum_type; + _md5_sum_type md5_sum; + typedef const char* _data_type_type; + _data_type_type data_type; + typedef const char* _definition_type; + _definition_type definition; + + VariantType(): + md5_sum(""), + data_type(""), + definition("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_md5_sum = strlen(this->md5_sum); + varToArr(outbuffer + offset, length_md5_sum); + offset += 4; + memcpy(outbuffer + offset, this->md5_sum, length_md5_sum); + offset += length_md5_sum; + uint32_t length_data_type = strlen(this->data_type); + varToArr(outbuffer + offset, length_data_type); + offset += 4; + memcpy(outbuffer + offset, this->data_type, length_data_type); + offset += length_data_type; + uint32_t length_definition = strlen(this->definition); + varToArr(outbuffer + offset, length_definition); + offset += 4; + memcpy(outbuffer + offset, this->definition, length_definition); + offset += length_definition; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_md5_sum; + arrToVar(length_md5_sum, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_md5_sum; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_md5_sum-1]=0; + this->md5_sum = (char *)(inbuffer + offset-1); + offset += length_md5_sum; + uint32_t length_data_type; + arrToVar(length_data_type, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_data_type; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_data_type-1]=0; + this->data_type = (char *)(inbuffer + offset-1); + offset += length_data_type; + uint32_t length_definition; + arrToVar(length_definition, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_definition; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_definition-1]=0; + this->definition = (char *)(inbuffer + offset-1); + offset += length_definition; + return offset; + } + + const char * getType(){ return "variant_msgs/VariantType"; }; + const char * getMD5(){ return "ea49579a10d85560b62a77e2f2f84caf"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/visualization_msgs/ImageMarker.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/visualization_msgs/ImageMarker.h new file mode 100644 index 0000000..c69577a --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/visualization_msgs/ImageMarker.h @@ -0,0 +1,262 @@ +#ifndef _ROS_visualization_msgs_ImageMarker_h +#define _ROS_visualization_msgs_ImageMarker_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Point.h" +#include "std_msgs/ColorRGBA.h" +#include "ros/duration.h" + +namespace visualization_msgs +{ + + class ImageMarker : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef const char* _ns_type; + _ns_type ns; + typedef int32_t _id_type; + _id_type id; + typedef int32_t _type_type; + _type_type type; + typedef int32_t _action_type; + _action_type action; + typedef geometry_msgs::Point _position_type; + _position_type position; + typedef float _scale_type; + _scale_type scale; + typedef std_msgs::ColorRGBA _outline_color_type; + _outline_color_type outline_color; + typedef uint8_t _filled_type; + _filled_type filled; + typedef std_msgs::ColorRGBA _fill_color_type; + _fill_color_type fill_color; + typedef ros::Duration _lifetime_type; + _lifetime_type lifetime; + uint32_t points_length; + typedef geometry_msgs::Point _points_type; + _points_type st_points; + _points_type * points; + uint32_t outline_colors_length; + typedef std_msgs::ColorRGBA _outline_colors_type; + _outline_colors_type st_outline_colors; + _outline_colors_type * outline_colors; + enum { CIRCLE = 0 }; + enum { LINE_STRIP = 1 }; + enum { LINE_LIST = 2 }; + enum { POLYGON = 3 }; + enum { POINTS = 4 }; + enum { ADD = 0 }; + enum { REMOVE = 1 }; + + ImageMarker(): + header(), + ns(""), + id(0), + type(0), + action(0), + position(), + scale(0), + outline_color(), + filled(0), + fill_color(), + lifetime(), + points_length(0), points(NULL), + outline_colors_length(0), outline_colors(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + uint32_t length_ns = strlen(this->ns); + varToArr(outbuffer + offset, length_ns); + offset += 4; + memcpy(outbuffer + offset, this->ns, length_ns); + offset += length_ns; + union { + int32_t real; + uint32_t base; + } u_id; + u_id.real = this->id; + *(outbuffer + offset + 0) = (u_id.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_id.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_id.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_id.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->id); + union { + int32_t real; + uint32_t base; + } u_type; + u_type.real = this->type; + *(outbuffer + offset + 0) = (u_type.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_type.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_type.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_type.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->type); + union { + int32_t real; + uint32_t base; + } u_action; + u_action.real = this->action; + *(outbuffer + offset + 0) = (u_action.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_action.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_action.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_action.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->action); + offset += this->position.serialize(outbuffer + offset); + union { + float real; + uint32_t base; + } u_scale; + u_scale.real = this->scale; + *(outbuffer + offset + 0) = (u_scale.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_scale.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_scale.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_scale.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->scale); + offset += this->outline_color.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->filled >> (8 * 0)) & 0xFF; + offset += sizeof(this->filled); + offset += this->fill_color.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->lifetime.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->lifetime.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->lifetime.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->lifetime.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->lifetime.sec); + *(outbuffer + offset + 0) = (this->lifetime.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->lifetime.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->lifetime.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->lifetime.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->lifetime.nsec); + *(outbuffer + offset + 0) = (this->points_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->points_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->points_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->points_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->points_length); + for( uint32_t i = 0; i < points_length; i++){ + offset += this->points[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->outline_colors_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->outline_colors_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->outline_colors_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->outline_colors_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->outline_colors_length); + for( uint32_t i = 0; i < outline_colors_length; i++){ + offset += this->outline_colors[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t length_ns; + arrToVar(length_ns, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_ns; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_ns-1]=0; + this->ns = (char *)(inbuffer + offset-1); + offset += length_ns; + union { + int32_t real; + uint32_t base; + } u_id; + u_id.base = 0; + u_id.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_id.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_id.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_id.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->id = u_id.real; + offset += sizeof(this->id); + union { + int32_t real; + uint32_t base; + } u_type; + u_type.base = 0; + u_type.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_type.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_type.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_type.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->type = u_type.real; + offset += sizeof(this->type); + union { + int32_t real; + uint32_t base; + } u_action; + u_action.base = 0; + u_action.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_action.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_action.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_action.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->action = u_action.real; + offset += sizeof(this->action); + offset += this->position.deserialize(inbuffer + offset); + union { + float real; + uint32_t base; + } u_scale; + u_scale.base = 0; + u_scale.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_scale.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_scale.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_scale.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->scale = u_scale.real; + offset += sizeof(this->scale); + offset += this->outline_color.deserialize(inbuffer + offset); + this->filled = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->filled); + offset += this->fill_color.deserialize(inbuffer + offset); + this->lifetime.sec = ((uint32_t) (*(inbuffer + offset))); + this->lifetime.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->lifetime.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->lifetime.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->lifetime.sec); + this->lifetime.nsec = ((uint32_t) (*(inbuffer + offset))); + this->lifetime.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->lifetime.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->lifetime.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->lifetime.nsec); + uint32_t points_lengthT = ((uint32_t) (*(inbuffer + offset))); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->points_length); + if(points_lengthT > points_length) + this->points = (geometry_msgs::Point*)realloc(this->points, points_lengthT * sizeof(geometry_msgs::Point)); + points_length = points_lengthT; + for( uint32_t i = 0; i < points_length; i++){ + offset += this->st_points.deserialize(inbuffer + offset); + memcpy( &(this->points[i]), &(this->st_points), sizeof(geometry_msgs::Point)); + } + uint32_t outline_colors_lengthT = ((uint32_t) (*(inbuffer + offset))); + outline_colors_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + outline_colors_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + outline_colors_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->outline_colors_length); + if(outline_colors_lengthT > outline_colors_length) + this->outline_colors = (std_msgs::ColorRGBA*)realloc(this->outline_colors, outline_colors_lengthT * sizeof(std_msgs::ColorRGBA)); + outline_colors_length = outline_colors_lengthT; + for( uint32_t i = 0; i < outline_colors_length; i++){ + offset += this->st_outline_colors.deserialize(inbuffer + offset); + memcpy( &(this->outline_colors[i]), &(this->st_outline_colors), sizeof(std_msgs::ColorRGBA)); + } + return offset; + } + + const char * getType(){ return "visualization_msgs/ImageMarker"; }; + const char * getMD5(){ return "1de93c67ec8858b831025a08fbf1b35c"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarker.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarker.h new file mode 100644 index 0000000..8752679 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarker.h @@ -0,0 +1,160 @@ +#ifndef _ROS_visualization_msgs_InteractiveMarker_h +#define _ROS_visualization_msgs_InteractiveMarker_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Pose.h" +#include "visualization_msgs/MenuEntry.h" +#include "visualization_msgs/InteractiveMarkerControl.h" + +namespace visualization_msgs +{ + + class InteractiveMarker : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::Pose _pose_type; + _pose_type pose; + typedef const char* _name_type; + _name_type name; + typedef const char* _description_type; + _description_type description; + typedef float _scale_type; + _scale_type scale; + uint32_t menu_entries_length; + typedef visualization_msgs::MenuEntry _menu_entries_type; + _menu_entries_type st_menu_entries; + _menu_entries_type * menu_entries; + uint32_t controls_length; + typedef visualization_msgs::InteractiveMarkerControl _controls_type; + _controls_type st_controls; + _controls_type * controls; + + InteractiveMarker(): + header(), + pose(), + name(""), + description(""), + scale(0), + menu_entries_length(0), menu_entries(NULL), + controls_length(0), controls(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->pose.serialize(outbuffer + offset); + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + uint32_t length_description = strlen(this->description); + varToArr(outbuffer + offset, length_description); + offset += 4; + memcpy(outbuffer + offset, this->description, length_description); + offset += length_description; + union { + float real; + uint32_t base; + } u_scale; + u_scale.real = this->scale; + *(outbuffer + offset + 0) = (u_scale.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_scale.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_scale.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_scale.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->scale); + *(outbuffer + offset + 0) = (this->menu_entries_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->menu_entries_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->menu_entries_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->menu_entries_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->menu_entries_length); + for( uint32_t i = 0; i < menu_entries_length; i++){ + offset += this->menu_entries[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->controls_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->controls_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->controls_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->controls_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->controls_length); + for( uint32_t i = 0; i < controls_length; i++){ + offset += this->controls[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->pose.deserialize(inbuffer + offset); + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + uint32_t length_description; + arrToVar(length_description, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_description; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_description-1]=0; + this->description = (char *)(inbuffer + offset-1); + offset += length_description; + union { + float real; + uint32_t base; + } u_scale; + u_scale.base = 0; + u_scale.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_scale.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_scale.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_scale.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->scale = u_scale.real; + offset += sizeof(this->scale); + uint32_t menu_entries_lengthT = ((uint32_t) (*(inbuffer + offset))); + menu_entries_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + menu_entries_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + menu_entries_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->menu_entries_length); + if(menu_entries_lengthT > menu_entries_length) + this->menu_entries = (visualization_msgs::MenuEntry*)realloc(this->menu_entries, menu_entries_lengthT * sizeof(visualization_msgs::MenuEntry)); + menu_entries_length = menu_entries_lengthT; + for( uint32_t i = 0; i < menu_entries_length; i++){ + offset += this->st_menu_entries.deserialize(inbuffer + offset); + memcpy( &(this->menu_entries[i]), &(this->st_menu_entries), sizeof(visualization_msgs::MenuEntry)); + } + uint32_t controls_lengthT = ((uint32_t) (*(inbuffer + offset))); + controls_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + controls_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + controls_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->controls_length); + if(controls_lengthT > controls_length) + this->controls = (visualization_msgs::InteractiveMarkerControl*)realloc(this->controls, controls_lengthT * sizeof(visualization_msgs::InteractiveMarkerControl)); + controls_length = controls_lengthT; + for( uint32_t i = 0; i < controls_length; i++){ + offset += this->st_controls.deserialize(inbuffer + offset); + memcpy( &(this->controls[i]), &(this->st_controls), sizeof(visualization_msgs::InteractiveMarkerControl)); + } + return offset; + } + + const char * getType(){ return "visualization_msgs/InteractiveMarker"; }; + const char * getMD5(){ return "dd86d22909d5a3364b384492e35c10af"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarkerControl.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarkerControl.h new file mode 100644 index 0000000..0c905ce --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarkerControl.h @@ -0,0 +1,167 @@ +#ifndef _ROS_visualization_msgs_InteractiveMarkerControl_h +#define _ROS_visualization_msgs_InteractiveMarkerControl_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Quaternion.h" +#include "visualization_msgs/Marker.h" + +namespace visualization_msgs +{ + + class InteractiveMarkerControl : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef geometry_msgs::Quaternion _orientation_type; + _orientation_type orientation; + typedef uint8_t _orientation_mode_type; + _orientation_mode_type orientation_mode; + typedef uint8_t _interaction_mode_type; + _interaction_mode_type interaction_mode; + typedef bool _always_visible_type; + _always_visible_type always_visible; + uint32_t markers_length; + typedef visualization_msgs::Marker _markers_type; + _markers_type st_markers; + _markers_type * markers; + typedef bool _independent_marker_orientation_type; + _independent_marker_orientation_type independent_marker_orientation; + typedef const char* _description_type; + _description_type description; + enum { INHERIT = 0 }; + enum { FIXED = 1 }; + enum { VIEW_FACING = 2 }; + enum { NONE = 0 }; + enum { MENU = 1 }; + enum { BUTTON = 2 }; + enum { MOVE_AXIS = 3 }; + enum { MOVE_PLANE = 4 }; + enum { ROTATE_AXIS = 5 }; + enum { MOVE_ROTATE = 6 }; + enum { MOVE_3D = 7 }; + enum { ROTATE_3D = 8 }; + enum { MOVE_ROTATE_3D = 9 }; + + InteractiveMarkerControl(): + name(""), + orientation(), + orientation_mode(0), + interaction_mode(0), + always_visible(0), + markers_length(0), markers(NULL), + independent_marker_orientation(0), + description("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + offset += this->orientation.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->orientation_mode >> (8 * 0)) & 0xFF; + offset += sizeof(this->orientation_mode); + *(outbuffer + offset + 0) = (this->interaction_mode >> (8 * 0)) & 0xFF; + offset += sizeof(this->interaction_mode); + union { + bool real; + uint8_t base; + } u_always_visible; + u_always_visible.real = this->always_visible; + *(outbuffer + offset + 0) = (u_always_visible.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->always_visible); + *(outbuffer + offset + 0) = (this->markers_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->markers_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->markers_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->markers_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->markers_length); + for( uint32_t i = 0; i < markers_length; i++){ + offset += this->markers[i].serialize(outbuffer + offset); + } + union { + bool real; + uint8_t base; + } u_independent_marker_orientation; + u_independent_marker_orientation.real = this->independent_marker_orientation; + *(outbuffer + offset + 0) = (u_independent_marker_orientation.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->independent_marker_orientation); + uint32_t length_description = strlen(this->description); + varToArr(outbuffer + offset, length_description); + offset += 4; + memcpy(outbuffer + offset, this->description, length_description); + offset += length_description; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + offset += this->orientation.deserialize(inbuffer + offset); + this->orientation_mode = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->orientation_mode); + this->interaction_mode = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->interaction_mode); + union { + bool real; + uint8_t base; + } u_always_visible; + u_always_visible.base = 0; + u_always_visible.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->always_visible = u_always_visible.real; + offset += sizeof(this->always_visible); + uint32_t markers_lengthT = ((uint32_t) (*(inbuffer + offset))); + markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->markers_length); + if(markers_lengthT > markers_length) + this->markers = (visualization_msgs::Marker*)realloc(this->markers, markers_lengthT * sizeof(visualization_msgs::Marker)); + markers_length = markers_lengthT; + for( uint32_t i = 0; i < markers_length; i++){ + offset += this->st_markers.deserialize(inbuffer + offset); + memcpy( &(this->markers[i]), &(this->st_markers), sizeof(visualization_msgs::Marker)); + } + union { + bool real; + uint8_t base; + } u_independent_marker_orientation; + u_independent_marker_orientation.base = 0; + u_independent_marker_orientation.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->independent_marker_orientation = u_independent_marker_orientation.real; + offset += sizeof(this->independent_marker_orientation); + uint32_t length_description; + arrToVar(length_description, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_description; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_description-1]=0; + this->description = (char *)(inbuffer + offset-1); + offset += length_description; + return offset; + } + + const char * getType(){ return "visualization_msgs/InteractiveMarkerControl"; }; + const char * getMD5(){ return "b3c81e785788195d1840b86c28da1aac"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarkerFeedback.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarkerFeedback.h new file mode 100644 index 0000000..3d5cebb --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarkerFeedback.h @@ -0,0 +1,151 @@ +#ifndef _ROS_visualization_msgs_InteractiveMarkerFeedback_h +#define _ROS_visualization_msgs_InteractiveMarkerFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Pose.h" +#include "geometry_msgs/Point.h" + +namespace visualization_msgs +{ + + class InteractiveMarkerFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef const char* _client_id_type; + _client_id_type client_id; + typedef const char* _marker_name_type; + _marker_name_type marker_name; + typedef const char* _control_name_type; + _control_name_type control_name; + typedef uint8_t _event_type_type; + _event_type_type event_type; + typedef geometry_msgs::Pose _pose_type; + _pose_type pose; + typedef uint32_t _menu_entry_id_type; + _menu_entry_id_type menu_entry_id; + typedef geometry_msgs::Point _mouse_point_type; + _mouse_point_type mouse_point; + typedef bool _mouse_point_valid_type; + _mouse_point_valid_type mouse_point_valid; + enum { KEEP_ALIVE = 0 }; + enum { POSE_UPDATE = 1 }; + enum { MENU_SELECT = 2 }; + enum { BUTTON_CLICK = 3 }; + enum { MOUSE_DOWN = 4 }; + enum { MOUSE_UP = 5 }; + + InteractiveMarkerFeedback(): + header(), + client_id(""), + marker_name(""), + control_name(""), + event_type(0), + pose(), + menu_entry_id(0), + mouse_point(), + mouse_point_valid(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + uint32_t length_client_id = strlen(this->client_id); + varToArr(outbuffer + offset, length_client_id); + offset += 4; + memcpy(outbuffer + offset, this->client_id, length_client_id); + offset += length_client_id; + uint32_t length_marker_name = strlen(this->marker_name); + varToArr(outbuffer + offset, length_marker_name); + offset += 4; + memcpy(outbuffer + offset, this->marker_name, length_marker_name); + offset += length_marker_name; + uint32_t length_control_name = strlen(this->control_name); + varToArr(outbuffer + offset, length_control_name); + offset += 4; + memcpy(outbuffer + offset, this->control_name, length_control_name); + offset += length_control_name; + *(outbuffer + offset + 0) = (this->event_type >> (8 * 0)) & 0xFF; + offset += sizeof(this->event_type); + offset += this->pose.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->menu_entry_id >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->menu_entry_id >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->menu_entry_id >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->menu_entry_id >> (8 * 3)) & 0xFF; + offset += sizeof(this->menu_entry_id); + offset += this->mouse_point.serialize(outbuffer + offset); + union { + bool real; + uint8_t base; + } u_mouse_point_valid; + u_mouse_point_valid.real = this->mouse_point_valid; + *(outbuffer + offset + 0) = (u_mouse_point_valid.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->mouse_point_valid); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t length_client_id; + arrToVar(length_client_id, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_client_id; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_client_id-1]=0; + this->client_id = (char *)(inbuffer + offset-1); + offset += length_client_id; + uint32_t length_marker_name; + arrToVar(length_marker_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_marker_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_marker_name-1]=0; + this->marker_name = (char *)(inbuffer + offset-1); + offset += length_marker_name; + uint32_t length_control_name; + arrToVar(length_control_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_control_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_control_name-1]=0; + this->control_name = (char *)(inbuffer + offset-1); + offset += length_control_name; + this->event_type = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->event_type); + offset += this->pose.deserialize(inbuffer + offset); + this->menu_entry_id = ((uint32_t) (*(inbuffer + offset))); + this->menu_entry_id |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->menu_entry_id |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->menu_entry_id |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->menu_entry_id); + offset += this->mouse_point.deserialize(inbuffer + offset); + union { + bool real; + uint8_t base; + } u_mouse_point_valid; + u_mouse_point_valid.base = 0; + u_mouse_point_valid.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->mouse_point_valid = u_mouse_point_valid.real; + offset += sizeof(this->mouse_point_valid); + return offset; + } + + const char * getType(){ return "visualization_msgs/InteractiveMarkerFeedback"; }; + const char * getMD5(){ return "ab0f1eee058667e28c19ff3ffc3f4b78"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarkerInit.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarkerInit.h new file mode 100644 index 0000000..a6fb154 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarkerInit.h @@ -0,0 +1,105 @@ +#ifndef _ROS_visualization_msgs_InteractiveMarkerInit_h +#define _ROS_visualization_msgs_InteractiveMarkerInit_h + +#include +#include +#include +#include "ros/msg.h" +#include "visualization_msgs/InteractiveMarker.h" + +namespace visualization_msgs +{ + + class InteractiveMarkerInit : public ros::Msg + { + public: + typedef const char* _server_id_type; + _server_id_type server_id; + typedef uint64_t _seq_num_type; + _seq_num_type seq_num; + uint32_t markers_length; + typedef visualization_msgs::InteractiveMarker _markers_type; + _markers_type st_markers; + _markers_type * markers; + + InteractiveMarkerInit(): + server_id(""), + seq_num(0), + markers_length(0), markers(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_server_id = strlen(this->server_id); + varToArr(outbuffer + offset, length_server_id); + offset += 4; + memcpy(outbuffer + offset, this->server_id, length_server_id); + offset += length_server_id; + union { + uint64_t real; + uint32_t base; + } u_seq_num; + u_seq_num.real = this->seq_num; + *(outbuffer + offset + 0) = (u_seq_num.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_seq_num.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_seq_num.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_seq_num.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->seq_num); + *(outbuffer + offset + 0) = (this->markers_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->markers_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->markers_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->markers_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->markers_length); + for( uint32_t i = 0; i < markers_length; i++){ + offset += this->markers[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_server_id; + arrToVar(length_server_id, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_server_id; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_server_id-1]=0; + this->server_id = (char *)(inbuffer + offset-1); + offset += length_server_id; + union { + uint64_t real; + uint32_t base; + } u_seq_num; + u_seq_num.base = 0; + u_seq_num.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_seq_num.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_seq_num.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_seq_num.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->seq_num = u_seq_num.real; + offset += sizeof(this->seq_num); + uint32_t markers_lengthT = ((uint32_t) (*(inbuffer + offset))); + markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->markers_length); + if(markers_lengthT > markers_length) + this->markers = (visualization_msgs::InteractiveMarker*)realloc(this->markers, markers_lengthT * sizeof(visualization_msgs::InteractiveMarker)); + markers_length = markers_lengthT; + for( uint32_t i = 0; i < markers_length; i++){ + offset += this->st_markers.deserialize(inbuffer + offset); + memcpy( &(this->markers[i]), &(this->st_markers), sizeof(visualization_msgs::InteractiveMarker)); + } + return offset; + } + + const char * getType(){ return "visualization_msgs/InteractiveMarkerInit"; }; + const char * getMD5(){ return "d5f2c5045a72456d228676ab91048734"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarkerPose.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarkerPose.h new file mode 100644 index 0000000..f46032a --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarkerPose.h @@ -0,0 +1,67 @@ +#ifndef _ROS_visualization_msgs_InteractiveMarkerPose_h +#define _ROS_visualization_msgs_InteractiveMarkerPose_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Pose.h" + +namespace visualization_msgs +{ + + class InteractiveMarkerPose : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::Pose _pose_type; + _pose_type pose; + typedef const char* _name_type; + _name_type name; + + InteractiveMarkerPose(): + header(), + pose(), + name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->pose.serialize(outbuffer + offset); + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->pose.deserialize(inbuffer + offset); + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + return offset; + } + + const char * getType(){ return "visualization_msgs/InteractiveMarkerPose"; }; + const char * getMD5(){ return "a6e6833209a196a38d798dadb02c81f8"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarkerUpdate.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarkerUpdate.h new file mode 100644 index 0000000..8cea6ca --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/visualization_msgs/InteractiveMarkerUpdate.h @@ -0,0 +1,177 @@ +#ifndef _ROS_visualization_msgs_InteractiveMarkerUpdate_h +#define _ROS_visualization_msgs_InteractiveMarkerUpdate_h + +#include +#include +#include +#include "ros/msg.h" +#include "visualization_msgs/InteractiveMarker.h" +#include "visualization_msgs/InteractiveMarkerPose.h" + +namespace visualization_msgs +{ + + class InteractiveMarkerUpdate : public ros::Msg + { + public: + typedef const char* _server_id_type; + _server_id_type server_id; + typedef uint64_t _seq_num_type; + _seq_num_type seq_num; + typedef uint8_t _type_type; + _type_type type; + uint32_t markers_length; + typedef visualization_msgs::InteractiveMarker _markers_type; + _markers_type st_markers; + _markers_type * markers; + uint32_t poses_length; + typedef visualization_msgs::InteractiveMarkerPose _poses_type; + _poses_type st_poses; + _poses_type * poses; + uint32_t erases_length; + typedef char* _erases_type; + _erases_type st_erases; + _erases_type * erases; + enum { KEEP_ALIVE = 0 }; + enum { UPDATE = 1 }; + + InteractiveMarkerUpdate(): + server_id(""), + seq_num(0), + type(0), + markers_length(0), markers(NULL), + poses_length(0), poses(NULL), + erases_length(0), erases(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_server_id = strlen(this->server_id); + varToArr(outbuffer + offset, length_server_id); + offset += 4; + memcpy(outbuffer + offset, this->server_id, length_server_id); + offset += length_server_id; + union { + uint64_t real; + uint32_t base; + } u_seq_num; + u_seq_num.real = this->seq_num; + *(outbuffer + offset + 0) = (u_seq_num.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_seq_num.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_seq_num.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_seq_num.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->seq_num); + *(outbuffer + offset + 0) = (this->type >> (8 * 0)) & 0xFF; + offset += sizeof(this->type); + *(outbuffer + offset + 0) = (this->markers_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->markers_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->markers_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->markers_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->markers_length); + for( uint32_t i = 0; i < markers_length; i++){ + offset += this->markers[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->poses_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->poses_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->poses_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->poses_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->poses_length); + for( uint32_t i = 0; i < poses_length; i++){ + offset += this->poses[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->erases_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->erases_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->erases_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->erases_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->erases_length); + for( uint32_t i = 0; i < erases_length; i++){ + uint32_t length_erasesi = strlen(this->erases[i]); + varToArr(outbuffer + offset, length_erasesi); + offset += 4; + memcpy(outbuffer + offset, this->erases[i], length_erasesi); + offset += length_erasesi; + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_server_id; + arrToVar(length_server_id, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_server_id; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_server_id-1]=0; + this->server_id = (char *)(inbuffer + offset-1); + offset += length_server_id; + union { + uint64_t real; + uint32_t base; + } u_seq_num; + u_seq_num.base = 0; + u_seq_num.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_seq_num.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_seq_num.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_seq_num.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->seq_num = u_seq_num.real; + offset += sizeof(this->seq_num); + this->type = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->type); + uint32_t markers_lengthT = ((uint32_t) (*(inbuffer + offset))); + markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->markers_length); + if(markers_lengthT > markers_length) + this->markers = (visualization_msgs::InteractiveMarker*)realloc(this->markers, markers_lengthT * sizeof(visualization_msgs::InteractiveMarker)); + markers_length = markers_lengthT; + for( uint32_t i = 0; i < markers_length; i++){ + offset += this->st_markers.deserialize(inbuffer + offset); + memcpy( &(this->markers[i]), &(this->st_markers), sizeof(visualization_msgs::InteractiveMarker)); + } + uint32_t poses_lengthT = ((uint32_t) (*(inbuffer + offset))); + poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->poses_length); + if(poses_lengthT > poses_length) + this->poses = (visualization_msgs::InteractiveMarkerPose*)realloc(this->poses, poses_lengthT * sizeof(visualization_msgs::InteractiveMarkerPose)); + poses_length = poses_lengthT; + for( uint32_t i = 0; i < poses_length; i++){ + offset += this->st_poses.deserialize(inbuffer + offset); + memcpy( &(this->poses[i]), &(this->st_poses), sizeof(visualization_msgs::InteractiveMarkerPose)); + } + uint32_t erases_lengthT = ((uint32_t) (*(inbuffer + offset))); + erases_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + erases_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + erases_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->erases_length); + if(erases_lengthT > erases_length) + this->erases = (char**)realloc(this->erases, erases_lengthT * sizeof(char*)); + erases_length = erases_lengthT; + for( uint32_t i = 0; i < erases_length; i++){ + uint32_t length_st_erases; + arrToVar(length_st_erases, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_erases; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_erases-1]=0; + this->st_erases = (char *)(inbuffer + offset-1); + offset += length_st_erases; + memcpy( &(this->erases[i]), &(this->st_erases), sizeof(char*)); + } + return offset; + } + + const char * getType(){ return "visualization_msgs/InteractiveMarkerUpdate"; }; + const char * getMD5(){ return "710d308d0a9276d65945e92dd30b3946"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/visualization_msgs/Marker.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/visualization_msgs/Marker.h new file mode 100644 index 0000000..1c6e1b2 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/visualization_msgs/Marker.h @@ -0,0 +1,312 @@ +#ifndef _ROS_visualization_msgs_Marker_h +#define _ROS_visualization_msgs_Marker_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Pose.h" +#include "geometry_msgs/Vector3.h" +#include "std_msgs/ColorRGBA.h" +#include "ros/duration.h" +#include "geometry_msgs/Point.h" + +namespace visualization_msgs +{ + + class Marker : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef const char* _ns_type; + _ns_type ns; + typedef int32_t _id_type; + _id_type id; + typedef int32_t _type_type; + _type_type type; + typedef int32_t _action_type; + _action_type action; + typedef geometry_msgs::Pose _pose_type; + _pose_type pose; + typedef geometry_msgs::Vector3 _scale_type; + _scale_type scale; + typedef std_msgs::ColorRGBA _color_type; + _color_type color; + typedef ros::Duration _lifetime_type; + _lifetime_type lifetime; + typedef bool _frame_locked_type; + _frame_locked_type frame_locked; + uint32_t points_length; + typedef geometry_msgs::Point _points_type; + _points_type st_points; + _points_type * points; + uint32_t colors_length; + typedef std_msgs::ColorRGBA _colors_type; + _colors_type st_colors; + _colors_type * colors; + typedef const char* _text_type; + _text_type text; + typedef const char* _mesh_resource_type; + _mesh_resource_type mesh_resource; + typedef bool _mesh_use_embedded_materials_type; + _mesh_use_embedded_materials_type mesh_use_embedded_materials; + enum { ARROW = 0 }; + enum { CUBE = 1 }; + enum { SPHERE = 2 }; + enum { CYLINDER = 3 }; + enum { LINE_STRIP = 4 }; + enum { LINE_LIST = 5 }; + enum { CUBE_LIST = 6 }; + enum { SPHERE_LIST = 7 }; + enum { POINTS = 8 }; + enum { TEXT_VIEW_FACING = 9 }; + enum { MESH_RESOURCE = 10 }; + enum { TRIANGLE_LIST = 11 }; + enum { ADD = 0 }; + enum { MODIFY = 0 }; + enum { DELETE = 2 }; + enum { DELETEALL = 3 }; + + Marker(): + header(), + ns(""), + id(0), + type(0), + action(0), + pose(), + scale(), + color(), + lifetime(), + frame_locked(0), + points_length(0), points(NULL), + colors_length(0), colors(NULL), + text(""), + mesh_resource(""), + mesh_use_embedded_materials(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + uint32_t length_ns = strlen(this->ns); + varToArr(outbuffer + offset, length_ns); + offset += 4; + memcpy(outbuffer + offset, this->ns, length_ns); + offset += length_ns; + union { + int32_t real; + uint32_t base; + } u_id; + u_id.real = this->id; + *(outbuffer + offset + 0) = (u_id.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_id.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_id.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_id.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->id); + union { + int32_t real; + uint32_t base; + } u_type; + u_type.real = this->type; + *(outbuffer + offset + 0) = (u_type.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_type.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_type.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_type.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->type); + union { + int32_t real; + uint32_t base; + } u_action; + u_action.real = this->action; + *(outbuffer + offset + 0) = (u_action.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_action.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_action.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_action.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->action); + offset += this->pose.serialize(outbuffer + offset); + offset += this->scale.serialize(outbuffer + offset); + offset += this->color.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->lifetime.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->lifetime.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->lifetime.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->lifetime.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->lifetime.sec); + *(outbuffer + offset + 0) = (this->lifetime.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->lifetime.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->lifetime.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->lifetime.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->lifetime.nsec); + union { + bool real; + uint8_t base; + } u_frame_locked; + u_frame_locked.real = this->frame_locked; + *(outbuffer + offset + 0) = (u_frame_locked.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->frame_locked); + *(outbuffer + offset + 0) = (this->points_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->points_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->points_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->points_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->points_length); + for( uint32_t i = 0; i < points_length; i++){ + offset += this->points[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->colors_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->colors_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->colors_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->colors_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->colors_length); + for( uint32_t i = 0; i < colors_length; i++){ + offset += this->colors[i].serialize(outbuffer + offset); + } + uint32_t length_text = strlen(this->text); + varToArr(outbuffer + offset, length_text); + offset += 4; + memcpy(outbuffer + offset, this->text, length_text); + offset += length_text; + uint32_t length_mesh_resource = strlen(this->mesh_resource); + varToArr(outbuffer + offset, length_mesh_resource); + offset += 4; + memcpy(outbuffer + offset, this->mesh_resource, length_mesh_resource); + offset += length_mesh_resource; + union { + bool real; + uint8_t base; + } u_mesh_use_embedded_materials; + u_mesh_use_embedded_materials.real = this->mesh_use_embedded_materials; + *(outbuffer + offset + 0) = (u_mesh_use_embedded_materials.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->mesh_use_embedded_materials); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t length_ns; + arrToVar(length_ns, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_ns; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_ns-1]=0; + this->ns = (char *)(inbuffer + offset-1); + offset += length_ns; + union { + int32_t real; + uint32_t base; + } u_id; + u_id.base = 0; + u_id.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_id.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_id.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_id.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->id = u_id.real; + offset += sizeof(this->id); + union { + int32_t real; + uint32_t base; + } u_type; + u_type.base = 0; + u_type.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_type.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_type.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_type.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->type = u_type.real; + offset += sizeof(this->type); + union { + int32_t real; + uint32_t base; + } u_action; + u_action.base = 0; + u_action.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_action.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_action.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_action.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->action = u_action.real; + offset += sizeof(this->action); + offset += this->pose.deserialize(inbuffer + offset); + offset += this->scale.deserialize(inbuffer + offset); + offset += this->color.deserialize(inbuffer + offset); + this->lifetime.sec = ((uint32_t) (*(inbuffer + offset))); + this->lifetime.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->lifetime.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->lifetime.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->lifetime.sec); + this->lifetime.nsec = ((uint32_t) (*(inbuffer + offset))); + this->lifetime.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->lifetime.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->lifetime.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->lifetime.nsec); + union { + bool real; + uint8_t base; + } u_frame_locked; + u_frame_locked.base = 0; + u_frame_locked.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->frame_locked = u_frame_locked.real; + offset += sizeof(this->frame_locked); + uint32_t points_lengthT = ((uint32_t) (*(inbuffer + offset))); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->points_length); + if(points_lengthT > points_length) + this->points = (geometry_msgs::Point*)realloc(this->points, points_lengthT * sizeof(geometry_msgs::Point)); + points_length = points_lengthT; + for( uint32_t i = 0; i < points_length; i++){ + offset += this->st_points.deserialize(inbuffer + offset); + memcpy( &(this->points[i]), &(this->st_points), sizeof(geometry_msgs::Point)); + } + uint32_t colors_lengthT = ((uint32_t) (*(inbuffer + offset))); + colors_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + colors_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + colors_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->colors_length); + if(colors_lengthT > colors_length) + this->colors = (std_msgs::ColorRGBA*)realloc(this->colors, colors_lengthT * sizeof(std_msgs::ColorRGBA)); + colors_length = colors_lengthT; + for( uint32_t i = 0; i < colors_length; i++){ + offset += this->st_colors.deserialize(inbuffer + offset); + memcpy( &(this->colors[i]), &(this->st_colors), sizeof(std_msgs::ColorRGBA)); + } + uint32_t length_text; + arrToVar(length_text, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_text; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_text-1]=0; + this->text = (char *)(inbuffer + offset-1); + offset += length_text; + uint32_t length_mesh_resource; + arrToVar(length_mesh_resource, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_mesh_resource; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_mesh_resource-1]=0; + this->mesh_resource = (char *)(inbuffer + offset-1); + offset += length_mesh_resource; + union { + bool real; + uint8_t base; + } u_mesh_use_embedded_materials; + u_mesh_use_embedded_materials.base = 0; + u_mesh_use_embedded_materials.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->mesh_use_embedded_materials = u_mesh_use_embedded_materials.real; + offset += sizeof(this->mesh_use_embedded_materials); + return offset; + } + + const char * getType(){ return "visualization_msgs/Marker"; }; + const char * getMD5(){ return "4048c9de2a16f4ae8e0538085ebf1b97"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/visualization_msgs/MarkerArray.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/visualization_msgs/MarkerArray.h new file mode 100644 index 0000000..20d1fce --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/visualization_msgs/MarkerArray.h @@ -0,0 +1,64 @@ +#ifndef _ROS_visualization_msgs_MarkerArray_h +#define _ROS_visualization_msgs_MarkerArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "visualization_msgs/Marker.h" + +namespace visualization_msgs +{ + + class MarkerArray : public ros::Msg + { + public: + uint32_t markers_length; + typedef visualization_msgs::Marker _markers_type; + _markers_type st_markers; + _markers_type * markers; + + MarkerArray(): + markers_length(0), markers(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->markers_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->markers_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->markers_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->markers_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->markers_length); + for( uint32_t i = 0; i < markers_length; i++){ + offset += this->markers[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t markers_lengthT = ((uint32_t) (*(inbuffer + offset))); + markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->markers_length); + if(markers_lengthT > markers_length) + this->markers = (visualization_msgs::Marker*)realloc(this->markers, markers_lengthT * sizeof(visualization_msgs::Marker)); + markers_length = markers_lengthT; + for( uint32_t i = 0; i < markers_length; i++){ + offset += this->st_markers.deserialize(inbuffer + offset); + memcpy( &(this->markers[i]), &(this->st_markers), sizeof(visualization_msgs::Marker)); + } + return offset; + } + + const char * getType(){ return "visualization_msgs/MarkerArray"; }; + const char * getMD5(){ return "d155b9ce5188fbaf89745847fd5882d7"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/visualization_msgs/MenuEntry.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/visualization_msgs/MenuEntry.h new file mode 100644 index 0000000..c7b6c23 --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/visualization_msgs/MenuEntry.h @@ -0,0 +1,108 @@ +#ifndef _ROS_visualization_msgs_MenuEntry_h +#define _ROS_visualization_msgs_MenuEntry_h + +#include +#include +#include +#include "ros/msg.h" + +namespace visualization_msgs +{ + + class MenuEntry : public ros::Msg + { + public: + typedef uint32_t _id_type; + _id_type id; + typedef uint32_t _parent_id_type; + _parent_id_type parent_id; + typedef const char* _title_type; + _title_type title; + typedef const char* _command_type; + _command_type command; + typedef uint8_t _command_type_type; + _command_type_type command_type; + enum { FEEDBACK = 0 }; + enum { ROSRUN = 1 }; + enum { ROSLAUNCH = 2 }; + + MenuEntry(): + id(0), + parent_id(0), + title(""), + command(""), + command_type(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->id >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->id >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->id >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->id >> (8 * 3)) & 0xFF; + offset += sizeof(this->id); + *(outbuffer + offset + 0) = (this->parent_id >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->parent_id >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->parent_id >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->parent_id >> (8 * 3)) & 0xFF; + offset += sizeof(this->parent_id); + uint32_t length_title = strlen(this->title); + varToArr(outbuffer + offset, length_title); + offset += 4; + memcpy(outbuffer + offset, this->title, length_title); + offset += length_title; + uint32_t length_command = strlen(this->command); + varToArr(outbuffer + offset, length_command); + offset += 4; + memcpy(outbuffer + offset, this->command, length_command); + offset += length_command; + *(outbuffer + offset + 0) = (this->command_type >> (8 * 0)) & 0xFF; + offset += sizeof(this->command_type); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->id = ((uint32_t) (*(inbuffer + offset))); + this->id |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->id |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->id |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->id); + this->parent_id = ((uint32_t) (*(inbuffer + offset))); + this->parent_id |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->parent_id |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->parent_id |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->parent_id); + uint32_t length_title; + arrToVar(length_title, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_title; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_title-1]=0; + this->title = (char *)(inbuffer + offset-1); + offset += length_title; + uint32_t length_command; + arrToVar(length_command, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_command; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_command-1]=0; + this->command = (char *)(inbuffer + offset-1); + offset += length_command; + this->command_type = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->command_type); + return offset; + } + + const char * getType(){ return "visualization_msgs/MenuEntry"; }; + const char * getMD5(){ return "b90ec63024573de83b57aa93eb39be2d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/wfov_camera_msgs/WFOVCompressedImage.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/wfov_camera_msgs/WFOVCompressedImage.h new file mode 100644 index 0000000..c6b05bc --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/wfov_camera_msgs/WFOVCompressedImage.h @@ -0,0 +1,169 @@ +#ifndef _ROS_wfov_camera_msgs_WFOVCompressedImage_h +#define _ROS_wfov_camera_msgs_WFOVCompressedImage_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "sensor_msgs/CompressedImage.h" +#include "sensor_msgs/CameraInfo.h" +#include "geometry_msgs/TransformStamped.h" + +namespace wfov_camera_msgs +{ + + class WFOVCompressedImage : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef const char* _time_reference_type; + _time_reference_type time_reference; + typedef sensor_msgs::CompressedImage _image_type; + _image_type image; + typedef sensor_msgs::CameraInfo _info_type; + _info_type info; + typedef float _shutter_type; + _shutter_type shutter; + typedef float _gain_type; + _gain_type gain; + typedef uint16_t _white_balance_blue_type; + _white_balance_blue_type white_balance_blue; + typedef uint16_t _white_balance_red_type; + _white_balance_red_type white_balance_red; + typedef float _temperature_type; + _temperature_type temperature; + typedef geometry_msgs::TransformStamped _worldToCamera_type; + _worldToCamera_type worldToCamera; + + WFOVCompressedImage(): + header(), + time_reference(""), + image(), + info(), + shutter(0), + gain(0), + white_balance_blue(0), + white_balance_red(0), + temperature(0), + worldToCamera() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + uint32_t length_time_reference = strlen(this->time_reference); + varToArr(outbuffer + offset, length_time_reference); + offset += 4; + memcpy(outbuffer + offset, this->time_reference, length_time_reference); + offset += length_time_reference; + offset += this->image.serialize(outbuffer + offset); + offset += this->info.serialize(outbuffer + offset); + union { + float real; + uint32_t base; + } u_shutter; + u_shutter.real = this->shutter; + *(outbuffer + offset + 0) = (u_shutter.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_shutter.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_shutter.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_shutter.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->shutter); + union { + float real; + uint32_t base; + } u_gain; + u_gain.real = this->gain; + *(outbuffer + offset + 0) = (u_gain.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_gain.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_gain.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_gain.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->gain); + *(outbuffer + offset + 0) = (this->white_balance_blue >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->white_balance_blue >> (8 * 1)) & 0xFF; + offset += sizeof(this->white_balance_blue); + *(outbuffer + offset + 0) = (this->white_balance_red >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->white_balance_red >> (8 * 1)) & 0xFF; + offset += sizeof(this->white_balance_red); + union { + float real; + uint32_t base; + } u_temperature; + u_temperature.real = this->temperature; + *(outbuffer + offset + 0) = (u_temperature.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_temperature.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_temperature.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_temperature.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->temperature); + offset += this->worldToCamera.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t length_time_reference; + arrToVar(length_time_reference, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_time_reference; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_time_reference-1]=0; + this->time_reference = (char *)(inbuffer + offset-1); + offset += length_time_reference; + offset += this->image.deserialize(inbuffer + offset); + offset += this->info.deserialize(inbuffer + offset); + union { + float real; + uint32_t base; + } u_shutter; + u_shutter.base = 0; + u_shutter.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_shutter.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_shutter.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_shutter.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->shutter = u_shutter.real; + offset += sizeof(this->shutter); + union { + float real; + uint32_t base; + } u_gain; + u_gain.base = 0; + u_gain.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_gain.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_gain.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_gain.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->gain = u_gain.real; + offset += sizeof(this->gain); + this->white_balance_blue = ((uint16_t) (*(inbuffer + offset))); + this->white_balance_blue |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->white_balance_blue); + this->white_balance_red = ((uint16_t) (*(inbuffer + offset))); + this->white_balance_red |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->white_balance_red); + union { + float real; + uint32_t base; + } u_temperature; + u_temperature.base = 0; + u_temperature.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_temperature.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_temperature.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_temperature.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->temperature = u_temperature.real; + offset += sizeof(this->temperature); + offset += this->worldToCamera.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "wfov_camera_msgs/WFOVCompressedImage"; }; + const char * getMD5(){ return "5b0f85e79ffccd27dc377911c83e026f"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/wfov_camera_msgs/WFOVImage.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/wfov_camera_msgs/WFOVImage.h new file mode 100644 index 0000000..6ce4f0e --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/wfov_camera_msgs/WFOVImage.h @@ -0,0 +1,163 @@ +#ifndef _ROS_wfov_camera_msgs_WFOVImage_h +#define _ROS_wfov_camera_msgs_WFOVImage_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "sensor_msgs/Image.h" +#include "sensor_msgs/CameraInfo.h" + +namespace wfov_camera_msgs +{ + + class WFOVImage : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef const char* _time_reference_type; + _time_reference_type time_reference; + typedef sensor_msgs::Image _image_type; + _image_type image; + typedef sensor_msgs::CameraInfo _info_type; + _info_type info; + typedef float _shutter_type; + _shutter_type shutter; + typedef float _gain_type; + _gain_type gain; + typedef uint16_t _white_balance_blue_type; + _white_balance_blue_type white_balance_blue; + typedef uint16_t _white_balance_red_type; + _white_balance_red_type white_balance_red; + typedef float _temperature_type; + _temperature_type temperature; + + WFOVImage(): + header(), + time_reference(""), + image(), + info(), + shutter(0), + gain(0), + white_balance_blue(0), + white_balance_red(0), + temperature(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + uint32_t length_time_reference = strlen(this->time_reference); + varToArr(outbuffer + offset, length_time_reference); + offset += 4; + memcpy(outbuffer + offset, this->time_reference, length_time_reference); + offset += length_time_reference; + offset += this->image.serialize(outbuffer + offset); + offset += this->info.serialize(outbuffer + offset); + union { + float real; + uint32_t base; + } u_shutter; + u_shutter.real = this->shutter; + *(outbuffer + offset + 0) = (u_shutter.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_shutter.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_shutter.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_shutter.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->shutter); + union { + float real; + uint32_t base; + } u_gain; + u_gain.real = this->gain; + *(outbuffer + offset + 0) = (u_gain.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_gain.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_gain.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_gain.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->gain); + *(outbuffer + offset + 0) = (this->white_balance_blue >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->white_balance_blue >> (8 * 1)) & 0xFF; + offset += sizeof(this->white_balance_blue); + *(outbuffer + offset + 0) = (this->white_balance_red >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->white_balance_red >> (8 * 1)) & 0xFF; + offset += sizeof(this->white_balance_red); + union { + float real; + uint32_t base; + } u_temperature; + u_temperature.real = this->temperature; + *(outbuffer + offset + 0) = (u_temperature.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_temperature.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_temperature.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_temperature.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->temperature); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t length_time_reference; + arrToVar(length_time_reference, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_time_reference; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_time_reference-1]=0; + this->time_reference = (char *)(inbuffer + offset-1); + offset += length_time_reference; + offset += this->image.deserialize(inbuffer + offset); + offset += this->info.deserialize(inbuffer + offset); + union { + float real; + uint32_t base; + } u_shutter; + u_shutter.base = 0; + u_shutter.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_shutter.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_shutter.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_shutter.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->shutter = u_shutter.real; + offset += sizeof(this->shutter); + union { + float real; + uint32_t base; + } u_gain; + u_gain.base = 0; + u_gain.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_gain.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_gain.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_gain.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->gain = u_gain.real; + offset += sizeof(this->gain); + this->white_balance_blue = ((uint16_t) (*(inbuffer + offset))); + this->white_balance_blue |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->white_balance_blue); + this->white_balance_red = ((uint16_t) (*(inbuffer + offset))); + this->white_balance_red |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->white_balance_red); + union { + float real; + uint32_t base; + } u_temperature; + u_temperature.base = 0; + u_temperature.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_temperature.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_temperature.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_temperature.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->temperature = u_temperature.real; + offset += sizeof(this->temperature); + return offset; + } + + const char * getType(){ return "wfov_camera_msgs/WFOVImage"; }; + const char * getMD5(){ return "807d0db423ab5e1561cfeba09a10bc88"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/wfov_camera_msgs/WFOVTrigger.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/wfov_camera_msgs/WFOVTrigger.h new file mode 100644 index 0000000..67b0d0f --- /dev/null +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/wfov_camera_msgs/WFOVTrigger.h @@ -0,0 +1,141 @@ +#ifndef _ROS_wfov_camera_msgs_WFOVTrigger_h +#define _ROS_wfov_camera_msgs_WFOVTrigger_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "ros/time.h" + +namespace wfov_camera_msgs +{ + + class WFOVTrigger : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef const char* _time_reference_type; + _time_reference_type time_reference; + typedef ros::Time _trigger_time_type; + _trigger_time_type trigger_time; + typedef const char* _trigger_time_reference_type; + _trigger_time_reference_type trigger_time_reference; + typedef uint32_t _shutter_type; + _shutter_type shutter; + typedef uint32_t _id_type; + _id_type id; + typedef uint32_t _trigger_seq_type; + _trigger_seq_type trigger_seq; + + WFOVTrigger(): + header(), + time_reference(""), + trigger_time(), + trigger_time_reference(""), + shutter(0), + id(0), + trigger_seq(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + uint32_t length_time_reference = strlen(this->time_reference); + varToArr(outbuffer + offset, length_time_reference); + offset += 4; + memcpy(outbuffer + offset, this->time_reference, length_time_reference); + offset += length_time_reference; + *(outbuffer + offset + 0) = (this->trigger_time.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->trigger_time.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->trigger_time.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->trigger_time.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->trigger_time.sec); + *(outbuffer + offset + 0) = (this->trigger_time.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->trigger_time.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->trigger_time.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->trigger_time.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->trigger_time.nsec); + uint32_t length_trigger_time_reference = strlen(this->trigger_time_reference); + varToArr(outbuffer + offset, length_trigger_time_reference); + offset += 4; + memcpy(outbuffer + offset, this->trigger_time_reference, length_trigger_time_reference); + offset += length_trigger_time_reference; + *(outbuffer + offset + 0) = (this->shutter >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->shutter >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->shutter >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->shutter >> (8 * 3)) & 0xFF; + offset += sizeof(this->shutter); + *(outbuffer + offset + 0) = (this->id >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->id >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->id >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->id >> (8 * 3)) & 0xFF; + offset += sizeof(this->id); + *(outbuffer + offset + 0) = (this->trigger_seq >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->trigger_seq >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->trigger_seq >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->trigger_seq >> (8 * 3)) & 0xFF; + offset += sizeof(this->trigger_seq); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t length_time_reference; + arrToVar(length_time_reference, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_time_reference; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_time_reference-1]=0; + this->time_reference = (char *)(inbuffer + offset-1); + offset += length_time_reference; + this->trigger_time.sec = ((uint32_t) (*(inbuffer + offset))); + this->trigger_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->trigger_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->trigger_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->trigger_time.sec); + this->trigger_time.nsec = ((uint32_t) (*(inbuffer + offset))); + this->trigger_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->trigger_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->trigger_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->trigger_time.nsec); + uint32_t length_trigger_time_reference; + arrToVar(length_trigger_time_reference, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_trigger_time_reference; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_trigger_time_reference-1]=0; + this->trigger_time_reference = (char *)(inbuffer + offset-1); + offset += length_trigger_time_reference; + this->shutter = ((uint32_t) (*(inbuffer + offset))); + this->shutter |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->shutter |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->shutter |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->shutter); + this->id = ((uint32_t) (*(inbuffer + offset))); + this->id |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->id |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->id |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->id); + this->trigger_seq = ((uint32_t) (*(inbuffer + offset))); + this->trigger_seq |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->trigger_seq |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->trigger_seq |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->trigger_seq); + return offset; + } + + const char * getType(){ return "wfov_camera_msgs/WFOVTrigger"; }; + const char * getMD5(){ return "e38c040150f1be3148468f6b9974f8bf"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/cr/extras/cr/demo01_IO_complete.maxpat b/cr/extras/arduino/demo01_IO_complete.maxpat similarity index 100% rename from cr/extras/cr/demo01_IO_complete.maxpat rename to cr/extras/arduino/demo01_IO_complete.maxpat diff --git a/cr/extras/cr/demo02_LED.maxpat b/cr/extras/arduino/demo02_LED.maxpat similarity index 100% rename from cr/extras/cr/demo02_LED.maxpat rename to cr/extras/arduino/demo02_LED.maxpat diff --git a/cr/extras/cr/demo03_pushButton.maxpat b/cr/extras/arduino/demo03_pushButton.maxpat similarity index 100% rename from cr/extras/cr/demo03_pushButton.maxpat rename to cr/extras/arduino/demo03_pushButton.maxpat diff --git a/cr/extras/cr/demo04_tilt.maxpat b/cr/extras/arduino/demo04_tilt.maxpat similarity index 100% rename from cr/extras/cr/demo04_tilt.maxpat rename to cr/extras/arduino/demo04_tilt.maxpat diff --git a/cr/extras/cr/demo05_flex.maxpat b/cr/extras/arduino/demo05_flex.maxpat similarity index 100% rename from cr/extras/cr/demo05_flex.maxpat rename to cr/extras/arduino/demo05_flex.maxpat diff --git a/cr/extras/cr/demo06_proximity.maxpat b/cr/extras/arduino/demo06_proximity.maxpat similarity index 100% rename from cr/extras/cr/demo06_proximity.maxpat rename to cr/extras/arduino/demo06_proximity.maxpat diff --git a/cr/extras/cr/demo07_DCmotor.maxpat b/cr/extras/arduino/demo07_DCmotor.maxpat similarity index 100% rename from cr/extras/cr/demo07_DCmotor.maxpat rename to cr/extras/arduino/demo07_DCmotor.maxpat diff --git a/cr/extras/cr/tutorial01_continuousAndDiscrete.maxpat b/cr/extras/arduino/tutorial01_continuousAndDiscrete.maxpat similarity index 100% rename from cr/extras/cr/tutorial01_continuousAndDiscrete.maxpat rename to cr/extras/arduino/tutorial01_continuousAndDiscrete.maxpat diff --git a/cr/extras/cr/tutorial02_analog.maxpat b/cr/extras/arduino/tutorial02_analog.maxpat similarity index 100% rename from cr/extras/cr/tutorial02_analog.maxpat rename to cr/extras/arduino/tutorial02_analog.maxpat diff --git a/cr/extras/cr/tutorial03_digital.maxpat b/cr/extras/arduino/tutorial03_digital.maxpat similarity index 100% rename from cr/extras/cr/tutorial03_digital.maxpat rename to cr/extras/arduino/tutorial03_digital.maxpat diff --git a/cr/extras/cr/tutorial04_pwm.maxpat b/cr/extras/arduino/tutorial04_pwm.maxpat similarity index 100% rename from cr/extras/cr/tutorial04_pwm.maxpat rename to cr/extras/arduino/tutorial04_pwm.maxpat diff --git a/cr/extras/cr/tutorial05_servo.maxpat b/cr/extras/arduino/tutorial05_servo.maxpat similarity index 100% rename from cr/extras/cr/tutorial05_servo.maxpat rename to cr/extras/arduino/tutorial05_servo.maxpat diff --git a/cr/extras/ros/demo_robotin_imu.maxpat b/cr/extras/ros/demo_robotin_imu.maxpat new file mode 100644 index 0000000..748c369 --- /dev/null +++ b/cr/extras/ros/demo_robotin_imu.maxpat @@ -0,0 +1,1278 @@ +{ + "patcher" : { + "fileversion" : 1, + "appversion" : { + "major" : 7, + "minor" : 3, + "revision" : 4, + "architecture" : "x86", + "modernui" : 1 + } +, + "rect" : [ 80.0, 119.0, 1261.0, 671.0 ], + "bglocked" : 0, + "openinpresentation" : 0, + "default_fontsize" : 12.0, + "default_fontface" : 0, + "default_fontname" : "Arial", + "gridonopen" : 1, + "gridsize" : [ 15.0, 15.0 ], + "gridsnaponopen" : 1, + "objectsnaponopen" : 1, + "statusbarvisible" : 2, + "toolbarvisible" : 1, + "lefttoolbarpinned" : 0, + "toptoolbarpinned" : 0, + "righttoolbarpinned" : 0, + "bottomtoolbarpinned" : 0, + "toolbars_unpinned_last_save" : 0, + "tallnewobj" : 0, + "boxanimatetime" : 200, + "enablehscroll" : 1, + "enablevscroll" : 1, + "devicewidth" : 0.0, + "description" : "", + "digest" : "", + "tags" : "", + "style" : "", + "subpatcher_template" : "", + "boxes" : [ { + "box" : { + "id" : "obj-10", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 41.0, 149.0, 63.0, 22.0 ], + "style" : "", + "text" : "sprintf %s" + } + + } +, { + "box" : { + "id" : "obj-71", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 99.0, 460.5, 55.0, 22.0 ], + "style" : "", + "text" : "imu_link" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-70", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1146.099976, 426.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-66", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 991.099976, 452.5, 19.0, 20.0 ], + "style" : "", + "text" : "Z" + } + + } +, { + "box" : { + "id" : "obj-68", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 946.099976, 452.5, 19.0, 20.0 ], + "style" : "", + "text" : "Y" + } + + } +, { + "box" : { + "id" : "obj-69", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 894.599976, 452.5, 19.0, 20.0 ], + "style" : "", + "text" : "X" + } + + } +, { + "box" : { + "id" : "obj-63", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 663.099976, 452.5, 19.0, 20.0 ], + "style" : "", + "text" : "Z" + } + + } +, { + "box" : { + "id" : "obj-64", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 618.099976, 452.5, 19.0, 20.0 ], + "style" : "", + "text" : "Y" + } + + } +, { + "box" : { + "id" : "obj-65", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 566.599976, 452.5, 19.0, 20.0 ], + "style" : "", + "text" : "X" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-62", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 99.0, 222.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-60", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 579.099976, 480.0, 98.0, 20.0 ], + "style" : "", + "text" : "Angular Velocity" + } + + } +, { + "box" : { + "id" : "obj-59", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 897.599976, 480.0, 116.0, 20.0 ], + "style" : "", + "text" : "Linear Acceleration" + } + + } +, { + "box" : { + "id" : "obj-20", + "linecount" : 2, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 1061.099976, 480.0, 116.0, 33.0 ], + "style" : "", + "text" : "Linear Acceleration Covariance" + } + + } +, { + "box" : { + "id" : "obj-15", + "linecount" : 2, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 735.099976, 480.0, 98.0, 33.0 ], + "style" : "", + "text" : "Angular Velocity Covariance" + } + + } +, { + "box" : { + "id" : "obj-9", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 391.100006, 480.0, 133.0, 20.0 ], + "style" : "", + "text" : "Orientation Covariance" + } + + } +, { + "box" : { + "id" : "obj-67", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 332.0, 452.5, 23.0, 20.0 ], + "style" : "", + "text" : "W" + } + + } +, { + "box" : { + "id" : "obj-12", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 282.5, 452.5, 19.0, 20.0 ], + "style" : "", + "text" : "Z" + } + + } +, { + "box" : { + "id" : "obj-16", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 237.5, 452.5, 19.0, 20.0 ], + "style" : "", + "text" : "Y" + } + + } +, { + "box" : { + "id" : "obj-17", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 186.0, 452.5, 19.0, 20.0 ], + "style" : "", + "text" : "X" + } + + } +, { + "box" : { + "id" : "obj-8", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 221.5, 480.0, 70.0, 20.0 ], + "style" : "", + "text" : "Orientation" + } + + } +, { + "box" : { + "id" : "obj-7", + "linecount" : 2, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 45.0, 359.5, 104.0, 33.0 ], + "style" : "", + "text" : "TimeStamp\nsec and nano-sec" + } + + } +, { + "box" : { + "id" : "obj-6", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 79.5, 264.5, 30.0, 20.0 ], + "style" : "", + "text" : "Seq" + } + + } +, { + "box" : { + "id" : "obj-4", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 41.0, 179.0, 30.0, 22.0 ], + "style" : "", + "text" : "imu" + } + + } +, { + "box" : { + "id" : "obj-5", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 44.600006, 117.0, 41.0, 20.0 ], + "style" : "", + "text" : "Name" + } + + } +, { + "box" : { + "id" : "obj-3", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 480.100006, 69.0, 89.0, 20.0 ], + "style" : "", + "text" : "IMU Message " + } + + } +, { + "box" : { + "id" : "obj-2", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 186.0, 94.0, 44.0, 20.0 ], + "style" : "", + "text" : "On/Off" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-58", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1094.099976, 426.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-57", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 872.599976, 426.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-48", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1042.099976, 426.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-49", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1146.099976, 402.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-50", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1094.099976, 402.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-51", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1042.099976, 402.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-52", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1146.099976, 378.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-53", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1094.099976, 378.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-54", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1042.099976, 378.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-55", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 976.599976, 426.5, 57.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-56", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 924.599976, 426.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-39", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 810.599976, 402.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-40", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 758.599976, 402.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-41", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 706.599976, 402.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-42", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 810.599976, 378.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-43", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 758.599976, 378.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-44", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 706.599976, 378.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-45", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 647.599976, 426.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-46", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 595.599976, 426.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-47", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 543.599976, 426.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-36", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 810.599976, 426.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-37", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 758.599976, 426.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-38", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 706.599976, 426.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-33", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 484.600006, 426.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-34", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 432.600006, 426.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-35", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 380.600006, 426.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-30", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 484.600006, 402.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-31", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 432.600006, 402.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-32", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 380.600006, 402.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-27", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 484.600006, 378.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-28", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 432.600006, 378.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-29", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 380.600006, 378.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-24", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 318.5, 423.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-25", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 267.0, 423.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-26", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 217.399994, 423.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-23", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 165.399994, 423.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-21", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 123.600006, 335.5, 79.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-19", + "maxclass" : "number", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 35.600006, 335.5, 86.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-18", + "maxclass" : "number", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 116.600006, 264.5, 53.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-14", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 42, + "outlettype" : [ "int", "int", "int", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float" ], + "patching_rect" : [ 244.600006, 234.0, 600.0, 22.0 ], + "style" : "", + "text" : "unpack 0 0 0 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0." + } + + } +, { + "box" : { + "id" : "obj-13", + "maxclass" : "toggle", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "int" ], + "parameter_enable" : 0, + "patching_rect" : [ 244.600006, 94.0, 24.0, 24.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-1", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 244.600006, 160.0, 175.0, 22.0 ], + "style" : "", + "text" : "cr.robotin 192.168.1.200 @imu" + } + + } + ], + "lines" : [ { + "patchline" : { + "destination" : [ "obj-14", 0 ], + "source" : [ "obj-1", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-4", 0 ], + "source" : [ "obj-10", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-1", 0 ], + "source" : [ "obj-13", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-10", 0 ], + "order" : 1, + "source" : [ "obj-14", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-18", 0 ], + "source" : [ "obj-14", 1 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-19", 0 ], + "source" : [ "obj-14", 2 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-21", 0 ], + "source" : [ "obj-14", 3 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-23", 0 ], + "source" : [ "obj-14", 5 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-24", 0 ], + "source" : [ "obj-14", 8 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-25", 0 ], + "source" : [ "obj-14", 7 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-26", 0 ], + "source" : [ "obj-14", 6 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-27", 0 ], + "source" : [ "obj-14", 11 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-28", 0 ], + "source" : [ "obj-14", 10 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-29", 0 ], + "source" : [ "obj-14", 9 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-30", 0 ], + "source" : [ "obj-14", 14 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-31", 0 ], + "source" : [ "obj-14", 13 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-32", 0 ], + "source" : [ "obj-14", 12 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-33", 0 ], + "source" : [ "obj-14", 17 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-34", 0 ], + "source" : [ "obj-14", 16 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-35", 0 ], + "source" : [ "obj-14", 15 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-36", 0 ], + "source" : [ "obj-14", 29 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-37", 0 ], + "source" : [ "obj-14", 28 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-38", 0 ], + "source" : [ "obj-14", 27 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-39", 0 ], + "source" : [ "obj-14", 26 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-40", 0 ], + "source" : [ "obj-14", 25 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-41", 0 ], + "source" : [ "obj-14", 24 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-42", 0 ], + "source" : [ "obj-14", 23 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-43", 0 ], + "source" : [ "obj-14", 22 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-44", 0 ], + "source" : [ "obj-14", 21 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-45", 0 ], + "source" : [ "obj-14", 20 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-46", 0 ], + "source" : [ "obj-14", 19 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-47", 0 ], + "source" : [ "obj-14", 18 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-48", 0 ], + "source" : [ "obj-14", 39 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-49", 0 ], + "source" : [ "obj-14", 38 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-50", 0 ], + "source" : [ "obj-14", 37 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-51", 0 ], + "source" : [ "obj-14", 36 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-52", 0 ], + "source" : [ "obj-14", 35 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-53", 0 ], + "source" : [ "obj-14", 34 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-54", 0 ], + "source" : [ "obj-14", 33 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-55", 0 ], + "source" : [ "obj-14", 32 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-56", 0 ], + "source" : [ "obj-14", 31 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-57", 0 ], + "source" : [ "obj-14", 30 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-58", 0 ], + "source" : [ "obj-14", 40 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-62", 0 ], + "order" : 0, + "source" : [ "obj-14", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-70", 0 ], + "source" : [ "obj-14", 41 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-71", 0 ], + "source" : [ "obj-14", 4 ] + } + + } + ], + "dependency_cache" : [ { + "name" : "cr.robotin.mxo", + "type" : "iLaX" + } + ], + "autosave" : 0 + } + +} diff --git a/cr/extras/ros/demo_robotin_joints.maxpat b/cr/extras/ros/demo_robotin_joints.maxpat new file mode 100644 index 0000000..50dd82a --- /dev/null +++ b/cr/extras/ros/demo_robotin_joints.maxpat @@ -0,0 +1,2083 @@ +{ + "patcher" : { + "fileversion" : 1, + "appversion" : { + "major" : 7, + "minor" : 3, + "revision" : 4, + "architecture" : "x86", + "modernui" : 1 + } +, + "rect" : [ 126.0, 119.0, 1229.0, 695.0 ], + "bglocked" : 0, + "openinpresentation" : 0, + "default_fontsize" : 12.0, + "default_fontface" : 0, + "default_fontname" : "Arial", + "gridonopen" : 1, + "gridsize" : [ 15.0, 15.0 ], + "gridsnaponopen" : 1, + "objectsnaponopen" : 1, + "statusbarvisible" : 2, + "toolbarvisible" : 1, + "lefttoolbarpinned" : 0, + "toptoolbarpinned" : 0, + "righttoolbarpinned" : 0, + "bottomtoolbarpinned" : 0, + "toolbars_unpinned_last_save" : 0, + "tallnewobj" : 0, + "boxanimatetime" : 200, + "enablehscroll" : 1, + "enablevscroll" : 1, + "devicewidth" : 0.0, + "description" : "", + "digest" : "", + "tags" : "", + "style" : "", + "subpatcher_template" : "", + "boxes" : [ { + "box" : { + "id" : "obj-62", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 169.5, 331.5, 37.0, 22.0 ], + "style" : "", + "text" : "laser" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-63", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 876.0, 506.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-64", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 739.0, 418.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-65", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 824.0, 506.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-66", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 772.0, 506.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-67", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 876.0, 482.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-68", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 824.0, 482.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-69", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 772.0, 482.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-70", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 876.0, 458.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-71", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 824.0, 458.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-72", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 772.0, 458.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-73", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 791.0, 418.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-74", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 564.0, 506.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-75", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 668.0, 482.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-76", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 616.0, 482.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-77", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 564.0, 482.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-78", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 668.0, 458.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-79", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 616.0, 458.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-80", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 564.0, 458.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-81", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 605.0, 418.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-82", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 553.0, 418.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-83", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 687.0, 418.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-84", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 668.0, 506.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-85", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 616.0, 506.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-86", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 501.0, 418.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-87", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 484.0, 506.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-88", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 432.0, 506.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-89", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 380.0, 506.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-90", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 484.0, 482.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-91", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 432.0, 482.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-92", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 380.0, 482.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-93", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 484.0, 458.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-94", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 432.0, 458.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-95", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 380.0, 458.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-96", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 424.0, 418.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-97", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 372.0, 418.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-98", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 320.0, 418.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-99", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 264.0, 418.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-100", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 323.0, 364.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-101", + "maxclass" : "number", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 271.0, 364.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-102", + "maxclass" : "number", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 196.0, 364.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-103", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 41, + "outlettype" : [ "int", "int", "int", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float" ], + "patching_rect" : [ 246.0, 303.0, 586.0, 22.0 ], + "style" : "", + "text" : "unpack 0 0 0 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0." + } + + } +, { + "box" : { + "id" : "obj-61", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 19.5, 578.0, 34.0, 22.0 ], + "style" : "", + "text" : "twist" + } + + } +, { + "box" : { + "id" : "obj-60", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 165.5, 710.5, 30.0, 22.0 ], + "style" : "", + "text" : "imu" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-58", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 872.0, 885.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-57", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 735.0, 797.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-48", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 820.0, 885.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-49", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 768.0, 885.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-50", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 872.0, 861.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-51", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 820.0, 861.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-52", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 768.0, 861.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-53", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 872.0, 837.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-54", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 820.0, 837.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-55", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 768.0, 837.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-56", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 787.0, 797.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-39", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 560.0, 885.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-40", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 664.0, 861.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-41", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 612.0, 861.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-42", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 560.0, 861.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-43", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 664.0, 837.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-44", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 612.0, 837.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-45", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 560.0, 837.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-46", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 601.0, 797.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-47", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 549.0, 797.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-36", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 683.0, 797.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-37", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 664.0, 885.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-38", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 612.0, 885.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-33", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 497.0, 797.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-34", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 480.0, 885.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-35", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 428.0, 885.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-30", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 376.0, 885.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-31", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 480.0, 861.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-32", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 428.0, 861.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-27", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 376.0, 861.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-28", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 480.0, 837.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-29", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 428.0, 837.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-24", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 376.0, 837.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-25", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 420.0, 797.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-26", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 368.0, 797.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-23", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 316.0, 797.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-22", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 260.0, 797.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-21", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 319.0, 743.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-19", + "maxclass" : "number", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 267.0, 743.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-18", + "maxclass" : "number", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 192.0, 743.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-14", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 41, + "outlettype" : [ "int", "int", "int", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float" ], + "patching_rect" : [ 242.0, 682.0, 586.0, 22.0 ], + "style" : "", + "text" : "unpack 0 0 0 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0." + } + + } +, { + "box" : { + "id" : "obj-5", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 3, + "outlettype" : [ "", "", "" ], + "patching_rect" : [ 369.0, 94.0, 256.0, 22.0 ], + "style" : "", + "text" : "cr.robotin 192.168.1.200 @twist @laser @imu" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-15", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 324.5, 610.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-7", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 7, + "outlettype" : [ "float", "float", "float", "float", "float", "float", "float" ], + "patching_rect" : [ 106.0, 567.0, 143.0, 22.0 ], + "style" : "", + "text" : "unpack 0. 0. 0. 0. 0. 0. 0." + } + + } +, { + "box" : { + "id" : "obj-6", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 504.0, 228.0, 34.0, 22.0 ], + "style" : "", + "text" : "print" + } + + } +, { + "box" : { + "id" : "obj-13", + "maxclass" : "toggle", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "int" ], + "parameter_enable" : 0, + "patching_rect" : [ 263.0, 59.0, 24.0, 24.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-10", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 272.5, 610.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-11", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 220.5, 610.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-12", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 152.5, 610.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-9", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 100.5, 610.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-8", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 48.5, 610.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-4", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 201.5, 59.0, 39.0, 22.0 ], + "style" : "", + "text" : "close" + } + + } +, { + "box" : { + "id" : "obj-3", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 151.0, 59.0, 37.0, 22.0 ], + "style" : "", + "text" : "open" + } + + } +, { + "box" : { + "id" : "obj-1", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 6, + "outlettype" : [ "", "", "", "", "", "" ], + "patching_rect" : [ 169.0, 156.0, 422.0, 22.0 ], + "style" : "", + "text" : "cr.robotin 192.168.1.200 @twist @imu @odometry @laser @joints @sensors" + } + + } + ], + "lines" : [ { + "patchline" : { + "destination" : [ "obj-103", 0 ], + "source" : [ "obj-1", 3 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-14", 0 ], + "source" : [ "obj-1", 1 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-6", 0 ], + "source" : [ "obj-1", 5 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-6", 0 ], + "source" : [ "obj-1", 4 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-7", 0 ], + "source" : [ "obj-1", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-100", 0 ], + "source" : [ "obj-103", 3 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-101", 0 ], + "source" : [ "obj-103", 2 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-102", 0 ], + "source" : [ "obj-103", 1 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-62", 0 ], + "source" : [ "obj-103", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-63", 0 ], + "source" : [ "obj-103", 40 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-64", 0 ], + "source" : [ "obj-103", 30 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-65", 0 ], + "source" : [ "obj-103", 39 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-66", 0 ], + "source" : [ "obj-103", 38 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-67", 0 ], + "source" : [ "obj-103", 37 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-68", 0 ], + "source" : [ "obj-103", 36 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-69", 0 ], + "source" : [ "obj-103", 35 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-70", 0 ], + "source" : [ "obj-103", 34 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-71", 0 ], + "source" : [ "obj-103", 33 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-72", 0 ], + "source" : [ "obj-103", 32 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-73", 0 ], + "source" : [ "obj-103", 31 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-74", 0 ], + "source" : [ "obj-103", 26 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-75", 0 ], + "source" : [ "obj-103", 25 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-76", 0 ], + "source" : [ "obj-103", 24 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-77", 0 ], + "source" : [ "obj-103", 23 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-78", 0 ], + "source" : [ "obj-103", 22 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-79", 0 ], + "source" : [ "obj-103", 21 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-80", 0 ], + "source" : [ "obj-103", 20 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-81", 0 ], + "source" : [ "obj-103", 19 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-82", 0 ], + "source" : [ "obj-103", 18 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-83", 0 ], + "source" : [ "obj-103", 29 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-84", 0 ], + "source" : [ "obj-103", 28 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-85", 0 ], + "source" : [ "obj-103", 27 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-86", 0 ], + "source" : [ "obj-103", 17 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-87", 0 ], + "source" : [ "obj-103", 16 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-88", 0 ], + "source" : [ "obj-103", 15 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-89", 0 ], + "source" : [ "obj-103", 14 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-90", 0 ], + "source" : [ "obj-103", 13 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-91", 0 ], + "source" : [ "obj-103", 12 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-92", 0 ], + "source" : [ "obj-103", 11 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-93", 0 ], + "source" : [ "obj-103", 10 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-94", 0 ], + "source" : [ "obj-103", 9 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-95", 0 ], + "source" : [ "obj-103", 8 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-96", 0 ], + "source" : [ "obj-103", 7 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-97", 0 ], + "source" : [ "obj-103", 6 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-98", 0 ], + "source" : [ "obj-103", 5 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-99", 0 ], + "source" : [ "obj-103", 4 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-1", 0 ], + "source" : [ "obj-13", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-18", 0 ], + "source" : [ "obj-14", 1 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-19", 0 ], + "source" : [ "obj-14", 2 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-21", 0 ], + "source" : [ "obj-14", 3 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-22", 0 ], + "source" : [ "obj-14", 4 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-23", 0 ], + "source" : [ "obj-14", 5 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-24", 0 ], + "source" : [ "obj-14", 8 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-25", 0 ], + "source" : [ "obj-14", 7 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-26", 0 ], + "source" : [ "obj-14", 6 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-27", 0 ], + "source" : [ "obj-14", 11 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-28", 0 ], + "source" : [ "obj-14", 10 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-29", 0 ], + "source" : [ "obj-14", 9 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-30", 0 ], + "source" : [ "obj-14", 14 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-31", 0 ], + "source" : [ "obj-14", 13 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-32", 0 ], + "source" : [ "obj-14", 12 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-33", 0 ], + "source" : [ "obj-14", 17 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-34", 0 ], + "source" : [ "obj-14", 16 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-35", 0 ], + "source" : [ "obj-14", 15 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-36", 0 ], + "source" : [ "obj-14", 29 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-37", 0 ], + "source" : [ "obj-14", 28 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-38", 0 ], + "source" : [ "obj-14", 27 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-39", 0 ], + "source" : [ "obj-14", 26 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-40", 0 ], + "source" : [ "obj-14", 25 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-41", 0 ], + "source" : [ "obj-14", 24 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-42", 0 ], + "source" : [ "obj-14", 23 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-43", 0 ], + "source" : [ "obj-14", 22 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-44", 0 ], + "source" : [ "obj-14", 21 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-45", 0 ], + "source" : [ "obj-14", 20 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-46", 0 ], + "source" : [ "obj-14", 19 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-47", 0 ], + "source" : [ "obj-14", 18 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-48", 0 ], + "source" : [ "obj-14", 39 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-49", 0 ], + "source" : [ "obj-14", 38 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-50", 0 ], + "source" : [ "obj-14", 37 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-51", 0 ], + "source" : [ "obj-14", 36 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-52", 0 ], + "source" : [ "obj-14", 35 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-53", 0 ], + "source" : [ "obj-14", 34 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-54", 0 ], + "source" : [ "obj-14", 33 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-55", 0 ], + "source" : [ "obj-14", 32 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-56", 0 ], + "source" : [ "obj-14", 31 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-57", 0 ], + "source" : [ "obj-14", 30 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-58", 0 ], + "source" : [ "obj-14", 40 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-60", 0 ], + "source" : [ "obj-14", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-1", 0 ], + "source" : [ "obj-3", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-1", 0 ], + "source" : [ "obj-4", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-10", 0 ], + "source" : [ "obj-7", 5 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-11", 0 ], + "source" : [ "obj-7", 4 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-12", 0 ], + "source" : [ "obj-7", 3 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-15", 0 ], + "source" : [ "obj-7", 6 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-61", 0 ], + "source" : [ "obj-7", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-8", 0 ], + "source" : [ "obj-7", 1 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-9", 0 ], + "source" : [ "obj-7", 2 ] + } + + } + ], + "dependency_cache" : [ { + "name" : "cr.robotin.mxo", + "type" : "iLaX" + } + ], + "autosave" : 0 + } + +} diff --git a/cr/extras/ros/demo_robotin_laser.maxpat b/cr/extras/ros/demo_robotin_laser.maxpat new file mode 100644 index 0000000..a6ffb20 --- /dev/null +++ b/cr/extras/ros/demo_robotin_laser.maxpat @@ -0,0 +1,550 @@ +{ + "patcher" : { + "fileversion" : 1, + "appversion" : { + "major" : 7, + "minor" : 3, + "revision" : 4, + "architecture" : "x86", + "modernui" : 1 + } +, + "rect" : [ 192.0, 115.0, 1012.0, 603.0 ], + "bglocked" : 0, + "openinpresentation" : 0, + "default_fontsize" : 12.0, + "default_fontface" : 0, + "default_fontname" : "Arial", + "gridonopen" : 1, + "gridsize" : [ 15.0, 15.0 ], + "gridsnaponopen" : 1, + "objectsnaponopen" : 1, + "statusbarvisible" : 2, + "toolbarvisible" : 1, + "lefttoolbarpinned" : 0, + "toptoolbarpinned" : 0, + "righttoolbarpinned" : 0, + "bottomtoolbarpinned" : 0, + "toolbars_unpinned_last_save" : 0, + "tallnewobj" : 0, + "boxanimatetime" : 200, + "enablehscroll" : 1, + "enablevscroll" : 1, + "devicewidth" : 0.0, + "description" : "", + "digest" : "", + "tags" : "", + "style" : "", + "subpatcher_template" : "", + "boxes" : [ { + "box" : { + "id" : "obj-17", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 308.0, 418.0, 63.0, 22.0 ], + "style" : "", + "text" : "sprintf %s" + } + + } +, { + "box" : { + "id" : "obj-16", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 190.0, 171.0, 63.0, 22.0 ], + "style" : "", + "text" : "sprintf %s" + } + + } +, { + "box" : { + "id" : "obj-14", + "linecount" : 2, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 747.0, 353.5, 50.0, 33.0 ], + "style" : "", + "text" : "Range (max)" + } + + } +, { + "box" : { + "id" : "obj-15", + "linecount" : 2, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 688.0, 353.5, 50.0, 33.0 ], + "style" : "", + "text" : "Range (min)" + } + + } +, { + "box" : { + "id" : "obj-13", + "linecount" : 2, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 631.0, 353.5, 50.0, 33.0 ], + "style" : "", + "text" : "Scan Time" + } + + } +, { + "box" : { + "id" : "obj-12", + "linecount" : 2, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 558.0, 353.5, 71.0, 33.0 ], + "style" : "", + "text" : "Time (increment)" + } + + } +, { + "box" : { + "id" : "obj-11", + "linecount" : 2, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 483.0, 353.5, 70.0, 33.0 ], + "style" : "", + "text" : "Angle (increment)" + } + + } +, { + "box" : { + "id" : "obj-10", + "linecount" : 2, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 436.181824, 353.5, 45.0, 33.0 ], + "style" : "", + "text" : "Angle (max)" + } + + } +, { + "box" : { + "id" : "obj-8", + "linecount" : 2, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 373.5, 353.5, 43.0, 33.0 ], + "style" : "", + "text" : "Angle (min)" + } + + } +, { + "box" : { + "id" : "obj-5", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 308.0, 449.0, 54.0, 22.0 ], + "style" : "", + "text" : "frame id" + } + + } +, { + "box" : { + "id" : "obj-9", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 190.0, 149.0, 41.0, 20.0 ], + "style" : "", + "text" : "Name" + } + + } +, { + "box" : { + "id" : "obj-7", + "linecount" : 2, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 150.0, 349.0, 104.0, 33.0 ], + "style" : "", + "text" : "TimeStamp\nsec and nano-sec" + } + + } +, { + "box" : { + "id" : "obj-6", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 165.0, 242.5, 30.0, 20.0 ], + "style" : "", + "text" : "Seq" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-21", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 242.0, 325.0, 88.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-19", + "maxclass" : "number", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 150.0, 325.0, 90.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-18", + "maxclass" : "number", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 197.0, 242.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-2", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 473.0, 53.0, 132.0, 20.0 ], + "style" : "", + "text" : " Laser Scan Message " + } + + } +, { + "box" : { + "id" : "obj-62", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 190.0, 200.0, 37.0, 22.0 ], + "style" : "", + "text" : "laser" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-92", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 747.0, 325.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-93", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 688.0, 325.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-94", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 631.0, 325.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-95", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 568.0, 325.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-96", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 489.0, 325.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-97", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 431.181824, 325.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-98", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 373.5, 325.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-103", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 12, + "outlettype" : [ "int", "int", "int", "float", "float", "float", "float", "float", "float", "float", "float", "float" ], + "patching_rect" : [ 333.0, 182.0, 199.0, 22.0 ], + "style" : "", + "text" : "unpack 0 0 0 0. 0. 0. 0. 0. 0. 0. 0. 0." + } + + } +, { + "box" : { + "id" : "obj-4", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 384.5, 92.0, 39.0, 22.0 ], + "style" : "", + "text" : "close" + } + + } +, { + "box" : { + "id" : "obj-3", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 334.0, 92.0, 37.0, 22.0 ], + "style" : "", + "text" : "open" + } + + } +, { + "box" : { + "id" : "obj-1", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 333.0, 138.0, 181.0, 22.0 ], + "style" : "", + "text" : "cr.robotin 192.168.1.200 @laser" + } + + } + ], + "lines" : [ { + "patchline" : { + "destination" : [ "obj-103", 0 ], + "source" : [ "obj-1", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-16", 0 ], + "source" : [ "obj-103", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-17", 0 ], + "source" : [ "obj-103", 4 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-18", 0 ], + "source" : [ "obj-103", 1 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-19", 0 ], + "source" : [ "obj-103", 2 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-21", 0 ], + "source" : [ "obj-103", 3 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-92", 0 ], + "source" : [ "obj-103", 11 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-93", 0 ], + "source" : [ "obj-103", 10 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-94", 0 ], + "source" : [ "obj-103", 9 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-95", 0 ], + "source" : [ "obj-103", 8 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-96", 0 ], + "source" : [ "obj-103", 7 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-97", 0 ], + "source" : [ "obj-103", 6 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-98", 0 ], + "source" : [ "obj-103", 5 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-62", 0 ], + "source" : [ "obj-16", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-5", 0 ], + "source" : [ "obj-17", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-1", 0 ], + "source" : [ "obj-3", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-1", 0 ], + "source" : [ "obj-4", 0 ] + } + + } + ], + "dependency_cache" : [ { + "name" : "cr.robotin.mxo", + "type" : "iLaX" + } + ], + "autosave" : 0 + } + +} diff --git a/cr/extras/ros/demo_robotin_odometry.maxpat b/cr/extras/ros/demo_robotin_odometry.maxpat new file mode 100644 index 0000000..a2b1191 --- /dev/null +++ b/cr/extras/ros/demo_robotin_odometry.maxpat @@ -0,0 +1,2077 @@ +{ + "patcher" : { + "fileversion" : 1, + "appversion" : { + "major" : 7, + "minor" : 3, + "revision" : 4, + "architecture" : "x86", + "modernui" : 1 + } +, + "rect" : [ 85.0, 161.0, 1492.0, 695.0 ], + "bglocked" : 0, + "openinpresentation" : 0, + "default_fontsize" : 12.0, + "default_fontface" : 0, + "default_fontname" : "Arial", + "gridonopen" : 1, + "gridsize" : [ 15.0, 15.0 ], + "gridsnaponopen" : 1, + "objectsnaponopen" : 1, + "statusbarvisible" : 2, + "toolbarvisible" : 1, + "lefttoolbarpinned" : 0, + "toptoolbarpinned" : 0, + "righttoolbarpinned" : 0, + "bottomtoolbarpinned" : 0, + "toolbars_unpinned_last_save" : 0, + "tallnewobj" : 0, + "boxanimatetime" : 200, + "enablehscroll" : 1, + "enablevscroll" : 1, + "devicewidth" : 0.0, + "description" : "", + "digest" : "", + "tags" : "", + "style" : "", + "subpatcher_template" : "", + "boxes" : [ { + "box" : { + "id" : "obj-33", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 289.0, 105.0, 39.0, 22.0 ], + "style" : "", + "text" : "close" + } + + } +, { + "box" : { + "id" : "obj-36", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 248.0, 105.0, 37.0, 22.0 ], + "style" : "", + "text" : "open" + } + + } +, { + "box" : { + "id" : "obj-26", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 57.0, 163.0, 63.0, 22.0 ], + "style" : "", + "text" : "sprintf %s" + } + + } +, { + "box" : { + "id" : "obj-23", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 133.0, 442.0, 63.0, 22.0 ], + "style" : "", + "text" : "sprintf %s" + } + + } +, { + "box" : { + "id" : "obj-25", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 133.0, 473.0, 82.0, 22.0 ], + "style" : "", + "text" : "child frame id" + } + + } +, { + "box" : { + "id" : "obj-5", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 63.0, 442.0, 63.0, 22.0 ], + "style" : "", + "text" : "sprintf %s" + } + + } +, { + "box" : { + "id" : "obj-22", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 63.0, 473.0, 54.0, 22.0 ], + "style" : "", + "text" : "frame id" + } + + } +, { + "box" : { + "id" : "obj-167", + "maxclass" : "number", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 218.0, 383.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-129", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1430.5, 310.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-130", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1378.5, 310.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-131", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1326.5, 310.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-132", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1430.5, 286.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-133", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1378.5, 286.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-134", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1326.5, 286.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-135", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1430.5, 262.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-136", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1378.5, 262.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-137", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1326.5, 262.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-138", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1274.5, 310.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-139", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1222.5, 310.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-140", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1170.5, 310.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-141", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1274.5, 286.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-142", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1222.5, 286.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-143", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1170.5, 286.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-144", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1274.5, 262.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-145", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1222.5, 262.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-146", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1170.5, 262.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-147", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1430.5, 382.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-148", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1378.5, 382.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-149", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1326.5, 382.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-150", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1430.5, 358.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-151", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1378.5, 358.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-152", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1326.5, 358.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-153", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1430.5, 334.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-154", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1378.5, 334.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-155", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1326.5, 334.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-156", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1274.5, 382.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-157", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1222.5, 382.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-158", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1170.5, 382.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-159", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1274.5, 358.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-160", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1222.5, 358.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-161", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1170.5, 358.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-162", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1274.5, 334.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-163", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1222.5, 334.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-164", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1170.5, 334.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-115", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 1193.5, 516.5, 19.0, 20.0 ], + "style" : "", + "text" : "Z" + } + + } +, { + "box" : { + "id" : "obj-116", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 1141.5, 516.5, 19.0, 20.0 ], + "style" : "", + "text" : "Y" + } + + } +, { + "box" : { + "id" : "obj-117", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 1085.0, 516.5, 19.0, 20.0 ], + "style" : "", + "text" : "X" + } + + } +, { + "box" : { + "id" : "obj-118", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 1001.0, 516.5, 19.0, 20.0 ], + "style" : "", + "text" : "Z" + } + + } +, { + "box" : { + "id" : "obj-119", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 944.5, 516.5, 19.0, 20.0 ], + "style" : "", + "text" : "Y" + } + + } +, { + "box" : { + "id" : "obj-120", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 888.0, 516.5, 19.0, 20.0 ], + "style" : "", + "text" : "X" + } + + } +, { + "box" : { + "id" : "obj-121", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 1093.0, 551.5, 135.0, 20.0 ], + "style" : "", + "text" : "Twist - Angular Velocity" + } + + } +, { + "box" : { + "id" : "obj-122", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 891.5, 551.5, 128.0, 20.0 ], + "style" : "", + "text" : "Twist - Linear Velocity\n" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-123", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1178.0, 475.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-124", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1126.0, 475.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-125", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 1074.0, 475.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-126", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 981.0, 475.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-127", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 929.0, 475.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-128", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 877.0, 475.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-106", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 845.5, 310.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-107", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 793.5, 310.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-108", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 741.5, 310.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-109", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 845.5, 286.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-110", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 793.5, 286.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-111", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 741.5, 286.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-112", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 845.5, 262.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-113", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 793.5, 262.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-114", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 741.5, 262.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-79", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 689.5, 310.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-80", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 637.5, 310.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-81", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 585.5, 310.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-82", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 689.5, 286.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-83", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 637.5, 286.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-84", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 585.5, 286.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-85", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 689.5, 262.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-86", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 637.5, 262.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-87", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 585.5, 262.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-70", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 845.5, 382.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-71", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 793.5, 382.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-72", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 741.5, 382.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-73", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 845.5, 358.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-74", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 793.5, 358.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-75", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 741.5, 358.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-76", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 845.5, 334.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-77", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 793.5, 334.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-78", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 741.5, 334.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-69", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 679.5, 424.5, 112.0, 20.0 ], + "style" : "", + "text" : "Pose - Covariance" + } + + } +, { + "box" : { + "id" : "obj-67", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 612.0, 516.5, 23.0, 20.0 ], + "style" : "", + "text" : "W" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-68", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 592.0, 475.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-12", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 558.0, 516.5, 19.0, 20.0 ], + "style" : "", + "text" : "Z" + } + + } +, { + "box" : { + "id" : "obj-16", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 501.5, 516.5, 19.0, 20.0 ], + "style" : "", + "text" : "Y" + } + + } +, { + "box" : { + "id" : "obj-17", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 445.0, 516.5, 19.0, 20.0 ], + "style" : "", + "text" : "X" + } + + } +, { + "box" : { + "id" : "obj-15", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 361.0, 516.5, 19.0, 20.0 ], + "style" : "", + "text" : "Z" + } + + } +, { + "box" : { + "id" : "obj-20", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 304.5, 516.5, 19.0, 20.0 ], + "style" : "", + "text" : "Y" + } + + } +, { + "box" : { + "id" : "obj-4", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 248.0, 516.5, 19.0, 20.0 ], + "style" : "", + "text" : "X" + } + + } +, { + "box" : { + "id" : "obj-59", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 476.0, 551.5, 112.0, 20.0 ], + "style" : "", + "text" : "Pose - Orientation" + } + + } +, { + "box" : { + "id" : "obj-60", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 265.0, 551.5, 94.0, 20.0 ], + "style" : "", + "text" : "Pose - Position\n" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-61", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 538.0, 475.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-62", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 486.0, 475.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-63", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 434.0, 475.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-64", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 341.0, 475.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-65", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 289.0, 475.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-66", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 237.0, 475.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-11", + "linecount" : 3, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 133.0, 503.5, 47.0, 47.0 ], + "style" : "", + "text" : "Child Frame ID" + } + + } +, { + "box" : { + "id" : "obj-10", + "linecount" : 2, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 66.0, 503.5, 50.0, 33.0 ], + "style" : "", + "text" : "Frame \nID" + } + + } +, { + "box" : { + "id" : "obj-8", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 58.0, 192.0, 61.0, 22.0 ], + "style" : "", + "text" : "odometry" + } + + } +, { + "box" : { + "id" : "obj-9", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 58.0, 134.0, 41.0, 20.0 ], + "style" : "", + "text" : "Name" + } + + } +, { + "box" : { + "id" : "obj-7", + "linecount" : 2, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 53.0, 313.5, 104.0, 33.0 ], + "style" : "", + "text" : "TimeStamp\nsec and nano-sec" + } + + } +, { + "box" : { + "id" : "obj-6", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 49.0, 245.5, 30.0, 20.0 ], + "style" : "", + "text" : "Seq" + } + + } +, { + "box" : { + "id" : "obj-3", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 197.0, 106.0, 45.0, 20.0 ], + "style" : "", + "text" : "On/Off" + } + + } +, { + "box" : { + "id" : "obj-2", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 675.5, 69.0, 120.0, 20.0 ], + "style" : "", + "text" : " Odometry Message " + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-34", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 689.5, 382.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-35", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 637.5, 382.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-30", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 585.5, 382.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-31", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 689.5, 358.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-32", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 637.5, 358.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-27", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 585.5, 358.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-28", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 689.5, 334.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-29", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 637.5, 334.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-24", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 585.5, 334.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-21", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 145.0, 289.5, 88.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-19", + "maxclass" : "number", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 53.0, 289.5, 90.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-18", + "maxclass" : "number", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 81.0, 245.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-14", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 86, + "outlettype" : [ "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "", "float", "float", "float", "float", "float", "float", "float", "float", "float" ], + "patching_rect" : [ 248.0, 205.0, 1237.0, 22.0 ], + "style" : "", + "text" : "unpack 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.0. 0. 0. 0. 0. 0. 0. 0. 0. 0." + } + + } +, { + "box" : { + "id" : "obj-1", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 248.0, 163.0, 205.0, 22.0 ], + "style" : "", + "text" : "cr.robotin 192.168.1.200 @odometry" + } + + } + ], + "lines" : [ { + "patchline" : { + "destination" : [ "obj-14", 0 ], + "source" : [ "obj-1", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-112", 0 ], + "source" : [ "obj-14", 18 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-113", 0 ], + "source" : [ "obj-14", 17 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-114", 0 ], + "source" : [ "obj-14", 16 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-123", 0 ], + "source" : [ "obj-14", 53 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-124", 0 ], + "source" : [ "obj-14", 52 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-125", 0 ], + "source" : [ "obj-14", 51 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-126", 0 ], + "source" : [ "obj-14", 50 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-127", 0 ], + "source" : [ "obj-14", 49 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-128", 0 ], + "source" : [ "obj-14", 48 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-135", 0 ], + "source" : [ "obj-14", 59 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-136", 0 ], + "source" : [ "obj-14", 58 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-137", 0 ], + "source" : [ "obj-14", 57 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-144", 0 ], + "source" : [ "obj-14", 56 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-145", 0 ], + "source" : [ "obj-14", 55 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-146", 0 ], + "source" : [ "obj-14", 54 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-147", 0 ], + "source" : [ "obj-14", 85 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-148", 0 ], + "source" : [ "obj-14", 84 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-149", 0 ], + "source" : [ "obj-14", 83 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-156", 0 ], + "source" : [ "obj-14", 82 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-157", 0 ], + "source" : [ "obj-14", 81 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-158", 0 ], + "source" : [ "obj-14", 80 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-167", 0 ], + "order" : 0, + "source" : [ "obj-14", 5 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-18", 0 ], + "source" : [ "obj-14", 1 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-19", 0 ], + "source" : [ "obj-14", 2 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-21", 0 ], + "source" : [ "obj-14", 3 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-23", 0 ], + "order" : 1, + "source" : [ "obj-14", 5 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-26", 0 ], + "source" : [ "obj-14", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-30", 0 ], + "source" : [ "obj-14", 42 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-34", 0 ], + "source" : [ "obj-14", 44 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-35", 0 ], + "source" : [ "obj-14", 43 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-5", 0 ], + "source" : [ "obj-14", 4 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-61", 0 ], + "source" : [ "obj-14", 11 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-62", 0 ], + "source" : [ "obj-14", 10 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-63", 0 ], + "source" : [ "obj-14", 9 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-64", 0 ], + "source" : [ "obj-14", 8 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-65", 0 ], + "source" : [ "obj-14", 7 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-66", 0 ], + "source" : [ "obj-14", 6 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-68", 0 ], + "source" : [ "obj-14", 12 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-70", 0 ], + "source" : [ "obj-14", 47 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-71", 0 ], + "source" : [ "obj-14", 46 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-72", 0 ], + "source" : [ "obj-14", 45 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-85", 0 ], + "source" : [ "obj-14", 15 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-86", 0 ], + "source" : [ "obj-14", 14 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-87", 0 ], + "source" : [ "obj-14", 13 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-25", 0 ], + "source" : [ "obj-23", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-8", 0 ], + "source" : [ "obj-26", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-1", 0 ], + "source" : [ "obj-33", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-1", 0 ], + "source" : [ "obj-36", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-22", 0 ], + "source" : [ "obj-5", 0 ] + } + + } + ], + "dependency_cache" : [ { + "name" : "cr.robotin.mxo", + "type" : "iLaX" + } + ], + "autosave" : 0 + } + +} diff --git a/cr/extras/ros/demo_robotin_sensors.maxpat b/cr/extras/ros/demo_robotin_sensors.maxpat new file mode 100644 index 0000000..7fd0775 --- /dev/null +++ b/cr/extras/ros/demo_robotin_sensors.maxpat @@ -0,0 +1,405 @@ +{ + "patcher" : { + "fileversion" : 1, + "appversion" : { + "major" : 7, + "minor" : 3, + "revision" : 4, + "architecture" : "x86", + "modernui" : 1 + } +, + "rect" : [ 34.0, 634.0, 663.0, 512.0 ], + "bglocked" : 0, + "openinpresentation" : 0, + "default_fontsize" : 12.0, + "default_fontface" : 0, + "default_fontname" : "Arial", + "gridonopen" : 1, + "gridsize" : [ 15.0, 15.0 ], + "gridsnaponopen" : 1, + "objectsnaponopen" : 1, + "statusbarvisible" : 2, + "toolbarvisible" : 1, + "lefttoolbarpinned" : 0, + "toptoolbarpinned" : 0, + "righttoolbarpinned" : 0, + "bottomtoolbarpinned" : 0, + "toolbars_unpinned_last_save" : 0, + "tallnewobj" : 0, + "boxanimatetime" : 200, + "enablehscroll" : 1, + "enablevscroll" : 1, + "devicewidth" : 0.0, + "description" : "", + "digest" : "", + "tags" : "", + "style" : "", + "subpatcher_template" : "", + "boxes" : [ { + "box" : { + "id" : "obj-39", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 41.0, 156.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-38", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 41.0, 127.0, 41.0, 20.0 ], + "style" : "", + "text" : "Name" + } + + } +, { + "box" : { + "id" : "obj-37", + "maxclass" : "number", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 174.0, 225.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-35", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 116.0, 56.0, 45.0, 20.0 ], + "style" : "", + "text" : "On/Off" + } + + } +, { + "box" : { + "id" : "obj-34", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 555.0, 273.0, 54.0, 20.0 ], + "style" : "", + "text" : "Battery" + } + + } +, { + "box" : { + "id" : "obj-33", + "linecount" : 2, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 489.0, 273.0, 54.0, 33.0 ], + "style" : "", + "text" : "Right \nEncoder" + } + + } +, { + "box" : { + "id" : "obj-32", + "linecount" : 2, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 402.5, 273.0, 54.0, 33.0 ], + "style" : "", + "text" : "Left \nEncoder" + } + + } +, { + "box" : { + "id" : "obj-31", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 333.0, 273.0, 50.0, 20.0 ], + "style" : "", + "text" : "Button" + } + + } +, { + "box" : { + "id" : "obj-30", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 261.0, 273.0, 50.0, 20.0 ], + "style" : "", + "text" : "Cliff" + } + + } +, { + "box" : { + "id" : "obj-29", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 174.0, 273.0, 50.0, 20.0 ], + "style" : "", + "text" : "Bunper" + } + + } +, { + "box" : { + "id" : "obj-28", + "linecount" : 2, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 39.0, 273.0, 104.0, 33.0 ], + "style" : "", + "text" : "TimeStamp\nsec and nano-sec" + } + + } +, { + "box" : { + "id" : "obj-26", + "maxclass" : "number", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 489.0, 225.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-25", + "maxclass" : "number", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 402.5, 225.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-24", + "maxclass" : "number", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 333.0, 225.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-22", + "maxclass" : "number", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 261.0, 225.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-20", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 243.5, 30.0, 85.0, 20.0 ], + "style" : "", + "text" : "Sensors State\n" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-96", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 555.0, 225.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-101", + "maxclass" : "number", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 93.0, 225.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-102", + "maxclass" : "number", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 41.0, 225.5, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-103", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 9, + "outlettype" : [ "int", "int", "int", "int", "int", "int", "int", "int", "float" ], + "patching_rect" : [ 178.0, 143.0, 143.0, 22.0 ], + "style" : "", + "text" : "unpack 0 0 0 0 0 0 0 0 0." + } + + } +, { + "box" : { + "id" : "obj-13", + "maxclass" : "toggle", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "int" ], + "parameter_enable" : 0, + "patching_rect" : [ 178.0, 54.0, 24.0, 24.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-1", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 178.0, 104.0, 197.0, 22.0 ], + "style" : "", + "text" : "cr.robotin 192.168.1.200 @sensors" + } + + } + ], + "lines" : [ { + "patchline" : { + "destination" : [ "obj-103", 0 ], + "source" : [ "obj-1", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-101", 0 ], + "source" : [ "obj-103", 2 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-102", 0 ], + "source" : [ "obj-103", 1 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-22", 0 ], + "source" : [ "obj-103", 4 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-24", 0 ], + "source" : [ "obj-103", 5 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-25", 0 ], + "source" : [ "obj-103", 6 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-26", 0 ], + "source" : [ "obj-103", 7 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-37", 0 ], + "source" : [ "obj-103", 3 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-39", 0 ], + "source" : [ "obj-103", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-96", 0 ], + "source" : [ "obj-103", 8 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-1", 0 ], + "source" : [ "obj-13", 0 ] + } + + } + ], + "dependency_cache" : [ { + "name" : "cr.robotin.mxo", + "type" : "iLaX" + } + ], + "autosave" : 0 + } + +} diff --git a/cr/extras/ros/demo_robotin_twist.maxpat b/cr/extras/ros/demo_robotin_twist.maxpat new file mode 100644 index 0000000..fd8e429 --- /dev/null +++ b/cr/extras/ros/demo_robotin_twist.maxpat @@ -0,0 +1,402 @@ +{ + "patcher" : { + "fileversion" : 1, + "appversion" : { + "major" : 7, + "minor" : 3, + "revision" : 4, + "architecture" : "x86", + "modernui" : 1 + } +, + "rect" : [ 324.0, 204.0, 627.0, 399.0 ], + "bglocked" : 0, + "openinpresentation" : 0, + "default_fontsize" : 12.0, + "default_fontface" : 0, + "default_fontname" : "Arial", + "gridonopen" : 1, + "gridsize" : [ 15.0, 15.0 ], + "gridsnaponopen" : 1, + "objectsnaponopen" : 1, + "statusbarvisible" : 2, + "toolbarvisible" : 1, + "lefttoolbarpinned" : 0, + "toptoolbarpinned" : 0, + "righttoolbarpinned" : 0, + "bottomtoolbarpinned" : 0, + "toolbars_unpinned_last_save" : 0, + "tallnewobj" : 0, + "boxanimatetime" : 200, + "enablehscroll" : 1, + "enablevscroll" : 1, + "devicewidth" : 0.0, + "description" : "", + "digest" : "", + "tags" : "", + "style" : "", + "subpatcher_template" : "", + "boxes" : [ { + "box" : { + "fontname" : "Verdana", + "fontsize" : 11.0, + "id" : "obj-19", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 80.0, 203.0, 67.0, 22.0 ], + "style" : "", + "text" : "sprintf %s" + } + + } +, { + "box" : { + "id" : "obj-18", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 80.0, 234.0, 34.0, 22.0 ], + "style" : "", + "text" : "twist" + } + + } +, { + "box" : { + "id" : "obj-38", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 80.0, 258.0, 41.0, 20.0 ], + "style" : "", + "text" : "Name" + } + + } +, { + "box" : { + "id" : "obj-35", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 159.0, 84.0, 44.0, 20.0 ], + "style" : "", + "text" : "On/Off" + } + + } +, { + "box" : { + "id" : "obj-14", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 505.0, 282.0, 19.0, 20.0 ], + "style" : "", + "text" : "Z" + } + + } +, { + "box" : { + "id" : "obj-16", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 448.5, 282.0, 19.0, 20.0 ], + "style" : "", + "text" : "Y" + } + + } +, { + "box" : { + "id" : "obj-17", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 392.0, 282.0, 19.0, 20.0 ], + "style" : "", + "text" : "X" + } + + } +, { + "box" : { + "id" : "obj-6", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 308.0, 282.0, 19.0, 20.0 ], + "style" : "", + "text" : "Z" + } + + } +, { + "box" : { + "id" : "obj-5", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 251.5, 282.0, 19.0, 20.0 ], + "style" : "", + "text" : "Y" + } + + } +, { + "box" : { + "id" : "obj-4", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 195.0, 282.0, 19.0, 20.0 ], + "style" : "", + "text" : "X" + } + + } +, { + "box" : { + "id" : "obj-3", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 401.0, 317.0, 101.0, 20.0 ], + "style" : "", + "text" : "Angular Velocity" + } + + } +, { + "box" : { + "id" : "obj-2", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 202.0, 317.0, 96.0, 20.0 ], + "style" : "", + "text" : "Linear Velocity\n" + } + + } +, { + "box" : { + "id" : "obj-36", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 243.0, 29.0, 153.0, 20.0 ], + "style" : "", + "text" : "Velocities - Twist Message " + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-15", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 486.0, 255.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-7", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 7, + "outlettype" : [ "float", "float", "float", "float", "float", "float", "float" ], + "patching_rect" : [ 222.0, 171.0, 143.0, 22.0 ], + "style" : "", + "text" : "unpack 0. 0. 0. 0. 0. 0. 0." + } + + } +, { + "box" : { + "id" : "obj-13", + "maxclass" : "toggle", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "int" ], + "parameter_enable" : 0, + "patching_rect" : [ 222.0, 82.0, 24.0, 24.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-10", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 434.0, 255.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-11", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 382.0, 255.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-12", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 289.0, 255.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-9", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 237.0, 255.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-8", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 185.0, 255.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-1", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 222.0, 135.0, 179.0, 22.0 ], + "style" : "", + "text" : "cr.robotin 192.168.1.200 @twist" + } + + } + ], + "lines" : [ { + "patchline" : { + "destination" : [ "obj-7", 0 ], + "source" : [ "obj-1", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-1", 0 ], + "source" : [ "obj-13", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-18", 0 ], + "source" : [ "obj-19", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-10", 0 ], + "source" : [ "obj-7", 5 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-11", 0 ], + "source" : [ "obj-7", 4 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-12", 0 ], + "source" : [ "obj-7", 3 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-15", 0 ], + "source" : [ "obj-7", 6 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-19", 0 ], + "source" : [ "obj-7", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-8", 0 ], + "source" : [ "obj-7", 1 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-9", 0 ], + "source" : [ "obj-7", 2 ] + } + + } + ], + "dependency_cache" : [ { + "name" : "cr.robotin.mxo", + "type" : "iLaX" + } + ], + "autosave" : 0 + } + +} diff --git a/cr/extras/ros/demo_robotout_twist.maxpat b/cr/extras/ros/demo_robotout_twist.maxpat new file mode 100644 index 0000000..bb585b0 --- /dev/null +++ b/cr/extras/ros/demo_robotout_twist.maxpat @@ -0,0 +1,221 @@ +{ + "patcher" : { + "fileversion" : 1, + "appversion" : { + "major" : 7, + "minor" : 3, + "revision" : 4, + "architecture" : "x86", + "modernui" : 1 + } +, + "rect" : [ 253.0, 267.0, 486.0, 332.0 ], + "bglocked" : 0, + "openinpresentation" : 0, + "default_fontsize" : 12.0, + "default_fontface" : 0, + "default_fontname" : "Arial", + "gridonopen" : 1, + "gridsize" : [ 15.0, 15.0 ], + "gridsnaponopen" : 1, + "objectsnaponopen" : 1, + "statusbarvisible" : 2, + "toolbarvisible" : 1, + "lefttoolbarpinned" : 0, + "toptoolbarpinned" : 0, + "righttoolbarpinned" : 0, + "bottomtoolbarpinned" : 0, + "toolbars_unpinned_last_save" : 0, + "tallnewobj" : 0, + "boxanimatetime" : 200, + "enablehscroll" : 1, + "enablevscroll" : 1, + "devicewidth" : 0.0, + "description" : "", + "digest" : "", + "tags" : "", + "style" : "", + "subpatcher_template" : "", + "boxes" : [ { + "box" : { + "id" : "obj-3", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 47.0, 201.0, 39.0, 22.0 ], + "style" : "", + "text" : "close" + } + + } +, { + "box" : { + "id" : "obj-2", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 139.0, 117.0, 41.0, 22.0 ], + "style" : "", + "text" : "break" + } + + } +, { + "box" : { + "id" : "obj-1", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 94.0, 161.0, 37.0, 22.0 ], + "style" : "", + "text" : "bang" + } + + } +, { + "box" : { + "id" : "obj-30", + "linecount" : 2, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 317.0, 106.0, 53.0, 33.0 ], + "style" : "", + "text" : "Angular Velocity" + } + + } +, { + "box" : { + "id" : "obj-31", + "linecount" : 2, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 210.333328, 106.0, 53.0, 33.0 ], + "style" : "", + "text" : "Linear Velocity\n" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-32", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 317.0, 143.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-40", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 210.333328, 143.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-22", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 47.0, 161.0, 37.0, 22.0 ], + "style" : "", + "text" : "open" + } + + } +, { + "box" : { + "id" : "obj-21", + "maxclass" : "newobj", + "numinlets" : 7, + "numoutlets" : 0, + "patching_rect" : [ 189.0, 201.0, 147.0, 22.0 ], + "style" : "", + "text" : "cr.robotout 192.168.1.200" + } + + } +, { + "box" : { + "id" : "obj-36", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 169.5, 68.0, 186.0, 20.0 ], + "style" : "", + "text" : "Velocities - Twist Message (Out) " + } + + } + ], + "lines" : [ { + "patchline" : { + "destination" : [ "obj-21", 0 ], + "source" : [ "obj-1", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-21", 0 ], + "source" : [ "obj-2", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-21", 0 ], + "source" : [ "obj-22", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-21", 0 ], + "source" : [ "obj-3", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-21", 6 ], + "source" : [ "obj-32", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-21", 1 ], + "source" : [ "obj-40", 0 ] + } + + } + ], + "dependency_cache" : [ { + "name" : "cr.robotout.mxo", + "type" : "iLaX" + } + ], + "autosave" : 0 + } + +} diff --git a/cr/extras/ros/demo_robotout_twist_full.maxpat b/cr/extras/ros/demo_robotout_twist_full.maxpat new file mode 100644 index 0000000..0768ed4 --- /dev/null +++ b/cr/extras/ros/demo_robotout_twist_full.maxpat @@ -0,0 +1,355 @@ +{ + "patcher" : { + "fileversion" : 1, + "appversion" : { + "major" : 7, + "minor" : 3, + "revision" : 4, + "architecture" : "x86", + "modernui" : 1 + } +, + "rect" : [ 468.0, 191.0, 635.0, 332.0 ], + "bglocked" : 0, + "openinpresentation" : 0, + "default_fontsize" : 12.0, + "default_fontface" : 0, + "default_fontname" : "Arial", + "gridonopen" : 1, + "gridsize" : [ 15.0, 15.0 ], + "gridsnaponopen" : 1, + "objectsnaponopen" : 1, + "statusbarvisible" : 2, + "toolbarvisible" : 1, + "lefttoolbarpinned" : 0, + "toptoolbarpinned" : 0, + "righttoolbarpinned" : 0, + "bottomtoolbarpinned" : 0, + "toolbars_unpinned_last_save" : 0, + "tallnewobj" : 0, + "boxanimatetime" : 200, + "enablehscroll" : 1, + "enablevscroll" : 1, + "devicewidth" : 0.0, + "description" : "", + "digest" : "", + "tags" : "", + "style" : "", + "subpatcher_template" : "", + "boxes" : [ { + "box" : { + "id" : "obj-2", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 94.0, 101.0, 41.0, 22.0 ], + "style" : "", + "text" : "break" + } + + } +, { + "box" : { + "id" : "obj-1", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 94.0, 163.0, 37.0, 22.0 ], + "style" : "", + "text" : "bang" + } + + } +, { + "box" : { + "id" : "obj-24", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 455.0, 121.0, 19.0, 20.0 ], + "style" : "", + "text" : "Z" + } + + } +, { + "box" : { + "id" : "obj-25", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 407.5, 121.0, 19.0, 20.0 ], + "style" : "", + "text" : "Y" + } + + } +, { + "box" : { + "id" : "obj-26", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 351.0, 121.0, 19.0, 20.0 ], + "style" : "", + "text" : "X" + } + + } +, { + "box" : { + "id" : "obj-27", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 293.0, 121.0, 19.0, 20.0 ], + "style" : "", + "text" : "Z" + } + + } +, { + "box" : { + "id" : "obj-28", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 236.5, 121.0, 19.0, 20.0 ], + "style" : "", + "text" : "Y" + } + + } +, { + "box" : { + "id" : "obj-29", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 180.0, 121.0, 19.0, 20.0 ], + "style" : "", + "text" : "X" + } + + } +, { + "box" : { + "id" : "obj-30", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 373.0, 90.0, 101.0, 20.0 ], + "style" : "", + "text" : "Angular Velocity" + } + + } +, { + "box" : { + "id" : "obj-31", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 200.0, 90.0, 96.0, 20.0 ], + "style" : "", + "text" : "Linear Velocity\n" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-32", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 445.0, 143.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-33", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 393.0, 143.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-34", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 341.0, 143.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-37", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 274.0, 143.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-39", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 222.0, 143.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-40", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 170.0, 143.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-22", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 47.0, 163.0, 37.0, 22.0 ], + "style" : "", + "text" : "open" + } + + } +, { + "box" : { + "id" : "obj-21", + "maxclass" : "newobj", + "numinlets" : 7, + "numoutlets" : 0, + "patching_rect" : [ 189.0, 201.0, 147.0, 22.0 ], + "style" : "", + "text" : "cr.robotout 192.168.1.200" + } + + } +, { + "box" : { + "id" : "obj-36", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 180.0, 34.0, 186.0, 20.0 ], + "style" : "", + "text" : "Velocities - Twist Message (Out) " + } + + } + ], + "lines" : [ { + "patchline" : { + "destination" : [ "obj-21", 0 ], + "source" : [ "obj-1", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-21", 0 ], + "source" : [ "obj-2", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-21", 0 ], + "source" : [ "obj-22", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-21", 6 ], + "source" : [ "obj-32", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-21", 5 ], + "source" : [ "obj-33", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-21", 4 ], + "source" : [ "obj-34", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-21", 3 ], + "source" : [ "obj-37", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-21", 2 ], + "source" : [ "obj-39", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-21", 1 ], + "source" : [ "obj-40", 0 ] + } + + } + ], + "dependency_cache" : [ { + "name" : "cr.robotout.mxo", + "type" : "iLaX" + } + ], + "autosave" : 0 + } + +} diff --git a/cr/extras/ros/demo_robotout_twist_sliders.maxpat b/cr/extras/ros/demo_robotout_twist_sliders.maxpat new file mode 100644 index 0000000..d2381f1 --- /dev/null +++ b/cr/extras/ros/demo_robotout_twist_sliders.maxpat @@ -0,0 +1,649 @@ +{ + "patcher" : { + "fileversion" : 1, + "appversion" : { + "major" : 7, + "minor" : 3, + "revision" : 4, + "architecture" : "x86", + "modernui" : 1 + } +, + "rect" : [ 289.0, 231.0, 614.0, 479.0 ], + "bglocked" : 0, + "openinpresentation" : 0, + "default_fontsize" : 12.0, + "default_fontface" : 0, + "default_fontname" : "Arial", + "gridonopen" : 1, + "gridsize" : [ 15.0, 15.0 ], + "gridsnaponopen" : 1, + "objectsnaponopen" : 1, + "statusbarvisible" : 2, + "toolbarvisible" : 1, + "lefttoolbarpinned" : 0, + "toptoolbarpinned" : 0, + "righttoolbarpinned" : 0, + "bottomtoolbarpinned" : 0, + "toolbars_unpinned_last_save" : 0, + "tallnewobj" : 0, + "boxanimatetime" : 200, + "enablehscroll" : 1, + "enablevscroll" : 1, + "devicewidth" : 0.0, + "description" : "", + "digest" : "", + "tags" : "", + "style" : "", + "subpatcher_template" : "", + "boxes" : [ { + "box" : { + "id" : "obj-13", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 30.0, 158.0, 49.0, 20.0 ], + "style" : "", + "text" : "BREAK\n" + } + + } +, { + "box" : { + "id" : "obj-6", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 30.0, 188.0, 37.0, 22.0 ], + "style" : "", + "text" : "bang" + } + + } +, { + "box" : { + "id" : "obj-5", + "maxclass" : "number", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 30.0, 219.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-2", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 34.0, 350.5, 41.0, 22.0 ], + "style" : "", + "text" : "break" + } + + } +, { + "box" : { + "id" : "obj-11", + "maxclass" : "live.slider", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "float" ], + "parameter_enable" : 1, + "patching_rect" : [ 243.0, 161.0, 39.0, 95.0 ], + "saved_attribute_attributes" : { + "valueof" : { + "parameter_longname" : "live.slider[2]", + "parameter_shortname" : "live.slider", + "parameter_type" : 0, + "parameter_mmin" : -5.0, + "parameter_mmax" : 5.0, + "parameter_unitstyle" : 0 + } + + } +, + "varname" : "live.slider[2]" + } + + } +, { + "box" : { + "id" : "obj-10", + "maxclass" : "live.slider", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "float" ], + "parameter_enable" : 1, + "patching_rect" : [ 191.0, 158.0, 39.0, 95.0 ], + "saved_attribute_attributes" : { + "valueof" : { + "parameter_longname" : "live.slider[1]", + "parameter_shortname" : "live.slider", + "parameter_type" : 0, + "parameter_mmin" : -5.0, + "parameter_mmax" : 5.0, + "parameter_unitstyle" : 0 + } + + } +, + "varname" : "live.slider[1]" + } + + } +, { + "box" : { + "id" : "obj-9", + "maxclass" : "live.dial", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "float" ], + "parameter_enable" : 1, + "patching_rect" : [ 414.0, 194.0, 44.0, 47.0 ], + "saved_attribute_attributes" : { + "valueof" : { + "parameter_longname" : "live.dial[2]", + "parameter_shortname" : "live.dial", + "parameter_type" : 0, + "parameter_mmin" : -5.0, + "parameter_mmax" : 5.0, + "parameter_unitstyle" : 1 + } + + } +, + "varname" : "live.dial[2]" + } + + } +, { + "box" : { + "id" : "obj-8", + "maxclass" : "live.dial", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "float" ], + "parameter_enable" : 1, + "patching_rect" : [ 362.0, 194.0, 44.0, 47.0 ], + "saved_attribute_attributes" : { + "valueof" : { + "parameter_longname" : "live.dial[1]", + "parameter_shortname" : "live.dial", + "parameter_type" : 0, + "parameter_mmin" : -5.0, + "parameter_mmax" : 5.0, + "parameter_unitstyle" : 1 + } + + } +, + "varname" : "live.dial[1]" + } + + } +, { + "box" : { + "id" : "obj-4", + "maxclass" : "live.dial", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "float" ], + "parameter_enable" : 1, + "patching_rect" : [ 310.0, 194.0, 44.0, 47.0 ], + "saved_attribute_attributes" : { + "valueof" : { + "parameter_longname" : "live.dial", + "parameter_shortname" : "live.dial", + "parameter_type" : 0, + "parameter_mmin" : -5.0, + "parameter_mmax" : 5.0, + "parameter_unitstyle" : 1 + } + + } +, + "varname" : "live.dial" + } + + } +, { + "box" : { + "id" : "obj-3", + "maxclass" : "live.slider", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "float" ], + "parameter_enable" : 1, + "patching_rect" : [ 139.0, 158.0, 39.0, 95.0 ], + "saved_attribute_attributes" : { + "valueof" : { + "parameter_longname" : "live.slider", + "parameter_shortname" : "live.slider", + "parameter_type" : 0, + "parameter_mmin" : -5.0, + "parameter_mmax" : 5.0, + "parameter_unitstyle" : 0 + } + + } +, + "varname" : "live.slider" + } + + } +, { + "box" : { + "id" : "obj-1", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 77.0, 286.0, 37.0, 22.0 ], + "style" : "", + "text" : "bang" + } + + } +, { + "box" : { + "id" : "obj-24", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 429.0, 117.0, 19.0, 20.0 ], + "style" : "", + "text" : "Z" + } + + } +, { + "box" : { + "id" : "obj-25", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 381.5, 117.0, 19.0, 20.0 ], + "style" : "", + "text" : "Y" + } + + } +, { + "box" : { + "id" : "obj-26", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 325.0, 117.0, 19.0, 20.0 ], + "style" : "", + "text" : "X" + } + + } +, { + "box" : { + "id" : "obj-27", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 261.0, 117.0, 19.0, 20.0 ], + "style" : "", + "text" : "Z" + } + + } +, { + "box" : { + "id" : "obj-28", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 204.5, 117.0, 19.0, 20.0 ], + "style" : "", + "text" : "Y" + } + + } +, { + "box" : { + "id" : "obj-29", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 148.0, 117.0, 19.0, 20.0 ], + "style" : "", + "text" : "X" + } + + } +, { + "box" : { + "id" : "obj-30", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 340.5, 86.0, 101.0, 20.0 ], + "style" : "", + "text" : "Angular Velocity" + } + + } +, { + "box" : { + "id" : "obj-31", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 168.0, 86.0, 96.0, 20.0 ], + "style" : "", + "text" : "Linear Velocity\n" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-32", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 414.0, 267.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-33", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 362.0, 267.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-34", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 310.0, 267.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-37", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 243.0, 267.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-39", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 191.0, 267.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-40", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 139.0, 267.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-22", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 30.0, 286.0, 37.0, 22.0 ], + "style" : "", + "text" : "open" + } + + } +, { + "box" : { + "id" : "obj-21", + "maxclass" : "newobj", + "numinlets" : 7, + "numoutlets" : 0, + "patching_rect" : [ 158.0, 325.0, 147.0, 22.0 ], + "style" : "", + "text" : "cr.robotout 192.168.1.200" + } + + } +, { + "box" : { + "id" : "obj-36", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 180.0, 34.0, 186.0, 20.0 ], + "style" : "", + "text" : "Velocities - Twist Message (Out) " + } + + } + ], + "lines" : [ { + "patchline" : { + "destination" : [ "obj-21", 0 ], + "source" : [ "obj-1", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-39", 0 ], + "source" : [ "obj-10", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-37", 0 ], + "source" : [ "obj-11", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-21", 0 ], + "source" : [ "obj-2", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-21", 0 ], + "source" : [ "obj-22", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-40", 0 ], + "source" : [ "obj-3", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-21", 6 ], + "source" : [ "obj-32", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-21", 5 ], + "source" : [ "obj-33", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-21", 4 ], + "source" : [ "obj-34", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-21", 3 ], + "source" : [ "obj-37", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-21", 2 ], + "source" : [ "obj-39", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-34", 0 ], + "source" : [ "obj-4", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-21", 1 ], + "source" : [ "obj-40", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-32", 0 ], + "order" : 0, + "source" : [ "obj-5", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-33", 0 ], + "order" : 1, + "source" : [ "obj-5", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-34", 0 ], + "order" : 2, + "source" : [ "obj-5", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-37", 0 ], + "order" : 3, + "source" : [ "obj-5", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-39", 0 ], + "order" : 4, + "source" : [ "obj-5", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-40", 0 ], + "order" : 5, + "source" : [ "obj-5", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-5", 0 ], + "source" : [ "obj-6", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-33", 0 ], + "source" : [ "obj-8", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-32", 0 ], + "source" : [ "obj-9", 0 ] + } + + } + ], + "parameters" : { + "obj-9" : [ "live.dial[2]", "live.dial", 0 ], + "obj-10" : [ "live.slider[1]", "live.slider", 0 ], + "obj-4" : [ "live.dial", "live.dial", 0 ], + "obj-3" : [ "live.slider", "live.slider", 0 ], + "obj-11" : [ "live.slider[2]", "live.slider", 0 ], + "obj-8" : [ "live.dial[1]", "live.dial", 0 ] + } +, + "dependency_cache" : [ { + "name" : "cr.robotout.mxo", + "type" : "iLaX" + } + ], + "autosave" : 0 + } + +} diff --git a/cr/help/cr.robotin.maxhelp b/cr/help/cr.robotin.maxhelp new file mode 100644 index 0000000..002be82 --- /dev/null +++ b/cr/help/cr.robotin.maxhelp @@ -0,0 +1,516 @@ +{ + "patcher" : { + "fileversion" : 1, + "appversion" : { + "major" : 7, + "minor" : 3, + "revision" : 1, + "architecture" : "x86", + "modernui" : 1 + } +, + "rect" : [ 611.0, 117.0, 750.0, 602.0 ], + "bglocked" : 0, + "openinpresentation" : 0, + "default_fontsize" : 12.0, + "default_fontface" : 0, + "default_fontname" : "Arial", + "gridonopen" : 1, + "gridsize" : [ 15.0, 15.0 ], + "gridsnaponopen" : 1, + "objectsnaponopen" : 1, + "statusbarvisible" : 2, + "toolbarvisible" : 1, + "lefttoolbarpinned" : 0, + "toptoolbarpinned" : 0, + "righttoolbarpinned" : 0, + "bottomtoolbarpinned" : 0, + "toolbars_unpinned_last_save" : 0, + "tallnewobj" : 0, + "boxanimatetime" : 200, + "enablehscroll" : 1, + "enablevscroll" : 1, + "devicewidth" : 0.0, + "description" : "", + "digest" : "", + "tags" : "", + "style" : "", + "subpatcher_template" : "", + "boxes" : [ { + "box" : { + "id" : "obj-27", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 457.5, 286.0, 208.5, 20.0 ], + "style" : "", + "text" : "Test the Connection to Arduino Board" + } + + } +, { + "box" : { + "id" : "obj-28", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 415.0, 285.0, 30.0, 22.0 ], + "style" : "", + "text" : "test" + } + + } +, { + "box" : { + "id" : "obj-26", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 440.0, 257.0, 218.0, 20.0 ], + "style" : "", + "text" : "Close the Connection to Arduino Board" + } + + } +, { + "box" : { + "id" : "obj-25", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 410.5, 224.0, 208.5, 20.0 ], + "style" : "", + "text" : "Open a Connection to Arduino Board" + } + + } +, { + "box" : { + "id" : "obj-24", + "linecount" : 2, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 40.0, 292.0, 83.0, 33.0 ], + "style" : "", + "text" : "Print Current Config Modes" + } + + } +, { + "box" : { + "id" : "obj-23", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 25.0, 252.0, 121.0, 20.0 ], + "style" : "", + "text" : "Print Possible Modes" + } + + } +, { + "box" : { + "id" : "obj-22", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 152.0, 252.0, 33.0, 22.0 ], + "style" : "", + "text" : "pins" + } + + } +, { + "box" : { + "id" : "obj-19", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 124.0, 292.0, 43.0, 22.0 ], + "style" : "", + "text" : "config" + } + + } +, { + "box" : { + "id" : "obj-16", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 389.5, 256.0, 39.0, 22.0 ], + "style" : "", + "text" : "close" + } + + } +, { + "box" : { + "id" : "obj-14", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 365.0, 223.0, 37.0, 22.0 ], + "style" : "", + "text" : "open" + } + + } +, { + "box" : { + "id" : "obj-2", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 89.5, 150.0, 150.0, 20.0 ], + "style" : "", + "text" : "Get Current Values (Once)" + } + + } +, { + "box" : { + "id" : "obj-9", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 246.5, 149.0, 37.0, 22.0 ], + "style" : "", + "text" : "bang" + } + + } +, { + "box" : { + "id" : "obj-21", + "linecount" : 3, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 301.0, 508.5, 95.0, 47.0 ], + "style" : "", + "text" : "Reads Analog Values from the Potentiometer" + } + + } +, { + "box" : { + "id" : "obj-10", + "linecount" : 4, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 542.0, 327.0, 180.0, 60.0 ], + "style" : "", + "text" : "Reads from Pins: \nAnalog 0 (A0 - temperature)\nAnalog 4 (A4 - potentiometer)\nDigital 11 (D11 - light)" + } + + } +, { + "box" : { + "fontface" : 1, + "fontsize" : 16.0, + "id" : "obj-20", + "linecount" : 2, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 83.0, 35.0, 611.0, 42.0 ], + "style" : "", + "text" : "MaxHelp: Arduino UNO BoardIn\nPotentiometer, LED Light, and a Temperature Sensor", + "textjustification" : 1 + } + + } +, { + "box" : { + "id" : "obj-18", + "linecount" : 2, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 147.0, 451.5, 153.0, 33.0 ], + "style" : "", + "text" : "Reads Analog Values from the Temperature Sensor" + } + + } +, { + "box" : { + "id" : "obj-17", + "linecount" : 2, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 553.0, 434.0, 133.0, 33.0 ], + "style" : "", + "text" : "Reads Digital Values (On/Off) from the LED" + } + + } +, { + "box" : { + "id" : "obj-15", + "linecount" : 4, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 132.5, 342.0, 172.0, 60.0 ], + "style" : "", + "text" : "Arduino Uno Reader\nRequires port index and the list of pins to read from (set to either Analog or Digital reads)" + } + + } +, { + "box" : { + "id" : "obj-13", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 75.0, 218.0, 117.0, 20.0 ], + "style" : "", + "text" : "Print Available Ports" + } + + } +, { + "box" : { + "id" : "obj-12", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 387.0, 171.0, 198.0, 20.0 ], + "style" : "", + "text" : "Determine Speed of Pins Updates" + } + + } +, { + "box" : { + "id" : "obj-11", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 353.5, 122.0, 163.0, 20.0 ], + "style" : "", + "text" : "Turn Analog Reader On/Off" + } + + } +, { + "box" : { + "id" : "obj-8", + "maxclass" : "toggle", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "int" ], + "parameter_enable" : 0, + "patching_rect" : [ 513.0, 438.5, 24.0, 24.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-7", + "maxclass" : "number", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 411.5, 521.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-6", + "maxclass" : "number", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 310.0, 457.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-5", + "maxclass" : "toggle", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "int" ], + "parameter_enable" : 0, + "patching_rect" : [ 310.0, 120.0, 24.0, 24.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-4", + "maxclass" : "newobj", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "bang" ], + "patching_rect" : [ 310.0, 171.0, 58.0, 22.0 ], + "style" : "", + "text" : "metro 80" + } + + } +, { + "box" : { + "id" : "obj-3", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 199.0, 218.0, 37.0, 22.0 ], + "style" : "", + "text" : "ports" + } + + } +, { + "box" : { + "id" : "obj-1", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 3, + "outlettype" : [ "int", "int", "int" ], + "patching_rect" : [ 310.0, 346.0, 222.0, 22.0 ], + "style" : "", + "text" : "cr.boardin a @analog A0 A4 @digital 11" + } + + } + ], + "lines" : [ { + "patchline" : { + "destination" : [ "obj-6", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-1", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-7", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-1", 1 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-8", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-1", 2 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-1", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-14", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-1", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-16", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-1", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-19", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-1", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-22", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-1", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-28", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-1", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-3", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-1", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-4", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-4", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-5", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-1", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-9", 0 ] + } + + } + ], + "dependency_cache" : [ { + "name" : "cr.boardin.mxo", + "type" : "iLaX" + } + ], + "autosave" : 0 + } + +} diff --git a/cr/help/cr.robotout.maxhelp b/cr/help/cr.robotout.maxhelp new file mode 100644 index 0000000..1d78992 --- /dev/null +++ b/cr/help/cr.robotout.maxhelp @@ -0,0 +1,412 @@ +{ + "patcher" : { + "fileversion" : 1, + "appversion" : { + "major" : 7, + "minor" : 3, + "revision" : 1, + "architecture" : "x86", + "modernui" : 1 + } +, + "rect" : [ 117.0, 100.0, 754.0, 499.0 ], + "bglocked" : 0, + "openinpresentation" : 0, + "default_fontsize" : 12.0, + "default_fontface" : 0, + "default_fontname" : "Arial", + "gridonopen" : 1, + "gridsize" : [ 15.0, 15.0 ], + "gridsnaponopen" : 1, + "objectsnaponopen" : 1, + "statusbarvisible" : 2, + "toolbarvisible" : 1, + "lefttoolbarpinned" : 0, + "toptoolbarpinned" : 0, + "righttoolbarpinned" : 0, + "bottomtoolbarpinned" : 0, + "toolbars_unpinned_last_save" : 0, + "tallnewobj" : 0, + "boxanimatetime" : 200, + "enablehscroll" : 1, + "enablevscroll" : 1, + "devicewidth" : 0.0, + "description" : "", + "digest" : "", + "tags" : "", + "style" : "", + "subpatcher_template" : "", + "boxes" : [ { + "box" : { + "id" : "obj-27", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 103.5, 206.0, 208.5, 20.0 ], + "style" : "", + "text" : "Test the Connection to Arduino Board" + } + + } +, { + "box" : { + "id" : "obj-28", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 324.0, 205.0, 30.0, 22.0 ], + "style" : "", + "text" : "test" + } + + } +, { + "box" : { + "id" : "obj-26", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 123.0, 170.0, 218.0, 20.0 ], + "style" : "", + "text" : "Close the Connection to Arduino Board" + } + + } +, { + "box" : { + "id" : "obj-25", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 175.5, 139.0, 208.5, 20.0 ], + "style" : "", + "text" : "Open a Connection to Arduino Board" + } + + } +, { + "box" : { + "id" : "obj-11", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 352.0, 169.0, 39.0, 22.0 ], + "style" : "", + "text" : "close" + } + + } +, { + "box" : { + "id" : "obj-14", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 394.5, 138.0, 37.0, 22.0 ], + "style" : "", + "text" : "open" + } + + } +, { + "box" : { + "id" : "obj-24", + "linecount" : 2, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 56.0, 329.0, 99.0, 33.0 ], + "style" : "", + "text" : "Print Current Config Modes" + } + + } +, { + "box" : { + "id" : "obj-23", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 62.0, 297.0, 121.0, 20.0 ], + "style" : "", + "text" : "Print Possible Modes" + } + + } +, { + "box" : { + "id" : "obj-22", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 189.0, 297.0, 33.0, 22.0 ], + "style" : "", + "text" : "pins" + } + + } +, { + "box" : { + "id" : "obj-5", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 161.0, 329.0, 43.0, 22.0 ], + "style" : "", + "text" : "config" + } + + } +, { + "box" : { + "id" : "obj-13", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 112.0, 268.0, 117.0, 20.0 ], + "style" : "", + "text" : "Print Available Ports" + } + + } +, { + "box" : { + "id" : "obj-10", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 236.0, 268.0, 37.0, 22.0 ], + "style" : "", + "text" : "ports" + } + + } +, { + "box" : { + "id" : "obj-15", + "linecount" : 4, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 102.0, 373.5, 183.0, 60.0 ], + "style" : "", + "text" : "Arduino Uno Writer\nRequires port index and the list of pins to write to (set to either Digital, PWM or Servo integers)" + } + + } +, { + "box" : { + "id" : "obj-3", + "linecount" : 3, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 509.0, 174.5, 134.0, 47.0 ], + "style" : "", + "text" : "Set PWM value for the LED to determine light intensity (dimmer)" + } + + } +, { + "box" : { + "id" : "obj-1", + "maxclass" : "number", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 449.833344, 187.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "fontface" : 1, + "fontsize" : 16.0, + "id" : "obj-20", + "linecount" : 2, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 96.0, 56.0, 561.0, 42.0 ], + "style" : "", + "text" : "MaxHelp: Arduino UNO BoardOut \nDigital, Servo, and PWM", + "textjustification" : 1 + } + + } +, { + "box" : { + "id" : "obj-19", + "linecount" : 2, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 383.0, 317.0, 60.0, 33.0 ], + "style" : "", + "text" : "Write to Servo pin" + } + + } +, { + "box" : { + "id" : "obj-17", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 561.0, 299.0, 102.0, 20.0 ], + "style" : "", + "text" : "Turn LED On/Off" + } + + } +, { + "box" : { + "id" : "obj-16", + "linecount" : 4, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 557.0, 367.0, 99.0, 60.0 ], + "style" : "", + "text" : "Writes to Pins:\nServo 9 (Servo)\nPWM 5 (LED)\nDigital 11 (LED)" + } + + } +, { + "box" : { + "id" : "obj-8", + "maxclass" : "toggle", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "int" ], + "parameter_enable" : 0, + "patching_rect" : [ 526.5, 297.0, 24.0, 24.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-7", + "maxclass" : "number", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 373.166656, 285.0, 50.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-2", + "maxclass" : "newobj", + "numinlets" : 4, + "numoutlets" : 0, + "patching_rect" : [ 296.5, 386.0, 249.0, 22.0 ], + "style" : "", + "text" : "cr.boardout a @servo 9 @pwm 5 @digital 11" + } + + } + ], + "lines" : [ { + "patchline" : { + "destination" : [ "obj-2", 2 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-1", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-2", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-10", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-2", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-11", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-2", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-14", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-2", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-22", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-2", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-28", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-2", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-5", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-2", 1 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-7", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-2", 3 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-8", 0 ] + } + + } + ], + "dependency_cache" : [ { + "name" : "cr.boardout.mxo", + "type" : "iLaX" + } + ], + "autosave" : 0 + } + +} diff --git a/cr/release_notes.txt b/cr/release_notes.txt index 4a655e5..9597259 100644 --- a/cr/release_notes.txt +++ b/cr/release_notes.txt @@ -4,6 +4,13 @@ http://www.crl.unsw.edu.au/projects/interaction-interface-for-creative-robotics CR Package Release Notes File. +—————— +v.2.0 +—————— + +Added external objects cr.robotin and cr.robotout to handle ROS messages for communicating with TurtleBot3 robot. + + —————— v.1.0 —————— diff --git a/cr/version.md b/cr/version.md index ef1c272..a7f691e 100644 --- a/cr/version.md +++ b/cr/version.md @@ -1,4 +1,4 @@ -v1.0 +v2.0 Version explained: Major - public releases diff --git a/source/cr.boardin/cr.boardin.xcodeproj/project.xcworkspace/xcuserdata/orly.xcuserdatad/UserInterfaceState.xcuserstate b/source/cr.boardin/cr.boardin.xcodeproj/project.xcworkspace/xcuserdata/orly.xcuserdatad/UserInterfaceState.xcuserstate index d6e3079adfc5f8ccd3a5e0151597bc03ce92e6a5..2118b0207d21dae74d3fdacdd3b2985a6c6fd61a 100644 GIT binary patch literal 73847 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 J8bjHRWz=TW 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 DpXFjT diff --git a/source/cr.boardin/cr.boardin.xcodeproj/xcuserdata/orly.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/source/cr.boardin/cr.boardin.xcodeproj/xcuserdata/orly.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist index e9cc5e8..1013956 100644 --- a/source/cr.boardin/cr.boardin.xcodeproj/xcuserdata/orly.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ b/source/cr.boardin/cr.boardin.xcodeproj/xcuserdata/orly.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -91,22 +91,6 @@ endingLineNumber = "39"> - - - - ;fjpKSu$6t<~s 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 HJbW7fm)v@Y delta 17777 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[a]->s_name); +} + +void robotin_free(t_robotin *x) { + // kill the thread, if running + robotin_close(x); + // release any dynamically allocated memory + /* + for(int i=0; inum_subscribers; ++i) { + outlet_delete(x); //x->outlets[i]); + free(x->data[i]); + } + free(x->outlets); + free(x->data); + */ +} + +void *robotin_new(t_symbol *s, long argc, t_atom *argv) +{ + t_robotin *x = (t_robotin *)object_alloc(robotin_class); + // verify memory allocated successfully + if (x == NULL ) { + post( "Max is out of memory, could not create new robotin object."); + return NULL; + } + + // ip address attribute + if(argv->a_type == A_SYM) { + x->ip_addr = atom_getsym(argv); + if(! isValidIpAddress(x->ip_addr->s_name) ) post("ip address is not valid: %s", x->ip_addr->s_name); + } else + x->ip_addr = NULL; + + x->num_subscribers = 0; + x->is_connected = false; + x->listener.is_active = 0; + + if (robotin_parseArgs(x, argc, argv) == 0 ) { + x->outlets = (void**)malloc(x->num_subscribers * sizeof(void*)); + x->data = (t_atom**)malloc(x->num_subscribers * sizeof(t_atom*)); + if (x->outlets == NULL || x->data == NULL) { + post( "Max is out of memory, could not create new robotin object."); + return NULL; + } + for(int i=x->num_subscribers; i>0; ) { + --i; + x->outlets[i] = outlet_new((t_object *)x, NULL); // NULL indicates the outlet can send any message. + } + } + + return (x); +} + +void robotin_toggle(t_robotin *x, long key){ + if(key==0) + robotin_close(x); + else + robotin_open(x); +} + +void robotin_open(t_robotin *x) { + + if(x->ip_addr == NULL) { + object_error((t_object *)x, "no ip specified"); + return; + } + + if(x->listener.is_active == 1) { + object_post((t_object *)x, "already open on %s", x->ip_addr->s_name); + return; + } + + if(x->num_subscribers == 0) { + object_error((t_object *)x, "no subscribers requested for %s", x->ip_addr->s_name); + return; + } + + // if didn't establish a connection yet, connect + if(x->is_connected == false) { + if (robotin_connect(x) != 0) return; + } + + // start listening to incoming messages from the robot + int returned_val = robin_start_listening(&x->listener, x->err_msg); + if(returned_val != 0) { + object_error((t_object *)x, "Error in robot_start: %d", returned_val); + object_error((t_object *)x, x->err_msg); + } + + else { + x->listener.is_active = 1; + object_post((t_object *)x, "listening to robot on %s ...", x->ip_addr->s_name); + } + +} + +void robotin_close(t_robotin *x) { + + // if the thread is not running, return + if( x->listener.is_active == 0) return; + + // if the thread is running, kill the thread + if(robin_stop_listening(&x->listener, x->err_msg) != 0) { + // object_error((t_object *)x, "Error in rin_close:"); + // object_error((t_object *)x, x->err_msg); + } + x->listener.is_active = 0; + object_post((t_object *)x, "stopped listenning to robot on %s", x->ip_addr->s_name); +} + +int robotin_parseArgs(t_robotin *x, long argc, t_atom *argv) { + + // the first argument is the ip + // check the second argument + + int num_chatter = 0, num_twist = 0, num_odometry = 0, num_laser = 0, num_imu = 0; + int num_joints = 0, num_sensors = 0; + + for (int i=1; i < argc && x->num_subscribersa_type == A_SYM) { + + t_symbol *s = atom_getsym(tolower(argv+i)); + + // if the symbol is chatter + if (! strcmp(s->s_name, "@chatter")) { + if(num_chatter) { + // already exist + object_error((t_object *)x, "error duplicate %s", s->s_name); + return -1; + } + num_chatter++; + } + else if (! strcmp(s->s_name, "@twist")) { + if(num_twist) { + // already exist + object_error((t_object *)x, "error duplicate %s", s->s_name); + return -1; + } + num_twist++; + } + else if (! strcmp(s->s_name, "@odometry")) { + if(num_odometry) { + // already exist + object_error((t_object *)x, "error duplicate %s", s->s_name); + return -1; + } + num_odometry++; + } + else if (! strcmp(s->s_name, "@laser")) { + if(num_laser) { + // already exist + object_error((t_object *)x, "error duplicate %s", s->s_name); + return -1; + } + num_laser++; + } + else if (! strcmp(s->s_name, "@imu")) { + if(num_imu) { + // already exist + object_error((t_object *)x, "error duplicate %s", s->s_name); + return -1; + } + num_imu++; + } + else if (! strcmp(s->s_name, "@sensors")) { + if(num_sensors) { + // already exist + object_error((t_object *)x, "error duplicate %s", s->s_name); + return -1; + } + num_sensors++; + } + else if (! strcmp(s->s_name, "@joints")) { + if(num_joints) { + // already exist + object_error((t_object *)x, "error duplicate %s", s->s_name); + return -1; + } + num_joints++; + } + else { + // otherwise, unknown attribute symbol + object_error((t_object *)x, "forbidden argument %s", s->s_name); + return -1; + } + + x->msg_type[x->num_subscribers++] = s; + } + if(x->num_subscribers == MAX_SUBSCRIBERS) { + // otherwise, max subscibers reached + object_error((t_object *)x, "too many subscribers, limited to %d", MAX_SUBSCRIBERS); + return -1; + } + } + + return 0; +} + +int robotin_connect(t_robotin *x) { + + if(x->is_connected) return 0; + + // init ros nodes + ros_init(x->ip_addr->s_name); + // subscribe to requested topics + for(int i=0; inum_subscribers; ++i) { + if(x->msg_type[i] == gensym("@twist")) + ros_subscribe_twist(x, robotin_twistfunc, i); + else if(x->msg_type[i] == gensym("@laser")) + ros_subscribe_laser(x, robotin_laserfunc, i); + else if(x->msg_type[i] == gensym("@odometry")) + ros_subscribe_odometry(x, robotin_odometryfunc, i); + else if(x->msg_type[i] == gensym("@imu")) + ros_subscribe_imu(x, robotin_imufunc, i); + else if(x->msg_type[i] == gensym("@joints")) + ros_subscribe_joints(x, robotin_jointsfunc, i); + else if(x->msg_type[i] == gensym("@sensors")) + ros_subscribe_sensors(x, robotin_sensorsfunc, i); + + post("subscribed to: %s", x->msg_type[i]->s_name); + } + + x->is_connected = true; + return 0; +} + +void robotin_twistfunc(void *x, const void *msg, int index) { + //post("recieved twist message"); + int argc = 6; + t_atom argv[6]; + atom_setdouble_array(argc, argv, argc, twistMsg_floats(msg)); + t_symbol *s = gensym("twist"); + outlet_anything(((t_robotin *)x)->outlets[index], s, argc, argv); +} + +void robotin_odometryfunc(void *x, const void *msg, int index) { + int argc = 90; + t_atom argv[90]; + //post("recieved odometry message"); + int i=0; + atom_setlong_array(3, argv, 3, odometryMsg_header_ints(msg)); i += 3; + atom_setsym(argv+i, odometryMsg_header_frame(msg)); ++i; + atom_setsym(argv+i, odometryMsg_childframe(msg)); ++i; + atom_setdouble_array(85, argv+i, 85, odometryMsg_floats(msg)); + t_symbol *s = gensym("odometry"); + outlet_anything(((t_robotin *)x)->outlets[index], s, argc, argv); +} + +void robotin_laserfunc(void *x, const void *msg, int index) { + post("recieved laser message"); + int n = 7 + laser_intensities_length(msg) + laser_ranges_length(msg); + post("ranges=%d, intensities=%d", laser_ranges_length(msg), laser_intensities_length(msg)); + int total = 4 + n; + t_atom *argv = (t_atom*)malloc(total*sizeof(t_atom)); + int i=0; + atom_setlong_array(3, argv, 3, laserMsg_header_ints(msg)); i += 3; + atom_setsym(argv+i, laserMsg_header_frame(msg)); ++i; + atom_setdouble_array(n, argv+i, n, laserMsg_floats(msg)); + + t_symbol *s = gensym("laser"); + outlet_anything(((t_robotin *)x)->outlets[index], s, total, argv); + + // release memory allocation after outlet + //object_free(argv); +} + +void robotin_imufunc(void *x, const void *msg, int index) { + //post("recieved imu message"); + int argc = 3+1+37; + t_atom argv[41]; + int i=0; + atom_setlong_array(3, argv, 3, imuMsg_header_ints(msg)); i += 3; + atom_setsym(argv+i, imuMsg_header_frame(msg)); ++i; + atom_setdouble_array(37, argv+i, 37, imuMsg_floats(msg)); + + t_symbol *s = gensym("imu"); + outlet_anything(((t_robotin *)x)->outlets[index], s, argc, argv); +} + +void robotin_jointsfunc(void *x, const void *msg, int index) { + //post("recieved joints state message"); + int num_joints = jointsMsg_length(msg); + int total = 3 + 1 + 4 * num_joints; + int i = 0; + t_atom *argv = (t_atom*)malloc(total*sizeof(t_atom)); + // set header + atom_setlong_array(3, argv, 3, jointsMsg_header_ints(msg)); i += 3; + atom_setsym(argv+i, jointsMsg_header_frame(msg)); ++i; + // set joints names + char **names = jointsMsg_names(msg); + t_symbol **names_sym = (t_symbol**)malloc(num_joints*sizeof(t_symbol*)); + for(int j=0; joutlets[index], s, total, argv); + + // release memory allocation after outlet + object_free(argv); + free(names_sym); + free(names); +} + +void robotin_sensorsfunc(void *x, const void *msg, int index) { + //post("recieved sensors state message"); + int argc = 8; + t_atom argv[8]; + atom_setlong_array(7, argv, 7, sensorsMsg_ints(msg)); + // set all the doubles + atom_setfloat(argv+7, sensorsMsg_float(msg)); + + t_symbol *s = gensym("sensors"); + outlet_anything(((t_robotin *)x)->outlets[index], s, argc, argv); + + /* ROSSERIAL MESSAGE IMPLEMENTATION: + ros::Time stamp; // sec, nsec + uint8_t bumper; + uint8_t cliff; + uint8_t button; + uint8_t left_encoder; + uint8_t right_encoder; + float battery; + */ +} + + + + + + diff --git a/source/cr.robotin/cr.robotin.xcodeproj/project.pbxproj b/source/cr.robotin/cr.robotin.xcodeproj/project.pbxproj new file mode 100755 index 0000000..6d9dfe0 --- /dev/null +++ b/source/cr.robotin/cr.robotin.xcodeproj/project.pbxproj @@ -0,0 +1,221 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 0C4FCB9520A57EB9002126CE /* max.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C4FCB9420A57EB9002126CE /* max.h */; }; + 0C4FCB9D20A5813E002126CE /* wrapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C4FCB9620A5813E002126CE /* wrapper.cpp */; }; + 0C4FCB9E20A5813E002126CE /* ros_lib in Resources */ = {isa = PBXBuildFile; fileRef = 0C4FCB9720A5813E002126CE /* ros_lib */; }; + 0C4FCBA020A5813E002126CE /* wrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C4FCB9C20A5813E002126CE /* wrapper.h */; }; + 0C4FCBA720A5822A002126CE /* max.c in Sources */ = {isa = PBXBuildFile; fileRef = 0C4FCBA620A5822A002126CE /* max.c */; }; + 22CF11AE0EE9A8840054F513 /* cr.robotin.c in Sources */ = {isa = PBXBuildFile; fileRef = 22CF11AD0EE9A8840054F513 /* cr.robotin.c */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 0C4FCB9420A57EB9002126CE /* max.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = max.h; path = "../ros-max-lib/max.h"; sourceTree = ""; }; + 0C4FCB9620A5813E002126CE /* wrapper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = wrapper.cpp; path = "../ros-max-lib/wrapper.cpp"; sourceTree = ""; }; + 0C4FCB9720A5813E002126CE /* ros_lib */ = {isa = PBXFileReference; lastKnownFileType = folder; name = ros_lib; path = "../ros-max-lib/ros_lib"; sourceTree = ""; }; + 0C4FCB9C20A5813E002126CE /* wrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = wrapper.h; path = "../ros-max-lib/wrapper.h"; sourceTree = ""; }; + 0C4FCBA620A5822A002126CE /* max.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = max.c; path = "../ros-max-lib/max.c"; sourceTree = ""; }; + 22CF10220EE984600054F513 /* maxmspsdk.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = maxmspsdk.xcconfig; path = ../maxmspsdk.xcconfig; sourceTree = SOURCE_ROOT; }; + 22CF11AD0EE9A8840054F513 /* cr.robotin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cr.robotin.c; sourceTree = ""; }; + 2FBBEAE508F335360078DB84 /* cr.robotin.mxo */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = cr.robotin.mxo; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 2FBBEADC08F335360078DB84 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 089C166AFE841209C02AAC07 /* iterator */ = { + isa = PBXGroup; + children = ( + 0C4FCB9720A5813E002126CE /* ros_lib */, + 0C4FCB9420A57EB9002126CE /* max.h */, + 0C4FCBA620A5822A002126CE /* max.c */, + 0C4FCB9C20A5813E002126CE /* wrapper.h */, + 0C4FCB9620A5813E002126CE /* wrapper.cpp */, + 22CF11AD0EE9A8840054F513 /* cr.robotin.c */, + 22CF10220EE984600054F513 /* maxmspsdk.xcconfig */, + 19C28FB4FE9D528D11CA2CBB /* Products */, + 0C3533D81F87027000671127 /* Frameworks */, + ); + name = iterator; + sourceTree = ""; + }; + 0C3533D81F87027000671127 /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; + sourceTree = ""; + }; + 19C28FB4FE9D528D11CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 2FBBEAE508F335360078DB84 /* cr.robotin.mxo */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 2FBBEAD708F335360078DB84 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 0C4FCBA020A5813E002126CE /* wrapper.h in Headers */, + 0C4FCB9520A57EB9002126CE /* max.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 2FBBEAD608F335360078DB84 /* max-external */ = { + isa = PBXNativeTarget; + buildConfigurationList = 2FBBEAE008F335360078DB84 /* Build configuration list for PBXNativeTarget "max-external" */; + buildPhases = ( + 2FBBEAD708F335360078DB84 /* Headers */, + 2FBBEAD808F335360078DB84 /* Resources */, + 2FBBEADA08F335360078DB84 /* Sources */, + 2FBBEADC08F335360078DB84 /* Frameworks */, + 2FBBEADF08F335360078DB84 /* Rez */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "max-external"; + productName = iterator; + productReference = 2FBBEAE508F335360078DB84 /* cr.robotin.mxo */; + productType = "com.apple.product-type.bundle"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 089C1669FE841209C02AAC07 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0830; + }; + buildConfigurationList = 2FBBEACF08F335010078DB84 /* Build configuration list for PBXProject "cr.robotin" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + en, + ); + mainGroup = 089C166AFE841209C02AAC07 /* iterator */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 2FBBEAD608F335360078DB84 /* max-external */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 2FBBEAD808F335360078DB84 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0C4FCB9E20A5813E002126CE /* ros_lib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXRezBuildPhase section */ + 2FBBEADF08F335360078DB84 /* Rez */ = { + isa = PBXRezBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXRezBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 2FBBEADA08F335360078DB84 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0C4FCBA720A5822A002126CE /* max.c in Sources */, + 22CF11AE0EE9A8840054F513 /* cr.robotin.c in Sources */, + 0C4FCB9D20A5813E002126CE /* wrapper.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 2FBBEAD008F335010078DB84 /* Development */ = { + isa = XCBuildConfiguration; + buildSettings = { + }; + name = Development; + }; + 2FBBEAD108F335010078DB84 /* Deployment */ = { + isa = XCBuildConfiguration; + buildSettings = { + }; + name = Deployment; + }; + 2FBBEAE108F335360078DB84 /* Development */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 22CF10220EE984600054F513 /* maxmspsdk.xcconfig */; + buildSettings = { + COPY_PHASE_STRIP = NO; + GCC_OPTIMIZATION_LEVEL = 0; + OTHER_LDFLAGS = "$(C74_SYM_LINKER_FLAGS)"; + PRODUCT_NAME = cr.robotin; + }; + name = Development; + }; + 2FBBEAE208F335360078DB84 /* Deployment */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 22CF10220EE984600054F513 /* maxmspsdk.xcconfig */; + buildSettings = { + COPY_PHASE_STRIP = YES; + OTHER_LDFLAGS = "$(C74_SYM_LINKER_FLAGS)"; + PRODUCT_NAME = cr.robotin; + }; + name = Deployment; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 2FBBEACF08F335010078DB84 /* Build configuration list for PBXProject "cr.robotin" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2FBBEAD008F335010078DB84 /* Development */, + 2FBBEAD108F335010078DB84 /* Deployment */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Development; + }; + 2FBBEAE008F335360078DB84 /* Build configuration list for PBXNativeTarget "max-external" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2FBBEAE108F335360078DB84 /* Development */, + 2FBBEAE208F335360078DB84 /* Deployment */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Development; + }; +/* End XCConfigurationList section */ + }; + rootObject = 089C1669FE841209C02AAC07 /* Project object */; +} diff --git a/source/cr.robotin/cr.robotin.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/source/cr.robotin/cr.robotin.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..6c1f4b2 --- /dev/null +++ b/source/cr.robotin/cr.robotin.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/source/cr.robotin/cr.robotin.xcodeproj/project.xcworkspace/xcuserdata/orly.xcuserdatad/UserInterfaceState.xcuserstate b/source/cr.robotin/cr.robotin.xcodeproj/project.xcworkspace/xcuserdata/orly.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..d7a7aefad6c6c79792bd292a2f9ee33118298077 GIT binary patch literal 564052 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

7@ruwm_Q?|Wh1LYBdcd4s~4W;q?iap=OQst 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�uBiqqN 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

QwBCc3kEhp zYX&w!I|epEM+P=Q7X~&#cLp{=F9tS2Uj{b800uU}U7q zP6jr?9tJkSeg-zdNepa)QyJIxR8NOa0vsO;4%g_!OaY8f?FBb z1h+G=3GQNG6B1`&6H;Md6H;Sf6VhN{6Vhg26G~-Z6Dne06Dna~6Dnh16RKoj6FS4d zCUld5P3SfQo6ubbHlYU$Y{Iq-Y{Fg)Y{EVaY{GsFY{G#IY{KUl*o1F0unFH~U=zO2 zz$W~NflWk$flWk}flWl6flWk{flWk*flVZrflZ`}flZ`_flZ{2flZ{5flcHb1DnWg z1~!qq3~VCz8Q4S~F|dhhGq8zTFtCYQF|di+FtCZ*Gq8znV_*|K%)lmklz~n3I0KvL zDF!w%H3l{@V+J-cQwBCMa|SjsD+V^P0tPm*S_U?;dImPJMg}&q76vx4D-3L64;k3R z9y73sJ!N1Md%?gaZpOeS?##d@?#jR>?#{p_?!~|+KAnM0d`BNcHBquPiNls>9ll;rTCdI|TCdI?RCdJ3VCMC$gCY8*< zCRM<|CRN11CRM_~CRNVBCUuB`P3k-Yo76=HHmS=DY*N=4*rbga*rXj8*rc5p*rZ(; z*reSV*rYod*rca1uu0EgV3VH3z$QJHflc}|1Dgy31DgyJ1DgyB1Dgyx1DlKo1Di}J z1Di}Z1Di}F1Di|?1Dnhl1~!?S3~VyD8Q5g*GO)=!U|^F?VqlZaXJC^pWMGpmW?+*o zV_=g#!N4Yam4Qw6Is=>RO$IjEI}B`ciVSRWdJJrG1`KR+Mht9nrVMOy%NW??HZ!ov zZDnAS+s?oyw~K*Io|S=3UWkEBUW9>7UW|cFUXp=LzMg?izK4NLzK?-TegXrV{A30; z`M(To3S10q3Oo#K3VaM~3W5x53TX^%3dIa;3Z)Ee3grxJ3RMhj3L6;M6!tQ(DePxp zQ#i=Lrf`ITP0@mZP0^KsP0^i!P0^EqP0@#eO>qqao8nFeHpSfxY>Ims*c1;iuqjzE zuqnARuqnASuqk;muqpX4uqka}U{gBCz@~JVflcWs1Dnzb1~z3u1~z3m1~z2{1~z3S z1~z3?1~%o%3~b5^7}%5-F|a8wVPI2U&cLQ3%D|?g#K5Ma!oa4Y#=xec$-t&k&A_J8 z!N8`{#lWW0!@#D}&%mbgkAY2FKDKfCBDKoICsWPysX)v&R%Yx)W0#XssChP)39S;)9_|s)9__r)9`0t(+FZ<)7Z$srm>HKP2&Iq zo5mpqHjSeUY?{&xY?>MjY?@jOY??X@Y?}HEY?_S>Y?^%xY?>1o*fb|GuxUHK0~)AeLv(+y)_(~V$Y(~V+a(~V_d)1A)1rn`iJO?Mdso9+q*Hr>?>Yp*z}e$u<5N}VAEU0z^1pBflXh8flXhLflXhTflXhPflXh7 zflWW3fla@Lfla@Tfla@Gfla@efldDi1DpOu1~&c63~c&W8QAo1Ft8b@GO!sKF|Zk! zFt8bzF|Zj}GO!uUVqh~^&cJ4{l7Y=&H3OT$ItDgFW(GDx0R}chAqF->5e7CxaRxTS z1_n06UIsS9eg-zfi41IpQyAEc1Q^(iWEt3u^9g zbeMt7=okZ=u_yzZu@VEDu?hp5u^I!Lu_gnXaW4a#@hk>57}!j*7}!iE zF|e7;W?(Z}%D`r_j)Bc&Hv^l=5e7Ds;|y#jrx@5w&N8r>Twq``xyit0a)*J<Y^LiO*i1Jvu$gXQU^Csuz-D@pfz9*>1DhEe1Dly1 z1DlyS1Dly61Dlx_1Djbm1Dja_1Djbg1DjbI1DjbU1Djb61DjbX1Dja|1Djbj1Djbb z1Dja`1DjbB1Djbl1Dn|l1~#)L3~Xi_8Q9ErF|e8KWneQqz`$m9n1Rjg7z3Nxc?LGK zOAKsgR~gvMt~0Qi-C|%fyTia{_ML&vT#kXwT!(?pJcNPGJeGmYJd1(Nyp(~>yorI$ zyqkf|ypMs+d?Evz`4k2=^XUw1<_j3u%oj7TnJ;5tGhe~LX1kMpGw;0&0?l7=feP>{^mSbSE)?r|?4q;%kj%8r8PGexR z&Szk=u3=!aZe?Jz?qFcE?q*=K?qguHp2)yvJ&S?OdM*Q-^#TSq>qQJ~)=L@Ktd}#e zSs!9xvwq3IX8oOk%|@Pq%|?TP&Blm<&BmI6&BlX)%_fk6%_f+E%_fwA%_f|I%_fq8 z%_fO~%_fzB%_f6^%_fV1%_f(D%_g6L&8C8Z&8CTg&8CNe&1NP8o6RByHk+jkY&I(x z*lboau-U9*V6)lIz-F_Hfz4(w1Dnl$1~!{R3~V+>7}#viGO*cPXJE5=z`$nnmVwRY z8v~ooPX;!dKMZU({~6e9nHbn?xf$4O`54%21sT|Eg&Ejv#TeLZB^cOj)fm`p^%>Y~ zEg9Hsofz0`{TbM7BN*6hqZ!z2;~3a%6B*cSQyAE6a~ard3mDjJiy7E#OBvW~D;U^p zs~Fg9n;F<_Cor(t&Sqe+g%K7wtE@aY>zRp*`8!zvpvJW zW_yl-&GsS#o9$%=HrqQ4Y_`uB*lgc3u-X1$V6$UoV6)?3V6)?9V6)?6V6zisV6&5A zV6&5DV6#(TV6#(VV6#(YV6#(aV6$^#V6)3)V6!V{V6&Ugz-G6Cfz56k1Do9;1~$9% z3~Y8c7})G?GqBm+V_>s;$iQazgn`ZOEd!g~2L?8~&kSsKUm4i!elW1v{bFFV7iD0x zw_#wj_hMkPFJfS`uV!GgZ)ae$pTxjsKc9ikegy-Y{b~j_`*jR#_8S@4?6)wm+3#gw zvp>MVW`CH0&Hg9@oBas}Hv3ZyZ1$HK*zE5xu-U(4V6*?kz-IrIfzAF01DpMC1~&VD z3~UbU3~UZu3~Ua(3~Ubk3~UZU3~UY}3~Ubi3~UZz3~UZ53~UZP3~UZl8Q2`=Gq5?V zU|@6D%E0EZkAcnMAOoAj5e7Dg;|y#Lrx@5AE;Fz>Tw`E!xXHlgaGQb6;T{8w*~*c>-9usLpKU~@djz~=asfz64Tfz3&qfz8Q;fz8Q@fz8Q} zfz2tJfz2s}fz2tMfz2t4fz2tGfz7Fafz7Fsfz7Fgfz7F&fz7Frfz7Fffz7Fnfz7F( zfz4?q1Dn$_1~#Yl3~WxD7}%V)GO#)AU|@6F&A{e#gn`ZJI0Kv0DF!yDGYo7_=NZ_X zE;6t=yqoR=}MId5TLbKcLu=6r^M&G{+=oAV6@ zHs{+6Y|i%>*qk3SusOeCU~_)Uz~=mcfzA071Do?#1~%vK3~Vk83~Vl33~VkU3~Vln z3~Vl13~VmC3~Vk23~VmO3~VlD3~Vm;3~Vk=3~Vm03~Vm$3~Vl53~Vkw3~Vl;3~Vk5 z3~Vl$3~VlC3~Vm-3~Vk<3~Vl~3~VkP3~Vml3~Vk_7}#8 z!x`9IqZrs+V;R_7;~CgolNi`sQyAD>a~arN%NW>P>lxTwdl=YUr!ug)&R}43oz1}J zI*)na8|*R>36t{WKGTsJYWxo%}(bKTCs=6ZmE&Gi%mo9kr;HrEFXY_2aE z*j(Q*u(`fxU~~P%z~=gufz9&M>gKonv5gyUxJo_K<ccQXbycLxSGcV7lJ_b>)F_ecgd_ZS8?_jm?2 z_ap{3_iP3>_dEtR_d*6X_hJS%_c8`H_X-9!_sI-w?z-VDos*z~=Fefz9J11DnS$ z1~!ks3~ZhZ3~ZiE3~ZjP3~Zk43~ZhP3~Ziq3~ZiS3~Zj}3~Zhb3~Zjx3~Zim3~ZjB z3~Zi03~ZjE3~Zhe3~Zj!3~ZjU3~ZhW3~ZiB3~ZjY3~ZiD7}z{FF|c{wVqo)p%)sXP zmVwRl7XzCYGXt9!D+8MsI|G{+Cj*-oHv^lO2m_m!I0KuP6a$-=3mUQ0*AWIb zuj34CUMCsYyv{JNd7Wcm^Loj^<}JX$<}Js-=IzG7=IzhG<{inv=AFdA=AF;L=3T+S z=3ULe=3U3Y=H1A^=H0@;=H1J{<~@Od&3iHfoA*=(Ht!h>Y~HgN*t{1ruz7D_VDsL? zz~+6DfzA681Dp3%1~%^-3~b)F8Q8q4cYbQ#!u3>esaj2YN`Y#7*l>>1d6oEX@ATo~AV z+!@$>JQ>)0f*9C*Vi?$bG8x!>iWt~@N*UOEDj3*&su|dP>KNF3+8NkD32zVjH^d>1mX`7U8#^IgWk=DU)C&382eo9`9|HsAdWY`!NM z*nF=su=(C+VDo*%z~=jufz9^?1Do$_1~%U>3~avN8Q6S(F|hgmVPNz9&%ox#$iU{u z#lYq#!ocPy%fRNR#lYrg%)sVn#=z!h$-w4k!@%Ze&%oyA!NBI{&A{g8$H3+nz`*7g z%)sUs%E0DVz`*7=oq^47DFd6|Sq3)0YYc3D4;a||UNErvePv+t`^UiM&&a^$&%(gw z&(6T+&&9yzFU-K^FUG*;FUi2>FU`Q_FUP>`CYYc3Gj~Unk-!QNRzGq+y{KUW(_?3Yz@CO515F-Oy5DNoa5IX}~ z5GMm$5Dx=e5FZ0ukR}6LPyhp4P#gnWP#XhVP(K4(&`bulpk)kfLF*aVf;KX+1#M2DadM2Dab~2DadA2Dacl2Dab=2Dad02Dac*2Dacj z2Dac12Dadd3~a&k7}$cBGq44(Vqgni%fJ@Afq^Y}GXq=j9tO7H{S0iuhZxv`k1((W zA7@|-KFPoqe2IZA_#OjW@CydE;I9m9!T%W8LKqp?LRc8sLf9GDLbw>%LWCLELc|!@ zLL?d3LZlhkLgX0OLKGO-LNpoJLd+Q0LL3>`Li`xmLc$r?LZTShLSh-%LJ}C*LXsKS zLUI_`Lh>2dLW&sJLP{9eLdqG~LMj>9LYf%ZLV6h3LZ&jXg)CxV3t7#;7P5|kEo37D zTgVm$wvg=%Y#|32*g_67u!S6BU<*0Hz!q|vfi2`L16#;72DXp~3~V7U8Q4O;F|dXF zXJ89uVqgnpWnc^CU|}U|}XJ89$ zU|=LZ2|Og}!583;oT&7RJKB7RJWF7RJHA7RJTE7RJNC7ADHT7AC>K z7ADQW7ADKU7N)?!7N*3&7N*U>7G}!87G}@D7Usji78c6D78b$478cFG78b|A7M94s z7M8`p7M9Dv7FNK(7FNW-7FNo@7FN!{7S_PP7S_eU7B-oIEo=b;Ti8klwy-q}Y+>se z*upk3u!U`9U<=#Fz!r9pfi3I^16$ZJ2DY%13~XVi8Q8*}F|dX6GO&e9Gq8m_Gq8pG zFtCM(F|dWlF|dVaGq8o1FtCM}Gq8nMF|dW#GO&d=FtCMpGO&gBFtCO9Gq8nEWMB)Q z!oU_jje#wEJ_B3$8V0uT?F?+;M;O?`&oZ!uUtnMhzs$fEevN@G{3Zii_#+0k@TUxH z;V&52!e244g}-HB3xChR7XE{QErOMSErOqcEkcHYEkc!nEkc8VEkc`tEkcihEy9q2 zEy9X{Ey9+8Ey96;Ey9U`Ey9(7EyA6FEh2z{Eh376Eh2@1EuxTtEuxBnEuw~jEuxNr zEuw*eEux8mEux!&EuxQsEn*@ATf}4rwuosAY!NdU*di7(utlt9V2jwwz!q_cfi2=R z16#y72DXTc3~Uis7}z4NGq6QGU|@@Q%)l1$jDaoU1p`~eYX-K6w+w8N91Luc`V4H5 zwhU~MsSIq9c?@ikH4JQ#oeXS|(-_zy=QFTHE@WVfT+F~0xs-t|aybKAh=7I}<;E%E{bTjXs9w#XL@Y>^)s*djkOutk1lV2k|Dz!v$F zfh~%Ofh~%afh~%Ifh~%Qfh~%cfh~%kfh|gcfh|gvfh|g(fi230fi23Ffi23Nfi23D zfi23Lfi23Hfh{VGfh{VMfh{VAfh{VIfh{VLfh{VTfh{VBfi0?nfi0?;fh}qR16$N& z2DYea3~W&|8Q7xcFtA0jTzXY%^29CEg0CMJsH@dlNi{dQyJKz(;3*Jvl!T- za~as8S2M6hZ((4I-pjxieTRW9`Y{7r3=;!ej06K)j4A_Lj0OW+j5Y&Xj2;79j3EPC zj4=aSi~|E(j1vP}j0*!>j5`Bc%nSy$n57JCG3yxEVm30c#cW|3~aIC3~aGc z3~aI43~aG^3~aFl3~aGQ3~aHb3~aF#3~aI03~aG=3~aFt3~aGY3~aGI3~aH}8Q5Ys zFtEiQXJCuH!@w5%k%29alYuQxiGeLnkAW>Nn1L-Wih(UInt?4Yje#w$n1L;B4g*`< zdJ@ZVLlj+;#@GxLpivaeEoq;tnvd#T{l~ zi#x`^7I%_?E$$2hTikgDwzx|SY;ji^*y8>%u*EYnu*I`5u*I`8u*GvRu*LH-u*C~7 zu*C~Au*Hipu*FLc(lQ3Nq!kQoNvj#yl72C; zC9^ZIC37;cC37>dCG#<`B}+4~CCf6fCCf9gB`YzoCF?V=B^xrZB^xuaC7Us@C3iBg zB~N2uOP;~NmOP7rEqN{jTk?Abw&XtyY{~x^*isl6*ix7o*iup$*is4^*iwoa*iuRv z*itGO*iz0hu%+B)U`x5nz?O2Kfi2|`16!&c16!&$16yhU16yh^16yhs16yh|16yhw z16yh$16yh`16yh)16yhV16yh(16yhn16yi816%482Da4c3~Z^h7}!$hGq9yDVqi;M z%D|SooPjNMEdyKX76!J|y$o!rrx@5$&oi*4USeQNy~@CrdW(TA^)3Tj>H`M0RFM6z z8Q4;PFtDZmWnfEVU|>sQW?)O>U|>t*W?)O>V_-`YU|>s=WME5EV_-|uW?)OxV_-`& zWME4(V_-|OWME6PVPH$MV_-{jXJAVUVPH#(WME5+VPH#(XJAW9VPH#3XJAXqVqiloP5HZriKZDC+b+s43_c9?-J?F0i`+Gz&1v~vt>X_pz;(ylSErQKv;OS{d$miB^y zE$uA>TiOQ(wzSU-Y-v9j*wTJ8u%-QDU`uCUU`yv^U`rQbU`rQeU`v-^U`v-}U`tnE zU`tnKU`tnJU`y9yU`w}VU`uykU`uyqU`uynU`zLAU`zL7U`r2VU`r2XU`tP6U`tPB zU`x+nU`x+tU`sDxU`sD%U`sD!U`wxHU`uahU`y{}U`y|1U`wCCz?MFhfh~Oo16%rR z2DbFM3~cGk7}(M`Gq9!aU|>t%&A^tvkAW@yFaulqF$T8ulMHO>ry1DNuQ0HsKV)D_ zf5yO;{*r+${S5E9XH(tk3rWw0@@WpFdFW$-buWe75`Wr#7bWk@ox zWymnFWymqGWoR?7Wf(B9Wf(KCWtcIrWmq$?W!N#WWjHdhWjHgiWdty=WrQ-YWkfKr zWkfTuWh5}LWh67OWu!5%Wn?h0Wt1|oWz;aRWz;jUWi&CcWwbJ|W%MwxW%M(!WlUmV z%b3c*mNA`yE#njeTgFocwv2xaY?16!6Y16!6016!6m16!6C16!6a16x)I16x)&16x)U16x)s16x)+ z16x)G16x)$16x)F16x)r16x)P16x)<16$T42DYrJ3~X6*7}&DrGq7bXVqnW!%D|Sj zoPjNC0|Q&ub_TYr0}O0gCm7grbs5-l4H(#REg9Hy-5J<&{TSGCLmAj|lNi`?^BLH3 zix}8)OBvX5D;U^vs~OmG>loN_8yVPg`xw}ACo-_*PG(@soyNeHJClJecQylC?py}8 z-1!V_xknh-a$hpAfQ5<<&8; z + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/source/cr.robotin/cr.robotin.xcodeproj/xcuserdata/orly.xcuserdatad/xcschemes/max-external.xcscheme b/source/cr.robotin/cr.robotin.xcodeproj/xcuserdata/orly.xcuserdatad/xcschemes/max-external.xcscheme new file mode 100644 index 0000000..b51afc8 --- /dev/null +++ b/source/cr.robotin/cr.robotin.xcodeproj/xcuserdata/orly.xcuserdatad/xcschemes/max-external.xcscheme @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/source/cr.robotin/cr.robotin.xcodeproj/xcuserdata/orly.xcuserdatad/xcschemes/xcschememanagement.plist b/source/cr.robotin/cr.robotin.xcodeproj/xcuserdata/orly.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..858be9e --- /dev/null +++ b/source/cr.robotin/cr.robotin.xcodeproj/xcuserdata/orly.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,22 @@ + + + + + SchemeUserState + + max-external.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 2FBBEAD608F335360078DB84 + + primary + + + + + diff --git a/source/cr.robotout/cr.robotout.c b/source/cr.robotout/cr.robotout.c new file mode 100755 index 0000000..e9b5968 --- /dev/null +++ b/source/cr.robotout/cr.robotout.c @@ -0,0 +1,204 @@ +// +// @file +// robotout - a max object (Arduino UNO board writer) +// +// written by Orly Natan, Creative Robotics Lab +// University Of New South Wales (UNSW). */ + + +// required Max core headers +#include "ext.h" // standard Max include, always required +#include "ext_obex.h" // required for new style Max object + +#include "wrapper.h" + +////////////////////////// object struct +typedef struct robotout +{ + // the Max object itself (must be first) + t_object ob; + + // robotout attributes: + t_symbol *ip_addr; + Float64 inlets[6]; + + // robotout state + bool is_ready; + +} t_robotout; + +///////////////////////// function prototypes +//// standard set +void *robotout_new(t_symbol *s, long argc, t_atom *argv); +void robotout_free(t_robotout *x); +void robotout_assist(t_robotout *x, void *b, long m, long a, char *s); +void robotout_bang(t_robotout *x); +int robotout_open(t_robotout *x); +int robotout_close(t_robotout *x); +void robotout_break(t_robotout *x); +void robotout_ft1(t_robotout *x, Float64 f); +void robotout_ft2(t_robotout *x, Float64 f); +void robotout_ft3(t_robotout *x, Float64 f); +void robotout_ft4(t_robotout *x, Float64 f); +void robotout_ft5(t_robotout *x, Float64 f); +void robotout_ft6(t_robotout *x, Float64 f); + +int robotout_parseArgs(t_robotout *x, long argc, t_atom *argv); + +//////////////////////// global class pointer variable +void *robotout_class; + + +void ext_main(void *r) +{ + t_class *c; + + c = class_new("cr.robotout", (method)robotout_new, (method)robotout_free, + (long)sizeof(t_robotout), + 0L /* leave NULL!! */, A_GIMME, 0); + + class_addmethod(c, (method)robotout_assist, "assist", A_CANT, 0); + class_addmethod(c, (method)robotout_open, "open", 0); + class_addmethod(c, (method)robotout_close, "close", 0); + class_addmethod(c, (method)robotout_bang, "bang", 0); + class_addmethod(c, (method)robotout_break, "break", 0); + class_addmethod(c, (method)robotout_ft1, "ft1", A_FLOAT, 0); + class_addmethod(c, (method)robotout_ft2, "ft2", A_FLOAT, 0); + class_addmethod(c, (method)robotout_ft3, "ft3", A_FLOAT, 0); + class_addmethod(c, (method)robotout_ft4, "ft4", A_FLOAT, 0); + class_addmethod(c, (method)robotout_ft5, "ft5", A_FLOAT, 0); + class_addmethod(c, (method)robotout_ft6, "ft6", A_FLOAT, 0); + + + /* you CAN'T call this from the patcher */ + class_register(CLASS_BOX, c); /* CLASS_NOBOX */ + robotout_class = c; + + post("Robotout object created (Writer)."); +} + +void robotout_assist(t_robotout *x, void *b, long m, long a, char *s) +{ + if (m == ASSIST_INLET) { // inlet + + switch(a) { + case 0: sprintf(s, "Messages"); break; + case 1: sprintf(s, "Linear X"); break; + case 2: sprintf(s, "Linear Y"); break; + case 3: sprintf(s, "Linear Z"); break; + case 4: sprintf(s, "Angular X"); break; + case 5: sprintf(s, "Angular Y"); break; + case 6: sprintf(s, "Angular Z"); break; + } + } +} + +void robotout_free(t_robotout *x) +{ +} + +void *robotout_new(t_symbol *s, long argc, t_atom *argv) +{ + t_robotout *x = (t_robotout *)object_alloc(robotout_class); + // verify memory allocated successfully + if (x == NULL ) { + post( "Max is out of memory, could not create new robotout object."); + return NULL; + } + + // ip address attribute + if(argv->a_type == A_SYM) { + x->ip_addr = atom_getsym(argv); + } + + else + x->ip_addr = NULL; + + x->is_ready = false; + + // create pin integer inlets + for (int i = 6; i > 0; --i) { + // create float inlets from right to left (highest-right to 1-left): + floatin(x, i); + x->inlets[i-1] = 0; + } + + return (x); +} + +void robotout_bang(t_robotout *x) { + + // if connection to robot not established + // (publisher did not advertise topic yet) + // then establish it now + if( x->is_ready == false) { + if (robotout_open(x) != 0) + return; + } + + // send (publish) the new values + ros_publish_twist(x->inlets); + + // object_post((t_object *)x, "published to robot %s the message: [%f, %f, %f],[%f, %f, %f]", x->ip_addr->s_name, x->inlets[0], x->inlets[1], x->inlets[2], x->inlets[3], x->inlets[4], x->inlets[5]); +} + +// Send break (all 0 velocities) to robot +void robotout_break(t_robotout *x) { + + // if connection to robot not established + // (publisher did not advertise topic yet) + // then return + if( x->is_ready == false) + return; + + for(int i=0; i<6; ++i) + x->inlets[i] = 0; + + // send (publish) the new values + ros_publish_twist(x->inlets); + + object_post((t_object *)x, "break"); +} + +int robotout_open(t_robotout *x) { + + if(x->ip_addr == NULL) { + object_error((t_object *)x, "Please enter the robot's IP address"); + return -1; + } + + if(x->is_ready) { + object_post((t_object *)x, "already openned a connection to robot %s", x->ip_addr->s_name); + return 0; + } + + if( ros_init(x->ip_addr->s_name) != 0) { + object_error((t_object *)x, "Error establishing a connection to the robot. Check your IP address."); + return -1; + } + + if( ros_advertise_twist() != 0) { + object_error((t_object *)x, "Error communicating with the robot."); + return -1; + } + + object_post((t_object *)x, "ready to publish to robot on %s", x->ip_addr->s_name); + x->is_ready = true; + + return 0; + +} + +int robotout_close(t_robotout *x) { + x->is_ready = false; + return 0; +} + +void robotout_ft1(t_robotout *x, Float64 f) { x->inlets[0] = f; } +void robotout_ft2(t_robotout *x, Float64 f) { x->inlets[1] = f; } +void robotout_ft3(t_robotout *x, Float64 f) { x->inlets[2] = f; } +void robotout_ft4(t_robotout *x, Float64 f) { x->inlets[3] = f; } +void robotout_ft5(t_robotout *x, Float64 f) { x->inlets[4] = f; } +void robotout_ft6(t_robotout *x, Float64 f) { x->inlets[5] = f; } + + diff --git a/source/cr.robotout/cr.robotout.xcodeproj/project.pbxproj b/source/cr.robotout/cr.robotout.xcodeproj/project.pbxproj new file mode 100755 index 0000000..6a84ad7 --- /dev/null +++ b/source/cr.robotout/cr.robotout.xcodeproj/project.pbxproj @@ -0,0 +1,216 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 0C4FCBAD20A5831E002126CE /* wrapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C4FCBA820A5831E002126CE /* wrapper.cpp */; }; + 0C4FCBAE20A5831E002126CE /* ros_lib in Resources */ = {isa = PBXBuildFile; fileRef = 0C4FCBA920A5831E002126CE /* ros_lib */; }; + 0C4FCBB020A5831E002126CE /* wrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C4FCBAB20A5831E002126CE /* wrapper.h */; }; + 22CF11AE0EE9A8840054F513 /* cr.robotout.c in Sources */ = {isa = PBXBuildFile; fileRef = 22CF11AD0EE9A8840054F513 /* cr.robotout.c */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 0C4FCBA820A5831E002126CE /* wrapper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = wrapper.cpp; path = "../ros-max-lib/wrapper.cpp"; sourceTree = ""; }; + 0C4FCBA920A5831E002126CE /* ros_lib */ = {isa = PBXFileReference; lastKnownFileType = folder; name = ros_lib; path = "../ros-max-lib/ros_lib"; sourceTree = ""; }; + 0C4FCBAB20A5831E002126CE /* wrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = wrapper.h; path = "../ros-max-lib/wrapper.h"; sourceTree = ""; }; + 22CF10220EE984600054F513 /* maxmspsdk.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = maxmspsdk.xcconfig; path = ../maxmspsdk.xcconfig; sourceTree = SOURCE_ROOT; }; + 22CF11AD0EE9A8840054F513 /* cr.robotout.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cr.robotout.c; sourceTree = ""; }; + 2FBBEAE508F335360078DB84 /* cr.robotout.mxo */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = cr.robotout.mxo; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 2FBBEADC08F335360078DB84 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 089C166AFE841209C02AAC07 /* iterator */ = { + isa = PBXGroup; + children = ( + 0C4FCBA920A5831E002126CE /* ros_lib */, + 0C4FCBAB20A5831E002126CE /* wrapper.h */, + 0C4FCBA820A5831E002126CE /* wrapper.cpp */, + 22CF11AD0EE9A8840054F513 /* cr.robotout.c */, + 22CF10220EE984600054F513 /* maxmspsdk.xcconfig */, + 19C28FB4FE9D528D11CA2CBB /* Products */, + 0C91F5A71F73957200EF94C5 /* Frameworks */, + ); + name = iterator; + sourceTree = ""; + }; + 0C91F5A71F73957200EF94C5 /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; + sourceTree = ""; + }; + 19C28FB4FE9D528D11CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 2FBBEAE508F335360078DB84 /* cr.robotout.mxo */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 2FBBEAD708F335360078DB84 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 0C4FCBB020A5831E002126CE /* wrapper.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 2FBBEAD608F335360078DB84 /* max-external */ = { + isa = PBXNativeTarget; + buildConfigurationList = 2FBBEAE008F335360078DB84 /* Build configuration list for PBXNativeTarget "max-external" */; + buildPhases = ( + 2FBBEAD708F335360078DB84 /* Headers */, + 2FBBEAD808F335360078DB84 /* Resources */, + 2FBBEADA08F335360078DB84 /* Sources */, + 2FBBEADC08F335360078DB84 /* Frameworks */, + 2FBBEADF08F335360078DB84 /* Rez */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "max-external"; + productName = iterator; + productReference = 2FBBEAE508F335360078DB84 /* cr.robotout.mxo */; + productType = "com.apple.product-type.bundle"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 089C1669FE841209C02AAC07 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0830; + }; + buildConfigurationList = 2FBBEACF08F335010078DB84 /* Build configuration list for PBXProject "cr.robotout" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + en, + ); + mainGroup = 089C166AFE841209C02AAC07 /* iterator */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 2FBBEAD608F335360078DB84 /* max-external */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 2FBBEAD808F335360078DB84 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0C4FCBAE20A5831E002126CE /* ros_lib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXRezBuildPhase section */ + 2FBBEADF08F335360078DB84 /* Rez */ = { + isa = PBXRezBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXRezBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 2FBBEADA08F335360078DB84 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 22CF11AE0EE9A8840054F513 /* cr.robotout.c in Sources */, + 0C4FCBAD20A5831E002126CE /* wrapper.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 2FBBEAD008F335010078DB84 /* Development */ = { + isa = XCBuildConfiguration; + buildSettings = { + }; + name = Development; + }; + 2FBBEAD108F335010078DB84 /* Deployment */ = { + isa = XCBuildConfiguration; + buildSettings = { + }; + name = Deployment; + }; + 2FBBEAE108F335360078DB84 /* Development */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 22CF10220EE984600054F513 /* maxmspsdk.xcconfig */; + buildSettings = { + COPY_PHASE_STRIP = NO; + GCC_OPTIMIZATION_LEVEL = 0; + OTHER_LDFLAGS = "$(C74_SYM_LINKER_FLAGS)"; + PRODUCT_BUNDLE_IDENTIFIER = boardout; + PRODUCT_NAME = cr.robotout; + }; + name = Development; + }; + 2FBBEAE208F335360078DB84 /* Deployment */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 22CF10220EE984600054F513 /* maxmspsdk.xcconfig */; + buildSettings = { + COPY_PHASE_STRIP = YES; + OTHER_LDFLAGS = "$(C74_SYM_LINKER_FLAGS)"; + "OTHER_LDFLAGS[arch=*]" = "$(C74_SYM_LINKER_FLAGS)"; + PRODUCT_BUNDLE_IDENTIFIER = boardout; + PRODUCT_NAME = cr.robotout; + }; + name = Deployment; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 2FBBEACF08F335010078DB84 /* Build configuration list for PBXProject "cr.robotout" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2FBBEAD008F335010078DB84 /* Development */, + 2FBBEAD108F335010078DB84 /* Deployment */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Development; + }; + 2FBBEAE008F335360078DB84 /* Build configuration list for PBXNativeTarget "max-external" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2FBBEAE108F335360078DB84 /* Development */, + 2FBBEAE208F335360078DB84 /* Deployment */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Development; + }; +/* End XCConfigurationList section */ + }; + rootObject = 089C1669FE841209C02AAC07 /* Project object */; +} diff --git a/source/cr.robotout/cr.robotout.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/source/cr.robotout/cr.robotout.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..4defe30 --- /dev/null +++ b/source/cr.robotout/cr.robotout.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/source/cr.robotout/cr.robotout.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/source/cr.robotout/cr.robotout.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..54782e3 --- /dev/null +++ b/source/cr.robotout/cr.robotout.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + IDEWorkspaceSharedSettings_AutocreateContextsIfNeeded + + + diff --git a/source/cr.robotout/cr.robotout.xcodeproj/project.xcworkspace/xcuserdata/orly.xcuserdatad/UserInterfaceState.xcuserstate b/source/cr.robotout/cr.robotout.xcodeproj/project.xcworkspace/xcuserdata/orly.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..86fe78f9eb55dc929308294dd1b649e41839970a GIT binary patch literal 189119 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

79F(9e&EX!{rm-93 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


|3=F!b7#MWVFfizzV_?v|z`&q;iGe})3Il`g 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 literal 0 HcmV?d00001 diff --git a/source/cr.robotout/cr.robotout.xcodeproj/project.xcworkspace/xcuserdata/orly.xcuserdatad/WorkspaceSettings.xcsettings b/source/cr.robotout/cr.robotout.xcodeproj/project.xcworkspace/xcuserdata/orly.xcuserdatad/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..dd7403b --- /dev/null +++ b/source/cr.robotout/cr.robotout.xcodeproj/project.xcworkspace/xcuserdata/orly.xcuserdatad/WorkspaceSettings.xcsettings @@ -0,0 +1,16 @@ + + + + + BuildLocationStyle + UseAppPreferences + CustomBuildLocationType + RelativeToDerivedData + DerivedDataLocationStyle + Default + IssueFilterStyle + ShowActiveSchemeOnly + LiveSourceIssuesEnabled + + + diff --git a/source/cr.robotout/cr.robotout.xcodeproj/xcuserdata/orly.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/source/cr.robotout/cr.robotout.xcodeproj/xcuserdata/orly.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 0000000..fe2b454 --- /dev/null +++ b/source/cr.robotout/cr.robotout.xcodeproj/xcuserdata/orly.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,5 @@ + + + diff --git a/source/cr.robotout/cr.robotout.xcodeproj/xcuserdata/orly.xcuserdatad/xcschemes/max-external.xcscheme b/source/cr.robotout/cr.robotout.xcodeproj/xcuserdata/orly.xcuserdatad/xcschemes/max-external.xcscheme new file mode 100644 index 0000000..0afb21e --- /dev/null +++ b/source/cr.robotout/cr.robotout.xcodeproj/xcuserdata/orly.xcuserdatad/xcschemes/max-external.xcscheme @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/source/cr.robotout/cr.robotout.xcodeproj/xcuserdata/orly.xcuserdatad/xcschemes/xcschememanagement.plist b/source/cr.robotout/cr.robotout.xcodeproj/xcuserdata/orly.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..d70c3e6 --- /dev/null +++ b/source/cr.robotout/cr.robotout.xcodeproj/xcuserdata/orly.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,24 @@ + + + + + SchemeUserState + + max-external.xcscheme + + isShown + + orderHint + 0 + + + SuppressBuildableAutocreation + + 2FBBEAD608F335360078DB84 + + primary + + + + + diff --git a/source/ros-max-lib/max.c b/source/ros-max-lib/max.c new file mode 100644 index 0000000..68a03ea --- /dev/null +++ b/source/ros-max-lib/max.c @@ -0,0 +1,157 @@ +// © Copyright The University of New South Wales 2018 +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see http://www.gnu.org/licenses/. + +#include "wrapper.h" +#include "max.h" + +#include + +// Internal functions: +//------------------------------------------------------------- +// Starts an infinite listening thread +// to recieve ROS messages. +int launchthread(pthread_t *posixThreadID, char *err_msg); +// Stops the listening thread +// (blocks until stopped) +int killthread(pthread_t *posixThreadID, char *err_msg); +//------------------------------------------------------------- + + +int robin_start_listening(t_listener *listener, char *err_msg) { + return launchthread(&(listener->posixThreadID), err_msg); +} + +int robin_stop_listening(t_listener *listener, char *err_msg) { + return killthread(&(listener->posixThreadID), err_msg); +} + +int rout_open_twist(char rosSrvrIp[], char err_msg[]) { + + if( ros_init(rosSrvrIp) != 0) { + sprintf(err_msg, "Error establishing a connection to the robot. Check your IP address."); + return -1; + } + + if( ros_advertise_twist() != 0) { + sprintf(err_msg, "Error communicating with the robot."); + return -1; + } + + return 0; +} + +int rout_open_chatter(char rosSrvrIp[], char err_msg[]) { + + ros_init(rosSrvrIp); + ros_advertise_chatter(); + + return 0; +} + +int rout_close() { + + return 0; +} + +int rout_set(char *key) { + ros_publish_chatter(key); + return 0; +} + +int rout_set_twist(double out_msg[6]) { + return ros_publish_twist(out_msg); +} + + +int isValidIpAddressCheck(char *ipAddress) { + return isValidIpAddress(ipAddress); +} + + +// Starts an infinite listening thread to recieve ROS messages. +int launchthread(pthread_t *posixThreadID, char err_msg[]) //void *thread_args) +{ + // Create the thread using POSIX routines. + pthread_attr_t attr; + int returnVal; + + /* + if(threadactive != 0) { + sprintf(err_msg, "err thread is already running"); + //printf("err thread is already running\n"); + return -1; + } + */ + returnVal = pthread_attr_init(&attr); + if(returnVal) { + sprintf(err_msg, "err in pthread_attr_init"); + //printf("err in pthread_attr_init\n"); + return returnVal; + } + returnVal = pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); + if(returnVal) { + sprintf(err_msg, "err in pthread_attr_setdetachstate"); + //printf("err in pthread_attr_setdetachstate\n"); + return returnVal; + } + + int threadError = pthread_create(posixThreadID, &attr, &ros_listen, NULL); + if (threadError) + { + sprintf(err_msg, "err in pthread_create"); + //printf("err in pthread_create\n"); + return threadError; + } + + //threadactive = 1; + + // Destroy the thread attributes object, no longer needed + /* + returnVal = pthread_attr_destroy(&attr); + if (returnVal != 0) + { + sprintf(err_msg, "error in pthread_attr_destroy"); + //printf("error in pthread_attr_destroy\n"); + return -1; + }*/ + + return 0; + +} + +// Stops listening for incoming board messages (kill the listening thread). +int killthread(pthread_t *posixThreadID, char err_msg[]) +{ + /* + if(threadactive == 0) return 0; + + threadactive = 0; + */ + // stop the running thread + int returnVal = pthread_cancel(*posixThreadID); // kill the listening thread without waiting + //int returnVal = pthread_join(*posixThreadID, NULL); // BLOCK until thread finished + if (returnVal != 0) + { + sprintf(err_msg, "error in pthread_cancel: %d", returnVal); + //printf("error in killthread\n"); + return returnVal; + } + + //printf("listening thread stopped\n"); + + return 0; +} + + diff --git a/source/ros-max-lib/max.h b/source/ros-max-lib/max.h new file mode 100644 index 0000000..ec54c23 --- /dev/null +++ b/source/ros-max-lib/max.h @@ -0,0 +1,53 @@ +// © Copyright The University of New South Wales 2018 +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see http://www.gnu.org/licenses/. + +#ifndef max_h +#define max_h + +#include + +typedef struct listener { + // POSIX thread - infinite listener + pthread_t posixThreadID; + int is_active;// = 0; // true if the thread is running +} t_listener; + +// robot_in (subscriber) +//int robin_close(char err_msg[]); + +//int rin_open_twist(char rosSrvrIp[], void *obj, void (*f)(void*, void**), char err[]); +//int rin_open_twist2(char rosSrvrIp[], char *msg_type, void *obj, void (*f)(void*, void**), char err[]); +//int rin_open_chatter(char rosSrvrIp[], void *obj, void (*f)(void*, void**), char err[]); + +//robot_out (publisher) +int rout_open_chatter(char rosSrvrIp[], char err_msg[]); +int rout_open_twist(char rosSrvrIp[], char err_msg[]); +int rout_close(); +int rout_set(); +int rout_set_twist(double out_msg[6]); + +// Starts an infinite listening thread to recieve ROS messages. +//int launchthread(char err_msg[]); +//int killthread(char err_msg[]); +int robin_stop_listening(t_listener *listener, char *err_msg); +int robin_start_listening(t_listener *listener, char *err_msg); + +int isValidIpAddressCheck(char *ipAddress); + + +//typedef struct geometry_msgs_Twist geometry_msgs_Twist; + + +#endif /* max_h */ diff --git a/source/ros-max-lib/ros-max-lib.xcodeproj/project.pbxproj b/source/ros-max-lib/ros-max-lib.xcodeproj/project.pbxproj new file mode 100644 index 0000000..0f7f4de --- /dev/null +++ b/source/ros-max-lib/ros-max-lib.xcodeproj/project.pbxproj @@ -0,0 +1,263 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 0C4FCB8F20A57CC2002126CE /* test_main.c in Sources */ = {isa = PBXBuildFile; fileRef = 0C4FCB8A20A57CC2002126CE /* test_main.c */; }; + 0C4FCB9020A57CC2002126CE /* wrapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C4FCB8B20A57CC2002126CE /* wrapper.cpp */; }; + 0C4FCB9120A57CC2002126CE /* max.c in Sources */ = {isa = PBXBuildFile; fileRef = 0C4FCB8C20A57CC2002126CE /* max.c */; }; + 0C4FCB9220A57CC2002126CE /* wrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C4FCB8D20A57CC2002126CE /* wrapper.h */; }; + 0C4FCB9320A57CC2002126CE /* max.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C4FCB8E20A57CC2002126CE /* max.h */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 0C4FCB8320A57B08002126CE /* libros-max-lib.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libros-max-lib.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 0C4FCB8A20A57CC2002126CE /* test_main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = test_main.c; sourceTree = ""; }; + 0C4FCB8B20A57CC2002126CE /* wrapper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wrapper.cpp; sourceTree = ""; }; + 0C4FCB8C20A57CC2002126CE /* max.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = max.c; sourceTree = ""; }; + 0C4FCB8D20A57CC2002126CE /* wrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wrapper.h; sourceTree = ""; }; + 0C4FCB8E20A57CC2002126CE /* max.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = max.h; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 0C4FCB8020A57B08002126CE /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 0C4FCB7A20A57B08002126CE = { + isa = PBXGroup; + children = ( + 0C4FCB8A20A57CC2002126CE /* test_main.c */, + 0C4FCB8B20A57CC2002126CE /* wrapper.cpp */, + 0C4FCB8C20A57CC2002126CE /* max.c */, + 0C4FCB8D20A57CC2002126CE /* wrapper.h */, + 0C4FCB8E20A57CC2002126CE /* max.h */, + 0C4FCB8420A57B08002126CE /* Products */, + ); + sourceTree = ""; + }; + 0C4FCB8420A57B08002126CE /* Products */ = { + isa = PBXGroup; + children = ( + 0C4FCB8320A57B08002126CE /* libros-max-lib.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 0C4FCB8120A57B08002126CE /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 0C4FCB9220A57CC2002126CE /* wrapper.h in Headers */, + 0C4FCB9320A57CC2002126CE /* max.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 0C4FCB8220A57B08002126CE /* ros-max-lib */ = { + isa = PBXNativeTarget; + buildConfigurationList = 0C4FCB8720A57B08002126CE /* Build configuration list for PBXNativeTarget "ros-max-lib" */; + buildPhases = ( + 0C4FCB7F20A57B08002126CE /* Sources */, + 0C4FCB8020A57B08002126CE /* Frameworks */, + 0C4FCB8120A57B08002126CE /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "ros-max-lib"; + productName = "ros-max-lib"; + productReference = 0C4FCB8320A57B08002126CE /* libros-max-lib.a */; + productType = "com.apple.product-type.library.static"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 0C4FCB7B20A57B08002126CE /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0830; + ORGANIZATIONNAME = "Orly Natan"; + TargetAttributes = { + 0C4FCB8220A57B08002126CE = { + CreatedOnToolsVersion = 8.3.3; + ProvisioningStyle = Automatic; + }; + }; + }; + buildConfigurationList = 0C4FCB7E20A57B08002126CE /* Build configuration list for PBXProject "ros-max-lib" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 0C4FCB7A20A57B08002126CE; + productRefGroup = 0C4FCB8420A57B08002126CE /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 0C4FCB8220A57B08002126CE /* ros-max-lib */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 0C4FCB7F20A57B08002126CE /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0C4FCB9120A57CC2002126CE /* max.c in Sources */, + 0C4FCB8F20A57CC2002126CE /* test_main.c in Sources */, + 0C4FCB9020A57CC2002126CE /* wrapper.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 0C4FCB8520A57B08002126CE /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.12; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + }; + name = Debug; + }; + 0C4FCB8620A57B08002126CE /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.12; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + }; + name = Release; + }; + 0C4FCB8820A57B08002126CE /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + EXECUTABLE_PREFIX = lib; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 0C4FCB8920A57B08002126CE /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + EXECUTABLE_PREFIX = lib; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 0C4FCB7E20A57B08002126CE /* Build configuration list for PBXProject "ros-max-lib" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0C4FCB8520A57B08002126CE /* Debug */, + 0C4FCB8620A57B08002126CE /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 0C4FCB8720A57B08002126CE /* Build configuration list for PBXNativeTarget "ros-max-lib" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0C4FCB8820A57B08002126CE /* Debug */, + 0C4FCB8920A57B08002126CE /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; +/* End XCConfigurationList section */ + }; + rootObject = 0C4FCB7B20A57B08002126CE /* Project object */; +} diff --git a/source/ros-max-lib/ros-max-lib.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/source/ros-max-lib/ros-max-lib.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..4e08f6e --- /dev/null +++ b/source/ros-max-lib/ros-max-lib.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/source/ros-max-lib/ros-max-lib.xcodeproj/project.xcworkspace/xcuserdata/orly.xcuserdatad/UserInterfaceState.xcuserstate b/source/ros-max-lib/ros-max-lib.xcodeproj/project.xcworkspace/xcuserdata/orly.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..6f419085c2129ef04df3b30b21b91bd478387e5c GIT binary patch literal 59348 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 literal 0 HcmV?d00001 diff --git a/source/ros-max-lib/ros-max-lib.xcodeproj/xcuserdata/orly.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/source/ros-max-lib/ros-max-lib.xcodeproj/xcuserdata/orly.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 0000000..fe2b454 --- /dev/null +++ b/source/ros-max-lib/ros-max-lib.xcodeproj/xcuserdata/orly.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,5 @@ + + + diff --git a/source/ros-max-lib/ros-max-lib.xcodeproj/xcuserdata/orly.xcuserdatad/xcschemes/ros-max-lib.xcscheme b/source/ros-max-lib/ros-max-lib.xcodeproj/xcuserdata/orly.xcuserdatad/xcschemes/ros-max-lib.xcscheme new file mode 100644 index 0000000..31ed09c --- /dev/null +++ b/source/ros-max-lib/ros-max-lib.xcodeproj/xcuserdata/orly.xcuserdatad/xcschemes/ros-max-lib.xcscheme @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/source/ros-max-lib/ros-max-lib.xcodeproj/xcuserdata/orly.xcuserdatad/xcschemes/xcschememanagement.plist b/source/ros-max-lib/ros-max-lib.xcodeproj/xcuserdata/orly.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..dc8ea93 --- /dev/null +++ b/source/ros-max-lib/ros-max-lib.xcodeproj/xcuserdata/orly.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,22 @@ + + + + + SchemeUserState + + ros-max-lib.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 0C4FCB8220A57B08002126CE + + primary + + + + + diff --git a/source/ros-max-lib/ros_lib/actionlib/TestAction.h b/source/ros-max-lib/ros_lib/actionlib/TestAction.h new file mode 100644 index 0000000..4a6042d --- /dev/null +++ b/source/ros-max-lib/ros_lib/actionlib/TestAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_TestAction_h +#define _ROS_actionlib_TestAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "actionlib/TestActionGoal.h" +#include "actionlib/TestActionResult.h" +#include "actionlib/TestActionFeedback.h" + +namespace actionlib +{ + + class TestAction : public ros::Msg + { + public: + typedef actionlib::TestActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef actionlib::TestActionResult _action_result_type; + _action_result_type action_result; + typedef actionlib::TestActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + TestAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib/TestAction"; }; + const char * getMD5(){ return "991e87a72802262dfbe5d1b3cf6efc9a"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/actionlib/TestActionFeedback.h b/source/ros-max-lib/ros_lib/actionlib/TestActionFeedback.h new file mode 100644 index 0000000..aab52af --- /dev/null +++ b/source/ros-max-lib/ros_lib/actionlib/TestActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_TestActionFeedback_h +#define _ROS_actionlib_TestActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "actionlib/TestFeedback.h" + +namespace actionlib +{ + + class TestActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef actionlib::TestFeedback _feedback_type; + _feedback_type feedback; + + TestActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib/TestActionFeedback"; }; + const char * getMD5(){ return "6d3d0bf7fb3dda24779c010a9f3eb7cb"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/actionlib/TestActionGoal.h b/source/ros-max-lib/ros_lib/actionlib/TestActionGoal.h new file mode 100644 index 0000000..6cb7402 --- /dev/null +++ b/source/ros-max-lib/ros_lib/actionlib/TestActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_TestActionGoal_h +#define _ROS_actionlib_TestActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "actionlib/TestGoal.h" + +namespace actionlib +{ + + class TestActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef actionlib::TestGoal _goal_type; + _goal_type goal; + + TestActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib/TestActionGoal"; }; + const char * getMD5(){ return "348369c5b403676156094e8c159720bf"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/actionlib/TestActionResult.h b/source/ros-max-lib/ros_lib/actionlib/TestActionResult.h new file mode 100644 index 0000000..d534d0a --- /dev/null +++ b/source/ros-max-lib/ros_lib/actionlib/TestActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_TestActionResult_h +#define _ROS_actionlib_TestActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "actionlib/TestResult.h" + +namespace actionlib +{ + + class TestActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef actionlib::TestResult _result_type; + _result_type result; + + TestActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib/TestActionResult"; }; + const char * getMD5(){ return "3d669e3a63aa986c667ea7b0f46ce85e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/actionlib/TestFeedback.h b/source/ros-max-lib/ros_lib/actionlib/TestFeedback.h new file mode 100644 index 0000000..83798cf --- /dev/null +++ b/source/ros-max-lib/ros_lib/actionlib/TestFeedback.h @@ -0,0 +1,62 @@ +#ifndef _ROS_actionlib_TestFeedback_h +#define _ROS_actionlib_TestFeedback_h + +#include +#include +#include +#include "ros/msg.h" + +namespace actionlib +{ + + class TestFeedback : public ros::Msg + { + public: + typedef int32_t _feedback_type; + _feedback_type feedback; + + TestFeedback(): + feedback(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_feedback; + u_feedback.real = this->feedback; + *(outbuffer + offset + 0) = (u_feedback.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_feedback.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_feedback.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_feedback.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->feedback); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_feedback; + u_feedback.base = 0; + u_feedback.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_feedback.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_feedback.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_feedback.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->feedback = u_feedback.real; + offset += sizeof(this->feedback); + return offset; + } + + const char * getType(){ return "actionlib/TestFeedback"; }; + const char * getMD5(){ return "49ceb5b32ea3af22073ede4a0328249e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/actionlib/TestGoal.h b/source/ros-max-lib/ros_lib/actionlib/TestGoal.h new file mode 100644 index 0000000..40d3a99 --- /dev/null +++ b/source/ros-max-lib/ros_lib/actionlib/TestGoal.h @@ -0,0 +1,62 @@ +#ifndef _ROS_actionlib_TestGoal_h +#define _ROS_actionlib_TestGoal_h + +#include +#include +#include +#include "ros/msg.h" + +namespace actionlib +{ + + class TestGoal : public ros::Msg + { + public: + typedef int32_t _goal_type; + _goal_type goal; + + TestGoal(): + goal(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_goal; + u_goal.real = this->goal; + *(outbuffer + offset + 0) = (u_goal.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_goal.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_goal.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_goal.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->goal); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_goal; + u_goal.base = 0; + u_goal.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_goal.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_goal.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_goal.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->goal = u_goal.real; + offset += sizeof(this->goal); + return offset; + } + + const char * getType(){ return "actionlib/TestGoal"; }; + const char * getMD5(){ return "18df0149936b7aa95588e3862476ebde"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/actionlib/TestRequestAction.h b/source/ros-max-lib/ros_lib/actionlib/TestRequestAction.h new file mode 100644 index 0000000..52a2fe9 --- /dev/null +++ b/source/ros-max-lib/ros_lib/actionlib/TestRequestAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_TestRequestAction_h +#define _ROS_actionlib_TestRequestAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "actionlib/TestRequestActionGoal.h" +#include "actionlib/TestRequestActionResult.h" +#include "actionlib/TestRequestActionFeedback.h" + +namespace actionlib +{ + + class TestRequestAction : public ros::Msg + { + public: + typedef actionlib::TestRequestActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef actionlib::TestRequestActionResult _action_result_type; + _action_result_type action_result; + typedef actionlib::TestRequestActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + TestRequestAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib/TestRequestAction"; }; + const char * getMD5(){ return "dc44b1f4045dbf0d1db54423b3b86b30"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/actionlib/TestRequestActionFeedback.h b/source/ros-max-lib/ros_lib/actionlib/TestRequestActionFeedback.h new file mode 100644 index 0000000..0d585c0 --- /dev/null +++ b/source/ros-max-lib/ros_lib/actionlib/TestRequestActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_TestRequestActionFeedback_h +#define _ROS_actionlib_TestRequestActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "actionlib/TestRequestFeedback.h" + +namespace actionlib +{ + + class TestRequestActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef actionlib::TestRequestFeedback _feedback_type; + _feedback_type feedback; + + TestRequestActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib/TestRequestActionFeedback"; }; + const char * getMD5(){ return "aae20e09065c3809e8a8e87c4c8953fd"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/actionlib/TestRequestActionGoal.h b/source/ros-max-lib/ros_lib/actionlib/TestRequestActionGoal.h new file mode 100644 index 0000000..24c6c48 --- /dev/null +++ b/source/ros-max-lib/ros_lib/actionlib/TestRequestActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_TestRequestActionGoal_h +#define _ROS_actionlib_TestRequestActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "actionlib/TestRequestGoal.h" + +namespace actionlib +{ + + class TestRequestActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef actionlib::TestRequestGoal _goal_type; + _goal_type goal; + + TestRequestActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib/TestRequestActionGoal"; }; + const char * getMD5(){ return "1889556d3fef88f821c7cb004e4251f3"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/actionlib/TestRequestActionResult.h b/source/ros-max-lib/ros_lib/actionlib/TestRequestActionResult.h new file mode 100644 index 0000000..a71e715 --- /dev/null +++ b/source/ros-max-lib/ros_lib/actionlib/TestRequestActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_TestRequestActionResult_h +#define _ROS_actionlib_TestRequestActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "actionlib/TestRequestResult.h" + +namespace actionlib +{ + + class TestRequestActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef actionlib::TestRequestResult _result_type; + _result_type result; + + TestRequestActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib/TestRequestActionResult"; }; + const char * getMD5(){ return "0476d1fdf437a3a6e7d6d0e9f5561298"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/actionlib/TestRequestFeedback.h b/source/ros-max-lib/ros_lib/actionlib/TestRequestFeedback.h new file mode 100644 index 0000000..f1fc247 --- /dev/null +++ b/source/ros-max-lib/ros_lib/actionlib/TestRequestFeedback.h @@ -0,0 +1,38 @@ +#ifndef _ROS_actionlib_TestRequestFeedback_h +#define _ROS_actionlib_TestRequestFeedback_h + +#include +#include +#include +#include "ros/msg.h" + +namespace actionlib +{ + + class TestRequestFeedback : public ros::Msg + { + public: + + TestRequestFeedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "actionlib/TestRequestFeedback"; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/actionlib/TestRequestGoal.h b/source/ros-max-lib/ros_lib/actionlib/TestRequestGoal.h new file mode 100644 index 0000000..321ebd3 --- /dev/null +++ b/source/ros-max-lib/ros_lib/actionlib/TestRequestGoal.h @@ -0,0 +1,215 @@ +#ifndef _ROS_actionlib_TestRequestGoal_h +#define _ROS_actionlib_TestRequestGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "ros/duration.h" + +namespace actionlib +{ + + class TestRequestGoal : public ros::Msg + { + public: + typedef int32_t _terminate_status_type; + _terminate_status_type terminate_status; + typedef bool _ignore_cancel_type; + _ignore_cancel_type ignore_cancel; + typedef const char* _result_text_type; + _result_text_type result_text; + typedef int32_t _the_result_type; + _the_result_type the_result; + typedef bool _is_simple_client_type; + _is_simple_client_type is_simple_client; + typedef ros::Duration _delay_accept_type; + _delay_accept_type delay_accept; + typedef ros::Duration _delay_terminate_type; + _delay_terminate_type delay_terminate; + typedef ros::Duration _pause_status_type; + _pause_status_type pause_status; + enum { TERMINATE_SUCCESS = 0 }; + enum { TERMINATE_ABORTED = 1 }; + enum { TERMINATE_REJECTED = 2 }; + enum { TERMINATE_LOSE = 3 }; + enum { TERMINATE_DROP = 4 }; + enum { TERMINATE_EXCEPTION = 5 }; + + TestRequestGoal(): + terminate_status(0), + ignore_cancel(0), + result_text(""), + the_result(0), + is_simple_client(0), + delay_accept(), + delay_terminate(), + pause_status() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_terminate_status; + u_terminate_status.real = this->terminate_status; + *(outbuffer + offset + 0) = (u_terminate_status.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_terminate_status.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_terminate_status.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_terminate_status.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->terminate_status); + union { + bool real; + uint8_t base; + } u_ignore_cancel; + u_ignore_cancel.real = this->ignore_cancel; + *(outbuffer + offset + 0) = (u_ignore_cancel.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->ignore_cancel); + uint32_t length_result_text = strlen(this->result_text); + varToArr(outbuffer + offset, length_result_text); + offset += 4; + memcpy(outbuffer + offset, this->result_text, length_result_text); + offset += length_result_text; + union { + int32_t real; + uint32_t base; + } u_the_result; + u_the_result.real = this->the_result; + *(outbuffer + offset + 0) = (u_the_result.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_the_result.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_the_result.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_the_result.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->the_result); + union { + bool real; + uint8_t base; + } u_is_simple_client; + u_is_simple_client.real = this->is_simple_client; + *(outbuffer + offset + 0) = (u_is_simple_client.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->is_simple_client); + *(outbuffer + offset + 0) = (this->delay_accept.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->delay_accept.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->delay_accept.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->delay_accept.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->delay_accept.sec); + *(outbuffer + offset + 0) = (this->delay_accept.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->delay_accept.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->delay_accept.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->delay_accept.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->delay_accept.nsec); + *(outbuffer + offset + 0) = (this->delay_terminate.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->delay_terminate.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->delay_terminate.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->delay_terminate.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->delay_terminate.sec); + *(outbuffer + offset + 0) = (this->delay_terminate.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->delay_terminate.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->delay_terminate.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->delay_terminate.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->delay_terminate.nsec); + *(outbuffer + offset + 0) = (this->pause_status.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->pause_status.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->pause_status.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->pause_status.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->pause_status.sec); + *(outbuffer + offset + 0) = (this->pause_status.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->pause_status.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->pause_status.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->pause_status.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->pause_status.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_terminate_status; + u_terminate_status.base = 0; + u_terminate_status.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_terminate_status.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_terminate_status.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_terminate_status.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->terminate_status = u_terminate_status.real; + offset += sizeof(this->terminate_status); + union { + bool real; + uint8_t base; + } u_ignore_cancel; + u_ignore_cancel.base = 0; + u_ignore_cancel.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->ignore_cancel = u_ignore_cancel.real; + offset += sizeof(this->ignore_cancel); + uint32_t length_result_text; + arrToVar(length_result_text, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_result_text; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_result_text-1]=0; + this->result_text = (char *)(inbuffer + offset-1); + offset += length_result_text; + union { + int32_t real; + uint32_t base; + } u_the_result; + u_the_result.base = 0; + u_the_result.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_the_result.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_the_result.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_the_result.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->the_result = u_the_result.real; + offset += sizeof(this->the_result); + union { + bool real; + uint8_t base; + } u_is_simple_client; + u_is_simple_client.base = 0; + u_is_simple_client.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->is_simple_client = u_is_simple_client.real; + offset += sizeof(this->is_simple_client); + this->delay_accept.sec = ((uint32_t) (*(inbuffer + offset))); + this->delay_accept.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->delay_accept.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->delay_accept.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->delay_accept.sec); + this->delay_accept.nsec = ((uint32_t) (*(inbuffer + offset))); + this->delay_accept.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->delay_accept.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->delay_accept.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->delay_accept.nsec); + this->delay_terminate.sec = ((uint32_t) (*(inbuffer + offset))); + this->delay_terminate.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->delay_terminate.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->delay_terminate.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->delay_terminate.sec); + this->delay_terminate.nsec = ((uint32_t) (*(inbuffer + offset))); + this->delay_terminate.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->delay_terminate.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->delay_terminate.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->delay_terminate.nsec); + this->pause_status.sec = ((uint32_t) (*(inbuffer + offset))); + this->pause_status.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->pause_status.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->pause_status.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->pause_status.sec); + this->pause_status.nsec = ((uint32_t) (*(inbuffer + offset))); + this->pause_status.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->pause_status.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->pause_status.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->pause_status.nsec); + return offset; + } + + const char * getType(){ return "actionlib/TestRequestGoal"; }; + const char * getMD5(){ return "db5d00ba98302d6c6dd3737e9a03ceea"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/actionlib/TestRequestResult.h b/source/ros-max-lib/ros_lib/actionlib/TestRequestResult.h new file mode 100644 index 0000000..9788725 --- /dev/null +++ b/source/ros-max-lib/ros_lib/actionlib/TestRequestResult.h @@ -0,0 +1,80 @@ +#ifndef _ROS_actionlib_TestRequestResult_h +#define _ROS_actionlib_TestRequestResult_h + +#include +#include +#include +#include "ros/msg.h" + +namespace actionlib +{ + + class TestRequestResult : public ros::Msg + { + public: + typedef int32_t _the_result_type; + _the_result_type the_result; + typedef bool _is_simple_server_type; + _is_simple_server_type is_simple_server; + + TestRequestResult(): + the_result(0), + is_simple_server(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_the_result; + u_the_result.real = this->the_result; + *(outbuffer + offset + 0) = (u_the_result.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_the_result.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_the_result.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_the_result.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->the_result); + union { + bool real; + uint8_t base; + } u_is_simple_server; + u_is_simple_server.real = this->is_simple_server; + *(outbuffer + offset + 0) = (u_is_simple_server.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->is_simple_server); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_the_result; + u_the_result.base = 0; + u_the_result.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_the_result.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_the_result.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_the_result.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->the_result = u_the_result.real; + offset += sizeof(this->the_result); + union { + bool real; + uint8_t base; + } u_is_simple_server; + u_is_simple_server.base = 0; + u_is_simple_server.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->is_simple_server = u_is_simple_server.real; + offset += sizeof(this->is_simple_server); + return offset; + } + + const char * getType(){ return "actionlib/TestRequestResult"; }; + const char * getMD5(){ return "61c2364524499c7c5017e2f3fce7ba06"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/actionlib/TestResult.h b/source/ros-max-lib/ros_lib/actionlib/TestResult.h new file mode 100644 index 0000000..5c9718c --- /dev/null +++ b/source/ros-max-lib/ros_lib/actionlib/TestResult.h @@ -0,0 +1,62 @@ +#ifndef _ROS_actionlib_TestResult_h +#define _ROS_actionlib_TestResult_h + +#include +#include +#include +#include "ros/msg.h" + +namespace actionlib +{ + + class TestResult : public ros::Msg + { + public: + typedef int32_t _result_type; + _result_type result; + + TestResult(): + result(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_result; + u_result.real = this->result; + *(outbuffer + offset + 0) = (u_result.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_result.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_result.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_result.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->result); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_result; + u_result.base = 0; + u_result.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_result.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_result.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_result.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->result = u_result.real; + offset += sizeof(this->result); + return offset; + } + + const char * getType(){ return "actionlib/TestResult"; }; + const char * getMD5(){ return "034a8e20d6a306665e3a5b340fab3f09"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/actionlib/TwoIntsAction.h b/source/ros-max-lib/ros_lib/actionlib/TwoIntsAction.h new file mode 100644 index 0000000..30c73cc --- /dev/null +++ b/source/ros-max-lib/ros_lib/actionlib/TwoIntsAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_TwoIntsAction_h +#define _ROS_actionlib_TwoIntsAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "actionlib/TwoIntsActionGoal.h" +#include "actionlib/TwoIntsActionResult.h" +#include "actionlib/TwoIntsActionFeedback.h" + +namespace actionlib +{ + + class TwoIntsAction : public ros::Msg + { + public: + typedef actionlib::TwoIntsActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef actionlib::TwoIntsActionResult _action_result_type; + _action_result_type action_result; + typedef actionlib::TwoIntsActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + TwoIntsAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib/TwoIntsAction"; }; + const char * getMD5(){ return "6d1aa538c4bd6183a2dfb7fcac41ee50"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/actionlib/TwoIntsActionFeedback.h b/source/ros-max-lib/ros_lib/actionlib/TwoIntsActionFeedback.h new file mode 100644 index 0000000..8cd4862 --- /dev/null +++ b/source/ros-max-lib/ros_lib/actionlib/TwoIntsActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_TwoIntsActionFeedback_h +#define _ROS_actionlib_TwoIntsActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "actionlib/TwoIntsFeedback.h" + +namespace actionlib +{ + + class TwoIntsActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef actionlib::TwoIntsFeedback _feedback_type; + _feedback_type feedback; + + TwoIntsActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib/TwoIntsActionFeedback"; }; + const char * getMD5(){ return "aae20e09065c3809e8a8e87c4c8953fd"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/actionlib/TwoIntsActionGoal.h b/source/ros-max-lib/ros_lib/actionlib/TwoIntsActionGoal.h new file mode 100644 index 0000000..7d33c17 --- /dev/null +++ b/source/ros-max-lib/ros_lib/actionlib/TwoIntsActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_TwoIntsActionGoal_h +#define _ROS_actionlib_TwoIntsActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "actionlib/TwoIntsGoal.h" + +namespace actionlib +{ + + class TwoIntsActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef actionlib::TwoIntsGoal _goal_type; + _goal_type goal; + + TwoIntsActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib/TwoIntsActionGoal"; }; + const char * getMD5(){ return "684a2db55d6ffb8046fb9d6764ce0860"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/actionlib/TwoIntsActionResult.h b/source/ros-max-lib/ros_lib/actionlib/TwoIntsActionResult.h new file mode 100644 index 0000000..e36c808 --- /dev/null +++ b/source/ros-max-lib/ros_lib/actionlib/TwoIntsActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_TwoIntsActionResult_h +#define _ROS_actionlib_TwoIntsActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "actionlib/TwoIntsResult.h" + +namespace actionlib +{ + + class TwoIntsActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef actionlib::TwoIntsResult _result_type; + _result_type result; + + TwoIntsActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib/TwoIntsActionResult"; }; + const char * getMD5(){ return "3ba7dea8b8cddcae4528ade4ef74b6e7"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/actionlib/TwoIntsFeedback.h b/source/ros-max-lib/ros_lib/actionlib/TwoIntsFeedback.h new file mode 100644 index 0000000..3789c4d --- /dev/null +++ b/source/ros-max-lib/ros_lib/actionlib/TwoIntsFeedback.h @@ -0,0 +1,38 @@ +#ifndef _ROS_actionlib_TwoIntsFeedback_h +#define _ROS_actionlib_TwoIntsFeedback_h + +#include +#include +#include +#include "ros/msg.h" + +namespace actionlib +{ + + class TwoIntsFeedback : public ros::Msg + { + public: + + TwoIntsFeedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "actionlib/TwoIntsFeedback"; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/actionlib/TwoIntsGoal.h b/source/ros-max-lib/ros_lib/actionlib/TwoIntsGoal.h new file mode 100644 index 0000000..088c6ec --- /dev/null +++ b/source/ros-max-lib/ros_lib/actionlib/TwoIntsGoal.h @@ -0,0 +1,102 @@ +#ifndef _ROS_actionlib_TwoIntsGoal_h +#define _ROS_actionlib_TwoIntsGoal_h + +#include +#include +#include +#include "ros/msg.h" + +namespace actionlib +{ + + class TwoIntsGoal : public ros::Msg + { + public: + typedef int64_t _a_type; + _a_type a; + typedef int64_t _b_type; + _b_type b; + + TwoIntsGoal(): + a(0), + b(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_a; + u_a.real = this->a; + *(outbuffer + offset + 0) = (u_a.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_a.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_a.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_a.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_a.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_a.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_a.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_a.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->a); + union { + int64_t real; + uint64_t base; + } u_b; + u_b.real = this->b; + *(outbuffer + offset + 0) = (u_b.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_b.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_b.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_b.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_b.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_b.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_b.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_b.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->b); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_a; + u_a.base = 0; + u_a.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->a = u_a.real; + offset += sizeof(this->a); + union { + int64_t real; + uint64_t base; + } u_b; + u_b.base = 0; + u_b.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->b = u_b.real; + offset += sizeof(this->b); + return offset; + } + + const char * getType(){ return "actionlib/TwoIntsGoal"; }; + const char * getMD5(){ return "36d09b846be0b371c5f190354dd3153e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/actionlib/TwoIntsResult.h b/source/ros-max-lib/ros_lib/actionlib/TwoIntsResult.h new file mode 100644 index 0000000..51d3cce --- /dev/null +++ b/source/ros-max-lib/ros_lib/actionlib/TwoIntsResult.h @@ -0,0 +1,70 @@ +#ifndef _ROS_actionlib_TwoIntsResult_h +#define _ROS_actionlib_TwoIntsResult_h + +#include +#include +#include +#include "ros/msg.h" + +namespace actionlib +{ + + class TwoIntsResult : public ros::Msg + { + public: + typedef int64_t _sum_type; + _sum_type sum; + + TwoIntsResult(): + sum(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_sum; + u_sum.real = this->sum; + *(outbuffer + offset + 0) = (u_sum.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_sum.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_sum.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_sum.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_sum.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_sum.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_sum.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_sum.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->sum); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_sum; + u_sum.base = 0; + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->sum = u_sum.real; + offset += sizeof(this->sum); + return offset; + } + + const char * getType(){ return "actionlib/TwoIntsResult"; }; + const char * getMD5(){ return "b88405221c77b1878a3cbbfff53428d7"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/actionlib_msgs/GoalID.h b/source/ros-max-lib/ros_lib/actionlib_msgs/GoalID.h new file mode 100644 index 0000000..24391a3 --- /dev/null +++ b/source/ros-max-lib/ros_lib/actionlib_msgs/GoalID.h @@ -0,0 +1,79 @@ +#ifndef _ROS_actionlib_msgs_GoalID_h +#define _ROS_actionlib_msgs_GoalID_h + +#include +#include +#include +#include "ros/msg.h" +#include "ros/time.h" + +namespace actionlib_msgs +{ + + class GoalID : public ros::Msg + { + public: + typedef ros::Time _stamp_type; + _stamp_type stamp; + typedef const char* _id_type; + _id_type id; + + GoalID(): + stamp(), + id("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->stamp.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp.sec); + *(outbuffer + offset + 0) = (this->stamp.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp.nsec); + uint32_t length_id = strlen(this->id); + varToArr(outbuffer + offset, length_id); + offset += 4; + memcpy(outbuffer + offset, this->id, length_id); + offset += length_id; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->stamp.sec = ((uint32_t) (*(inbuffer + offset))); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp.sec); + this->stamp.nsec = ((uint32_t) (*(inbuffer + offset))); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp.nsec); + uint32_t length_id; + arrToVar(length_id, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_id; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_id-1]=0; + this->id = (char *)(inbuffer + offset-1); + offset += length_id; + return offset; + } + + const char * getType(){ return "actionlib_msgs/GoalID"; }; + const char * getMD5(){ return "302881f31927c1df708a2dbab0e80ee8"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/actionlib_msgs/GoalStatus.h b/source/ros-max-lib/ros_lib/actionlib_msgs/GoalStatus.h new file mode 100644 index 0000000..349524c --- /dev/null +++ b/source/ros-max-lib/ros_lib/actionlib_msgs/GoalStatus.h @@ -0,0 +1,78 @@ +#ifndef _ROS_actionlib_msgs_GoalStatus_h +#define _ROS_actionlib_msgs_GoalStatus_h + +#include +#include +#include +#include "ros/msg.h" +#include "actionlib_msgs/GoalID.h" + +namespace actionlib_msgs +{ + + class GoalStatus : public ros::Msg + { + public: + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef uint8_t _status_type; + _status_type status; + typedef const char* _text_type; + _text_type text; + enum { PENDING = 0 }; + enum { ACTIVE = 1 }; + enum { PREEMPTED = 2 }; + enum { SUCCEEDED = 3 }; + enum { ABORTED = 4 }; + enum { REJECTED = 5 }; + enum { PREEMPTING = 6 }; + enum { RECALLING = 7 }; + enum { RECALLED = 8 }; + enum { LOST = 9 }; + + GoalStatus(): + goal_id(), + status(0), + text("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->goal_id.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->status >> (8 * 0)) & 0xFF; + offset += sizeof(this->status); + uint32_t length_text = strlen(this->text); + varToArr(outbuffer + offset, length_text); + offset += 4; + memcpy(outbuffer + offset, this->text, length_text); + offset += length_text; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->goal_id.deserialize(inbuffer + offset); + this->status = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->status); + uint32_t length_text; + arrToVar(length_text, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_text; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_text-1]=0; + this->text = (char *)(inbuffer + offset-1); + offset += length_text; + return offset; + } + + const char * getType(){ return "actionlib_msgs/GoalStatus"; }; + const char * getMD5(){ return "d388f9b87b3c471f784434d671988d4a"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/actionlib_msgs/GoalStatusArray.h b/source/ros-max-lib/ros_lib/actionlib_msgs/GoalStatusArray.h new file mode 100644 index 0000000..9e39b5f --- /dev/null +++ b/source/ros-max-lib/ros_lib/actionlib_msgs/GoalStatusArray.h @@ -0,0 +1,70 @@ +#ifndef _ROS_actionlib_msgs_GoalStatusArray_h +#define _ROS_actionlib_msgs_GoalStatusArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" + +namespace actionlib_msgs +{ + + class GoalStatusArray : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t status_list_length; + typedef actionlib_msgs::GoalStatus _status_list_type; + _status_list_type st_status_list; + _status_list_type * status_list; + + GoalStatusArray(): + header(), + status_list_length(0), status_list(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->status_list_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->status_list_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->status_list_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->status_list_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->status_list_length); + for( uint32_t i = 0; i < status_list_length; i++){ + offset += this->status_list[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t status_list_lengthT = ((uint32_t) (*(inbuffer + offset))); + status_list_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + status_list_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + status_list_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->status_list_length); + if(status_list_lengthT > status_list_length) + this->status_list = (actionlib_msgs::GoalStatus*)realloc(this->status_list, status_list_lengthT * sizeof(actionlib_msgs::GoalStatus)); + status_list_length = status_list_lengthT; + for( uint32_t i = 0; i < status_list_length; i++){ + offset += this->st_status_list.deserialize(inbuffer + offset); + memcpy( &(this->status_list[i]), &(this->st_status_list), sizeof(actionlib_msgs::GoalStatus)); + } + return offset; + } + + const char * getType(){ return "actionlib_msgs/GoalStatusArray"; }; + const char * getMD5(){ return "8b2b82f13216d0a8ea88bd3af735e619"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/actionlib_tutorials/AveragingAction.h b/source/ros-max-lib/ros_lib/actionlib_tutorials/AveragingAction.h new file mode 100644 index 0000000..16eef59 --- /dev/null +++ b/source/ros-max-lib/ros_lib/actionlib_tutorials/AveragingAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_tutorials_AveragingAction_h +#define _ROS_actionlib_tutorials_AveragingAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "actionlib_tutorials/AveragingActionGoal.h" +#include "actionlib_tutorials/AveragingActionResult.h" +#include "actionlib_tutorials/AveragingActionFeedback.h" + +namespace actionlib_tutorials +{ + + class AveragingAction : public ros::Msg + { + public: + typedef actionlib_tutorials::AveragingActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef actionlib_tutorials::AveragingActionResult _action_result_type; + _action_result_type action_result; + typedef actionlib_tutorials::AveragingActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + AveragingAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib_tutorials/AveragingAction"; }; + const char * getMD5(){ return "628678f2b4fa6a5951746a4a2d39e716"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/actionlib_tutorials/AveragingActionFeedback.h b/source/ros-max-lib/ros_lib/actionlib_tutorials/AveragingActionFeedback.h new file mode 100644 index 0000000..e269f39 --- /dev/null +++ b/source/ros-max-lib/ros_lib/actionlib_tutorials/AveragingActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_tutorials_AveragingActionFeedback_h +#define _ROS_actionlib_tutorials_AveragingActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "actionlib_tutorials/AveragingFeedback.h" + +namespace actionlib_tutorials +{ + + class AveragingActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef actionlib_tutorials::AveragingFeedback _feedback_type; + _feedback_type feedback; + + AveragingActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib_tutorials/AveragingActionFeedback"; }; + const char * getMD5(){ return "78a4a09241b1791069223ae7ebd5b16b"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/actionlib_tutorials/AveragingActionGoal.h b/source/ros-max-lib/ros_lib/actionlib_tutorials/AveragingActionGoal.h new file mode 100644 index 0000000..e9f718f --- /dev/null +++ b/source/ros-max-lib/ros_lib/actionlib_tutorials/AveragingActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_tutorials_AveragingActionGoal_h +#define _ROS_actionlib_tutorials_AveragingActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "actionlib_tutorials/AveragingGoal.h" + +namespace actionlib_tutorials +{ + + class AveragingActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef actionlib_tutorials::AveragingGoal _goal_type; + _goal_type goal; + + AveragingActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib_tutorials/AveragingActionGoal"; }; + const char * getMD5(){ return "1561825b734ebd6039851c501e3fb570"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/actionlib_tutorials/AveragingActionResult.h b/source/ros-max-lib/ros_lib/actionlib_tutorials/AveragingActionResult.h new file mode 100644 index 0000000..db99e51 --- /dev/null +++ b/source/ros-max-lib/ros_lib/actionlib_tutorials/AveragingActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_tutorials_AveragingActionResult_h +#define _ROS_actionlib_tutorials_AveragingActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "actionlib_tutorials/AveragingResult.h" + +namespace actionlib_tutorials +{ + + class AveragingActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef actionlib_tutorials::AveragingResult _result_type; + _result_type result; + + AveragingActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib_tutorials/AveragingActionResult"; }; + const char * getMD5(){ return "8672cb489d347580acdcd05c5d497497"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/actionlib_tutorials/AveragingFeedback.h b/source/ros-max-lib/ros_lib/actionlib_tutorials/AveragingFeedback.h new file mode 100644 index 0000000..e71ad1f --- /dev/null +++ b/source/ros-max-lib/ros_lib/actionlib_tutorials/AveragingFeedback.h @@ -0,0 +1,134 @@ +#ifndef _ROS_actionlib_tutorials_AveragingFeedback_h +#define _ROS_actionlib_tutorials_AveragingFeedback_h + +#include +#include +#include +#include "ros/msg.h" + +namespace actionlib_tutorials +{ + + class AveragingFeedback : public ros::Msg + { + public: + typedef int32_t _sample_type; + _sample_type sample; + typedef float _data_type; + _data_type data; + typedef float _mean_type; + _mean_type mean; + typedef float _std_dev_type; + _std_dev_type std_dev; + + AveragingFeedback(): + sample(0), + data(0), + mean(0), + std_dev(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_sample; + u_sample.real = this->sample; + *(outbuffer + offset + 0) = (u_sample.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_sample.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_sample.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_sample.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->sample); + union { + float real; + uint32_t base; + } u_data; + u_data.real = this->data; + *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_data.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_data.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_data.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->data); + union { + float real; + uint32_t base; + } u_mean; + u_mean.real = this->mean; + *(outbuffer + offset + 0) = (u_mean.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_mean.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_mean.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_mean.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->mean); + union { + float real; + uint32_t base; + } u_std_dev; + u_std_dev.real = this->std_dev; + *(outbuffer + offset + 0) = (u_std_dev.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_std_dev.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_std_dev.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_std_dev.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->std_dev); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_sample; + u_sample.base = 0; + u_sample.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_sample.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_sample.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_sample.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->sample = u_sample.real; + offset += sizeof(this->sample); + union { + float real; + uint32_t base; + } u_data; + u_data.base = 0; + u_data.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->data = u_data.real; + offset += sizeof(this->data); + union { + float real; + uint32_t base; + } u_mean; + u_mean.base = 0; + u_mean.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_mean.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_mean.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_mean.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->mean = u_mean.real; + offset += sizeof(this->mean); + union { + float real; + uint32_t base; + } u_std_dev; + u_std_dev.base = 0; + u_std_dev.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_std_dev.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_std_dev.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_std_dev.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->std_dev = u_std_dev.real; + offset += sizeof(this->std_dev); + return offset; + } + + const char * getType(){ return "actionlib_tutorials/AveragingFeedback"; }; + const char * getMD5(){ return "9e8dfc53c2f2a032ca33fa80ec46fd4f"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/actionlib_tutorials/AveragingGoal.h b/source/ros-max-lib/ros_lib/actionlib_tutorials/AveragingGoal.h new file mode 100644 index 0000000..e1cc2ad --- /dev/null +++ b/source/ros-max-lib/ros_lib/actionlib_tutorials/AveragingGoal.h @@ -0,0 +1,62 @@ +#ifndef _ROS_actionlib_tutorials_AveragingGoal_h +#define _ROS_actionlib_tutorials_AveragingGoal_h + +#include +#include +#include +#include "ros/msg.h" + +namespace actionlib_tutorials +{ + + class AveragingGoal : public ros::Msg + { + public: + typedef int32_t _samples_type; + _samples_type samples; + + AveragingGoal(): + samples(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_samples; + u_samples.real = this->samples; + *(outbuffer + offset + 0) = (u_samples.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_samples.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_samples.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_samples.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->samples); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_samples; + u_samples.base = 0; + u_samples.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_samples.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_samples.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_samples.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->samples = u_samples.real; + offset += sizeof(this->samples); + return offset; + } + + const char * getType(){ return "actionlib_tutorials/AveragingGoal"; }; + const char * getMD5(){ return "32c9b10ef9b253faa93b93f564762c8f"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/actionlib_tutorials/AveragingResult.h b/source/ros-max-lib/ros_lib/actionlib_tutorials/AveragingResult.h new file mode 100644 index 0000000..e476e59 --- /dev/null +++ b/source/ros-max-lib/ros_lib/actionlib_tutorials/AveragingResult.h @@ -0,0 +1,86 @@ +#ifndef _ROS_actionlib_tutorials_AveragingResult_h +#define _ROS_actionlib_tutorials_AveragingResult_h + +#include +#include +#include +#include "ros/msg.h" + +namespace actionlib_tutorials +{ + + class AveragingResult : public ros::Msg + { + public: + typedef float _mean_type; + _mean_type mean; + typedef float _std_dev_type; + _std_dev_type std_dev; + + AveragingResult(): + mean(0), + std_dev(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + float real; + uint32_t base; + } u_mean; + u_mean.real = this->mean; + *(outbuffer + offset + 0) = (u_mean.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_mean.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_mean.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_mean.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->mean); + union { + float real; + uint32_t base; + } u_std_dev; + u_std_dev.real = this->std_dev; + *(outbuffer + offset + 0) = (u_std_dev.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_std_dev.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_std_dev.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_std_dev.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->std_dev); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + float real; + uint32_t base; + } u_mean; + u_mean.base = 0; + u_mean.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_mean.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_mean.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_mean.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->mean = u_mean.real; + offset += sizeof(this->mean); + union { + float real; + uint32_t base; + } u_std_dev; + u_std_dev.base = 0; + u_std_dev.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_std_dev.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_std_dev.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_std_dev.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->std_dev = u_std_dev.real; + offset += sizeof(this->std_dev); + return offset; + } + + const char * getType(){ return "actionlib_tutorials/AveragingResult"; }; + const char * getMD5(){ return "d5c7decf6df75ffb4367a05c1bcc7612"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/actionlib_tutorials/FibonacciAction.h b/source/ros-max-lib/ros_lib/actionlib_tutorials/FibonacciAction.h new file mode 100644 index 0000000..2fd1c63 --- /dev/null +++ b/source/ros-max-lib/ros_lib/actionlib_tutorials/FibonacciAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_tutorials_FibonacciAction_h +#define _ROS_actionlib_tutorials_FibonacciAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "actionlib_tutorials/FibonacciActionGoal.h" +#include "actionlib_tutorials/FibonacciActionResult.h" +#include "actionlib_tutorials/FibonacciActionFeedback.h" + +namespace actionlib_tutorials +{ + + class FibonacciAction : public ros::Msg + { + public: + typedef actionlib_tutorials::FibonacciActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef actionlib_tutorials::FibonacciActionResult _action_result_type; + _action_result_type action_result; + typedef actionlib_tutorials::FibonacciActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + FibonacciAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib_tutorials/FibonacciAction"; }; + const char * getMD5(){ return "f59df5767bf7634684781c92598b2406"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/actionlib_tutorials/FibonacciActionFeedback.h b/source/ros-max-lib/ros_lib/actionlib_tutorials/FibonacciActionFeedback.h new file mode 100644 index 0000000..241ebad --- /dev/null +++ b/source/ros-max-lib/ros_lib/actionlib_tutorials/FibonacciActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_tutorials_FibonacciActionFeedback_h +#define _ROS_actionlib_tutorials_FibonacciActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "actionlib_tutorials/FibonacciFeedback.h" + +namespace actionlib_tutorials +{ + + class FibonacciActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef actionlib_tutorials::FibonacciFeedback _feedback_type; + _feedback_type feedback; + + FibonacciActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib_tutorials/FibonacciActionFeedback"; }; + const char * getMD5(){ return "73b8497a9f629a31c0020900e4148f07"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/actionlib_tutorials/FibonacciActionGoal.h b/source/ros-max-lib/ros_lib/actionlib_tutorials/FibonacciActionGoal.h new file mode 100644 index 0000000..dd13617 --- /dev/null +++ b/source/ros-max-lib/ros_lib/actionlib_tutorials/FibonacciActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_tutorials_FibonacciActionGoal_h +#define _ROS_actionlib_tutorials_FibonacciActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "actionlib_tutorials/FibonacciGoal.h" + +namespace actionlib_tutorials +{ + + class FibonacciActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef actionlib_tutorials::FibonacciGoal _goal_type; + _goal_type goal; + + FibonacciActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib_tutorials/FibonacciActionGoal"; }; + const char * getMD5(){ return "006871c7fa1d0e3d5fe2226bf17b2a94"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/actionlib_tutorials/FibonacciActionResult.h b/source/ros-max-lib/ros_lib/actionlib_tutorials/FibonacciActionResult.h new file mode 100644 index 0000000..35c9d48 --- /dev/null +++ b/source/ros-max-lib/ros_lib/actionlib_tutorials/FibonacciActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_actionlib_tutorials_FibonacciActionResult_h +#define _ROS_actionlib_tutorials_FibonacciActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "actionlib_tutorials/FibonacciResult.h" + +namespace actionlib_tutorials +{ + + class FibonacciActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef actionlib_tutorials::FibonacciResult _result_type; + _result_type result; + + FibonacciActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "actionlib_tutorials/FibonacciActionResult"; }; + const char * getMD5(){ return "bee73a9fe29ae25e966e105f5553dd03"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/actionlib_tutorials/FibonacciFeedback.h b/source/ros-max-lib/ros_lib/actionlib_tutorials/FibonacciFeedback.h new file mode 100644 index 0000000..87eaf8f --- /dev/null +++ b/source/ros-max-lib/ros_lib/actionlib_tutorials/FibonacciFeedback.h @@ -0,0 +1,82 @@ +#ifndef _ROS_actionlib_tutorials_FibonacciFeedback_h +#define _ROS_actionlib_tutorials_FibonacciFeedback_h + +#include +#include +#include +#include "ros/msg.h" + +namespace actionlib_tutorials +{ + + class FibonacciFeedback : public ros::Msg + { + public: + uint32_t sequence_length; + typedef int32_t _sequence_type; + _sequence_type st_sequence; + _sequence_type * sequence; + + FibonacciFeedback(): + sequence_length(0), sequence(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->sequence_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->sequence_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->sequence_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->sequence_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->sequence_length); + for( uint32_t i = 0; i < sequence_length; i++){ + union { + int32_t real; + uint32_t base; + } u_sequencei; + u_sequencei.real = this->sequence[i]; + *(outbuffer + offset + 0) = (u_sequencei.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_sequencei.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_sequencei.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_sequencei.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->sequence[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t sequence_lengthT = ((uint32_t) (*(inbuffer + offset))); + sequence_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + sequence_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + sequence_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->sequence_length); + if(sequence_lengthT > sequence_length) + this->sequence = (int32_t*)realloc(this->sequence, sequence_lengthT * sizeof(int32_t)); + sequence_length = sequence_lengthT; + for( uint32_t i = 0; i < sequence_length; i++){ + union { + int32_t real; + uint32_t base; + } u_st_sequence; + u_st_sequence.base = 0; + u_st_sequence.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_sequence.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_sequence.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_sequence.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_sequence = u_st_sequence.real; + offset += sizeof(this->st_sequence); + memcpy( &(this->sequence[i]), &(this->st_sequence), sizeof(int32_t)); + } + return offset; + } + + const char * getType(){ return "actionlib_tutorials/FibonacciFeedback"; }; + const char * getMD5(){ return "b81e37d2a31925a0e8ae261a8699cb79"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/actionlib_tutorials/FibonacciGoal.h b/source/ros-max-lib/ros_lib/actionlib_tutorials/FibonacciGoal.h new file mode 100644 index 0000000..e711de1 --- /dev/null +++ b/source/ros-max-lib/ros_lib/actionlib_tutorials/FibonacciGoal.h @@ -0,0 +1,62 @@ +#ifndef _ROS_actionlib_tutorials_FibonacciGoal_h +#define _ROS_actionlib_tutorials_FibonacciGoal_h + +#include +#include +#include +#include "ros/msg.h" + +namespace actionlib_tutorials +{ + + class FibonacciGoal : public ros::Msg + { + public: + typedef int32_t _order_type; + _order_type order; + + FibonacciGoal(): + order(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_order; + u_order.real = this->order; + *(outbuffer + offset + 0) = (u_order.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_order.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_order.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_order.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->order); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_order; + u_order.base = 0; + u_order.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_order.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_order.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_order.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->order = u_order.real; + offset += sizeof(this->order); + return offset; + } + + const char * getType(){ return "actionlib_tutorials/FibonacciGoal"; }; + const char * getMD5(){ return "6889063349a00b249bd1661df429d822"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/actionlib_tutorials/FibonacciResult.h b/source/ros-max-lib/ros_lib/actionlib_tutorials/FibonacciResult.h new file mode 100644 index 0000000..dc71023 --- /dev/null +++ b/source/ros-max-lib/ros_lib/actionlib_tutorials/FibonacciResult.h @@ -0,0 +1,82 @@ +#ifndef _ROS_actionlib_tutorials_FibonacciResult_h +#define _ROS_actionlib_tutorials_FibonacciResult_h + +#include +#include +#include +#include "ros/msg.h" + +namespace actionlib_tutorials +{ + + class FibonacciResult : public ros::Msg + { + public: + uint32_t sequence_length; + typedef int32_t _sequence_type; + _sequence_type st_sequence; + _sequence_type * sequence; + + FibonacciResult(): + sequence_length(0), sequence(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->sequence_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->sequence_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->sequence_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->sequence_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->sequence_length); + for( uint32_t i = 0; i < sequence_length; i++){ + union { + int32_t real; + uint32_t base; + } u_sequencei; + u_sequencei.real = this->sequence[i]; + *(outbuffer + offset + 0) = (u_sequencei.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_sequencei.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_sequencei.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_sequencei.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->sequence[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t sequence_lengthT = ((uint32_t) (*(inbuffer + offset))); + sequence_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + sequence_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + sequence_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->sequence_length); + if(sequence_lengthT > sequence_length) + this->sequence = (int32_t*)realloc(this->sequence, sequence_lengthT * sizeof(int32_t)); + sequence_length = sequence_lengthT; + for( uint32_t i = 0; i < sequence_length; i++){ + union { + int32_t real; + uint32_t base; + } u_st_sequence; + u_st_sequence.base = 0; + u_st_sequence.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_sequence.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_sequence.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_sequence.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_sequence = u_st_sequence.real; + offset += sizeof(this->st_sequence); + memcpy( &(this->sequence[i]), &(this->st_sequence), sizeof(int32_t)); + } + return offset; + } + + const char * getType(){ return "actionlib_tutorials/FibonacciResult"; }; + const char * getMD5(){ return "b81e37d2a31925a0e8ae261a8699cb79"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/base_local_planner/Position2DInt.h b/source/ros-max-lib/ros_lib/base_local_planner/Position2DInt.h new file mode 100644 index 0000000..79beed2 --- /dev/null +++ b/source/ros-max-lib/ros_lib/base_local_planner/Position2DInt.h @@ -0,0 +1,102 @@ +#ifndef _ROS_base_local_planner_Position2DInt_h +#define _ROS_base_local_planner_Position2DInt_h + +#include +#include +#include +#include "ros/msg.h" + +namespace base_local_planner +{ + + class Position2DInt : public ros::Msg + { + public: + typedef int64_t _x_type; + _x_type x; + typedef int64_t _y_type; + _y_type y; + + Position2DInt(): + x(0), + y(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_x; + u_x.real = this->x; + *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_x.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_x.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_x.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_x.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->x); + union { + int64_t real; + uint64_t base; + } u_y; + u_y.real = this->y; + *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_y.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_y.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_y.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_y.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->y); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_x; + u_x.base = 0; + u_x.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->x = u_x.real; + offset += sizeof(this->x); + union { + int64_t real; + uint64_t base; + } u_y; + u_y.base = 0; + u_y.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->y = u_y.real; + offset += sizeof(this->y); + return offset; + } + + const char * getType(){ return "base_local_planner/Position2DInt"; }; + const char * getMD5(){ return "3b834ede922a0fff22c43585c533b49f"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/bond/Constants.h b/source/ros-max-lib/ros_lib/bond/Constants.h new file mode 100644 index 0000000..9594342 --- /dev/null +++ b/source/ros-max-lib/ros_lib/bond/Constants.h @@ -0,0 +1,44 @@ +#ifndef _ROS_bond_Constants_h +#define _ROS_bond_Constants_h + +#include +#include +#include +#include "ros/msg.h" + +namespace bond +{ + + class Constants : public ros::Msg + { + public: + enum { DEAD_PUBLISH_PERIOD = 0.05 }; + enum { DEFAULT_CONNECT_TIMEOUT = 10.0 }; + enum { DEFAULT_HEARTBEAT_TIMEOUT = 4.0 }; + enum { DEFAULT_DISCONNECT_TIMEOUT = 2.0 }; + enum { DEFAULT_HEARTBEAT_PERIOD = 1.0 }; + enum { DISABLE_HEARTBEAT_TIMEOUT_PARAM = /bond_disable_heartbeat_timeout }; + + Constants() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "bond/Constants"; }; + const char * getMD5(){ return "6fc594dc1d7bd7919077042712f8c8b0"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/bond/Status.h b/source/ros-max-lib/ros_lib/bond/Status.h new file mode 100644 index 0000000..b9fa9a5 --- /dev/null +++ b/source/ros-max-lib/ros_lib/bond/Status.h @@ -0,0 +1,144 @@ +#ifndef _ROS_bond_Status_h +#define _ROS_bond_Status_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace bond +{ + + class Status : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef const char* _id_type; + _id_type id; + typedef const char* _instance_id_type; + _instance_id_type instance_id; + typedef bool _active_type; + _active_type active; + typedef float _heartbeat_timeout_type; + _heartbeat_timeout_type heartbeat_timeout; + typedef float _heartbeat_period_type; + _heartbeat_period_type heartbeat_period; + + Status(): + header(), + id(""), + instance_id(""), + active(0), + heartbeat_timeout(0), + heartbeat_period(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + uint32_t length_id = strlen(this->id); + varToArr(outbuffer + offset, length_id); + offset += 4; + memcpy(outbuffer + offset, this->id, length_id); + offset += length_id; + uint32_t length_instance_id = strlen(this->instance_id); + varToArr(outbuffer + offset, length_instance_id); + offset += 4; + memcpy(outbuffer + offset, this->instance_id, length_instance_id); + offset += length_instance_id; + union { + bool real; + uint8_t base; + } u_active; + u_active.real = this->active; + *(outbuffer + offset + 0) = (u_active.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->active); + union { + float real; + uint32_t base; + } u_heartbeat_timeout; + u_heartbeat_timeout.real = this->heartbeat_timeout; + *(outbuffer + offset + 0) = (u_heartbeat_timeout.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_heartbeat_timeout.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_heartbeat_timeout.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_heartbeat_timeout.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->heartbeat_timeout); + union { + float real; + uint32_t base; + } u_heartbeat_period; + u_heartbeat_period.real = this->heartbeat_period; + *(outbuffer + offset + 0) = (u_heartbeat_period.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_heartbeat_period.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_heartbeat_period.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_heartbeat_period.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->heartbeat_period); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t length_id; + arrToVar(length_id, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_id; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_id-1]=0; + this->id = (char *)(inbuffer + offset-1); + offset += length_id; + uint32_t length_instance_id; + arrToVar(length_instance_id, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_instance_id; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_instance_id-1]=0; + this->instance_id = (char *)(inbuffer + offset-1); + offset += length_instance_id; + union { + bool real; + uint8_t base; + } u_active; + u_active.base = 0; + u_active.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->active = u_active.real; + offset += sizeof(this->active); + union { + float real; + uint32_t base; + } u_heartbeat_timeout; + u_heartbeat_timeout.base = 0; + u_heartbeat_timeout.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_heartbeat_timeout.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_heartbeat_timeout.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_heartbeat_timeout.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->heartbeat_timeout = u_heartbeat_timeout.real; + offset += sizeof(this->heartbeat_timeout); + union { + float real; + uint32_t base; + } u_heartbeat_period; + u_heartbeat_period.base = 0; + u_heartbeat_period.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_heartbeat_period.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_heartbeat_period.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_heartbeat_period.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->heartbeat_period = u_heartbeat_period.real; + offset += sizeof(this->heartbeat_period); + return offset; + } + + const char * getType(){ return "bond/Status"; }; + const char * getMD5(){ return "eacc84bf5d65b6777d4c50f463dfb9c8"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/control_msgs/FollowJointTrajectoryAction.h b/source/ros-max-lib/ros_lib/control_msgs/FollowJointTrajectoryAction.h new file mode 100644 index 0000000..ec67771 --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_msgs/FollowJointTrajectoryAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_FollowJointTrajectoryAction_h +#define _ROS_control_msgs_FollowJointTrajectoryAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "control_msgs/FollowJointTrajectoryActionGoal.h" +#include "control_msgs/FollowJointTrajectoryActionResult.h" +#include "control_msgs/FollowJointTrajectoryActionFeedback.h" + +namespace control_msgs +{ + + class FollowJointTrajectoryAction : public ros::Msg + { + public: + typedef control_msgs::FollowJointTrajectoryActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef control_msgs::FollowJointTrajectoryActionResult _action_result_type; + _action_result_type action_result; + typedef control_msgs::FollowJointTrajectoryActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + FollowJointTrajectoryAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/FollowJointTrajectoryAction"; }; + const char * getMD5(){ return "bc4f9b743838566551c0390c65f1a248"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/control_msgs/FollowJointTrajectoryActionFeedback.h b/source/ros-max-lib/ros_lib/control_msgs/FollowJointTrajectoryActionFeedback.h new file mode 100644 index 0000000..d5d037a --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_msgs/FollowJointTrajectoryActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_FollowJointTrajectoryActionFeedback_h +#define _ROS_control_msgs_FollowJointTrajectoryActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "control_msgs/FollowJointTrajectoryFeedback.h" + +namespace control_msgs +{ + + class FollowJointTrajectoryActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef control_msgs::FollowJointTrajectoryFeedback _feedback_type; + _feedback_type feedback; + + FollowJointTrajectoryActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/FollowJointTrajectoryActionFeedback"; }; + const char * getMD5(){ return "d8920dc4eae9fc107e00999cce4be641"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/control_msgs/FollowJointTrajectoryActionGoal.h b/source/ros-max-lib/ros_lib/control_msgs/FollowJointTrajectoryActionGoal.h new file mode 100644 index 0000000..4aa00c6 --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_msgs/FollowJointTrajectoryActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_FollowJointTrajectoryActionGoal_h +#define _ROS_control_msgs_FollowJointTrajectoryActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "control_msgs/FollowJointTrajectoryGoal.h" + +namespace control_msgs +{ + + class FollowJointTrajectoryActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef control_msgs::FollowJointTrajectoryGoal _goal_type; + _goal_type goal; + + FollowJointTrajectoryActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/FollowJointTrajectoryActionGoal"; }; + const char * getMD5(){ return "cff5c1d533bf2f82dd0138d57f4304bb"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/control_msgs/FollowJointTrajectoryActionResult.h b/source/ros-max-lib/ros_lib/control_msgs/FollowJointTrajectoryActionResult.h new file mode 100644 index 0000000..aa6b2b3 --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_msgs/FollowJointTrajectoryActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_FollowJointTrajectoryActionResult_h +#define _ROS_control_msgs_FollowJointTrajectoryActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "control_msgs/FollowJointTrajectoryResult.h" + +namespace control_msgs +{ + + class FollowJointTrajectoryActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef control_msgs::FollowJointTrajectoryResult _result_type; + _result_type result; + + FollowJointTrajectoryActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/FollowJointTrajectoryActionResult"; }; + const char * getMD5(){ return "c4fb3b000dc9da4fd99699380efcc5d9"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/control_msgs/FollowJointTrajectoryFeedback.h b/source/ros-max-lib/ros_lib/control_msgs/FollowJointTrajectoryFeedback.h new file mode 100644 index 0000000..6f27ecc --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_msgs/FollowJointTrajectoryFeedback.h @@ -0,0 +1,97 @@ +#ifndef _ROS_control_msgs_FollowJointTrajectoryFeedback_h +#define _ROS_control_msgs_FollowJointTrajectoryFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "trajectory_msgs/JointTrajectoryPoint.h" + +namespace control_msgs +{ + + class FollowJointTrajectoryFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t joint_names_length; + typedef char* _joint_names_type; + _joint_names_type st_joint_names; + _joint_names_type * joint_names; + typedef trajectory_msgs::JointTrajectoryPoint _desired_type; + _desired_type desired; + typedef trajectory_msgs::JointTrajectoryPoint _actual_type; + _actual_type actual; + typedef trajectory_msgs::JointTrajectoryPoint _error_type; + _error_type error; + + FollowJointTrajectoryFeedback(): + header(), + joint_names_length(0), joint_names(NULL), + desired(), + actual(), + error() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->joint_names_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->joint_names_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->joint_names_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->joint_names_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->joint_names_length); + for( uint32_t i = 0; i < joint_names_length; i++){ + uint32_t length_joint_namesi = strlen(this->joint_names[i]); + varToArr(outbuffer + offset, length_joint_namesi); + offset += 4; + memcpy(outbuffer + offset, this->joint_names[i], length_joint_namesi); + offset += length_joint_namesi; + } + offset += this->desired.serialize(outbuffer + offset); + offset += this->actual.serialize(outbuffer + offset); + offset += this->error.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t joint_names_lengthT = ((uint32_t) (*(inbuffer + offset))); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->joint_names_length); + if(joint_names_lengthT > joint_names_length) + this->joint_names = (char**)realloc(this->joint_names, joint_names_lengthT * sizeof(char*)); + joint_names_length = joint_names_lengthT; + for( uint32_t i = 0; i < joint_names_length; i++){ + uint32_t length_st_joint_names; + arrToVar(length_st_joint_names, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_joint_names; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_joint_names-1]=0; + this->st_joint_names = (char *)(inbuffer + offset-1); + offset += length_st_joint_names; + memcpy( &(this->joint_names[i]), &(this->st_joint_names), sizeof(char*)); + } + offset += this->desired.deserialize(inbuffer + offset); + offset += this->actual.deserialize(inbuffer + offset); + offset += this->error.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/FollowJointTrajectoryFeedback"; }; + const char * getMD5(){ return "10817c60c2486ef6b33e97dcd87f4474"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/control_msgs/FollowJointTrajectoryGoal.h b/source/ros-max-lib/ros_lib/control_msgs/FollowJointTrajectoryGoal.h new file mode 100644 index 0000000..1185615 --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_msgs/FollowJointTrajectoryGoal.h @@ -0,0 +1,119 @@ +#ifndef _ROS_control_msgs_FollowJointTrajectoryGoal_h +#define _ROS_control_msgs_FollowJointTrajectoryGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "trajectory_msgs/JointTrajectory.h" +#include "control_msgs/JointTolerance.h" +#include "ros/duration.h" + +namespace control_msgs +{ + + class FollowJointTrajectoryGoal : public ros::Msg + { + public: + typedef trajectory_msgs::JointTrajectory _trajectory_type; + _trajectory_type trajectory; + uint32_t path_tolerance_length; + typedef control_msgs::JointTolerance _path_tolerance_type; + _path_tolerance_type st_path_tolerance; + _path_tolerance_type * path_tolerance; + uint32_t goal_tolerance_length; + typedef control_msgs::JointTolerance _goal_tolerance_type; + _goal_tolerance_type st_goal_tolerance; + _goal_tolerance_type * goal_tolerance; + typedef ros::Duration _goal_time_tolerance_type; + _goal_time_tolerance_type goal_time_tolerance; + + FollowJointTrajectoryGoal(): + trajectory(), + path_tolerance_length(0), path_tolerance(NULL), + goal_tolerance_length(0), goal_tolerance(NULL), + goal_time_tolerance() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->trajectory.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->path_tolerance_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->path_tolerance_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->path_tolerance_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->path_tolerance_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->path_tolerance_length); + for( uint32_t i = 0; i < path_tolerance_length; i++){ + offset += this->path_tolerance[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->goal_tolerance_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->goal_tolerance_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->goal_tolerance_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->goal_tolerance_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->goal_tolerance_length); + for( uint32_t i = 0; i < goal_tolerance_length; i++){ + offset += this->goal_tolerance[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->goal_time_tolerance.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->goal_time_tolerance.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->goal_time_tolerance.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->goal_time_tolerance.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->goal_time_tolerance.sec); + *(outbuffer + offset + 0) = (this->goal_time_tolerance.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->goal_time_tolerance.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->goal_time_tolerance.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->goal_time_tolerance.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->goal_time_tolerance.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->trajectory.deserialize(inbuffer + offset); + uint32_t path_tolerance_lengthT = ((uint32_t) (*(inbuffer + offset))); + path_tolerance_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + path_tolerance_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + path_tolerance_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->path_tolerance_length); + if(path_tolerance_lengthT > path_tolerance_length) + this->path_tolerance = (control_msgs::JointTolerance*)realloc(this->path_tolerance, path_tolerance_lengthT * sizeof(control_msgs::JointTolerance)); + path_tolerance_length = path_tolerance_lengthT; + for( uint32_t i = 0; i < path_tolerance_length; i++){ + offset += this->st_path_tolerance.deserialize(inbuffer + offset); + memcpy( &(this->path_tolerance[i]), &(this->st_path_tolerance), sizeof(control_msgs::JointTolerance)); + } + uint32_t goal_tolerance_lengthT = ((uint32_t) (*(inbuffer + offset))); + goal_tolerance_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + goal_tolerance_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + goal_tolerance_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->goal_tolerance_length); + if(goal_tolerance_lengthT > goal_tolerance_length) + this->goal_tolerance = (control_msgs::JointTolerance*)realloc(this->goal_tolerance, goal_tolerance_lengthT * sizeof(control_msgs::JointTolerance)); + goal_tolerance_length = goal_tolerance_lengthT; + for( uint32_t i = 0; i < goal_tolerance_length; i++){ + offset += this->st_goal_tolerance.deserialize(inbuffer + offset); + memcpy( &(this->goal_tolerance[i]), &(this->st_goal_tolerance), sizeof(control_msgs::JointTolerance)); + } + this->goal_time_tolerance.sec = ((uint32_t) (*(inbuffer + offset))); + this->goal_time_tolerance.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->goal_time_tolerance.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->goal_time_tolerance.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->goal_time_tolerance.sec); + this->goal_time_tolerance.nsec = ((uint32_t) (*(inbuffer + offset))); + this->goal_time_tolerance.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->goal_time_tolerance.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->goal_time_tolerance.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->goal_time_tolerance.nsec); + return offset; + } + + const char * getType(){ return "control_msgs/FollowJointTrajectoryGoal"; }; + const char * getMD5(){ return "69636787b6ecbde4d61d711979bc7ecb"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/control_msgs/FollowJointTrajectoryResult.h b/source/ros-max-lib/ros_lib/control_msgs/FollowJointTrajectoryResult.h new file mode 100644 index 0000000..819f272 --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_msgs/FollowJointTrajectoryResult.h @@ -0,0 +1,85 @@ +#ifndef _ROS_control_msgs_FollowJointTrajectoryResult_h +#define _ROS_control_msgs_FollowJointTrajectoryResult_h + +#include +#include +#include +#include "ros/msg.h" + +namespace control_msgs +{ + + class FollowJointTrajectoryResult : public ros::Msg + { + public: + typedef int32_t _error_code_type; + _error_code_type error_code; + typedef const char* _error_string_type; + _error_string_type error_string; + enum { SUCCESSFUL = 0 }; + enum { INVALID_GOAL = -1 }; + enum { INVALID_JOINTS = -2 }; + enum { OLD_HEADER_TIMESTAMP = -3 }; + enum { PATH_TOLERANCE_VIOLATED = -4 }; + enum { GOAL_TOLERANCE_VIOLATED = -5 }; + + FollowJointTrajectoryResult(): + error_code(0), + error_string("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_error_code; + u_error_code.real = this->error_code; + *(outbuffer + offset + 0) = (u_error_code.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_error_code.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_error_code.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_error_code.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->error_code); + uint32_t length_error_string = strlen(this->error_string); + varToArr(outbuffer + offset, length_error_string); + offset += 4; + memcpy(outbuffer + offset, this->error_string, length_error_string); + offset += length_error_string; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_error_code; + u_error_code.base = 0; + u_error_code.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_error_code.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_error_code.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_error_code.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->error_code = u_error_code.real; + offset += sizeof(this->error_code); + uint32_t length_error_string; + arrToVar(length_error_string, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_error_string; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_error_string-1]=0; + this->error_string = (char *)(inbuffer + offset-1); + offset += length_error_string; + return offset; + } + + const char * getType(){ return "control_msgs/FollowJointTrajectoryResult"; }; + const char * getMD5(){ return "493383b18409bfb604b4e26c676401d2"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/control_msgs/GripperCommand.h b/source/ros-max-lib/ros_lib/control_msgs/GripperCommand.h new file mode 100644 index 0000000..0b37e5c --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_msgs/GripperCommand.h @@ -0,0 +1,102 @@ +#ifndef _ROS_control_msgs_GripperCommand_h +#define _ROS_control_msgs_GripperCommand_h + +#include +#include +#include +#include "ros/msg.h" + +namespace control_msgs +{ + + class GripperCommand : public ros::Msg + { + public: + typedef double _position_type; + _position_type position; + typedef double _max_effort_type; + _max_effort_type max_effort; + + GripperCommand(): + position(0), + max_effort(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_position; + u_position.real = this->position; + *(outbuffer + offset + 0) = (u_position.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_position.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_position.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_position.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_position.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_position.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_position.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_position.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->position); + union { + double real; + uint64_t base; + } u_max_effort; + u_max_effort.real = this->max_effort; + *(outbuffer + offset + 0) = (u_max_effort.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_max_effort.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_max_effort.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_max_effort.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_max_effort.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_max_effort.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_max_effort.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_max_effort.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->max_effort); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_position; + u_position.base = 0; + u_position.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->position = u_position.real; + offset += sizeof(this->position); + union { + double real; + uint64_t base; + } u_max_effort; + u_max_effort.base = 0; + u_max_effort.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_max_effort.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_max_effort.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_max_effort.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_max_effort.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_max_effort.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_max_effort.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_max_effort.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->max_effort = u_max_effort.real; + offset += sizeof(this->max_effort); + return offset; + } + + const char * getType(){ return "control_msgs/GripperCommand"; }; + const char * getMD5(){ return "680acaff79486f017132a7f198d40f08"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/control_msgs/GripperCommandAction.h b/source/ros-max-lib/ros_lib/control_msgs/GripperCommandAction.h new file mode 100644 index 0000000..68d8356 --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_msgs/GripperCommandAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_GripperCommandAction_h +#define _ROS_control_msgs_GripperCommandAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "control_msgs/GripperCommandActionGoal.h" +#include "control_msgs/GripperCommandActionResult.h" +#include "control_msgs/GripperCommandActionFeedback.h" + +namespace control_msgs +{ + + class GripperCommandAction : public ros::Msg + { + public: + typedef control_msgs::GripperCommandActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef control_msgs::GripperCommandActionResult _action_result_type; + _action_result_type action_result; + typedef control_msgs::GripperCommandActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + GripperCommandAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/GripperCommandAction"; }; + const char * getMD5(){ return "950b2a6ebe831f5d4f4ceaba3d8be01e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/control_msgs/GripperCommandActionFeedback.h b/source/ros-max-lib/ros_lib/control_msgs/GripperCommandActionFeedback.h new file mode 100644 index 0000000..67f99c9 --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_msgs/GripperCommandActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_GripperCommandActionFeedback_h +#define _ROS_control_msgs_GripperCommandActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "control_msgs/GripperCommandFeedback.h" + +namespace control_msgs +{ + + class GripperCommandActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef control_msgs::GripperCommandFeedback _feedback_type; + _feedback_type feedback; + + GripperCommandActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/GripperCommandActionFeedback"; }; + const char * getMD5(){ return "653dff30c045f5e6ff3feb3409f4558d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/control_msgs/GripperCommandActionGoal.h b/source/ros-max-lib/ros_lib/control_msgs/GripperCommandActionGoal.h new file mode 100644 index 0000000..efb19d1 --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_msgs/GripperCommandActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_GripperCommandActionGoal_h +#define _ROS_control_msgs_GripperCommandActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "control_msgs/GripperCommandGoal.h" + +namespace control_msgs +{ + + class GripperCommandActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef control_msgs::GripperCommandGoal _goal_type; + _goal_type goal; + + GripperCommandActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/GripperCommandActionGoal"; }; + const char * getMD5(){ return "aa581f648a35ed681db2ec0bf7a82bea"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/control_msgs/GripperCommandActionResult.h b/source/ros-max-lib/ros_lib/control_msgs/GripperCommandActionResult.h new file mode 100644 index 0000000..704f18d --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_msgs/GripperCommandActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_GripperCommandActionResult_h +#define _ROS_control_msgs_GripperCommandActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "control_msgs/GripperCommandResult.h" + +namespace control_msgs +{ + + class GripperCommandActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef control_msgs::GripperCommandResult _result_type; + _result_type result; + + GripperCommandActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/GripperCommandActionResult"; }; + const char * getMD5(){ return "143702cb2df0f163c5283cedc5efc6b6"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/control_msgs/GripperCommandFeedback.h b/source/ros-max-lib/ros_lib/control_msgs/GripperCommandFeedback.h new file mode 100644 index 0000000..15d0397 --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_msgs/GripperCommandFeedback.h @@ -0,0 +1,138 @@ +#ifndef _ROS_control_msgs_GripperCommandFeedback_h +#define _ROS_control_msgs_GripperCommandFeedback_h + +#include +#include +#include +#include "ros/msg.h" + +namespace control_msgs +{ + + class GripperCommandFeedback : public ros::Msg + { + public: + typedef double _position_type; + _position_type position; + typedef double _effort_type; + _effort_type effort; + typedef bool _stalled_type; + _stalled_type stalled; + typedef bool _reached_goal_type; + _reached_goal_type reached_goal; + + GripperCommandFeedback(): + position(0), + effort(0), + stalled(0), + reached_goal(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_position; + u_position.real = this->position; + *(outbuffer + offset + 0) = (u_position.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_position.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_position.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_position.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_position.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_position.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_position.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_position.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->position); + union { + double real; + uint64_t base; + } u_effort; + u_effort.real = this->effort; + *(outbuffer + offset + 0) = (u_effort.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_effort.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_effort.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_effort.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_effort.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_effort.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_effort.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_effort.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->effort); + union { + bool real; + uint8_t base; + } u_stalled; + u_stalled.real = this->stalled; + *(outbuffer + offset + 0) = (u_stalled.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->stalled); + union { + bool real; + uint8_t base; + } u_reached_goal; + u_reached_goal.real = this->reached_goal; + *(outbuffer + offset + 0) = (u_reached_goal.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->reached_goal); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_position; + u_position.base = 0; + u_position.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->position = u_position.real; + offset += sizeof(this->position); + union { + double real; + uint64_t base; + } u_effort; + u_effort.base = 0; + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->effort = u_effort.real; + offset += sizeof(this->effort); + union { + bool real; + uint8_t base; + } u_stalled; + u_stalled.base = 0; + u_stalled.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->stalled = u_stalled.real; + offset += sizeof(this->stalled); + union { + bool real; + uint8_t base; + } u_reached_goal; + u_reached_goal.base = 0; + u_reached_goal.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->reached_goal = u_reached_goal.real; + offset += sizeof(this->reached_goal); + return offset; + } + + const char * getType(){ return "control_msgs/GripperCommandFeedback"; }; + const char * getMD5(){ return "e4cbff56d3562bcf113da5a5adeef91f"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/control_msgs/GripperCommandGoal.h b/source/ros-max-lib/ros_lib/control_msgs/GripperCommandGoal.h new file mode 100644 index 0000000..544a864 --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_msgs/GripperCommandGoal.h @@ -0,0 +1,44 @@ +#ifndef _ROS_control_msgs_GripperCommandGoal_h +#define _ROS_control_msgs_GripperCommandGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "control_msgs/GripperCommand.h" + +namespace control_msgs +{ + + class GripperCommandGoal : public ros::Msg + { + public: + typedef control_msgs::GripperCommand _command_type; + _command_type command; + + GripperCommandGoal(): + command() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->command.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->command.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/GripperCommandGoal"; }; + const char * getMD5(){ return "86fd82f4ddc48a4cb6856cfa69217e43"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/control_msgs/GripperCommandResult.h b/source/ros-max-lib/ros_lib/control_msgs/GripperCommandResult.h new file mode 100644 index 0000000..e28b260 --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_msgs/GripperCommandResult.h @@ -0,0 +1,138 @@ +#ifndef _ROS_control_msgs_GripperCommandResult_h +#define _ROS_control_msgs_GripperCommandResult_h + +#include +#include +#include +#include "ros/msg.h" + +namespace control_msgs +{ + + class GripperCommandResult : public ros::Msg + { + public: + typedef double _position_type; + _position_type position; + typedef double _effort_type; + _effort_type effort; + typedef bool _stalled_type; + _stalled_type stalled; + typedef bool _reached_goal_type; + _reached_goal_type reached_goal; + + GripperCommandResult(): + position(0), + effort(0), + stalled(0), + reached_goal(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_position; + u_position.real = this->position; + *(outbuffer + offset + 0) = (u_position.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_position.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_position.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_position.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_position.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_position.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_position.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_position.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->position); + union { + double real; + uint64_t base; + } u_effort; + u_effort.real = this->effort; + *(outbuffer + offset + 0) = (u_effort.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_effort.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_effort.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_effort.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_effort.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_effort.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_effort.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_effort.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->effort); + union { + bool real; + uint8_t base; + } u_stalled; + u_stalled.real = this->stalled; + *(outbuffer + offset + 0) = (u_stalled.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->stalled); + union { + bool real; + uint8_t base; + } u_reached_goal; + u_reached_goal.real = this->reached_goal; + *(outbuffer + offset + 0) = (u_reached_goal.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->reached_goal); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_position; + u_position.base = 0; + u_position.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->position = u_position.real; + offset += sizeof(this->position); + union { + double real; + uint64_t base; + } u_effort; + u_effort.base = 0; + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->effort = u_effort.real; + offset += sizeof(this->effort); + union { + bool real; + uint8_t base; + } u_stalled; + u_stalled.base = 0; + u_stalled.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->stalled = u_stalled.real; + offset += sizeof(this->stalled); + union { + bool real; + uint8_t base; + } u_reached_goal; + u_reached_goal.base = 0; + u_reached_goal.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->reached_goal = u_reached_goal.real; + offset += sizeof(this->reached_goal); + return offset; + } + + const char * getType(){ return "control_msgs/GripperCommandResult"; }; + const char * getMD5(){ return "e4cbff56d3562bcf113da5a5adeef91f"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/control_msgs/JointControllerState.h b/source/ros-max-lib/ros_lib/control_msgs/JointControllerState.h new file mode 100644 index 0000000..b70ef6d --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_msgs/JointControllerState.h @@ -0,0 +1,382 @@ +#ifndef _ROS_control_msgs_JointControllerState_h +#define _ROS_control_msgs_JointControllerState_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace control_msgs +{ + + class JointControllerState : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef double _set_point_type; + _set_point_type set_point; + typedef double _process_value_type; + _process_value_type process_value; + typedef double _process_value_dot_type; + _process_value_dot_type process_value_dot; + typedef double _error_type; + _error_type error; + typedef double _time_step_type; + _time_step_type time_step; + typedef double _command_type; + _command_type command; + typedef double _p_type; + _p_type p; + typedef double _i_type; + _i_type i; + typedef double _d_type; + _d_type d; + typedef double _i_clamp_type; + _i_clamp_type i_clamp; + typedef bool _antiwindup_type; + _antiwindup_type antiwindup; + + JointControllerState(): + header(), + set_point(0), + process_value(0), + process_value_dot(0), + error(0), + time_step(0), + command(0), + p(0), + i(0), + d(0), + i_clamp(0), + antiwindup(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + union { + double real; + uint64_t base; + } u_set_point; + u_set_point.real = this->set_point; + *(outbuffer + offset + 0) = (u_set_point.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_set_point.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_set_point.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_set_point.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_set_point.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_set_point.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_set_point.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_set_point.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->set_point); + union { + double real; + uint64_t base; + } u_process_value; + u_process_value.real = this->process_value; + *(outbuffer + offset + 0) = (u_process_value.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_process_value.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_process_value.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_process_value.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_process_value.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_process_value.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_process_value.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_process_value.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->process_value); + union { + double real; + uint64_t base; + } u_process_value_dot; + u_process_value_dot.real = this->process_value_dot; + *(outbuffer + offset + 0) = (u_process_value_dot.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_process_value_dot.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_process_value_dot.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_process_value_dot.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_process_value_dot.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_process_value_dot.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_process_value_dot.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_process_value_dot.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->process_value_dot); + union { + double real; + uint64_t base; + } u_error; + u_error.real = this->error; + *(outbuffer + offset + 0) = (u_error.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_error.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_error.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_error.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_error.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_error.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_error.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_error.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->error); + union { + double real; + uint64_t base; + } u_time_step; + u_time_step.real = this->time_step; + *(outbuffer + offset + 0) = (u_time_step.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_time_step.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_time_step.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_time_step.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_time_step.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_time_step.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_time_step.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_time_step.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->time_step); + union { + double real; + uint64_t base; + } u_command; + u_command.real = this->command; + *(outbuffer + offset + 0) = (u_command.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_command.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_command.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_command.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_command.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_command.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_command.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_command.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->command); + union { + double real; + uint64_t base; + } u_p; + u_p.real = this->p; + *(outbuffer + offset + 0) = (u_p.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_p.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_p.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_p.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_p.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_p.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_p.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_p.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->p); + union { + double real; + uint64_t base; + } u_i; + u_i.real = this->i; + *(outbuffer + offset + 0) = (u_i.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_i.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_i.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_i.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_i.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_i.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_i.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_i.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->i); + union { + double real; + uint64_t base; + } u_d; + u_d.real = this->d; + *(outbuffer + offset + 0) = (u_d.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_d.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_d.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_d.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_d.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_d.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_d.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_d.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->d); + union { + double real; + uint64_t base; + } u_i_clamp; + u_i_clamp.real = this->i_clamp; + *(outbuffer + offset + 0) = (u_i_clamp.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_i_clamp.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_i_clamp.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_i_clamp.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_i_clamp.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_i_clamp.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_i_clamp.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_i_clamp.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->i_clamp); + union { + bool real; + uint8_t base; + } u_antiwindup; + u_antiwindup.real = this->antiwindup; + *(outbuffer + offset + 0) = (u_antiwindup.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->antiwindup); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + union { + double real; + uint64_t base; + } u_set_point; + u_set_point.base = 0; + u_set_point.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_set_point.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_set_point.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_set_point.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_set_point.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_set_point.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_set_point.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_set_point.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->set_point = u_set_point.real; + offset += sizeof(this->set_point); + union { + double real; + uint64_t base; + } u_process_value; + u_process_value.base = 0; + u_process_value.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_process_value.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_process_value.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_process_value.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_process_value.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_process_value.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_process_value.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_process_value.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->process_value = u_process_value.real; + offset += sizeof(this->process_value); + union { + double real; + uint64_t base; + } u_process_value_dot; + u_process_value_dot.base = 0; + u_process_value_dot.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_process_value_dot.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_process_value_dot.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_process_value_dot.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_process_value_dot.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_process_value_dot.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_process_value_dot.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_process_value_dot.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->process_value_dot = u_process_value_dot.real; + offset += sizeof(this->process_value_dot); + union { + double real; + uint64_t base; + } u_error; + u_error.base = 0; + u_error.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->error = u_error.real; + offset += sizeof(this->error); + union { + double real; + uint64_t base; + } u_time_step; + u_time_step.base = 0; + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->time_step = u_time_step.real; + offset += sizeof(this->time_step); + union { + double real; + uint64_t base; + } u_command; + u_command.base = 0; + u_command.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_command.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_command.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_command.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_command.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_command.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_command.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_command.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->command = u_command.real; + offset += sizeof(this->command); + union { + double real; + uint64_t base; + } u_p; + u_p.base = 0; + u_p.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_p.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_p.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_p.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_p.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_p.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_p.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_p.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->p = u_p.real; + offset += sizeof(this->p); + union { + double real; + uint64_t base; + } u_i; + u_i.base = 0; + u_i.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_i.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_i.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_i.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_i.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_i.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_i.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_i.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->i = u_i.real; + offset += sizeof(this->i); + union { + double real; + uint64_t base; + } u_d; + u_d.base = 0; + u_d.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_d.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_d.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_d.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_d.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_d.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_d.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_d.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->d = u_d.real; + offset += sizeof(this->d); + union { + double real; + uint64_t base; + } u_i_clamp; + u_i_clamp.base = 0; + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->i_clamp = u_i_clamp.real; + offset += sizeof(this->i_clamp); + union { + bool real; + uint8_t base; + } u_antiwindup; + u_antiwindup.base = 0; + u_antiwindup.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->antiwindup = u_antiwindup.real; + offset += sizeof(this->antiwindup); + return offset; + } + + const char * getType(){ return "control_msgs/JointControllerState"; }; + const char * getMD5(){ return "987ad85e4756f3aef7f1e5e7fe0595d1"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/control_msgs/JointTolerance.h b/source/ros-max-lib/ros_lib/control_msgs/JointTolerance.h new file mode 100644 index 0000000..051971e --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_msgs/JointTolerance.h @@ -0,0 +1,151 @@ +#ifndef _ROS_control_msgs_JointTolerance_h +#define _ROS_control_msgs_JointTolerance_h + +#include +#include +#include +#include "ros/msg.h" + +namespace control_msgs +{ + + class JointTolerance : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef double _position_type; + _position_type position; + typedef double _velocity_type; + _velocity_type velocity; + typedef double _acceleration_type; + _acceleration_type acceleration; + + JointTolerance(): + name(""), + position(0), + velocity(0), + acceleration(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + union { + double real; + uint64_t base; + } u_position; + u_position.real = this->position; + *(outbuffer + offset + 0) = (u_position.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_position.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_position.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_position.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_position.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_position.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_position.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_position.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->position); + union { + double real; + uint64_t base; + } u_velocity; + u_velocity.real = this->velocity; + *(outbuffer + offset + 0) = (u_velocity.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_velocity.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_velocity.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_velocity.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_velocity.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_velocity.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_velocity.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_velocity.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->velocity); + union { + double real; + uint64_t base; + } u_acceleration; + u_acceleration.real = this->acceleration; + *(outbuffer + offset + 0) = (u_acceleration.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_acceleration.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_acceleration.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_acceleration.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_acceleration.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_acceleration.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_acceleration.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_acceleration.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->acceleration); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + union { + double real; + uint64_t base; + } u_position; + u_position.base = 0; + u_position.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->position = u_position.real; + offset += sizeof(this->position); + union { + double real; + uint64_t base; + } u_velocity; + u_velocity.base = 0; + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->velocity = u_velocity.real; + offset += sizeof(this->velocity); + union { + double real; + uint64_t base; + } u_acceleration; + u_acceleration.base = 0; + u_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->acceleration = u_acceleration.real; + offset += sizeof(this->acceleration); + return offset; + } + + const char * getType(){ return "control_msgs/JointTolerance"; }; + const char * getMD5(){ return "f544fe9c16cf04547e135dd6063ff5be"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/control_msgs/JointTrajectoryAction.h b/source/ros-max-lib/ros_lib/control_msgs/JointTrajectoryAction.h new file mode 100644 index 0000000..96bbaa4 --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_msgs/JointTrajectoryAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_JointTrajectoryAction_h +#define _ROS_control_msgs_JointTrajectoryAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "control_msgs/JointTrajectoryActionGoal.h" +#include "control_msgs/JointTrajectoryActionResult.h" +#include "control_msgs/JointTrajectoryActionFeedback.h" + +namespace control_msgs +{ + + class JointTrajectoryAction : public ros::Msg + { + public: + typedef control_msgs::JointTrajectoryActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef control_msgs::JointTrajectoryActionResult _action_result_type; + _action_result_type action_result; + typedef control_msgs::JointTrajectoryActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + JointTrajectoryAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/JointTrajectoryAction"; }; + const char * getMD5(){ return "a04ba3ee8f6a2d0985a6aeaf23d9d7ad"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/control_msgs/JointTrajectoryActionFeedback.h b/source/ros-max-lib/ros_lib/control_msgs/JointTrajectoryActionFeedback.h new file mode 100644 index 0000000..8df7fee --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_msgs/JointTrajectoryActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_JointTrajectoryActionFeedback_h +#define _ROS_control_msgs_JointTrajectoryActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "control_msgs/JointTrajectoryFeedback.h" + +namespace control_msgs +{ + + class JointTrajectoryActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef control_msgs::JointTrajectoryFeedback _feedback_type; + _feedback_type feedback; + + JointTrajectoryActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/JointTrajectoryActionFeedback"; }; + const char * getMD5(){ return "aae20e09065c3809e8a8e87c4c8953fd"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/control_msgs/JointTrajectoryActionGoal.h b/source/ros-max-lib/ros_lib/control_msgs/JointTrajectoryActionGoal.h new file mode 100644 index 0000000..8c432bb --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_msgs/JointTrajectoryActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_JointTrajectoryActionGoal_h +#define _ROS_control_msgs_JointTrajectoryActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "control_msgs/JointTrajectoryGoal.h" + +namespace control_msgs +{ + + class JointTrajectoryActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef control_msgs::JointTrajectoryGoal _goal_type; + _goal_type goal; + + JointTrajectoryActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/JointTrajectoryActionGoal"; }; + const char * getMD5(){ return "a99e83ef6185f9fdd7693efe99623a86"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/control_msgs/JointTrajectoryActionResult.h b/source/ros-max-lib/ros_lib/control_msgs/JointTrajectoryActionResult.h new file mode 100644 index 0000000..2a11d22 --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_msgs/JointTrajectoryActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_JointTrajectoryActionResult_h +#define _ROS_control_msgs_JointTrajectoryActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "control_msgs/JointTrajectoryResult.h" + +namespace control_msgs +{ + + class JointTrajectoryActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef control_msgs::JointTrajectoryResult _result_type; + _result_type result; + + JointTrajectoryActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/JointTrajectoryActionResult"; }; + const char * getMD5(){ return "1eb06eeff08fa7ea874431638cb52332"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/control_msgs/JointTrajectoryControllerState.h b/source/ros-max-lib/ros_lib/control_msgs/JointTrajectoryControllerState.h new file mode 100644 index 0000000..148db3a --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_msgs/JointTrajectoryControllerState.h @@ -0,0 +1,97 @@ +#ifndef _ROS_control_msgs_JointTrajectoryControllerState_h +#define _ROS_control_msgs_JointTrajectoryControllerState_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "trajectory_msgs/JointTrajectoryPoint.h" + +namespace control_msgs +{ + + class JointTrajectoryControllerState : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t joint_names_length; + typedef char* _joint_names_type; + _joint_names_type st_joint_names; + _joint_names_type * joint_names; + typedef trajectory_msgs::JointTrajectoryPoint _desired_type; + _desired_type desired; + typedef trajectory_msgs::JointTrajectoryPoint _actual_type; + _actual_type actual; + typedef trajectory_msgs::JointTrajectoryPoint _error_type; + _error_type error; + + JointTrajectoryControllerState(): + header(), + joint_names_length(0), joint_names(NULL), + desired(), + actual(), + error() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->joint_names_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->joint_names_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->joint_names_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->joint_names_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->joint_names_length); + for( uint32_t i = 0; i < joint_names_length; i++){ + uint32_t length_joint_namesi = strlen(this->joint_names[i]); + varToArr(outbuffer + offset, length_joint_namesi); + offset += 4; + memcpy(outbuffer + offset, this->joint_names[i], length_joint_namesi); + offset += length_joint_namesi; + } + offset += this->desired.serialize(outbuffer + offset); + offset += this->actual.serialize(outbuffer + offset); + offset += this->error.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t joint_names_lengthT = ((uint32_t) (*(inbuffer + offset))); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->joint_names_length); + if(joint_names_lengthT > joint_names_length) + this->joint_names = (char**)realloc(this->joint_names, joint_names_lengthT * sizeof(char*)); + joint_names_length = joint_names_lengthT; + for( uint32_t i = 0; i < joint_names_length; i++){ + uint32_t length_st_joint_names; + arrToVar(length_st_joint_names, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_joint_names; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_joint_names-1]=0; + this->st_joint_names = (char *)(inbuffer + offset-1); + offset += length_st_joint_names; + memcpy( &(this->joint_names[i]), &(this->st_joint_names), sizeof(char*)); + } + offset += this->desired.deserialize(inbuffer + offset); + offset += this->actual.deserialize(inbuffer + offset); + offset += this->error.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/JointTrajectoryControllerState"; }; + const char * getMD5(){ return "10817c60c2486ef6b33e97dcd87f4474"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/control_msgs/JointTrajectoryFeedback.h b/source/ros-max-lib/ros_lib/control_msgs/JointTrajectoryFeedback.h new file mode 100644 index 0000000..9dfe808 --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_msgs/JointTrajectoryFeedback.h @@ -0,0 +1,38 @@ +#ifndef _ROS_control_msgs_JointTrajectoryFeedback_h +#define _ROS_control_msgs_JointTrajectoryFeedback_h + +#include +#include +#include +#include "ros/msg.h" + +namespace control_msgs +{ + + class JointTrajectoryFeedback : public ros::Msg + { + public: + + JointTrajectoryFeedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "control_msgs/JointTrajectoryFeedback"; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/control_msgs/JointTrajectoryGoal.h b/source/ros-max-lib/ros_lib/control_msgs/JointTrajectoryGoal.h new file mode 100644 index 0000000..b699132 --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_msgs/JointTrajectoryGoal.h @@ -0,0 +1,44 @@ +#ifndef _ROS_control_msgs_JointTrajectoryGoal_h +#define _ROS_control_msgs_JointTrajectoryGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "trajectory_msgs/JointTrajectory.h" + +namespace control_msgs +{ + + class JointTrajectoryGoal : public ros::Msg + { + public: + typedef trajectory_msgs::JointTrajectory _trajectory_type; + _trajectory_type trajectory; + + JointTrajectoryGoal(): + trajectory() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->trajectory.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->trajectory.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/JointTrajectoryGoal"; }; + const char * getMD5(){ return "2a0eff76c870e8595636c2a562ca298e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/control_msgs/JointTrajectoryResult.h b/source/ros-max-lib/ros_lib/control_msgs/JointTrajectoryResult.h new file mode 100644 index 0000000..623ed9c --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_msgs/JointTrajectoryResult.h @@ -0,0 +1,38 @@ +#ifndef _ROS_control_msgs_JointTrajectoryResult_h +#define _ROS_control_msgs_JointTrajectoryResult_h + +#include +#include +#include +#include "ros/msg.h" + +namespace control_msgs +{ + + class JointTrajectoryResult : public ros::Msg + { + public: + + JointTrajectoryResult() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "control_msgs/JointTrajectoryResult"; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/control_msgs/PidState.h b/source/ros-max-lib/ros_lib/control_msgs/PidState.h new file mode 100644 index 0000000..a19ddf9 --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_msgs/PidState.h @@ -0,0 +1,420 @@ +#ifndef _ROS_control_msgs_PidState_h +#define _ROS_control_msgs_PidState_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "ros/duration.h" + +namespace control_msgs +{ + + class PidState : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef ros::Duration _timestep_type; + _timestep_type timestep; + typedef double _error_type; + _error_type error; + typedef double _error_dot_type; + _error_dot_type error_dot; + typedef double _p_error_type; + _p_error_type p_error; + typedef double _i_error_type; + _i_error_type i_error; + typedef double _d_error_type; + _d_error_type d_error; + typedef double _p_term_type; + _p_term_type p_term; + typedef double _i_term_type; + _i_term_type i_term; + typedef double _d_term_type; + _d_term_type d_term; + typedef double _i_max_type; + _i_max_type i_max; + typedef double _i_min_type; + _i_min_type i_min; + typedef double _output_type; + _output_type output; + + PidState(): + header(), + timestep(), + error(0), + error_dot(0), + p_error(0), + i_error(0), + d_error(0), + p_term(0), + i_term(0), + d_term(0), + i_max(0), + i_min(0), + output(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->timestep.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->timestep.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->timestep.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->timestep.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->timestep.sec); + *(outbuffer + offset + 0) = (this->timestep.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->timestep.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->timestep.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->timestep.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->timestep.nsec); + union { + double real; + uint64_t base; + } u_error; + u_error.real = this->error; + *(outbuffer + offset + 0) = (u_error.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_error.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_error.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_error.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_error.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_error.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_error.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_error.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->error); + union { + double real; + uint64_t base; + } u_error_dot; + u_error_dot.real = this->error_dot; + *(outbuffer + offset + 0) = (u_error_dot.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_error_dot.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_error_dot.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_error_dot.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_error_dot.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_error_dot.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_error_dot.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_error_dot.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->error_dot); + union { + double real; + uint64_t base; + } u_p_error; + u_p_error.real = this->p_error; + *(outbuffer + offset + 0) = (u_p_error.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_p_error.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_p_error.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_p_error.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_p_error.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_p_error.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_p_error.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_p_error.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->p_error); + union { + double real; + uint64_t base; + } u_i_error; + u_i_error.real = this->i_error; + *(outbuffer + offset + 0) = (u_i_error.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_i_error.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_i_error.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_i_error.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_i_error.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_i_error.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_i_error.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_i_error.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->i_error); + union { + double real; + uint64_t base; + } u_d_error; + u_d_error.real = this->d_error; + *(outbuffer + offset + 0) = (u_d_error.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_d_error.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_d_error.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_d_error.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_d_error.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_d_error.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_d_error.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_d_error.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->d_error); + union { + double real; + uint64_t base; + } u_p_term; + u_p_term.real = this->p_term; + *(outbuffer + offset + 0) = (u_p_term.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_p_term.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_p_term.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_p_term.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_p_term.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_p_term.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_p_term.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_p_term.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->p_term); + union { + double real; + uint64_t base; + } u_i_term; + u_i_term.real = this->i_term; + *(outbuffer + offset + 0) = (u_i_term.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_i_term.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_i_term.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_i_term.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_i_term.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_i_term.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_i_term.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_i_term.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->i_term); + union { + double real; + uint64_t base; + } u_d_term; + u_d_term.real = this->d_term; + *(outbuffer + offset + 0) = (u_d_term.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_d_term.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_d_term.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_d_term.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_d_term.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_d_term.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_d_term.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_d_term.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->d_term); + union { + double real; + uint64_t base; + } u_i_max; + u_i_max.real = this->i_max; + *(outbuffer + offset + 0) = (u_i_max.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_i_max.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_i_max.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_i_max.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_i_max.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_i_max.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_i_max.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_i_max.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->i_max); + union { + double real; + uint64_t base; + } u_i_min; + u_i_min.real = this->i_min; + *(outbuffer + offset + 0) = (u_i_min.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_i_min.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_i_min.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_i_min.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_i_min.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_i_min.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_i_min.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_i_min.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->i_min); + union { + double real; + uint64_t base; + } u_output; + u_output.real = this->output; + *(outbuffer + offset + 0) = (u_output.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_output.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_output.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_output.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_output.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_output.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_output.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_output.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->output); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + this->timestep.sec = ((uint32_t) (*(inbuffer + offset))); + this->timestep.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->timestep.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->timestep.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->timestep.sec); + this->timestep.nsec = ((uint32_t) (*(inbuffer + offset))); + this->timestep.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->timestep.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->timestep.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->timestep.nsec); + union { + double real; + uint64_t base; + } u_error; + u_error.base = 0; + u_error.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->error = u_error.real; + offset += sizeof(this->error); + union { + double real; + uint64_t base; + } u_error_dot; + u_error_dot.base = 0; + u_error_dot.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_error_dot.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_error_dot.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_error_dot.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_error_dot.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_error_dot.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_error_dot.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_error_dot.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->error_dot = u_error_dot.real; + offset += sizeof(this->error_dot); + union { + double real; + uint64_t base; + } u_p_error; + u_p_error.base = 0; + u_p_error.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_p_error.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_p_error.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_p_error.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_p_error.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_p_error.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_p_error.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_p_error.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->p_error = u_p_error.real; + offset += sizeof(this->p_error); + union { + double real; + uint64_t base; + } u_i_error; + u_i_error.base = 0; + u_i_error.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_i_error.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_i_error.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_i_error.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_i_error.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_i_error.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_i_error.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_i_error.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->i_error = u_i_error.real; + offset += sizeof(this->i_error); + union { + double real; + uint64_t base; + } u_d_error; + u_d_error.base = 0; + u_d_error.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_d_error.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_d_error.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_d_error.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_d_error.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_d_error.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_d_error.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_d_error.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->d_error = u_d_error.real; + offset += sizeof(this->d_error); + union { + double real; + uint64_t base; + } u_p_term; + u_p_term.base = 0; + u_p_term.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_p_term.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_p_term.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_p_term.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_p_term.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_p_term.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_p_term.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_p_term.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->p_term = u_p_term.real; + offset += sizeof(this->p_term); + union { + double real; + uint64_t base; + } u_i_term; + u_i_term.base = 0; + u_i_term.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_i_term.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_i_term.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_i_term.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_i_term.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_i_term.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_i_term.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_i_term.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->i_term = u_i_term.real; + offset += sizeof(this->i_term); + union { + double real; + uint64_t base; + } u_d_term; + u_d_term.base = 0; + u_d_term.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_d_term.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_d_term.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_d_term.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_d_term.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_d_term.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_d_term.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_d_term.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->d_term = u_d_term.real; + offset += sizeof(this->d_term); + union { + double real; + uint64_t base; + } u_i_max; + u_i_max.base = 0; + u_i_max.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_i_max.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_i_max.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_i_max.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_i_max.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_i_max.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_i_max.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_i_max.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->i_max = u_i_max.real; + offset += sizeof(this->i_max); + union { + double real; + uint64_t base; + } u_i_min; + u_i_min.base = 0; + u_i_min.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_i_min.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_i_min.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_i_min.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_i_min.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_i_min.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_i_min.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_i_min.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->i_min = u_i_min.real; + offset += sizeof(this->i_min); + union { + double real; + uint64_t base; + } u_output; + u_output.base = 0; + u_output.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_output.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_output.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_output.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_output.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_output.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_output.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_output.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->output = u_output.real; + offset += sizeof(this->output); + return offset; + } + + const char * getType(){ return "control_msgs/PidState"; }; + const char * getMD5(){ return "b138ec00e886c10e73f27e8712252ea6"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/control_msgs/PointHeadAction.h b/source/ros-max-lib/ros_lib/control_msgs/PointHeadAction.h new file mode 100644 index 0000000..82ee446 --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_msgs/PointHeadAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_PointHeadAction_h +#define _ROS_control_msgs_PointHeadAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "control_msgs/PointHeadActionGoal.h" +#include "control_msgs/PointHeadActionResult.h" +#include "control_msgs/PointHeadActionFeedback.h" + +namespace control_msgs +{ + + class PointHeadAction : public ros::Msg + { + public: + typedef control_msgs::PointHeadActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef control_msgs::PointHeadActionResult _action_result_type; + _action_result_type action_result; + typedef control_msgs::PointHeadActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + PointHeadAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/PointHeadAction"; }; + const char * getMD5(){ return "7252920f1243de1b741f14f214125371"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/control_msgs/PointHeadActionFeedback.h b/source/ros-max-lib/ros_lib/control_msgs/PointHeadActionFeedback.h new file mode 100644 index 0000000..780656b --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_msgs/PointHeadActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_PointHeadActionFeedback_h +#define _ROS_control_msgs_PointHeadActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "control_msgs/PointHeadFeedback.h" + +namespace control_msgs +{ + + class PointHeadActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef control_msgs::PointHeadFeedback _feedback_type; + _feedback_type feedback; + + PointHeadActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/PointHeadActionFeedback"; }; + const char * getMD5(){ return "33c9244957176bbba97dd641119e8460"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/control_msgs/PointHeadActionGoal.h b/source/ros-max-lib/ros_lib/control_msgs/PointHeadActionGoal.h new file mode 100644 index 0000000..12ae791 --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_msgs/PointHeadActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_PointHeadActionGoal_h +#define _ROS_control_msgs_PointHeadActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "control_msgs/PointHeadGoal.h" + +namespace control_msgs +{ + + class PointHeadActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef control_msgs::PointHeadGoal _goal_type; + _goal_type goal; + + PointHeadActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/PointHeadActionGoal"; }; + const char * getMD5(){ return "b53a8323d0ba7b310ba17a2d3a82a6b8"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/control_msgs/PointHeadActionResult.h b/source/ros-max-lib/ros_lib/control_msgs/PointHeadActionResult.h new file mode 100644 index 0000000..7708fe6 --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_msgs/PointHeadActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_PointHeadActionResult_h +#define _ROS_control_msgs_PointHeadActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "control_msgs/PointHeadResult.h" + +namespace control_msgs +{ + + class PointHeadActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef control_msgs::PointHeadResult _result_type; + _result_type result; + + PointHeadActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/PointHeadActionResult"; }; + const char * getMD5(){ return "1eb06eeff08fa7ea874431638cb52332"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/control_msgs/PointHeadFeedback.h b/source/ros-max-lib/ros_lib/control_msgs/PointHeadFeedback.h new file mode 100644 index 0000000..beafd3e --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_msgs/PointHeadFeedback.h @@ -0,0 +1,70 @@ +#ifndef _ROS_control_msgs_PointHeadFeedback_h +#define _ROS_control_msgs_PointHeadFeedback_h + +#include +#include +#include +#include "ros/msg.h" + +namespace control_msgs +{ + + class PointHeadFeedback : public ros::Msg + { + public: + typedef double _pointing_angle_error_type; + _pointing_angle_error_type pointing_angle_error; + + PointHeadFeedback(): + pointing_angle_error(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_pointing_angle_error; + u_pointing_angle_error.real = this->pointing_angle_error; + *(outbuffer + offset + 0) = (u_pointing_angle_error.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_pointing_angle_error.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_pointing_angle_error.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_pointing_angle_error.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_pointing_angle_error.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_pointing_angle_error.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_pointing_angle_error.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_pointing_angle_error.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->pointing_angle_error); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_pointing_angle_error; + u_pointing_angle_error.base = 0; + u_pointing_angle_error.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_pointing_angle_error.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_pointing_angle_error.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_pointing_angle_error.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_pointing_angle_error.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_pointing_angle_error.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_pointing_angle_error.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_pointing_angle_error.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->pointing_angle_error = u_pointing_angle_error.real; + offset += sizeof(this->pointing_angle_error); + return offset; + } + + const char * getType(){ return "control_msgs/PointHeadFeedback"; }; + const char * getMD5(){ return "cce80d27fd763682da8805a73316cab4"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/control_msgs/PointHeadGoal.h b/source/ros-max-lib/ros_lib/control_msgs/PointHeadGoal.h new file mode 100644 index 0000000..4d7355c --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_msgs/PointHeadGoal.h @@ -0,0 +1,123 @@ +#ifndef _ROS_control_msgs_PointHeadGoal_h +#define _ROS_control_msgs_PointHeadGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/PointStamped.h" +#include "geometry_msgs/Vector3.h" +#include "ros/duration.h" + +namespace control_msgs +{ + + class PointHeadGoal : public ros::Msg + { + public: + typedef geometry_msgs::PointStamped _target_type; + _target_type target; + typedef geometry_msgs::Vector3 _pointing_axis_type; + _pointing_axis_type pointing_axis; + typedef const char* _pointing_frame_type; + _pointing_frame_type pointing_frame; + typedef ros::Duration _min_duration_type; + _min_duration_type min_duration; + typedef double _max_velocity_type; + _max_velocity_type max_velocity; + + PointHeadGoal(): + target(), + pointing_axis(), + pointing_frame(""), + min_duration(), + max_velocity(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->target.serialize(outbuffer + offset); + offset += this->pointing_axis.serialize(outbuffer + offset); + uint32_t length_pointing_frame = strlen(this->pointing_frame); + varToArr(outbuffer + offset, length_pointing_frame); + offset += 4; + memcpy(outbuffer + offset, this->pointing_frame, length_pointing_frame); + offset += length_pointing_frame; + *(outbuffer + offset + 0) = (this->min_duration.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->min_duration.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->min_duration.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->min_duration.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->min_duration.sec); + *(outbuffer + offset + 0) = (this->min_duration.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->min_duration.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->min_duration.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->min_duration.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->min_duration.nsec); + union { + double real; + uint64_t base; + } u_max_velocity; + u_max_velocity.real = this->max_velocity; + *(outbuffer + offset + 0) = (u_max_velocity.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_max_velocity.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_max_velocity.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_max_velocity.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_max_velocity.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_max_velocity.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_max_velocity.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_max_velocity.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->max_velocity); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->target.deserialize(inbuffer + offset); + offset += this->pointing_axis.deserialize(inbuffer + offset); + uint32_t length_pointing_frame; + arrToVar(length_pointing_frame, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_pointing_frame; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_pointing_frame-1]=0; + this->pointing_frame = (char *)(inbuffer + offset-1); + offset += length_pointing_frame; + this->min_duration.sec = ((uint32_t) (*(inbuffer + offset))); + this->min_duration.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->min_duration.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->min_duration.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->min_duration.sec); + this->min_duration.nsec = ((uint32_t) (*(inbuffer + offset))); + this->min_duration.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->min_duration.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->min_duration.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->min_duration.nsec); + union { + double real; + uint64_t base; + } u_max_velocity; + u_max_velocity.base = 0; + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->max_velocity = u_max_velocity.real; + offset += sizeof(this->max_velocity); + return offset; + } + + const char * getType(){ return "control_msgs/PointHeadGoal"; }; + const char * getMD5(){ return "8b92b1cd5e06c8a94c917dc3209a4c1d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/control_msgs/PointHeadResult.h b/source/ros-max-lib/ros_lib/control_msgs/PointHeadResult.h new file mode 100644 index 0000000..53f789e --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_msgs/PointHeadResult.h @@ -0,0 +1,38 @@ +#ifndef _ROS_control_msgs_PointHeadResult_h +#define _ROS_control_msgs_PointHeadResult_h + +#include +#include +#include +#include "ros/msg.h" + +namespace control_msgs +{ + + class PointHeadResult : public ros::Msg + { + public: + + PointHeadResult() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "control_msgs/PointHeadResult"; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/control_msgs/QueryCalibrationState.h b/source/ros-max-lib/ros_lib/control_msgs/QueryCalibrationState.h new file mode 100644 index 0000000..0fd1a66 --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_msgs/QueryCalibrationState.h @@ -0,0 +1,88 @@ +#ifndef _ROS_SERVICE_QueryCalibrationState_h +#define _ROS_SERVICE_QueryCalibrationState_h +#include +#include +#include +#include "ros/msg.h" + +namespace control_msgs +{ + +static const char QUERYCALIBRATIONSTATE[] = "control_msgs/QueryCalibrationState"; + + class QueryCalibrationStateRequest : public ros::Msg + { + public: + + QueryCalibrationStateRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return QUERYCALIBRATIONSTATE; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class QueryCalibrationStateResponse : public ros::Msg + { + public: + typedef bool _is_calibrated_type; + _is_calibrated_type is_calibrated; + + QueryCalibrationStateResponse(): + is_calibrated(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_is_calibrated; + u_is_calibrated.real = this->is_calibrated; + *(outbuffer + offset + 0) = (u_is_calibrated.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->is_calibrated); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_is_calibrated; + u_is_calibrated.base = 0; + u_is_calibrated.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->is_calibrated = u_is_calibrated.real; + offset += sizeof(this->is_calibrated); + return offset; + } + + const char * getType(){ return QUERYCALIBRATIONSTATE; }; + const char * getMD5(){ return "28af3beedcb84986b8e470dc5470507d"; }; + + }; + + class QueryCalibrationState { + public: + typedef QueryCalibrationStateRequest Request; + typedef QueryCalibrationStateResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/control_msgs/QueryTrajectoryState.h b/source/ros-max-lib/ros_lib/control_msgs/QueryTrajectoryState.h new file mode 100644 index 0000000..aef19a8 --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_msgs/QueryTrajectoryState.h @@ -0,0 +1,287 @@ +#ifndef _ROS_SERVICE_QueryTrajectoryState_h +#define _ROS_SERVICE_QueryTrajectoryState_h +#include +#include +#include +#include "ros/msg.h" +#include "ros/time.h" + +namespace control_msgs +{ + +static const char QUERYTRAJECTORYSTATE[] = "control_msgs/QueryTrajectoryState"; + + class QueryTrajectoryStateRequest : public ros::Msg + { + public: + typedef ros::Time _time_type; + _time_type time; + + QueryTrajectoryStateRequest(): + time() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->time.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->time.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->time.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->time.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->time.sec); + *(outbuffer + offset + 0) = (this->time.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->time.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->time.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->time.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->time.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->time.sec = ((uint32_t) (*(inbuffer + offset))); + this->time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->time.sec); + this->time.nsec = ((uint32_t) (*(inbuffer + offset))); + this->time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->time.nsec); + return offset; + } + + const char * getType(){ return QUERYTRAJECTORYSTATE; }; + const char * getMD5(){ return "556a4fb76023a469987922359d08a844"; }; + + }; + + class QueryTrajectoryStateResponse : public ros::Msg + { + public: + uint32_t name_length; + typedef char* _name_type; + _name_type st_name; + _name_type * name; + uint32_t position_length; + typedef double _position_type; + _position_type st_position; + _position_type * position; + uint32_t velocity_length; + typedef double _velocity_type; + _velocity_type st_velocity; + _velocity_type * velocity; + uint32_t acceleration_length; + typedef double _acceleration_type; + _acceleration_type st_acceleration; + _acceleration_type * acceleration; + + QueryTrajectoryStateResponse(): + name_length(0), name(NULL), + position_length(0), position(NULL), + velocity_length(0), velocity(NULL), + acceleration_length(0), acceleration(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->name_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->name_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->name_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->name_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->name_length); + for( uint32_t i = 0; i < name_length; i++){ + uint32_t length_namei = strlen(this->name[i]); + varToArr(outbuffer + offset, length_namei); + offset += 4; + memcpy(outbuffer + offset, this->name[i], length_namei); + offset += length_namei; + } + *(outbuffer + offset + 0) = (this->position_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->position_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->position_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->position_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->position_length); + for( uint32_t i = 0; i < position_length; i++){ + union { + double real; + uint64_t base; + } u_positioni; + u_positioni.real = this->position[i]; + *(outbuffer + offset + 0) = (u_positioni.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_positioni.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_positioni.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_positioni.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_positioni.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_positioni.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_positioni.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_positioni.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->position[i]); + } + *(outbuffer + offset + 0) = (this->velocity_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->velocity_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->velocity_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->velocity_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->velocity_length); + for( uint32_t i = 0; i < velocity_length; i++){ + union { + double real; + uint64_t base; + } u_velocityi; + u_velocityi.real = this->velocity[i]; + *(outbuffer + offset + 0) = (u_velocityi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_velocityi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_velocityi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_velocityi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_velocityi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_velocityi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_velocityi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_velocityi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->velocity[i]); + } + *(outbuffer + offset + 0) = (this->acceleration_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->acceleration_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->acceleration_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->acceleration_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->acceleration_length); + for( uint32_t i = 0; i < acceleration_length; i++){ + union { + double real; + uint64_t base; + } u_accelerationi; + u_accelerationi.real = this->acceleration[i]; + *(outbuffer + offset + 0) = (u_accelerationi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_accelerationi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_accelerationi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_accelerationi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_accelerationi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_accelerationi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_accelerationi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_accelerationi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->acceleration[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t name_lengthT = ((uint32_t) (*(inbuffer + offset))); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->name_length); + if(name_lengthT > name_length) + this->name = (char**)realloc(this->name, name_lengthT * sizeof(char*)); + name_length = name_lengthT; + for( uint32_t i = 0; i < name_length; i++){ + uint32_t length_st_name; + arrToVar(length_st_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_name-1]=0; + this->st_name = (char *)(inbuffer + offset-1); + offset += length_st_name; + memcpy( &(this->name[i]), &(this->st_name), sizeof(char*)); + } + uint32_t position_lengthT = ((uint32_t) (*(inbuffer + offset))); + position_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + position_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + position_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->position_length); + if(position_lengthT > position_length) + this->position = (double*)realloc(this->position, position_lengthT * sizeof(double)); + position_length = position_lengthT; + for( uint32_t i = 0; i < position_length; i++){ + union { + double real; + uint64_t base; + } u_st_position; + u_st_position.base = 0; + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_position = u_st_position.real; + offset += sizeof(this->st_position); + memcpy( &(this->position[i]), &(this->st_position), sizeof(double)); + } + uint32_t velocity_lengthT = ((uint32_t) (*(inbuffer + offset))); + velocity_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + velocity_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + velocity_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->velocity_length); + if(velocity_lengthT > velocity_length) + this->velocity = (double*)realloc(this->velocity, velocity_lengthT * sizeof(double)); + velocity_length = velocity_lengthT; + for( uint32_t i = 0; i < velocity_length; i++){ + union { + double real; + uint64_t base; + } u_st_velocity; + u_st_velocity.base = 0; + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_velocity = u_st_velocity.real; + offset += sizeof(this->st_velocity); + memcpy( &(this->velocity[i]), &(this->st_velocity), sizeof(double)); + } + uint32_t acceleration_lengthT = ((uint32_t) (*(inbuffer + offset))); + acceleration_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + acceleration_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + acceleration_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->acceleration_length); + if(acceleration_lengthT > acceleration_length) + this->acceleration = (double*)realloc(this->acceleration, acceleration_lengthT * sizeof(double)); + acceleration_length = acceleration_lengthT; + for( uint32_t i = 0; i < acceleration_length; i++){ + union { + double real; + uint64_t base; + } u_st_acceleration; + u_st_acceleration.base = 0; + u_st_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_acceleration.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_acceleration = u_st_acceleration.real; + offset += sizeof(this->st_acceleration); + memcpy( &(this->acceleration[i]), &(this->st_acceleration), sizeof(double)); + } + return offset; + } + + const char * getType(){ return QUERYTRAJECTORYSTATE; }; + const char * getMD5(){ return "1f1a6554ad060f44d013e71868403c1a"; }; + + }; + + class QueryTrajectoryState { + public: + typedef QueryTrajectoryStateRequest Request; + typedef QueryTrajectoryStateResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/control_msgs/SingleJointPositionAction.h b/source/ros-max-lib/ros_lib/control_msgs/SingleJointPositionAction.h new file mode 100644 index 0000000..3117ee1 --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_msgs/SingleJointPositionAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_SingleJointPositionAction_h +#define _ROS_control_msgs_SingleJointPositionAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "control_msgs/SingleJointPositionActionGoal.h" +#include "control_msgs/SingleJointPositionActionResult.h" +#include "control_msgs/SingleJointPositionActionFeedback.h" + +namespace control_msgs +{ + + class SingleJointPositionAction : public ros::Msg + { + public: + typedef control_msgs::SingleJointPositionActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef control_msgs::SingleJointPositionActionResult _action_result_type; + _action_result_type action_result; + typedef control_msgs::SingleJointPositionActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + SingleJointPositionAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/SingleJointPositionAction"; }; + const char * getMD5(){ return "c4a786b7d53e5d0983decf967a5a779e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/control_msgs/SingleJointPositionActionFeedback.h b/source/ros-max-lib/ros_lib/control_msgs/SingleJointPositionActionFeedback.h new file mode 100644 index 0000000..82cba63 --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_msgs/SingleJointPositionActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_SingleJointPositionActionFeedback_h +#define _ROS_control_msgs_SingleJointPositionActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "control_msgs/SingleJointPositionFeedback.h" + +namespace control_msgs +{ + + class SingleJointPositionActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef control_msgs::SingleJointPositionFeedback _feedback_type; + _feedback_type feedback; + + SingleJointPositionActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/SingleJointPositionActionFeedback"; }; + const char * getMD5(){ return "3503b7cf8972f90d245850a5d8796cfa"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/control_msgs/SingleJointPositionActionGoal.h b/source/ros-max-lib/ros_lib/control_msgs/SingleJointPositionActionGoal.h new file mode 100644 index 0000000..75c7898 --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_msgs/SingleJointPositionActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_SingleJointPositionActionGoal_h +#define _ROS_control_msgs_SingleJointPositionActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "control_msgs/SingleJointPositionGoal.h" + +namespace control_msgs +{ + + class SingleJointPositionActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef control_msgs::SingleJointPositionGoal _goal_type; + _goal_type goal; + + SingleJointPositionActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/SingleJointPositionActionGoal"; }; + const char * getMD5(){ return "4b0d3d091471663e17749c1d0db90f61"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/control_msgs/SingleJointPositionActionResult.h b/source/ros-max-lib/ros_lib/control_msgs/SingleJointPositionActionResult.h new file mode 100644 index 0000000..ef99cd8 --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_msgs/SingleJointPositionActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_control_msgs_SingleJointPositionActionResult_h +#define _ROS_control_msgs_SingleJointPositionActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "control_msgs/SingleJointPositionResult.h" + +namespace control_msgs +{ + + class SingleJointPositionActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef control_msgs::SingleJointPositionResult _result_type; + _result_type result; + + SingleJointPositionActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "control_msgs/SingleJointPositionActionResult"; }; + const char * getMD5(){ return "1eb06eeff08fa7ea874431638cb52332"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/control_msgs/SingleJointPositionFeedback.h b/source/ros-max-lib/ros_lib/control_msgs/SingleJointPositionFeedback.h new file mode 100644 index 0000000..cbf8fa4 --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_msgs/SingleJointPositionFeedback.h @@ -0,0 +1,140 @@ +#ifndef _ROS_control_msgs_SingleJointPositionFeedback_h +#define _ROS_control_msgs_SingleJointPositionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace control_msgs +{ + + class SingleJointPositionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef double _position_type; + _position_type position; + typedef double _velocity_type; + _velocity_type velocity; + typedef double _error_type; + _error_type error; + + SingleJointPositionFeedback(): + header(), + position(0), + velocity(0), + error(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + union { + double real; + uint64_t base; + } u_position; + u_position.real = this->position; + *(outbuffer + offset + 0) = (u_position.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_position.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_position.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_position.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_position.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_position.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_position.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_position.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->position); + union { + double real; + uint64_t base; + } u_velocity; + u_velocity.real = this->velocity; + *(outbuffer + offset + 0) = (u_velocity.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_velocity.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_velocity.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_velocity.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_velocity.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_velocity.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_velocity.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_velocity.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->velocity); + union { + double real; + uint64_t base; + } u_error; + u_error.real = this->error; + *(outbuffer + offset + 0) = (u_error.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_error.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_error.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_error.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_error.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_error.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_error.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_error.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->error); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + union { + double real; + uint64_t base; + } u_position; + u_position.base = 0; + u_position.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->position = u_position.real; + offset += sizeof(this->position); + union { + double real; + uint64_t base; + } u_velocity; + u_velocity.base = 0; + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_velocity.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->velocity = u_velocity.real; + offset += sizeof(this->velocity); + union { + double real; + uint64_t base; + } u_error; + u_error.base = 0; + u_error.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_error.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->error = u_error.real; + offset += sizeof(this->error); + return offset; + } + + const char * getType(){ return "control_msgs/SingleJointPositionFeedback"; }; + const char * getMD5(){ return "8cee65610a3d08e0a1bded82f146f1fd"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/control_msgs/SingleJointPositionGoal.h b/source/ros-max-lib/ros_lib/control_msgs/SingleJointPositionGoal.h new file mode 100644 index 0000000..7261176 --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_msgs/SingleJointPositionGoal.h @@ -0,0 +1,126 @@ +#ifndef _ROS_control_msgs_SingleJointPositionGoal_h +#define _ROS_control_msgs_SingleJointPositionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "ros/duration.h" + +namespace control_msgs +{ + + class SingleJointPositionGoal : public ros::Msg + { + public: + typedef double _position_type; + _position_type position; + typedef ros::Duration _min_duration_type; + _min_duration_type min_duration; + typedef double _max_velocity_type; + _max_velocity_type max_velocity; + + SingleJointPositionGoal(): + position(0), + min_duration(), + max_velocity(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_position; + u_position.real = this->position; + *(outbuffer + offset + 0) = (u_position.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_position.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_position.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_position.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_position.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_position.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_position.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_position.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->position); + *(outbuffer + offset + 0) = (this->min_duration.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->min_duration.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->min_duration.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->min_duration.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->min_duration.sec); + *(outbuffer + offset + 0) = (this->min_duration.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->min_duration.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->min_duration.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->min_duration.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->min_duration.nsec); + union { + double real; + uint64_t base; + } u_max_velocity; + u_max_velocity.real = this->max_velocity; + *(outbuffer + offset + 0) = (u_max_velocity.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_max_velocity.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_max_velocity.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_max_velocity.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_max_velocity.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_max_velocity.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_max_velocity.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_max_velocity.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->max_velocity); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_position; + u_position.base = 0; + u_position.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_position.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->position = u_position.real; + offset += sizeof(this->position); + this->min_duration.sec = ((uint32_t) (*(inbuffer + offset))); + this->min_duration.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->min_duration.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->min_duration.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->min_duration.sec); + this->min_duration.nsec = ((uint32_t) (*(inbuffer + offset))); + this->min_duration.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->min_duration.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->min_duration.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->min_duration.nsec); + union { + double real; + uint64_t base; + } u_max_velocity; + u_max_velocity.base = 0; + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_max_velocity.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->max_velocity = u_max_velocity.real; + offset += sizeof(this->max_velocity); + return offset; + } + + const char * getType(){ return "control_msgs/SingleJointPositionGoal"; }; + const char * getMD5(){ return "fbaaa562a23a013fd5053e5f72cbb35c"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/control_msgs/SingleJointPositionResult.h b/source/ros-max-lib/ros_lib/control_msgs/SingleJointPositionResult.h new file mode 100644 index 0000000..7593425 --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_msgs/SingleJointPositionResult.h @@ -0,0 +1,38 @@ +#ifndef _ROS_control_msgs_SingleJointPositionResult_h +#define _ROS_control_msgs_SingleJointPositionResult_h + +#include +#include +#include +#include "ros/msg.h" + +namespace control_msgs +{ + + class SingleJointPositionResult : public ros::Msg + { + public: + + SingleJointPositionResult() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "control_msgs/SingleJointPositionResult"; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/control_toolbox/SetPidGains.h b/source/ros-max-lib/ros_lib/control_toolbox/SetPidGains.h new file mode 100644 index 0000000..709d825 --- /dev/null +++ b/source/ros-max-lib/ros_lib/control_toolbox/SetPidGains.h @@ -0,0 +1,216 @@ +#ifndef _ROS_SERVICE_SetPidGains_h +#define _ROS_SERVICE_SetPidGains_h +#include +#include +#include +#include "ros/msg.h" + +namespace control_toolbox +{ + +static const char SETPIDGAINS[] = "control_toolbox/SetPidGains"; + + class SetPidGainsRequest : public ros::Msg + { + public: + typedef double _p_type; + _p_type p; + typedef double _i_type; + _i_type i; + typedef double _d_type; + _d_type d; + typedef double _i_clamp_type; + _i_clamp_type i_clamp; + typedef bool _antiwindup_type; + _antiwindup_type antiwindup; + + SetPidGainsRequest(): + p(0), + i(0), + d(0), + i_clamp(0), + antiwindup(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_p; + u_p.real = this->p; + *(outbuffer + offset + 0) = (u_p.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_p.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_p.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_p.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_p.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_p.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_p.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_p.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->p); + union { + double real; + uint64_t base; + } u_i; + u_i.real = this->i; + *(outbuffer + offset + 0) = (u_i.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_i.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_i.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_i.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_i.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_i.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_i.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_i.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->i); + union { + double real; + uint64_t base; + } u_d; + u_d.real = this->d; + *(outbuffer + offset + 0) = (u_d.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_d.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_d.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_d.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_d.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_d.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_d.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_d.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->d); + union { + double real; + uint64_t base; + } u_i_clamp; + u_i_clamp.real = this->i_clamp; + *(outbuffer + offset + 0) = (u_i_clamp.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_i_clamp.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_i_clamp.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_i_clamp.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_i_clamp.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_i_clamp.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_i_clamp.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_i_clamp.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->i_clamp); + union { + bool real; + uint8_t base; + } u_antiwindup; + u_antiwindup.real = this->antiwindup; + *(outbuffer + offset + 0) = (u_antiwindup.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->antiwindup); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_p; + u_p.base = 0; + u_p.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_p.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_p.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_p.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_p.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_p.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_p.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_p.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->p = u_p.real; + offset += sizeof(this->p); + union { + double real; + uint64_t base; + } u_i; + u_i.base = 0; + u_i.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_i.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_i.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_i.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_i.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_i.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_i.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_i.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->i = u_i.real; + offset += sizeof(this->i); + union { + double real; + uint64_t base; + } u_d; + u_d.base = 0; + u_d.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_d.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_d.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_d.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_d.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_d.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_d.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_d.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->d = u_d.real; + offset += sizeof(this->d); + union { + double real; + uint64_t base; + } u_i_clamp; + u_i_clamp.base = 0; + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_i_clamp.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->i_clamp = u_i_clamp.real; + offset += sizeof(this->i_clamp); + union { + bool real; + uint8_t base; + } u_antiwindup; + u_antiwindup.base = 0; + u_antiwindup.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->antiwindup = u_antiwindup.real; + offset += sizeof(this->antiwindup); + return offset; + } + + const char * getType(){ return SETPIDGAINS; }; + const char * getMD5(){ return "4a43159879643e60937bf2893b633607"; }; + + }; + + class SetPidGainsResponse : public ros::Msg + { + public: + + SetPidGainsResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return SETPIDGAINS; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class SetPidGains { + public: + typedef SetPidGainsRequest Request; + typedef SetPidGainsResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/controller_manager_msgs/ControllerState.h b/source/ros-max-lib/ros_lib/controller_manager_msgs/ControllerState.h new file mode 100644 index 0000000..ea728c4 --- /dev/null +++ b/source/ros-max-lib/ros_lib/controller_manager_msgs/ControllerState.h @@ -0,0 +1,115 @@ +#ifndef _ROS_controller_manager_msgs_ControllerState_h +#define _ROS_controller_manager_msgs_ControllerState_h + +#include +#include +#include +#include "ros/msg.h" +#include "controller_manager_msgs/HardwareInterfaceResources.h" + +namespace controller_manager_msgs +{ + + class ControllerState : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef const char* _state_type; + _state_type state; + typedef const char* _type_type; + _type_type type; + uint32_t claimed_resources_length; + typedef controller_manager_msgs::HardwareInterfaceResources _claimed_resources_type; + _claimed_resources_type st_claimed_resources; + _claimed_resources_type * claimed_resources; + + ControllerState(): + name(""), + state(""), + type(""), + claimed_resources_length(0), claimed_resources(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + uint32_t length_state = strlen(this->state); + varToArr(outbuffer + offset, length_state); + offset += 4; + memcpy(outbuffer + offset, this->state, length_state); + offset += length_state; + uint32_t length_type = strlen(this->type); + varToArr(outbuffer + offset, length_type); + offset += 4; + memcpy(outbuffer + offset, this->type, length_type); + offset += length_type; + *(outbuffer + offset + 0) = (this->claimed_resources_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->claimed_resources_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->claimed_resources_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->claimed_resources_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->claimed_resources_length); + for( uint32_t i = 0; i < claimed_resources_length; i++){ + offset += this->claimed_resources[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + uint32_t length_state; + arrToVar(length_state, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_state; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_state-1]=0; + this->state = (char *)(inbuffer + offset-1); + offset += length_state; + uint32_t length_type; + arrToVar(length_type, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_type; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_type-1]=0; + this->type = (char *)(inbuffer + offset-1); + offset += length_type; + uint32_t claimed_resources_lengthT = ((uint32_t) (*(inbuffer + offset))); + claimed_resources_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + claimed_resources_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + claimed_resources_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->claimed_resources_length); + if(claimed_resources_lengthT > claimed_resources_length) + this->claimed_resources = (controller_manager_msgs::HardwareInterfaceResources*)realloc(this->claimed_resources, claimed_resources_lengthT * sizeof(controller_manager_msgs::HardwareInterfaceResources)); + claimed_resources_length = claimed_resources_lengthT; + for( uint32_t i = 0; i < claimed_resources_length; i++){ + offset += this->st_claimed_resources.deserialize(inbuffer + offset); + memcpy( &(this->claimed_resources[i]), &(this->st_claimed_resources), sizeof(controller_manager_msgs::HardwareInterfaceResources)); + } + return offset; + } + + const char * getType(){ return "controller_manager_msgs/ControllerState"; }; + const char * getMD5(){ return "aeb6b261d97793ab74099a3740245272"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/controller_manager_msgs/ControllerStatistics.h b/source/ros-max-lib/ros_lib/controller_manager_msgs/ControllerStatistics.h new file mode 100644 index 0000000..c62773c --- /dev/null +++ b/source/ros-max-lib/ros_lib/controller_manager_msgs/ControllerStatistics.h @@ -0,0 +1,231 @@ +#ifndef _ROS_controller_manager_msgs_ControllerStatistics_h +#define _ROS_controller_manager_msgs_ControllerStatistics_h + +#include +#include +#include +#include "ros/msg.h" +#include "ros/time.h" +#include "ros/duration.h" + +namespace controller_manager_msgs +{ + + class ControllerStatistics : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef const char* _type_type; + _type_type type; + typedef ros::Time _timestamp_type; + _timestamp_type timestamp; + typedef bool _running_type; + _running_type running; + typedef ros::Duration _max_time_type; + _max_time_type max_time; + typedef ros::Duration _mean_time_type; + _mean_time_type mean_time; + typedef ros::Duration _variance_time_type; + _variance_time_type variance_time; + typedef int32_t _num_control_loop_overruns_type; + _num_control_loop_overruns_type num_control_loop_overruns; + typedef ros::Time _time_last_control_loop_overrun_type; + _time_last_control_loop_overrun_type time_last_control_loop_overrun; + + ControllerStatistics(): + name(""), + type(""), + timestamp(), + running(0), + max_time(), + mean_time(), + variance_time(), + num_control_loop_overruns(0), + time_last_control_loop_overrun() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + uint32_t length_type = strlen(this->type); + varToArr(outbuffer + offset, length_type); + offset += 4; + memcpy(outbuffer + offset, this->type, length_type); + offset += length_type; + *(outbuffer + offset + 0) = (this->timestamp.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->timestamp.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->timestamp.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->timestamp.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->timestamp.sec); + *(outbuffer + offset + 0) = (this->timestamp.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->timestamp.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->timestamp.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->timestamp.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->timestamp.nsec); + union { + bool real; + uint8_t base; + } u_running; + u_running.real = this->running; + *(outbuffer + offset + 0) = (u_running.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->running); + *(outbuffer + offset + 0) = (this->max_time.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->max_time.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->max_time.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->max_time.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->max_time.sec); + *(outbuffer + offset + 0) = (this->max_time.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->max_time.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->max_time.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->max_time.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->max_time.nsec); + *(outbuffer + offset + 0) = (this->mean_time.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->mean_time.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->mean_time.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->mean_time.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->mean_time.sec); + *(outbuffer + offset + 0) = (this->mean_time.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->mean_time.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->mean_time.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->mean_time.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->mean_time.nsec); + *(outbuffer + offset + 0) = (this->variance_time.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->variance_time.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->variance_time.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->variance_time.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->variance_time.sec); + *(outbuffer + offset + 0) = (this->variance_time.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->variance_time.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->variance_time.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->variance_time.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->variance_time.nsec); + union { + int32_t real; + uint32_t base; + } u_num_control_loop_overruns; + u_num_control_loop_overruns.real = this->num_control_loop_overruns; + *(outbuffer + offset + 0) = (u_num_control_loop_overruns.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_num_control_loop_overruns.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_num_control_loop_overruns.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_num_control_loop_overruns.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->num_control_loop_overruns); + *(outbuffer + offset + 0) = (this->time_last_control_loop_overrun.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->time_last_control_loop_overrun.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->time_last_control_loop_overrun.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->time_last_control_loop_overrun.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->time_last_control_loop_overrun.sec); + *(outbuffer + offset + 0) = (this->time_last_control_loop_overrun.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->time_last_control_loop_overrun.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->time_last_control_loop_overrun.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->time_last_control_loop_overrun.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->time_last_control_loop_overrun.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + uint32_t length_type; + arrToVar(length_type, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_type; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_type-1]=0; + this->type = (char *)(inbuffer + offset-1); + offset += length_type; + this->timestamp.sec = ((uint32_t) (*(inbuffer + offset))); + this->timestamp.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->timestamp.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->timestamp.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->timestamp.sec); + this->timestamp.nsec = ((uint32_t) (*(inbuffer + offset))); + this->timestamp.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->timestamp.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->timestamp.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->timestamp.nsec); + union { + bool real; + uint8_t base; + } u_running; + u_running.base = 0; + u_running.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->running = u_running.real; + offset += sizeof(this->running); + this->max_time.sec = ((uint32_t) (*(inbuffer + offset))); + this->max_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->max_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->max_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->max_time.sec); + this->max_time.nsec = ((uint32_t) (*(inbuffer + offset))); + this->max_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->max_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->max_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->max_time.nsec); + this->mean_time.sec = ((uint32_t) (*(inbuffer + offset))); + this->mean_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->mean_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->mean_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->mean_time.sec); + this->mean_time.nsec = ((uint32_t) (*(inbuffer + offset))); + this->mean_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->mean_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->mean_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->mean_time.nsec); + this->variance_time.sec = ((uint32_t) (*(inbuffer + offset))); + this->variance_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->variance_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->variance_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->variance_time.sec); + this->variance_time.nsec = ((uint32_t) (*(inbuffer + offset))); + this->variance_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->variance_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->variance_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->variance_time.nsec); + union { + int32_t real; + uint32_t base; + } u_num_control_loop_overruns; + u_num_control_loop_overruns.base = 0; + u_num_control_loop_overruns.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_num_control_loop_overruns.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_num_control_loop_overruns.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_num_control_loop_overruns.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->num_control_loop_overruns = u_num_control_loop_overruns.real; + offset += sizeof(this->num_control_loop_overruns); + this->time_last_control_loop_overrun.sec = ((uint32_t) (*(inbuffer + offset))); + this->time_last_control_loop_overrun.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->time_last_control_loop_overrun.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->time_last_control_loop_overrun.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->time_last_control_loop_overrun.sec); + this->time_last_control_loop_overrun.nsec = ((uint32_t) (*(inbuffer + offset))); + this->time_last_control_loop_overrun.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->time_last_control_loop_overrun.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->time_last_control_loop_overrun.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->time_last_control_loop_overrun.nsec); + return offset; + } + + const char * getType(){ return "controller_manager_msgs/ControllerStatistics"; }; + const char * getMD5(){ return "697780c372c8d8597a1436d0e2ad3ba8"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/controller_manager_msgs/ControllersStatistics.h b/source/ros-max-lib/ros_lib/controller_manager_msgs/ControllersStatistics.h new file mode 100644 index 0000000..a3c0503 --- /dev/null +++ b/source/ros-max-lib/ros_lib/controller_manager_msgs/ControllersStatistics.h @@ -0,0 +1,70 @@ +#ifndef _ROS_controller_manager_msgs_ControllersStatistics_h +#define _ROS_controller_manager_msgs_ControllersStatistics_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "controller_manager_msgs/ControllerStatistics.h" + +namespace controller_manager_msgs +{ + + class ControllersStatistics : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t controller_length; + typedef controller_manager_msgs::ControllerStatistics _controller_type; + _controller_type st_controller; + _controller_type * controller; + + ControllersStatistics(): + header(), + controller_length(0), controller(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->controller_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->controller_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->controller_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->controller_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->controller_length); + for( uint32_t i = 0; i < controller_length; i++){ + offset += this->controller[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t controller_lengthT = ((uint32_t) (*(inbuffer + offset))); + controller_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + controller_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + controller_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->controller_length); + if(controller_lengthT > controller_length) + this->controller = (controller_manager_msgs::ControllerStatistics*)realloc(this->controller, controller_lengthT * sizeof(controller_manager_msgs::ControllerStatistics)); + controller_length = controller_lengthT; + for( uint32_t i = 0; i < controller_length; i++){ + offset += this->st_controller.deserialize(inbuffer + offset); + memcpy( &(this->controller[i]), &(this->st_controller), sizeof(controller_manager_msgs::ControllerStatistics)); + } + return offset; + } + + const char * getType(){ return "controller_manager_msgs/ControllersStatistics"; }; + const char * getMD5(){ return "a154c347736773e3700d1719105df29d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/controller_manager_msgs/HardwareInterfaceResources.h b/source/ros-max-lib/ros_lib/controller_manager_msgs/HardwareInterfaceResources.h new file mode 100644 index 0000000..5b574c1 --- /dev/null +++ b/source/ros-max-lib/ros_lib/controller_manager_msgs/HardwareInterfaceResources.h @@ -0,0 +1,92 @@ +#ifndef _ROS_controller_manager_msgs_HardwareInterfaceResources_h +#define _ROS_controller_manager_msgs_HardwareInterfaceResources_h + +#include +#include +#include +#include "ros/msg.h" + +namespace controller_manager_msgs +{ + + class HardwareInterfaceResources : public ros::Msg + { + public: + typedef const char* _hardware_interface_type; + _hardware_interface_type hardware_interface; + uint32_t resources_length; + typedef char* _resources_type; + _resources_type st_resources; + _resources_type * resources; + + HardwareInterfaceResources(): + hardware_interface(""), + resources_length(0), resources(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_hardware_interface = strlen(this->hardware_interface); + varToArr(outbuffer + offset, length_hardware_interface); + offset += 4; + memcpy(outbuffer + offset, this->hardware_interface, length_hardware_interface); + offset += length_hardware_interface; + *(outbuffer + offset + 0) = (this->resources_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->resources_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->resources_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->resources_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->resources_length); + for( uint32_t i = 0; i < resources_length; i++){ + uint32_t length_resourcesi = strlen(this->resources[i]); + varToArr(outbuffer + offset, length_resourcesi); + offset += 4; + memcpy(outbuffer + offset, this->resources[i], length_resourcesi); + offset += length_resourcesi; + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_hardware_interface; + arrToVar(length_hardware_interface, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_hardware_interface; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_hardware_interface-1]=0; + this->hardware_interface = (char *)(inbuffer + offset-1); + offset += length_hardware_interface; + uint32_t resources_lengthT = ((uint32_t) (*(inbuffer + offset))); + resources_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + resources_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + resources_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->resources_length); + if(resources_lengthT > resources_length) + this->resources = (char**)realloc(this->resources, resources_lengthT * sizeof(char*)); + resources_length = resources_lengthT; + for( uint32_t i = 0; i < resources_length; i++){ + uint32_t length_st_resources; + arrToVar(length_st_resources, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_resources; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_resources-1]=0; + this->st_resources = (char *)(inbuffer + offset-1); + offset += length_st_resources; + memcpy( &(this->resources[i]), &(this->st_resources), sizeof(char*)); + } + return offset; + } + + const char * getType(){ return "controller_manager_msgs/HardwareInterfaceResources"; }; + const char * getMD5(){ return "f25b55cbf1d1f76e82e5ec9e83f76258"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/controller_manager_msgs/ListControllerTypes.h b/source/ros-max-lib/ros_lib/controller_manager_msgs/ListControllerTypes.h new file mode 100644 index 0000000..45097f8 --- /dev/null +++ b/source/ros-max-lib/ros_lib/controller_manager_msgs/ListControllerTypes.h @@ -0,0 +1,144 @@ +#ifndef _ROS_SERVICE_ListControllerTypes_h +#define _ROS_SERVICE_ListControllerTypes_h +#include +#include +#include +#include "ros/msg.h" + +namespace controller_manager_msgs +{ + +static const char LISTCONTROLLERTYPES[] = "controller_manager_msgs/ListControllerTypes"; + + class ListControllerTypesRequest : public ros::Msg + { + public: + + ListControllerTypesRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return LISTCONTROLLERTYPES; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class ListControllerTypesResponse : public ros::Msg + { + public: + uint32_t types_length; + typedef char* _types_type; + _types_type st_types; + _types_type * types; + uint32_t base_classes_length; + typedef char* _base_classes_type; + _base_classes_type st_base_classes; + _base_classes_type * base_classes; + + ListControllerTypesResponse(): + types_length(0), types(NULL), + base_classes_length(0), base_classes(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->types_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->types_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->types_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->types_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->types_length); + for( uint32_t i = 0; i < types_length; i++){ + uint32_t length_typesi = strlen(this->types[i]); + varToArr(outbuffer + offset, length_typesi); + offset += 4; + memcpy(outbuffer + offset, this->types[i], length_typesi); + offset += length_typesi; + } + *(outbuffer + offset + 0) = (this->base_classes_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->base_classes_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->base_classes_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->base_classes_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->base_classes_length); + for( uint32_t i = 0; i < base_classes_length; i++){ + uint32_t length_base_classesi = strlen(this->base_classes[i]); + varToArr(outbuffer + offset, length_base_classesi); + offset += 4; + memcpy(outbuffer + offset, this->base_classes[i], length_base_classesi); + offset += length_base_classesi; + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t types_lengthT = ((uint32_t) (*(inbuffer + offset))); + types_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + types_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + types_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->types_length); + if(types_lengthT > types_length) + this->types = (char**)realloc(this->types, types_lengthT * sizeof(char*)); + types_length = types_lengthT; + for( uint32_t i = 0; i < types_length; i++){ + uint32_t length_st_types; + arrToVar(length_st_types, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_types; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_types-1]=0; + this->st_types = (char *)(inbuffer + offset-1); + offset += length_st_types; + memcpy( &(this->types[i]), &(this->st_types), sizeof(char*)); + } + uint32_t base_classes_lengthT = ((uint32_t) (*(inbuffer + offset))); + base_classes_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + base_classes_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + base_classes_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->base_classes_length); + if(base_classes_lengthT > base_classes_length) + this->base_classes = (char**)realloc(this->base_classes, base_classes_lengthT * sizeof(char*)); + base_classes_length = base_classes_lengthT; + for( uint32_t i = 0; i < base_classes_length; i++){ + uint32_t length_st_base_classes; + arrToVar(length_st_base_classes, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_base_classes; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_base_classes-1]=0; + this->st_base_classes = (char *)(inbuffer + offset-1); + offset += length_st_base_classes; + memcpy( &(this->base_classes[i]), &(this->st_base_classes), sizeof(char*)); + } + return offset; + } + + const char * getType(){ return LISTCONTROLLERTYPES; }; + const char * getMD5(){ return "c1d4cd11aefa9f97ba4aeb5b33987f4e"; }; + + }; + + class ListControllerTypes { + public: + typedef ListControllerTypesRequest Request; + typedef ListControllerTypesResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/controller_manager_msgs/ListControllers.h b/source/ros-max-lib/ros_lib/controller_manager_msgs/ListControllers.h new file mode 100644 index 0000000..f0d2a5e --- /dev/null +++ b/source/ros-max-lib/ros_lib/controller_manager_msgs/ListControllers.h @@ -0,0 +1,96 @@ +#ifndef _ROS_SERVICE_ListControllers_h +#define _ROS_SERVICE_ListControllers_h +#include +#include +#include +#include "ros/msg.h" +#include "controller_manager_msgs/ControllerState.h" + +namespace controller_manager_msgs +{ + +static const char LISTCONTROLLERS[] = "controller_manager_msgs/ListControllers"; + + class ListControllersRequest : public ros::Msg + { + public: + + ListControllersRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return LISTCONTROLLERS; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class ListControllersResponse : public ros::Msg + { + public: + uint32_t controller_length; + typedef controller_manager_msgs::ControllerState _controller_type; + _controller_type st_controller; + _controller_type * controller; + + ListControllersResponse(): + controller_length(0), controller(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->controller_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->controller_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->controller_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->controller_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->controller_length); + for( uint32_t i = 0; i < controller_length; i++){ + offset += this->controller[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t controller_lengthT = ((uint32_t) (*(inbuffer + offset))); + controller_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + controller_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + controller_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->controller_length); + if(controller_lengthT > controller_length) + this->controller = (controller_manager_msgs::ControllerState*)realloc(this->controller, controller_lengthT * sizeof(controller_manager_msgs::ControllerState)); + controller_length = controller_lengthT; + for( uint32_t i = 0; i < controller_length; i++){ + offset += this->st_controller.deserialize(inbuffer + offset); + memcpy( &(this->controller[i]), &(this->st_controller), sizeof(controller_manager_msgs::ControllerState)); + } + return offset; + } + + const char * getType(){ return LISTCONTROLLERS; }; + const char * getMD5(){ return "1341feb2e63fa791f855565d0da950d8"; }; + + }; + + class ListControllers { + public: + typedef ListControllersRequest Request; + typedef ListControllersResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/controller_manager_msgs/LoadController.h b/source/ros-max-lib/ros_lib/controller_manager_msgs/LoadController.h new file mode 100644 index 0000000..98d018f --- /dev/null +++ b/source/ros-max-lib/ros_lib/controller_manager_msgs/LoadController.h @@ -0,0 +1,105 @@ +#ifndef _ROS_SERVICE_LoadController_h +#define _ROS_SERVICE_LoadController_h +#include +#include +#include +#include "ros/msg.h" + +namespace controller_manager_msgs +{ + +static const char LOADCONTROLLER[] = "controller_manager_msgs/LoadController"; + + class LoadControllerRequest : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + + LoadControllerRequest(): + name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + return offset; + } + + const char * getType(){ return LOADCONTROLLER; }; + const char * getMD5(){ return "c1f3d28f1b044c871e6eff2e9fc3c667"; }; + + }; + + class LoadControllerResponse : public ros::Msg + { + public: + typedef bool _ok_type; + _ok_type ok; + + LoadControllerResponse(): + ok(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_ok; + u_ok.real = this->ok; + *(outbuffer + offset + 0) = (u_ok.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->ok); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_ok; + u_ok.base = 0; + u_ok.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->ok = u_ok.real; + offset += sizeof(this->ok); + return offset; + } + + const char * getType(){ return LOADCONTROLLER; }; + const char * getMD5(){ return "6f6da3883749771fac40d6deb24a8c02"; }; + + }; + + class LoadController { + public: + typedef LoadControllerRequest Request; + typedef LoadControllerResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/controller_manager_msgs/ReloadControllerLibraries.h b/source/ros-max-lib/ros_lib/controller_manager_msgs/ReloadControllerLibraries.h new file mode 100644 index 0000000..279de97 --- /dev/null +++ b/source/ros-max-lib/ros_lib/controller_manager_msgs/ReloadControllerLibraries.h @@ -0,0 +1,106 @@ +#ifndef _ROS_SERVICE_ReloadControllerLibraries_h +#define _ROS_SERVICE_ReloadControllerLibraries_h +#include +#include +#include +#include "ros/msg.h" + +namespace controller_manager_msgs +{ + +static const char RELOADCONTROLLERLIBRARIES[] = "controller_manager_msgs/ReloadControllerLibraries"; + + class ReloadControllerLibrariesRequest : public ros::Msg + { + public: + typedef bool _force_kill_type; + _force_kill_type force_kill; + + ReloadControllerLibrariesRequest(): + force_kill(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_force_kill; + u_force_kill.real = this->force_kill; + *(outbuffer + offset + 0) = (u_force_kill.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->force_kill); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_force_kill; + u_force_kill.base = 0; + u_force_kill.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->force_kill = u_force_kill.real; + offset += sizeof(this->force_kill); + return offset; + } + + const char * getType(){ return RELOADCONTROLLERLIBRARIES; }; + const char * getMD5(){ return "18442b59be9479097f11c543bddbac62"; }; + + }; + + class ReloadControllerLibrariesResponse : public ros::Msg + { + public: + typedef bool _ok_type; + _ok_type ok; + + ReloadControllerLibrariesResponse(): + ok(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_ok; + u_ok.real = this->ok; + *(outbuffer + offset + 0) = (u_ok.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->ok); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_ok; + u_ok.base = 0; + u_ok.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->ok = u_ok.real; + offset += sizeof(this->ok); + return offset; + } + + const char * getType(){ return RELOADCONTROLLERLIBRARIES; }; + const char * getMD5(){ return "6f6da3883749771fac40d6deb24a8c02"; }; + + }; + + class ReloadControllerLibraries { + public: + typedef ReloadControllerLibrariesRequest Request; + typedef ReloadControllerLibrariesResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/controller_manager_msgs/SwitchController.h b/source/ros-max-lib/ros_lib/controller_manager_msgs/SwitchController.h new file mode 100644 index 0000000..9b76c73 --- /dev/null +++ b/source/ros-max-lib/ros_lib/controller_manager_msgs/SwitchController.h @@ -0,0 +1,188 @@ +#ifndef _ROS_SERVICE_SwitchController_h +#define _ROS_SERVICE_SwitchController_h +#include +#include +#include +#include "ros/msg.h" + +namespace controller_manager_msgs +{ + +static const char SWITCHCONTROLLER[] = "controller_manager_msgs/SwitchController"; + + class SwitchControllerRequest : public ros::Msg + { + public: + uint32_t start_controllers_length; + typedef char* _start_controllers_type; + _start_controllers_type st_start_controllers; + _start_controllers_type * start_controllers; + uint32_t stop_controllers_length; + typedef char* _stop_controllers_type; + _stop_controllers_type st_stop_controllers; + _stop_controllers_type * stop_controllers; + typedef int32_t _strictness_type; + _strictness_type strictness; + enum { BEST_EFFORT = 1 }; + enum { STRICT = 2 }; + + SwitchControllerRequest(): + start_controllers_length(0), start_controllers(NULL), + stop_controllers_length(0), stop_controllers(NULL), + strictness(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->start_controllers_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->start_controllers_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->start_controllers_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->start_controllers_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->start_controllers_length); + for( uint32_t i = 0; i < start_controllers_length; i++){ + uint32_t length_start_controllersi = strlen(this->start_controllers[i]); + varToArr(outbuffer + offset, length_start_controllersi); + offset += 4; + memcpy(outbuffer + offset, this->start_controllers[i], length_start_controllersi); + offset += length_start_controllersi; + } + *(outbuffer + offset + 0) = (this->stop_controllers_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stop_controllers_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stop_controllers_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stop_controllers_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->stop_controllers_length); + for( uint32_t i = 0; i < stop_controllers_length; i++){ + uint32_t length_stop_controllersi = strlen(this->stop_controllers[i]); + varToArr(outbuffer + offset, length_stop_controllersi); + offset += 4; + memcpy(outbuffer + offset, this->stop_controllers[i], length_stop_controllersi); + offset += length_stop_controllersi; + } + union { + int32_t real; + uint32_t base; + } u_strictness; + u_strictness.real = this->strictness; + *(outbuffer + offset + 0) = (u_strictness.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_strictness.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_strictness.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_strictness.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->strictness); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t start_controllers_lengthT = ((uint32_t) (*(inbuffer + offset))); + start_controllers_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + start_controllers_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + start_controllers_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->start_controllers_length); + if(start_controllers_lengthT > start_controllers_length) + this->start_controllers = (char**)realloc(this->start_controllers, start_controllers_lengthT * sizeof(char*)); + start_controllers_length = start_controllers_lengthT; + for( uint32_t i = 0; i < start_controllers_length; i++){ + uint32_t length_st_start_controllers; + arrToVar(length_st_start_controllers, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_start_controllers; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_start_controllers-1]=0; + this->st_start_controllers = (char *)(inbuffer + offset-1); + offset += length_st_start_controllers; + memcpy( &(this->start_controllers[i]), &(this->st_start_controllers), sizeof(char*)); + } + uint32_t stop_controllers_lengthT = ((uint32_t) (*(inbuffer + offset))); + stop_controllers_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + stop_controllers_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + stop_controllers_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stop_controllers_length); + if(stop_controllers_lengthT > stop_controllers_length) + this->stop_controllers = (char**)realloc(this->stop_controllers, stop_controllers_lengthT * sizeof(char*)); + stop_controllers_length = stop_controllers_lengthT; + for( uint32_t i = 0; i < stop_controllers_length; i++){ + uint32_t length_st_stop_controllers; + arrToVar(length_st_stop_controllers, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_stop_controllers; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_stop_controllers-1]=0; + this->st_stop_controllers = (char *)(inbuffer + offset-1); + offset += length_st_stop_controllers; + memcpy( &(this->stop_controllers[i]), &(this->st_stop_controllers), sizeof(char*)); + } + union { + int32_t real; + uint32_t base; + } u_strictness; + u_strictness.base = 0; + u_strictness.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_strictness.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_strictness.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_strictness.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->strictness = u_strictness.real; + offset += sizeof(this->strictness); + return offset; + } + + const char * getType(){ return SWITCHCONTROLLER; }; + const char * getMD5(){ return "434da54adc434a5af5743ed711fd6ba1"; }; + + }; + + class SwitchControllerResponse : public ros::Msg + { + public: + typedef bool _ok_type; + _ok_type ok; + + SwitchControllerResponse(): + ok(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_ok; + u_ok.real = this->ok; + *(outbuffer + offset + 0) = (u_ok.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->ok); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_ok; + u_ok.base = 0; + u_ok.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->ok = u_ok.real; + offset += sizeof(this->ok); + return offset; + } + + const char * getType(){ return SWITCHCONTROLLER; }; + const char * getMD5(){ return "6f6da3883749771fac40d6deb24a8c02"; }; + + }; + + class SwitchController { + public: + typedef SwitchControllerRequest Request; + typedef SwitchControllerResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/controller_manager_msgs/UnloadController.h b/source/ros-max-lib/ros_lib/controller_manager_msgs/UnloadController.h new file mode 100644 index 0000000..b8bba74 --- /dev/null +++ b/source/ros-max-lib/ros_lib/controller_manager_msgs/UnloadController.h @@ -0,0 +1,105 @@ +#ifndef _ROS_SERVICE_UnloadController_h +#define _ROS_SERVICE_UnloadController_h +#include +#include +#include +#include "ros/msg.h" + +namespace controller_manager_msgs +{ + +static const char UNLOADCONTROLLER[] = "controller_manager_msgs/UnloadController"; + + class UnloadControllerRequest : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + + UnloadControllerRequest(): + name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + return offset; + } + + const char * getType(){ return UNLOADCONTROLLER; }; + const char * getMD5(){ return "c1f3d28f1b044c871e6eff2e9fc3c667"; }; + + }; + + class UnloadControllerResponse : public ros::Msg + { + public: + typedef bool _ok_type; + _ok_type ok; + + UnloadControllerResponse(): + ok(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_ok; + u_ok.real = this->ok; + *(outbuffer + offset + 0) = (u_ok.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->ok); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_ok; + u_ok.base = 0; + u_ok.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->ok = u_ok.real; + offset += sizeof(this->ok); + return offset; + } + + const char * getType(){ return UNLOADCONTROLLER; }; + const char * getMD5(){ return "6f6da3883749771fac40d6deb24a8c02"; }; + + }; + + class UnloadController { + public: + typedef UnloadControllerRequest Request; + typedef UnloadControllerResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/costmap_2d/VoxelGrid.h b/source/ros-max-lib/ros_lib/costmap_2d/VoxelGrid.h new file mode 100644 index 0000000..2fa9dce --- /dev/null +++ b/source/ros-max-lib/ros_lib/costmap_2d/VoxelGrid.h @@ -0,0 +1,128 @@ +#ifndef _ROS_costmap_2d_VoxelGrid_h +#define _ROS_costmap_2d_VoxelGrid_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Point32.h" +#include "geometry_msgs/Vector3.h" + +namespace costmap_2d +{ + + class VoxelGrid : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t data_length; + typedef uint32_t _data_type; + _data_type st_data; + _data_type * data; + typedef geometry_msgs::Point32 _origin_type; + _origin_type origin; + typedef geometry_msgs::Vector3 _resolutions_type; + _resolutions_type resolutions; + typedef uint32_t _size_x_type; + _size_x_type size_x; + typedef uint32_t _size_y_type; + _size_y_type size_y; + typedef uint32_t _size_z_type; + _size_z_type size_z; + + VoxelGrid(): + header(), + data_length(0), data(NULL), + origin(), + resolutions(), + size_x(0), + size_y(0), + size_z(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data[i] >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data[i] >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data[i] >> (8 * 3)) & 0xFF; + offset += sizeof(this->data[i]); + } + offset += this->origin.serialize(outbuffer + offset); + offset += this->resolutions.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->size_x >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->size_x >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->size_x >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->size_x >> (8 * 3)) & 0xFF; + offset += sizeof(this->size_x); + *(outbuffer + offset + 0) = (this->size_y >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->size_y >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->size_y >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->size_y >> (8 * 3)) & 0xFF; + offset += sizeof(this->size_y); + *(outbuffer + offset + 0) = (this->size_z >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->size_z >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->size_z >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->size_z >> (8 * 3)) & 0xFF; + offset += sizeof(this->size_z); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (uint32_t*)realloc(this->data, data_lengthT * sizeof(uint32_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + this->st_data = ((uint32_t) (*(inbuffer + offset))); + this->st_data |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->st_data |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->st_data |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(uint32_t)); + } + offset += this->origin.deserialize(inbuffer + offset); + offset += this->resolutions.deserialize(inbuffer + offset); + this->size_x = ((uint32_t) (*(inbuffer + offset))); + this->size_x |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->size_x |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->size_x |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->size_x); + this->size_y = ((uint32_t) (*(inbuffer + offset))); + this->size_y |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->size_y |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->size_y |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->size_y); + this->size_z = ((uint32_t) (*(inbuffer + offset))); + this->size_z |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->size_z |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->size_z |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->size_z); + return offset; + } + + const char * getType(){ return "costmap_2d/VoxelGrid"; }; + const char * getMD5(){ return "48a040827e1322073d78ece5a497029c"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/diagnostic_msgs/AddDiagnostics.h b/source/ros-max-lib/ros_lib/diagnostic_msgs/AddDiagnostics.h new file mode 100644 index 0000000..4180098 --- /dev/null +++ b/source/ros-max-lib/ros_lib/diagnostic_msgs/AddDiagnostics.h @@ -0,0 +1,122 @@ +#ifndef _ROS_SERVICE_AddDiagnostics_h +#define _ROS_SERVICE_AddDiagnostics_h +#include +#include +#include +#include "ros/msg.h" + +namespace diagnostic_msgs +{ + +static const char ADDDIAGNOSTICS[] = "diagnostic_msgs/AddDiagnostics"; + + class AddDiagnosticsRequest : public ros::Msg + { + public: + typedef const char* _load_namespace_type; + _load_namespace_type load_namespace; + + AddDiagnosticsRequest(): + load_namespace("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_load_namespace = strlen(this->load_namespace); + varToArr(outbuffer + offset, length_load_namespace); + offset += 4; + memcpy(outbuffer + offset, this->load_namespace, length_load_namespace); + offset += length_load_namespace; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_load_namespace; + arrToVar(length_load_namespace, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_load_namespace; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_load_namespace-1]=0; + this->load_namespace = (char *)(inbuffer + offset-1); + offset += length_load_namespace; + return offset; + } + + const char * getType(){ return ADDDIAGNOSTICS; }; + const char * getMD5(){ return "c26cf6e164288fbc6050d74f838bcdf0"; }; + + }; + + class AddDiagnosticsResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _message_type; + _message_type message; + + AddDiagnosticsResponse(): + success(0), + message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_message = strlen(this->message); + varToArr(outbuffer + offset, length_message); + offset += 4; + memcpy(outbuffer + offset, this->message, length_message); + offset += length_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_message; + arrToVar(length_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_message-1]=0; + this->message = (char *)(inbuffer + offset-1); + offset += length_message; + return offset; + } + + const char * getType(){ return ADDDIAGNOSTICS; }; + const char * getMD5(){ return "937c9679a518e3a18d831e57125ea522"; }; + + }; + + class AddDiagnostics { + public: + typedef AddDiagnosticsRequest Request; + typedef AddDiagnosticsResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/diagnostic_msgs/DiagnosticArray.h b/source/ros-max-lib/ros_lib/diagnostic_msgs/DiagnosticArray.h new file mode 100644 index 0000000..1deb743 --- /dev/null +++ b/source/ros-max-lib/ros_lib/diagnostic_msgs/DiagnosticArray.h @@ -0,0 +1,70 @@ +#ifndef _ROS_diagnostic_msgs_DiagnosticArray_h +#define _ROS_diagnostic_msgs_DiagnosticArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "diagnostic_msgs/DiagnosticStatus.h" + +namespace diagnostic_msgs +{ + + class DiagnosticArray : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t status_length; + typedef diagnostic_msgs::DiagnosticStatus _status_type; + _status_type st_status; + _status_type * status; + + DiagnosticArray(): + header(), + status_length(0), status(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->status_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->status_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->status_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->status_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->status_length); + for( uint32_t i = 0; i < status_length; i++){ + offset += this->status[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t status_lengthT = ((uint32_t) (*(inbuffer + offset))); + status_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + status_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + status_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->status_length); + if(status_lengthT > status_length) + this->status = (diagnostic_msgs::DiagnosticStatus*)realloc(this->status, status_lengthT * sizeof(diagnostic_msgs::DiagnosticStatus)); + status_length = status_lengthT; + for( uint32_t i = 0; i < status_length; i++){ + offset += this->st_status.deserialize(inbuffer + offset); + memcpy( &(this->status[i]), &(this->st_status), sizeof(diagnostic_msgs::DiagnosticStatus)); + } + return offset; + } + + const char * getType(){ return "diagnostic_msgs/DiagnosticArray"; }; + const char * getMD5(){ return "60810da900de1dd6ddd437c3503511da"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/diagnostic_msgs/DiagnosticStatus.h b/source/ros-max-lib/ros_lib/diagnostic_msgs/DiagnosticStatus.h new file mode 100644 index 0000000..490c163 --- /dev/null +++ b/source/ros-max-lib/ros_lib/diagnostic_msgs/DiagnosticStatus.h @@ -0,0 +1,137 @@ +#ifndef _ROS_diagnostic_msgs_DiagnosticStatus_h +#define _ROS_diagnostic_msgs_DiagnosticStatus_h + +#include +#include +#include +#include "ros/msg.h" +#include "diagnostic_msgs/KeyValue.h" + +namespace diagnostic_msgs +{ + + class DiagnosticStatus : public ros::Msg + { + public: + typedef int8_t _level_type; + _level_type level; + typedef const char* _name_type; + _name_type name; + typedef const char* _message_type; + _message_type message; + typedef const char* _hardware_id_type; + _hardware_id_type hardware_id; + uint32_t values_length; + typedef diagnostic_msgs::KeyValue _values_type; + _values_type st_values; + _values_type * values; + enum { OK = 0 }; + enum { WARN = 1 }; + enum { ERROR = 2 }; + enum { STALE = 3 }; + + DiagnosticStatus(): + level(0), + name(""), + message(""), + hardware_id(""), + values_length(0), values(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int8_t real; + uint8_t base; + } u_level; + u_level.real = this->level; + *(outbuffer + offset + 0) = (u_level.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->level); + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + uint32_t length_message = strlen(this->message); + varToArr(outbuffer + offset, length_message); + offset += 4; + memcpy(outbuffer + offset, this->message, length_message); + offset += length_message; + uint32_t length_hardware_id = strlen(this->hardware_id); + varToArr(outbuffer + offset, length_hardware_id); + offset += 4; + memcpy(outbuffer + offset, this->hardware_id, length_hardware_id); + offset += length_hardware_id; + *(outbuffer + offset + 0) = (this->values_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->values_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->values_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->values_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->values_length); + for( uint32_t i = 0; i < values_length; i++){ + offset += this->values[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int8_t real; + uint8_t base; + } u_level; + u_level.base = 0; + u_level.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->level = u_level.real; + offset += sizeof(this->level); + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + uint32_t length_message; + arrToVar(length_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_message-1]=0; + this->message = (char *)(inbuffer + offset-1); + offset += length_message; + uint32_t length_hardware_id; + arrToVar(length_hardware_id, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_hardware_id; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_hardware_id-1]=0; + this->hardware_id = (char *)(inbuffer + offset-1); + offset += length_hardware_id; + uint32_t values_lengthT = ((uint32_t) (*(inbuffer + offset))); + values_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + values_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + values_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->values_length); + if(values_lengthT > values_length) + this->values = (diagnostic_msgs::KeyValue*)realloc(this->values, values_lengthT * sizeof(diagnostic_msgs::KeyValue)); + values_length = values_lengthT; + for( uint32_t i = 0; i < values_length; i++){ + offset += this->st_values.deserialize(inbuffer + offset); + memcpy( &(this->values[i]), &(this->st_values), sizeof(diagnostic_msgs::KeyValue)); + } + return offset; + } + + const char * getType(){ return "diagnostic_msgs/DiagnosticStatus"; }; + const char * getMD5(){ return "d0ce08bc6e5ba34c7754f563a9cabaf1"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/diagnostic_msgs/KeyValue.h b/source/ros-max-lib/ros_lib/diagnostic_msgs/KeyValue.h new file mode 100644 index 0000000..e94dd76 --- /dev/null +++ b/source/ros-max-lib/ros_lib/diagnostic_msgs/KeyValue.h @@ -0,0 +1,72 @@ +#ifndef _ROS_diagnostic_msgs_KeyValue_h +#define _ROS_diagnostic_msgs_KeyValue_h + +#include +#include +#include +#include "ros/msg.h" + +namespace diagnostic_msgs +{ + + class KeyValue : public ros::Msg + { + public: + typedef const char* _key_type; + _key_type key; + typedef const char* _value_type; + _value_type value; + + KeyValue(): + key(""), + value("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_key = strlen(this->key); + varToArr(outbuffer + offset, length_key); + offset += 4; + memcpy(outbuffer + offset, this->key, length_key); + offset += length_key; + uint32_t length_value = strlen(this->value); + varToArr(outbuffer + offset, length_value); + offset += 4; + memcpy(outbuffer + offset, this->value, length_value); + offset += length_value; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_key; + arrToVar(length_key, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_key; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_key-1]=0; + this->key = (char *)(inbuffer + offset-1); + offset += length_key; + uint32_t length_value; + arrToVar(length_value, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_value; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_value-1]=0; + this->value = (char *)(inbuffer + offset-1); + offset += length_value; + return offset; + } + + const char * getType(){ return "diagnostic_msgs/KeyValue"; }; + const char * getMD5(){ return "cf57fdc6617a881a88c16e768132149c"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/diagnostic_msgs/SelfTest.h b/source/ros-max-lib/ros_lib/diagnostic_msgs/SelfTest.h new file mode 100644 index 0000000..6687c6b --- /dev/null +++ b/source/ros-max-lib/ros_lib/diagnostic_msgs/SelfTest.h @@ -0,0 +1,131 @@ +#ifndef _ROS_SERVICE_SelfTest_h +#define _ROS_SERVICE_SelfTest_h +#include +#include +#include +#include "ros/msg.h" +#include "diagnostic_msgs/DiagnosticStatus.h" + +namespace diagnostic_msgs +{ + +static const char SELFTEST[] = "diagnostic_msgs/SelfTest"; + + class SelfTestRequest : public ros::Msg + { + public: + + SelfTestRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return SELFTEST; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class SelfTestResponse : public ros::Msg + { + public: + typedef const char* _id_type; + _id_type id; + typedef int8_t _passed_type; + _passed_type passed; + uint32_t status_length; + typedef diagnostic_msgs::DiagnosticStatus _status_type; + _status_type st_status; + _status_type * status; + + SelfTestResponse(): + id(""), + passed(0), + status_length(0), status(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_id = strlen(this->id); + varToArr(outbuffer + offset, length_id); + offset += 4; + memcpy(outbuffer + offset, this->id, length_id); + offset += length_id; + union { + int8_t real; + uint8_t base; + } u_passed; + u_passed.real = this->passed; + *(outbuffer + offset + 0) = (u_passed.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->passed); + *(outbuffer + offset + 0) = (this->status_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->status_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->status_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->status_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->status_length); + for( uint32_t i = 0; i < status_length; i++){ + offset += this->status[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_id; + arrToVar(length_id, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_id; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_id-1]=0; + this->id = (char *)(inbuffer + offset-1); + offset += length_id; + union { + int8_t real; + uint8_t base; + } u_passed; + u_passed.base = 0; + u_passed.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->passed = u_passed.real; + offset += sizeof(this->passed); + uint32_t status_lengthT = ((uint32_t) (*(inbuffer + offset))); + status_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + status_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + status_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->status_length); + if(status_lengthT > status_length) + this->status = (diagnostic_msgs::DiagnosticStatus*)realloc(this->status, status_lengthT * sizeof(diagnostic_msgs::DiagnosticStatus)); + status_length = status_lengthT; + for( uint32_t i = 0; i < status_length; i++){ + offset += this->st_status.deserialize(inbuffer + offset); + memcpy( &(this->status[i]), &(this->st_status), sizeof(diagnostic_msgs::DiagnosticStatus)); + } + return offset; + } + + const char * getType(){ return SELFTEST; }; + const char * getMD5(){ return "ac21b1bab7ab17546986536c22eb34e9"; }; + + }; + + class SelfTest { + public: + typedef SelfTestRequest Request; + typedef SelfTestResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/duration.cpp b/source/ros-max-lib/ros_lib/duration.cpp new file mode 100644 index 0000000..d2dfdd6 --- /dev/null +++ b/source/ros-max-lib/ros_lib/duration.cpp @@ -0,0 +1,83 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2011, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include "ros/duration.h" + +namespace ros +{ +void normalizeSecNSecSigned(int32_t &sec, int32_t &nsec) +{ + int32_t nsec_part = nsec; + int32_t sec_part = sec; + + while (nsec_part > 1000000000L) + { + nsec_part -= 1000000000L; + ++sec_part; + } + while (nsec_part < 0) + { + nsec_part += 1000000000L; + --sec_part; + } + sec = sec_part; + nsec = nsec_part; +} + +Duration& Duration::operator+=(const Duration &rhs) +{ + sec += rhs.sec; + nsec += rhs.nsec; + normalizeSecNSecSigned(sec, nsec); + return *this; +} + +Duration& Duration::operator-=(const Duration &rhs) +{ + sec += -rhs.sec; + nsec += -rhs.nsec; + normalizeSecNSecSigned(sec, nsec); + return *this; +} + +Duration& Duration::operator*=(double scale) +{ + sec *= scale; + nsec *= scale; + normalizeSecNSecSigned(sec, nsec); + return *this; +} + +} diff --git a/source/ros-max-lib/ros_lib/dynamic_reconfigure/BoolParameter.h b/source/ros-max-lib/ros_lib/dynamic_reconfigure/BoolParameter.h new file mode 100644 index 0000000..9025486 --- /dev/null +++ b/source/ros-max-lib/ros_lib/dynamic_reconfigure/BoolParameter.h @@ -0,0 +1,73 @@ +#ifndef _ROS_dynamic_reconfigure_BoolParameter_h +#define _ROS_dynamic_reconfigure_BoolParameter_h + +#include +#include +#include +#include "ros/msg.h" + +namespace dynamic_reconfigure +{ + + class BoolParameter : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef bool _value_type; + _value_type value; + + BoolParameter(): + name(""), + value(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + union { + bool real; + uint8_t base; + } u_value; + u_value.real = this->value; + *(outbuffer + offset + 0) = (u_value.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->value); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + union { + bool real; + uint8_t base; + } u_value; + u_value.base = 0; + u_value.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->value = u_value.real; + offset += sizeof(this->value); + return offset; + } + + const char * getType(){ return "dynamic_reconfigure/BoolParameter"; }; + const char * getMD5(){ return "23f05028c1a699fb83e22401228c3a9e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/dynamic_reconfigure/Config.h b/source/ros-max-lib/ros_lib/dynamic_reconfigure/Config.h new file mode 100644 index 0000000..e5aca14 --- /dev/null +++ b/source/ros-max-lib/ros_lib/dynamic_reconfigure/Config.h @@ -0,0 +1,168 @@ +#ifndef _ROS_dynamic_reconfigure_Config_h +#define _ROS_dynamic_reconfigure_Config_h + +#include +#include +#include +#include "ros/msg.h" +#include "dynamic_reconfigure/BoolParameter.h" +#include "dynamic_reconfigure/IntParameter.h" +#include "dynamic_reconfigure/StrParameter.h" +#include "dynamic_reconfigure/DoubleParameter.h" +#include "dynamic_reconfigure/GroupState.h" + +namespace dynamic_reconfigure +{ + + class Config : public ros::Msg + { + public: + uint32_t bools_length; + typedef dynamic_reconfigure::BoolParameter _bools_type; + _bools_type st_bools; + _bools_type * bools; + uint32_t ints_length; + typedef dynamic_reconfigure::IntParameter _ints_type; + _ints_type st_ints; + _ints_type * ints; + uint32_t strs_length; + typedef dynamic_reconfigure::StrParameter _strs_type; + _strs_type st_strs; + _strs_type * strs; + uint32_t doubles_length; + typedef dynamic_reconfigure::DoubleParameter _doubles_type; + _doubles_type st_doubles; + _doubles_type * doubles; + uint32_t groups_length; + typedef dynamic_reconfigure::GroupState _groups_type; + _groups_type st_groups; + _groups_type * groups; + + Config(): + bools_length(0), bools(NULL), + ints_length(0), ints(NULL), + strs_length(0), strs(NULL), + doubles_length(0), doubles(NULL), + groups_length(0), groups(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->bools_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->bools_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->bools_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->bools_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->bools_length); + for( uint32_t i = 0; i < bools_length; i++){ + offset += this->bools[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->ints_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->ints_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->ints_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->ints_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->ints_length); + for( uint32_t i = 0; i < ints_length; i++){ + offset += this->ints[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->strs_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->strs_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->strs_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->strs_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->strs_length); + for( uint32_t i = 0; i < strs_length; i++){ + offset += this->strs[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->doubles_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->doubles_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->doubles_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->doubles_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->doubles_length); + for( uint32_t i = 0; i < doubles_length; i++){ + offset += this->doubles[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->groups_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->groups_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->groups_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->groups_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->groups_length); + for( uint32_t i = 0; i < groups_length; i++){ + offset += this->groups[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t bools_lengthT = ((uint32_t) (*(inbuffer + offset))); + bools_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + bools_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + bools_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->bools_length); + if(bools_lengthT > bools_length) + this->bools = (dynamic_reconfigure::BoolParameter*)realloc(this->bools, bools_lengthT * sizeof(dynamic_reconfigure::BoolParameter)); + bools_length = bools_lengthT; + for( uint32_t i = 0; i < bools_length; i++){ + offset += this->st_bools.deserialize(inbuffer + offset); + memcpy( &(this->bools[i]), &(this->st_bools), sizeof(dynamic_reconfigure::BoolParameter)); + } + uint32_t ints_lengthT = ((uint32_t) (*(inbuffer + offset))); + ints_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + ints_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + ints_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->ints_length); + if(ints_lengthT > ints_length) + this->ints = (dynamic_reconfigure::IntParameter*)realloc(this->ints, ints_lengthT * sizeof(dynamic_reconfigure::IntParameter)); + ints_length = ints_lengthT; + for( uint32_t i = 0; i < ints_length; i++){ + offset += this->st_ints.deserialize(inbuffer + offset); + memcpy( &(this->ints[i]), &(this->st_ints), sizeof(dynamic_reconfigure::IntParameter)); + } + uint32_t strs_lengthT = ((uint32_t) (*(inbuffer + offset))); + strs_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + strs_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + strs_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->strs_length); + if(strs_lengthT > strs_length) + this->strs = (dynamic_reconfigure::StrParameter*)realloc(this->strs, strs_lengthT * sizeof(dynamic_reconfigure::StrParameter)); + strs_length = strs_lengthT; + for( uint32_t i = 0; i < strs_length; i++){ + offset += this->st_strs.deserialize(inbuffer + offset); + memcpy( &(this->strs[i]), &(this->st_strs), sizeof(dynamic_reconfigure::StrParameter)); + } + uint32_t doubles_lengthT = ((uint32_t) (*(inbuffer + offset))); + doubles_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + doubles_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + doubles_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->doubles_length); + if(doubles_lengthT > doubles_length) + this->doubles = (dynamic_reconfigure::DoubleParameter*)realloc(this->doubles, doubles_lengthT * sizeof(dynamic_reconfigure::DoubleParameter)); + doubles_length = doubles_lengthT; + for( uint32_t i = 0; i < doubles_length; i++){ + offset += this->st_doubles.deserialize(inbuffer + offset); + memcpy( &(this->doubles[i]), &(this->st_doubles), sizeof(dynamic_reconfigure::DoubleParameter)); + } + uint32_t groups_lengthT = ((uint32_t) (*(inbuffer + offset))); + groups_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + groups_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + groups_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->groups_length); + if(groups_lengthT > groups_length) + this->groups = (dynamic_reconfigure::GroupState*)realloc(this->groups, groups_lengthT * sizeof(dynamic_reconfigure::GroupState)); + groups_length = groups_lengthT; + for( uint32_t i = 0; i < groups_length; i++){ + offset += this->st_groups.deserialize(inbuffer + offset); + memcpy( &(this->groups[i]), &(this->st_groups), sizeof(dynamic_reconfigure::GroupState)); + } + return offset; + } + + const char * getType(){ return "dynamic_reconfigure/Config"; }; + const char * getMD5(){ return "958f16a05573709014982821e6822580"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/dynamic_reconfigure/ConfigDescription.h b/source/ros-max-lib/ros_lib/dynamic_reconfigure/ConfigDescription.h new file mode 100644 index 0000000..4563bb7 --- /dev/null +++ b/source/ros-max-lib/ros_lib/dynamic_reconfigure/ConfigDescription.h @@ -0,0 +1,80 @@ +#ifndef _ROS_dynamic_reconfigure_ConfigDescription_h +#define _ROS_dynamic_reconfigure_ConfigDescription_h + +#include +#include +#include +#include "ros/msg.h" +#include "dynamic_reconfigure/Group.h" +#include "dynamic_reconfigure/Config.h" + +namespace dynamic_reconfigure +{ + + class ConfigDescription : public ros::Msg + { + public: + uint32_t groups_length; + typedef dynamic_reconfigure::Group _groups_type; + _groups_type st_groups; + _groups_type * groups; + typedef dynamic_reconfigure::Config _max_type; + _max_type max; + typedef dynamic_reconfigure::Config _min_type; + _min_type min; + typedef dynamic_reconfigure::Config _dflt_type; + _dflt_type dflt; + + ConfigDescription(): + groups_length(0), groups(NULL), + max(), + min(), + dflt() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->groups_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->groups_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->groups_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->groups_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->groups_length); + for( uint32_t i = 0; i < groups_length; i++){ + offset += this->groups[i].serialize(outbuffer + offset); + } + offset += this->max.serialize(outbuffer + offset); + offset += this->min.serialize(outbuffer + offset); + offset += this->dflt.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t groups_lengthT = ((uint32_t) (*(inbuffer + offset))); + groups_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + groups_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + groups_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->groups_length); + if(groups_lengthT > groups_length) + this->groups = (dynamic_reconfigure::Group*)realloc(this->groups, groups_lengthT * sizeof(dynamic_reconfigure::Group)); + groups_length = groups_lengthT; + for( uint32_t i = 0; i < groups_length; i++){ + offset += this->st_groups.deserialize(inbuffer + offset); + memcpy( &(this->groups[i]), &(this->st_groups), sizeof(dynamic_reconfigure::Group)); + } + offset += this->max.deserialize(inbuffer + offset); + offset += this->min.deserialize(inbuffer + offset); + offset += this->dflt.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "dynamic_reconfigure/ConfigDescription"; }; + const char * getMD5(){ return "757ce9d44ba8ddd801bb30bc456f946f"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/dynamic_reconfigure/DoubleParameter.h b/source/ros-max-lib/ros_lib/dynamic_reconfigure/DoubleParameter.h new file mode 100644 index 0000000..6f62e20 --- /dev/null +++ b/source/ros-max-lib/ros_lib/dynamic_reconfigure/DoubleParameter.h @@ -0,0 +1,87 @@ +#ifndef _ROS_dynamic_reconfigure_DoubleParameter_h +#define _ROS_dynamic_reconfigure_DoubleParameter_h + +#include +#include +#include +#include "ros/msg.h" + +namespace dynamic_reconfigure +{ + + class DoubleParameter : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef double _value_type; + _value_type value; + + DoubleParameter(): + name(""), + value(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + union { + double real; + uint64_t base; + } u_value; + u_value.real = this->value; + *(outbuffer + offset + 0) = (u_value.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_value.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_value.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_value.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_value.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_value.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_value.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_value.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->value); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + union { + double real; + uint64_t base; + } u_value; + u_value.base = 0; + u_value.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_value.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_value.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_value.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_value.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_value.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_value.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_value.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->value = u_value.real; + offset += sizeof(this->value); + return offset; + } + + const char * getType(){ return "dynamic_reconfigure/DoubleParameter"; }; + const char * getMD5(){ return "d8512f27253c0f65f928a67c329cd658"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/dynamic_reconfigure/Group.h b/source/ros-max-lib/ros_lib/dynamic_reconfigure/Group.h new file mode 100644 index 0000000..6f116ac --- /dev/null +++ b/source/ros-max-lib/ros_lib/dynamic_reconfigure/Group.h @@ -0,0 +1,146 @@ +#ifndef _ROS_dynamic_reconfigure_Group_h +#define _ROS_dynamic_reconfigure_Group_h + +#include +#include +#include +#include "ros/msg.h" +#include "dynamic_reconfigure/ParamDescription.h" + +namespace dynamic_reconfigure +{ + + class Group : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef const char* _type_type; + _type_type type; + uint32_t parameters_length; + typedef dynamic_reconfigure::ParamDescription _parameters_type; + _parameters_type st_parameters; + _parameters_type * parameters; + typedef int32_t _parent_type; + _parent_type parent; + typedef int32_t _id_type; + _id_type id; + + Group(): + name(""), + type(""), + parameters_length(0), parameters(NULL), + parent(0), + id(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + uint32_t length_type = strlen(this->type); + varToArr(outbuffer + offset, length_type); + offset += 4; + memcpy(outbuffer + offset, this->type, length_type); + offset += length_type; + *(outbuffer + offset + 0) = (this->parameters_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->parameters_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->parameters_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->parameters_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->parameters_length); + for( uint32_t i = 0; i < parameters_length; i++){ + offset += this->parameters[i].serialize(outbuffer + offset); + } + union { + int32_t real; + uint32_t base; + } u_parent; + u_parent.real = this->parent; + *(outbuffer + offset + 0) = (u_parent.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_parent.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_parent.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_parent.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->parent); + union { + int32_t real; + uint32_t base; + } u_id; + u_id.real = this->id; + *(outbuffer + offset + 0) = (u_id.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_id.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_id.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_id.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->id); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + uint32_t length_type; + arrToVar(length_type, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_type; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_type-1]=0; + this->type = (char *)(inbuffer + offset-1); + offset += length_type; + uint32_t parameters_lengthT = ((uint32_t) (*(inbuffer + offset))); + parameters_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + parameters_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + parameters_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->parameters_length); + if(parameters_lengthT > parameters_length) + this->parameters = (dynamic_reconfigure::ParamDescription*)realloc(this->parameters, parameters_lengthT * sizeof(dynamic_reconfigure::ParamDescription)); + parameters_length = parameters_lengthT; + for( uint32_t i = 0; i < parameters_length; i++){ + offset += this->st_parameters.deserialize(inbuffer + offset); + memcpy( &(this->parameters[i]), &(this->st_parameters), sizeof(dynamic_reconfigure::ParamDescription)); + } + union { + int32_t real; + uint32_t base; + } u_parent; + u_parent.base = 0; + u_parent.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_parent.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_parent.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_parent.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->parent = u_parent.real; + offset += sizeof(this->parent); + union { + int32_t real; + uint32_t base; + } u_id; + u_id.base = 0; + u_id.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_id.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_id.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_id.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->id = u_id.real; + offset += sizeof(this->id); + return offset; + } + + const char * getType(){ return "dynamic_reconfigure/Group"; }; + const char * getMD5(){ return "9e8cd9e9423c94823db3614dd8b1cf7a"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/dynamic_reconfigure/GroupState.h b/source/ros-max-lib/ros_lib/dynamic_reconfigure/GroupState.h new file mode 100644 index 0000000..7988eac --- /dev/null +++ b/source/ros-max-lib/ros_lib/dynamic_reconfigure/GroupState.h @@ -0,0 +1,121 @@ +#ifndef _ROS_dynamic_reconfigure_GroupState_h +#define _ROS_dynamic_reconfigure_GroupState_h + +#include +#include +#include +#include "ros/msg.h" + +namespace dynamic_reconfigure +{ + + class GroupState : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef bool _state_type; + _state_type state; + typedef int32_t _id_type; + _id_type id; + typedef int32_t _parent_type; + _parent_type parent; + + GroupState(): + name(""), + state(0), + id(0), + parent(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + union { + bool real; + uint8_t base; + } u_state; + u_state.real = this->state; + *(outbuffer + offset + 0) = (u_state.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->state); + union { + int32_t real; + uint32_t base; + } u_id; + u_id.real = this->id; + *(outbuffer + offset + 0) = (u_id.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_id.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_id.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_id.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->id); + union { + int32_t real; + uint32_t base; + } u_parent; + u_parent.real = this->parent; + *(outbuffer + offset + 0) = (u_parent.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_parent.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_parent.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_parent.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->parent); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + union { + bool real; + uint8_t base; + } u_state; + u_state.base = 0; + u_state.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->state = u_state.real; + offset += sizeof(this->state); + union { + int32_t real; + uint32_t base; + } u_id; + u_id.base = 0; + u_id.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_id.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_id.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_id.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->id = u_id.real; + offset += sizeof(this->id); + union { + int32_t real; + uint32_t base; + } u_parent; + u_parent.base = 0; + u_parent.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_parent.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_parent.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_parent.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->parent = u_parent.real; + offset += sizeof(this->parent); + return offset; + } + + const char * getType(){ return "dynamic_reconfigure/GroupState"; }; + const char * getMD5(){ return "a2d87f51dc22930325041a2f8b1571f8"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/dynamic_reconfigure/IntParameter.h b/source/ros-max-lib/ros_lib/dynamic_reconfigure/IntParameter.h new file mode 100644 index 0000000..aab4158 --- /dev/null +++ b/source/ros-max-lib/ros_lib/dynamic_reconfigure/IntParameter.h @@ -0,0 +1,79 @@ +#ifndef _ROS_dynamic_reconfigure_IntParameter_h +#define _ROS_dynamic_reconfigure_IntParameter_h + +#include +#include +#include +#include "ros/msg.h" + +namespace dynamic_reconfigure +{ + + class IntParameter : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef int32_t _value_type; + _value_type value; + + IntParameter(): + name(""), + value(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + union { + int32_t real; + uint32_t base; + } u_value; + u_value.real = this->value; + *(outbuffer + offset + 0) = (u_value.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_value.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_value.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_value.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->value); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + union { + int32_t real; + uint32_t base; + } u_value; + u_value.base = 0; + u_value.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_value.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_value.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_value.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->value = u_value.real; + offset += sizeof(this->value); + return offset; + } + + const char * getType(){ return "dynamic_reconfigure/IntParameter"; }; + const char * getMD5(){ return "65fedc7a0cbfb8db035e46194a350bf1"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/dynamic_reconfigure/ParamDescription.h b/source/ros-max-lib/ros_lib/dynamic_reconfigure/ParamDescription.h new file mode 100644 index 0000000..00ac5ba --- /dev/null +++ b/source/ros-max-lib/ros_lib/dynamic_reconfigure/ParamDescription.h @@ -0,0 +1,119 @@ +#ifndef _ROS_dynamic_reconfigure_ParamDescription_h +#define _ROS_dynamic_reconfigure_ParamDescription_h + +#include +#include +#include +#include "ros/msg.h" + +namespace dynamic_reconfigure +{ + + class ParamDescription : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef const char* _type_type; + _type_type type; + typedef uint32_t _level_type; + _level_type level; + typedef const char* _description_type; + _description_type description; + typedef const char* _edit_method_type; + _edit_method_type edit_method; + + ParamDescription(): + name(""), + type(""), + level(0), + description(""), + edit_method("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + uint32_t length_type = strlen(this->type); + varToArr(outbuffer + offset, length_type); + offset += 4; + memcpy(outbuffer + offset, this->type, length_type); + offset += length_type; + *(outbuffer + offset + 0) = (this->level >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->level >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->level >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->level >> (8 * 3)) & 0xFF; + offset += sizeof(this->level); + uint32_t length_description = strlen(this->description); + varToArr(outbuffer + offset, length_description); + offset += 4; + memcpy(outbuffer + offset, this->description, length_description); + offset += length_description; + uint32_t length_edit_method = strlen(this->edit_method); + varToArr(outbuffer + offset, length_edit_method); + offset += 4; + memcpy(outbuffer + offset, this->edit_method, length_edit_method); + offset += length_edit_method; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + uint32_t length_type; + arrToVar(length_type, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_type; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_type-1]=0; + this->type = (char *)(inbuffer + offset-1); + offset += length_type; + this->level = ((uint32_t) (*(inbuffer + offset))); + this->level |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->level |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->level |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->level); + uint32_t length_description; + arrToVar(length_description, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_description; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_description-1]=0; + this->description = (char *)(inbuffer + offset-1); + offset += length_description; + uint32_t length_edit_method; + arrToVar(length_edit_method, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_edit_method; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_edit_method-1]=0; + this->edit_method = (char *)(inbuffer + offset-1); + offset += length_edit_method; + return offset; + } + + const char * getType(){ return "dynamic_reconfigure/ParamDescription"; }; + const char * getMD5(){ return "7434fcb9348c13054e0c3b267c8cb34d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/dynamic_reconfigure/Reconfigure.h b/source/ros-max-lib/ros_lib/dynamic_reconfigure/Reconfigure.h new file mode 100644 index 0000000..e4e6b79 --- /dev/null +++ b/source/ros-max-lib/ros_lib/dynamic_reconfigure/Reconfigure.h @@ -0,0 +1,81 @@ +#ifndef _ROS_SERVICE_Reconfigure_h +#define _ROS_SERVICE_Reconfigure_h +#include +#include +#include +#include "ros/msg.h" +#include "dynamic_reconfigure/Config.h" + +namespace dynamic_reconfigure +{ + +static const char RECONFIGURE[] = "dynamic_reconfigure/Reconfigure"; + + class ReconfigureRequest : public ros::Msg + { + public: + typedef dynamic_reconfigure::Config _config_type; + _config_type config; + + ReconfigureRequest(): + config() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->config.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->config.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return RECONFIGURE; }; + const char * getMD5(){ return "ac41a77620a4a0348b7001641796a8a1"; }; + + }; + + class ReconfigureResponse : public ros::Msg + { + public: + typedef dynamic_reconfigure::Config _config_type; + _config_type config; + + ReconfigureResponse(): + config() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->config.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->config.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return RECONFIGURE; }; + const char * getMD5(){ return "ac41a77620a4a0348b7001641796a8a1"; }; + + }; + + class Reconfigure { + public: + typedef ReconfigureRequest Request; + typedef ReconfigureResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/dynamic_reconfigure/SensorLevels.h b/source/ros-max-lib/ros_lib/dynamic_reconfigure/SensorLevels.h new file mode 100644 index 0000000..8f85722 --- /dev/null +++ b/source/ros-max-lib/ros_lib/dynamic_reconfigure/SensorLevels.h @@ -0,0 +1,41 @@ +#ifndef _ROS_dynamic_reconfigure_SensorLevels_h +#define _ROS_dynamic_reconfigure_SensorLevels_h + +#include +#include +#include +#include "ros/msg.h" + +namespace dynamic_reconfigure +{ + + class SensorLevels : public ros::Msg + { + public: + enum { RECONFIGURE_CLOSE = 3 }; + enum { RECONFIGURE_STOP = 1 }; + enum { RECONFIGURE_RUNNING = 0 }; + + SensorLevels() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "dynamic_reconfigure/SensorLevels"; }; + const char * getMD5(){ return "6322637bee96d5489db6e2127c47602c"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/dynamic_reconfigure/StrParameter.h b/source/ros-max-lib/ros_lib/dynamic_reconfigure/StrParameter.h new file mode 100644 index 0000000..2e743f0 --- /dev/null +++ b/source/ros-max-lib/ros_lib/dynamic_reconfigure/StrParameter.h @@ -0,0 +1,72 @@ +#ifndef _ROS_dynamic_reconfigure_StrParameter_h +#define _ROS_dynamic_reconfigure_StrParameter_h + +#include +#include +#include +#include "ros/msg.h" + +namespace dynamic_reconfigure +{ + + class StrParameter : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef const char* _value_type; + _value_type value; + + StrParameter(): + name(""), + value("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + uint32_t length_value = strlen(this->value); + varToArr(outbuffer + offset, length_value); + offset += 4; + memcpy(outbuffer + offset, this->value, length_value); + offset += length_value; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + uint32_t length_value; + arrToVar(length_value, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_value; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_value-1]=0; + this->value = (char *)(inbuffer + offset-1); + offset += length_value; + return offset; + } + + const char * getType(){ return "dynamic_reconfigure/StrParameter"; }; + const char * getMD5(){ return "bc6ccc4a57f61779c8eaae61e9f422e0"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/embedded_linux_comms.c b/source/ros-max-lib/ros_lib/embedded_linux_comms.c new file mode 100644 index 0000000..bde6e37 --- /dev/null +++ b/source/ros-max-lib/ros_lib/embedded_linux_comms.c @@ -0,0 +1,208 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2012, Paul Bouchier + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef ROS_EMBEDDED_LINUX_COMMS_H +#define ROS_EMBEDDED_LINUX_COMMS_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define DEFAULT_PORTNUM 11411 + +void error(const char *msg) +{ + perror(msg); + exit(0); +} + +void set_nonblock(int socket) +{ + int flags; + flags = fcntl(socket, F_GETFL, 0); + assert(flags != -1); + fcntl(socket, F_SETFL, flags | O_NONBLOCK); +} + +int elCommInit(const char *portName, int baud) +{ + struct termios options; + int fd; + int sockfd; + struct sockaddr_in serv_addr; + struct hostent *server; + int rv; + + if (*portName == '/') // linux serial port names always begin with /dev + { + printf("Opening serial port %s\n", portName); + + fd = open(portName, O_RDWR | O_NOCTTY | O_NDELAY); + + if (fd == -1) + { + // Could not open the port. + perror("init(): Unable to open serial port - "); + } + else + { + // Sets the read() function to return NOW and not wait for data to enter + // buffer if there isn't anything there. + fcntl(fd, F_SETFL, FNDELAY); + + // Configure port for 8N1 transmission, 57600 baud, SW flow control. + tcgetattr(fd, &options); + cfsetispeed(&options, B57600); + cfsetospeed(&options, B57600); + options.c_cflag |= (CLOCAL | CREAD); + options.c_cflag &= ~PARENB; + options.c_cflag &= ~CSTOPB; + options.c_cflag &= ~CSIZE; + options.c_cflag |= CS8; + options.c_cflag &= ~CRTSCTS; + options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); + options.c_iflag &= ~(IXON | IXOFF | IXANY); + options.c_oflag &= ~OPOST; + + // Set the new options for the port "NOW" + tcsetattr(fd, TCSANOW, &options); + } + return fd; + } + else + { + // Split connection string into IP address and port. + const char* tcpPortNumString = strchr(portName, ':'); + long int tcpPortNum; + char ip[16]; + if (!tcpPortNumString) + { + tcpPortNum = DEFAULT_PORTNUM; + strncpy(ip, portName, 16); + } + else + { + tcpPortNum = strtol(tcpPortNumString + 1, NULL, 10); + strncpy(ip, portName, tcpPortNumString - portName); + } + + printf("Connecting to TCP server at %s:%ld....\n", ip, tcpPortNum); + + // Create the socket. + sockfd = socket(AF_INET, SOCK_STREAM, 0); + if (sockfd < 0) + { + error("ERROR opening socket"); + exit(-1); + } + + // Disable the Nagle (TCP No Delay) algorithm. + int flag = 1; + rv = setsockopt(sockfd, IPPROTO_TCP, TCP_NODELAY, (char *)&flag, sizeof(flag)); + if (rv == -1) + { + printf("Couldn't setsockopt(TCP_NODELAY)\n"); + exit(-1); + } + + // Connect to the server + server = gethostbyname(ip); + if (server == NULL) + { + fprintf(stderr, "ERROR, no such host\n"); + exit(0); + } + bzero((char *) &serv_addr, sizeof(serv_addr)); + serv_addr.sin_family = AF_INET; + bcopy((char *)server->h_addr, + (char *)&serv_addr.sin_addr.s_addr, + server->h_length); + serv_addr.sin_port = htons(tcpPortNum); + if (connect(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) + error("ERROR connecting"); + set_nonblock(sockfd); + printf("connected to server\n"); + return sockfd; + } + return -1; +} + +int elCommRead(int fd) +{ + unsigned char c; + unsigned int i; + int rv; + rv = read(fd, &c, 1); // read one byte + i = c; // convert byte to an int for return + if (rv > 0) + return i; // return the character read + if (rv < 0) + { + if ((errno != EAGAIN) && (errno != EWOULDBLOCK)) + perror("elCommRead() error:"); + } + + // return -1 or 0 either if we read nothing, or if read returned negative + return rv; +} + +int elCommWrite(int fd, uint8_t* data, int len) +{ + int rv = 0; + int length = len; + int totalsent = 0; + while (totalsent < length) + { + rv = write(fd, data + totalsent, length); + if (rv < 0) + perror("write(): error writing - trying again - "); + else + totalsent += rv; + } + return rv; +} + +#endif diff --git a/source/ros-max-lib/ros_lib/embedded_linux_hardware.h b/source/ros-max-lib/ros_lib/embedded_linux_hardware.h new file mode 100644 index 0000000..fff1b46 --- /dev/null +++ b/source/ros-max-lib/ros_lib/embedded_linux_hardware.h @@ -0,0 +1,172 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2011, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef ROS_EMBEDDED_LINUX_HARDWARE_H_ +#define ROS_EMBEDDED_LINUX_HARDWARE_H_ + +#include + +#ifdef BUILD_LIBROSSERIALEMBEDDEDLINUX +extern "C" int elCommInit(char *portName, int baud); +extern "C" int elCommRead(int fd); +extern "C" elCommWrite(int fd, uint8_t* data, int length); +#endif + +#ifdef __linux__ +#include +#endif + +// Includes necessary to support time on OS X. +#ifdef __MACH__ +#include +#include +static mach_timebase_info_data_t sTimebaseInfo; +#endif + +#define DEFAULT_PORT "/dev/ttyAM1" + +class EmbeddedLinuxHardware +{ +public: + EmbeddedLinuxHardware(const char *pn, long baud = 57600) + { + strncpy(portName, pn, 30); + baud_ = baud; + } + + EmbeddedLinuxHardware() + { + const char *envPortName = getenv("ROSSERIAL_PORT"); + if (envPortName == NULL) + strcpy(portName, DEFAULT_PORT); + else + strncpy(portName, envPortName, 29); + portName[29] = '\0'; // in case user gave us too long a port name + baud_ = 57600; + } + + void setBaud(long baud) + { + this->baud_ = baud; + } + + int getBaud() + { + return baud_; + } + + void init() + { + fd = elCommInit(portName, baud_); + if (fd < 0) + { + std::cout << "Exiting" << std::endl; + exit(-1); + } + std::cout << "EmbeddedHardware.h: opened serial port successfully\n"; + + initTime(); + } + + void init(const char *pName) + { + fd = elCommInit(pName, baud_); + if (fd < 0) + { + std::cout << "Exiting" << std::endl; + exit(-1); + } + std::cout << "EmbeddedHardware.h: opened comm port successfully\n"; + + initTime(); + } + + int read() + { + int c = elCommRead(fd); + return c; + } + + void write(uint8_t* data, int length) + { + elCommWrite(fd, data, length); + } + +#ifdef __linux__ + void initTime() + { + clock_gettime(CLOCK_MONOTONIC, &start); + } + + unsigned long time() + { + struct timespec end; + long seconds, nseconds; + + clock_gettime(CLOCK_MONOTONIC, &end); + + seconds = end.tv_sec - start.tv_sec; + nseconds = end.tv_nsec - start.tv_nsec; + + return ((seconds) * 1000 + nseconds / 1000000.0) + 0.5; + } + +#elif __MACH__ + void initTime() + { + start = mach_absolute_time(); + mach_timebase_info(&sTimebaseInfo); + } + + unsigned long time() + { + // See: https://developer.apple.com/library/mac/qa/qa1398/_index.html + uint64_t elapsed = mach_absolute_time() - start; + return elapsed * sTimebaseInfo.numer / (sTimebaseInfo.denom * 1000000); + } +#endif + +protected: + int fd; + char portName[30]; + long baud_; + +#ifdef __linux__ + struct timespec start; +#elif __MACH__ + uint64_t start; +#endif +}; + +#endif diff --git a/source/ros-max-lib/ros_lib/gazebo_msgs/ApplyBodyWrench.h b/source/ros-max-lib/ros_lib/gazebo_msgs/ApplyBodyWrench.h new file mode 100644 index 0000000..e7af6bb --- /dev/null +++ b/source/ros-max-lib/ros_lib/gazebo_msgs/ApplyBodyWrench.h @@ -0,0 +1,199 @@ +#ifndef _ROS_SERVICE_ApplyBodyWrench_h +#define _ROS_SERVICE_ApplyBodyWrench_h +#include +#include +#include +#include "ros/msg.h" +#include "ros/duration.h" +#include "geometry_msgs/Wrench.h" +#include "ros/time.h" +#include "geometry_msgs/Point.h" + +namespace gazebo_msgs +{ + +static const char APPLYBODYWRENCH[] = "gazebo_msgs/ApplyBodyWrench"; + + class ApplyBodyWrenchRequest : public ros::Msg + { + public: + typedef const char* _body_name_type; + _body_name_type body_name; + typedef const char* _reference_frame_type; + _reference_frame_type reference_frame; + typedef geometry_msgs::Point _reference_point_type; + _reference_point_type reference_point; + typedef geometry_msgs::Wrench _wrench_type; + _wrench_type wrench; + typedef ros::Time _start_time_type; + _start_time_type start_time; + typedef ros::Duration _duration_type; + _duration_type duration; + + ApplyBodyWrenchRequest(): + body_name(""), + reference_frame(""), + reference_point(), + wrench(), + start_time(), + duration() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_body_name = strlen(this->body_name); + varToArr(outbuffer + offset, length_body_name); + offset += 4; + memcpy(outbuffer + offset, this->body_name, length_body_name); + offset += length_body_name; + uint32_t length_reference_frame = strlen(this->reference_frame); + varToArr(outbuffer + offset, length_reference_frame); + offset += 4; + memcpy(outbuffer + offset, this->reference_frame, length_reference_frame); + offset += length_reference_frame; + offset += this->reference_point.serialize(outbuffer + offset); + offset += this->wrench.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->start_time.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->start_time.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->start_time.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->start_time.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->start_time.sec); + *(outbuffer + offset + 0) = (this->start_time.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->start_time.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->start_time.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->start_time.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->start_time.nsec); + *(outbuffer + offset + 0) = (this->duration.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->duration.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->duration.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->duration.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->duration.sec); + *(outbuffer + offset + 0) = (this->duration.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->duration.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->duration.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->duration.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->duration.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_body_name; + arrToVar(length_body_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_body_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_body_name-1]=0; + this->body_name = (char *)(inbuffer + offset-1); + offset += length_body_name; + uint32_t length_reference_frame; + arrToVar(length_reference_frame, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_reference_frame; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_reference_frame-1]=0; + this->reference_frame = (char *)(inbuffer + offset-1); + offset += length_reference_frame; + offset += this->reference_point.deserialize(inbuffer + offset); + offset += this->wrench.deserialize(inbuffer + offset); + this->start_time.sec = ((uint32_t) (*(inbuffer + offset))); + this->start_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->start_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->start_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->start_time.sec); + this->start_time.nsec = ((uint32_t) (*(inbuffer + offset))); + this->start_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->start_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->start_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->start_time.nsec); + this->duration.sec = ((uint32_t) (*(inbuffer + offset))); + this->duration.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->duration.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->duration.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->duration.sec); + this->duration.nsec = ((uint32_t) (*(inbuffer + offset))); + this->duration.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->duration.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->duration.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->duration.nsec); + return offset; + } + + const char * getType(){ return APPLYBODYWRENCH; }; + const char * getMD5(){ return "e37e6adf97eba5095baa77dffb71e5bd"; }; + + }; + + class ApplyBodyWrenchResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + ApplyBodyWrenchResponse(): + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return APPLYBODYWRENCH; }; + const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; }; + + }; + + class ApplyBodyWrench { + public: + typedef ApplyBodyWrenchRequest Request; + typedef ApplyBodyWrenchResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/gazebo_msgs/ApplyJointEffort.h b/source/ros-max-lib/ros_lib/gazebo_msgs/ApplyJointEffort.h new file mode 100644 index 0000000..636084f --- /dev/null +++ b/source/ros-max-lib/ros_lib/gazebo_msgs/ApplyJointEffort.h @@ -0,0 +1,202 @@ +#ifndef _ROS_SERVICE_ApplyJointEffort_h +#define _ROS_SERVICE_ApplyJointEffort_h +#include +#include +#include +#include "ros/msg.h" +#include "ros/duration.h" +#include "ros/time.h" + +namespace gazebo_msgs +{ + +static const char APPLYJOINTEFFORT[] = "gazebo_msgs/ApplyJointEffort"; + + class ApplyJointEffortRequest : public ros::Msg + { + public: + typedef const char* _joint_name_type; + _joint_name_type joint_name; + typedef double _effort_type; + _effort_type effort; + typedef ros::Time _start_time_type; + _start_time_type start_time; + typedef ros::Duration _duration_type; + _duration_type duration; + + ApplyJointEffortRequest(): + joint_name(""), + effort(0), + start_time(), + duration() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_joint_name = strlen(this->joint_name); + varToArr(outbuffer + offset, length_joint_name); + offset += 4; + memcpy(outbuffer + offset, this->joint_name, length_joint_name); + offset += length_joint_name; + union { + double real; + uint64_t base; + } u_effort; + u_effort.real = this->effort; + *(outbuffer + offset + 0) = (u_effort.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_effort.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_effort.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_effort.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_effort.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_effort.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_effort.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_effort.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->effort); + *(outbuffer + offset + 0) = (this->start_time.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->start_time.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->start_time.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->start_time.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->start_time.sec); + *(outbuffer + offset + 0) = (this->start_time.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->start_time.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->start_time.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->start_time.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->start_time.nsec); + *(outbuffer + offset + 0) = (this->duration.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->duration.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->duration.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->duration.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->duration.sec); + *(outbuffer + offset + 0) = (this->duration.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->duration.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->duration.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->duration.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->duration.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_joint_name; + arrToVar(length_joint_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_joint_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_joint_name-1]=0; + this->joint_name = (char *)(inbuffer + offset-1); + offset += length_joint_name; + union { + double real; + uint64_t base; + } u_effort; + u_effort.base = 0; + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_effort.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->effort = u_effort.real; + offset += sizeof(this->effort); + this->start_time.sec = ((uint32_t) (*(inbuffer + offset))); + this->start_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->start_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->start_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->start_time.sec); + this->start_time.nsec = ((uint32_t) (*(inbuffer + offset))); + this->start_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->start_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->start_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->start_time.nsec); + this->duration.sec = ((uint32_t) (*(inbuffer + offset))); + this->duration.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->duration.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->duration.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->duration.sec); + this->duration.nsec = ((uint32_t) (*(inbuffer + offset))); + this->duration.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->duration.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->duration.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->duration.nsec); + return offset; + } + + const char * getType(){ return APPLYJOINTEFFORT; }; + const char * getMD5(){ return "2c3396ab9af67a509ecd2167a8fe41a2"; }; + + }; + + class ApplyJointEffortResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + ApplyJointEffortResponse(): + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return APPLYJOINTEFFORT; }; + const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; }; + + }; + + class ApplyJointEffort { + public: + typedef ApplyJointEffortRequest Request; + typedef ApplyJointEffortResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/gazebo_msgs/BodyRequest.h b/source/ros-max-lib/ros_lib/gazebo_msgs/BodyRequest.h new file mode 100644 index 0000000..bb2106d --- /dev/null +++ b/source/ros-max-lib/ros_lib/gazebo_msgs/BodyRequest.h @@ -0,0 +1,87 @@ +#ifndef _ROS_SERVICE_BodyRequest_h +#define _ROS_SERVICE_BodyRequest_h +#include +#include +#include +#include "ros/msg.h" + +namespace gazebo_msgs +{ + +static const char BODYREQUEST[] = "gazebo_msgs/BodyRequest"; + + class BodyRequestRequest : public ros::Msg + { + public: + typedef const char* _body_name_type; + _body_name_type body_name; + + BodyRequestRequest(): + body_name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_body_name = strlen(this->body_name); + varToArr(outbuffer + offset, length_body_name); + offset += 4; + memcpy(outbuffer + offset, this->body_name, length_body_name); + offset += length_body_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_body_name; + arrToVar(length_body_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_body_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_body_name-1]=0; + this->body_name = (char *)(inbuffer + offset-1); + offset += length_body_name; + return offset; + } + + const char * getType(){ return BODYREQUEST; }; + const char * getMD5(){ return "5eade9afe7f232d78005bd0cafeab755"; }; + + }; + + class BodyRequestResponse : public ros::Msg + { + public: + + BodyRequestResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return BODYREQUEST; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class BodyRequest { + public: + typedef BodyRequestRequest Request; + typedef BodyRequestResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/gazebo_msgs/ContactState.h b/source/ros-max-lib/ros_lib/gazebo_msgs/ContactState.h new file mode 100644 index 0000000..a3d852d --- /dev/null +++ b/source/ros-max-lib/ros_lib/gazebo_msgs/ContactState.h @@ -0,0 +1,223 @@ +#ifndef _ROS_gazebo_msgs_ContactState_h +#define _ROS_gazebo_msgs_ContactState_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Wrench.h" +#include "geometry_msgs/Vector3.h" + +namespace gazebo_msgs +{ + + class ContactState : public ros::Msg + { + public: + typedef const char* _info_type; + _info_type info; + typedef const char* _collision1_name_type; + _collision1_name_type collision1_name; + typedef const char* _collision2_name_type; + _collision2_name_type collision2_name; + uint32_t wrenches_length; + typedef geometry_msgs::Wrench _wrenches_type; + _wrenches_type st_wrenches; + _wrenches_type * wrenches; + typedef geometry_msgs::Wrench _total_wrench_type; + _total_wrench_type total_wrench; + uint32_t contact_positions_length; + typedef geometry_msgs::Vector3 _contact_positions_type; + _contact_positions_type st_contact_positions; + _contact_positions_type * contact_positions; + uint32_t contact_normals_length; + typedef geometry_msgs::Vector3 _contact_normals_type; + _contact_normals_type st_contact_normals; + _contact_normals_type * contact_normals; + uint32_t depths_length; + typedef double _depths_type; + _depths_type st_depths; + _depths_type * depths; + + ContactState(): + info(""), + collision1_name(""), + collision2_name(""), + wrenches_length(0), wrenches(NULL), + total_wrench(), + contact_positions_length(0), contact_positions(NULL), + contact_normals_length(0), contact_normals(NULL), + depths_length(0), depths(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_info = strlen(this->info); + varToArr(outbuffer + offset, length_info); + offset += 4; + memcpy(outbuffer + offset, this->info, length_info); + offset += length_info; + uint32_t length_collision1_name = strlen(this->collision1_name); + varToArr(outbuffer + offset, length_collision1_name); + offset += 4; + memcpy(outbuffer + offset, this->collision1_name, length_collision1_name); + offset += length_collision1_name; + uint32_t length_collision2_name = strlen(this->collision2_name); + varToArr(outbuffer + offset, length_collision2_name); + offset += 4; + memcpy(outbuffer + offset, this->collision2_name, length_collision2_name); + offset += length_collision2_name; + *(outbuffer + offset + 0) = (this->wrenches_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->wrenches_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->wrenches_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->wrenches_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->wrenches_length); + for( uint32_t i = 0; i < wrenches_length; i++){ + offset += this->wrenches[i].serialize(outbuffer + offset); + } + offset += this->total_wrench.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->contact_positions_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->contact_positions_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->contact_positions_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->contact_positions_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->contact_positions_length); + for( uint32_t i = 0; i < contact_positions_length; i++){ + offset += this->contact_positions[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->contact_normals_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->contact_normals_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->contact_normals_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->contact_normals_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->contact_normals_length); + for( uint32_t i = 0; i < contact_normals_length; i++){ + offset += this->contact_normals[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->depths_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->depths_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->depths_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->depths_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->depths_length); + for( uint32_t i = 0; i < depths_length; i++){ + union { + double real; + uint64_t base; + } u_depthsi; + u_depthsi.real = this->depths[i]; + *(outbuffer + offset + 0) = (u_depthsi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_depthsi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_depthsi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_depthsi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_depthsi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_depthsi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_depthsi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_depthsi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->depths[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_info; + arrToVar(length_info, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_info; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_info-1]=0; + this->info = (char *)(inbuffer + offset-1); + offset += length_info; + uint32_t length_collision1_name; + arrToVar(length_collision1_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_collision1_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_collision1_name-1]=0; + this->collision1_name = (char *)(inbuffer + offset-1); + offset += length_collision1_name; + uint32_t length_collision2_name; + arrToVar(length_collision2_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_collision2_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_collision2_name-1]=0; + this->collision2_name = (char *)(inbuffer + offset-1); + offset += length_collision2_name; + uint32_t wrenches_lengthT = ((uint32_t) (*(inbuffer + offset))); + wrenches_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + wrenches_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + wrenches_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->wrenches_length); + if(wrenches_lengthT > wrenches_length) + this->wrenches = (geometry_msgs::Wrench*)realloc(this->wrenches, wrenches_lengthT * sizeof(geometry_msgs::Wrench)); + wrenches_length = wrenches_lengthT; + for( uint32_t i = 0; i < wrenches_length; i++){ + offset += this->st_wrenches.deserialize(inbuffer + offset); + memcpy( &(this->wrenches[i]), &(this->st_wrenches), sizeof(geometry_msgs::Wrench)); + } + offset += this->total_wrench.deserialize(inbuffer + offset); + uint32_t contact_positions_lengthT = ((uint32_t) (*(inbuffer + offset))); + contact_positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + contact_positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + contact_positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->contact_positions_length); + if(contact_positions_lengthT > contact_positions_length) + this->contact_positions = (geometry_msgs::Vector3*)realloc(this->contact_positions, contact_positions_lengthT * sizeof(geometry_msgs::Vector3)); + contact_positions_length = contact_positions_lengthT; + for( uint32_t i = 0; i < contact_positions_length; i++){ + offset += this->st_contact_positions.deserialize(inbuffer + offset); + memcpy( &(this->contact_positions[i]), &(this->st_contact_positions), sizeof(geometry_msgs::Vector3)); + } + uint32_t contact_normals_lengthT = ((uint32_t) (*(inbuffer + offset))); + contact_normals_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + contact_normals_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + contact_normals_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->contact_normals_length); + if(contact_normals_lengthT > contact_normals_length) + this->contact_normals = (geometry_msgs::Vector3*)realloc(this->contact_normals, contact_normals_lengthT * sizeof(geometry_msgs::Vector3)); + contact_normals_length = contact_normals_lengthT; + for( uint32_t i = 0; i < contact_normals_length; i++){ + offset += this->st_contact_normals.deserialize(inbuffer + offset); + memcpy( &(this->contact_normals[i]), &(this->st_contact_normals), sizeof(geometry_msgs::Vector3)); + } + uint32_t depths_lengthT = ((uint32_t) (*(inbuffer + offset))); + depths_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + depths_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + depths_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->depths_length); + if(depths_lengthT > depths_length) + this->depths = (double*)realloc(this->depths, depths_lengthT * sizeof(double)); + depths_length = depths_lengthT; + for( uint32_t i = 0; i < depths_length; i++){ + union { + double real; + uint64_t base; + } u_st_depths; + u_st_depths.base = 0; + u_st_depths.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_depths.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_depths.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_depths.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_depths.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_depths.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_depths.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_depths.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_depths = u_st_depths.real; + offset += sizeof(this->st_depths); + memcpy( &(this->depths[i]), &(this->st_depths), sizeof(double)); + } + return offset; + } + + const char * getType(){ return "gazebo_msgs/ContactState"; }; + const char * getMD5(){ return "48c0ffb054b8c444f870cecea1ee50d9"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/gazebo_msgs/ContactsState.h b/source/ros-max-lib/ros_lib/gazebo_msgs/ContactsState.h new file mode 100644 index 0000000..9af62c0 --- /dev/null +++ b/source/ros-max-lib/ros_lib/gazebo_msgs/ContactsState.h @@ -0,0 +1,70 @@ +#ifndef _ROS_gazebo_msgs_ContactsState_h +#define _ROS_gazebo_msgs_ContactsState_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "gazebo_msgs/ContactState.h" + +namespace gazebo_msgs +{ + + class ContactsState : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t states_length; + typedef gazebo_msgs::ContactState _states_type; + _states_type st_states; + _states_type * states; + + ContactsState(): + header(), + states_length(0), states(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->states_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->states_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->states_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->states_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->states_length); + for( uint32_t i = 0; i < states_length; i++){ + offset += this->states[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t states_lengthT = ((uint32_t) (*(inbuffer + offset))); + states_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + states_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + states_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->states_length); + if(states_lengthT > states_length) + this->states = (gazebo_msgs::ContactState*)realloc(this->states, states_lengthT * sizeof(gazebo_msgs::ContactState)); + states_length = states_lengthT; + for( uint32_t i = 0; i < states_length; i++){ + offset += this->st_states.deserialize(inbuffer + offset); + memcpy( &(this->states[i]), &(this->st_states), sizeof(gazebo_msgs::ContactState)); + } + return offset; + } + + const char * getType(){ return "gazebo_msgs/ContactsState"; }; + const char * getMD5(){ return "acbcb1601a8e525bf72509f18e6f668d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/gazebo_msgs/DeleteLight.h b/source/ros-max-lib/ros_lib/gazebo_msgs/DeleteLight.h new file mode 100644 index 0000000..54a9c5d --- /dev/null +++ b/source/ros-max-lib/ros_lib/gazebo_msgs/DeleteLight.h @@ -0,0 +1,122 @@ +#ifndef _ROS_SERVICE_DeleteLight_h +#define _ROS_SERVICE_DeleteLight_h +#include +#include +#include +#include "ros/msg.h" + +namespace gazebo_msgs +{ + +static const char DELETELIGHT[] = "gazebo_msgs/DeleteLight"; + + class DeleteLightRequest : public ros::Msg + { + public: + typedef const char* _light_name_type; + _light_name_type light_name; + + DeleteLightRequest(): + light_name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_light_name = strlen(this->light_name); + varToArr(outbuffer + offset, length_light_name); + offset += 4; + memcpy(outbuffer + offset, this->light_name, length_light_name); + offset += length_light_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_light_name; + arrToVar(length_light_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_light_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_light_name-1]=0; + this->light_name = (char *)(inbuffer + offset-1); + offset += length_light_name; + return offset; + } + + const char * getType(){ return DELETELIGHT; }; + const char * getMD5(){ return "4fb676dfb4741fc866365702a859441c"; }; + + }; + + class DeleteLightResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + DeleteLightResponse(): + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return DELETELIGHT; }; + const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; }; + + }; + + class DeleteLight { + public: + typedef DeleteLightRequest Request; + typedef DeleteLightResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/gazebo_msgs/DeleteModel.h b/source/ros-max-lib/ros_lib/gazebo_msgs/DeleteModel.h new file mode 100644 index 0000000..00da12d --- /dev/null +++ b/source/ros-max-lib/ros_lib/gazebo_msgs/DeleteModel.h @@ -0,0 +1,122 @@ +#ifndef _ROS_SERVICE_DeleteModel_h +#define _ROS_SERVICE_DeleteModel_h +#include +#include +#include +#include "ros/msg.h" + +namespace gazebo_msgs +{ + +static const char DELETEMODEL[] = "gazebo_msgs/DeleteModel"; + + class DeleteModelRequest : public ros::Msg + { + public: + typedef const char* _model_name_type; + _model_name_type model_name; + + DeleteModelRequest(): + model_name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_model_name = strlen(this->model_name); + varToArr(outbuffer + offset, length_model_name); + offset += 4; + memcpy(outbuffer + offset, this->model_name, length_model_name); + offset += length_model_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_model_name; + arrToVar(length_model_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_model_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_model_name-1]=0; + this->model_name = (char *)(inbuffer + offset-1); + offset += length_model_name; + return offset; + } + + const char * getType(){ return DELETEMODEL; }; + const char * getMD5(){ return "ea31c8eab6fc401383cf528a7c0984ba"; }; + + }; + + class DeleteModelResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + DeleteModelResponse(): + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return DELETEMODEL; }; + const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; }; + + }; + + class DeleteModel { + public: + typedef DeleteModelRequest Request; + typedef DeleteModelResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/gazebo_msgs/GetJointProperties.h b/source/ros-max-lib/ros_lib/gazebo_msgs/GetJointProperties.h new file mode 100644 index 0000000..6ad0fe9 --- /dev/null +++ b/source/ros-max-lib/ros_lib/gazebo_msgs/GetJointProperties.h @@ -0,0 +1,291 @@ +#ifndef _ROS_SERVICE_GetJointProperties_h +#define _ROS_SERVICE_GetJointProperties_h +#include +#include +#include +#include "ros/msg.h" + +namespace gazebo_msgs +{ + +static const char GETJOINTPROPERTIES[] = "gazebo_msgs/GetJointProperties"; + + class GetJointPropertiesRequest : public ros::Msg + { + public: + typedef const char* _joint_name_type; + _joint_name_type joint_name; + + GetJointPropertiesRequest(): + joint_name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_joint_name = strlen(this->joint_name); + varToArr(outbuffer + offset, length_joint_name); + offset += 4; + memcpy(outbuffer + offset, this->joint_name, length_joint_name); + offset += length_joint_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_joint_name; + arrToVar(length_joint_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_joint_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_joint_name-1]=0; + this->joint_name = (char *)(inbuffer + offset-1); + offset += length_joint_name; + return offset; + } + + const char * getType(){ return GETJOINTPROPERTIES; }; + const char * getMD5(){ return "0be1351618e1dc030eb7959d9a4902de"; }; + + }; + + class GetJointPropertiesResponse : public ros::Msg + { + public: + typedef uint8_t _type_type; + _type_type type; + uint32_t damping_length; + typedef double _damping_type; + _damping_type st_damping; + _damping_type * damping; + uint32_t position_length; + typedef double _position_type; + _position_type st_position; + _position_type * position; + uint32_t rate_length; + typedef double _rate_type; + _rate_type st_rate; + _rate_type * rate; + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + enum { REVOLUTE = 0 }; + enum { CONTINUOUS = 1 }; + enum { PRISMATIC = 2 }; + enum { FIXED = 3 }; + enum { BALL = 4 }; + enum { UNIVERSAL = 5 }; + + GetJointPropertiesResponse(): + type(0), + damping_length(0), damping(NULL), + position_length(0), position(NULL), + rate_length(0), rate(NULL), + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->type >> (8 * 0)) & 0xFF; + offset += sizeof(this->type); + *(outbuffer + offset + 0) = (this->damping_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->damping_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->damping_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->damping_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->damping_length); + for( uint32_t i = 0; i < damping_length; i++){ + union { + double real; + uint64_t base; + } u_dampingi; + u_dampingi.real = this->damping[i]; + *(outbuffer + offset + 0) = (u_dampingi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_dampingi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_dampingi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_dampingi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_dampingi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_dampingi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_dampingi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_dampingi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->damping[i]); + } + *(outbuffer + offset + 0) = (this->position_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->position_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->position_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->position_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->position_length); + for( uint32_t i = 0; i < position_length; i++){ + union { + double real; + uint64_t base; + } u_positioni; + u_positioni.real = this->position[i]; + *(outbuffer + offset + 0) = (u_positioni.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_positioni.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_positioni.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_positioni.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_positioni.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_positioni.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_positioni.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_positioni.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->position[i]); + } + *(outbuffer + offset + 0) = (this->rate_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->rate_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->rate_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->rate_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->rate_length); + for( uint32_t i = 0; i < rate_length; i++){ + union { + double real; + uint64_t base; + } u_ratei; + u_ratei.real = this->rate[i]; + *(outbuffer + offset + 0) = (u_ratei.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_ratei.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_ratei.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_ratei.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_ratei.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_ratei.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_ratei.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_ratei.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->rate[i]); + } + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->type = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->type); + uint32_t damping_lengthT = ((uint32_t) (*(inbuffer + offset))); + damping_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + damping_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + damping_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->damping_length); + if(damping_lengthT > damping_length) + this->damping = (double*)realloc(this->damping, damping_lengthT * sizeof(double)); + damping_length = damping_lengthT; + for( uint32_t i = 0; i < damping_length; i++){ + union { + double real; + uint64_t base; + } u_st_damping; + u_st_damping.base = 0; + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_damping = u_st_damping.real; + offset += sizeof(this->st_damping); + memcpy( &(this->damping[i]), &(this->st_damping), sizeof(double)); + } + uint32_t position_lengthT = ((uint32_t) (*(inbuffer + offset))); + position_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + position_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + position_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->position_length); + if(position_lengthT > position_length) + this->position = (double*)realloc(this->position, position_lengthT * sizeof(double)); + position_length = position_lengthT; + for( uint32_t i = 0; i < position_length; i++){ + union { + double real; + uint64_t base; + } u_st_position; + u_st_position.base = 0; + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_position = u_st_position.real; + offset += sizeof(this->st_position); + memcpy( &(this->position[i]), &(this->st_position), sizeof(double)); + } + uint32_t rate_lengthT = ((uint32_t) (*(inbuffer + offset))); + rate_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + rate_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + rate_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->rate_length); + if(rate_lengthT > rate_length) + this->rate = (double*)realloc(this->rate, rate_lengthT * sizeof(double)); + rate_length = rate_lengthT; + for( uint32_t i = 0; i < rate_length; i++){ + union { + double real; + uint64_t base; + } u_st_rate; + u_st_rate.base = 0; + u_st_rate.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_rate.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_rate.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_rate.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_rate.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_rate.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_rate.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_rate.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_rate = u_st_rate.real; + offset += sizeof(this->st_rate); + memcpy( &(this->rate[i]), &(this->st_rate), sizeof(double)); + } + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return GETJOINTPROPERTIES; }; + const char * getMD5(){ return "cd7b30a39faa372283dc94c5f6457f82"; }; + + }; + + class GetJointProperties { + public: + typedef GetJointPropertiesRequest Request; + typedef GetJointPropertiesResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/gazebo_msgs/GetLightProperties.h b/source/ros-max-lib/ros_lib/gazebo_msgs/GetLightProperties.h new file mode 100644 index 0000000..7210186 --- /dev/null +++ b/source/ros-max-lib/ros_lib/gazebo_msgs/GetLightProperties.h @@ -0,0 +1,224 @@ +#ifndef _ROS_SERVICE_GetLightProperties_h +#define _ROS_SERVICE_GetLightProperties_h +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/ColorRGBA.h" + +namespace gazebo_msgs +{ + +static const char GETLIGHTPROPERTIES[] = "gazebo_msgs/GetLightProperties"; + + class GetLightPropertiesRequest : public ros::Msg + { + public: + typedef const char* _light_name_type; + _light_name_type light_name; + + GetLightPropertiesRequest(): + light_name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_light_name = strlen(this->light_name); + varToArr(outbuffer + offset, length_light_name); + offset += 4; + memcpy(outbuffer + offset, this->light_name, length_light_name); + offset += length_light_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_light_name; + arrToVar(length_light_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_light_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_light_name-1]=0; + this->light_name = (char *)(inbuffer + offset-1); + offset += length_light_name; + return offset; + } + + const char * getType(){ return GETLIGHTPROPERTIES; }; + const char * getMD5(){ return "4fb676dfb4741fc866365702a859441c"; }; + + }; + + class GetLightPropertiesResponse : public ros::Msg + { + public: + typedef std_msgs::ColorRGBA _diffuse_type; + _diffuse_type diffuse; + typedef double _attenuation_constant_type; + _attenuation_constant_type attenuation_constant; + typedef double _attenuation_linear_type; + _attenuation_linear_type attenuation_linear; + typedef double _attenuation_quadratic_type; + _attenuation_quadratic_type attenuation_quadratic; + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + GetLightPropertiesResponse(): + diffuse(), + attenuation_constant(0), + attenuation_linear(0), + attenuation_quadratic(0), + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->diffuse.serialize(outbuffer + offset); + union { + double real; + uint64_t base; + } u_attenuation_constant; + u_attenuation_constant.real = this->attenuation_constant; + *(outbuffer + offset + 0) = (u_attenuation_constant.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_attenuation_constant.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_attenuation_constant.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_attenuation_constant.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_attenuation_constant.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_attenuation_constant.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_attenuation_constant.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_attenuation_constant.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->attenuation_constant); + union { + double real; + uint64_t base; + } u_attenuation_linear; + u_attenuation_linear.real = this->attenuation_linear; + *(outbuffer + offset + 0) = (u_attenuation_linear.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_attenuation_linear.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_attenuation_linear.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_attenuation_linear.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_attenuation_linear.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_attenuation_linear.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_attenuation_linear.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_attenuation_linear.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->attenuation_linear); + union { + double real; + uint64_t base; + } u_attenuation_quadratic; + u_attenuation_quadratic.real = this->attenuation_quadratic; + *(outbuffer + offset + 0) = (u_attenuation_quadratic.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_attenuation_quadratic.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_attenuation_quadratic.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_attenuation_quadratic.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_attenuation_quadratic.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_attenuation_quadratic.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_attenuation_quadratic.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_attenuation_quadratic.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->attenuation_quadratic); + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->diffuse.deserialize(inbuffer + offset); + union { + double real; + uint64_t base; + } u_attenuation_constant; + u_attenuation_constant.base = 0; + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->attenuation_constant = u_attenuation_constant.real; + offset += sizeof(this->attenuation_constant); + union { + double real; + uint64_t base; + } u_attenuation_linear; + u_attenuation_linear.base = 0; + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->attenuation_linear = u_attenuation_linear.real; + offset += sizeof(this->attenuation_linear); + union { + double real; + uint64_t base; + } u_attenuation_quadratic; + u_attenuation_quadratic.base = 0; + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->attenuation_quadratic = u_attenuation_quadratic.real; + offset += sizeof(this->attenuation_quadratic); + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return GETLIGHTPROPERTIES; }; + const char * getMD5(){ return "9a19ddd5aab4c13b7643d1722c709f1f"; }; + + }; + + class GetLightProperties { + public: + typedef GetLightPropertiesRequest Request; + typedef GetLightPropertiesResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/gazebo_msgs/GetLinkProperties.h b/source/ros-max-lib/ros_lib/gazebo_msgs/GetLinkProperties.h new file mode 100644 index 0000000..0d4173f --- /dev/null +++ b/source/ros-max-lib/ros_lib/gazebo_msgs/GetLinkProperties.h @@ -0,0 +1,370 @@ +#ifndef _ROS_SERVICE_GetLinkProperties_h +#define _ROS_SERVICE_GetLinkProperties_h +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Pose.h" + +namespace gazebo_msgs +{ + +static const char GETLINKPROPERTIES[] = "gazebo_msgs/GetLinkProperties"; + + class GetLinkPropertiesRequest : public ros::Msg + { + public: + typedef const char* _link_name_type; + _link_name_type link_name; + + GetLinkPropertiesRequest(): + link_name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_link_name = strlen(this->link_name); + varToArr(outbuffer + offset, length_link_name); + offset += 4; + memcpy(outbuffer + offset, this->link_name, length_link_name); + offset += length_link_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_link_name; + arrToVar(length_link_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_link_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_link_name-1]=0; + this->link_name = (char *)(inbuffer + offset-1); + offset += length_link_name; + return offset; + } + + const char * getType(){ return GETLINKPROPERTIES; }; + const char * getMD5(){ return "7d82d60381f1b66a30f2157f60884345"; }; + + }; + + class GetLinkPropertiesResponse : public ros::Msg + { + public: + typedef geometry_msgs::Pose _com_type; + _com_type com; + typedef bool _gravity_mode_type; + _gravity_mode_type gravity_mode; + typedef double _mass_type; + _mass_type mass; + typedef double _ixx_type; + _ixx_type ixx; + typedef double _ixy_type; + _ixy_type ixy; + typedef double _ixz_type; + _ixz_type ixz; + typedef double _iyy_type; + _iyy_type iyy; + typedef double _iyz_type; + _iyz_type iyz; + typedef double _izz_type; + _izz_type izz; + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + GetLinkPropertiesResponse(): + com(), + gravity_mode(0), + mass(0), + ixx(0), + ixy(0), + ixz(0), + iyy(0), + iyz(0), + izz(0), + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->com.serialize(outbuffer + offset); + union { + bool real; + uint8_t base; + } u_gravity_mode; + u_gravity_mode.real = this->gravity_mode; + *(outbuffer + offset + 0) = (u_gravity_mode.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->gravity_mode); + union { + double real; + uint64_t base; + } u_mass; + u_mass.real = this->mass; + *(outbuffer + offset + 0) = (u_mass.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_mass.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_mass.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_mass.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_mass.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_mass.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_mass.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_mass.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->mass); + union { + double real; + uint64_t base; + } u_ixx; + u_ixx.real = this->ixx; + *(outbuffer + offset + 0) = (u_ixx.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_ixx.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_ixx.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_ixx.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_ixx.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_ixx.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_ixx.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_ixx.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->ixx); + union { + double real; + uint64_t base; + } u_ixy; + u_ixy.real = this->ixy; + *(outbuffer + offset + 0) = (u_ixy.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_ixy.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_ixy.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_ixy.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_ixy.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_ixy.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_ixy.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_ixy.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->ixy); + union { + double real; + uint64_t base; + } u_ixz; + u_ixz.real = this->ixz; + *(outbuffer + offset + 0) = (u_ixz.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_ixz.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_ixz.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_ixz.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_ixz.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_ixz.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_ixz.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_ixz.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->ixz); + union { + double real; + uint64_t base; + } u_iyy; + u_iyy.real = this->iyy; + *(outbuffer + offset + 0) = (u_iyy.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_iyy.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_iyy.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_iyy.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_iyy.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_iyy.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_iyy.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_iyy.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->iyy); + union { + double real; + uint64_t base; + } u_iyz; + u_iyz.real = this->iyz; + *(outbuffer + offset + 0) = (u_iyz.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_iyz.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_iyz.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_iyz.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_iyz.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_iyz.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_iyz.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_iyz.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->iyz); + union { + double real; + uint64_t base; + } u_izz; + u_izz.real = this->izz; + *(outbuffer + offset + 0) = (u_izz.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_izz.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_izz.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_izz.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_izz.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_izz.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_izz.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_izz.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->izz); + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->com.deserialize(inbuffer + offset); + union { + bool real; + uint8_t base; + } u_gravity_mode; + u_gravity_mode.base = 0; + u_gravity_mode.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->gravity_mode = u_gravity_mode.real; + offset += sizeof(this->gravity_mode); + union { + double real; + uint64_t base; + } u_mass; + u_mass.base = 0; + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->mass = u_mass.real; + offset += sizeof(this->mass); + union { + double real; + uint64_t base; + } u_ixx; + u_ixx.base = 0; + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->ixx = u_ixx.real; + offset += sizeof(this->ixx); + union { + double real; + uint64_t base; + } u_ixy; + u_ixy.base = 0; + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->ixy = u_ixy.real; + offset += sizeof(this->ixy); + union { + double real; + uint64_t base; + } u_ixz; + u_ixz.base = 0; + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->ixz = u_ixz.real; + offset += sizeof(this->ixz); + union { + double real; + uint64_t base; + } u_iyy; + u_iyy.base = 0; + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->iyy = u_iyy.real; + offset += sizeof(this->iyy); + union { + double real; + uint64_t base; + } u_iyz; + u_iyz.base = 0; + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->iyz = u_iyz.real; + offset += sizeof(this->iyz); + union { + double real; + uint64_t base; + } u_izz; + u_izz.base = 0; + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->izz = u_izz.real; + offset += sizeof(this->izz); + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return GETLINKPROPERTIES; }; + const char * getMD5(){ return "a8619f92d17cfcc3958c0fd13299443d"; }; + + }; + + class GetLinkProperties { + public: + typedef GetLinkPropertiesRequest Request; + typedef GetLinkPropertiesResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/gazebo_msgs/GetLinkState.h b/source/ros-max-lib/ros_lib/gazebo_msgs/GetLinkState.h new file mode 100644 index 0000000..5e20764 --- /dev/null +++ b/source/ros-max-lib/ros_lib/gazebo_msgs/GetLinkState.h @@ -0,0 +1,145 @@ +#ifndef _ROS_SERVICE_GetLinkState_h +#define _ROS_SERVICE_GetLinkState_h +#include +#include +#include +#include "ros/msg.h" +#include "gazebo_msgs/LinkState.h" + +namespace gazebo_msgs +{ + +static const char GETLINKSTATE[] = "gazebo_msgs/GetLinkState"; + + class GetLinkStateRequest : public ros::Msg + { + public: + typedef const char* _link_name_type; + _link_name_type link_name; + typedef const char* _reference_frame_type; + _reference_frame_type reference_frame; + + GetLinkStateRequest(): + link_name(""), + reference_frame("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_link_name = strlen(this->link_name); + varToArr(outbuffer + offset, length_link_name); + offset += 4; + memcpy(outbuffer + offset, this->link_name, length_link_name); + offset += length_link_name; + uint32_t length_reference_frame = strlen(this->reference_frame); + varToArr(outbuffer + offset, length_reference_frame); + offset += 4; + memcpy(outbuffer + offset, this->reference_frame, length_reference_frame); + offset += length_reference_frame; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_link_name; + arrToVar(length_link_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_link_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_link_name-1]=0; + this->link_name = (char *)(inbuffer + offset-1); + offset += length_link_name; + uint32_t length_reference_frame; + arrToVar(length_reference_frame, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_reference_frame; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_reference_frame-1]=0; + this->reference_frame = (char *)(inbuffer + offset-1); + offset += length_reference_frame; + return offset; + } + + const char * getType(){ return GETLINKSTATE; }; + const char * getMD5(){ return "7551675c30aaa71f7c288d4864552001"; }; + + }; + + class GetLinkStateResponse : public ros::Msg + { + public: + typedef gazebo_msgs::LinkState _link_state_type; + _link_state_type link_state; + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + GetLinkStateResponse(): + link_state(), + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->link_state.serialize(outbuffer + offset); + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->link_state.deserialize(inbuffer + offset); + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return GETLINKSTATE; }; + const char * getMD5(){ return "8ba55ad34f9c072e75c0de57b089753b"; }; + + }; + + class GetLinkState { + public: + typedef GetLinkStateRequest Request; + typedef GetLinkStateResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/gazebo_msgs/GetModelProperties.h b/source/ros-max-lib/ros_lib/gazebo_msgs/GetModelProperties.h new file mode 100644 index 0000000..082e688 --- /dev/null +++ b/source/ros-max-lib/ros_lib/gazebo_msgs/GetModelProperties.h @@ -0,0 +1,322 @@ +#ifndef _ROS_SERVICE_GetModelProperties_h +#define _ROS_SERVICE_GetModelProperties_h +#include +#include +#include +#include "ros/msg.h" + +namespace gazebo_msgs +{ + +static const char GETMODELPROPERTIES[] = "gazebo_msgs/GetModelProperties"; + + class GetModelPropertiesRequest : public ros::Msg + { + public: + typedef const char* _model_name_type; + _model_name_type model_name; + + GetModelPropertiesRequest(): + model_name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_model_name = strlen(this->model_name); + varToArr(outbuffer + offset, length_model_name); + offset += 4; + memcpy(outbuffer + offset, this->model_name, length_model_name); + offset += length_model_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_model_name; + arrToVar(length_model_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_model_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_model_name-1]=0; + this->model_name = (char *)(inbuffer + offset-1); + offset += length_model_name; + return offset; + } + + const char * getType(){ return GETMODELPROPERTIES; }; + const char * getMD5(){ return "ea31c8eab6fc401383cf528a7c0984ba"; }; + + }; + + class GetModelPropertiesResponse : public ros::Msg + { + public: + typedef const char* _parent_model_name_type; + _parent_model_name_type parent_model_name; + typedef const char* _canonical_body_name_type; + _canonical_body_name_type canonical_body_name; + uint32_t body_names_length; + typedef char* _body_names_type; + _body_names_type st_body_names; + _body_names_type * body_names; + uint32_t geom_names_length; + typedef char* _geom_names_type; + _geom_names_type st_geom_names; + _geom_names_type * geom_names; + uint32_t joint_names_length; + typedef char* _joint_names_type; + _joint_names_type st_joint_names; + _joint_names_type * joint_names; + uint32_t child_model_names_length; + typedef char* _child_model_names_type; + _child_model_names_type st_child_model_names; + _child_model_names_type * child_model_names; + typedef bool _is_static_type; + _is_static_type is_static; + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + GetModelPropertiesResponse(): + parent_model_name(""), + canonical_body_name(""), + body_names_length(0), body_names(NULL), + geom_names_length(0), geom_names(NULL), + joint_names_length(0), joint_names(NULL), + child_model_names_length(0), child_model_names(NULL), + is_static(0), + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_parent_model_name = strlen(this->parent_model_name); + varToArr(outbuffer + offset, length_parent_model_name); + offset += 4; + memcpy(outbuffer + offset, this->parent_model_name, length_parent_model_name); + offset += length_parent_model_name; + uint32_t length_canonical_body_name = strlen(this->canonical_body_name); + varToArr(outbuffer + offset, length_canonical_body_name); + offset += 4; + memcpy(outbuffer + offset, this->canonical_body_name, length_canonical_body_name); + offset += length_canonical_body_name; + *(outbuffer + offset + 0) = (this->body_names_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->body_names_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->body_names_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->body_names_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->body_names_length); + for( uint32_t i = 0; i < body_names_length; i++){ + uint32_t length_body_namesi = strlen(this->body_names[i]); + varToArr(outbuffer + offset, length_body_namesi); + offset += 4; + memcpy(outbuffer + offset, this->body_names[i], length_body_namesi); + offset += length_body_namesi; + } + *(outbuffer + offset + 0) = (this->geom_names_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->geom_names_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->geom_names_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->geom_names_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->geom_names_length); + for( uint32_t i = 0; i < geom_names_length; i++){ + uint32_t length_geom_namesi = strlen(this->geom_names[i]); + varToArr(outbuffer + offset, length_geom_namesi); + offset += 4; + memcpy(outbuffer + offset, this->geom_names[i], length_geom_namesi); + offset += length_geom_namesi; + } + *(outbuffer + offset + 0) = (this->joint_names_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->joint_names_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->joint_names_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->joint_names_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->joint_names_length); + for( uint32_t i = 0; i < joint_names_length; i++){ + uint32_t length_joint_namesi = strlen(this->joint_names[i]); + varToArr(outbuffer + offset, length_joint_namesi); + offset += 4; + memcpy(outbuffer + offset, this->joint_names[i], length_joint_namesi); + offset += length_joint_namesi; + } + *(outbuffer + offset + 0) = (this->child_model_names_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->child_model_names_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->child_model_names_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->child_model_names_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->child_model_names_length); + for( uint32_t i = 0; i < child_model_names_length; i++){ + uint32_t length_child_model_namesi = strlen(this->child_model_names[i]); + varToArr(outbuffer + offset, length_child_model_namesi); + offset += 4; + memcpy(outbuffer + offset, this->child_model_names[i], length_child_model_namesi); + offset += length_child_model_namesi; + } + union { + bool real; + uint8_t base; + } u_is_static; + u_is_static.real = this->is_static; + *(outbuffer + offset + 0) = (u_is_static.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->is_static); + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_parent_model_name; + arrToVar(length_parent_model_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_parent_model_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_parent_model_name-1]=0; + this->parent_model_name = (char *)(inbuffer + offset-1); + offset += length_parent_model_name; + uint32_t length_canonical_body_name; + arrToVar(length_canonical_body_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_canonical_body_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_canonical_body_name-1]=0; + this->canonical_body_name = (char *)(inbuffer + offset-1); + offset += length_canonical_body_name; + uint32_t body_names_lengthT = ((uint32_t) (*(inbuffer + offset))); + body_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + body_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + body_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->body_names_length); + if(body_names_lengthT > body_names_length) + this->body_names = (char**)realloc(this->body_names, body_names_lengthT * sizeof(char*)); + body_names_length = body_names_lengthT; + for( uint32_t i = 0; i < body_names_length; i++){ + uint32_t length_st_body_names; + arrToVar(length_st_body_names, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_body_names; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_body_names-1]=0; + this->st_body_names = (char *)(inbuffer + offset-1); + offset += length_st_body_names; + memcpy( &(this->body_names[i]), &(this->st_body_names), sizeof(char*)); + } + uint32_t geom_names_lengthT = ((uint32_t) (*(inbuffer + offset))); + geom_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + geom_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + geom_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->geom_names_length); + if(geom_names_lengthT > geom_names_length) + this->geom_names = (char**)realloc(this->geom_names, geom_names_lengthT * sizeof(char*)); + geom_names_length = geom_names_lengthT; + for( uint32_t i = 0; i < geom_names_length; i++){ + uint32_t length_st_geom_names; + arrToVar(length_st_geom_names, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_geom_names; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_geom_names-1]=0; + this->st_geom_names = (char *)(inbuffer + offset-1); + offset += length_st_geom_names; + memcpy( &(this->geom_names[i]), &(this->st_geom_names), sizeof(char*)); + } + uint32_t joint_names_lengthT = ((uint32_t) (*(inbuffer + offset))); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->joint_names_length); + if(joint_names_lengthT > joint_names_length) + this->joint_names = (char**)realloc(this->joint_names, joint_names_lengthT * sizeof(char*)); + joint_names_length = joint_names_lengthT; + for( uint32_t i = 0; i < joint_names_length; i++){ + uint32_t length_st_joint_names; + arrToVar(length_st_joint_names, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_joint_names; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_joint_names-1]=0; + this->st_joint_names = (char *)(inbuffer + offset-1); + offset += length_st_joint_names; + memcpy( &(this->joint_names[i]), &(this->st_joint_names), sizeof(char*)); + } + uint32_t child_model_names_lengthT = ((uint32_t) (*(inbuffer + offset))); + child_model_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + child_model_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + child_model_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->child_model_names_length); + if(child_model_names_lengthT > child_model_names_length) + this->child_model_names = (char**)realloc(this->child_model_names, child_model_names_lengthT * sizeof(char*)); + child_model_names_length = child_model_names_lengthT; + for( uint32_t i = 0; i < child_model_names_length; i++){ + uint32_t length_st_child_model_names; + arrToVar(length_st_child_model_names, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_child_model_names; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_child_model_names-1]=0; + this->st_child_model_names = (char *)(inbuffer + offset-1); + offset += length_st_child_model_names; + memcpy( &(this->child_model_names[i]), &(this->st_child_model_names), sizeof(char*)); + } + union { + bool real; + uint8_t base; + } u_is_static; + u_is_static.base = 0; + u_is_static.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->is_static = u_is_static.real; + offset += sizeof(this->is_static); + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return GETMODELPROPERTIES; }; + const char * getMD5(){ return "b7f370938ef77b464b95f1bab3ec5028"; }; + + }; + + class GetModelProperties { + public: + typedef GetModelPropertiesRequest Request; + typedef GetModelPropertiesResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/gazebo_msgs/GetModelState.h b/source/ros-max-lib/ros_lib/gazebo_msgs/GetModelState.h new file mode 100644 index 0000000..0dbcc81 --- /dev/null +++ b/source/ros-max-lib/ros_lib/gazebo_msgs/GetModelState.h @@ -0,0 +1,157 @@ +#ifndef _ROS_SERVICE_GetModelState_h +#define _ROS_SERVICE_GetModelState_h +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Pose.h" +#include "geometry_msgs/Twist.h" +#include "std_msgs/Header.h" + +namespace gazebo_msgs +{ + +static const char GETMODELSTATE[] = "gazebo_msgs/GetModelState"; + + class GetModelStateRequest : public ros::Msg + { + public: + typedef const char* _model_name_type; + _model_name_type model_name; + typedef const char* _relative_entity_name_type; + _relative_entity_name_type relative_entity_name; + + GetModelStateRequest(): + model_name(""), + relative_entity_name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_model_name = strlen(this->model_name); + varToArr(outbuffer + offset, length_model_name); + offset += 4; + memcpy(outbuffer + offset, this->model_name, length_model_name); + offset += length_model_name; + uint32_t length_relative_entity_name = strlen(this->relative_entity_name); + varToArr(outbuffer + offset, length_relative_entity_name); + offset += 4; + memcpy(outbuffer + offset, this->relative_entity_name, length_relative_entity_name); + offset += length_relative_entity_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_model_name; + arrToVar(length_model_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_model_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_model_name-1]=0; + this->model_name = (char *)(inbuffer + offset-1); + offset += length_model_name; + uint32_t length_relative_entity_name; + arrToVar(length_relative_entity_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_relative_entity_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_relative_entity_name-1]=0; + this->relative_entity_name = (char *)(inbuffer + offset-1); + offset += length_relative_entity_name; + return offset; + } + + const char * getType(){ return GETMODELSTATE; }; + const char * getMD5(){ return "19d412713cefe4a67437e17a951e759e"; }; + + }; + + class GetModelStateResponse : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::Pose _pose_type; + _pose_type pose; + typedef geometry_msgs::Twist _twist_type; + _twist_type twist; + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + GetModelStateResponse(): + header(), + pose(), + twist(), + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->pose.serialize(outbuffer + offset); + offset += this->twist.serialize(outbuffer + offset); + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->pose.deserialize(inbuffer + offset); + offset += this->twist.deserialize(inbuffer + offset); + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return GETMODELSTATE; }; + const char * getMD5(){ return "ccd51739bb00f0141629e87b792e92b9"; }; + + }; + + class GetModelState { + public: + typedef GetModelStateRequest Request; + typedef GetModelStateResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/gazebo_msgs/GetPhysicsProperties.h b/source/ros-max-lib/ros_lib/gazebo_msgs/GetPhysicsProperties.h new file mode 100644 index 0000000..f79bc89 --- /dev/null +++ b/source/ros-max-lib/ros_lib/gazebo_msgs/GetPhysicsProperties.h @@ -0,0 +1,199 @@ +#ifndef _ROS_SERVICE_GetPhysicsProperties_h +#define _ROS_SERVICE_GetPhysicsProperties_h +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Vector3.h" +#include "gazebo_msgs/ODEPhysics.h" + +namespace gazebo_msgs +{ + +static const char GETPHYSICSPROPERTIES[] = "gazebo_msgs/GetPhysicsProperties"; + + class GetPhysicsPropertiesRequest : public ros::Msg + { + public: + + GetPhysicsPropertiesRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return GETPHYSICSPROPERTIES; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class GetPhysicsPropertiesResponse : public ros::Msg + { + public: + typedef double _time_step_type; + _time_step_type time_step; + typedef bool _pause_type; + _pause_type pause; + typedef double _max_update_rate_type; + _max_update_rate_type max_update_rate; + typedef geometry_msgs::Vector3 _gravity_type; + _gravity_type gravity; + typedef gazebo_msgs::ODEPhysics _ode_config_type; + _ode_config_type ode_config; + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + GetPhysicsPropertiesResponse(): + time_step(0), + pause(0), + max_update_rate(0), + gravity(), + ode_config(), + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_time_step; + u_time_step.real = this->time_step; + *(outbuffer + offset + 0) = (u_time_step.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_time_step.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_time_step.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_time_step.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_time_step.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_time_step.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_time_step.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_time_step.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->time_step); + union { + bool real; + uint8_t base; + } u_pause; + u_pause.real = this->pause; + *(outbuffer + offset + 0) = (u_pause.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->pause); + union { + double real; + uint64_t base; + } u_max_update_rate; + u_max_update_rate.real = this->max_update_rate; + *(outbuffer + offset + 0) = (u_max_update_rate.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_max_update_rate.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_max_update_rate.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_max_update_rate.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_max_update_rate.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_max_update_rate.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_max_update_rate.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_max_update_rate.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->max_update_rate); + offset += this->gravity.serialize(outbuffer + offset); + offset += this->ode_config.serialize(outbuffer + offset); + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_time_step; + u_time_step.base = 0; + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->time_step = u_time_step.real; + offset += sizeof(this->time_step); + union { + bool real; + uint8_t base; + } u_pause; + u_pause.base = 0; + u_pause.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->pause = u_pause.real; + offset += sizeof(this->pause); + union { + double real; + uint64_t base; + } u_max_update_rate; + u_max_update_rate.base = 0; + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->max_update_rate = u_max_update_rate.real; + offset += sizeof(this->max_update_rate); + offset += this->gravity.deserialize(inbuffer + offset); + offset += this->ode_config.deserialize(inbuffer + offset); + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return GETPHYSICSPROPERTIES; }; + const char * getMD5(){ return "575a5e74786981b7df2e3afc567693a6"; }; + + }; + + class GetPhysicsProperties { + public: + typedef GetPhysicsPropertiesRequest Request; + typedef GetPhysicsPropertiesResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/gazebo_msgs/GetWorldProperties.h b/source/ros-max-lib/ros_lib/gazebo_msgs/GetWorldProperties.h new file mode 100644 index 0000000..e9170e7 --- /dev/null +++ b/source/ros-max-lib/ros_lib/gazebo_msgs/GetWorldProperties.h @@ -0,0 +1,192 @@ +#ifndef _ROS_SERVICE_GetWorldProperties_h +#define _ROS_SERVICE_GetWorldProperties_h +#include +#include +#include +#include "ros/msg.h" + +namespace gazebo_msgs +{ + +static const char GETWORLDPROPERTIES[] = "gazebo_msgs/GetWorldProperties"; + + class GetWorldPropertiesRequest : public ros::Msg + { + public: + + GetWorldPropertiesRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return GETWORLDPROPERTIES; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class GetWorldPropertiesResponse : public ros::Msg + { + public: + typedef double _sim_time_type; + _sim_time_type sim_time; + uint32_t model_names_length; + typedef char* _model_names_type; + _model_names_type st_model_names; + _model_names_type * model_names; + typedef bool _rendering_enabled_type; + _rendering_enabled_type rendering_enabled; + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + GetWorldPropertiesResponse(): + sim_time(0), + model_names_length(0), model_names(NULL), + rendering_enabled(0), + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_sim_time; + u_sim_time.real = this->sim_time; + *(outbuffer + offset + 0) = (u_sim_time.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_sim_time.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_sim_time.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_sim_time.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_sim_time.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_sim_time.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_sim_time.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_sim_time.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->sim_time); + *(outbuffer + offset + 0) = (this->model_names_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->model_names_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->model_names_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->model_names_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->model_names_length); + for( uint32_t i = 0; i < model_names_length; i++){ + uint32_t length_model_namesi = strlen(this->model_names[i]); + varToArr(outbuffer + offset, length_model_namesi); + offset += 4; + memcpy(outbuffer + offset, this->model_names[i], length_model_namesi); + offset += length_model_namesi; + } + union { + bool real; + uint8_t base; + } u_rendering_enabled; + u_rendering_enabled.real = this->rendering_enabled; + *(outbuffer + offset + 0) = (u_rendering_enabled.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->rendering_enabled); + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_sim_time; + u_sim_time.base = 0; + u_sim_time.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_sim_time.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_sim_time.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_sim_time.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_sim_time.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_sim_time.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_sim_time.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_sim_time.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->sim_time = u_sim_time.real; + offset += sizeof(this->sim_time); + uint32_t model_names_lengthT = ((uint32_t) (*(inbuffer + offset))); + model_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + model_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + model_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->model_names_length); + if(model_names_lengthT > model_names_length) + this->model_names = (char**)realloc(this->model_names, model_names_lengthT * sizeof(char*)); + model_names_length = model_names_lengthT; + for( uint32_t i = 0; i < model_names_length; i++){ + uint32_t length_st_model_names; + arrToVar(length_st_model_names, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_model_names; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_model_names-1]=0; + this->st_model_names = (char *)(inbuffer + offset-1); + offset += length_st_model_names; + memcpy( &(this->model_names[i]), &(this->st_model_names), sizeof(char*)); + } + union { + bool real; + uint8_t base; + } u_rendering_enabled; + u_rendering_enabled.base = 0; + u_rendering_enabled.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->rendering_enabled = u_rendering_enabled.real; + offset += sizeof(this->rendering_enabled); + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return GETWORLDPROPERTIES; }; + const char * getMD5(){ return "36bb0f2eccf4d8be971410c22818ba3f"; }; + + }; + + class GetWorldProperties { + public: + typedef GetWorldPropertiesRequest Request; + typedef GetWorldPropertiesResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/gazebo_msgs/JointRequest.h b/source/ros-max-lib/ros_lib/gazebo_msgs/JointRequest.h new file mode 100644 index 0000000..6c2c13e --- /dev/null +++ b/source/ros-max-lib/ros_lib/gazebo_msgs/JointRequest.h @@ -0,0 +1,87 @@ +#ifndef _ROS_SERVICE_JointRequest_h +#define _ROS_SERVICE_JointRequest_h +#include +#include +#include +#include "ros/msg.h" + +namespace gazebo_msgs +{ + +static const char JOINTREQUEST[] = "gazebo_msgs/JointRequest"; + + class JointRequestRequest : public ros::Msg + { + public: + typedef const char* _joint_name_type; + _joint_name_type joint_name; + + JointRequestRequest(): + joint_name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_joint_name = strlen(this->joint_name); + varToArr(outbuffer + offset, length_joint_name); + offset += 4; + memcpy(outbuffer + offset, this->joint_name, length_joint_name); + offset += length_joint_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_joint_name; + arrToVar(length_joint_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_joint_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_joint_name-1]=0; + this->joint_name = (char *)(inbuffer + offset-1); + offset += length_joint_name; + return offset; + } + + const char * getType(){ return JOINTREQUEST; }; + const char * getMD5(){ return "0be1351618e1dc030eb7959d9a4902de"; }; + + }; + + class JointRequestResponse : public ros::Msg + { + public: + + JointRequestResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return JOINTREQUEST; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class JointRequest { + public: + typedef JointRequestRequest Request; + typedef JointRequestResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/gazebo_msgs/LinkState.h b/source/ros-max-lib/ros_lib/gazebo_msgs/LinkState.h new file mode 100644 index 0000000..cd2684b --- /dev/null +++ b/source/ros-max-lib/ros_lib/gazebo_msgs/LinkState.h @@ -0,0 +1,84 @@ +#ifndef _ROS_gazebo_msgs_LinkState_h +#define _ROS_gazebo_msgs_LinkState_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Pose.h" +#include "geometry_msgs/Twist.h" + +namespace gazebo_msgs +{ + + class LinkState : public ros::Msg + { + public: + typedef const char* _link_name_type; + _link_name_type link_name; + typedef geometry_msgs::Pose _pose_type; + _pose_type pose; + typedef geometry_msgs::Twist _twist_type; + _twist_type twist; + typedef const char* _reference_frame_type; + _reference_frame_type reference_frame; + + LinkState(): + link_name(""), + pose(), + twist(), + reference_frame("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_link_name = strlen(this->link_name); + varToArr(outbuffer + offset, length_link_name); + offset += 4; + memcpy(outbuffer + offset, this->link_name, length_link_name); + offset += length_link_name; + offset += this->pose.serialize(outbuffer + offset); + offset += this->twist.serialize(outbuffer + offset); + uint32_t length_reference_frame = strlen(this->reference_frame); + varToArr(outbuffer + offset, length_reference_frame); + offset += 4; + memcpy(outbuffer + offset, this->reference_frame, length_reference_frame); + offset += length_reference_frame; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_link_name; + arrToVar(length_link_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_link_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_link_name-1]=0; + this->link_name = (char *)(inbuffer + offset-1); + offset += length_link_name; + offset += this->pose.deserialize(inbuffer + offset); + offset += this->twist.deserialize(inbuffer + offset); + uint32_t length_reference_frame; + arrToVar(length_reference_frame, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_reference_frame; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_reference_frame-1]=0; + this->reference_frame = (char *)(inbuffer + offset-1); + offset += length_reference_frame; + return offset; + } + + const char * getType(){ return "gazebo_msgs/LinkState"; }; + const char * getMD5(){ return "0818ebbf28ce3a08d48ab1eaa7309ebe"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/gazebo_msgs/LinkStates.h b/source/ros-max-lib/ros_lib/gazebo_msgs/LinkStates.h new file mode 100644 index 0000000..8ec738d --- /dev/null +++ b/source/ros-max-lib/ros_lib/gazebo_msgs/LinkStates.h @@ -0,0 +1,127 @@ +#ifndef _ROS_gazebo_msgs_LinkStates_h +#define _ROS_gazebo_msgs_LinkStates_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Pose.h" +#include "geometry_msgs/Twist.h" + +namespace gazebo_msgs +{ + + class LinkStates : public ros::Msg + { + public: + uint32_t name_length; + typedef char* _name_type; + _name_type st_name; + _name_type * name; + uint32_t pose_length; + typedef geometry_msgs::Pose _pose_type; + _pose_type st_pose; + _pose_type * pose; + uint32_t twist_length; + typedef geometry_msgs::Twist _twist_type; + _twist_type st_twist; + _twist_type * twist; + + LinkStates(): + name_length(0), name(NULL), + pose_length(0), pose(NULL), + twist_length(0), twist(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->name_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->name_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->name_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->name_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->name_length); + for( uint32_t i = 0; i < name_length; i++){ + uint32_t length_namei = strlen(this->name[i]); + varToArr(outbuffer + offset, length_namei); + offset += 4; + memcpy(outbuffer + offset, this->name[i], length_namei); + offset += length_namei; + } + *(outbuffer + offset + 0) = (this->pose_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->pose_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->pose_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->pose_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->pose_length); + for( uint32_t i = 0; i < pose_length; i++){ + offset += this->pose[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->twist_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->twist_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->twist_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->twist_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->twist_length); + for( uint32_t i = 0; i < twist_length; i++){ + offset += this->twist[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t name_lengthT = ((uint32_t) (*(inbuffer + offset))); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->name_length); + if(name_lengthT > name_length) + this->name = (char**)realloc(this->name, name_lengthT * sizeof(char*)); + name_length = name_lengthT; + for( uint32_t i = 0; i < name_length; i++){ + uint32_t length_st_name; + arrToVar(length_st_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_name-1]=0; + this->st_name = (char *)(inbuffer + offset-1); + offset += length_st_name; + memcpy( &(this->name[i]), &(this->st_name), sizeof(char*)); + } + uint32_t pose_lengthT = ((uint32_t) (*(inbuffer + offset))); + pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->pose_length); + if(pose_lengthT > pose_length) + this->pose = (geometry_msgs::Pose*)realloc(this->pose, pose_lengthT * sizeof(geometry_msgs::Pose)); + pose_length = pose_lengthT; + for( uint32_t i = 0; i < pose_length; i++){ + offset += this->st_pose.deserialize(inbuffer + offset); + memcpy( &(this->pose[i]), &(this->st_pose), sizeof(geometry_msgs::Pose)); + } + uint32_t twist_lengthT = ((uint32_t) (*(inbuffer + offset))); + twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->twist_length); + if(twist_lengthT > twist_length) + this->twist = (geometry_msgs::Twist*)realloc(this->twist, twist_lengthT * sizeof(geometry_msgs::Twist)); + twist_length = twist_lengthT; + for( uint32_t i = 0; i < twist_length; i++){ + offset += this->st_twist.deserialize(inbuffer + offset); + memcpy( &(this->twist[i]), &(this->st_twist), sizeof(geometry_msgs::Twist)); + } + return offset; + } + + const char * getType(){ return "gazebo_msgs/LinkStates"; }; + const char * getMD5(){ return "48c080191eb15c41858319b4d8a609c2"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/gazebo_msgs/ModelState.h b/source/ros-max-lib/ros_lib/gazebo_msgs/ModelState.h new file mode 100644 index 0000000..4a3cfd1 --- /dev/null +++ b/source/ros-max-lib/ros_lib/gazebo_msgs/ModelState.h @@ -0,0 +1,84 @@ +#ifndef _ROS_gazebo_msgs_ModelState_h +#define _ROS_gazebo_msgs_ModelState_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Pose.h" +#include "geometry_msgs/Twist.h" + +namespace gazebo_msgs +{ + + class ModelState : public ros::Msg + { + public: + typedef const char* _model_name_type; + _model_name_type model_name; + typedef geometry_msgs::Pose _pose_type; + _pose_type pose; + typedef geometry_msgs::Twist _twist_type; + _twist_type twist; + typedef const char* _reference_frame_type; + _reference_frame_type reference_frame; + + ModelState(): + model_name(""), + pose(), + twist(), + reference_frame("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_model_name = strlen(this->model_name); + varToArr(outbuffer + offset, length_model_name); + offset += 4; + memcpy(outbuffer + offset, this->model_name, length_model_name); + offset += length_model_name; + offset += this->pose.serialize(outbuffer + offset); + offset += this->twist.serialize(outbuffer + offset); + uint32_t length_reference_frame = strlen(this->reference_frame); + varToArr(outbuffer + offset, length_reference_frame); + offset += 4; + memcpy(outbuffer + offset, this->reference_frame, length_reference_frame); + offset += length_reference_frame; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_model_name; + arrToVar(length_model_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_model_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_model_name-1]=0; + this->model_name = (char *)(inbuffer + offset-1); + offset += length_model_name; + offset += this->pose.deserialize(inbuffer + offset); + offset += this->twist.deserialize(inbuffer + offset); + uint32_t length_reference_frame; + arrToVar(length_reference_frame, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_reference_frame; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_reference_frame-1]=0; + this->reference_frame = (char *)(inbuffer + offset-1); + offset += length_reference_frame; + return offset; + } + + const char * getType(){ return "gazebo_msgs/ModelState"; }; + const char * getMD5(){ return "9330fd35f2fcd82d457e54bd54e10593"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/gazebo_msgs/ModelStates.h b/source/ros-max-lib/ros_lib/gazebo_msgs/ModelStates.h new file mode 100644 index 0000000..f6c66d5 --- /dev/null +++ b/source/ros-max-lib/ros_lib/gazebo_msgs/ModelStates.h @@ -0,0 +1,127 @@ +#ifndef _ROS_gazebo_msgs_ModelStates_h +#define _ROS_gazebo_msgs_ModelStates_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Pose.h" +#include "geometry_msgs/Twist.h" + +namespace gazebo_msgs +{ + + class ModelStates : public ros::Msg + { + public: + uint32_t name_length; + typedef char* _name_type; + _name_type st_name; + _name_type * name; + uint32_t pose_length; + typedef geometry_msgs::Pose _pose_type; + _pose_type st_pose; + _pose_type * pose; + uint32_t twist_length; + typedef geometry_msgs::Twist _twist_type; + _twist_type st_twist; + _twist_type * twist; + + ModelStates(): + name_length(0), name(NULL), + pose_length(0), pose(NULL), + twist_length(0), twist(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->name_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->name_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->name_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->name_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->name_length); + for( uint32_t i = 0; i < name_length; i++){ + uint32_t length_namei = strlen(this->name[i]); + varToArr(outbuffer + offset, length_namei); + offset += 4; + memcpy(outbuffer + offset, this->name[i], length_namei); + offset += length_namei; + } + *(outbuffer + offset + 0) = (this->pose_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->pose_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->pose_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->pose_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->pose_length); + for( uint32_t i = 0; i < pose_length; i++){ + offset += this->pose[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->twist_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->twist_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->twist_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->twist_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->twist_length); + for( uint32_t i = 0; i < twist_length; i++){ + offset += this->twist[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t name_lengthT = ((uint32_t) (*(inbuffer + offset))); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->name_length); + if(name_lengthT > name_length) + this->name = (char**)realloc(this->name, name_lengthT * sizeof(char*)); + name_length = name_lengthT; + for( uint32_t i = 0; i < name_length; i++){ + uint32_t length_st_name; + arrToVar(length_st_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_name-1]=0; + this->st_name = (char *)(inbuffer + offset-1); + offset += length_st_name; + memcpy( &(this->name[i]), &(this->st_name), sizeof(char*)); + } + uint32_t pose_lengthT = ((uint32_t) (*(inbuffer + offset))); + pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->pose_length); + if(pose_lengthT > pose_length) + this->pose = (geometry_msgs::Pose*)realloc(this->pose, pose_lengthT * sizeof(geometry_msgs::Pose)); + pose_length = pose_lengthT; + for( uint32_t i = 0; i < pose_length; i++){ + offset += this->st_pose.deserialize(inbuffer + offset); + memcpy( &(this->pose[i]), &(this->st_pose), sizeof(geometry_msgs::Pose)); + } + uint32_t twist_lengthT = ((uint32_t) (*(inbuffer + offset))); + twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->twist_length); + if(twist_lengthT > twist_length) + this->twist = (geometry_msgs::Twist*)realloc(this->twist, twist_lengthT * sizeof(geometry_msgs::Twist)); + twist_length = twist_lengthT; + for( uint32_t i = 0; i < twist_length; i++){ + offset += this->st_twist.deserialize(inbuffer + offset); + memcpy( &(this->twist[i]), &(this->st_twist), sizeof(geometry_msgs::Twist)); + } + return offset; + } + + const char * getType(){ return "gazebo_msgs/ModelStates"; }; + const char * getMD5(){ return "48c080191eb15c41858319b4d8a609c2"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/gazebo_msgs/ODEJointProperties.h b/source/ros-max-lib/ros_lib/gazebo_msgs/ODEJointProperties.h new file mode 100644 index 0000000..c3fba20 --- /dev/null +++ b/source/ros-max-lib/ros_lib/gazebo_msgs/ODEJointProperties.h @@ -0,0 +1,558 @@ +#ifndef _ROS_gazebo_msgs_ODEJointProperties_h +#define _ROS_gazebo_msgs_ODEJointProperties_h + +#include +#include +#include +#include "ros/msg.h" + +namespace gazebo_msgs +{ + + class ODEJointProperties : public ros::Msg + { + public: + uint32_t damping_length; + typedef double _damping_type; + _damping_type st_damping; + _damping_type * damping; + uint32_t hiStop_length; + typedef double _hiStop_type; + _hiStop_type st_hiStop; + _hiStop_type * hiStop; + uint32_t loStop_length; + typedef double _loStop_type; + _loStop_type st_loStop; + _loStop_type * loStop; + uint32_t erp_length; + typedef double _erp_type; + _erp_type st_erp; + _erp_type * erp; + uint32_t cfm_length; + typedef double _cfm_type; + _cfm_type st_cfm; + _cfm_type * cfm; + uint32_t stop_erp_length; + typedef double _stop_erp_type; + _stop_erp_type st_stop_erp; + _stop_erp_type * stop_erp; + uint32_t stop_cfm_length; + typedef double _stop_cfm_type; + _stop_cfm_type st_stop_cfm; + _stop_cfm_type * stop_cfm; + uint32_t fudge_factor_length; + typedef double _fudge_factor_type; + _fudge_factor_type st_fudge_factor; + _fudge_factor_type * fudge_factor; + uint32_t fmax_length; + typedef double _fmax_type; + _fmax_type st_fmax; + _fmax_type * fmax; + uint32_t vel_length; + typedef double _vel_type; + _vel_type st_vel; + _vel_type * vel; + + ODEJointProperties(): + damping_length(0), damping(NULL), + hiStop_length(0), hiStop(NULL), + loStop_length(0), loStop(NULL), + erp_length(0), erp(NULL), + cfm_length(0), cfm(NULL), + stop_erp_length(0), stop_erp(NULL), + stop_cfm_length(0), stop_cfm(NULL), + fudge_factor_length(0), fudge_factor(NULL), + fmax_length(0), fmax(NULL), + vel_length(0), vel(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->damping_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->damping_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->damping_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->damping_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->damping_length); + for( uint32_t i = 0; i < damping_length; i++){ + union { + double real; + uint64_t base; + } u_dampingi; + u_dampingi.real = this->damping[i]; + *(outbuffer + offset + 0) = (u_dampingi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_dampingi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_dampingi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_dampingi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_dampingi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_dampingi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_dampingi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_dampingi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->damping[i]); + } + *(outbuffer + offset + 0) = (this->hiStop_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->hiStop_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->hiStop_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->hiStop_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->hiStop_length); + for( uint32_t i = 0; i < hiStop_length; i++){ + union { + double real; + uint64_t base; + } u_hiStopi; + u_hiStopi.real = this->hiStop[i]; + *(outbuffer + offset + 0) = (u_hiStopi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_hiStopi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_hiStopi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_hiStopi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_hiStopi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_hiStopi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_hiStopi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_hiStopi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->hiStop[i]); + } + *(outbuffer + offset + 0) = (this->loStop_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->loStop_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->loStop_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->loStop_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->loStop_length); + for( uint32_t i = 0; i < loStop_length; i++){ + union { + double real; + uint64_t base; + } u_loStopi; + u_loStopi.real = this->loStop[i]; + *(outbuffer + offset + 0) = (u_loStopi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_loStopi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_loStopi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_loStopi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_loStopi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_loStopi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_loStopi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_loStopi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->loStop[i]); + } + *(outbuffer + offset + 0) = (this->erp_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->erp_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->erp_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->erp_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->erp_length); + for( uint32_t i = 0; i < erp_length; i++){ + union { + double real; + uint64_t base; + } u_erpi; + u_erpi.real = this->erp[i]; + *(outbuffer + offset + 0) = (u_erpi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_erpi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_erpi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_erpi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_erpi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_erpi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_erpi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_erpi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->erp[i]); + } + *(outbuffer + offset + 0) = (this->cfm_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->cfm_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->cfm_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->cfm_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->cfm_length); + for( uint32_t i = 0; i < cfm_length; i++){ + union { + double real; + uint64_t base; + } u_cfmi; + u_cfmi.real = this->cfm[i]; + *(outbuffer + offset + 0) = (u_cfmi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_cfmi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_cfmi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_cfmi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_cfmi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_cfmi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_cfmi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_cfmi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->cfm[i]); + } + *(outbuffer + offset + 0) = (this->stop_erp_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stop_erp_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stop_erp_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stop_erp_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->stop_erp_length); + for( uint32_t i = 0; i < stop_erp_length; i++){ + union { + double real; + uint64_t base; + } u_stop_erpi; + u_stop_erpi.real = this->stop_erp[i]; + *(outbuffer + offset + 0) = (u_stop_erpi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_stop_erpi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_stop_erpi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_stop_erpi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_stop_erpi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_stop_erpi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_stop_erpi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_stop_erpi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->stop_erp[i]); + } + *(outbuffer + offset + 0) = (this->stop_cfm_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stop_cfm_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stop_cfm_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stop_cfm_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->stop_cfm_length); + for( uint32_t i = 0; i < stop_cfm_length; i++){ + union { + double real; + uint64_t base; + } u_stop_cfmi; + u_stop_cfmi.real = this->stop_cfm[i]; + *(outbuffer + offset + 0) = (u_stop_cfmi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_stop_cfmi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_stop_cfmi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_stop_cfmi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_stop_cfmi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_stop_cfmi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_stop_cfmi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_stop_cfmi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->stop_cfm[i]); + } + *(outbuffer + offset + 0) = (this->fudge_factor_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->fudge_factor_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->fudge_factor_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->fudge_factor_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->fudge_factor_length); + for( uint32_t i = 0; i < fudge_factor_length; i++){ + union { + double real; + uint64_t base; + } u_fudge_factori; + u_fudge_factori.real = this->fudge_factor[i]; + *(outbuffer + offset + 0) = (u_fudge_factori.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_fudge_factori.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_fudge_factori.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_fudge_factori.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_fudge_factori.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_fudge_factori.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_fudge_factori.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_fudge_factori.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->fudge_factor[i]); + } + *(outbuffer + offset + 0) = (this->fmax_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->fmax_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->fmax_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->fmax_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->fmax_length); + for( uint32_t i = 0; i < fmax_length; i++){ + union { + double real; + uint64_t base; + } u_fmaxi; + u_fmaxi.real = this->fmax[i]; + *(outbuffer + offset + 0) = (u_fmaxi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_fmaxi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_fmaxi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_fmaxi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_fmaxi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_fmaxi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_fmaxi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_fmaxi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->fmax[i]); + } + *(outbuffer + offset + 0) = (this->vel_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->vel_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->vel_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->vel_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->vel_length); + for( uint32_t i = 0; i < vel_length; i++){ + union { + double real; + uint64_t base; + } u_veli; + u_veli.real = this->vel[i]; + *(outbuffer + offset + 0) = (u_veli.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_veli.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_veli.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_veli.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_veli.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_veli.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_veli.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_veli.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->vel[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t damping_lengthT = ((uint32_t) (*(inbuffer + offset))); + damping_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + damping_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + damping_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->damping_length); + if(damping_lengthT > damping_length) + this->damping = (double*)realloc(this->damping, damping_lengthT * sizeof(double)); + damping_length = damping_lengthT; + for( uint32_t i = 0; i < damping_length; i++){ + union { + double real; + uint64_t base; + } u_st_damping; + u_st_damping.base = 0; + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_damping.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_damping = u_st_damping.real; + offset += sizeof(this->st_damping); + memcpy( &(this->damping[i]), &(this->st_damping), sizeof(double)); + } + uint32_t hiStop_lengthT = ((uint32_t) (*(inbuffer + offset))); + hiStop_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + hiStop_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + hiStop_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->hiStop_length); + if(hiStop_lengthT > hiStop_length) + this->hiStop = (double*)realloc(this->hiStop, hiStop_lengthT * sizeof(double)); + hiStop_length = hiStop_lengthT; + for( uint32_t i = 0; i < hiStop_length; i++){ + union { + double real; + uint64_t base; + } u_st_hiStop; + u_st_hiStop.base = 0; + u_st_hiStop.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_hiStop.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_hiStop.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_hiStop.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_hiStop.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_hiStop.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_hiStop.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_hiStop.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_hiStop = u_st_hiStop.real; + offset += sizeof(this->st_hiStop); + memcpy( &(this->hiStop[i]), &(this->st_hiStop), sizeof(double)); + } + uint32_t loStop_lengthT = ((uint32_t) (*(inbuffer + offset))); + loStop_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + loStop_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + loStop_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->loStop_length); + if(loStop_lengthT > loStop_length) + this->loStop = (double*)realloc(this->loStop, loStop_lengthT * sizeof(double)); + loStop_length = loStop_lengthT; + for( uint32_t i = 0; i < loStop_length; i++){ + union { + double real; + uint64_t base; + } u_st_loStop; + u_st_loStop.base = 0; + u_st_loStop.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_loStop.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_loStop.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_loStop.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_loStop.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_loStop.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_loStop.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_loStop.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_loStop = u_st_loStop.real; + offset += sizeof(this->st_loStop); + memcpy( &(this->loStop[i]), &(this->st_loStop), sizeof(double)); + } + uint32_t erp_lengthT = ((uint32_t) (*(inbuffer + offset))); + erp_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + erp_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + erp_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->erp_length); + if(erp_lengthT > erp_length) + this->erp = (double*)realloc(this->erp, erp_lengthT * sizeof(double)); + erp_length = erp_lengthT; + for( uint32_t i = 0; i < erp_length; i++){ + union { + double real; + uint64_t base; + } u_st_erp; + u_st_erp.base = 0; + u_st_erp.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_erp.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_erp.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_erp.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_erp.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_erp.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_erp.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_erp.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_erp = u_st_erp.real; + offset += sizeof(this->st_erp); + memcpy( &(this->erp[i]), &(this->st_erp), sizeof(double)); + } + uint32_t cfm_lengthT = ((uint32_t) (*(inbuffer + offset))); + cfm_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + cfm_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + cfm_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->cfm_length); + if(cfm_lengthT > cfm_length) + this->cfm = (double*)realloc(this->cfm, cfm_lengthT * sizeof(double)); + cfm_length = cfm_lengthT; + for( uint32_t i = 0; i < cfm_length; i++){ + union { + double real; + uint64_t base; + } u_st_cfm; + u_st_cfm.base = 0; + u_st_cfm.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_cfm.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_cfm.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_cfm.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_cfm.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_cfm.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_cfm.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_cfm.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_cfm = u_st_cfm.real; + offset += sizeof(this->st_cfm); + memcpy( &(this->cfm[i]), &(this->st_cfm), sizeof(double)); + } + uint32_t stop_erp_lengthT = ((uint32_t) (*(inbuffer + offset))); + stop_erp_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + stop_erp_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + stop_erp_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stop_erp_length); + if(stop_erp_lengthT > stop_erp_length) + this->stop_erp = (double*)realloc(this->stop_erp, stop_erp_lengthT * sizeof(double)); + stop_erp_length = stop_erp_lengthT; + for( uint32_t i = 0; i < stop_erp_length; i++){ + union { + double real; + uint64_t base; + } u_st_stop_erp; + u_st_stop_erp.base = 0; + u_st_stop_erp.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_stop_erp.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_stop_erp.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_stop_erp.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_stop_erp.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_stop_erp.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_stop_erp.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_stop_erp.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_stop_erp = u_st_stop_erp.real; + offset += sizeof(this->st_stop_erp); + memcpy( &(this->stop_erp[i]), &(this->st_stop_erp), sizeof(double)); + } + uint32_t stop_cfm_lengthT = ((uint32_t) (*(inbuffer + offset))); + stop_cfm_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + stop_cfm_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + stop_cfm_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stop_cfm_length); + if(stop_cfm_lengthT > stop_cfm_length) + this->stop_cfm = (double*)realloc(this->stop_cfm, stop_cfm_lengthT * sizeof(double)); + stop_cfm_length = stop_cfm_lengthT; + for( uint32_t i = 0; i < stop_cfm_length; i++){ + union { + double real; + uint64_t base; + } u_st_stop_cfm; + u_st_stop_cfm.base = 0; + u_st_stop_cfm.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_stop_cfm.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_stop_cfm.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_stop_cfm.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_stop_cfm.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_stop_cfm.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_stop_cfm.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_stop_cfm.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_stop_cfm = u_st_stop_cfm.real; + offset += sizeof(this->st_stop_cfm); + memcpy( &(this->stop_cfm[i]), &(this->st_stop_cfm), sizeof(double)); + } + uint32_t fudge_factor_lengthT = ((uint32_t) (*(inbuffer + offset))); + fudge_factor_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + fudge_factor_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + fudge_factor_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->fudge_factor_length); + if(fudge_factor_lengthT > fudge_factor_length) + this->fudge_factor = (double*)realloc(this->fudge_factor, fudge_factor_lengthT * sizeof(double)); + fudge_factor_length = fudge_factor_lengthT; + for( uint32_t i = 0; i < fudge_factor_length; i++){ + union { + double real; + uint64_t base; + } u_st_fudge_factor; + u_st_fudge_factor.base = 0; + u_st_fudge_factor.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_fudge_factor.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_fudge_factor.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_fudge_factor.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_fudge_factor.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_fudge_factor.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_fudge_factor.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_fudge_factor.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_fudge_factor = u_st_fudge_factor.real; + offset += sizeof(this->st_fudge_factor); + memcpy( &(this->fudge_factor[i]), &(this->st_fudge_factor), sizeof(double)); + } + uint32_t fmax_lengthT = ((uint32_t) (*(inbuffer + offset))); + fmax_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + fmax_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + fmax_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->fmax_length); + if(fmax_lengthT > fmax_length) + this->fmax = (double*)realloc(this->fmax, fmax_lengthT * sizeof(double)); + fmax_length = fmax_lengthT; + for( uint32_t i = 0; i < fmax_length; i++){ + union { + double real; + uint64_t base; + } u_st_fmax; + u_st_fmax.base = 0; + u_st_fmax.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_fmax.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_fmax.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_fmax.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_fmax.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_fmax.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_fmax.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_fmax.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_fmax = u_st_fmax.real; + offset += sizeof(this->st_fmax); + memcpy( &(this->fmax[i]), &(this->st_fmax), sizeof(double)); + } + uint32_t vel_lengthT = ((uint32_t) (*(inbuffer + offset))); + vel_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + vel_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + vel_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->vel_length); + if(vel_lengthT > vel_length) + this->vel = (double*)realloc(this->vel, vel_lengthT * sizeof(double)); + vel_length = vel_lengthT; + for( uint32_t i = 0; i < vel_length; i++){ + union { + double real; + uint64_t base; + } u_st_vel; + u_st_vel.base = 0; + u_st_vel.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_vel.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_vel.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_vel.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_vel.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_vel.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_vel.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_vel.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_vel = u_st_vel.real; + offset += sizeof(this->st_vel); + memcpy( &(this->vel[i]), &(this->st_vel), sizeof(double)); + } + return offset; + } + + const char * getType(){ return "gazebo_msgs/ODEJointProperties"; }; + const char * getMD5(){ return "1b744c32a920af979f53afe2f9c3511f"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/gazebo_msgs/ODEPhysics.h b/source/ros-max-lib/ros_lib/gazebo_msgs/ODEPhysics.h new file mode 100644 index 0000000..dcb6038 --- /dev/null +++ b/source/ros-max-lib/ros_lib/gazebo_msgs/ODEPhysics.h @@ -0,0 +1,287 @@ +#ifndef _ROS_gazebo_msgs_ODEPhysics_h +#define _ROS_gazebo_msgs_ODEPhysics_h + +#include +#include +#include +#include "ros/msg.h" + +namespace gazebo_msgs +{ + + class ODEPhysics : public ros::Msg + { + public: + typedef bool _auto_disable_bodies_type; + _auto_disable_bodies_type auto_disable_bodies; + typedef uint32_t _sor_pgs_precon_iters_type; + _sor_pgs_precon_iters_type sor_pgs_precon_iters; + typedef uint32_t _sor_pgs_iters_type; + _sor_pgs_iters_type sor_pgs_iters; + typedef double _sor_pgs_w_type; + _sor_pgs_w_type sor_pgs_w; + typedef double _sor_pgs_rms_error_tol_type; + _sor_pgs_rms_error_tol_type sor_pgs_rms_error_tol; + typedef double _contact_surface_layer_type; + _contact_surface_layer_type contact_surface_layer; + typedef double _contact_max_correcting_vel_type; + _contact_max_correcting_vel_type contact_max_correcting_vel; + typedef double _cfm_type; + _cfm_type cfm; + typedef double _erp_type; + _erp_type erp; + typedef uint32_t _max_contacts_type; + _max_contacts_type max_contacts; + + ODEPhysics(): + auto_disable_bodies(0), + sor_pgs_precon_iters(0), + sor_pgs_iters(0), + sor_pgs_w(0), + sor_pgs_rms_error_tol(0), + contact_surface_layer(0), + contact_max_correcting_vel(0), + cfm(0), + erp(0), + max_contacts(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_auto_disable_bodies; + u_auto_disable_bodies.real = this->auto_disable_bodies; + *(outbuffer + offset + 0) = (u_auto_disable_bodies.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->auto_disable_bodies); + *(outbuffer + offset + 0) = (this->sor_pgs_precon_iters >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->sor_pgs_precon_iters >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->sor_pgs_precon_iters >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->sor_pgs_precon_iters >> (8 * 3)) & 0xFF; + offset += sizeof(this->sor_pgs_precon_iters); + *(outbuffer + offset + 0) = (this->sor_pgs_iters >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->sor_pgs_iters >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->sor_pgs_iters >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->sor_pgs_iters >> (8 * 3)) & 0xFF; + offset += sizeof(this->sor_pgs_iters); + union { + double real; + uint64_t base; + } u_sor_pgs_w; + u_sor_pgs_w.real = this->sor_pgs_w; + *(outbuffer + offset + 0) = (u_sor_pgs_w.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_sor_pgs_w.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_sor_pgs_w.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_sor_pgs_w.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_sor_pgs_w.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_sor_pgs_w.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_sor_pgs_w.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_sor_pgs_w.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->sor_pgs_w); + union { + double real; + uint64_t base; + } u_sor_pgs_rms_error_tol; + u_sor_pgs_rms_error_tol.real = this->sor_pgs_rms_error_tol; + *(outbuffer + offset + 0) = (u_sor_pgs_rms_error_tol.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_sor_pgs_rms_error_tol.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_sor_pgs_rms_error_tol.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_sor_pgs_rms_error_tol.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_sor_pgs_rms_error_tol.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_sor_pgs_rms_error_tol.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_sor_pgs_rms_error_tol.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_sor_pgs_rms_error_tol.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->sor_pgs_rms_error_tol); + union { + double real; + uint64_t base; + } u_contact_surface_layer; + u_contact_surface_layer.real = this->contact_surface_layer; + *(outbuffer + offset + 0) = (u_contact_surface_layer.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_contact_surface_layer.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_contact_surface_layer.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_contact_surface_layer.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_contact_surface_layer.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_contact_surface_layer.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_contact_surface_layer.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_contact_surface_layer.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->contact_surface_layer); + union { + double real; + uint64_t base; + } u_contact_max_correcting_vel; + u_contact_max_correcting_vel.real = this->contact_max_correcting_vel; + *(outbuffer + offset + 0) = (u_contact_max_correcting_vel.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_contact_max_correcting_vel.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_contact_max_correcting_vel.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_contact_max_correcting_vel.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_contact_max_correcting_vel.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_contact_max_correcting_vel.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_contact_max_correcting_vel.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_contact_max_correcting_vel.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->contact_max_correcting_vel); + union { + double real; + uint64_t base; + } u_cfm; + u_cfm.real = this->cfm; + *(outbuffer + offset + 0) = (u_cfm.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_cfm.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_cfm.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_cfm.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_cfm.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_cfm.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_cfm.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_cfm.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->cfm); + union { + double real; + uint64_t base; + } u_erp; + u_erp.real = this->erp; + *(outbuffer + offset + 0) = (u_erp.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_erp.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_erp.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_erp.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_erp.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_erp.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_erp.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_erp.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->erp); + *(outbuffer + offset + 0) = (this->max_contacts >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->max_contacts >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->max_contacts >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->max_contacts >> (8 * 3)) & 0xFF; + offset += sizeof(this->max_contacts); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_auto_disable_bodies; + u_auto_disable_bodies.base = 0; + u_auto_disable_bodies.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->auto_disable_bodies = u_auto_disable_bodies.real; + offset += sizeof(this->auto_disable_bodies); + this->sor_pgs_precon_iters = ((uint32_t) (*(inbuffer + offset))); + this->sor_pgs_precon_iters |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->sor_pgs_precon_iters |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->sor_pgs_precon_iters |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->sor_pgs_precon_iters); + this->sor_pgs_iters = ((uint32_t) (*(inbuffer + offset))); + this->sor_pgs_iters |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->sor_pgs_iters |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->sor_pgs_iters |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->sor_pgs_iters); + union { + double real; + uint64_t base; + } u_sor_pgs_w; + u_sor_pgs_w.base = 0; + u_sor_pgs_w.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_sor_pgs_w.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_sor_pgs_w.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_sor_pgs_w.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_sor_pgs_w.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_sor_pgs_w.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_sor_pgs_w.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_sor_pgs_w.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->sor_pgs_w = u_sor_pgs_w.real; + offset += sizeof(this->sor_pgs_w); + union { + double real; + uint64_t base; + } u_sor_pgs_rms_error_tol; + u_sor_pgs_rms_error_tol.base = 0; + u_sor_pgs_rms_error_tol.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_sor_pgs_rms_error_tol.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_sor_pgs_rms_error_tol.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_sor_pgs_rms_error_tol.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_sor_pgs_rms_error_tol.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_sor_pgs_rms_error_tol.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_sor_pgs_rms_error_tol.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_sor_pgs_rms_error_tol.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->sor_pgs_rms_error_tol = u_sor_pgs_rms_error_tol.real; + offset += sizeof(this->sor_pgs_rms_error_tol); + union { + double real; + uint64_t base; + } u_contact_surface_layer; + u_contact_surface_layer.base = 0; + u_contact_surface_layer.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_contact_surface_layer.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_contact_surface_layer.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_contact_surface_layer.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_contact_surface_layer.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_contact_surface_layer.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_contact_surface_layer.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_contact_surface_layer.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->contact_surface_layer = u_contact_surface_layer.real; + offset += sizeof(this->contact_surface_layer); + union { + double real; + uint64_t base; + } u_contact_max_correcting_vel; + u_contact_max_correcting_vel.base = 0; + u_contact_max_correcting_vel.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_contact_max_correcting_vel.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_contact_max_correcting_vel.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_contact_max_correcting_vel.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_contact_max_correcting_vel.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_contact_max_correcting_vel.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_contact_max_correcting_vel.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_contact_max_correcting_vel.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->contact_max_correcting_vel = u_contact_max_correcting_vel.real; + offset += sizeof(this->contact_max_correcting_vel); + union { + double real; + uint64_t base; + } u_cfm; + u_cfm.base = 0; + u_cfm.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_cfm.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_cfm.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_cfm.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_cfm.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_cfm.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_cfm.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_cfm.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->cfm = u_cfm.real; + offset += sizeof(this->cfm); + union { + double real; + uint64_t base; + } u_erp; + u_erp.base = 0; + u_erp.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_erp.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_erp.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_erp.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_erp.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_erp.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_erp.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_erp.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->erp = u_erp.real; + offset += sizeof(this->erp); + this->max_contacts = ((uint32_t) (*(inbuffer + offset))); + this->max_contacts |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->max_contacts |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->max_contacts |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->max_contacts); + return offset; + } + + const char * getType(){ return "gazebo_msgs/ODEPhysics"; }; + const char * getMD5(){ return "667d56ddbd547918c32d1934503dc335"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/gazebo_msgs/SetJointProperties.h b/source/ros-max-lib/ros_lib/gazebo_msgs/SetJointProperties.h new file mode 100644 index 0000000..981853d --- /dev/null +++ b/source/ros-max-lib/ros_lib/gazebo_msgs/SetJointProperties.h @@ -0,0 +1,128 @@ +#ifndef _ROS_SERVICE_SetJointProperties_h +#define _ROS_SERVICE_SetJointProperties_h +#include +#include +#include +#include "ros/msg.h" +#include "gazebo_msgs/ODEJointProperties.h" + +namespace gazebo_msgs +{ + +static const char SETJOINTPROPERTIES[] = "gazebo_msgs/SetJointProperties"; + + class SetJointPropertiesRequest : public ros::Msg + { + public: + typedef const char* _joint_name_type; + _joint_name_type joint_name; + typedef gazebo_msgs::ODEJointProperties _ode_joint_config_type; + _ode_joint_config_type ode_joint_config; + + SetJointPropertiesRequest(): + joint_name(""), + ode_joint_config() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_joint_name = strlen(this->joint_name); + varToArr(outbuffer + offset, length_joint_name); + offset += 4; + memcpy(outbuffer + offset, this->joint_name, length_joint_name); + offset += length_joint_name; + offset += this->ode_joint_config.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_joint_name; + arrToVar(length_joint_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_joint_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_joint_name-1]=0; + this->joint_name = (char *)(inbuffer + offset-1); + offset += length_joint_name; + offset += this->ode_joint_config.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return SETJOINTPROPERTIES; }; + const char * getMD5(){ return "331fd8f35fd27e3c1421175590258e26"; }; + + }; + + class SetJointPropertiesResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + SetJointPropertiesResponse(): + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return SETJOINTPROPERTIES; }; + const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; }; + + }; + + class SetJointProperties { + public: + typedef SetJointPropertiesRequest Request; + typedef SetJointPropertiesResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/gazebo_msgs/SetJointTrajectory.h b/source/ros-max-lib/ros_lib/gazebo_msgs/SetJointTrajectory.h new file mode 100644 index 0000000..81146ce --- /dev/null +++ b/source/ros-max-lib/ros_lib/gazebo_msgs/SetJointTrajectory.h @@ -0,0 +1,170 @@ +#ifndef _ROS_SERVICE_SetJointTrajectory_h +#define _ROS_SERVICE_SetJointTrajectory_h +#include +#include +#include +#include "ros/msg.h" +#include "trajectory_msgs/JointTrajectory.h" +#include "geometry_msgs/Pose.h" + +namespace gazebo_msgs +{ + +static const char SETJOINTTRAJECTORY[] = "gazebo_msgs/SetJointTrajectory"; + + class SetJointTrajectoryRequest : public ros::Msg + { + public: + typedef const char* _model_name_type; + _model_name_type model_name; + typedef trajectory_msgs::JointTrajectory _joint_trajectory_type; + _joint_trajectory_type joint_trajectory; + typedef geometry_msgs::Pose _model_pose_type; + _model_pose_type model_pose; + typedef bool _set_model_pose_type; + _set_model_pose_type set_model_pose; + typedef bool _disable_physics_updates_type; + _disable_physics_updates_type disable_physics_updates; + + SetJointTrajectoryRequest(): + model_name(""), + joint_trajectory(), + model_pose(), + set_model_pose(0), + disable_physics_updates(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_model_name = strlen(this->model_name); + varToArr(outbuffer + offset, length_model_name); + offset += 4; + memcpy(outbuffer + offset, this->model_name, length_model_name); + offset += length_model_name; + offset += this->joint_trajectory.serialize(outbuffer + offset); + offset += this->model_pose.serialize(outbuffer + offset); + union { + bool real; + uint8_t base; + } u_set_model_pose; + u_set_model_pose.real = this->set_model_pose; + *(outbuffer + offset + 0) = (u_set_model_pose.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->set_model_pose); + union { + bool real; + uint8_t base; + } u_disable_physics_updates; + u_disable_physics_updates.real = this->disable_physics_updates; + *(outbuffer + offset + 0) = (u_disable_physics_updates.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->disable_physics_updates); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_model_name; + arrToVar(length_model_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_model_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_model_name-1]=0; + this->model_name = (char *)(inbuffer + offset-1); + offset += length_model_name; + offset += this->joint_trajectory.deserialize(inbuffer + offset); + offset += this->model_pose.deserialize(inbuffer + offset); + union { + bool real; + uint8_t base; + } u_set_model_pose; + u_set_model_pose.base = 0; + u_set_model_pose.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->set_model_pose = u_set_model_pose.real; + offset += sizeof(this->set_model_pose); + union { + bool real; + uint8_t base; + } u_disable_physics_updates; + u_disable_physics_updates.base = 0; + u_disable_physics_updates.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->disable_physics_updates = u_disable_physics_updates.real; + offset += sizeof(this->disable_physics_updates); + return offset; + } + + const char * getType(){ return SETJOINTTRAJECTORY; }; + const char * getMD5(){ return "649dd2eba5ffd358069238825f9f85ab"; }; + + }; + + class SetJointTrajectoryResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + SetJointTrajectoryResponse(): + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return SETJOINTTRAJECTORY; }; + const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; }; + + }; + + class SetJointTrajectory { + public: + typedef SetJointTrajectoryRequest Request; + typedef SetJointTrajectoryResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/gazebo_msgs/SetLightProperties.h b/source/ros-max-lib/ros_lib/gazebo_msgs/SetLightProperties.h new file mode 100644 index 0000000..5243ae2 --- /dev/null +++ b/source/ros-max-lib/ros_lib/gazebo_msgs/SetLightProperties.h @@ -0,0 +1,224 @@ +#ifndef _ROS_SERVICE_SetLightProperties_h +#define _ROS_SERVICE_SetLightProperties_h +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/ColorRGBA.h" + +namespace gazebo_msgs +{ + +static const char SETLIGHTPROPERTIES[] = "gazebo_msgs/SetLightProperties"; + + class SetLightPropertiesRequest : public ros::Msg + { + public: + typedef const char* _light_name_type; + _light_name_type light_name; + typedef std_msgs::ColorRGBA _diffuse_type; + _diffuse_type diffuse; + typedef double _attenuation_constant_type; + _attenuation_constant_type attenuation_constant; + typedef double _attenuation_linear_type; + _attenuation_linear_type attenuation_linear; + typedef double _attenuation_quadratic_type; + _attenuation_quadratic_type attenuation_quadratic; + + SetLightPropertiesRequest(): + light_name(""), + diffuse(), + attenuation_constant(0), + attenuation_linear(0), + attenuation_quadratic(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_light_name = strlen(this->light_name); + varToArr(outbuffer + offset, length_light_name); + offset += 4; + memcpy(outbuffer + offset, this->light_name, length_light_name); + offset += length_light_name; + offset += this->diffuse.serialize(outbuffer + offset); + union { + double real; + uint64_t base; + } u_attenuation_constant; + u_attenuation_constant.real = this->attenuation_constant; + *(outbuffer + offset + 0) = (u_attenuation_constant.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_attenuation_constant.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_attenuation_constant.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_attenuation_constant.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_attenuation_constant.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_attenuation_constant.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_attenuation_constant.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_attenuation_constant.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->attenuation_constant); + union { + double real; + uint64_t base; + } u_attenuation_linear; + u_attenuation_linear.real = this->attenuation_linear; + *(outbuffer + offset + 0) = (u_attenuation_linear.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_attenuation_linear.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_attenuation_linear.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_attenuation_linear.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_attenuation_linear.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_attenuation_linear.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_attenuation_linear.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_attenuation_linear.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->attenuation_linear); + union { + double real; + uint64_t base; + } u_attenuation_quadratic; + u_attenuation_quadratic.real = this->attenuation_quadratic; + *(outbuffer + offset + 0) = (u_attenuation_quadratic.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_attenuation_quadratic.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_attenuation_quadratic.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_attenuation_quadratic.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_attenuation_quadratic.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_attenuation_quadratic.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_attenuation_quadratic.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_attenuation_quadratic.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->attenuation_quadratic); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_light_name; + arrToVar(length_light_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_light_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_light_name-1]=0; + this->light_name = (char *)(inbuffer + offset-1); + offset += length_light_name; + offset += this->diffuse.deserialize(inbuffer + offset); + union { + double real; + uint64_t base; + } u_attenuation_constant; + u_attenuation_constant.base = 0; + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_attenuation_constant.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->attenuation_constant = u_attenuation_constant.real; + offset += sizeof(this->attenuation_constant); + union { + double real; + uint64_t base; + } u_attenuation_linear; + u_attenuation_linear.base = 0; + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_attenuation_linear.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->attenuation_linear = u_attenuation_linear.real; + offset += sizeof(this->attenuation_linear); + union { + double real; + uint64_t base; + } u_attenuation_quadratic; + u_attenuation_quadratic.base = 0; + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_attenuation_quadratic.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->attenuation_quadratic = u_attenuation_quadratic.real; + offset += sizeof(this->attenuation_quadratic); + return offset; + } + + const char * getType(){ return SETLIGHTPROPERTIES; }; + const char * getMD5(){ return "73ad1ac5e9e312ddf7c74f38ad843f34"; }; + + }; + + class SetLightPropertiesResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + SetLightPropertiesResponse(): + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return SETLIGHTPROPERTIES; }; + const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; }; + + }; + + class SetLightProperties { + public: + typedef SetLightPropertiesRequest Request; + typedef SetLightPropertiesResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/gazebo_msgs/SetLinkProperties.h b/source/ros-max-lib/ros_lib/gazebo_msgs/SetLinkProperties.h new file mode 100644 index 0000000..3b0ae61 --- /dev/null +++ b/source/ros-max-lib/ros_lib/gazebo_msgs/SetLinkProperties.h @@ -0,0 +1,370 @@ +#ifndef _ROS_SERVICE_SetLinkProperties_h +#define _ROS_SERVICE_SetLinkProperties_h +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Pose.h" + +namespace gazebo_msgs +{ + +static const char SETLINKPROPERTIES[] = "gazebo_msgs/SetLinkProperties"; + + class SetLinkPropertiesRequest : public ros::Msg + { + public: + typedef const char* _link_name_type; + _link_name_type link_name; + typedef geometry_msgs::Pose _com_type; + _com_type com; + typedef bool _gravity_mode_type; + _gravity_mode_type gravity_mode; + typedef double _mass_type; + _mass_type mass; + typedef double _ixx_type; + _ixx_type ixx; + typedef double _ixy_type; + _ixy_type ixy; + typedef double _ixz_type; + _ixz_type ixz; + typedef double _iyy_type; + _iyy_type iyy; + typedef double _iyz_type; + _iyz_type iyz; + typedef double _izz_type; + _izz_type izz; + + SetLinkPropertiesRequest(): + link_name(""), + com(), + gravity_mode(0), + mass(0), + ixx(0), + ixy(0), + ixz(0), + iyy(0), + iyz(0), + izz(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_link_name = strlen(this->link_name); + varToArr(outbuffer + offset, length_link_name); + offset += 4; + memcpy(outbuffer + offset, this->link_name, length_link_name); + offset += length_link_name; + offset += this->com.serialize(outbuffer + offset); + union { + bool real; + uint8_t base; + } u_gravity_mode; + u_gravity_mode.real = this->gravity_mode; + *(outbuffer + offset + 0) = (u_gravity_mode.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->gravity_mode); + union { + double real; + uint64_t base; + } u_mass; + u_mass.real = this->mass; + *(outbuffer + offset + 0) = (u_mass.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_mass.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_mass.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_mass.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_mass.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_mass.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_mass.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_mass.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->mass); + union { + double real; + uint64_t base; + } u_ixx; + u_ixx.real = this->ixx; + *(outbuffer + offset + 0) = (u_ixx.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_ixx.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_ixx.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_ixx.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_ixx.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_ixx.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_ixx.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_ixx.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->ixx); + union { + double real; + uint64_t base; + } u_ixy; + u_ixy.real = this->ixy; + *(outbuffer + offset + 0) = (u_ixy.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_ixy.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_ixy.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_ixy.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_ixy.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_ixy.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_ixy.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_ixy.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->ixy); + union { + double real; + uint64_t base; + } u_ixz; + u_ixz.real = this->ixz; + *(outbuffer + offset + 0) = (u_ixz.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_ixz.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_ixz.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_ixz.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_ixz.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_ixz.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_ixz.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_ixz.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->ixz); + union { + double real; + uint64_t base; + } u_iyy; + u_iyy.real = this->iyy; + *(outbuffer + offset + 0) = (u_iyy.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_iyy.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_iyy.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_iyy.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_iyy.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_iyy.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_iyy.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_iyy.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->iyy); + union { + double real; + uint64_t base; + } u_iyz; + u_iyz.real = this->iyz; + *(outbuffer + offset + 0) = (u_iyz.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_iyz.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_iyz.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_iyz.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_iyz.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_iyz.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_iyz.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_iyz.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->iyz); + union { + double real; + uint64_t base; + } u_izz; + u_izz.real = this->izz; + *(outbuffer + offset + 0) = (u_izz.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_izz.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_izz.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_izz.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_izz.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_izz.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_izz.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_izz.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->izz); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_link_name; + arrToVar(length_link_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_link_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_link_name-1]=0; + this->link_name = (char *)(inbuffer + offset-1); + offset += length_link_name; + offset += this->com.deserialize(inbuffer + offset); + union { + bool real; + uint8_t base; + } u_gravity_mode; + u_gravity_mode.base = 0; + u_gravity_mode.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->gravity_mode = u_gravity_mode.real; + offset += sizeof(this->gravity_mode); + union { + double real; + uint64_t base; + } u_mass; + u_mass.base = 0; + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_mass.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->mass = u_mass.real; + offset += sizeof(this->mass); + union { + double real; + uint64_t base; + } u_ixx; + u_ixx.base = 0; + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->ixx = u_ixx.real; + offset += sizeof(this->ixx); + union { + double real; + uint64_t base; + } u_ixy; + u_ixy.base = 0; + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->ixy = u_ixy.real; + offset += sizeof(this->ixy); + union { + double real; + uint64_t base; + } u_ixz; + u_ixz.base = 0; + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->ixz = u_ixz.real; + offset += sizeof(this->ixz); + union { + double real; + uint64_t base; + } u_iyy; + u_iyy.base = 0; + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->iyy = u_iyy.real; + offset += sizeof(this->iyy); + union { + double real; + uint64_t base; + } u_iyz; + u_iyz.base = 0; + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->iyz = u_iyz.real; + offset += sizeof(this->iyz); + union { + double real; + uint64_t base; + } u_izz; + u_izz.base = 0; + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->izz = u_izz.real; + offset += sizeof(this->izz); + return offset; + } + + const char * getType(){ return SETLINKPROPERTIES; }; + const char * getMD5(){ return "68ac74a4be01b165bc305b5ccdc45e91"; }; + + }; + + class SetLinkPropertiesResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + SetLinkPropertiesResponse(): + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return SETLINKPROPERTIES; }; + const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; }; + + }; + + class SetLinkProperties { + public: + typedef SetLinkPropertiesRequest Request; + typedef SetLinkPropertiesResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/gazebo_msgs/SetLinkState.h b/source/ros-max-lib/ros_lib/gazebo_msgs/SetLinkState.h new file mode 100644 index 0000000..f089492 --- /dev/null +++ b/source/ros-max-lib/ros_lib/gazebo_msgs/SetLinkState.h @@ -0,0 +1,111 @@ +#ifndef _ROS_SERVICE_SetLinkState_h +#define _ROS_SERVICE_SetLinkState_h +#include +#include +#include +#include "ros/msg.h" +#include "gazebo_msgs/LinkState.h" + +namespace gazebo_msgs +{ + +static const char SETLINKSTATE[] = "gazebo_msgs/SetLinkState"; + + class SetLinkStateRequest : public ros::Msg + { + public: + typedef gazebo_msgs::LinkState _link_state_type; + _link_state_type link_state; + + SetLinkStateRequest(): + link_state() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->link_state.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->link_state.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return SETLINKSTATE; }; + const char * getMD5(){ return "22a2c757d56911b6f27868159e9a872d"; }; + + }; + + class SetLinkStateResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + SetLinkStateResponse(): + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return SETLINKSTATE; }; + const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; }; + + }; + + class SetLinkState { + public: + typedef SetLinkStateRequest Request; + typedef SetLinkStateResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/gazebo_msgs/SetModelConfiguration.h b/source/ros-max-lib/ros_lib/gazebo_msgs/SetModelConfiguration.h new file mode 100644 index 0000000..d2da91b --- /dev/null +++ b/source/ros-max-lib/ros_lib/gazebo_msgs/SetModelConfiguration.h @@ -0,0 +1,228 @@ +#ifndef _ROS_SERVICE_SetModelConfiguration_h +#define _ROS_SERVICE_SetModelConfiguration_h +#include +#include +#include +#include "ros/msg.h" + +namespace gazebo_msgs +{ + +static const char SETMODELCONFIGURATION[] = "gazebo_msgs/SetModelConfiguration"; + + class SetModelConfigurationRequest : public ros::Msg + { + public: + typedef const char* _model_name_type; + _model_name_type model_name; + typedef const char* _urdf_param_name_type; + _urdf_param_name_type urdf_param_name; + uint32_t joint_names_length; + typedef char* _joint_names_type; + _joint_names_type st_joint_names; + _joint_names_type * joint_names; + uint32_t joint_positions_length; + typedef double _joint_positions_type; + _joint_positions_type st_joint_positions; + _joint_positions_type * joint_positions; + + SetModelConfigurationRequest(): + model_name(""), + urdf_param_name(""), + joint_names_length(0), joint_names(NULL), + joint_positions_length(0), joint_positions(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_model_name = strlen(this->model_name); + varToArr(outbuffer + offset, length_model_name); + offset += 4; + memcpy(outbuffer + offset, this->model_name, length_model_name); + offset += length_model_name; + uint32_t length_urdf_param_name = strlen(this->urdf_param_name); + varToArr(outbuffer + offset, length_urdf_param_name); + offset += 4; + memcpy(outbuffer + offset, this->urdf_param_name, length_urdf_param_name); + offset += length_urdf_param_name; + *(outbuffer + offset + 0) = (this->joint_names_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->joint_names_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->joint_names_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->joint_names_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->joint_names_length); + for( uint32_t i = 0; i < joint_names_length; i++){ + uint32_t length_joint_namesi = strlen(this->joint_names[i]); + varToArr(outbuffer + offset, length_joint_namesi); + offset += 4; + memcpy(outbuffer + offset, this->joint_names[i], length_joint_namesi); + offset += length_joint_namesi; + } + *(outbuffer + offset + 0) = (this->joint_positions_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->joint_positions_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->joint_positions_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->joint_positions_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->joint_positions_length); + for( uint32_t i = 0; i < joint_positions_length; i++){ + union { + double real; + uint64_t base; + } u_joint_positionsi; + u_joint_positionsi.real = this->joint_positions[i]; + *(outbuffer + offset + 0) = (u_joint_positionsi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_joint_positionsi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_joint_positionsi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_joint_positionsi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_joint_positionsi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_joint_positionsi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_joint_positionsi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_joint_positionsi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->joint_positions[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_model_name; + arrToVar(length_model_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_model_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_model_name-1]=0; + this->model_name = (char *)(inbuffer + offset-1); + offset += length_model_name; + uint32_t length_urdf_param_name; + arrToVar(length_urdf_param_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_urdf_param_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_urdf_param_name-1]=0; + this->urdf_param_name = (char *)(inbuffer + offset-1); + offset += length_urdf_param_name; + uint32_t joint_names_lengthT = ((uint32_t) (*(inbuffer + offset))); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->joint_names_length); + if(joint_names_lengthT > joint_names_length) + this->joint_names = (char**)realloc(this->joint_names, joint_names_lengthT * sizeof(char*)); + joint_names_length = joint_names_lengthT; + for( uint32_t i = 0; i < joint_names_length; i++){ + uint32_t length_st_joint_names; + arrToVar(length_st_joint_names, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_joint_names; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_joint_names-1]=0; + this->st_joint_names = (char *)(inbuffer + offset-1); + offset += length_st_joint_names; + memcpy( &(this->joint_names[i]), &(this->st_joint_names), sizeof(char*)); + } + uint32_t joint_positions_lengthT = ((uint32_t) (*(inbuffer + offset))); + joint_positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + joint_positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + joint_positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->joint_positions_length); + if(joint_positions_lengthT > joint_positions_length) + this->joint_positions = (double*)realloc(this->joint_positions, joint_positions_lengthT * sizeof(double)); + joint_positions_length = joint_positions_lengthT; + for( uint32_t i = 0; i < joint_positions_length; i++){ + union { + double real; + uint64_t base; + } u_st_joint_positions; + u_st_joint_positions.base = 0; + u_st_joint_positions.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_joint_positions.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_joint_positions.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_joint_positions.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_joint_positions.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_joint_positions.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_joint_positions.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_joint_positions.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_joint_positions = u_st_joint_positions.real; + offset += sizeof(this->st_joint_positions); + memcpy( &(this->joint_positions[i]), &(this->st_joint_positions), sizeof(double)); + } + return offset; + } + + const char * getType(){ return SETMODELCONFIGURATION; }; + const char * getMD5(){ return "160eae60f51fabff255480c70afa289f"; }; + + }; + + class SetModelConfigurationResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + SetModelConfigurationResponse(): + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return SETMODELCONFIGURATION; }; + const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; }; + + }; + + class SetModelConfiguration { + public: + typedef SetModelConfigurationRequest Request; + typedef SetModelConfigurationResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/gazebo_msgs/SetModelState.h b/source/ros-max-lib/ros_lib/gazebo_msgs/SetModelState.h new file mode 100644 index 0000000..ef251ad --- /dev/null +++ b/source/ros-max-lib/ros_lib/gazebo_msgs/SetModelState.h @@ -0,0 +1,111 @@ +#ifndef _ROS_SERVICE_SetModelState_h +#define _ROS_SERVICE_SetModelState_h +#include +#include +#include +#include "ros/msg.h" +#include "gazebo_msgs/ModelState.h" + +namespace gazebo_msgs +{ + +static const char SETMODELSTATE[] = "gazebo_msgs/SetModelState"; + + class SetModelStateRequest : public ros::Msg + { + public: + typedef gazebo_msgs::ModelState _model_state_type; + _model_state_type model_state; + + SetModelStateRequest(): + model_state() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->model_state.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->model_state.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return SETMODELSTATE; }; + const char * getMD5(){ return "cb042b0e91880f4661b29ea5b6234350"; }; + + }; + + class SetModelStateResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + SetModelStateResponse(): + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return SETMODELSTATE; }; + const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; }; + + }; + + class SetModelState { + public: + typedef SetModelStateRequest Request; + typedef SetModelStateResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/gazebo_msgs/SetPhysicsProperties.h b/source/ros-max-lib/ros_lib/gazebo_msgs/SetPhysicsProperties.h new file mode 100644 index 0000000..ea160b5 --- /dev/null +++ b/source/ros-max-lib/ros_lib/gazebo_msgs/SetPhysicsProperties.h @@ -0,0 +1,181 @@ +#ifndef _ROS_SERVICE_SetPhysicsProperties_h +#define _ROS_SERVICE_SetPhysicsProperties_h +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Vector3.h" +#include "gazebo_msgs/ODEPhysics.h" + +namespace gazebo_msgs +{ + +static const char SETPHYSICSPROPERTIES[] = "gazebo_msgs/SetPhysicsProperties"; + + class SetPhysicsPropertiesRequest : public ros::Msg + { + public: + typedef double _time_step_type; + _time_step_type time_step; + typedef double _max_update_rate_type; + _max_update_rate_type max_update_rate; + typedef geometry_msgs::Vector3 _gravity_type; + _gravity_type gravity; + typedef gazebo_msgs::ODEPhysics _ode_config_type; + _ode_config_type ode_config; + + SetPhysicsPropertiesRequest(): + time_step(0), + max_update_rate(0), + gravity(), + ode_config() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_time_step; + u_time_step.real = this->time_step; + *(outbuffer + offset + 0) = (u_time_step.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_time_step.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_time_step.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_time_step.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_time_step.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_time_step.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_time_step.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_time_step.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->time_step); + union { + double real; + uint64_t base; + } u_max_update_rate; + u_max_update_rate.real = this->max_update_rate; + *(outbuffer + offset + 0) = (u_max_update_rate.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_max_update_rate.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_max_update_rate.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_max_update_rate.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_max_update_rate.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_max_update_rate.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_max_update_rate.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_max_update_rate.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->max_update_rate); + offset += this->gravity.serialize(outbuffer + offset); + offset += this->ode_config.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_time_step; + u_time_step.base = 0; + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_time_step.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->time_step = u_time_step.real; + offset += sizeof(this->time_step); + union { + double real; + uint64_t base; + } u_max_update_rate; + u_max_update_rate.base = 0; + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_max_update_rate.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->max_update_rate = u_max_update_rate.real; + offset += sizeof(this->max_update_rate); + offset += this->gravity.deserialize(inbuffer + offset); + offset += this->ode_config.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return SETPHYSICSPROPERTIES; }; + const char * getMD5(){ return "abd9f82732b52b92e9d6bb36e6a82452"; }; + + }; + + class SetPhysicsPropertiesResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + SetPhysicsPropertiesResponse(): + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return SETPHYSICSPROPERTIES; }; + const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; }; + + }; + + class SetPhysicsProperties { + public: + typedef SetPhysicsPropertiesRequest Request; + typedef SetPhysicsPropertiesResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/gazebo_msgs/SpawnModel.h b/source/ros-max-lib/ros_lib/gazebo_msgs/SpawnModel.h new file mode 100644 index 0000000..215b001 --- /dev/null +++ b/source/ros-max-lib/ros_lib/gazebo_msgs/SpawnModel.h @@ -0,0 +1,179 @@ +#ifndef _ROS_SERVICE_SpawnModel_h +#define _ROS_SERVICE_SpawnModel_h +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Pose.h" + +namespace gazebo_msgs +{ + +static const char SPAWNMODEL[] = "gazebo_msgs/SpawnModel"; + + class SpawnModelRequest : public ros::Msg + { + public: + typedef const char* _model_name_type; + _model_name_type model_name; + typedef const char* _model_xml_type; + _model_xml_type model_xml; + typedef const char* _robot_namespace_type; + _robot_namespace_type robot_namespace; + typedef geometry_msgs::Pose _initial_pose_type; + _initial_pose_type initial_pose; + typedef const char* _reference_frame_type; + _reference_frame_type reference_frame; + + SpawnModelRequest(): + model_name(""), + model_xml(""), + robot_namespace(""), + initial_pose(), + reference_frame("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_model_name = strlen(this->model_name); + varToArr(outbuffer + offset, length_model_name); + offset += 4; + memcpy(outbuffer + offset, this->model_name, length_model_name); + offset += length_model_name; + uint32_t length_model_xml = strlen(this->model_xml); + varToArr(outbuffer + offset, length_model_xml); + offset += 4; + memcpy(outbuffer + offset, this->model_xml, length_model_xml); + offset += length_model_xml; + uint32_t length_robot_namespace = strlen(this->robot_namespace); + varToArr(outbuffer + offset, length_robot_namespace); + offset += 4; + memcpy(outbuffer + offset, this->robot_namespace, length_robot_namespace); + offset += length_robot_namespace; + offset += this->initial_pose.serialize(outbuffer + offset); + uint32_t length_reference_frame = strlen(this->reference_frame); + varToArr(outbuffer + offset, length_reference_frame); + offset += 4; + memcpy(outbuffer + offset, this->reference_frame, length_reference_frame); + offset += length_reference_frame; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_model_name; + arrToVar(length_model_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_model_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_model_name-1]=0; + this->model_name = (char *)(inbuffer + offset-1); + offset += length_model_name; + uint32_t length_model_xml; + arrToVar(length_model_xml, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_model_xml; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_model_xml-1]=0; + this->model_xml = (char *)(inbuffer + offset-1); + offset += length_model_xml; + uint32_t length_robot_namespace; + arrToVar(length_robot_namespace, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_robot_namespace; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_robot_namespace-1]=0; + this->robot_namespace = (char *)(inbuffer + offset-1); + offset += length_robot_namespace; + offset += this->initial_pose.deserialize(inbuffer + offset); + uint32_t length_reference_frame; + arrToVar(length_reference_frame, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_reference_frame; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_reference_frame-1]=0; + this->reference_frame = (char *)(inbuffer + offset-1); + offset += length_reference_frame; + return offset; + } + + const char * getType(){ return SPAWNMODEL; }; + const char * getMD5(){ return "6d0eba5753761cd57e6263a056b79930"; }; + + }; + + class SpawnModelResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + SpawnModelResponse(): + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return SPAWNMODEL; }; + const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; }; + + }; + + class SpawnModel { + public: + typedef SpawnModelRequest Request; + typedef SpawnModelResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/gazebo_msgs/WorldState.h b/source/ros-max-lib/ros_lib/gazebo_msgs/WorldState.h new file mode 100644 index 0000000..43eb256 --- /dev/null +++ b/source/ros-max-lib/ros_lib/gazebo_msgs/WorldState.h @@ -0,0 +1,159 @@ +#ifndef _ROS_gazebo_msgs_WorldState_h +#define _ROS_gazebo_msgs_WorldState_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Pose.h" +#include "geometry_msgs/Twist.h" +#include "geometry_msgs/Wrench.h" + +namespace gazebo_msgs +{ + + class WorldState : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t name_length; + typedef char* _name_type; + _name_type st_name; + _name_type * name; + uint32_t pose_length; + typedef geometry_msgs::Pose _pose_type; + _pose_type st_pose; + _pose_type * pose; + uint32_t twist_length; + typedef geometry_msgs::Twist _twist_type; + _twist_type st_twist; + _twist_type * twist; + uint32_t wrench_length; + typedef geometry_msgs::Wrench _wrench_type; + _wrench_type st_wrench; + _wrench_type * wrench; + + WorldState(): + header(), + name_length(0), name(NULL), + pose_length(0), pose(NULL), + twist_length(0), twist(NULL), + wrench_length(0), wrench(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->name_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->name_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->name_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->name_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->name_length); + for( uint32_t i = 0; i < name_length; i++){ + uint32_t length_namei = strlen(this->name[i]); + varToArr(outbuffer + offset, length_namei); + offset += 4; + memcpy(outbuffer + offset, this->name[i], length_namei); + offset += length_namei; + } + *(outbuffer + offset + 0) = (this->pose_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->pose_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->pose_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->pose_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->pose_length); + for( uint32_t i = 0; i < pose_length; i++){ + offset += this->pose[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->twist_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->twist_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->twist_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->twist_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->twist_length); + for( uint32_t i = 0; i < twist_length; i++){ + offset += this->twist[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->wrench_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->wrench_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->wrench_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->wrench_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->wrench_length); + for( uint32_t i = 0; i < wrench_length; i++){ + offset += this->wrench[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t name_lengthT = ((uint32_t) (*(inbuffer + offset))); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->name_length); + if(name_lengthT > name_length) + this->name = (char**)realloc(this->name, name_lengthT * sizeof(char*)); + name_length = name_lengthT; + for( uint32_t i = 0; i < name_length; i++){ + uint32_t length_st_name; + arrToVar(length_st_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_name-1]=0; + this->st_name = (char *)(inbuffer + offset-1); + offset += length_st_name; + memcpy( &(this->name[i]), &(this->st_name), sizeof(char*)); + } + uint32_t pose_lengthT = ((uint32_t) (*(inbuffer + offset))); + pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->pose_length); + if(pose_lengthT > pose_length) + this->pose = (geometry_msgs::Pose*)realloc(this->pose, pose_lengthT * sizeof(geometry_msgs::Pose)); + pose_length = pose_lengthT; + for( uint32_t i = 0; i < pose_length; i++){ + offset += this->st_pose.deserialize(inbuffer + offset); + memcpy( &(this->pose[i]), &(this->st_pose), sizeof(geometry_msgs::Pose)); + } + uint32_t twist_lengthT = ((uint32_t) (*(inbuffer + offset))); + twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->twist_length); + if(twist_lengthT > twist_length) + this->twist = (geometry_msgs::Twist*)realloc(this->twist, twist_lengthT * sizeof(geometry_msgs::Twist)); + twist_length = twist_lengthT; + for( uint32_t i = 0; i < twist_length; i++){ + offset += this->st_twist.deserialize(inbuffer + offset); + memcpy( &(this->twist[i]), &(this->st_twist), sizeof(geometry_msgs::Twist)); + } + uint32_t wrench_lengthT = ((uint32_t) (*(inbuffer + offset))); + wrench_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + wrench_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + wrench_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->wrench_length); + if(wrench_lengthT > wrench_length) + this->wrench = (geometry_msgs::Wrench*)realloc(this->wrench, wrench_lengthT * sizeof(geometry_msgs::Wrench)); + wrench_length = wrench_lengthT; + for( uint32_t i = 0; i < wrench_length; i++){ + offset += this->st_wrench.deserialize(inbuffer + offset); + memcpy( &(this->wrench[i]), &(this->st_wrench), sizeof(geometry_msgs::Wrench)); + } + return offset; + } + + const char * getType(){ return "gazebo_msgs/WorldState"; }; + const char * getMD5(){ return "de1a9de3ab7ba97ac0e9ec01a4eb481e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/geometry_msgs/Accel.h b/source/ros-max-lib/ros_lib/geometry_msgs/Accel.h new file mode 100644 index 0000000..b5931f6 --- /dev/null +++ b/source/ros-max-lib/ros_lib/geometry_msgs/Accel.h @@ -0,0 +1,49 @@ +#ifndef _ROS_geometry_msgs_Accel_h +#define _ROS_geometry_msgs_Accel_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Vector3.h" + +namespace geometry_msgs +{ + + class Accel : public ros::Msg + { + public: + typedef geometry_msgs::Vector3 _linear_type; + _linear_type linear; + typedef geometry_msgs::Vector3 _angular_type; + _angular_type angular; + + Accel(): + linear(), + angular() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->linear.serialize(outbuffer + offset); + offset += this->angular.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->linear.deserialize(inbuffer + offset); + offset += this->angular.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/Accel"; }; + const char * getMD5(){ return "9f195f881246fdfa2798d1d3eebca84a"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/geometry_msgs/AccelStamped.h b/source/ros-max-lib/ros_lib/geometry_msgs/AccelStamped.h new file mode 100644 index 0000000..d7f7858 --- /dev/null +++ b/source/ros-max-lib/ros_lib/geometry_msgs/AccelStamped.h @@ -0,0 +1,50 @@ +#ifndef _ROS_geometry_msgs_AccelStamped_h +#define _ROS_geometry_msgs_AccelStamped_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Accel.h" + +namespace geometry_msgs +{ + + class AccelStamped : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::Accel _accel_type; + _accel_type accel; + + AccelStamped(): + header(), + accel() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->accel.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->accel.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/AccelStamped"; }; + const char * getMD5(){ return "d8a98a5d81351b6eb0578c78557e7659"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/geometry_msgs/AccelWithCovariance.h b/source/ros-max-lib/ros_lib/geometry_msgs/AccelWithCovariance.h new file mode 100644 index 0000000..9ce6ca2 --- /dev/null +++ b/source/ros-max-lib/ros_lib/geometry_msgs/AccelWithCovariance.h @@ -0,0 +1,79 @@ +#ifndef _ROS_geometry_msgs_AccelWithCovariance_h +#define _ROS_geometry_msgs_AccelWithCovariance_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Accel.h" + +namespace geometry_msgs +{ + + class AccelWithCovariance : public ros::Msg + { + public: + typedef geometry_msgs::Accel _accel_type; + _accel_type accel; + double covariance[36]; + + AccelWithCovariance(): + accel(), + covariance() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->accel.serialize(outbuffer + offset); + for( uint32_t i = 0; i < 36; i++){ + union { + double real; + uint64_t base; + } u_covariancei; + u_covariancei.real = this->covariance[i]; + *(outbuffer + offset + 0) = (u_covariancei.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_covariancei.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_covariancei.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_covariancei.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_covariancei.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_covariancei.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_covariancei.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_covariancei.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->covariance[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->accel.deserialize(inbuffer + offset); + for( uint32_t i = 0; i < 36; i++){ + union { + double real; + uint64_t base; + } u_covariancei; + u_covariancei.base = 0; + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->covariance[i] = u_covariancei.real; + offset += sizeof(this->covariance[i]); + } + return offset; + } + + const char * getType(){ return "geometry_msgs/AccelWithCovariance"; }; + const char * getMD5(){ return "ad5a718d699c6be72a02b8d6a139f334"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/geometry_msgs/AccelWithCovarianceStamped.h b/source/ros-max-lib/ros_lib/geometry_msgs/AccelWithCovarianceStamped.h new file mode 100644 index 0000000..3153d39 --- /dev/null +++ b/source/ros-max-lib/ros_lib/geometry_msgs/AccelWithCovarianceStamped.h @@ -0,0 +1,50 @@ +#ifndef _ROS_geometry_msgs_AccelWithCovarianceStamped_h +#define _ROS_geometry_msgs_AccelWithCovarianceStamped_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/AccelWithCovariance.h" + +namespace geometry_msgs +{ + + class AccelWithCovarianceStamped : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::AccelWithCovariance _accel_type; + _accel_type accel; + + AccelWithCovarianceStamped(): + header(), + accel() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->accel.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->accel.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/AccelWithCovarianceStamped"; }; + const char * getMD5(){ return "96adb295225031ec8d57fb4251b0a886"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/geometry_msgs/Inertia.h b/source/ros-max-lib/ros_lib/geometry_msgs/Inertia.h new file mode 100644 index 0000000..4c487c0 --- /dev/null +++ b/source/ros-max-lib/ros_lib/geometry_msgs/Inertia.h @@ -0,0 +1,268 @@ +#ifndef _ROS_geometry_msgs_Inertia_h +#define _ROS_geometry_msgs_Inertia_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Vector3.h" + +namespace geometry_msgs +{ + + class Inertia : public ros::Msg + { + public: + typedef double _m_type; + _m_type m; + typedef geometry_msgs::Vector3 _com_type; + _com_type com; + typedef double _ixx_type; + _ixx_type ixx; + typedef double _ixy_type; + _ixy_type ixy; + typedef double _ixz_type; + _ixz_type ixz; + typedef double _iyy_type; + _iyy_type iyy; + typedef double _iyz_type; + _iyz_type iyz; + typedef double _izz_type; + _izz_type izz; + + Inertia(): + m(0), + com(), + ixx(0), + ixy(0), + ixz(0), + iyy(0), + iyz(0), + izz(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_m; + u_m.real = this->m; + *(outbuffer + offset + 0) = (u_m.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_m.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_m.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_m.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_m.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_m.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_m.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_m.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->m); + offset += this->com.serialize(outbuffer + offset); + union { + double real; + uint64_t base; + } u_ixx; + u_ixx.real = this->ixx; + *(outbuffer + offset + 0) = (u_ixx.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_ixx.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_ixx.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_ixx.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_ixx.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_ixx.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_ixx.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_ixx.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->ixx); + union { + double real; + uint64_t base; + } u_ixy; + u_ixy.real = this->ixy; + *(outbuffer + offset + 0) = (u_ixy.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_ixy.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_ixy.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_ixy.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_ixy.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_ixy.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_ixy.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_ixy.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->ixy); + union { + double real; + uint64_t base; + } u_ixz; + u_ixz.real = this->ixz; + *(outbuffer + offset + 0) = (u_ixz.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_ixz.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_ixz.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_ixz.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_ixz.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_ixz.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_ixz.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_ixz.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->ixz); + union { + double real; + uint64_t base; + } u_iyy; + u_iyy.real = this->iyy; + *(outbuffer + offset + 0) = (u_iyy.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_iyy.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_iyy.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_iyy.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_iyy.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_iyy.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_iyy.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_iyy.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->iyy); + union { + double real; + uint64_t base; + } u_iyz; + u_iyz.real = this->iyz; + *(outbuffer + offset + 0) = (u_iyz.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_iyz.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_iyz.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_iyz.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_iyz.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_iyz.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_iyz.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_iyz.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->iyz); + union { + double real; + uint64_t base; + } u_izz; + u_izz.real = this->izz; + *(outbuffer + offset + 0) = (u_izz.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_izz.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_izz.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_izz.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_izz.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_izz.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_izz.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_izz.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->izz); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_m; + u_m.base = 0; + u_m.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_m.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_m.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_m.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_m.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_m.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_m.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_m.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->m = u_m.real; + offset += sizeof(this->m); + offset += this->com.deserialize(inbuffer + offset); + union { + double real; + uint64_t base; + } u_ixx; + u_ixx.base = 0; + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_ixx.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->ixx = u_ixx.real; + offset += sizeof(this->ixx); + union { + double real; + uint64_t base; + } u_ixy; + u_ixy.base = 0; + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_ixy.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->ixy = u_ixy.real; + offset += sizeof(this->ixy); + union { + double real; + uint64_t base; + } u_ixz; + u_ixz.base = 0; + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_ixz.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->ixz = u_ixz.real; + offset += sizeof(this->ixz); + union { + double real; + uint64_t base; + } u_iyy; + u_iyy.base = 0; + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_iyy.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->iyy = u_iyy.real; + offset += sizeof(this->iyy); + union { + double real; + uint64_t base; + } u_iyz; + u_iyz.base = 0; + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_iyz.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->iyz = u_iyz.real; + offset += sizeof(this->iyz); + union { + double real; + uint64_t base; + } u_izz; + u_izz.base = 0; + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_izz.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->izz = u_izz.real; + offset += sizeof(this->izz); + return offset; + } + + const char * getType(){ return "geometry_msgs/Inertia"; }; + const char * getMD5(){ return "1d26e4bb6c83ff141c5cf0d883c2b0fe"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/geometry_msgs/InertiaStamped.h b/source/ros-max-lib/ros_lib/geometry_msgs/InertiaStamped.h new file mode 100644 index 0000000..2d8c944 --- /dev/null +++ b/source/ros-max-lib/ros_lib/geometry_msgs/InertiaStamped.h @@ -0,0 +1,50 @@ +#ifndef _ROS_geometry_msgs_InertiaStamped_h +#define _ROS_geometry_msgs_InertiaStamped_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Inertia.h" + +namespace geometry_msgs +{ + + class InertiaStamped : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::Inertia _inertia_type; + _inertia_type inertia; + + InertiaStamped(): + header(), + inertia() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->inertia.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->inertia.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/InertiaStamped"; }; + const char * getMD5(){ return "ddee48caeab5a966c5e8d166654a9ac7"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/geometry_msgs/Point.h b/source/ros-max-lib/ros_lib/geometry_msgs/Point.h new file mode 100644 index 0000000..4764c84 --- /dev/null +++ b/source/ros-max-lib/ros_lib/geometry_msgs/Point.h @@ -0,0 +1,134 @@ +#ifndef _ROS_geometry_msgs_Point_h +#define _ROS_geometry_msgs_Point_h + +#include +#include +#include +#include "../ros/msg.h" + +namespace geometry_msgs +{ + + class Point : public ros::Msg + { + public: + typedef double _x_type; + _x_type x; + typedef double _y_type; + _y_type y; + typedef double _z_type; + _z_type z; + + Point(): + x(0), + y(0), + z(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_x; + u_x.real = this->x; + *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_x.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_x.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_x.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_x.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->x); + union { + double real; + uint64_t base; + } u_y; + u_y.real = this->y; + *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_y.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_y.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_y.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_y.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->y); + union { + double real; + uint64_t base; + } u_z; + u_z.real = this->z; + *(outbuffer + offset + 0) = (u_z.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_z.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_z.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_z.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_z.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_z.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_z.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_z.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->z); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_x; + u_x.base = 0; + u_x.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->x = u_x.real; + offset += sizeof(this->x); + union { + double real; + uint64_t base; + } u_y; + u_y.base = 0; + u_y.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->y = u_y.real; + offset += sizeof(this->y); + union { + double real; + uint64_t base; + } u_z; + u_z.base = 0; + u_z.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->z = u_z.real; + offset += sizeof(this->z); + return offset; + } + + const char * getType(){ return "geometry_msgs/Point"; }; + const char * getMD5(){ return "4a842b65f413084dc2b10fb484ea7f17"; }; + + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/geometry_msgs/Point32.h b/source/ros-max-lib/ros_lib/geometry_msgs/Point32.h new file mode 100644 index 0000000..8c3b572 --- /dev/null +++ b/source/ros-max-lib/ros_lib/geometry_msgs/Point32.h @@ -0,0 +1,110 @@ +#ifndef _ROS_geometry_msgs_Point32_h +#define _ROS_geometry_msgs_Point32_h + +#include +#include +#include +#include "ros/msg.h" + +namespace geometry_msgs +{ + + class Point32 : public ros::Msg + { + public: + typedef float _x_type; + _x_type x; + typedef float _y_type; + _y_type y; + typedef float _z_type; + _z_type z; + + Point32(): + x(0), + y(0), + z(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + float real; + uint32_t base; + } u_x; + u_x.real = this->x; + *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->x); + union { + float real; + uint32_t base; + } u_y; + u_y.real = this->y; + *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->y); + union { + float real; + uint32_t base; + } u_z; + u_z.real = this->z; + *(outbuffer + offset + 0) = (u_z.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_z.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_z.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_z.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->z); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + float real; + uint32_t base; + } u_x; + u_x.base = 0; + u_x.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->x = u_x.real; + offset += sizeof(this->x); + union { + float real; + uint32_t base; + } u_y; + u_y.base = 0; + u_y.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->y = u_y.real; + offset += sizeof(this->y); + union { + float real; + uint32_t base; + } u_z; + u_z.base = 0; + u_z.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_z.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_z.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_z.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->z = u_z.real; + offset += sizeof(this->z); + return offset; + } + + const char * getType(){ return "geometry_msgs/Point32"; }; + const char * getMD5(){ return "cc153912f1453b708d221682bc23d9ac"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/geometry_msgs/PointStamped.h b/source/ros-max-lib/ros_lib/geometry_msgs/PointStamped.h new file mode 100644 index 0000000..ce24530 --- /dev/null +++ b/source/ros-max-lib/ros_lib/geometry_msgs/PointStamped.h @@ -0,0 +1,50 @@ +#ifndef _ROS_geometry_msgs_PointStamped_h +#define _ROS_geometry_msgs_PointStamped_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Point.h" + +namespace geometry_msgs +{ + + class PointStamped : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::Point _point_type; + _point_type point; + + PointStamped(): + header(), + point() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->point.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->point.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/PointStamped"; }; + const char * getMD5(){ return "c63aecb41bfdfd6b7e1fac37c7cbe7bf"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/geometry_msgs/Polygon.h b/source/ros-max-lib/ros_lib/geometry_msgs/Polygon.h new file mode 100644 index 0000000..8ff3276 --- /dev/null +++ b/source/ros-max-lib/ros_lib/geometry_msgs/Polygon.h @@ -0,0 +1,64 @@ +#ifndef _ROS_geometry_msgs_Polygon_h +#define _ROS_geometry_msgs_Polygon_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Point32.h" + +namespace geometry_msgs +{ + + class Polygon : public ros::Msg + { + public: + uint32_t points_length; + typedef geometry_msgs::Point32 _points_type; + _points_type st_points; + _points_type * points; + + Polygon(): + points_length(0), points(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->points_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->points_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->points_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->points_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->points_length); + for( uint32_t i = 0; i < points_length; i++){ + offset += this->points[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t points_lengthT = ((uint32_t) (*(inbuffer + offset))); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->points_length); + if(points_lengthT > points_length) + this->points = (geometry_msgs::Point32*)realloc(this->points, points_lengthT * sizeof(geometry_msgs::Point32)); + points_length = points_lengthT; + for( uint32_t i = 0; i < points_length; i++){ + offset += this->st_points.deserialize(inbuffer + offset); + memcpy( &(this->points[i]), &(this->st_points), sizeof(geometry_msgs::Point32)); + } + return offset; + } + + const char * getType(){ return "geometry_msgs/Polygon"; }; + const char * getMD5(){ return "cd60a26494a087f577976f0329fa120e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/geometry_msgs/PolygonStamped.h b/source/ros-max-lib/ros_lib/geometry_msgs/PolygonStamped.h new file mode 100644 index 0000000..badc359 --- /dev/null +++ b/source/ros-max-lib/ros_lib/geometry_msgs/PolygonStamped.h @@ -0,0 +1,50 @@ +#ifndef _ROS_geometry_msgs_PolygonStamped_h +#define _ROS_geometry_msgs_PolygonStamped_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Polygon.h" + +namespace geometry_msgs +{ + + class PolygonStamped : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::Polygon _polygon_type; + _polygon_type polygon; + + PolygonStamped(): + header(), + polygon() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->polygon.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->polygon.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/PolygonStamped"; }; + const char * getMD5(){ return "c6be8f7dc3bee7fe9e8d296070f53340"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/geometry_msgs/Pose.h b/source/ros-max-lib/ros_lib/geometry_msgs/Pose.h new file mode 100644 index 0000000..1a9f46c --- /dev/null +++ b/source/ros-max-lib/ros_lib/geometry_msgs/Pose.h @@ -0,0 +1,50 @@ +#ifndef _ROS_geometry_msgs_Pose_h +#define _ROS_geometry_msgs_Pose_h + +#include +#include +#include +#include "../ros/msg.h" +#include "../geometry_msgs/Point.h" +#include "../geometry_msgs/Quaternion.h" + +namespace geometry_msgs +{ + + class Pose : public ros::Msg + { + public: + typedef geometry_msgs::Point _position_type; + _position_type position; + typedef geometry_msgs::Quaternion _orientation_type; + _orientation_type orientation; + + Pose(): + position(), + orientation() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->position.serialize(outbuffer + offset); + offset += this->orientation.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->position.deserialize(inbuffer + offset); + offset += this->orientation.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/Pose"; }; + const char * getMD5(){ return "e45d45a5a1ce597b249e23fb30fc871f"; }; + + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/geometry_msgs/Pose2D.h b/source/ros-max-lib/ros_lib/geometry_msgs/Pose2D.h new file mode 100644 index 0000000..2858588 --- /dev/null +++ b/source/ros-max-lib/ros_lib/geometry_msgs/Pose2D.h @@ -0,0 +1,134 @@ +#ifndef _ROS_geometry_msgs_Pose2D_h +#define _ROS_geometry_msgs_Pose2D_h + +#include +#include +#include +#include "ros/msg.h" + +namespace geometry_msgs +{ + + class Pose2D : public ros::Msg + { + public: + typedef double _x_type; + _x_type x; + typedef double _y_type; + _y_type y; + typedef double _theta_type; + _theta_type theta; + + Pose2D(): + x(0), + y(0), + theta(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_x; + u_x.real = this->x; + *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_x.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_x.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_x.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_x.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->x); + union { + double real; + uint64_t base; + } u_y; + u_y.real = this->y; + *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_y.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_y.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_y.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_y.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->y); + union { + double real; + uint64_t base; + } u_theta; + u_theta.real = this->theta; + *(outbuffer + offset + 0) = (u_theta.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_theta.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_theta.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_theta.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_theta.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_theta.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_theta.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_theta.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->theta); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_x; + u_x.base = 0; + u_x.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->x = u_x.real; + offset += sizeof(this->x); + union { + double real; + uint64_t base; + } u_y; + u_y.base = 0; + u_y.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->y = u_y.real; + offset += sizeof(this->y); + union { + double real; + uint64_t base; + } u_theta; + u_theta.base = 0; + u_theta.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_theta.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_theta.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_theta.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_theta.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_theta.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_theta.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_theta.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->theta = u_theta.real; + offset += sizeof(this->theta); + return offset; + } + + const char * getType(){ return "geometry_msgs/Pose2D"; }; + const char * getMD5(){ return "938fa65709584ad8e77d238529be13b8"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/geometry_msgs/PoseArray.h b/source/ros-max-lib/ros_lib/geometry_msgs/PoseArray.h new file mode 100644 index 0000000..9e6a89e --- /dev/null +++ b/source/ros-max-lib/ros_lib/geometry_msgs/PoseArray.h @@ -0,0 +1,70 @@ +#ifndef _ROS_geometry_msgs_PoseArray_h +#define _ROS_geometry_msgs_PoseArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Pose.h" + +namespace geometry_msgs +{ + + class PoseArray : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t poses_length; + typedef geometry_msgs::Pose _poses_type; + _poses_type st_poses; + _poses_type * poses; + + PoseArray(): + header(), + poses_length(0), poses(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->poses_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->poses_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->poses_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->poses_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->poses_length); + for( uint32_t i = 0; i < poses_length; i++){ + offset += this->poses[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t poses_lengthT = ((uint32_t) (*(inbuffer + offset))); + poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->poses_length); + if(poses_lengthT > poses_length) + this->poses = (geometry_msgs::Pose*)realloc(this->poses, poses_lengthT * sizeof(geometry_msgs::Pose)); + poses_length = poses_lengthT; + for( uint32_t i = 0; i < poses_length; i++){ + offset += this->st_poses.deserialize(inbuffer + offset); + memcpy( &(this->poses[i]), &(this->st_poses), sizeof(geometry_msgs::Pose)); + } + return offset; + } + + const char * getType(){ return "geometry_msgs/PoseArray"; }; + const char * getMD5(){ return "916c28c5764443f268b296bb671b9d97"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/geometry_msgs/PoseStamped.h b/source/ros-max-lib/ros_lib/geometry_msgs/PoseStamped.h new file mode 100644 index 0000000..cb79251 --- /dev/null +++ b/source/ros-max-lib/ros_lib/geometry_msgs/PoseStamped.h @@ -0,0 +1,50 @@ +#ifndef _ROS_geometry_msgs_PoseStamped_h +#define _ROS_geometry_msgs_PoseStamped_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Pose.h" + +namespace geometry_msgs +{ + + class PoseStamped : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::Pose _pose_type; + _pose_type pose; + + PoseStamped(): + header(), + pose() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->pose.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->pose.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/PoseStamped"; }; + const char * getMD5(){ return "d3812c3cbc69362b77dc0b19b345f8f5"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/geometry_msgs/PoseWithCovariance.h b/source/ros-max-lib/ros_lib/geometry_msgs/PoseWithCovariance.h new file mode 100644 index 0000000..92cb1ce --- /dev/null +++ b/source/ros-max-lib/ros_lib/geometry_msgs/PoseWithCovariance.h @@ -0,0 +1,79 @@ +#ifndef _ROS_geometry_msgs_PoseWithCovariance_h +#define _ROS_geometry_msgs_PoseWithCovariance_h + +#include +#include +#include +#include "../ros/msg.h" +#include "../geometry_msgs/Pose.h" + +namespace geometry_msgs +{ + + class PoseWithCovariance : public ros::Msg + { + public: + typedef geometry_msgs::Pose _pose_type; + _pose_type pose; + double covariance[36]; + + PoseWithCovariance(): + pose(), + covariance() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->pose.serialize(outbuffer + offset); + for( uint32_t i = 0; i < 36; i++){ + union { + double real; + uint64_t base; + } u_covariancei; + u_covariancei.real = this->covariance[i]; + *(outbuffer + offset + 0) = (u_covariancei.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_covariancei.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_covariancei.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_covariancei.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_covariancei.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_covariancei.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_covariancei.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_covariancei.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->covariance[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->pose.deserialize(inbuffer + offset); + for( uint32_t i = 0; i < 36; i++){ + union { + double real; + uint64_t base; + } u_covariancei; + u_covariancei.base = 0; + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->covariance[i] = u_covariancei.real; + offset += sizeof(this->covariance[i]); + } + return offset; + } + + const char * getType(){ return "geometry_msgs/PoseWithCovariance"; }; + const char * getMD5(){ return "c23e848cf1b7533a8d7c259073a97e6f"; }; + + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/geometry_msgs/PoseWithCovarianceStamped.h b/source/ros-max-lib/ros_lib/geometry_msgs/PoseWithCovarianceStamped.h new file mode 100644 index 0000000..db623cd --- /dev/null +++ b/source/ros-max-lib/ros_lib/geometry_msgs/PoseWithCovarianceStamped.h @@ -0,0 +1,50 @@ +#ifndef _ROS_geometry_msgs_PoseWithCovarianceStamped_h +#define _ROS_geometry_msgs_PoseWithCovarianceStamped_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/PoseWithCovariance.h" + +namespace geometry_msgs +{ + + class PoseWithCovarianceStamped : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::PoseWithCovariance _pose_type; + _pose_type pose; + + PoseWithCovarianceStamped(): + header(), + pose() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->pose.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->pose.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/PoseWithCovarianceStamped"; }; + const char * getMD5(){ return "953b798c0f514ff060a53a3498ce6246"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/geometry_msgs/Quaternion.h b/source/ros-max-lib/ros_lib/geometry_msgs/Quaternion.h new file mode 100644 index 0000000..19f4bb8 --- /dev/null +++ b/source/ros-max-lib/ros_lib/geometry_msgs/Quaternion.h @@ -0,0 +1,166 @@ +#ifndef _ROS_geometry_msgs_Quaternion_h +#define _ROS_geometry_msgs_Quaternion_h + +#include +#include +#include +#include "../ros/msg.h" + +namespace geometry_msgs +{ + + class Quaternion : public ros::Msg + { + public: + typedef double _x_type; + _x_type x; + typedef double _y_type; + _y_type y; + typedef double _z_type; + _z_type z; + typedef double _w_type; + _w_type w; + + Quaternion(): + x(0), + y(0), + z(0), + w(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_x; + u_x.real = this->x; + *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_x.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_x.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_x.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_x.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->x); + union { + double real; + uint64_t base; + } u_y; + u_y.real = this->y; + *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_y.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_y.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_y.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_y.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->y); + union { + double real; + uint64_t base; + } u_z; + u_z.real = this->z; + *(outbuffer + offset + 0) = (u_z.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_z.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_z.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_z.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_z.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_z.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_z.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_z.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->z); + union { + double real; + uint64_t base; + } u_w; + u_w.real = this->w; + *(outbuffer + offset + 0) = (u_w.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_w.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_w.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_w.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_w.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_w.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_w.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_w.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->w); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_x; + u_x.base = 0; + u_x.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->x = u_x.real; + offset += sizeof(this->x); + union { + double real; + uint64_t base; + } u_y; + u_y.base = 0; + u_y.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->y = u_y.real; + offset += sizeof(this->y); + union { + double real; + uint64_t base; + } u_z; + u_z.base = 0; + u_z.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->z = u_z.real; + offset += sizeof(this->z); + union { + double real; + uint64_t base; + } u_w; + u_w.base = 0; + u_w.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_w.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_w.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_w.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_w.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_w.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_w.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_w.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->w = u_w.real; + offset += sizeof(this->w); + return offset; + } + + const char * getType(){ return "geometry_msgs/Quaternion"; }; + const char * getMD5(){ return "a779879fadf0160734f906b8c19c7004"; }; + + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/geometry_msgs/QuaternionStamped.h b/source/ros-max-lib/ros_lib/geometry_msgs/QuaternionStamped.h new file mode 100644 index 0000000..626358d --- /dev/null +++ b/source/ros-max-lib/ros_lib/geometry_msgs/QuaternionStamped.h @@ -0,0 +1,50 @@ +#ifndef _ROS_geometry_msgs_QuaternionStamped_h +#define _ROS_geometry_msgs_QuaternionStamped_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Quaternion.h" + +namespace geometry_msgs +{ + + class QuaternionStamped : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::Quaternion _quaternion_type; + _quaternion_type quaternion; + + QuaternionStamped(): + header(), + quaternion() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->quaternion.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->quaternion.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/QuaternionStamped"; }; + const char * getMD5(){ return "e57f1e547e0e1fd13504588ffc8334e2"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/geometry_msgs/Transform.h b/source/ros-max-lib/ros_lib/geometry_msgs/Transform.h new file mode 100644 index 0000000..27a9944 --- /dev/null +++ b/source/ros-max-lib/ros_lib/geometry_msgs/Transform.h @@ -0,0 +1,50 @@ +#ifndef _ROS_geometry_msgs_Transform_h +#define _ROS_geometry_msgs_Transform_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Vector3.h" +#include "geometry_msgs/Quaternion.h" + +namespace geometry_msgs +{ + + class Transform : public ros::Msg + { + public: + typedef geometry_msgs::Vector3 _translation_type; + _translation_type translation; + typedef geometry_msgs::Quaternion _rotation_type; + _rotation_type rotation; + + Transform(): + translation(), + rotation() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->translation.serialize(outbuffer + offset); + offset += this->rotation.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->translation.deserialize(inbuffer + offset); + offset += this->rotation.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/Transform"; }; + const char * getMD5(){ return "ac9eff44abf714214112b05d54a3cf9b"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/geometry_msgs/TransformStamped.h b/source/ros-max-lib/ros_lib/geometry_msgs/TransformStamped.h new file mode 100644 index 0000000..b197b54 --- /dev/null +++ b/source/ros-max-lib/ros_lib/geometry_msgs/TransformStamped.h @@ -0,0 +1,67 @@ +#ifndef _ROS_geometry_msgs_TransformStamped_h +#define _ROS_geometry_msgs_TransformStamped_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Transform.h" + +namespace geometry_msgs +{ + + class TransformStamped : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef const char* _child_frame_id_type; + _child_frame_id_type child_frame_id; + typedef geometry_msgs::Transform _transform_type; + _transform_type transform; + + TransformStamped(): + header(), + child_frame_id(""), + transform() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + uint32_t length_child_frame_id = strlen(this->child_frame_id); + varToArr(outbuffer + offset, length_child_frame_id); + offset += 4; + memcpy(outbuffer + offset, this->child_frame_id, length_child_frame_id); + offset += length_child_frame_id; + offset += this->transform.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t length_child_frame_id; + arrToVar(length_child_frame_id, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_child_frame_id; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_child_frame_id-1]=0; + this->child_frame_id = (char *)(inbuffer + offset-1); + offset += length_child_frame_id; + offset += this->transform.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/TransformStamped"; }; + const char * getMD5(){ return "b5764a33bfeb3588febc2682852579b0"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/geometry_msgs/Twist.h b/source/ros-max-lib/ros_lib/geometry_msgs/Twist.h new file mode 100644 index 0000000..a6f980a --- /dev/null +++ b/source/ros-max-lib/ros_lib/geometry_msgs/Twist.h @@ -0,0 +1,51 @@ +#ifndef _ROS_geometry_msgs_Twist_h +#define _ROS_geometry_msgs_Twist_h + +#include +#include +#include +#include "../ros/msg.h" +#include "../geometry_msgs/Vector3.h" + +namespace geometry_msgs +{ + + class Twist : public ros::Msg + { + public: + typedef geometry_msgs::Vector3 _linear_type; + _linear_type linear; + typedef geometry_msgs::Vector3 _angular_type; + _angular_type angular; + + Twist(): + linear(), + angular() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->linear.serialize(outbuffer + offset); + offset += this->angular.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->linear.deserialize(inbuffer + offset); + offset += this->angular.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/Twist"; }; + const char * getMD5(){ return "9f195f881246fdfa2798d1d3eebca84a"; }; + + }; + +} + + +#endif diff --git a/source/ros-max-lib/ros_lib/geometry_msgs/TwistStamped.h b/source/ros-max-lib/ros_lib/geometry_msgs/TwistStamped.h new file mode 100644 index 0000000..40143c8 --- /dev/null +++ b/source/ros-max-lib/ros_lib/geometry_msgs/TwistStamped.h @@ -0,0 +1,50 @@ +#ifndef _ROS_geometry_msgs_TwistStamped_h +#define _ROS_geometry_msgs_TwistStamped_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Twist.h" + +namespace geometry_msgs +{ + + class TwistStamped : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::Twist _twist_type; + _twist_type twist; + + TwistStamped(): + header(), + twist() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->twist.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->twist.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/TwistStamped"; }; + const char * getMD5(){ return "98d34b0043a2093cf9d9345ab6eef12e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/geometry_msgs/TwistWithCovariance.h b/source/ros-max-lib/ros_lib/geometry_msgs/TwistWithCovariance.h new file mode 100644 index 0000000..ab6fb61 --- /dev/null +++ b/source/ros-max-lib/ros_lib/geometry_msgs/TwistWithCovariance.h @@ -0,0 +1,79 @@ +#ifndef _ROS_geometry_msgs_TwistWithCovariance_h +#define _ROS_geometry_msgs_TwistWithCovariance_h + +#include +#include +#include +#include "../ros/msg.h" +#include "../geometry_msgs/Twist.h" + +namespace geometry_msgs +{ + + class TwistWithCovariance : public ros::Msg + { + public: + typedef geometry_msgs::Twist _twist_type; + _twist_type twist; + double covariance[36]; + + TwistWithCovariance(): + twist(), + covariance() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->twist.serialize(outbuffer + offset); + for( uint32_t i = 0; i < 36; i++){ + union { + double real; + uint64_t base; + } u_covariancei; + u_covariancei.real = this->covariance[i]; + *(outbuffer + offset + 0) = (u_covariancei.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_covariancei.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_covariancei.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_covariancei.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_covariancei.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_covariancei.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_covariancei.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_covariancei.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->covariance[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->twist.deserialize(inbuffer + offset); + for( uint32_t i = 0; i < 36; i++){ + union { + double real; + uint64_t base; + } u_covariancei; + u_covariancei.base = 0; + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->covariance[i] = u_covariancei.real; + offset += sizeof(this->covariance[i]); + } + return offset; + } + + const char * getType(){ return "geometry_msgs/TwistWithCovariance"; }; + const char * getMD5(){ return "1fe8a28e6890a4cc3ae4c3ca5c7d82e6"; }; + + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/geometry_msgs/TwistWithCovarianceStamped.h b/source/ros-max-lib/ros_lib/geometry_msgs/TwistWithCovarianceStamped.h new file mode 100644 index 0000000..701edff --- /dev/null +++ b/source/ros-max-lib/ros_lib/geometry_msgs/TwistWithCovarianceStamped.h @@ -0,0 +1,50 @@ +#ifndef _ROS_geometry_msgs_TwistWithCovarianceStamped_h +#define _ROS_geometry_msgs_TwistWithCovarianceStamped_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/TwistWithCovariance.h" + +namespace geometry_msgs +{ + + class TwistWithCovarianceStamped : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::TwistWithCovariance _twist_type; + _twist_type twist; + + TwistWithCovarianceStamped(): + header(), + twist() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->twist.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->twist.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/TwistWithCovarianceStamped"; }; + const char * getMD5(){ return "8927a1a12fb2607ceea095b2dc440a96"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/geometry_msgs/Vector3.h b/source/ros-max-lib/ros_lib/geometry_msgs/Vector3.h new file mode 100644 index 0000000..efbab98 --- /dev/null +++ b/source/ros-max-lib/ros_lib/geometry_msgs/Vector3.h @@ -0,0 +1,134 @@ +#ifndef _ROS_geometry_msgs_Vector3_h +#define _ROS_geometry_msgs_Vector3_h + +#include +#include +#include +#include "../ros/msg.h" + +namespace geometry_msgs +{ + + class Vector3 : public ros::Msg + { + public: + typedef double _x_type; + _x_type x; + typedef double _y_type; + _y_type y; + typedef double _z_type; + _z_type z; + + Vector3(): + x(0), + y(0), + z(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_x; + u_x.real = this->x; + *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_x.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_x.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_x.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_x.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->x); + union { + double real; + uint64_t base; + } u_y; + u_y.real = this->y; + *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_y.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_y.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_y.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_y.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->y); + union { + double real; + uint64_t base; + } u_z; + u_z.real = this->z; + *(outbuffer + offset + 0) = (u_z.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_z.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_z.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_z.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_z.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_z.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_z.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_z.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->z); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_x; + u_x.base = 0; + u_x.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->x = u_x.real; + offset += sizeof(this->x); + union { + double real; + uint64_t base; + } u_y; + u_y.base = 0; + u_y.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->y = u_y.real; + offset += sizeof(this->y); + union { + double real; + uint64_t base; + } u_z; + u_z.base = 0; + u_z.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->z = u_z.real; + offset += sizeof(this->z); + return offset; + } + + const char * getType(){ return "geometry_msgs/Vector3"; }; + const char * getMD5(){ return "4a842b65f413084dc2b10fb484ea7f17"; }; + + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/geometry_msgs/Vector3Stamped.h b/source/ros-max-lib/ros_lib/geometry_msgs/Vector3Stamped.h new file mode 100644 index 0000000..9032066 --- /dev/null +++ b/source/ros-max-lib/ros_lib/geometry_msgs/Vector3Stamped.h @@ -0,0 +1,50 @@ +#ifndef _ROS_geometry_msgs_Vector3Stamped_h +#define _ROS_geometry_msgs_Vector3Stamped_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Vector3.h" + +namespace geometry_msgs +{ + + class Vector3Stamped : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::Vector3 _vector_type; + _vector_type vector; + + Vector3Stamped(): + header(), + vector() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->vector.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->vector.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/Vector3Stamped"; }; + const char * getMD5(){ return "7b324c7325e683bf02a9b14b01090ec7"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/geometry_msgs/Wrench.h b/source/ros-max-lib/ros_lib/geometry_msgs/Wrench.h new file mode 100644 index 0000000..52e5934 --- /dev/null +++ b/source/ros-max-lib/ros_lib/geometry_msgs/Wrench.h @@ -0,0 +1,49 @@ +#ifndef _ROS_geometry_msgs_Wrench_h +#define _ROS_geometry_msgs_Wrench_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Vector3.h" + +namespace geometry_msgs +{ + + class Wrench : public ros::Msg + { + public: + typedef geometry_msgs::Vector3 _force_type; + _force_type force; + typedef geometry_msgs::Vector3 _torque_type; + _torque_type torque; + + Wrench(): + force(), + torque() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->force.serialize(outbuffer + offset); + offset += this->torque.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->force.deserialize(inbuffer + offset); + offset += this->torque.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/Wrench"; }; + const char * getMD5(){ return "4f539cf138b23283b520fd271b567936"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/geometry_msgs/WrenchStamped.h b/source/ros-max-lib/ros_lib/geometry_msgs/WrenchStamped.h new file mode 100644 index 0000000..41b82f9 --- /dev/null +++ b/source/ros-max-lib/ros_lib/geometry_msgs/WrenchStamped.h @@ -0,0 +1,50 @@ +#ifndef _ROS_geometry_msgs_WrenchStamped_h +#define _ROS_geometry_msgs_WrenchStamped_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Wrench.h" + +namespace geometry_msgs +{ + + class WrenchStamped : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::Wrench _wrench_type; + _wrench_type wrench; + + WrenchStamped(): + header(), + wrench() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->wrench.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->wrench.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "geometry_msgs/WrenchStamped"; }; + const char * getMD5(){ return "d78d3cb249ce23087ade7e7d0c40cfa7"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/image_exposure_msgs/ExposureSequence.h b/source/ros-max-lib/ros_lib/image_exposure_msgs/ExposureSequence.h new file mode 100644 index 0000000..7cbcdf7 --- /dev/null +++ b/source/ros-max-lib/ros_lib/image_exposure_msgs/ExposureSequence.h @@ -0,0 +1,119 @@ +#ifndef _ROS_image_exposure_msgs_ExposureSequence_h +#define _ROS_image_exposure_msgs_ExposureSequence_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace image_exposure_msgs +{ + + class ExposureSequence : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t shutter_length; + typedef uint32_t _shutter_type; + _shutter_type st_shutter; + _shutter_type * shutter; + typedef float _gain_type; + _gain_type gain; + typedef uint16_t _white_balance_blue_type; + _white_balance_blue_type white_balance_blue; + typedef uint16_t _white_balance_red_type; + _white_balance_red_type white_balance_red; + + ExposureSequence(): + header(), + shutter_length(0), shutter(NULL), + gain(0), + white_balance_blue(0), + white_balance_red(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->shutter_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->shutter_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->shutter_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->shutter_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->shutter_length); + for( uint32_t i = 0; i < shutter_length; i++){ + *(outbuffer + offset + 0) = (this->shutter[i] >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->shutter[i] >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->shutter[i] >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->shutter[i] >> (8 * 3)) & 0xFF; + offset += sizeof(this->shutter[i]); + } + union { + float real; + uint32_t base; + } u_gain; + u_gain.real = this->gain; + *(outbuffer + offset + 0) = (u_gain.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_gain.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_gain.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_gain.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->gain); + *(outbuffer + offset + 0) = (this->white_balance_blue >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->white_balance_blue >> (8 * 1)) & 0xFF; + offset += sizeof(this->white_balance_blue); + *(outbuffer + offset + 0) = (this->white_balance_red >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->white_balance_red >> (8 * 1)) & 0xFF; + offset += sizeof(this->white_balance_red); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t shutter_lengthT = ((uint32_t) (*(inbuffer + offset))); + shutter_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + shutter_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + shutter_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->shutter_length); + if(shutter_lengthT > shutter_length) + this->shutter = (uint32_t*)realloc(this->shutter, shutter_lengthT * sizeof(uint32_t)); + shutter_length = shutter_lengthT; + for( uint32_t i = 0; i < shutter_length; i++){ + this->st_shutter = ((uint32_t) (*(inbuffer + offset))); + this->st_shutter |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->st_shutter |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->st_shutter |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->st_shutter); + memcpy( &(this->shutter[i]), &(this->st_shutter), sizeof(uint32_t)); + } + union { + float real; + uint32_t base; + } u_gain; + u_gain.base = 0; + u_gain.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_gain.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_gain.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_gain.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->gain = u_gain.real; + offset += sizeof(this->gain); + this->white_balance_blue = ((uint16_t) (*(inbuffer + offset))); + this->white_balance_blue |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->white_balance_blue); + this->white_balance_red = ((uint16_t) (*(inbuffer + offset))); + this->white_balance_red |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->white_balance_red); + return offset; + } + + const char * getType(){ return "image_exposure_msgs/ExposureSequence"; }; + const char * getMD5(){ return "81d98e1e20eab8beb4bd07beeba6a398"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/image_exposure_msgs/ImageExposureStatistics.h b/source/ros-max-lib/ros_lib/image_exposure_msgs/ImageExposureStatistics.h new file mode 100644 index 0000000..2c366c3 --- /dev/null +++ b/source/ros-max-lib/ros_lib/image_exposure_msgs/ImageExposureStatistics.h @@ -0,0 +1,324 @@ +#ifndef _ROS_image_exposure_msgs_ImageExposureStatistics_h +#define _ROS_image_exposure_msgs_ImageExposureStatistics_h + +#include +#include +#include +#include "ros/msg.h" +#include "ros/time.h" +#include "statistics_msgs/Stats1D.h" + +namespace image_exposure_msgs +{ + + class ImageExposureStatistics : public ros::Msg + { + public: + typedef ros::Time _stamp_type; + _stamp_type stamp; + typedef const char* _time_reference_type; + _time_reference_type time_reference; + typedef float _shutterms_type; + _shutterms_type shutterms; + typedef float _gaindb_type; + _gaindb_type gaindb; + typedef uint32_t _underExposed_type; + _underExposed_type underExposed; + typedef uint32_t _overExposed_type; + _overExposed_type overExposed; + typedef statistics_msgs::Stats1D _pixelVal_type; + _pixelVal_type pixelVal; + typedef statistics_msgs::Stats1D _pixelAge_type; + _pixelAge_type pixelAge; + typedef double _meanIrradiance_type; + _meanIrradiance_type meanIrradiance; + typedef double _minMeasurableIrradiance_type; + _minMeasurableIrradiance_type minMeasurableIrradiance; + typedef double _maxMeasurableIrradiance_type; + _maxMeasurableIrradiance_type maxMeasurableIrradiance; + typedef double _minObservedIrradiance_type; + _minObservedIrradiance_type minObservedIrradiance; + typedef double _maxObservedIrradiance_type; + _maxObservedIrradiance_type maxObservedIrradiance; + + ImageExposureStatistics(): + stamp(), + time_reference(""), + shutterms(0), + gaindb(0), + underExposed(0), + overExposed(0), + pixelVal(), + pixelAge(), + meanIrradiance(0), + minMeasurableIrradiance(0), + maxMeasurableIrradiance(0), + minObservedIrradiance(0), + maxObservedIrradiance(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->stamp.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp.sec); + *(outbuffer + offset + 0) = (this->stamp.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp.nsec); + uint32_t length_time_reference = strlen(this->time_reference); + varToArr(outbuffer + offset, length_time_reference); + offset += 4; + memcpy(outbuffer + offset, this->time_reference, length_time_reference); + offset += length_time_reference; + union { + float real; + uint32_t base; + } u_shutterms; + u_shutterms.real = this->shutterms; + *(outbuffer + offset + 0) = (u_shutterms.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_shutterms.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_shutterms.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_shutterms.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->shutterms); + union { + float real; + uint32_t base; + } u_gaindb; + u_gaindb.real = this->gaindb; + *(outbuffer + offset + 0) = (u_gaindb.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_gaindb.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_gaindb.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_gaindb.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->gaindb); + *(outbuffer + offset + 0) = (this->underExposed >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->underExposed >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->underExposed >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->underExposed >> (8 * 3)) & 0xFF; + offset += sizeof(this->underExposed); + *(outbuffer + offset + 0) = (this->overExposed >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->overExposed >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->overExposed >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->overExposed >> (8 * 3)) & 0xFF; + offset += sizeof(this->overExposed); + offset += this->pixelVal.serialize(outbuffer + offset); + offset += this->pixelAge.serialize(outbuffer + offset); + union { + double real; + uint64_t base; + } u_meanIrradiance; + u_meanIrradiance.real = this->meanIrradiance; + *(outbuffer + offset + 0) = (u_meanIrradiance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_meanIrradiance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_meanIrradiance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_meanIrradiance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_meanIrradiance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_meanIrradiance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_meanIrradiance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_meanIrradiance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->meanIrradiance); + union { + double real; + uint64_t base; + } u_minMeasurableIrradiance; + u_minMeasurableIrradiance.real = this->minMeasurableIrradiance; + *(outbuffer + offset + 0) = (u_minMeasurableIrradiance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_minMeasurableIrradiance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_minMeasurableIrradiance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_minMeasurableIrradiance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_minMeasurableIrradiance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_minMeasurableIrradiance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_minMeasurableIrradiance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_minMeasurableIrradiance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->minMeasurableIrradiance); + union { + double real; + uint64_t base; + } u_maxMeasurableIrradiance; + u_maxMeasurableIrradiance.real = this->maxMeasurableIrradiance; + *(outbuffer + offset + 0) = (u_maxMeasurableIrradiance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_maxMeasurableIrradiance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_maxMeasurableIrradiance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_maxMeasurableIrradiance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_maxMeasurableIrradiance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_maxMeasurableIrradiance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_maxMeasurableIrradiance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_maxMeasurableIrradiance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->maxMeasurableIrradiance); + union { + double real; + uint64_t base; + } u_minObservedIrradiance; + u_minObservedIrradiance.real = this->minObservedIrradiance; + *(outbuffer + offset + 0) = (u_minObservedIrradiance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_minObservedIrradiance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_minObservedIrradiance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_minObservedIrradiance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_minObservedIrradiance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_minObservedIrradiance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_minObservedIrradiance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_minObservedIrradiance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->minObservedIrradiance); + union { + double real; + uint64_t base; + } u_maxObservedIrradiance; + u_maxObservedIrradiance.real = this->maxObservedIrradiance; + *(outbuffer + offset + 0) = (u_maxObservedIrradiance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_maxObservedIrradiance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_maxObservedIrradiance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_maxObservedIrradiance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_maxObservedIrradiance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_maxObservedIrradiance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_maxObservedIrradiance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_maxObservedIrradiance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->maxObservedIrradiance); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->stamp.sec = ((uint32_t) (*(inbuffer + offset))); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp.sec); + this->stamp.nsec = ((uint32_t) (*(inbuffer + offset))); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp.nsec); + uint32_t length_time_reference; + arrToVar(length_time_reference, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_time_reference; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_time_reference-1]=0; + this->time_reference = (char *)(inbuffer + offset-1); + offset += length_time_reference; + union { + float real; + uint32_t base; + } u_shutterms; + u_shutterms.base = 0; + u_shutterms.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_shutterms.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_shutterms.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_shutterms.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->shutterms = u_shutterms.real; + offset += sizeof(this->shutterms); + union { + float real; + uint32_t base; + } u_gaindb; + u_gaindb.base = 0; + u_gaindb.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_gaindb.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_gaindb.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_gaindb.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->gaindb = u_gaindb.real; + offset += sizeof(this->gaindb); + this->underExposed = ((uint32_t) (*(inbuffer + offset))); + this->underExposed |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->underExposed |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->underExposed |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->underExposed); + this->overExposed = ((uint32_t) (*(inbuffer + offset))); + this->overExposed |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->overExposed |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->overExposed |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->overExposed); + offset += this->pixelVal.deserialize(inbuffer + offset); + offset += this->pixelAge.deserialize(inbuffer + offset); + union { + double real; + uint64_t base; + } u_meanIrradiance; + u_meanIrradiance.base = 0; + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->meanIrradiance = u_meanIrradiance.real; + offset += sizeof(this->meanIrradiance); + union { + double real; + uint64_t base; + } u_minMeasurableIrradiance; + u_minMeasurableIrradiance.base = 0; + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->minMeasurableIrradiance = u_minMeasurableIrradiance.real; + offset += sizeof(this->minMeasurableIrradiance); + union { + double real; + uint64_t base; + } u_maxMeasurableIrradiance; + u_maxMeasurableIrradiance.base = 0; + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->maxMeasurableIrradiance = u_maxMeasurableIrradiance.real; + offset += sizeof(this->maxMeasurableIrradiance); + union { + double real; + uint64_t base; + } u_minObservedIrradiance; + u_minObservedIrradiance.base = 0; + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->minObservedIrradiance = u_minObservedIrradiance.real; + offset += sizeof(this->minObservedIrradiance); + union { + double real; + uint64_t base; + } u_maxObservedIrradiance; + u_maxObservedIrradiance.base = 0; + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->maxObservedIrradiance = u_maxObservedIrradiance.real; + offset += sizeof(this->maxObservedIrradiance); + return offset; + } + + const char * getType(){ return "image_exposure_msgs/ImageExposureStatistics"; }; + const char * getMD5(){ return "334dc170ce6287d1de470f25be78dd9e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/image_exposure_msgs/SequenceExposureStatistics.h b/source/ros-max-lib/ros_lib/image_exposure_msgs/SequenceExposureStatistics.h new file mode 100644 index 0000000..2ba1b31 --- /dev/null +++ b/source/ros-max-lib/ros_lib/image_exposure_msgs/SequenceExposureStatistics.h @@ -0,0 +1,250 @@ +#ifndef _ROS_image_exposure_msgs_SequenceExposureStatistics_h +#define _ROS_image_exposure_msgs_SequenceExposureStatistics_h + +#include +#include +#include +#include "ros/msg.h" +#include "image_exposure_msgs/ImageExposureStatistics.h" + +namespace image_exposure_msgs +{ + + class SequenceExposureStatistics : public ros::Msg + { + public: + uint32_t exposures_length; + typedef image_exposure_msgs::ImageExposureStatistics _exposures_type; + _exposures_type st_exposures; + _exposures_type * exposures; + typedef uint32_t _underExposed_type; + _underExposed_type underExposed; + typedef uint32_t _overExposed_type; + _overExposed_type overExposed; + typedef double _meanIrradiance_type; + _meanIrradiance_type meanIrradiance; + typedef double _minMeasurableIrradiance_type; + _minMeasurableIrradiance_type minMeasurableIrradiance; + typedef double _maxMeasurableIrradiance_type; + _maxMeasurableIrradiance_type maxMeasurableIrradiance; + typedef double _minObservedIrradiance_type; + _minObservedIrradiance_type minObservedIrradiance; + typedef double _maxObservedIrradiance_type; + _maxObservedIrradiance_type maxObservedIrradiance; + + SequenceExposureStatistics(): + exposures_length(0), exposures(NULL), + underExposed(0), + overExposed(0), + meanIrradiance(0), + minMeasurableIrradiance(0), + maxMeasurableIrradiance(0), + minObservedIrradiance(0), + maxObservedIrradiance(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->exposures_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->exposures_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->exposures_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->exposures_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->exposures_length); + for( uint32_t i = 0; i < exposures_length; i++){ + offset += this->exposures[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->underExposed >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->underExposed >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->underExposed >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->underExposed >> (8 * 3)) & 0xFF; + offset += sizeof(this->underExposed); + *(outbuffer + offset + 0) = (this->overExposed >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->overExposed >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->overExposed >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->overExposed >> (8 * 3)) & 0xFF; + offset += sizeof(this->overExposed); + union { + double real; + uint64_t base; + } u_meanIrradiance; + u_meanIrradiance.real = this->meanIrradiance; + *(outbuffer + offset + 0) = (u_meanIrradiance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_meanIrradiance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_meanIrradiance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_meanIrradiance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_meanIrradiance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_meanIrradiance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_meanIrradiance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_meanIrradiance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->meanIrradiance); + union { + double real; + uint64_t base; + } u_minMeasurableIrradiance; + u_minMeasurableIrradiance.real = this->minMeasurableIrradiance; + *(outbuffer + offset + 0) = (u_minMeasurableIrradiance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_minMeasurableIrradiance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_minMeasurableIrradiance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_minMeasurableIrradiance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_minMeasurableIrradiance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_minMeasurableIrradiance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_minMeasurableIrradiance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_minMeasurableIrradiance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->minMeasurableIrradiance); + union { + double real; + uint64_t base; + } u_maxMeasurableIrradiance; + u_maxMeasurableIrradiance.real = this->maxMeasurableIrradiance; + *(outbuffer + offset + 0) = (u_maxMeasurableIrradiance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_maxMeasurableIrradiance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_maxMeasurableIrradiance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_maxMeasurableIrradiance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_maxMeasurableIrradiance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_maxMeasurableIrradiance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_maxMeasurableIrradiance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_maxMeasurableIrradiance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->maxMeasurableIrradiance); + union { + double real; + uint64_t base; + } u_minObservedIrradiance; + u_minObservedIrradiance.real = this->minObservedIrradiance; + *(outbuffer + offset + 0) = (u_minObservedIrradiance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_minObservedIrradiance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_minObservedIrradiance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_minObservedIrradiance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_minObservedIrradiance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_minObservedIrradiance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_minObservedIrradiance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_minObservedIrradiance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->minObservedIrradiance); + union { + double real; + uint64_t base; + } u_maxObservedIrradiance; + u_maxObservedIrradiance.real = this->maxObservedIrradiance; + *(outbuffer + offset + 0) = (u_maxObservedIrradiance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_maxObservedIrradiance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_maxObservedIrradiance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_maxObservedIrradiance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_maxObservedIrradiance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_maxObservedIrradiance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_maxObservedIrradiance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_maxObservedIrradiance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->maxObservedIrradiance); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t exposures_lengthT = ((uint32_t) (*(inbuffer + offset))); + exposures_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + exposures_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + exposures_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->exposures_length); + if(exposures_lengthT > exposures_length) + this->exposures = (image_exposure_msgs::ImageExposureStatistics*)realloc(this->exposures, exposures_lengthT * sizeof(image_exposure_msgs::ImageExposureStatistics)); + exposures_length = exposures_lengthT; + for( uint32_t i = 0; i < exposures_length; i++){ + offset += this->st_exposures.deserialize(inbuffer + offset); + memcpy( &(this->exposures[i]), &(this->st_exposures), sizeof(image_exposure_msgs::ImageExposureStatistics)); + } + this->underExposed = ((uint32_t) (*(inbuffer + offset))); + this->underExposed |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->underExposed |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->underExposed |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->underExposed); + this->overExposed = ((uint32_t) (*(inbuffer + offset))); + this->overExposed |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->overExposed |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->overExposed |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->overExposed); + union { + double real; + uint64_t base; + } u_meanIrradiance; + u_meanIrradiance.base = 0; + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_meanIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->meanIrradiance = u_meanIrradiance.real; + offset += sizeof(this->meanIrradiance); + union { + double real; + uint64_t base; + } u_minMeasurableIrradiance; + u_minMeasurableIrradiance.base = 0; + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_minMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->minMeasurableIrradiance = u_minMeasurableIrradiance.real; + offset += sizeof(this->minMeasurableIrradiance); + union { + double real; + uint64_t base; + } u_maxMeasurableIrradiance; + u_maxMeasurableIrradiance.base = 0; + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_maxMeasurableIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->maxMeasurableIrradiance = u_maxMeasurableIrradiance.real; + offset += sizeof(this->maxMeasurableIrradiance); + union { + double real; + uint64_t base; + } u_minObservedIrradiance; + u_minObservedIrradiance.base = 0; + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_minObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->minObservedIrradiance = u_minObservedIrradiance.real; + offset += sizeof(this->minObservedIrradiance); + union { + double real; + uint64_t base; + } u_maxObservedIrradiance; + u_maxObservedIrradiance.base = 0; + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_maxObservedIrradiance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->maxObservedIrradiance = u_maxObservedIrradiance.real; + offset += sizeof(this->maxObservedIrradiance); + return offset; + } + + const char * getType(){ return "image_exposure_msgs/SequenceExposureStatistics"; }; + const char * getMD5(){ return "2a4f3187c50e7b3544984e9e28ce4328"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/laser_assembler/AssembleScans.h b/source/ros-max-lib/ros_lib/laser_assembler/AssembleScans.h new file mode 100644 index 0000000..7aa8745 --- /dev/null +++ b/source/ros-max-lib/ros_lib/laser_assembler/AssembleScans.h @@ -0,0 +1,123 @@ +#ifndef _ROS_SERVICE_AssembleScans_h +#define _ROS_SERVICE_AssembleScans_h +#include +#include +#include +#include "ros/msg.h" +#include "ros/time.h" +#include "sensor_msgs/PointCloud.h" + +namespace laser_assembler +{ + +static const char ASSEMBLESCANS[] = "laser_assembler/AssembleScans"; + + class AssembleScansRequest : public ros::Msg + { + public: + typedef ros::Time _begin_type; + _begin_type begin; + typedef ros::Time _end_type; + _end_type end; + + AssembleScansRequest(): + begin(), + end() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->begin.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->begin.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->begin.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->begin.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->begin.sec); + *(outbuffer + offset + 0) = (this->begin.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->begin.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->begin.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->begin.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->begin.nsec); + *(outbuffer + offset + 0) = (this->end.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->end.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->end.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->end.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->end.sec); + *(outbuffer + offset + 0) = (this->end.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->end.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->end.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->end.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->end.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->begin.sec = ((uint32_t) (*(inbuffer + offset))); + this->begin.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->begin.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->begin.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->begin.sec); + this->begin.nsec = ((uint32_t) (*(inbuffer + offset))); + this->begin.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->begin.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->begin.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->begin.nsec); + this->end.sec = ((uint32_t) (*(inbuffer + offset))); + this->end.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->end.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->end.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->end.sec); + this->end.nsec = ((uint32_t) (*(inbuffer + offset))); + this->end.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->end.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->end.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->end.nsec); + return offset; + } + + const char * getType(){ return ASSEMBLESCANS; }; + const char * getMD5(){ return "b341004f74e15bf5e1b2053a9183bdc7"; }; + + }; + + class AssembleScansResponse : public ros::Msg + { + public: + typedef sensor_msgs::PointCloud _cloud_type; + _cloud_type cloud; + + AssembleScansResponse(): + cloud() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->cloud.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->cloud.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return ASSEMBLESCANS; }; + const char * getMD5(){ return "4217b28a903e4ad7869a83b3653110ff"; }; + + }; + + class AssembleScans { + public: + typedef AssembleScansRequest Request; + typedef AssembleScansResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/laser_assembler/AssembleScans2.h b/source/ros-max-lib/ros_lib/laser_assembler/AssembleScans2.h new file mode 100644 index 0000000..ae2f6b7 --- /dev/null +++ b/source/ros-max-lib/ros_lib/laser_assembler/AssembleScans2.h @@ -0,0 +1,123 @@ +#ifndef _ROS_SERVICE_AssembleScans2_h +#define _ROS_SERVICE_AssembleScans2_h +#include +#include +#include +#include "ros/msg.h" +#include "sensor_msgs/PointCloud2.h" +#include "ros/time.h" + +namespace laser_assembler +{ + +static const char ASSEMBLESCANS2[] = "laser_assembler/AssembleScans2"; + + class AssembleScans2Request : public ros::Msg + { + public: + typedef ros::Time _begin_type; + _begin_type begin; + typedef ros::Time _end_type; + _end_type end; + + AssembleScans2Request(): + begin(), + end() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->begin.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->begin.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->begin.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->begin.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->begin.sec); + *(outbuffer + offset + 0) = (this->begin.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->begin.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->begin.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->begin.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->begin.nsec); + *(outbuffer + offset + 0) = (this->end.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->end.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->end.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->end.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->end.sec); + *(outbuffer + offset + 0) = (this->end.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->end.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->end.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->end.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->end.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->begin.sec = ((uint32_t) (*(inbuffer + offset))); + this->begin.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->begin.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->begin.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->begin.sec); + this->begin.nsec = ((uint32_t) (*(inbuffer + offset))); + this->begin.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->begin.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->begin.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->begin.nsec); + this->end.sec = ((uint32_t) (*(inbuffer + offset))); + this->end.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->end.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->end.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->end.sec); + this->end.nsec = ((uint32_t) (*(inbuffer + offset))); + this->end.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->end.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->end.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->end.nsec); + return offset; + } + + const char * getType(){ return ASSEMBLESCANS2; }; + const char * getMD5(){ return "b341004f74e15bf5e1b2053a9183bdc7"; }; + + }; + + class AssembleScans2Response : public ros::Msg + { + public: + typedef sensor_msgs::PointCloud2 _cloud_type; + _cloud_type cloud; + + AssembleScans2Response(): + cloud() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->cloud.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->cloud.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return ASSEMBLESCANS2; }; + const char * getMD5(){ return "96cec5374164b3b3d1d7ef5d7628a7ed"; }; + + }; + + class AssembleScans2 { + public: + typedef AssembleScans2Request Request; + typedef AssembleScans2Response Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/main.cpp b/source/ros-max-lib/ros_lib/main.cpp new file mode 100644 index 0000000..1e769e4 --- /dev/null +++ b/source/ros-max-lib/ros_lib/main.cpp @@ -0,0 +1,118 @@ +// +// main.cpp +// ros_test +// +// Created by Orly Natan on 13/4/18. +// Copyright © 2018 Orly Natan. All rights reserved. +// + +/* (1) +#include + +int main(int argc, const char * argv[]) { + // insert code here... + std::cout << "Hello, World!\n"; + return 0; +} +*/ + +/* (2) + * rosserial Publisher Example + * Prints "hello ROS!" + */ + + +/* +#include "wrapper.h" + +char rosSrvrIp[] = "149.171.153.49"; +char hello[] = "Hello ROS From C/XCode!"; + + + int main() + { + ros_init_pub(rosSrvrIp); + ros_pub(hello); + } + + +*/ + + + + + + + + + + + + + + + + + +/* +#include "ros.h" +#include "std_msgs/String.h" +#include + +ros::NodeHandle nh; + +std_msgs::String str_msg; +ros::Publisher chatter("chatter", &str_msg); + +char rosSrvrIp[] = "149.171.153.49"; //192.168.15.121"; +char hello[] = "Hello ROS!"; + +int main() +{ + //nh.initNode(); + + + nh.initNode(rosSrvrIp); + nh.advertise(chatter); + + while(1) { + str_msg.data = hello; + chatter.publish( &str_msg ); + nh.spinOnce(); + printf("chattered\n"); + sleep(1); + } + +}*/ + +/* (3) + * rosserial_embeddedlinux subscriber example + * + * Prints a string sent on a subscribed ros topic. + * The string can be sent with e.g. + * $ rostopic pub chatter std_msgs/String -- "Hello Embedded Linux" + */ +/* +#include "ros.h" +#include "std_msgs/String.h" +#include + +ros::NodeHandle nh; +char rosSrvrIp[] = "149.171.153.52"; + +void messageCb(const std_msgs::String& received_msg){ + printf("Received subscribed chatter message: %s\n", received_msg.data); +} +ros::Subscriber sub("chatter", messageCb ); + +int main() +{ + //nh.initNode(); + nh.initNode(rosSrvrIp); + nh.subscribe(sub); + + while(1) { + sleep(1); + nh.spinOnce(); + } +}*/ diff --git a/source/ros-max-lib/ros_lib/map_msgs/GetMapROI.h b/source/ros-max-lib/ros_lib/map_msgs/GetMapROI.h new file mode 100644 index 0000000..3d39495 --- /dev/null +++ b/source/ros-max-lib/ros_lib/map_msgs/GetMapROI.h @@ -0,0 +1,204 @@ +#ifndef _ROS_SERVICE_GetMapROI_h +#define _ROS_SERVICE_GetMapROI_h +#include +#include +#include +#include "ros/msg.h" +#include "nav_msgs/OccupancyGrid.h" + +namespace map_msgs +{ + +static const char GETMAPROI[] = "map_msgs/GetMapROI"; + + class GetMapROIRequest : public ros::Msg + { + public: + typedef double _x_type; + _x_type x; + typedef double _y_type; + _y_type y; + typedef double _l_x_type; + _l_x_type l_x; + typedef double _l_y_type; + _l_y_type l_y; + + GetMapROIRequest(): + x(0), + y(0), + l_x(0), + l_y(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_x; + u_x.real = this->x; + *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_x.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_x.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_x.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_x.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->x); + union { + double real; + uint64_t base; + } u_y; + u_y.real = this->y; + *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_y.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_y.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_y.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_y.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->y); + union { + double real; + uint64_t base; + } u_l_x; + u_l_x.real = this->l_x; + *(outbuffer + offset + 0) = (u_l_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_l_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_l_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_l_x.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_l_x.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_l_x.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_l_x.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_l_x.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->l_x); + union { + double real; + uint64_t base; + } u_l_y; + u_l_y.real = this->l_y; + *(outbuffer + offset + 0) = (u_l_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_l_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_l_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_l_y.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_l_y.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_l_y.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_l_y.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_l_y.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->l_y); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_x; + u_x.base = 0; + u_x.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->x = u_x.real; + offset += sizeof(this->x); + union { + double real; + uint64_t base; + } u_y; + u_y.base = 0; + u_y.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->y = u_y.real; + offset += sizeof(this->y); + union { + double real; + uint64_t base; + } u_l_x; + u_l_x.base = 0; + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->l_x = u_l_x.real; + offset += sizeof(this->l_x); + union { + double real; + uint64_t base; + } u_l_y; + u_l_y.base = 0; + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->l_y = u_l_y.real; + offset += sizeof(this->l_y); + return offset; + } + + const char * getType(){ return GETMAPROI; }; + const char * getMD5(){ return "43c2ff8f45af555c0eaf070c401e9a47"; }; + + }; + + class GetMapROIResponse : public ros::Msg + { + public: + typedef nav_msgs::OccupancyGrid _sub_map_type; + _sub_map_type sub_map; + + GetMapROIResponse(): + sub_map() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->sub_map.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->sub_map.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return GETMAPROI; }; + const char * getMD5(){ return "4d1986519c00d81967d2891a606b234c"; }; + + }; + + class GetMapROI { + public: + typedef GetMapROIRequest Request; + typedef GetMapROIResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/map_msgs/GetPointMap.h b/source/ros-max-lib/ros_lib/map_msgs/GetPointMap.h new file mode 100644 index 0000000..3da8ab1 --- /dev/null +++ b/source/ros-max-lib/ros_lib/map_msgs/GetPointMap.h @@ -0,0 +1,76 @@ +#ifndef _ROS_SERVICE_GetPointMap_h +#define _ROS_SERVICE_GetPointMap_h +#include +#include +#include +#include "ros/msg.h" +#include "sensor_msgs/PointCloud2.h" + +namespace map_msgs +{ + +static const char GETPOINTMAP[] = "map_msgs/GetPointMap"; + + class GetPointMapRequest : public ros::Msg + { + public: + + GetPointMapRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return GETPOINTMAP; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class GetPointMapResponse : public ros::Msg + { + public: + typedef sensor_msgs::PointCloud2 _map_type; + _map_type map; + + GetPointMapResponse(): + map() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->map.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->map.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return GETPOINTMAP; }; + const char * getMD5(){ return "b84fbb39505086eb6a62d933c75cb7b4"; }; + + }; + + class GetPointMap { + public: + typedef GetPointMapRequest Request; + typedef GetPointMapResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/map_msgs/GetPointMapROI.h b/source/ros-max-lib/ros_lib/map_msgs/GetPointMapROI.h new file mode 100644 index 0000000..b7c4cda --- /dev/null +++ b/source/ros-max-lib/ros_lib/map_msgs/GetPointMapROI.h @@ -0,0 +1,300 @@ +#ifndef _ROS_SERVICE_GetPointMapROI_h +#define _ROS_SERVICE_GetPointMapROI_h +#include +#include +#include +#include "ros/msg.h" +#include "sensor_msgs/PointCloud2.h" + +namespace map_msgs +{ + +static const char GETPOINTMAPROI[] = "map_msgs/GetPointMapROI"; + + class GetPointMapROIRequest : public ros::Msg + { + public: + typedef double _x_type; + _x_type x; + typedef double _y_type; + _y_type y; + typedef double _z_type; + _z_type z; + typedef double _r_type; + _r_type r; + typedef double _l_x_type; + _l_x_type l_x; + typedef double _l_y_type; + _l_y_type l_y; + typedef double _l_z_type; + _l_z_type l_z; + + GetPointMapROIRequest(): + x(0), + y(0), + z(0), + r(0), + l_x(0), + l_y(0), + l_z(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_x; + u_x.real = this->x; + *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_x.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_x.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_x.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_x.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->x); + union { + double real; + uint64_t base; + } u_y; + u_y.real = this->y; + *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_y.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_y.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_y.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_y.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->y); + union { + double real; + uint64_t base; + } u_z; + u_z.real = this->z; + *(outbuffer + offset + 0) = (u_z.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_z.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_z.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_z.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_z.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_z.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_z.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_z.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->z); + union { + double real; + uint64_t base; + } u_r; + u_r.real = this->r; + *(outbuffer + offset + 0) = (u_r.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_r.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_r.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_r.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_r.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_r.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_r.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_r.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->r); + union { + double real; + uint64_t base; + } u_l_x; + u_l_x.real = this->l_x; + *(outbuffer + offset + 0) = (u_l_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_l_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_l_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_l_x.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_l_x.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_l_x.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_l_x.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_l_x.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->l_x); + union { + double real; + uint64_t base; + } u_l_y; + u_l_y.real = this->l_y; + *(outbuffer + offset + 0) = (u_l_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_l_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_l_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_l_y.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_l_y.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_l_y.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_l_y.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_l_y.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->l_y); + union { + double real; + uint64_t base; + } u_l_z; + u_l_z.real = this->l_z; + *(outbuffer + offset + 0) = (u_l_z.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_l_z.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_l_z.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_l_z.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_l_z.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_l_z.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_l_z.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_l_z.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->l_z); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_x; + u_x.base = 0; + u_x.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->x = u_x.real; + offset += sizeof(this->x); + union { + double real; + uint64_t base; + } u_y; + u_y.base = 0; + u_y.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->y = u_y.real; + offset += sizeof(this->y); + union { + double real; + uint64_t base; + } u_z; + u_z.base = 0; + u_z.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_z.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->z = u_z.real; + offset += sizeof(this->z); + union { + double real; + uint64_t base; + } u_r; + u_r.base = 0; + u_r.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_r.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_r.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_r.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_r.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_r.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_r.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_r.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->r = u_r.real; + offset += sizeof(this->r); + union { + double real; + uint64_t base; + } u_l_x; + u_l_x.base = 0; + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_l_x.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->l_x = u_l_x.real; + offset += sizeof(this->l_x); + union { + double real; + uint64_t base; + } u_l_y; + u_l_y.base = 0; + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_l_y.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->l_y = u_l_y.real; + offset += sizeof(this->l_y); + union { + double real; + uint64_t base; + } u_l_z; + u_l_z.base = 0; + u_l_z.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_l_z.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_l_z.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_l_z.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_l_z.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_l_z.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_l_z.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_l_z.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->l_z = u_l_z.real; + offset += sizeof(this->l_z); + return offset; + } + + const char * getType(){ return GETPOINTMAPROI; }; + const char * getMD5(){ return "895f7e437a9a6dd225316872b187a303"; }; + + }; + + class GetPointMapROIResponse : public ros::Msg + { + public: + typedef sensor_msgs::PointCloud2 _sub_map_type; + _sub_map_type sub_map; + + GetPointMapROIResponse(): + sub_map() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->sub_map.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->sub_map.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return GETPOINTMAPROI; }; + const char * getMD5(){ return "313769f8b0e724525c6463336cbccd63"; }; + + }; + + class GetPointMapROI { + public: + typedef GetPointMapROIRequest Request; + typedef GetPointMapROIResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/map_msgs/OccupancyGridUpdate.h b/source/ros-max-lib/ros_lib/map_msgs/OccupancyGridUpdate.h new file mode 100644 index 0000000..23590d2 --- /dev/null +++ b/source/ros-max-lib/ros_lib/map_msgs/OccupancyGridUpdate.h @@ -0,0 +1,156 @@ +#ifndef _ROS_map_msgs_OccupancyGridUpdate_h +#define _ROS_map_msgs_OccupancyGridUpdate_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace map_msgs +{ + + class OccupancyGridUpdate : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef int32_t _x_type; + _x_type x; + typedef int32_t _y_type; + _y_type y; + typedef uint32_t _width_type; + _width_type width; + typedef uint32_t _height_type; + _height_type height; + uint32_t data_length; + typedef int8_t _data_type; + _data_type st_data; + _data_type * data; + + OccupancyGridUpdate(): + header(), + x(0), + y(0), + width(0), + height(0), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + union { + int32_t real; + uint32_t base; + } u_x; + u_x.real = this->x; + *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->x); + union { + int32_t real; + uint32_t base; + } u_y; + u_y.real = this->y; + *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->y); + *(outbuffer + offset + 0) = (this->width >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->width >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->width >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->width >> (8 * 3)) & 0xFF; + offset += sizeof(this->width); + *(outbuffer + offset + 0) = (this->height >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->height >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->height >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->height >> (8 * 3)) & 0xFF; + offset += sizeof(this->height); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + union { + int8_t real; + uint8_t base; + } u_datai; + u_datai.real = this->data[i]; + *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + union { + int32_t real; + uint32_t base; + } u_x; + u_x.base = 0; + u_x.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->x = u_x.real; + offset += sizeof(this->x); + union { + int32_t real; + uint32_t base; + } u_y; + u_y.base = 0; + u_y.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->y = u_y.real; + offset += sizeof(this->y); + this->width = ((uint32_t) (*(inbuffer + offset))); + this->width |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->width |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->width |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->width); + this->height = ((uint32_t) (*(inbuffer + offset))); + this->height |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->height |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->height |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->height); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (int8_t*)realloc(this->data, data_lengthT * sizeof(int8_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + union { + int8_t real; + uint8_t base; + } u_st_data; + u_st_data.base = 0; + u_st_data.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->st_data = u_st_data.real; + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(int8_t)); + } + return offset; + } + + const char * getType(){ return "map_msgs/OccupancyGridUpdate"; }; + const char * getMD5(){ return "b295be292b335c34718bd939deebe1c9"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/map_msgs/PointCloud2Update.h b/source/ros-max-lib/ros_lib/map_msgs/PointCloud2Update.h new file mode 100644 index 0000000..eee4cb1 --- /dev/null +++ b/source/ros-max-lib/ros_lib/map_msgs/PointCloud2Update.h @@ -0,0 +1,65 @@ +#ifndef _ROS_map_msgs_PointCloud2Update_h +#define _ROS_map_msgs_PointCloud2Update_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "sensor_msgs/PointCloud2.h" + +namespace map_msgs +{ + + class PointCloud2Update : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef uint32_t _type_type; + _type_type type; + typedef sensor_msgs::PointCloud2 _points_type; + _points_type points; + enum { ADD = 0 }; + enum { DELETE = 1 }; + + PointCloud2Update(): + header(), + type(0), + points() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->type >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->type >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->type >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->type >> (8 * 3)) & 0xFF; + offset += sizeof(this->type); + offset += this->points.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + this->type = ((uint32_t) (*(inbuffer + offset))); + this->type |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->type |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->type |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->type); + offset += this->points.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "map_msgs/PointCloud2Update"; }; + const char * getMD5(){ return "6c58e4f249ae9cd2b24fb1ee0f99195e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/map_msgs/ProjectedMap.h b/source/ros-max-lib/ros_lib/map_msgs/ProjectedMap.h new file mode 100644 index 0000000..84e5be5 --- /dev/null +++ b/source/ros-max-lib/ros_lib/map_msgs/ProjectedMap.h @@ -0,0 +1,108 @@ +#ifndef _ROS_map_msgs_ProjectedMap_h +#define _ROS_map_msgs_ProjectedMap_h + +#include +#include +#include +#include "ros/msg.h" +#include "nav_msgs/OccupancyGrid.h" + +namespace map_msgs +{ + + class ProjectedMap : public ros::Msg + { + public: + typedef nav_msgs::OccupancyGrid _map_type; + _map_type map; + typedef double _min_z_type; + _min_z_type min_z; + typedef double _max_z_type; + _max_z_type max_z; + + ProjectedMap(): + map(), + min_z(0), + max_z(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->map.serialize(outbuffer + offset); + union { + double real; + uint64_t base; + } u_min_z; + u_min_z.real = this->min_z; + *(outbuffer + offset + 0) = (u_min_z.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_min_z.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_min_z.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_min_z.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_min_z.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_min_z.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_min_z.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_min_z.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->min_z); + union { + double real; + uint64_t base; + } u_max_z; + u_max_z.real = this->max_z; + *(outbuffer + offset + 0) = (u_max_z.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_max_z.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_max_z.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_max_z.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_max_z.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_max_z.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_max_z.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_max_z.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->max_z); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->map.deserialize(inbuffer + offset); + union { + double real; + uint64_t base; + } u_min_z; + u_min_z.base = 0; + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->min_z = u_min_z.real; + offset += sizeof(this->min_z); + union { + double real; + uint64_t base; + } u_max_z; + u_max_z.base = 0; + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->max_z = u_max_z.real; + offset += sizeof(this->max_z); + return offset; + } + + const char * getType(){ return "map_msgs/ProjectedMap"; }; + const char * getMD5(){ return "7bbe8f96e45089681dc1ea7d023cbfca"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/map_msgs/ProjectedMapInfo.h b/source/ros-max-lib/ros_lib/map_msgs/ProjectedMapInfo.h new file mode 100644 index 0000000..5c7456e --- /dev/null +++ b/source/ros-max-lib/ros_lib/map_msgs/ProjectedMapInfo.h @@ -0,0 +1,247 @@ +#ifndef _ROS_map_msgs_ProjectedMapInfo_h +#define _ROS_map_msgs_ProjectedMapInfo_h + +#include +#include +#include +#include "ros/msg.h" + +namespace map_msgs +{ + + class ProjectedMapInfo : public ros::Msg + { + public: + typedef const char* _frame_id_type; + _frame_id_type frame_id; + typedef double _x_type; + _x_type x; + typedef double _y_type; + _y_type y; + typedef double _width_type; + _width_type width; + typedef double _height_type; + _height_type height; + typedef double _min_z_type; + _min_z_type min_z; + typedef double _max_z_type; + _max_z_type max_z; + + ProjectedMapInfo(): + frame_id(""), + x(0), + y(0), + width(0), + height(0), + min_z(0), + max_z(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_frame_id = strlen(this->frame_id); + varToArr(outbuffer + offset, length_frame_id); + offset += 4; + memcpy(outbuffer + offset, this->frame_id, length_frame_id); + offset += length_frame_id; + union { + double real; + uint64_t base; + } u_x; + u_x.real = this->x; + *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_x.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_x.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_x.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_x.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->x); + union { + double real; + uint64_t base; + } u_y; + u_y.real = this->y; + *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_y.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_y.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_y.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_y.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->y); + union { + double real; + uint64_t base; + } u_width; + u_width.real = this->width; + *(outbuffer + offset + 0) = (u_width.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_width.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_width.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_width.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_width.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_width.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_width.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_width.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->width); + union { + double real; + uint64_t base; + } u_height; + u_height.real = this->height; + *(outbuffer + offset + 0) = (u_height.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_height.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_height.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_height.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_height.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_height.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_height.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_height.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->height); + union { + double real; + uint64_t base; + } u_min_z; + u_min_z.real = this->min_z; + *(outbuffer + offset + 0) = (u_min_z.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_min_z.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_min_z.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_min_z.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_min_z.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_min_z.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_min_z.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_min_z.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->min_z); + union { + double real; + uint64_t base; + } u_max_z; + u_max_z.real = this->max_z; + *(outbuffer + offset + 0) = (u_max_z.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_max_z.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_max_z.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_max_z.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_max_z.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_max_z.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_max_z.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_max_z.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->max_z); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_frame_id; + arrToVar(length_frame_id, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_frame_id; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_frame_id-1]=0; + this->frame_id = (char *)(inbuffer + offset-1); + offset += length_frame_id; + union { + double real; + uint64_t base; + } u_x; + u_x.base = 0; + u_x.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_x.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->x = u_x.real; + offset += sizeof(this->x); + union { + double real; + uint64_t base; + } u_y; + u_y.base = 0; + u_y.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_y.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->y = u_y.real; + offset += sizeof(this->y); + union { + double real; + uint64_t base; + } u_width; + u_width.base = 0; + u_width.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_width.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_width.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_width.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_width.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_width.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_width.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_width.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->width = u_width.real; + offset += sizeof(this->width); + union { + double real; + uint64_t base; + } u_height; + u_height.base = 0; + u_height.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_height.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_height.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_height.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_height.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_height.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_height.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_height.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->height = u_height.real; + offset += sizeof(this->height); + union { + double real; + uint64_t base; + } u_min_z; + u_min_z.base = 0; + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_min_z.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->min_z = u_min_z.real; + offset += sizeof(this->min_z); + union { + double real; + uint64_t base; + } u_max_z; + u_max_z.base = 0; + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_max_z.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->max_z = u_max_z.real; + offset += sizeof(this->max_z); + return offset; + } + + const char * getType(){ return "map_msgs/ProjectedMapInfo"; }; + const char * getMD5(){ return "2dc10595ae94de23f22f8a6d2a0eef7a"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/map_msgs/ProjectedMapsInfo.h b/source/ros-max-lib/ros_lib/map_msgs/ProjectedMapsInfo.h new file mode 100644 index 0000000..b515b94 --- /dev/null +++ b/source/ros-max-lib/ros_lib/map_msgs/ProjectedMapsInfo.h @@ -0,0 +1,96 @@ +#ifndef _ROS_SERVICE_ProjectedMapsInfo_h +#define _ROS_SERVICE_ProjectedMapsInfo_h +#include +#include +#include +#include "ros/msg.h" +#include "map_msgs/ProjectedMapInfo.h" + +namespace map_msgs +{ + +static const char PROJECTEDMAPSINFO[] = "map_msgs/ProjectedMapsInfo"; + + class ProjectedMapsInfoRequest : public ros::Msg + { + public: + uint32_t projected_maps_info_length; + typedef map_msgs::ProjectedMapInfo _projected_maps_info_type; + _projected_maps_info_type st_projected_maps_info; + _projected_maps_info_type * projected_maps_info; + + ProjectedMapsInfoRequest(): + projected_maps_info_length(0), projected_maps_info(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->projected_maps_info_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->projected_maps_info_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->projected_maps_info_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->projected_maps_info_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->projected_maps_info_length); + for( uint32_t i = 0; i < projected_maps_info_length; i++){ + offset += this->projected_maps_info[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t projected_maps_info_lengthT = ((uint32_t) (*(inbuffer + offset))); + projected_maps_info_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + projected_maps_info_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + projected_maps_info_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->projected_maps_info_length); + if(projected_maps_info_lengthT > projected_maps_info_length) + this->projected_maps_info = (map_msgs::ProjectedMapInfo*)realloc(this->projected_maps_info, projected_maps_info_lengthT * sizeof(map_msgs::ProjectedMapInfo)); + projected_maps_info_length = projected_maps_info_lengthT; + for( uint32_t i = 0; i < projected_maps_info_length; i++){ + offset += this->st_projected_maps_info.deserialize(inbuffer + offset); + memcpy( &(this->projected_maps_info[i]), &(this->st_projected_maps_info), sizeof(map_msgs::ProjectedMapInfo)); + } + return offset; + } + + const char * getType(){ return PROJECTEDMAPSINFO; }; + const char * getMD5(){ return "d7980a33202421c8cd74565e57a4d229"; }; + + }; + + class ProjectedMapsInfoResponse : public ros::Msg + { + public: + + ProjectedMapsInfoResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return PROJECTEDMAPSINFO; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class ProjectedMapsInfo { + public: + typedef ProjectedMapsInfoRequest Request; + typedef ProjectedMapsInfoResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/map_msgs/SaveMap.h b/source/ros-max-lib/ros_lib/map_msgs/SaveMap.h new file mode 100644 index 0000000..c304c22 --- /dev/null +++ b/source/ros-max-lib/ros_lib/map_msgs/SaveMap.h @@ -0,0 +1,76 @@ +#ifndef _ROS_SERVICE_SaveMap_h +#define _ROS_SERVICE_SaveMap_h +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/String.h" + +namespace map_msgs +{ + +static const char SAVEMAP[] = "map_msgs/SaveMap"; + + class SaveMapRequest : public ros::Msg + { + public: + typedef std_msgs::String _filename_type; + _filename_type filename; + + SaveMapRequest(): + filename() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->filename.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->filename.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return SAVEMAP; }; + const char * getMD5(){ return "716e25f9d9dc76ceba197f93cbf05dc7"; }; + + }; + + class SaveMapResponse : public ros::Msg + { + public: + + SaveMapResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return SAVEMAP; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class SaveMap { + public: + typedef SaveMapRequest Request; + typedef SaveMapResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/map_msgs/SetMapProjections.h b/source/ros-max-lib/ros_lib/map_msgs/SetMapProjections.h new file mode 100644 index 0000000..1ead172 --- /dev/null +++ b/source/ros-max-lib/ros_lib/map_msgs/SetMapProjections.h @@ -0,0 +1,96 @@ +#ifndef _ROS_SERVICE_SetMapProjections_h +#define _ROS_SERVICE_SetMapProjections_h +#include +#include +#include +#include "ros/msg.h" +#include "map_msgs/ProjectedMapInfo.h" + +namespace map_msgs +{ + +static const char SETMAPPROJECTIONS[] = "map_msgs/SetMapProjections"; + + class SetMapProjectionsRequest : public ros::Msg + { + public: + + SetMapProjectionsRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return SETMAPPROJECTIONS; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class SetMapProjectionsResponse : public ros::Msg + { + public: + uint32_t projected_maps_info_length; + typedef map_msgs::ProjectedMapInfo _projected_maps_info_type; + _projected_maps_info_type st_projected_maps_info; + _projected_maps_info_type * projected_maps_info; + + SetMapProjectionsResponse(): + projected_maps_info_length(0), projected_maps_info(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->projected_maps_info_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->projected_maps_info_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->projected_maps_info_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->projected_maps_info_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->projected_maps_info_length); + for( uint32_t i = 0; i < projected_maps_info_length; i++){ + offset += this->projected_maps_info[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t projected_maps_info_lengthT = ((uint32_t) (*(inbuffer + offset))); + projected_maps_info_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + projected_maps_info_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + projected_maps_info_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->projected_maps_info_length); + if(projected_maps_info_lengthT > projected_maps_info_length) + this->projected_maps_info = (map_msgs::ProjectedMapInfo*)realloc(this->projected_maps_info, projected_maps_info_lengthT * sizeof(map_msgs::ProjectedMapInfo)); + projected_maps_info_length = projected_maps_info_lengthT; + for( uint32_t i = 0; i < projected_maps_info_length; i++){ + offset += this->st_projected_maps_info.deserialize(inbuffer + offset); + memcpy( &(this->projected_maps_info[i]), &(this->st_projected_maps_info), sizeof(map_msgs::ProjectedMapInfo)); + } + return offset; + } + + const char * getType(){ return SETMAPPROJECTIONS; }; + const char * getMD5(){ return "d7980a33202421c8cd74565e57a4d229"; }; + + }; + + class SetMapProjections { + public: + typedef SetMapProjectionsRequest Request; + typedef SetMapProjectionsResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/move_base_msgs/MoveBaseAction.h b/source/ros-max-lib/ros_lib/move_base_msgs/MoveBaseAction.h new file mode 100644 index 0000000..ad79c6a --- /dev/null +++ b/source/ros-max-lib/ros_lib/move_base_msgs/MoveBaseAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_move_base_msgs_MoveBaseAction_h +#define _ROS_move_base_msgs_MoveBaseAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "move_base_msgs/MoveBaseActionGoal.h" +#include "move_base_msgs/MoveBaseActionResult.h" +#include "move_base_msgs/MoveBaseActionFeedback.h" + +namespace move_base_msgs +{ + + class MoveBaseAction : public ros::Msg + { + public: + typedef move_base_msgs::MoveBaseActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef move_base_msgs::MoveBaseActionResult _action_result_type; + _action_result_type action_result; + typedef move_base_msgs::MoveBaseActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + MoveBaseAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "move_base_msgs/MoveBaseAction"; }; + const char * getMD5(){ return "70b6aca7c7f7746d8d1609ad94c80bb8"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/move_base_msgs/MoveBaseActionFeedback.h b/source/ros-max-lib/ros_lib/move_base_msgs/MoveBaseActionFeedback.h new file mode 100644 index 0000000..1cfebc6 --- /dev/null +++ b/source/ros-max-lib/ros_lib/move_base_msgs/MoveBaseActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_move_base_msgs_MoveBaseActionFeedback_h +#define _ROS_move_base_msgs_MoveBaseActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "move_base_msgs/MoveBaseFeedback.h" + +namespace move_base_msgs +{ + + class MoveBaseActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef move_base_msgs::MoveBaseFeedback _feedback_type; + _feedback_type feedback; + + MoveBaseActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "move_base_msgs/MoveBaseActionFeedback"; }; + const char * getMD5(){ return "7d1870ff6e0decea702b943b5af0b42e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/move_base_msgs/MoveBaseActionGoal.h b/source/ros-max-lib/ros_lib/move_base_msgs/MoveBaseActionGoal.h new file mode 100644 index 0000000..686c496 --- /dev/null +++ b/source/ros-max-lib/ros_lib/move_base_msgs/MoveBaseActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_move_base_msgs_MoveBaseActionGoal_h +#define _ROS_move_base_msgs_MoveBaseActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "move_base_msgs/MoveBaseGoal.h" + +namespace move_base_msgs +{ + + class MoveBaseActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef move_base_msgs::MoveBaseGoal _goal_type; + _goal_type goal; + + MoveBaseActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "move_base_msgs/MoveBaseActionGoal"; }; + const char * getMD5(){ return "660d6895a1b9a16dce51fbdd9a64a56b"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/move_base_msgs/MoveBaseActionResult.h b/source/ros-max-lib/ros_lib/move_base_msgs/MoveBaseActionResult.h new file mode 100644 index 0000000..b9614e5 --- /dev/null +++ b/source/ros-max-lib/ros_lib/move_base_msgs/MoveBaseActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_move_base_msgs_MoveBaseActionResult_h +#define _ROS_move_base_msgs_MoveBaseActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "move_base_msgs/MoveBaseResult.h" + +namespace move_base_msgs +{ + + class MoveBaseActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef move_base_msgs::MoveBaseResult _result_type; + _result_type result; + + MoveBaseActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "move_base_msgs/MoveBaseActionResult"; }; + const char * getMD5(){ return "1eb06eeff08fa7ea874431638cb52332"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/move_base_msgs/MoveBaseFeedback.h b/source/ros-max-lib/ros_lib/move_base_msgs/MoveBaseFeedback.h new file mode 100644 index 0000000..09adc4f --- /dev/null +++ b/source/ros-max-lib/ros_lib/move_base_msgs/MoveBaseFeedback.h @@ -0,0 +1,44 @@ +#ifndef _ROS_move_base_msgs_MoveBaseFeedback_h +#define _ROS_move_base_msgs_MoveBaseFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/PoseStamped.h" + +namespace move_base_msgs +{ + + class MoveBaseFeedback : public ros::Msg + { + public: + typedef geometry_msgs::PoseStamped _base_position_type; + _base_position_type base_position; + + MoveBaseFeedback(): + base_position() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->base_position.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->base_position.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "move_base_msgs/MoveBaseFeedback"; }; + const char * getMD5(){ return "3fb824c456a757373a226f6d08071bf0"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/move_base_msgs/MoveBaseGoal.h b/source/ros-max-lib/ros_lib/move_base_msgs/MoveBaseGoal.h new file mode 100644 index 0000000..d228217 --- /dev/null +++ b/source/ros-max-lib/ros_lib/move_base_msgs/MoveBaseGoal.h @@ -0,0 +1,44 @@ +#ifndef _ROS_move_base_msgs_MoveBaseGoal_h +#define _ROS_move_base_msgs_MoveBaseGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/PoseStamped.h" + +namespace move_base_msgs +{ + + class MoveBaseGoal : public ros::Msg + { + public: + typedef geometry_msgs::PoseStamped _target_pose_type; + _target_pose_type target_pose; + + MoveBaseGoal(): + target_pose() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->target_pose.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->target_pose.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "move_base_msgs/MoveBaseGoal"; }; + const char * getMD5(){ return "257d089627d7eb7136c24d3593d05a16"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/move_base_msgs/MoveBaseResult.h b/source/ros-max-lib/ros_lib/move_base_msgs/MoveBaseResult.h new file mode 100644 index 0000000..c43c536 --- /dev/null +++ b/source/ros-max-lib/ros_lib/move_base_msgs/MoveBaseResult.h @@ -0,0 +1,38 @@ +#ifndef _ROS_move_base_msgs_MoveBaseResult_h +#define _ROS_move_base_msgs_MoveBaseResult_h + +#include +#include +#include +#include "ros/msg.h" + +namespace move_base_msgs +{ + + class MoveBaseResult : public ros::Msg + { + public: + + MoveBaseResult() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "move_base_msgs/MoveBaseResult"; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/nav_msgs/GetMap.h b/source/ros-max-lib/ros_lib/nav_msgs/GetMap.h new file mode 100644 index 0000000..ef7e3fa --- /dev/null +++ b/source/ros-max-lib/ros_lib/nav_msgs/GetMap.h @@ -0,0 +1,76 @@ +#ifndef _ROS_SERVICE_GetMap_h +#define _ROS_SERVICE_GetMap_h +#include +#include +#include +#include "ros/msg.h" +#include "nav_msgs/OccupancyGrid.h" + +namespace nav_msgs +{ + +static const char GETMAP[] = "nav_msgs/GetMap"; + + class GetMapRequest : public ros::Msg + { + public: + + GetMapRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return GETMAP; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class GetMapResponse : public ros::Msg + { + public: + typedef nav_msgs::OccupancyGrid _map_type; + _map_type map; + + GetMapResponse(): + map() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->map.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->map.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return GETMAP; }; + const char * getMD5(){ return "6cdd0a18e0aff5b0a3ca2326a89b54ff"; }; + + }; + + class GetMap { + public: + typedef GetMapRequest Request; + typedef GetMapResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/nav_msgs/GetMapAction.h b/source/ros-max-lib/ros_lib/nav_msgs/GetMapAction.h new file mode 100644 index 0000000..56e8299 --- /dev/null +++ b/source/ros-max-lib/ros_lib/nav_msgs/GetMapAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_nav_msgs_GetMapAction_h +#define _ROS_nav_msgs_GetMapAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "nav_msgs/GetMapActionGoal.h" +#include "nav_msgs/GetMapActionResult.h" +#include "nav_msgs/GetMapActionFeedback.h" + +namespace nav_msgs +{ + + class GetMapAction : public ros::Msg + { + public: + typedef nav_msgs::GetMapActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef nav_msgs::GetMapActionResult _action_result_type; + _action_result_type action_result; + typedef nav_msgs::GetMapActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + GetMapAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "nav_msgs/GetMapAction"; }; + const char * getMD5(){ return "e611ad23fbf237c031b7536416dc7cd7"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/nav_msgs/GetMapActionFeedback.h b/source/ros-max-lib/ros_lib/nav_msgs/GetMapActionFeedback.h new file mode 100644 index 0000000..fb60003 --- /dev/null +++ b/source/ros-max-lib/ros_lib/nav_msgs/GetMapActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_nav_msgs_GetMapActionFeedback_h +#define _ROS_nav_msgs_GetMapActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "nav_msgs/GetMapFeedback.h" + +namespace nav_msgs +{ + + class GetMapActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef nav_msgs::GetMapFeedback _feedback_type; + _feedback_type feedback; + + GetMapActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "nav_msgs/GetMapActionFeedback"; }; + const char * getMD5(){ return "aae20e09065c3809e8a8e87c4c8953fd"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/nav_msgs/GetMapActionGoal.h b/source/ros-max-lib/ros_lib/nav_msgs/GetMapActionGoal.h new file mode 100644 index 0000000..da4244a --- /dev/null +++ b/source/ros-max-lib/ros_lib/nav_msgs/GetMapActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_nav_msgs_GetMapActionGoal_h +#define _ROS_nav_msgs_GetMapActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "nav_msgs/GetMapGoal.h" + +namespace nav_msgs +{ + + class GetMapActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef nav_msgs::GetMapGoal _goal_type; + _goal_type goal; + + GetMapActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "nav_msgs/GetMapActionGoal"; }; + const char * getMD5(){ return "4b30be6cd12b9e72826df56b481f40e0"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/nav_msgs/GetMapActionResult.h b/source/ros-max-lib/ros_lib/nav_msgs/GetMapActionResult.h new file mode 100644 index 0000000..f614a35 --- /dev/null +++ b/source/ros-max-lib/ros_lib/nav_msgs/GetMapActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_nav_msgs_GetMapActionResult_h +#define _ROS_nav_msgs_GetMapActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "nav_msgs/GetMapResult.h" + +namespace nav_msgs +{ + + class GetMapActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef nav_msgs::GetMapResult _result_type; + _result_type result; + + GetMapActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "nav_msgs/GetMapActionResult"; }; + const char * getMD5(){ return "ac66e5b9a79bb4bbd33dab245236c892"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/nav_msgs/GetMapFeedback.h b/source/ros-max-lib/ros_lib/nav_msgs/GetMapFeedback.h new file mode 100644 index 0000000..e3b4560 --- /dev/null +++ b/source/ros-max-lib/ros_lib/nav_msgs/GetMapFeedback.h @@ -0,0 +1,38 @@ +#ifndef _ROS_nav_msgs_GetMapFeedback_h +#define _ROS_nav_msgs_GetMapFeedback_h + +#include +#include +#include +#include "ros/msg.h" + +namespace nav_msgs +{ + + class GetMapFeedback : public ros::Msg + { + public: + + GetMapFeedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "nav_msgs/GetMapFeedback"; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/nav_msgs/GetMapGoal.h b/source/ros-max-lib/ros_lib/nav_msgs/GetMapGoal.h new file mode 100644 index 0000000..88a17c5 --- /dev/null +++ b/source/ros-max-lib/ros_lib/nav_msgs/GetMapGoal.h @@ -0,0 +1,38 @@ +#ifndef _ROS_nav_msgs_GetMapGoal_h +#define _ROS_nav_msgs_GetMapGoal_h + +#include +#include +#include +#include "ros/msg.h" + +namespace nav_msgs +{ + + class GetMapGoal : public ros::Msg + { + public: + + GetMapGoal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "nav_msgs/GetMapGoal"; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/nav_msgs/GetMapResult.h b/source/ros-max-lib/ros_lib/nav_msgs/GetMapResult.h new file mode 100644 index 0000000..1ef8fbd --- /dev/null +++ b/source/ros-max-lib/ros_lib/nav_msgs/GetMapResult.h @@ -0,0 +1,44 @@ +#ifndef _ROS_nav_msgs_GetMapResult_h +#define _ROS_nav_msgs_GetMapResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "nav_msgs/OccupancyGrid.h" + +namespace nav_msgs +{ + + class GetMapResult : public ros::Msg + { + public: + typedef nav_msgs::OccupancyGrid _map_type; + _map_type map; + + GetMapResult(): + map() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->map.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->map.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "nav_msgs/GetMapResult"; }; + const char * getMD5(){ return "6cdd0a18e0aff5b0a3ca2326a89b54ff"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/nav_msgs/GetPlan.h b/source/ros-max-lib/ros_lib/nav_msgs/GetPlan.h new file mode 100644 index 0000000..fe312b2 --- /dev/null +++ b/source/ros-max-lib/ros_lib/nav_msgs/GetPlan.h @@ -0,0 +1,111 @@ +#ifndef _ROS_SERVICE_GetPlan_h +#define _ROS_SERVICE_GetPlan_h +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/PoseStamped.h" +#include "nav_msgs/Path.h" + +namespace nav_msgs +{ + +static const char GETPLAN[] = "nav_msgs/GetPlan"; + + class GetPlanRequest : public ros::Msg + { + public: + typedef geometry_msgs::PoseStamped _start_type; + _start_type start; + typedef geometry_msgs::PoseStamped _goal_type; + _goal_type goal; + typedef float _tolerance_type; + _tolerance_type tolerance; + + GetPlanRequest(): + start(), + goal(), + tolerance(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->start.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + union { + float real; + uint32_t base; + } u_tolerance; + u_tolerance.real = this->tolerance; + *(outbuffer + offset + 0) = (u_tolerance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_tolerance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_tolerance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_tolerance.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->tolerance); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->start.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + union { + float real; + uint32_t base; + } u_tolerance; + u_tolerance.base = 0; + u_tolerance.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_tolerance.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_tolerance.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_tolerance.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->tolerance = u_tolerance.real; + offset += sizeof(this->tolerance); + return offset; + } + + const char * getType(){ return GETPLAN; }; + const char * getMD5(){ return "e25a43e0752bcca599a8c2eef8282df8"; }; + + }; + + class GetPlanResponse : public ros::Msg + { + public: + typedef nav_msgs::Path _plan_type; + _plan_type plan; + + GetPlanResponse(): + plan() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->plan.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->plan.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return GETPLAN; }; + const char * getMD5(){ return "0002bc113c0259d71f6cf8cbc9430e18"; }; + + }; + + class GetPlan { + public: + typedef GetPlanRequest Request; + typedef GetPlanResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/nav_msgs/GridCells.h b/source/ros-max-lib/ros_lib/nav_msgs/GridCells.h new file mode 100644 index 0000000..6c41cc6 --- /dev/null +++ b/source/ros-max-lib/ros_lib/nav_msgs/GridCells.h @@ -0,0 +1,118 @@ +#ifndef _ROS_nav_msgs_GridCells_h +#define _ROS_nav_msgs_GridCells_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Point.h" + +namespace nav_msgs +{ + + class GridCells : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef float _cell_width_type; + _cell_width_type cell_width; + typedef float _cell_height_type; + _cell_height_type cell_height; + uint32_t cells_length; + typedef geometry_msgs::Point _cells_type; + _cells_type st_cells; + _cells_type * cells; + + GridCells(): + header(), + cell_width(0), + cell_height(0), + cells_length(0), cells(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + union { + float real; + uint32_t base; + } u_cell_width; + u_cell_width.real = this->cell_width; + *(outbuffer + offset + 0) = (u_cell_width.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_cell_width.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_cell_width.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_cell_width.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->cell_width); + union { + float real; + uint32_t base; + } u_cell_height; + u_cell_height.real = this->cell_height; + *(outbuffer + offset + 0) = (u_cell_height.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_cell_height.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_cell_height.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_cell_height.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->cell_height); + *(outbuffer + offset + 0) = (this->cells_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->cells_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->cells_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->cells_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->cells_length); + for( uint32_t i = 0; i < cells_length; i++){ + offset += this->cells[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + union { + float real; + uint32_t base; + } u_cell_width; + u_cell_width.base = 0; + u_cell_width.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_cell_width.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_cell_width.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_cell_width.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->cell_width = u_cell_width.real; + offset += sizeof(this->cell_width); + union { + float real; + uint32_t base; + } u_cell_height; + u_cell_height.base = 0; + u_cell_height.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_cell_height.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_cell_height.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_cell_height.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->cell_height = u_cell_height.real; + offset += sizeof(this->cell_height); + uint32_t cells_lengthT = ((uint32_t) (*(inbuffer + offset))); + cells_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + cells_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + cells_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->cells_length); + if(cells_lengthT > cells_length) + this->cells = (geometry_msgs::Point*)realloc(this->cells, cells_lengthT * sizeof(geometry_msgs::Point)); + cells_length = cells_lengthT; + for( uint32_t i = 0; i < cells_length; i++){ + offset += this->st_cells.deserialize(inbuffer + offset); + memcpy( &(this->cells[i]), &(this->st_cells), sizeof(geometry_msgs::Point)); + } + return offset; + } + + const char * getType(){ return "nav_msgs/GridCells"; }; + const char * getMD5(){ return "b9e4f5df6d28e272ebde00a3994830f5"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/nav_msgs/MapMetaData.h b/source/ros-max-lib/ros_lib/nav_msgs/MapMetaData.h new file mode 100644 index 0000000..47733d9 --- /dev/null +++ b/source/ros-max-lib/ros_lib/nav_msgs/MapMetaData.h @@ -0,0 +1,118 @@ +#ifndef _ROS_nav_msgs_MapMetaData_h +#define _ROS_nav_msgs_MapMetaData_h + +#include +#include +#include +#include "ros/msg.h" +#include "ros/time.h" +#include "geometry_msgs/Pose.h" + +namespace nav_msgs +{ + + class MapMetaData : public ros::Msg + { + public: + typedef ros::Time _map_load_time_type; + _map_load_time_type map_load_time; + typedef float _resolution_type; + _resolution_type resolution; + typedef uint32_t _width_type; + _width_type width; + typedef uint32_t _height_type; + _height_type height; + typedef geometry_msgs::Pose _origin_type; + _origin_type origin; + + MapMetaData(): + map_load_time(), + resolution(0), + width(0), + height(0), + origin() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->map_load_time.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->map_load_time.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->map_load_time.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->map_load_time.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->map_load_time.sec); + *(outbuffer + offset + 0) = (this->map_load_time.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->map_load_time.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->map_load_time.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->map_load_time.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->map_load_time.nsec); + union { + float real; + uint32_t base; + } u_resolution; + u_resolution.real = this->resolution; + *(outbuffer + offset + 0) = (u_resolution.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_resolution.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_resolution.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_resolution.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->resolution); + *(outbuffer + offset + 0) = (this->width >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->width >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->width >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->width >> (8 * 3)) & 0xFF; + offset += sizeof(this->width); + *(outbuffer + offset + 0) = (this->height >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->height >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->height >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->height >> (8 * 3)) & 0xFF; + offset += sizeof(this->height); + offset += this->origin.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->map_load_time.sec = ((uint32_t) (*(inbuffer + offset))); + this->map_load_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->map_load_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->map_load_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->map_load_time.sec); + this->map_load_time.nsec = ((uint32_t) (*(inbuffer + offset))); + this->map_load_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->map_load_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->map_load_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->map_load_time.nsec); + union { + float real; + uint32_t base; + } u_resolution; + u_resolution.base = 0; + u_resolution.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_resolution.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_resolution.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_resolution.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->resolution = u_resolution.real; + offset += sizeof(this->resolution); + this->width = ((uint32_t) (*(inbuffer + offset))); + this->width |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->width |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->width |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->width); + this->height = ((uint32_t) (*(inbuffer + offset))); + this->height |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->height |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->height |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->height); + offset += this->origin.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "nav_msgs/MapMetaData"; }; + const char * getMD5(){ return "10cfc8a2818024d3248802c00c95f11b"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/nav_msgs/OccupancyGrid.h b/source/ros-max-lib/ros_lib/nav_msgs/OccupancyGrid.h new file mode 100644 index 0000000..4205f43 --- /dev/null +++ b/source/ros-max-lib/ros_lib/nav_msgs/OccupancyGrid.h @@ -0,0 +1,88 @@ +#ifndef _ROS_nav_msgs_OccupancyGrid_h +#define _ROS_nav_msgs_OccupancyGrid_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "nav_msgs/MapMetaData.h" + +namespace nav_msgs +{ + + class OccupancyGrid : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef nav_msgs::MapMetaData _info_type; + _info_type info; + uint32_t data_length; + typedef int8_t _data_type; + _data_type st_data; + _data_type * data; + + OccupancyGrid(): + header(), + info(), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->info.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + union { + int8_t real; + uint8_t base; + } u_datai; + u_datai.real = this->data[i]; + *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->info.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (int8_t*)realloc(this->data, data_lengthT * sizeof(int8_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + union { + int8_t real; + uint8_t base; + } u_st_data; + u_st_data.base = 0; + u_st_data.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->st_data = u_st_data.real; + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(int8_t)); + } + return offset; + } + + const char * getType(){ return "nav_msgs/OccupancyGrid"; }; + const char * getMD5(){ return "3381f2d731d4076ec5c71b0759edbe4e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/nav_msgs/Odometry.h b/source/ros-max-lib/ros_lib/nav_msgs/Odometry.h new file mode 100644 index 0000000..e8eaca5 --- /dev/null +++ b/source/ros-max-lib/ros_lib/nav_msgs/Odometry.h @@ -0,0 +1,73 @@ +#ifndef _ROS_nav_msgs_Odometry_h +#define _ROS_nav_msgs_Odometry_h + +#include +#include +#include +#include "../ros/msg.h" +#include "../std_msgs/Header.h" +#include "../geometry_msgs/PoseWithCovariance.h" +#include "../geometry_msgs/TwistWithCovariance.h" + +namespace nav_msgs +{ + + class Odometry : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef const char* _child_frame_id_type; + _child_frame_id_type child_frame_id; + typedef geometry_msgs::PoseWithCovariance _pose_type; + _pose_type pose; + typedef geometry_msgs::TwistWithCovariance _twist_type; + _twist_type twist; + + Odometry(): + header(), + child_frame_id(""), + pose(), + twist() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + uint32_t length_child_frame_id = strlen(this->child_frame_id); + varToArr(outbuffer + offset, length_child_frame_id); + offset += 4; + memcpy(outbuffer + offset, this->child_frame_id, length_child_frame_id); + offset += length_child_frame_id; + offset += this->pose.serialize(outbuffer + offset); + offset += this->twist.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t length_child_frame_id; + arrToVar(length_child_frame_id, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_child_frame_id; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_child_frame_id-1]=0; + this->child_frame_id = (char *)(inbuffer + offset-1); + offset += length_child_frame_id; + offset += this->pose.deserialize(inbuffer + offset); + offset += this->twist.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "nav_msgs/Odometry"; }; + const char * getMD5(){ return "cd5e73d190d741a2f92e81eda573aca7"; }; + + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/nav_msgs/Path.h b/source/ros-max-lib/ros_lib/nav_msgs/Path.h new file mode 100644 index 0000000..8587706 --- /dev/null +++ b/source/ros-max-lib/ros_lib/nav_msgs/Path.h @@ -0,0 +1,70 @@ +#ifndef _ROS_nav_msgs_Path_h +#define _ROS_nav_msgs_Path_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/PoseStamped.h" + +namespace nav_msgs +{ + + class Path : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t poses_length; + typedef geometry_msgs::PoseStamped _poses_type; + _poses_type st_poses; + _poses_type * poses; + + Path(): + header(), + poses_length(0), poses(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->poses_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->poses_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->poses_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->poses_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->poses_length); + for( uint32_t i = 0; i < poses_length; i++){ + offset += this->poses[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t poses_lengthT = ((uint32_t) (*(inbuffer + offset))); + poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->poses_length); + if(poses_lengthT > poses_length) + this->poses = (geometry_msgs::PoseStamped*)realloc(this->poses, poses_lengthT * sizeof(geometry_msgs::PoseStamped)); + poses_length = poses_lengthT; + for( uint32_t i = 0; i < poses_length; i++){ + offset += this->st_poses.deserialize(inbuffer + offset); + memcpy( &(this->poses[i]), &(this->st_poses), sizeof(geometry_msgs::PoseStamped)); + } + return offset; + } + + const char * getType(){ return "nav_msgs/Path"; }; + const char * getMD5(){ return "6227e2b7e9cce15051f669a5e197bbf7"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/nav_msgs/SetMap.h b/source/ros-max-lib/ros_lib/nav_msgs/SetMap.h new file mode 100644 index 0000000..717cead --- /dev/null +++ b/source/ros-max-lib/ros_lib/nav_msgs/SetMap.h @@ -0,0 +1,100 @@ +#ifndef _ROS_SERVICE_SetMap_h +#define _ROS_SERVICE_SetMap_h +#include +#include +#include +#include "ros/msg.h" +#include "nav_msgs/OccupancyGrid.h" +#include "geometry_msgs/PoseWithCovarianceStamped.h" + +namespace nav_msgs +{ + +static const char SETMAP[] = "nav_msgs/SetMap"; + + class SetMapRequest : public ros::Msg + { + public: + typedef nav_msgs::OccupancyGrid _map_type; + _map_type map; + typedef geometry_msgs::PoseWithCovarianceStamped _initial_pose_type; + _initial_pose_type initial_pose; + + SetMapRequest(): + map(), + initial_pose() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->map.serialize(outbuffer + offset); + offset += this->initial_pose.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->map.deserialize(inbuffer + offset); + offset += this->initial_pose.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return SETMAP; }; + const char * getMD5(){ return "91149a20d7be299b87c340df8cc94fd4"; }; + + }; + + class SetMapResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + + SetMapResponse(): + success(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + return offset; + } + + const char * getType(){ return SETMAP; }; + const char * getMD5(){ return "358e233cde0c8a8bcfea4ce193f8fc15"; }; + + }; + + class SetMap { + public: + typedef SetMapRequest Request; + typedef SetMapResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/navfn/MakeNavPlan.h b/source/ros-max-lib/ros_lib/navfn/MakeNavPlan.h new file mode 100644 index 0000000..787905b --- /dev/null +++ b/source/ros-max-lib/ros_lib/navfn/MakeNavPlan.h @@ -0,0 +1,130 @@ +#ifndef _ROS_SERVICE_MakeNavPlan_h +#define _ROS_SERVICE_MakeNavPlan_h +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/PoseStamped.h" + +namespace navfn +{ + +static const char MAKENAVPLAN[] = "navfn/MakeNavPlan"; + + class MakeNavPlanRequest : public ros::Msg + { + public: + typedef geometry_msgs::PoseStamped _start_type; + _start_type start; + typedef geometry_msgs::PoseStamped _goal_type; + _goal_type goal; + + MakeNavPlanRequest(): + start(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->start.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->start.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return MAKENAVPLAN; }; + const char * getMD5(){ return "2fe3126bd5b2d56edd5005220333d4fd"; }; + + }; + + class MakeNavPlanResponse : public ros::Msg + { + public: + typedef uint8_t _plan_found_type; + _plan_found_type plan_found; + typedef const char* _error_message_type; + _error_message_type error_message; + uint32_t path_length; + typedef geometry_msgs::PoseStamped _path_type; + _path_type st_path; + _path_type * path; + + MakeNavPlanResponse(): + plan_found(0), + error_message(""), + path_length(0), path(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->plan_found >> (8 * 0)) & 0xFF; + offset += sizeof(this->plan_found); + uint32_t length_error_message = strlen(this->error_message); + varToArr(outbuffer + offset, length_error_message); + offset += 4; + memcpy(outbuffer + offset, this->error_message, length_error_message); + offset += length_error_message; + *(outbuffer + offset + 0) = (this->path_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->path_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->path_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->path_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->path_length); + for( uint32_t i = 0; i < path_length; i++){ + offset += this->path[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->plan_found = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->plan_found); + uint32_t length_error_message; + arrToVar(length_error_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_error_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_error_message-1]=0; + this->error_message = (char *)(inbuffer + offset-1); + offset += length_error_message; + uint32_t path_lengthT = ((uint32_t) (*(inbuffer + offset))); + path_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + path_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + path_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->path_length); + if(path_lengthT > path_length) + this->path = (geometry_msgs::PoseStamped*)realloc(this->path, path_lengthT * sizeof(geometry_msgs::PoseStamped)); + path_length = path_lengthT; + for( uint32_t i = 0; i < path_length; i++){ + offset += this->st_path.deserialize(inbuffer + offset); + memcpy( &(this->path[i]), &(this->st_path), sizeof(geometry_msgs::PoseStamped)); + } + return offset; + } + + const char * getType(){ return MAKENAVPLAN; }; + const char * getMD5(){ return "8b8ed7edf1b237dc9ddda8c8ffed5d3a"; }; + + }; + + class MakeNavPlan { + public: + typedef MakeNavPlanRequest Request; + typedef MakeNavPlanResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/navfn/SetCostmap.h b/source/ros-max-lib/ros_lib/navfn/SetCostmap.h new file mode 100644 index 0000000..8f746c5 --- /dev/null +++ b/source/ros-max-lib/ros_lib/navfn/SetCostmap.h @@ -0,0 +1,115 @@ +#ifndef _ROS_SERVICE_SetCostmap_h +#define _ROS_SERVICE_SetCostmap_h +#include +#include +#include +#include "ros/msg.h" + +namespace navfn +{ + +static const char SETCOSTMAP[] = "navfn/SetCostmap"; + + class SetCostmapRequest : public ros::Msg + { + public: + uint32_t costs_length; + typedef uint8_t _costs_type; + _costs_type st_costs; + _costs_type * costs; + typedef uint16_t _height_type; + _height_type height; + typedef uint16_t _width_type; + _width_type width; + + SetCostmapRequest(): + costs_length(0), costs(NULL), + height(0), + width(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->costs_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->costs_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->costs_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->costs_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->costs_length); + for( uint32_t i = 0; i < costs_length; i++){ + *(outbuffer + offset + 0) = (this->costs[i] >> (8 * 0)) & 0xFF; + offset += sizeof(this->costs[i]); + } + *(outbuffer + offset + 0) = (this->height >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->height >> (8 * 1)) & 0xFF; + offset += sizeof(this->height); + *(outbuffer + offset + 0) = (this->width >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->width >> (8 * 1)) & 0xFF; + offset += sizeof(this->width); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t costs_lengthT = ((uint32_t) (*(inbuffer + offset))); + costs_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + costs_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + costs_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->costs_length); + if(costs_lengthT > costs_length) + this->costs = (uint8_t*)realloc(this->costs, costs_lengthT * sizeof(uint8_t)); + costs_length = costs_lengthT; + for( uint32_t i = 0; i < costs_length; i++){ + this->st_costs = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->st_costs); + memcpy( &(this->costs[i]), &(this->st_costs), sizeof(uint8_t)); + } + this->height = ((uint16_t) (*(inbuffer + offset))); + this->height |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->height); + this->width = ((uint16_t) (*(inbuffer + offset))); + this->width |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->width); + return offset; + } + + const char * getType(){ return SETCOSTMAP; }; + const char * getMD5(){ return "370ec969cdb71f9cde7c7cbe0d752308"; }; + + }; + + class SetCostmapResponse : public ros::Msg + { + public: + + SetCostmapResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return SETCOSTMAP; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class SetCostmap { + public: + typedef SetCostmapRequest Request; + typedef SetCostmapResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/nodelet/NodeletList.h b/source/ros-max-lib/ros_lib/nodelet/NodeletList.h new file mode 100644 index 0000000..6210fa0 --- /dev/null +++ b/source/ros-max-lib/ros_lib/nodelet/NodeletList.h @@ -0,0 +1,107 @@ +#ifndef _ROS_SERVICE_NodeletList_h +#define _ROS_SERVICE_NodeletList_h +#include +#include +#include +#include "ros/msg.h" + +namespace nodelet +{ + +static const char NODELETLIST[] = "nodelet/NodeletList"; + + class NodeletListRequest : public ros::Msg + { + public: + + NodeletListRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return NODELETLIST; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class NodeletListResponse : public ros::Msg + { + public: + uint32_t nodelets_length; + typedef char* _nodelets_type; + _nodelets_type st_nodelets; + _nodelets_type * nodelets; + + NodeletListResponse(): + nodelets_length(0), nodelets(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->nodelets_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->nodelets_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->nodelets_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->nodelets_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->nodelets_length); + for( uint32_t i = 0; i < nodelets_length; i++){ + uint32_t length_nodeletsi = strlen(this->nodelets[i]); + varToArr(outbuffer + offset, length_nodeletsi); + offset += 4; + memcpy(outbuffer + offset, this->nodelets[i], length_nodeletsi); + offset += length_nodeletsi; + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t nodelets_lengthT = ((uint32_t) (*(inbuffer + offset))); + nodelets_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + nodelets_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + nodelets_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->nodelets_length); + if(nodelets_lengthT > nodelets_length) + this->nodelets = (char**)realloc(this->nodelets, nodelets_lengthT * sizeof(char*)); + nodelets_length = nodelets_lengthT; + for( uint32_t i = 0; i < nodelets_length; i++){ + uint32_t length_st_nodelets; + arrToVar(length_st_nodelets, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_nodelets; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_nodelets-1]=0; + this->st_nodelets = (char *)(inbuffer + offset-1); + offset += length_st_nodelets; + memcpy( &(this->nodelets[i]), &(this->st_nodelets), sizeof(char*)); + } + return offset; + } + + const char * getType(){ return NODELETLIST; }; + const char * getMD5(){ return "99c7b10e794f5600b8030e697e946ca7"; }; + + }; + + class NodeletList { + public: + typedef NodeletListRequest Request; + typedef NodeletListResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/nodelet/NodeletLoad.h b/source/ros-max-lib/ros_lib/nodelet/NodeletLoad.h new file mode 100644 index 0000000..e7a9c5c --- /dev/null +++ b/source/ros-max-lib/ros_lib/nodelet/NodeletLoad.h @@ -0,0 +1,250 @@ +#ifndef _ROS_SERVICE_NodeletLoad_h +#define _ROS_SERVICE_NodeletLoad_h +#include +#include +#include +#include "ros/msg.h" + +namespace nodelet +{ + +static const char NODELETLOAD[] = "nodelet/NodeletLoad"; + + class NodeletLoadRequest : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef const char* _type_type; + _type_type type; + uint32_t remap_source_args_length; + typedef char* _remap_source_args_type; + _remap_source_args_type st_remap_source_args; + _remap_source_args_type * remap_source_args; + uint32_t remap_target_args_length; + typedef char* _remap_target_args_type; + _remap_target_args_type st_remap_target_args; + _remap_target_args_type * remap_target_args; + uint32_t my_argv_length; + typedef char* _my_argv_type; + _my_argv_type st_my_argv; + _my_argv_type * my_argv; + typedef const char* _bond_id_type; + _bond_id_type bond_id; + + NodeletLoadRequest(): + name(""), + type(""), + remap_source_args_length(0), remap_source_args(NULL), + remap_target_args_length(0), remap_target_args(NULL), + my_argv_length(0), my_argv(NULL), + bond_id("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + uint32_t length_type = strlen(this->type); + varToArr(outbuffer + offset, length_type); + offset += 4; + memcpy(outbuffer + offset, this->type, length_type); + offset += length_type; + *(outbuffer + offset + 0) = (this->remap_source_args_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->remap_source_args_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->remap_source_args_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->remap_source_args_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->remap_source_args_length); + for( uint32_t i = 0; i < remap_source_args_length; i++){ + uint32_t length_remap_source_argsi = strlen(this->remap_source_args[i]); + varToArr(outbuffer + offset, length_remap_source_argsi); + offset += 4; + memcpy(outbuffer + offset, this->remap_source_args[i], length_remap_source_argsi); + offset += length_remap_source_argsi; + } + *(outbuffer + offset + 0) = (this->remap_target_args_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->remap_target_args_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->remap_target_args_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->remap_target_args_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->remap_target_args_length); + for( uint32_t i = 0; i < remap_target_args_length; i++){ + uint32_t length_remap_target_argsi = strlen(this->remap_target_args[i]); + varToArr(outbuffer + offset, length_remap_target_argsi); + offset += 4; + memcpy(outbuffer + offset, this->remap_target_args[i], length_remap_target_argsi); + offset += length_remap_target_argsi; + } + *(outbuffer + offset + 0) = (this->my_argv_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->my_argv_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->my_argv_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->my_argv_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->my_argv_length); + for( uint32_t i = 0; i < my_argv_length; i++){ + uint32_t length_my_argvi = strlen(this->my_argv[i]); + varToArr(outbuffer + offset, length_my_argvi); + offset += 4; + memcpy(outbuffer + offset, this->my_argv[i], length_my_argvi); + offset += length_my_argvi; + } + uint32_t length_bond_id = strlen(this->bond_id); + varToArr(outbuffer + offset, length_bond_id); + offset += 4; + memcpy(outbuffer + offset, this->bond_id, length_bond_id); + offset += length_bond_id; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + uint32_t length_type; + arrToVar(length_type, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_type; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_type-1]=0; + this->type = (char *)(inbuffer + offset-1); + offset += length_type; + uint32_t remap_source_args_lengthT = ((uint32_t) (*(inbuffer + offset))); + remap_source_args_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + remap_source_args_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + remap_source_args_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->remap_source_args_length); + if(remap_source_args_lengthT > remap_source_args_length) + this->remap_source_args = (char**)realloc(this->remap_source_args, remap_source_args_lengthT * sizeof(char*)); + remap_source_args_length = remap_source_args_lengthT; + for( uint32_t i = 0; i < remap_source_args_length; i++){ + uint32_t length_st_remap_source_args; + arrToVar(length_st_remap_source_args, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_remap_source_args; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_remap_source_args-1]=0; + this->st_remap_source_args = (char *)(inbuffer + offset-1); + offset += length_st_remap_source_args; + memcpy( &(this->remap_source_args[i]), &(this->st_remap_source_args), sizeof(char*)); + } + uint32_t remap_target_args_lengthT = ((uint32_t) (*(inbuffer + offset))); + remap_target_args_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + remap_target_args_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + remap_target_args_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->remap_target_args_length); + if(remap_target_args_lengthT > remap_target_args_length) + this->remap_target_args = (char**)realloc(this->remap_target_args, remap_target_args_lengthT * sizeof(char*)); + remap_target_args_length = remap_target_args_lengthT; + for( uint32_t i = 0; i < remap_target_args_length; i++){ + uint32_t length_st_remap_target_args; + arrToVar(length_st_remap_target_args, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_remap_target_args; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_remap_target_args-1]=0; + this->st_remap_target_args = (char *)(inbuffer + offset-1); + offset += length_st_remap_target_args; + memcpy( &(this->remap_target_args[i]), &(this->st_remap_target_args), sizeof(char*)); + } + uint32_t my_argv_lengthT = ((uint32_t) (*(inbuffer + offset))); + my_argv_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + my_argv_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + my_argv_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->my_argv_length); + if(my_argv_lengthT > my_argv_length) + this->my_argv = (char**)realloc(this->my_argv, my_argv_lengthT * sizeof(char*)); + my_argv_length = my_argv_lengthT; + for( uint32_t i = 0; i < my_argv_length; i++){ + uint32_t length_st_my_argv; + arrToVar(length_st_my_argv, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_my_argv; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_my_argv-1]=0; + this->st_my_argv = (char *)(inbuffer + offset-1); + offset += length_st_my_argv; + memcpy( &(this->my_argv[i]), &(this->st_my_argv), sizeof(char*)); + } + uint32_t length_bond_id; + arrToVar(length_bond_id, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_bond_id; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_bond_id-1]=0; + this->bond_id = (char *)(inbuffer + offset-1); + offset += length_bond_id; + return offset; + } + + const char * getType(){ return NODELETLOAD; }; + const char * getMD5(){ return "c6e28cc4d2e259249d96cfb50658fbec"; }; + + }; + + class NodeletLoadResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + + NodeletLoadResponse(): + success(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + return offset; + } + + const char * getType(){ return NODELETLOAD; }; + const char * getMD5(){ return "358e233cde0c8a8bcfea4ce193f8fc15"; }; + + }; + + class NodeletLoad { + public: + typedef NodeletLoadRequest Request; + typedef NodeletLoadResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/nodelet/NodeletUnload.h b/source/ros-max-lib/ros_lib/nodelet/NodeletUnload.h new file mode 100644 index 0000000..bc865b4 --- /dev/null +++ b/source/ros-max-lib/ros_lib/nodelet/NodeletUnload.h @@ -0,0 +1,105 @@ +#ifndef _ROS_SERVICE_NodeletUnload_h +#define _ROS_SERVICE_NodeletUnload_h +#include +#include +#include +#include "ros/msg.h" + +namespace nodelet +{ + +static const char NODELETUNLOAD[] = "nodelet/NodeletUnload"; + + class NodeletUnloadRequest : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + + NodeletUnloadRequest(): + name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + return offset; + } + + const char * getType(){ return NODELETUNLOAD; }; + const char * getMD5(){ return "c1f3d28f1b044c871e6eff2e9fc3c667"; }; + + }; + + class NodeletUnloadResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + + NodeletUnloadResponse(): + success(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + return offset; + } + + const char * getType(){ return NODELETUNLOAD; }; + const char * getMD5(){ return "358e233cde0c8a8bcfea4ce193f8fc15"; }; + + }; + + class NodeletUnload { + public: + typedef NodeletUnloadRequest Request; + typedef NodeletUnloadResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/openni2_camera/GetSerial.h b/source/ros-max-lib/ros_lib/openni2_camera/GetSerial.h new file mode 100644 index 0000000..c0f1cdf --- /dev/null +++ b/source/ros-max-lib/ros_lib/openni2_camera/GetSerial.h @@ -0,0 +1,87 @@ +#ifndef _ROS_SERVICE_GetSerial_h +#define _ROS_SERVICE_GetSerial_h +#include +#include +#include +#include "ros/msg.h" + +namespace openni2_camera +{ + +static const char GETSERIAL[] = "openni2_camera/GetSerial"; + + class GetSerialRequest : public ros::Msg + { + public: + + GetSerialRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return GETSERIAL; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class GetSerialResponse : public ros::Msg + { + public: + typedef const char* _serial_type; + _serial_type serial; + + GetSerialResponse(): + serial("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_serial = strlen(this->serial); + varToArr(outbuffer + offset, length_serial); + offset += 4; + memcpy(outbuffer + offset, this->serial, length_serial); + offset += length_serial; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_serial; + arrToVar(length_serial, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_serial; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_serial-1]=0; + this->serial = (char *)(inbuffer + offset-1); + offset += length_serial; + return offset; + } + + const char * getType(){ return GETSERIAL; }; + const char * getMD5(){ return "fca40cf463282a80db4e2037c8a61741"; }; + + }; + + class GetSerial { + public: + typedef GetSerialRequest Request; + typedef GetSerialResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/pcl_msgs/ModelCoefficients.h b/source/ros-max-lib/ros_lib/pcl_msgs/ModelCoefficients.h new file mode 100644 index 0000000..3256a94 --- /dev/null +++ b/source/ros-max-lib/ros_lib/pcl_msgs/ModelCoefficients.h @@ -0,0 +1,88 @@ +#ifndef _ROS_pcl_msgs_ModelCoefficients_h +#define _ROS_pcl_msgs_ModelCoefficients_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace pcl_msgs +{ + + class ModelCoefficients : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t values_length; + typedef float _values_type; + _values_type st_values; + _values_type * values; + + ModelCoefficients(): + header(), + values_length(0), values(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->values_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->values_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->values_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->values_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->values_length); + for( uint32_t i = 0; i < values_length; i++){ + union { + float real; + uint32_t base; + } u_valuesi; + u_valuesi.real = this->values[i]; + *(outbuffer + offset + 0) = (u_valuesi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_valuesi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_valuesi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_valuesi.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->values[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t values_lengthT = ((uint32_t) (*(inbuffer + offset))); + values_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + values_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + values_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->values_length); + if(values_lengthT > values_length) + this->values = (float*)realloc(this->values, values_lengthT * sizeof(float)); + values_length = values_lengthT; + for( uint32_t i = 0; i < values_length; i++){ + union { + float real; + uint32_t base; + } u_st_values; + u_st_values.base = 0; + u_st_values.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_values.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_values.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_values.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_values = u_st_values.real; + offset += sizeof(this->st_values); + memcpy( &(this->values[i]), &(this->st_values), sizeof(float)); + } + return offset; + } + + const char * getType(){ return "pcl_msgs/ModelCoefficients"; }; + const char * getMD5(){ return "ca27dea75e72cb894cd36f9e5005e93e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/pcl_msgs/PointIndices.h b/source/ros-max-lib/ros_lib/pcl_msgs/PointIndices.h new file mode 100644 index 0000000..56feb9b --- /dev/null +++ b/source/ros-max-lib/ros_lib/pcl_msgs/PointIndices.h @@ -0,0 +1,88 @@ +#ifndef _ROS_pcl_msgs_PointIndices_h +#define _ROS_pcl_msgs_PointIndices_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace pcl_msgs +{ + + class PointIndices : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t indices_length; + typedef int32_t _indices_type; + _indices_type st_indices; + _indices_type * indices; + + PointIndices(): + header(), + indices_length(0), indices(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->indices_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->indices_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->indices_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->indices_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->indices_length); + for( uint32_t i = 0; i < indices_length; i++){ + union { + int32_t real; + uint32_t base; + } u_indicesi; + u_indicesi.real = this->indices[i]; + *(outbuffer + offset + 0) = (u_indicesi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_indicesi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_indicesi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_indicesi.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->indices[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t indices_lengthT = ((uint32_t) (*(inbuffer + offset))); + indices_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + indices_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + indices_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->indices_length); + if(indices_lengthT > indices_length) + this->indices = (int32_t*)realloc(this->indices, indices_lengthT * sizeof(int32_t)); + indices_length = indices_lengthT; + for( uint32_t i = 0; i < indices_length; i++){ + union { + int32_t real; + uint32_t base; + } u_st_indices; + u_st_indices.base = 0; + u_st_indices.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_indices.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_indices.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_indices.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_indices = u_st_indices.real; + offset += sizeof(this->st_indices); + memcpy( &(this->indices[i]), &(this->st_indices), sizeof(int32_t)); + } + return offset; + } + + const char * getType(){ return "pcl_msgs/PointIndices"; }; + const char * getMD5(){ return "458c7998b7eaf99908256472e273b3d4"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/pcl_msgs/PolygonMesh.h b/source/ros-max-lib/ros_lib/pcl_msgs/PolygonMesh.h new file mode 100644 index 0000000..d98e4c1 --- /dev/null +++ b/source/ros-max-lib/ros_lib/pcl_msgs/PolygonMesh.h @@ -0,0 +1,76 @@ +#ifndef _ROS_pcl_msgs_PolygonMesh_h +#define _ROS_pcl_msgs_PolygonMesh_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "sensor_msgs/PointCloud2.h" +#include "pcl_msgs/Vertices.h" + +namespace pcl_msgs +{ + + class PolygonMesh : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef sensor_msgs::PointCloud2 _cloud_type; + _cloud_type cloud; + uint32_t polygons_length; + typedef pcl_msgs::Vertices _polygons_type; + _polygons_type st_polygons; + _polygons_type * polygons; + + PolygonMesh(): + header(), + cloud(), + polygons_length(0), polygons(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->cloud.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->polygons_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->polygons_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->polygons_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->polygons_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->polygons_length); + for( uint32_t i = 0; i < polygons_length; i++){ + offset += this->polygons[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->cloud.deserialize(inbuffer + offset); + uint32_t polygons_lengthT = ((uint32_t) (*(inbuffer + offset))); + polygons_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + polygons_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + polygons_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->polygons_length); + if(polygons_lengthT > polygons_length) + this->polygons = (pcl_msgs::Vertices*)realloc(this->polygons, polygons_lengthT * sizeof(pcl_msgs::Vertices)); + polygons_length = polygons_lengthT; + for( uint32_t i = 0; i < polygons_length; i++){ + offset += this->st_polygons.deserialize(inbuffer + offset); + memcpy( &(this->polygons[i]), &(this->st_polygons), sizeof(pcl_msgs::Vertices)); + } + return offset; + } + + const char * getType(){ return "pcl_msgs/PolygonMesh"; }; + const char * getMD5(){ return "45a5fc6ad2cde8489600a790acc9a38a"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/pcl_msgs/Vertices.h b/source/ros-max-lib/ros_lib/pcl_msgs/Vertices.h new file mode 100644 index 0000000..55a6704 --- /dev/null +++ b/source/ros-max-lib/ros_lib/pcl_msgs/Vertices.h @@ -0,0 +1,71 @@ +#ifndef _ROS_pcl_msgs_Vertices_h +#define _ROS_pcl_msgs_Vertices_h + +#include +#include +#include +#include "ros/msg.h" + +namespace pcl_msgs +{ + + class Vertices : public ros::Msg + { + public: + uint32_t vertices_length; + typedef uint32_t _vertices_type; + _vertices_type st_vertices; + _vertices_type * vertices; + + Vertices(): + vertices_length(0), vertices(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->vertices_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->vertices_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->vertices_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->vertices_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->vertices_length); + for( uint32_t i = 0; i < vertices_length; i++){ + *(outbuffer + offset + 0) = (this->vertices[i] >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->vertices[i] >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->vertices[i] >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->vertices[i] >> (8 * 3)) & 0xFF; + offset += sizeof(this->vertices[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t vertices_lengthT = ((uint32_t) (*(inbuffer + offset))); + vertices_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + vertices_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + vertices_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->vertices_length); + if(vertices_lengthT > vertices_length) + this->vertices = (uint32_t*)realloc(this->vertices, vertices_lengthT * sizeof(uint32_t)); + vertices_length = vertices_lengthT; + for( uint32_t i = 0; i < vertices_length; i++){ + this->st_vertices = ((uint32_t) (*(inbuffer + offset))); + this->st_vertices |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->st_vertices |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->st_vertices |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->st_vertices); + memcpy( &(this->vertices[i]), &(this->st_vertices), sizeof(uint32_t)); + } + return offset; + } + + const char * getType(){ return "pcl_msgs/Vertices"; }; + const char * getMD5(){ return "39bd7b1c23763ddd1b882b97cb7cfe11"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/polled_camera/GetPolledImage.h b/source/ros-max-lib/ros_lib/polled_camera/GetPolledImage.h new file mode 100644 index 0000000..b062405 --- /dev/null +++ b/source/ros-max-lib/ros_lib/polled_camera/GetPolledImage.h @@ -0,0 +1,202 @@ +#ifndef _ROS_SERVICE_GetPolledImage_h +#define _ROS_SERVICE_GetPolledImage_h +#include +#include +#include +#include "ros/msg.h" +#include "sensor_msgs/RegionOfInterest.h" +#include "ros/duration.h" +#include "ros/time.h" + +namespace polled_camera +{ + +static const char GETPOLLEDIMAGE[] = "polled_camera/GetPolledImage"; + + class GetPolledImageRequest : public ros::Msg + { + public: + typedef const char* _response_namespace_type; + _response_namespace_type response_namespace; + typedef ros::Duration _timeout_type; + _timeout_type timeout; + typedef uint32_t _binning_x_type; + _binning_x_type binning_x; + typedef uint32_t _binning_y_type; + _binning_y_type binning_y; + typedef sensor_msgs::RegionOfInterest _roi_type; + _roi_type roi; + + GetPolledImageRequest(): + response_namespace(""), + timeout(), + binning_x(0), + binning_y(0), + roi() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_response_namespace = strlen(this->response_namespace); + varToArr(outbuffer + offset, length_response_namespace); + offset += 4; + memcpy(outbuffer + offset, this->response_namespace, length_response_namespace); + offset += length_response_namespace; + *(outbuffer + offset + 0) = (this->timeout.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->timeout.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->timeout.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->timeout.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->timeout.sec); + *(outbuffer + offset + 0) = (this->timeout.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->timeout.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->timeout.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->timeout.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->timeout.nsec); + *(outbuffer + offset + 0) = (this->binning_x >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->binning_x >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->binning_x >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->binning_x >> (8 * 3)) & 0xFF; + offset += sizeof(this->binning_x); + *(outbuffer + offset + 0) = (this->binning_y >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->binning_y >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->binning_y >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->binning_y >> (8 * 3)) & 0xFF; + offset += sizeof(this->binning_y); + offset += this->roi.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_response_namespace; + arrToVar(length_response_namespace, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_response_namespace; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_response_namespace-1]=0; + this->response_namespace = (char *)(inbuffer + offset-1); + offset += length_response_namespace; + this->timeout.sec = ((uint32_t) (*(inbuffer + offset))); + this->timeout.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->timeout.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->timeout.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->timeout.sec); + this->timeout.nsec = ((uint32_t) (*(inbuffer + offset))); + this->timeout.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->timeout.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->timeout.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->timeout.nsec); + this->binning_x = ((uint32_t) (*(inbuffer + offset))); + this->binning_x |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->binning_x |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->binning_x |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->binning_x); + this->binning_y = ((uint32_t) (*(inbuffer + offset))); + this->binning_y |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->binning_y |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->binning_y |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->binning_y); + offset += this->roi.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return GETPOLLEDIMAGE; }; + const char * getMD5(){ return "c77ed43e530fd48e9e7a2a93845e154c"; }; + + }; + + class GetPolledImageResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + typedef ros::Time _stamp_type; + _stamp_type stamp; + + GetPolledImageResponse(): + success(0), + status_message(""), + stamp() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + *(outbuffer + offset + 0) = (this->stamp.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp.sec); + *(outbuffer + offset + 0) = (this->stamp.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + this->stamp.sec = ((uint32_t) (*(inbuffer + offset))); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp.sec); + this->stamp.nsec = ((uint32_t) (*(inbuffer + offset))); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp.nsec); + return offset; + } + + const char * getType(){ return GETPOLLEDIMAGE; }; + const char * getMD5(){ return "dbf1f851bc511800e6129ccd5a3542ab"; }; + + }; + + class GetPolledImage { + public: + typedef GetPolledImageRequest Request; + typedef GetPolledImageResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/py_trees_msgs/Behaviour.h b/source/ros-max-lib/ros_lib/py_trees_msgs/Behaviour.h new file mode 100644 index 0000000..04c5d8a --- /dev/null +++ b/source/ros-max-lib/ros_lib/py_trees_msgs/Behaviour.h @@ -0,0 +1,183 @@ +#ifndef _ROS_py_trees_msgs_Behaviour_h +#define _ROS_py_trees_msgs_Behaviour_h + +#include +#include +#include +#include "ros/msg.h" +#include "uuid_msgs/UniqueID.h" + +namespace py_trees_msgs +{ + + class Behaviour : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef const char* _class_name_type; + _class_name_type class_name; + typedef uuid_msgs::UniqueID _own_id_type; + _own_id_type own_id; + typedef uuid_msgs::UniqueID _parent_id_type; + _parent_id_type parent_id; + typedef uuid_msgs::UniqueID _tip_id_type; + _tip_id_type tip_id; + uint32_t child_ids_length; + typedef uuid_msgs::UniqueID _child_ids_type; + _child_ids_type st_child_ids; + _child_ids_type * child_ids; + typedef uint8_t _type_type; + _type_type type; + typedef uint8_t _blackbox_level_type; + _blackbox_level_type blackbox_level; + typedef uint8_t _status_type; + _status_type status; + typedef const char* _message_type; + _message_type message; + typedef bool _is_active_type; + _is_active_type is_active; + enum { INVALID = 1 }; + enum { RUNNING = 2 }; + enum { SUCCESS = 3 }; + enum { FAILURE = 4 }; + enum { UNKNOWN_TYPE = 0 }; + enum { BEHAVIOUR = 1 }; + enum { SEQUENCE = 2 }; + enum { SELECTOR = 3 }; + enum { PARALLEL = 4 }; + enum { CHOOSER = 5 }; + enum { BLACKBOX_LEVEL_DETAIL = 1 }; + enum { BLACKBOX_LEVEL_COMPONENT = 2 }; + enum { BLACKBOX_LEVEL_BIG_PICTURE = 3 }; + enum { BLACKBOX_LEVEL_NOT_A_BLACKBOX = 4 }; + + Behaviour(): + name(""), + class_name(""), + own_id(), + parent_id(), + tip_id(), + child_ids_length(0), child_ids(NULL), + type(0), + blackbox_level(0), + status(0), + message(""), + is_active(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + uint32_t length_class_name = strlen(this->class_name); + varToArr(outbuffer + offset, length_class_name); + offset += 4; + memcpy(outbuffer + offset, this->class_name, length_class_name); + offset += length_class_name; + offset += this->own_id.serialize(outbuffer + offset); + offset += this->parent_id.serialize(outbuffer + offset); + offset += this->tip_id.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->child_ids_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->child_ids_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->child_ids_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->child_ids_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->child_ids_length); + for( uint32_t i = 0; i < child_ids_length; i++){ + offset += this->child_ids[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->type >> (8 * 0)) & 0xFF; + offset += sizeof(this->type); + *(outbuffer + offset + 0) = (this->blackbox_level >> (8 * 0)) & 0xFF; + offset += sizeof(this->blackbox_level); + *(outbuffer + offset + 0) = (this->status >> (8 * 0)) & 0xFF; + offset += sizeof(this->status); + uint32_t length_message = strlen(this->message); + varToArr(outbuffer + offset, length_message); + offset += 4; + memcpy(outbuffer + offset, this->message, length_message); + offset += length_message; + union { + bool real; + uint8_t base; + } u_is_active; + u_is_active.real = this->is_active; + *(outbuffer + offset + 0) = (u_is_active.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->is_active); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + uint32_t length_class_name; + arrToVar(length_class_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_class_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_class_name-1]=0; + this->class_name = (char *)(inbuffer + offset-1); + offset += length_class_name; + offset += this->own_id.deserialize(inbuffer + offset); + offset += this->parent_id.deserialize(inbuffer + offset); + offset += this->tip_id.deserialize(inbuffer + offset); + uint32_t child_ids_lengthT = ((uint32_t) (*(inbuffer + offset))); + child_ids_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + child_ids_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + child_ids_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->child_ids_length); + if(child_ids_lengthT > child_ids_length) + this->child_ids = (uuid_msgs::UniqueID*)realloc(this->child_ids, child_ids_lengthT * sizeof(uuid_msgs::UniqueID)); + child_ids_length = child_ids_lengthT; + for( uint32_t i = 0; i < child_ids_length; i++){ + offset += this->st_child_ids.deserialize(inbuffer + offset); + memcpy( &(this->child_ids[i]), &(this->st_child_ids), sizeof(uuid_msgs::UniqueID)); + } + this->type = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->type); + this->blackbox_level = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->blackbox_level); + this->status = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->status); + uint32_t length_message; + arrToVar(length_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_message-1]=0; + this->message = (char *)(inbuffer + offset-1); + offset += length_message; + union { + bool real; + uint8_t base; + } u_is_active; + u_is_active.base = 0; + u_is_active.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->is_active = u_is_active.real; + offset += sizeof(this->is_active); + return offset; + } + + const char * getType(){ return "py_trees_msgs/Behaviour"; }; + const char * getMD5(){ return "88ddda148fc81f5dc402f56e3e333222"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/py_trees_msgs/BehaviourTree.h b/source/ros-max-lib/ros_lib/py_trees_msgs/BehaviourTree.h new file mode 100644 index 0000000..33bfd19 --- /dev/null +++ b/source/ros-max-lib/ros_lib/py_trees_msgs/BehaviourTree.h @@ -0,0 +1,70 @@ +#ifndef _ROS_py_trees_msgs_BehaviourTree_h +#define _ROS_py_trees_msgs_BehaviourTree_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "py_trees_msgs/Behaviour.h" + +namespace py_trees_msgs +{ + + class BehaviourTree : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t behaviours_length; + typedef py_trees_msgs::Behaviour _behaviours_type; + _behaviours_type st_behaviours; + _behaviours_type * behaviours; + + BehaviourTree(): + header(), + behaviours_length(0), behaviours(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->behaviours_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->behaviours_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->behaviours_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->behaviours_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->behaviours_length); + for( uint32_t i = 0; i < behaviours_length; i++){ + offset += this->behaviours[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t behaviours_lengthT = ((uint32_t) (*(inbuffer + offset))); + behaviours_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + behaviours_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + behaviours_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->behaviours_length); + if(behaviours_lengthT > behaviours_length) + this->behaviours = (py_trees_msgs::Behaviour*)realloc(this->behaviours, behaviours_lengthT * sizeof(py_trees_msgs::Behaviour)); + behaviours_length = behaviours_lengthT; + for( uint32_t i = 0; i < behaviours_length; i++){ + offset += this->st_behaviours.deserialize(inbuffer + offset); + memcpy( &(this->behaviours[i]), &(this->st_behaviours), sizeof(py_trees_msgs::Behaviour)); + } + return offset; + } + + const char * getType(){ return "py_trees_msgs/BehaviourTree"; }; + const char * getMD5(){ return "239023f5538cba34a10a3a5cd6610fa0"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/py_trees_msgs/CloseBlackboardWatcher.h b/source/ros-max-lib/ros_lib/py_trees_msgs/CloseBlackboardWatcher.h new file mode 100644 index 0000000..5c6d392 --- /dev/null +++ b/source/ros-max-lib/ros_lib/py_trees_msgs/CloseBlackboardWatcher.h @@ -0,0 +1,105 @@ +#ifndef _ROS_SERVICE_CloseBlackboardWatcher_h +#define _ROS_SERVICE_CloseBlackboardWatcher_h +#include +#include +#include +#include "ros/msg.h" + +namespace py_trees_msgs +{ + +static const char CLOSEBLACKBOARDWATCHER[] = "py_trees_msgs/CloseBlackboardWatcher"; + + class CloseBlackboardWatcherRequest : public ros::Msg + { + public: + typedef const char* _topic_name_type; + _topic_name_type topic_name; + + CloseBlackboardWatcherRequest(): + topic_name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_topic_name = strlen(this->topic_name); + varToArr(outbuffer + offset, length_topic_name); + offset += 4; + memcpy(outbuffer + offset, this->topic_name, length_topic_name); + offset += length_topic_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_topic_name; + arrToVar(length_topic_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_topic_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_topic_name-1]=0; + this->topic_name = (char *)(inbuffer + offset-1); + offset += length_topic_name; + return offset; + } + + const char * getType(){ return CLOSEBLACKBOARDWATCHER; }; + const char * getMD5(){ return "b38cc2f19f45368c2db7867751ce95a9"; }; + + }; + + class CloseBlackboardWatcherResponse : public ros::Msg + { + public: + typedef bool _result_type; + _result_type result; + + CloseBlackboardWatcherResponse(): + result(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_result; + u_result.real = this->result; + *(outbuffer + offset + 0) = (u_result.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->result); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_result; + u_result.base = 0; + u_result.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->result = u_result.real; + offset += sizeof(this->result); + return offset; + } + + const char * getType(){ return CLOSEBLACKBOARDWATCHER; }; + const char * getMD5(){ return "eb13ac1f1354ccecb7941ee8fa2192e8"; }; + + }; + + class CloseBlackboardWatcher { + public: + typedef CloseBlackboardWatcherRequest Request; + typedef CloseBlackboardWatcherResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/py_trees_msgs/DockAction.h b/source/ros-max-lib/ros_lib/py_trees_msgs/DockAction.h new file mode 100644 index 0000000..d9945d0 --- /dev/null +++ b/source/ros-max-lib/ros_lib/py_trees_msgs/DockAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_py_trees_msgs_DockAction_h +#define _ROS_py_trees_msgs_DockAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "py_trees_msgs/DockActionGoal.h" +#include "py_trees_msgs/DockActionResult.h" +#include "py_trees_msgs/DockActionFeedback.h" + +namespace py_trees_msgs +{ + + class DockAction : public ros::Msg + { + public: + typedef py_trees_msgs::DockActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef py_trees_msgs::DockActionResult _action_result_type; + _action_result_type action_result; + typedef py_trees_msgs::DockActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + DockAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "py_trees_msgs/DockAction"; }; + const char * getMD5(){ return "1487f2ccdee1636e3fa5ee088040ee3a"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/py_trees_msgs/DockActionFeedback.h b/source/ros-max-lib/ros_lib/py_trees_msgs/DockActionFeedback.h new file mode 100644 index 0000000..f485e2b --- /dev/null +++ b/source/ros-max-lib/ros_lib/py_trees_msgs/DockActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_py_trees_msgs_DockActionFeedback_h +#define _ROS_py_trees_msgs_DockActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "py_trees_msgs/DockFeedback.h" + +namespace py_trees_msgs +{ + + class DockActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef py_trees_msgs::DockFeedback _feedback_type; + _feedback_type feedback; + + DockActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "py_trees_msgs/DockActionFeedback"; }; + const char * getMD5(){ return "2ff213e56f8a13eff9119a87d46f6e06"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/py_trees_msgs/DockActionGoal.h b/source/ros-max-lib/ros_lib/py_trees_msgs/DockActionGoal.h new file mode 100644 index 0000000..e900929 --- /dev/null +++ b/source/ros-max-lib/ros_lib/py_trees_msgs/DockActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_py_trees_msgs_DockActionGoal_h +#define _ROS_py_trees_msgs_DockActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "py_trees_msgs/DockGoal.h" + +namespace py_trees_msgs +{ + + class DockActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef py_trees_msgs::DockGoal _goal_type; + _goal_type goal; + + DockActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "py_trees_msgs/DockActionGoal"; }; + const char * getMD5(){ return "792a8f48465c33ddc8270c5f2a92be76"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/py_trees_msgs/DockActionResult.h b/source/ros-max-lib/ros_lib/py_trees_msgs/DockActionResult.h new file mode 100644 index 0000000..622b666 --- /dev/null +++ b/source/ros-max-lib/ros_lib/py_trees_msgs/DockActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_py_trees_msgs_DockActionResult_h +#define _ROS_py_trees_msgs_DockActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "py_trees_msgs/DockResult.h" + +namespace py_trees_msgs +{ + + class DockActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef py_trees_msgs::DockResult _result_type; + _result_type result; + + DockActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "py_trees_msgs/DockActionResult"; }; + const char * getMD5(){ return "4eda63f75c02197dafd2a62a0d413ab0"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/py_trees_msgs/DockFeedback.h b/source/ros-max-lib/ros_lib/py_trees_msgs/DockFeedback.h new file mode 100644 index 0000000..8f6e2a1 --- /dev/null +++ b/source/ros-max-lib/ros_lib/py_trees_msgs/DockFeedback.h @@ -0,0 +1,62 @@ +#ifndef _ROS_py_trees_msgs_DockFeedback_h +#define _ROS_py_trees_msgs_DockFeedback_h + +#include +#include +#include +#include "ros/msg.h" + +namespace py_trees_msgs +{ + + class DockFeedback : public ros::Msg + { + public: + typedef float _percentage_completed_type; + _percentage_completed_type percentage_completed; + + DockFeedback(): + percentage_completed(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + float real; + uint32_t base; + } u_percentage_completed; + u_percentage_completed.real = this->percentage_completed; + *(outbuffer + offset + 0) = (u_percentage_completed.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_percentage_completed.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_percentage_completed.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_percentage_completed.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->percentage_completed); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + float real; + uint32_t base; + } u_percentage_completed; + u_percentage_completed.base = 0; + u_percentage_completed.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_percentage_completed.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_percentage_completed.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_percentage_completed.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->percentage_completed = u_percentage_completed.real; + offset += sizeof(this->percentage_completed); + return offset; + } + + const char * getType(){ return "py_trees_msgs/DockFeedback"; }; + const char * getMD5(){ return "26e2c7154b190781742892deccb6c8f0"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/py_trees_msgs/DockGoal.h b/source/ros-max-lib/ros_lib/py_trees_msgs/DockGoal.h new file mode 100644 index 0000000..ac04af8 --- /dev/null +++ b/source/ros-max-lib/ros_lib/py_trees_msgs/DockGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_py_trees_msgs_DockGoal_h +#define _ROS_py_trees_msgs_DockGoal_h + +#include +#include +#include +#include "ros/msg.h" + +namespace py_trees_msgs +{ + + class DockGoal : public ros::Msg + { + public: + typedef bool _dock_type; + _dock_type dock; + + DockGoal(): + dock(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_dock; + u_dock.real = this->dock; + *(outbuffer + offset + 0) = (u_dock.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->dock); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_dock; + u_dock.base = 0; + u_dock.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->dock = u_dock.real; + offset += sizeof(this->dock); + return offset; + } + + const char * getType(){ return "py_trees_msgs/DockGoal"; }; + const char * getMD5(){ return "035360b0bb03f7f742a0b2d734a3a660"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/py_trees_msgs/DockResult.h b/source/ros-max-lib/ros_lib/py_trees_msgs/DockResult.h new file mode 100644 index 0000000..685ba13 --- /dev/null +++ b/source/ros-max-lib/ros_lib/py_trees_msgs/DockResult.h @@ -0,0 +1,75 @@ +#ifndef _ROS_py_trees_msgs_DockResult_h +#define _ROS_py_trees_msgs_DockResult_h + +#include +#include +#include +#include "ros/msg.h" + +namespace py_trees_msgs +{ + + class DockResult : public ros::Msg + { + public: + typedef int8_t _value_type; + _value_type value; + typedef const char* _message_type; + _message_type message; + enum { SUCCESS = 0 }; + enum { ERROR = 1 }; + + DockResult(): + value(0), + message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int8_t real; + uint8_t base; + } u_value; + u_value.real = this->value; + *(outbuffer + offset + 0) = (u_value.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->value); + uint32_t length_message = strlen(this->message); + varToArr(outbuffer + offset, length_message); + offset += 4; + memcpy(outbuffer + offset, this->message, length_message); + offset += length_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int8_t real; + uint8_t base; + } u_value; + u_value.base = 0; + u_value.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->value = u_value.real; + offset += sizeof(this->value); + uint32_t length_message; + arrToVar(length_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_message-1]=0; + this->message = (char *)(inbuffer + offset-1); + offset += length_message; + return offset; + } + + const char * getType(){ return "py_trees_msgs/DockResult"; }; + const char * getMD5(){ return "7e3448b3518ac363f90f534593733372"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/py_trees_msgs/GetBlackboardVariables.h b/source/ros-max-lib/ros_lib/py_trees_msgs/GetBlackboardVariables.h new file mode 100644 index 0000000..cd90747 --- /dev/null +++ b/source/ros-max-lib/ros_lib/py_trees_msgs/GetBlackboardVariables.h @@ -0,0 +1,107 @@ +#ifndef _ROS_SERVICE_GetBlackboardVariables_h +#define _ROS_SERVICE_GetBlackboardVariables_h +#include +#include +#include +#include "ros/msg.h" + +namespace py_trees_msgs +{ + +static const char GETBLACKBOARDVARIABLES[] = "py_trees_msgs/GetBlackboardVariables"; + + class GetBlackboardVariablesRequest : public ros::Msg + { + public: + + GetBlackboardVariablesRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return GETBLACKBOARDVARIABLES; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class GetBlackboardVariablesResponse : public ros::Msg + { + public: + uint32_t variables_length; + typedef char* _variables_type; + _variables_type st_variables; + _variables_type * variables; + + GetBlackboardVariablesResponse(): + variables_length(0), variables(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->variables_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->variables_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->variables_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->variables_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->variables_length); + for( uint32_t i = 0; i < variables_length; i++){ + uint32_t length_variablesi = strlen(this->variables[i]); + varToArr(outbuffer + offset, length_variablesi); + offset += 4; + memcpy(outbuffer + offset, this->variables[i], length_variablesi); + offset += length_variablesi; + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t variables_lengthT = ((uint32_t) (*(inbuffer + offset))); + variables_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + variables_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + variables_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->variables_length); + if(variables_lengthT > variables_length) + this->variables = (char**)realloc(this->variables, variables_lengthT * sizeof(char*)); + variables_length = variables_lengthT; + for( uint32_t i = 0; i < variables_length; i++){ + uint32_t length_st_variables; + arrToVar(length_st_variables, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_variables; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_variables-1]=0; + this->st_variables = (char *)(inbuffer + offset-1); + offset += length_st_variables; + memcpy( &(this->variables[i]), &(this->st_variables), sizeof(char*)); + } + return offset; + } + + const char * getType(){ return GETBLACKBOARDVARIABLES; }; + const char * getMD5(){ return "8f184382c36d538fab610317191b119e"; }; + + }; + + class GetBlackboardVariables { + public: + typedef GetBlackboardVariablesRequest Request; + typedef GetBlackboardVariablesResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/py_trees_msgs/OpenBlackboardWatcher.h b/source/ros-max-lib/ros_lib/py_trees_msgs/OpenBlackboardWatcher.h new file mode 100644 index 0000000..e4fb763 --- /dev/null +++ b/source/ros-max-lib/ros_lib/py_trees_msgs/OpenBlackboardWatcher.h @@ -0,0 +1,124 @@ +#ifndef _ROS_SERVICE_OpenBlackboardWatcher_h +#define _ROS_SERVICE_OpenBlackboardWatcher_h +#include +#include +#include +#include "ros/msg.h" + +namespace py_trees_msgs +{ + +static const char OPENBLACKBOARDWATCHER[] = "py_trees_msgs/OpenBlackboardWatcher"; + + class OpenBlackboardWatcherRequest : public ros::Msg + { + public: + uint32_t variables_length; + typedef char* _variables_type; + _variables_type st_variables; + _variables_type * variables; + + OpenBlackboardWatcherRequest(): + variables_length(0), variables(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->variables_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->variables_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->variables_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->variables_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->variables_length); + for( uint32_t i = 0; i < variables_length; i++){ + uint32_t length_variablesi = strlen(this->variables[i]); + varToArr(outbuffer + offset, length_variablesi); + offset += 4; + memcpy(outbuffer + offset, this->variables[i], length_variablesi); + offset += length_variablesi; + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t variables_lengthT = ((uint32_t) (*(inbuffer + offset))); + variables_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + variables_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + variables_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->variables_length); + if(variables_lengthT > variables_length) + this->variables = (char**)realloc(this->variables, variables_lengthT * sizeof(char*)); + variables_length = variables_lengthT; + for( uint32_t i = 0; i < variables_length; i++){ + uint32_t length_st_variables; + arrToVar(length_st_variables, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_variables; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_variables-1]=0; + this->st_variables = (char *)(inbuffer + offset-1); + offset += length_st_variables; + memcpy( &(this->variables[i]), &(this->st_variables), sizeof(char*)); + } + return offset; + } + + const char * getType(){ return OPENBLACKBOARDWATCHER; }; + const char * getMD5(){ return "8f184382c36d538fab610317191b119e"; }; + + }; + + class OpenBlackboardWatcherResponse : public ros::Msg + { + public: + typedef const char* _topic_type; + _topic_type topic; + + OpenBlackboardWatcherResponse(): + topic("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_topic = strlen(this->topic); + varToArr(outbuffer + offset, length_topic); + offset += 4; + memcpy(outbuffer + offset, this->topic, length_topic); + offset += length_topic; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_topic; + arrToVar(length_topic, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_topic; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_topic-1]=0; + this->topic = (char *)(inbuffer + offset-1); + offset += length_topic; + return offset; + } + + const char * getType(){ return OPENBLACKBOARDWATCHER; }; + const char * getMD5(){ return "d8f94bae31b356b24d0427f80426d0c3"; }; + + }; + + class OpenBlackboardWatcher { + public: + typedef OpenBlackboardWatcherRequest Request; + typedef OpenBlackboardWatcherResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/py_trees_msgs/RotateAction.h b/source/ros-max-lib/ros_lib/py_trees_msgs/RotateAction.h new file mode 100644 index 0000000..dda6c2f --- /dev/null +++ b/source/ros-max-lib/ros_lib/py_trees_msgs/RotateAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_py_trees_msgs_RotateAction_h +#define _ROS_py_trees_msgs_RotateAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "py_trees_msgs/RotateActionGoal.h" +#include "py_trees_msgs/RotateActionResult.h" +#include "py_trees_msgs/RotateActionFeedback.h" + +namespace py_trees_msgs +{ + + class RotateAction : public ros::Msg + { + public: + typedef py_trees_msgs::RotateActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef py_trees_msgs::RotateActionResult _action_result_type; + _action_result_type action_result; + typedef py_trees_msgs::RotateActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + RotateAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "py_trees_msgs/RotateAction"; }; + const char * getMD5(){ return "c68d9e0a719660a32868a081a56942db"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/py_trees_msgs/RotateActionFeedback.h b/source/ros-max-lib/ros_lib/py_trees_msgs/RotateActionFeedback.h new file mode 100644 index 0000000..e1a7f5b --- /dev/null +++ b/source/ros-max-lib/ros_lib/py_trees_msgs/RotateActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_py_trees_msgs_RotateActionFeedback_h +#define _ROS_py_trees_msgs_RotateActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "py_trees_msgs/RotateFeedback.h" + +namespace py_trees_msgs +{ + + class RotateActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef py_trees_msgs::RotateFeedback _feedback_type; + _feedback_type feedback; + + RotateActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "py_trees_msgs/RotateActionFeedback"; }; + const char * getMD5(){ return "344ed0daa120e01d5801edcb980cf618"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/py_trees_msgs/RotateActionGoal.h b/source/ros-max-lib/ros_lib/py_trees_msgs/RotateActionGoal.h new file mode 100644 index 0000000..1afb37b --- /dev/null +++ b/source/ros-max-lib/ros_lib/py_trees_msgs/RotateActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_py_trees_msgs_RotateActionGoal_h +#define _ROS_py_trees_msgs_RotateActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "py_trees_msgs/RotateGoal.h" + +namespace py_trees_msgs +{ + + class RotateActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef py_trees_msgs::RotateGoal _goal_type; + _goal_type goal; + + RotateActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "py_trees_msgs/RotateActionGoal"; }; + const char * getMD5(){ return "4b30be6cd12b9e72826df56b481f40e0"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/py_trees_msgs/RotateActionResult.h b/source/ros-max-lib/ros_lib/py_trees_msgs/RotateActionResult.h new file mode 100644 index 0000000..7291431 --- /dev/null +++ b/source/ros-max-lib/ros_lib/py_trees_msgs/RotateActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_py_trees_msgs_RotateActionResult_h +#define _ROS_py_trees_msgs_RotateActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "py_trees_msgs/RotateResult.h" + +namespace py_trees_msgs +{ + + class RotateActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef py_trees_msgs::RotateResult _result_type; + _result_type result; + + RotateActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "py_trees_msgs/RotateActionResult"; }; + const char * getMD5(){ return "4eda63f75c02197dafd2a62a0d413ab0"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/py_trees_msgs/RotateFeedback.h b/source/ros-max-lib/ros_lib/py_trees_msgs/RotateFeedback.h new file mode 100644 index 0000000..52aa269 --- /dev/null +++ b/source/ros-max-lib/ros_lib/py_trees_msgs/RotateFeedback.h @@ -0,0 +1,86 @@ +#ifndef _ROS_py_trees_msgs_RotateFeedback_h +#define _ROS_py_trees_msgs_RotateFeedback_h + +#include +#include +#include +#include "ros/msg.h" + +namespace py_trees_msgs +{ + + class RotateFeedback : public ros::Msg + { + public: + typedef float _percentage_completed_type; + _percentage_completed_type percentage_completed; + typedef float _angle_rotated_type; + _angle_rotated_type angle_rotated; + + RotateFeedback(): + percentage_completed(0), + angle_rotated(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + float real; + uint32_t base; + } u_percentage_completed; + u_percentage_completed.real = this->percentage_completed; + *(outbuffer + offset + 0) = (u_percentage_completed.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_percentage_completed.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_percentage_completed.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_percentage_completed.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->percentage_completed); + union { + float real; + uint32_t base; + } u_angle_rotated; + u_angle_rotated.real = this->angle_rotated; + *(outbuffer + offset + 0) = (u_angle_rotated.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_angle_rotated.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_angle_rotated.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_angle_rotated.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->angle_rotated); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + float real; + uint32_t base; + } u_percentage_completed; + u_percentage_completed.base = 0; + u_percentage_completed.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_percentage_completed.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_percentage_completed.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_percentage_completed.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->percentage_completed = u_percentage_completed.real; + offset += sizeof(this->percentage_completed); + union { + float real; + uint32_t base; + } u_angle_rotated; + u_angle_rotated.base = 0; + u_angle_rotated.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_angle_rotated.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_angle_rotated.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_angle_rotated.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->angle_rotated = u_angle_rotated.real; + offset += sizeof(this->angle_rotated); + return offset; + } + + const char * getType(){ return "py_trees_msgs/RotateFeedback"; }; + const char * getMD5(){ return "f1088922e17b4a9f4319356ac8d99645"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/py_trees_msgs/RotateGoal.h b/source/ros-max-lib/ros_lib/py_trees_msgs/RotateGoal.h new file mode 100644 index 0000000..4d196ed --- /dev/null +++ b/source/ros-max-lib/ros_lib/py_trees_msgs/RotateGoal.h @@ -0,0 +1,38 @@ +#ifndef _ROS_py_trees_msgs_RotateGoal_h +#define _ROS_py_trees_msgs_RotateGoal_h + +#include +#include +#include +#include "ros/msg.h" + +namespace py_trees_msgs +{ + + class RotateGoal : public ros::Msg + { + public: + + RotateGoal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "py_trees_msgs/RotateGoal"; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/py_trees_msgs/RotateResult.h b/source/ros-max-lib/ros_lib/py_trees_msgs/RotateResult.h new file mode 100644 index 0000000..d84dc61 --- /dev/null +++ b/source/ros-max-lib/ros_lib/py_trees_msgs/RotateResult.h @@ -0,0 +1,75 @@ +#ifndef _ROS_py_trees_msgs_RotateResult_h +#define _ROS_py_trees_msgs_RotateResult_h + +#include +#include +#include +#include "ros/msg.h" + +namespace py_trees_msgs +{ + + class RotateResult : public ros::Msg + { + public: + typedef int8_t _value_type; + _value_type value; + typedef const char* _message_type; + _message_type message; + enum { SUCCESS = 0 }; + enum { ERROR = 1 }; + + RotateResult(): + value(0), + message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int8_t real; + uint8_t base; + } u_value; + u_value.real = this->value; + *(outbuffer + offset + 0) = (u_value.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->value); + uint32_t length_message = strlen(this->message); + varToArr(outbuffer + offset, length_message); + offset += 4; + memcpy(outbuffer + offset, this->message, length_message); + offset += length_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int8_t real; + uint8_t base; + } u_value; + u_value.base = 0; + u_value.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->value = u_value.real; + offset += sizeof(this->value); + uint32_t length_message; + arrToVar(length_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_message-1]=0; + this->message = (char *)(inbuffer + offset-1); + offset += length_message; + return offset; + } + + const char * getType(){ return "py_trees_msgs/RotateResult"; }; + const char * getMD5(){ return "7e3448b3518ac363f90f534593733372"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/robot_pose_ekf/GetStatus.h b/source/ros-max-lib/ros_lib/robot_pose_ekf/GetStatus.h new file mode 100644 index 0000000..155cde3 --- /dev/null +++ b/source/ros-max-lib/ros_lib/robot_pose_ekf/GetStatus.h @@ -0,0 +1,87 @@ +#ifndef _ROS_SERVICE_GetStatus_h +#define _ROS_SERVICE_GetStatus_h +#include +#include +#include +#include "ros/msg.h" + +namespace robot_pose_ekf +{ + +static const char GETSTATUS[] = "robot_pose_ekf/GetStatus"; + + class GetStatusRequest : public ros::Msg + { + public: + + GetStatusRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return GETSTATUS; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class GetStatusResponse : public ros::Msg + { + public: + typedef const char* _status_type; + _status_type status; + + GetStatusResponse(): + status("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_status = strlen(this->status); + varToArr(outbuffer + offset, length_status); + offset += 4; + memcpy(outbuffer + offset, this->status, length_status); + offset += length_status; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_status; + arrToVar(length_status, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status-1]=0; + this->status = (char *)(inbuffer + offset-1); + offset += length_status; + return offset; + } + + const char * getType(){ return GETSTATUS; }; + const char * getMD5(){ return "4fe5af303955c287688e7347e9b00278"; }; + + }; + + class GetStatus { + public: + typedef GetStatusRequest Request; + typedef GetStatusResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/rocon_service_pair_msgs/TestiesPair.h b/source/ros-max-lib/ros_lib/rocon_service_pair_msgs/TestiesPair.h new file mode 100644 index 0000000..4ea6cfd --- /dev/null +++ b/source/ros-max-lib/ros_lib/rocon_service_pair_msgs/TestiesPair.h @@ -0,0 +1,50 @@ +#ifndef _ROS_rocon_service_pair_msgs_TestiesPair_h +#define _ROS_rocon_service_pair_msgs_TestiesPair_h + +#include +#include +#include +#include "ros/msg.h" +#include "rocon_service_pair_msgs/TestiesPairRequest.h" +#include "rocon_service_pair_msgs/TestiesPairResponse.h" + +namespace rocon_service_pair_msgs +{ + + class TestiesPair : public ros::Msg + { + public: + typedef rocon_service_pair_msgs::TestiesPairRequest _pair_request_type; + _pair_request_type pair_request; + typedef rocon_service_pair_msgs::TestiesPairResponse _pair_response_type; + _pair_response_type pair_response; + + TestiesPair(): + pair_request(), + pair_response() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->pair_request.serialize(outbuffer + offset); + offset += this->pair_response.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->pair_request.deserialize(inbuffer + offset); + offset += this->pair_response.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "rocon_service_pair_msgs/TestiesPair"; }; + const char * getMD5(){ return "7b5cb9b4ccdb74840ce04ea92d2a141d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/rocon_service_pair_msgs/TestiesPairRequest.h b/source/ros-max-lib/ros_lib/rocon_service_pair_msgs/TestiesPairRequest.h new file mode 100644 index 0000000..8da52e4 --- /dev/null +++ b/source/ros-max-lib/ros_lib/rocon_service_pair_msgs/TestiesPairRequest.h @@ -0,0 +1,50 @@ +#ifndef _ROS_rocon_service_pair_msgs_TestiesPairRequest_h +#define _ROS_rocon_service_pair_msgs_TestiesPairRequest_h + +#include +#include +#include +#include "ros/msg.h" +#include "uuid_msgs/UniqueID.h" +#include "rocon_service_pair_msgs/TestiesRequest.h" + +namespace rocon_service_pair_msgs +{ + + class TestiesPairRequest : public ros::Msg + { + public: + typedef uuid_msgs::UniqueID _id_type; + _id_type id; + typedef rocon_service_pair_msgs::TestiesRequest _request_type; + _request_type request; + + TestiesPairRequest(): + id(), + request() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->id.serialize(outbuffer + offset); + offset += this->request.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->id.deserialize(inbuffer + offset); + offset += this->request.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "rocon_service_pair_msgs/TestiesPairRequest"; }; + const char * getMD5(){ return "71ec95e384ce52aa32491f3b69a62027"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/rocon_service_pair_msgs/TestiesPairResponse.h b/source/ros-max-lib/ros_lib/rocon_service_pair_msgs/TestiesPairResponse.h new file mode 100644 index 0000000..4fec039 --- /dev/null +++ b/source/ros-max-lib/ros_lib/rocon_service_pair_msgs/TestiesPairResponse.h @@ -0,0 +1,50 @@ +#ifndef _ROS_rocon_service_pair_msgs_TestiesPairResponse_h +#define _ROS_rocon_service_pair_msgs_TestiesPairResponse_h + +#include +#include +#include +#include "ros/msg.h" +#include "uuid_msgs/UniqueID.h" +#include "rocon_service_pair_msgs/TestiesResponse.h" + +namespace rocon_service_pair_msgs +{ + + class TestiesPairResponse : public ros::Msg + { + public: + typedef uuid_msgs::UniqueID _id_type; + _id_type id; + typedef rocon_service_pair_msgs::TestiesResponse _response_type; + _response_type response; + + TestiesPairResponse(): + id(), + response() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->id.serialize(outbuffer + offset); + offset += this->response.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->id.deserialize(inbuffer + offset); + offset += this->response.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "rocon_service_pair_msgs/TestiesPairResponse"; }; + const char * getMD5(){ return "05404c9fe275eda57650fdfced8cf402"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/rocon_service_pair_msgs/TestiesRequest.h b/source/ros-max-lib/ros_lib/rocon_service_pair_msgs/TestiesRequest.h new file mode 100644 index 0000000..058b24d --- /dev/null +++ b/source/ros-max-lib/ros_lib/rocon_service_pair_msgs/TestiesRequest.h @@ -0,0 +1,55 @@ +#ifndef _ROS_rocon_service_pair_msgs_TestiesRequest_h +#define _ROS_rocon_service_pair_msgs_TestiesRequest_h + +#include +#include +#include +#include "ros/msg.h" + +namespace rocon_service_pair_msgs +{ + + class TestiesRequest : public ros::Msg + { + public: + typedef const char* _data_type; + _data_type data; + + TestiesRequest(): + data("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_data = strlen(this->data); + varToArr(outbuffer + offset, length_data); + offset += 4; + memcpy(outbuffer + offset, this->data, length_data); + offset += length_data; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_data; + arrToVar(length_data, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_data; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_data-1]=0; + this->data = (char *)(inbuffer + offset-1); + offset += length_data; + return offset; + } + + const char * getType(){ return "rocon_service_pair_msgs/TestiesRequest"; }; + const char * getMD5(){ return "992ce8a1687cec8c8bd883ec73ca41d1"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/rocon_service_pair_msgs/TestiesResponse.h b/source/ros-max-lib/ros_lib/rocon_service_pair_msgs/TestiesResponse.h new file mode 100644 index 0000000..3449e71 --- /dev/null +++ b/source/ros-max-lib/ros_lib/rocon_service_pair_msgs/TestiesResponse.h @@ -0,0 +1,61 @@ +#ifndef _ROS_rocon_service_pair_msgs_TestiesResponse_h +#define _ROS_rocon_service_pair_msgs_TestiesResponse_h + +#include +#include +#include +#include "ros/msg.h" +#include "uuid_msgs/UniqueID.h" + +namespace rocon_service_pair_msgs +{ + + class TestiesResponse : public ros::Msg + { + public: + typedef uuid_msgs::UniqueID _id_type; + _id_type id; + typedef const char* _data_type; + _data_type data; + + TestiesResponse(): + id(), + data("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->id.serialize(outbuffer + offset); + uint32_t length_data = strlen(this->data); + varToArr(outbuffer + offset, length_data); + offset += 4; + memcpy(outbuffer + offset, this->data, length_data); + offset += length_data; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->id.deserialize(inbuffer + offset); + uint32_t length_data; + arrToVar(length_data, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_data; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_data-1]=0; + this->data = (char *)(inbuffer + offset-1); + offset += length_data; + return offset; + } + + const char * getType(){ return "rocon_service_pair_msgs/TestiesResponse"; }; + const char * getMD5(){ return "f2e0bb16a22dc66826bb64ac8b44aeb3"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/rocon_std_msgs/Connection.h b/source/ros-max-lib/ros_lib/rocon_std_msgs/Connection.h new file mode 100644 index 0000000..6b4ac1d --- /dev/null +++ b/source/ros-max-lib/ros_lib/rocon_std_msgs/Connection.h @@ -0,0 +1,146 @@ +#ifndef _ROS_rocon_std_msgs_Connection_h +#define _ROS_rocon_std_msgs_Connection_h + +#include +#include +#include +#include "ros/msg.h" + +namespace rocon_std_msgs +{ + + class Connection : public ros::Msg + { + public: + typedef const char* _type_type; + _type_type type; + typedef const char* _name_type; + _name_type name; + typedef const char* _node_type; + _node_type node; + typedef const char* _type_msg_type; + _type_msg_type type_msg; + typedef const char* _type_info_type; + _type_info_type type_info; + typedef const char* _xmlrpc_uri_type; + _xmlrpc_uri_type xmlrpc_uri; + enum { PUBLISHER = publisher }; + enum { SUBSCRIBER = subscriber }; + enum { SERVICE = service }; + enum { ACTION_CLIENT = action_client }; + enum { ACTION_SERVER = action_server }; + enum { INVALID = invalid }; + + Connection(): + type(""), + name(""), + node(""), + type_msg(""), + type_info(""), + xmlrpc_uri("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_type = strlen(this->type); + varToArr(outbuffer + offset, length_type); + offset += 4; + memcpy(outbuffer + offset, this->type, length_type); + offset += length_type; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + uint32_t length_node = strlen(this->node); + varToArr(outbuffer + offset, length_node); + offset += 4; + memcpy(outbuffer + offset, this->node, length_node); + offset += length_node; + uint32_t length_type_msg = strlen(this->type_msg); + varToArr(outbuffer + offset, length_type_msg); + offset += 4; + memcpy(outbuffer + offset, this->type_msg, length_type_msg); + offset += length_type_msg; + uint32_t length_type_info = strlen(this->type_info); + varToArr(outbuffer + offset, length_type_info); + offset += 4; + memcpy(outbuffer + offset, this->type_info, length_type_info); + offset += length_type_info; + uint32_t length_xmlrpc_uri = strlen(this->xmlrpc_uri); + varToArr(outbuffer + offset, length_xmlrpc_uri); + offset += 4; + memcpy(outbuffer + offset, this->xmlrpc_uri, length_xmlrpc_uri); + offset += length_xmlrpc_uri; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_type; + arrToVar(length_type, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_type; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_type-1]=0; + this->type = (char *)(inbuffer + offset-1); + offset += length_type; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + uint32_t length_node; + arrToVar(length_node, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_node; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_node-1]=0; + this->node = (char *)(inbuffer + offset-1); + offset += length_node; + uint32_t length_type_msg; + arrToVar(length_type_msg, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_type_msg; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_type_msg-1]=0; + this->type_msg = (char *)(inbuffer + offset-1); + offset += length_type_msg; + uint32_t length_type_info; + arrToVar(length_type_info, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_type_info; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_type_info-1]=0; + this->type_info = (char *)(inbuffer + offset-1); + offset += length_type_info; + uint32_t length_xmlrpc_uri; + arrToVar(length_xmlrpc_uri, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_xmlrpc_uri; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_xmlrpc_uri-1]=0; + this->xmlrpc_uri = (char *)(inbuffer + offset-1); + offset += length_xmlrpc_uri; + return offset; + } + + const char * getType(){ return "rocon_std_msgs/Connection"; }; + const char * getMD5(){ return "0dee991006513320090e2ee648136101"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/rocon_std_msgs/ConnectionCacheSpin.h b/source/ros-max-lib/ros_lib/rocon_std_msgs/ConnectionCacheSpin.h new file mode 100644 index 0000000..274a452 --- /dev/null +++ b/source/ros-max-lib/ros_lib/rocon_std_msgs/ConnectionCacheSpin.h @@ -0,0 +1,86 @@ +#ifndef _ROS_rocon_std_msgs_ConnectionCacheSpin_h +#define _ROS_rocon_std_msgs_ConnectionCacheSpin_h + +#include +#include +#include +#include "ros/msg.h" + +namespace rocon_std_msgs +{ + + class ConnectionCacheSpin : public ros::Msg + { + public: + typedef float _spin_freq_type; + _spin_freq_type spin_freq; + typedef float _spin_timer_type; + _spin_timer_type spin_timer; + + ConnectionCacheSpin(): + spin_freq(0), + spin_timer(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + float real; + uint32_t base; + } u_spin_freq; + u_spin_freq.real = this->spin_freq; + *(outbuffer + offset + 0) = (u_spin_freq.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_spin_freq.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_spin_freq.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_spin_freq.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->spin_freq); + union { + float real; + uint32_t base; + } u_spin_timer; + u_spin_timer.real = this->spin_timer; + *(outbuffer + offset + 0) = (u_spin_timer.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_spin_timer.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_spin_timer.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_spin_timer.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->spin_timer); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + float real; + uint32_t base; + } u_spin_freq; + u_spin_freq.base = 0; + u_spin_freq.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_spin_freq.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_spin_freq.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_spin_freq.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->spin_freq = u_spin_freq.real; + offset += sizeof(this->spin_freq); + union { + float real; + uint32_t base; + } u_spin_timer; + u_spin_timer.base = 0; + u_spin_timer.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_spin_timer.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_spin_timer.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_spin_timer.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->spin_timer = u_spin_timer.real; + offset += sizeof(this->spin_timer); + return offset; + } + + const char * getType(){ return "rocon_std_msgs/ConnectionCacheSpin"; }; + const char * getMD5(){ return "b6c0b0ddb1d2a2de9918dc5f6d87680a"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/rocon_std_msgs/ConnectionsDiff.h b/source/ros-max-lib/ros_lib/rocon_std_msgs/ConnectionsDiff.h new file mode 100644 index 0000000..f7848ac --- /dev/null +++ b/source/ros-max-lib/ros_lib/rocon_std_msgs/ConnectionsDiff.h @@ -0,0 +1,89 @@ +#ifndef _ROS_rocon_std_msgs_ConnectionsDiff_h +#define _ROS_rocon_std_msgs_ConnectionsDiff_h + +#include +#include +#include +#include "ros/msg.h" +#include "rocon_std_msgs/Connection.h" + +namespace rocon_std_msgs +{ + + class ConnectionsDiff : public ros::Msg + { + public: + uint32_t added_length; + typedef rocon_std_msgs::Connection _added_type; + _added_type st_added; + _added_type * added; + uint32_t lost_length; + typedef rocon_std_msgs::Connection _lost_type; + _lost_type st_lost; + _lost_type * lost; + + ConnectionsDiff(): + added_length(0), added(NULL), + lost_length(0), lost(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->added_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->added_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->added_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->added_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->added_length); + for( uint32_t i = 0; i < added_length; i++){ + offset += this->added[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->lost_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->lost_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->lost_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->lost_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->lost_length); + for( uint32_t i = 0; i < lost_length; i++){ + offset += this->lost[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t added_lengthT = ((uint32_t) (*(inbuffer + offset))); + added_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + added_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + added_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->added_length); + if(added_lengthT > added_length) + this->added = (rocon_std_msgs::Connection*)realloc(this->added, added_lengthT * sizeof(rocon_std_msgs::Connection)); + added_length = added_lengthT; + for( uint32_t i = 0; i < added_length; i++){ + offset += this->st_added.deserialize(inbuffer + offset); + memcpy( &(this->added[i]), &(this->st_added), sizeof(rocon_std_msgs::Connection)); + } + uint32_t lost_lengthT = ((uint32_t) (*(inbuffer + offset))); + lost_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + lost_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + lost_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->lost_length); + if(lost_lengthT > lost_length) + this->lost = (rocon_std_msgs::Connection*)realloc(this->lost, lost_lengthT * sizeof(rocon_std_msgs::Connection)); + lost_length = lost_lengthT; + for( uint32_t i = 0; i < lost_length; i++){ + offset += this->st_lost.deserialize(inbuffer + offset); + memcpy( &(this->lost[i]), &(this->st_lost), sizeof(rocon_std_msgs::Connection)); + } + return offset; + } + + const char * getType(){ return "rocon_std_msgs/ConnectionsDiff"; }; + const char * getMD5(){ return "19f9e3bef1153b4bc619ec3d21b94718"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/rocon_std_msgs/ConnectionsList.h b/source/ros-max-lib/ros_lib/rocon_std_msgs/ConnectionsList.h new file mode 100644 index 0000000..3d595df --- /dev/null +++ b/source/ros-max-lib/ros_lib/rocon_std_msgs/ConnectionsList.h @@ -0,0 +1,64 @@ +#ifndef _ROS_rocon_std_msgs_ConnectionsList_h +#define _ROS_rocon_std_msgs_ConnectionsList_h + +#include +#include +#include +#include "ros/msg.h" +#include "rocon_std_msgs/Connection.h" + +namespace rocon_std_msgs +{ + + class ConnectionsList : public ros::Msg + { + public: + uint32_t connections_length; + typedef rocon_std_msgs::Connection _connections_type; + _connections_type st_connections; + _connections_type * connections; + + ConnectionsList(): + connections_length(0), connections(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->connections_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->connections_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->connections_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->connections_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->connections_length); + for( uint32_t i = 0; i < connections_length; i++){ + offset += this->connections[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t connections_lengthT = ((uint32_t) (*(inbuffer + offset))); + connections_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + connections_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + connections_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->connections_length); + if(connections_lengthT > connections_length) + this->connections = (rocon_std_msgs::Connection*)realloc(this->connections, connections_lengthT * sizeof(rocon_std_msgs::Connection)); + connections_length = connections_lengthT; + for( uint32_t i = 0; i < connections_length; i++){ + offset += this->st_connections.deserialize(inbuffer + offset); + memcpy( &(this->connections[i]), &(this->st_connections), sizeof(rocon_std_msgs::Connection)); + } + return offset; + } + + const char * getType(){ return "rocon_std_msgs/ConnectionsList"; }; + const char * getMD5(){ return "672d6ad69b684884f8fb6f4acedbd39f"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/rocon_std_msgs/EmptyString.h b/source/ros-max-lib/ros_lib/rocon_std_msgs/EmptyString.h new file mode 100644 index 0000000..a6d8733 --- /dev/null +++ b/source/ros-max-lib/ros_lib/rocon_std_msgs/EmptyString.h @@ -0,0 +1,87 @@ +#ifndef _ROS_SERVICE_EmptyString_h +#define _ROS_SERVICE_EmptyString_h +#include +#include +#include +#include "ros/msg.h" + +namespace rocon_std_msgs +{ + +static const char EMPTYSTRING[] = "rocon_std_msgs/EmptyString"; + + class EmptyStringRequest : public ros::Msg + { + public: + + EmptyStringRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return EMPTYSTRING; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class EmptyStringResponse : public ros::Msg + { + public: + typedef const char* _data_type; + _data_type data; + + EmptyStringResponse(): + data("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_data = strlen(this->data); + varToArr(outbuffer + offset, length_data); + offset += 4; + memcpy(outbuffer + offset, this->data, length_data); + offset += length_data; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_data; + arrToVar(length_data, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_data; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_data-1]=0; + this->data = (char *)(inbuffer + offset-1); + offset += length_data; + return offset; + } + + const char * getType(){ return EMPTYSTRING; }; + const char * getMD5(){ return "992ce8a1687cec8c8bd883ec73ca41d1"; }; + + }; + + class EmptyString { + public: + typedef EmptyStringRequest Request; + typedef EmptyStringResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/rocon_std_msgs/Float32Stamped.h b/source/ros-max-lib/ros_lib/rocon_std_msgs/Float32Stamped.h new file mode 100644 index 0000000..fd8f5ff --- /dev/null +++ b/source/ros-max-lib/ros_lib/rocon_std_msgs/Float32Stamped.h @@ -0,0 +1,68 @@ +#ifndef _ROS_rocon_std_msgs_Float32Stamped_h +#define _ROS_rocon_std_msgs_Float32Stamped_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace rocon_std_msgs +{ + + class Float32Stamped : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef float _data_type; + _data_type data; + + Float32Stamped(): + header(), + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + union { + float real; + uint32_t base; + } u_data; + u_data.real = this->data; + *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_data.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_data.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_data.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + union { + float real; + uint32_t base; + } u_data; + u_data.base = 0; + u_data.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->data = u_data.real; + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return "rocon_std_msgs/Float32Stamped"; }; + const char * getMD5(){ return "ef848af8cf12f6df11682cc76fba477b"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/rocon_std_msgs/Icon.h b/source/ros-max-lib/ros_lib/rocon_std_msgs/Icon.h new file mode 100644 index 0000000..b30516e --- /dev/null +++ b/source/ros-max-lib/ros_lib/rocon_std_msgs/Icon.h @@ -0,0 +1,99 @@ +#ifndef _ROS_rocon_std_msgs_Icon_h +#define _ROS_rocon_std_msgs_Icon_h + +#include +#include +#include +#include "ros/msg.h" + +namespace rocon_std_msgs +{ + + class Icon : public ros::Msg + { + public: + typedef const char* _resource_name_type; + _resource_name_type resource_name; + typedef const char* _format_type; + _format_type format; + uint32_t data_length; + typedef uint8_t _data_type; + _data_type st_data; + _data_type * data; + + Icon(): + resource_name(""), + format(""), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_resource_name = strlen(this->resource_name); + varToArr(outbuffer + offset, length_resource_name); + offset += 4; + memcpy(outbuffer + offset, this->resource_name, length_resource_name); + offset += length_resource_name; + uint32_t length_format = strlen(this->format); + varToArr(outbuffer + offset, length_format); + offset += 4; + memcpy(outbuffer + offset, this->format, length_format); + offset += length_format; + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_resource_name; + arrToVar(length_resource_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_resource_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_resource_name-1]=0; + this->resource_name = (char *)(inbuffer + offset-1); + offset += length_resource_name; + uint32_t length_format; + arrToVar(length_format, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_format; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_format-1]=0; + this->format = (char *)(inbuffer + offset-1); + offset += length_format; + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (uint8_t*)realloc(this->data, data_lengthT * sizeof(uint8_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + this->st_data = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(uint8_t)); + } + return offset; + } + + const char * getType(){ return "rocon_std_msgs/Icon"; }; + const char * getMD5(){ return "2ddacfedd31b6da3f723794afbd3b9de"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/rocon_std_msgs/KeyValue.h b/source/ros-max-lib/ros_lib/rocon_std_msgs/KeyValue.h new file mode 100644 index 0000000..980b1b5 --- /dev/null +++ b/source/ros-max-lib/ros_lib/rocon_std_msgs/KeyValue.h @@ -0,0 +1,72 @@ +#ifndef _ROS_rocon_std_msgs_KeyValue_h +#define _ROS_rocon_std_msgs_KeyValue_h + +#include +#include +#include +#include "ros/msg.h" + +namespace rocon_std_msgs +{ + + class KeyValue : public ros::Msg + { + public: + typedef const char* _key_type; + _key_type key; + typedef const char* _value_type; + _value_type value; + + KeyValue(): + key(""), + value("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_key = strlen(this->key); + varToArr(outbuffer + offset, length_key); + offset += 4; + memcpy(outbuffer + offset, this->key, length_key); + offset += length_key; + uint32_t length_value = strlen(this->value); + varToArr(outbuffer + offset, length_value); + offset += 4; + memcpy(outbuffer + offset, this->value, length_value); + offset += length_value; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_key; + arrToVar(length_key, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_key; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_key-1]=0; + this->key = (char *)(inbuffer + offset-1); + offset += length_key; + uint32_t length_value; + arrToVar(length_value, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_value; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_value-1]=0; + this->value = (char *)(inbuffer + offset-1); + offset += length_value; + return offset; + } + + const char * getType(){ return "rocon_std_msgs/KeyValue"; }; + const char * getMD5(){ return "cf57fdc6617a881a88c16e768132149c"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/rocon_std_msgs/MasterInfo.h b/source/ros-max-lib/ros_lib/rocon_std_msgs/MasterInfo.h new file mode 100644 index 0000000..7cf4d4a --- /dev/null +++ b/source/ros-max-lib/ros_lib/rocon_std_msgs/MasterInfo.h @@ -0,0 +1,112 @@ +#ifndef _ROS_rocon_std_msgs_MasterInfo_h +#define _ROS_rocon_std_msgs_MasterInfo_h + +#include +#include +#include +#include "ros/msg.h" +#include "rocon_std_msgs/Icon.h" + +namespace rocon_std_msgs +{ + + class MasterInfo : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef const char* _rocon_uri_type; + _rocon_uri_type rocon_uri; + typedef const char* _description_type; + _description_type description; + typedef rocon_std_msgs::Icon _icon_type; + _icon_type icon; + typedef const char* _version_type; + _version_type version; + + MasterInfo(): + name(""), + rocon_uri(""), + description(""), + icon(), + version("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + uint32_t length_rocon_uri = strlen(this->rocon_uri); + varToArr(outbuffer + offset, length_rocon_uri); + offset += 4; + memcpy(outbuffer + offset, this->rocon_uri, length_rocon_uri); + offset += length_rocon_uri; + uint32_t length_description = strlen(this->description); + varToArr(outbuffer + offset, length_description); + offset += 4; + memcpy(outbuffer + offset, this->description, length_description); + offset += length_description; + offset += this->icon.serialize(outbuffer + offset); + uint32_t length_version = strlen(this->version); + varToArr(outbuffer + offset, length_version); + offset += 4; + memcpy(outbuffer + offset, this->version, length_version); + offset += length_version; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + uint32_t length_rocon_uri; + arrToVar(length_rocon_uri, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_rocon_uri; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_rocon_uri-1]=0; + this->rocon_uri = (char *)(inbuffer + offset-1); + offset += length_rocon_uri; + uint32_t length_description; + arrToVar(length_description, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_description; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_description-1]=0; + this->description = (char *)(inbuffer + offset-1); + offset += length_description; + offset += this->icon.deserialize(inbuffer + offset); + uint32_t length_version; + arrToVar(length_version, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_version; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_version-1]=0; + this->version = (char *)(inbuffer + offset-1); + offset += length_version; + return offset; + } + + const char * getType(){ return "rocon_std_msgs/MasterInfo"; }; + const char * getMD5(){ return "e85613ae2e3faade6b77d94b4e0bf4bf"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/rocon_std_msgs/Remapping.h b/source/ros-max-lib/ros_lib/rocon_std_msgs/Remapping.h new file mode 100644 index 0000000..5e94955 --- /dev/null +++ b/source/ros-max-lib/ros_lib/rocon_std_msgs/Remapping.h @@ -0,0 +1,72 @@ +#ifndef _ROS_rocon_std_msgs_Remapping_h +#define _ROS_rocon_std_msgs_Remapping_h + +#include +#include +#include +#include "ros/msg.h" + +namespace rocon_std_msgs +{ + + class Remapping : public ros::Msg + { + public: + typedef const char* _remap_from_type; + _remap_from_type remap_from; + typedef const char* _remap_to_type; + _remap_to_type remap_to; + + Remapping(): + remap_from(""), + remap_to("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_remap_from = strlen(this->remap_from); + varToArr(outbuffer + offset, length_remap_from); + offset += 4; + memcpy(outbuffer + offset, this->remap_from, length_remap_from); + offset += length_remap_from; + uint32_t length_remap_to = strlen(this->remap_to); + varToArr(outbuffer + offset, length_remap_to); + offset += 4; + memcpy(outbuffer + offset, this->remap_to, length_remap_to); + offset += length_remap_to; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_remap_from; + arrToVar(length_remap_from, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_remap_from; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_remap_from-1]=0; + this->remap_from = (char *)(inbuffer + offset-1); + offset += length_remap_from; + uint32_t length_remap_to; + arrToVar(length_remap_to, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_remap_to; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_remap_to-1]=0; + this->remap_to = (char *)(inbuffer + offset-1); + offset += length_remap_to; + return offset; + } + + const char * getType(){ return "rocon_std_msgs/Remapping"; }; + const char * getMD5(){ return "26f16c667d483280bc5d040bf2c0cd8d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/rocon_std_msgs/StringArray.h b/source/ros-max-lib/ros_lib/rocon_std_msgs/StringArray.h new file mode 100644 index 0000000..9beb93a --- /dev/null +++ b/source/ros-max-lib/ros_lib/rocon_std_msgs/StringArray.h @@ -0,0 +1,75 @@ +#ifndef _ROS_rocon_std_msgs_StringArray_h +#define _ROS_rocon_std_msgs_StringArray_h + +#include +#include +#include +#include "ros/msg.h" + +namespace rocon_std_msgs +{ + + class StringArray : public ros::Msg + { + public: + uint32_t strings_length; + typedef char* _strings_type; + _strings_type st_strings; + _strings_type * strings; + + StringArray(): + strings_length(0), strings(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->strings_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->strings_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->strings_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->strings_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->strings_length); + for( uint32_t i = 0; i < strings_length; i++){ + uint32_t length_stringsi = strlen(this->strings[i]); + varToArr(outbuffer + offset, length_stringsi); + offset += 4; + memcpy(outbuffer + offset, this->strings[i], length_stringsi); + offset += length_stringsi; + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t strings_lengthT = ((uint32_t) (*(inbuffer + offset))); + strings_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + strings_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + strings_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->strings_length); + if(strings_lengthT > strings_length) + this->strings = (char**)realloc(this->strings, strings_lengthT * sizeof(char*)); + strings_length = strings_lengthT; + for( uint32_t i = 0; i < strings_length; i++){ + uint32_t length_st_strings; + arrToVar(length_st_strings, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_strings; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_strings-1]=0; + this->st_strings = (char *)(inbuffer + offset-1); + offset += length_st_strings; + memcpy( &(this->strings[i]), &(this->st_strings), sizeof(char*)); + } + return offset; + } + + const char * getType(){ return "rocon_std_msgs/StringArray"; }; + const char * getMD5(){ return "51789d20146e565223d0963361aecda1"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/rocon_std_msgs/Strings.h b/source/ros-max-lib/ros_lib/rocon_std_msgs/Strings.h new file mode 100644 index 0000000..71f9809 --- /dev/null +++ b/source/ros-max-lib/ros_lib/rocon_std_msgs/Strings.h @@ -0,0 +1,83 @@ +#ifndef _ROS_rocon_std_msgs_Strings_h +#define _ROS_rocon_std_msgs_Strings_h + +#include +#include +#include +#include "ros/msg.h" + +namespace rocon_std_msgs +{ + + class Strings : public ros::Msg + { + public: + enum { ROCON_VERSION = acdc }; + enum { URI_WILDCARD = * }; + enum { HW_PC = pc }; + enum { HW_TURTLEBOT2 = turtlebot2 }; + enum { HW_PR2 = pr2 }; + enum { HW_WAITERBOT = waiterbot }; + enum { HW_ROBOT_OTHER = robot_other }; + enum { HW_GALAXY = galaxy }; + enum { HW_MEGA = mega }; + enum { HW_NOTE3 = note3 }; + enum { HW_PHONE_OTHER = phone_other }; + enum { HW_XOOM = xoom }; + enum { HW_NOTE10 = note10 }; + enum { HW_TABLET_OTHER = tablet_other }; + enum { APPLICATION_FRAMEWORK_OTHER = application_framework_other }; + enum { APPLICATION_FRAMEWORK_OPROS = opros }; + enum { APPLICATION_FRAMEWORK_GROOVY = groovy }; + enum { APPLICATION_FRAMEWORK_HYDRO = hydro }; + enum { APPLICATION_FRAMEWORK_INDIGO = indigo }; + enum { APPLICATION_FRAMEWORK_ROS_OTHER = ros_other }; + enum { OS_OSX = osx }; + enum { OS_FREEBSD = freebsd }; + enum { OS_WINXP = winxp }; + enum { OS_WINDOWS7 = windows7 }; + enum { OS_ARCH = arch }; + enum { OS_DEBIAN = debian }; + enum { OS_FEDORA = fedora }; + enum { OS_GENTOO = gentoo }; + enum { OS_PRECISE = precise }; + enum { OS_QUANTAL = quantal }; + enum { OS_RARING = raring }; + enum { OS_SAUCY = saucy }; + enum { OS_HONEYCOMB = honeycomb }; + enum { OS_ICE_CREAM_SANDWICH = ice_cream_sandwich }; + enum { OS_JELLYBEAN = jellybean }; + enum { OS_KITKAT = kitkat }; + enum { OS_CHROME = chrome }; + enum { OS_FIREFOX = firefox }; + enum { OS_INTERNET_EXPLORER = internet_explorer }; + enum { OS_SAFARI = safari }; + enum { OS_OPERA = opera }; + enum { TAG_SERVICE = concert_service }; + enum { TAG_RAPP = rocon_app }; + enum { TAG_GAZEBO_ROBOT_TYPE = concert_gazebo }; + enum { TAG_SOFTWARE = software_farm }; + + Strings() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "rocon_std_msgs/Strings"; }; + const char * getMD5(){ return "58fa1e54e6c0338b3faebae82a13e892"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/rocon_std_msgs/StringsPair.h b/source/ros-max-lib/ros_lib/rocon_std_msgs/StringsPair.h new file mode 100644 index 0000000..1a80716 --- /dev/null +++ b/source/ros-max-lib/ros_lib/rocon_std_msgs/StringsPair.h @@ -0,0 +1,50 @@ +#ifndef _ROS_rocon_std_msgs_StringsPair_h +#define _ROS_rocon_std_msgs_StringsPair_h + +#include +#include +#include +#include "ros/msg.h" +#include "rocon_std_msgs/StringsPairRequest.h" +#include "rocon_std_msgs/StringsPairResponse.h" + +namespace rocon_std_msgs +{ + + class StringsPair : public ros::Msg + { + public: + typedef rocon_std_msgs::StringsPairRequest _pair_request_type; + _pair_request_type pair_request; + typedef rocon_std_msgs::StringsPairResponse _pair_response_type; + _pair_response_type pair_response; + + StringsPair(): + pair_request(), + pair_response() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->pair_request.serialize(outbuffer + offset); + offset += this->pair_response.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->pair_request.deserialize(inbuffer + offset); + offset += this->pair_response.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "rocon_std_msgs/StringsPair"; }; + const char * getMD5(){ return "d41c9071bd514be249c417a13ec83e65"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/rocon_std_msgs/StringsPairRequest.h b/source/ros-max-lib/ros_lib/rocon_std_msgs/StringsPairRequest.h new file mode 100644 index 0000000..ba89251 --- /dev/null +++ b/source/ros-max-lib/ros_lib/rocon_std_msgs/StringsPairRequest.h @@ -0,0 +1,50 @@ +#ifndef _ROS_rocon_std_msgs_StringsPairRequest_h +#define _ROS_rocon_std_msgs_StringsPairRequest_h + +#include +#include +#include +#include "ros/msg.h" +#include "uuid_msgs/UniqueID.h" +#include "rocon_std_msgs/StringsRequest.h" + +namespace rocon_std_msgs +{ + + class StringsPairRequest : public ros::Msg + { + public: + typedef uuid_msgs::UniqueID _id_type; + _id_type id; + typedef rocon_std_msgs::StringsRequest _request_type; + _request_type request; + + StringsPairRequest(): + id(), + request() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->id.serialize(outbuffer + offset); + offset += this->request.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->id.deserialize(inbuffer + offset); + offset += this->request.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "rocon_std_msgs/StringsPairRequest"; }; + const char * getMD5(){ return "71ec95e384ce52aa32491f3b69a62027"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/rocon_std_msgs/StringsPairResponse.h b/source/ros-max-lib/ros_lib/rocon_std_msgs/StringsPairResponse.h new file mode 100644 index 0000000..65e29cd --- /dev/null +++ b/source/ros-max-lib/ros_lib/rocon_std_msgs/StringsPairResponse.h @@ -0,0 +1,50 @@ +#ifndef _ROS_rocon_std_msgs_StringsPairResponse_h +#define _ROS_rocon_std_msgs_StringsPairResponse_h + +#include +#include +#include +#include "ros/msg.h" +#include "uuid_msgs/UniqueID.h" +#include "rocon_std_msgs/StringsResponse.h" + +namespace rocon_std_msgs +{ + + class StringsPairResponse : public ros::Msg + { + public: + typedef uuid_msgs::UniqueID _id_type; + _id_type id; + typedef rocon_std_msgs::StringsResponse _response_type; + _response_type response; + + StringsPairResponse(): + id(), + response() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->id.serialize(outbuffer + offset); + offset += this->response.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->id.deserialize(inbuffer + offset); + offset += this->response.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "rocon_std_msgs/StringsPairResponse"; }; + const char * getMD5(){ return "7b20492548347a7692aa8c5680af8d1b"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/rocon_std_msgs/StringsRequest.h b/source/ros-max-lib/ros_lib/rocon_std_msgs/StringsRequest.h new file mode 100644 index 0000000..ce30bde --- /dev/null +++ b/source/ros-max-lib/ros_lib/rocon_std_msgs/StringsRequest.h @@ -0,0 +1,55 @@ +#ifndef _ROS_rocon_std_msgs_StringsRequest_h +#define _ROS_rocon_std_msgs_StringsRequest_h + +#include +#include +#include +#include "ros/msg.h" + +namespace rocon_std_msgs +{ + + class StringsRequest : public ros::Msg + { + public: + typedef const char* _data_type; + _data_type data; + + StringsRequest(): + data("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_data = strlen(this->data); + varToArr(outbuffer + offset, length_data); + offset += 4; + memcpy(outbuffer + offset, this->data, length_data); + offset += length_data; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_data; + arrToVar(length_data, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_data; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_data-1]=0; + this->data = (char *)(inbuffer + offset-1); + offset += length_data; + return offset; + } + + const char * getType(){ return "rocon_std_msgs/StringsRequest"; }; + const char * getMD5(){ return "992ce8a1687cec8c8bd883ec73ca41d1"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/rocon_std_msgs/StringsResponse.h b/source/ros-max-lib/ros_lib/rocon_std_msgs/StringsResponse.h new file mode 100644 index 0000000..31a9bec --- /dev/null +++ b/source/ros-max-lib/ros_lib/rocon_std_msgs/StringsResponse.h @@ -0,0 +1,55 @@ +#ifndef _ROS_rocon_std_msgs_StringsResponse_h +#define _ROS_rocon_std_msgs_StringsResponse_h + +#include +#include +#include +#include "ros/msg.h" + +namespace rocon_std_msgs +{ + + class StringsResponse : public ros::Msg + { + public: + typedef const char* _data_type; + _data_type data; + + StringsResponse(): + data("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_data = strlen(this->data); + varToArr(outbuffer + offset, length_data); + offset += 4; + memcpy(outbuffer + offset, this->data, length_data); + offset += length_data; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_data; + arrToVar(length_data, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_data; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_data-1]=0; + this->data = (char *)(inbuffer + offset-1); + offset += length_data; + return offset; + } + + const char * getType(){ return "rocon_std_msgs/StringsResponse"; }; + const char * getMD5(){ return "992ce8a1687cec8c8bd883ec73ca41d1"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/ros.h b/source/ros-max-lib/ros_lib/ros.h new file mode 100644 index 0000000..a81550b --- /dev/null +++ b/source/ros-max-lib/ros_lib/ros.h @@ -0,0 +1,52 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2011, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _ROS_H_ +#define _ROS_H_ + +#ifndef BUILD_LIBROSSERIALEMBEDDEDLINUX +#include "embedded_linux_comms.c" +#include "duration.cpp" +#include "time.cpp" +#endif + +#include "ros/node_handle.h" +#include "embedded_linux_hardware.h" + +namespace ros +{ +typedef NodeHandle_ NodeHandle; +} + +#endif diff --git a/source/ros-max-lib/ros_lib/ros/duration.h b/source/ros-max-lib/ros_lib/ros/duration.h new file mode 100644 index 0000000..5ec6d90 --- /dev/null +++ b/source/ros-max-lib/ros_lib/ros/duration.h @@ -0,0 +1,75 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2011, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _ROS_DURATION_H_ +#define _ROS_DURATION_H_ + +#include +#include + +namespace ros +{ + +void normalizeSecNSecSigned(int32_t& sec, int32_t& nsec); + +class Duration +{ +public: + int32_t sec, nsec; + + Duration() : sec(0), nsec(0) {} + Duration(int32_t _sec, int32_t _nsec) : sec(_sec), nsec(_nsec) + { + normalizeSecNSecSigned(sec, nsec); + } + + double toSec() const + { + return (double)sec + 1e-9 * (double)nsec; + }; + void fromSec(double t) + { + sec = (uint32_t) floor(t); + nsec = (uint32_t) round((t - sec) * 1e9); + }; + + Duration& operator+=(const Duration &rhs); + Duration& operator-=(const Duration &rhs); + Duration& operator*=(double scale); +}; + +} + +#endif + diff --git a/source/ros-max-lib/ros_lib/ros/msg.h b/source/ros-max-lib/ros_lib/ros/msg.h new file mode 100644 index 0000000..aea0f6f --- /dev/null +++ b/source/ros-max-lib/ros_lib/ros/msg.h @@ -0,0 +1,148 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2011, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _ROS_MSG_H_ +#define _ROS_MSG_H_ + +#include +#include + +namespace ros +{ + +/* Base Message Type */ +class Msg +{ +public: + virtual int serialize(unsigned char *outbuffer) const = 0; + virtual int deserialize(unsigned char *data) = 0; + virtual const char * getType() = 0; + virtual const char * getMD5() = 0; + + /** + * @brief This tricky function handles promoting a 32bit float to a 64bit + * double, so that AVR can publish messages containing float64 + * fields, despite AVV having no native support for double. + * + * @param[out] outbuffer pointer for buffer to serialize to. + * @param[in] f value to serialize. + * + * @return number of bytes to advance the buffer pointer. + * + */ + static int serializeAvrFloat64(unsigned char* outbuffer, const float f) + { + const int32_t* val = (int32_t*) &f; + int32_t exp = ((*val >> 23) & 255); + if (exp != 0) + { + exp += 1023 - 127; + } + + int32_t sig = *val; + *(outbuffer++) = 0; + *(outbuffer++) = 0; + *(outbuffer++) = 0; + *(outbuffer++) = (sig << 5) & 0xff; + *(outbuffer++) = (sig >> 3) & 0xff; + *(outbuffer++) = (sig >> 11) & 0xff; + *(outbuffer++) = ((exp << 4) & 0xF0) | ((sig >> 19) & 0x0F); + *(outbuffer++) = (exp >> 4) & 0x7F; + + // Mark negative bit as necessary. + if (f < 0) + { + *(outbuffer - 1) |= 0x80; + } + + return 8; + } + + /** + * @brief This tricky function handles demoting a 64bit double to a + * 32bit float, so that AVR can understand messages containing + * float64 fields, despite AVR having no native support for double. + * + * @param[in] inbuffer pointer for buffer to deserialize from. + * @param[out] f pointer to place the deserialized value in. + * + * @return number of bytes to advance the buffer pointer. + */ + static int deserializeAvrFloat64(const unsigned char* inbuffer, float* f) + { + uint32_t* val = (uint32_t*)f; + inbuffer += 3; + + // Copy truncated mantissa. + *val = ((uint32_t)(*(inbuffer++)) >> 5 & 0x07); + *val |= ((uint32_t)(*(inbuffer++)) & 0xff) << 3; + *val |= ((uint32_t)(*(inbuffer++)) & 0xff) << 11; + *val |= ((uint32_t)(*inbuffer) & 0x0f) << 19; + + // Copy truncated exponent. + uint32_t exp = ((uint32_t)(*(inbuffer++)) & 0xf0) >> 4; + exp |= ((uint32_t)(*inbuffer) & 0x7f) << 4; + if (exp != 0) + { + *val |= ((exp) - 1023 + 127) << 23; + } + + // Copy negative sign. + *val |= ((uint32_t)(*(inbuffer++)) & 0x80) << 24; + + return 8; + } + + // Copy data from variable into a byte array + template + static void varToArr(A arr, const V var) + { + for (size_t i = 0; i < sizeof(V); i++) + arr[i] = (var >> (8 * i)); + } + + // Copy data from a byte array into variable + template + static void arrToVar(V& var, const A arr) + { + var = 0; + for (size_t i = 0; i < sizeof(V); i++) + var |= (arr[i] << (8 * i)); + } + +}; + +} // namespace ros + +#endif diff --git a/source/ros-max-lib/ros_lib/ros/node_handle.h b/source/ros-max-lib/ros_lib/ros/node_handle.h new file mode 100644 index 0000000..fa2416a --- /dev/null +++ b/source/ros-max-lib/ros_lib/ros/node_handle.h @@ -0,0 +1,668 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2011, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef ROS_NODE_HANDLE_H_ +#define ROS_NODE_HANDLE_H_ + +#include + +#include "../std_msgs/Time.h" +#include "../rosserial_msgs/TopicInfo.h" +#include "../rosserial_msgs/Log.h" +#include "../rosserial_msgs/RequestParam.h" + +#include "../ros/msg.h" + +namespace ros +{ + +class NodeHandleBase_ +{ +public: + virtual int publish(int id, const Msg* msg) = 0; + virtual int spinOnce() = 0; + virtual bool connected() = 0; +}; +} + +#include "../ros/publisher.h" +#include "../ros/subscriber.h" +#include "../ros/service_server.h" +#include "../ros/service_client.h" + +namespace ros +{ + +const int SPIN_OK = 0; +const int SPIN_ERR = -1; +const int SPIN_TIMEOUT = -2; + +const uint8_t SYNC_SECONDS = 5; +const uint8_t MODE_FIRST_FF = 0; +/* + * The second sync byte is a protocol version. It's value is 0xff for the first + * version of the rosserial protocol (used up to hydro), 0xfe for the second version + * (introduced in hydro), 0xfd for the next, and so on. Its purpose is to enable + * detection of mismatched protocol versions (e.g. hydro rosserial_python with groovy + * rosserial_arduino. It must be changed in both this file and in + * rosserial_python/src/rosserial_python/SerialClient.py + */ +const uint8_t MODE_PROTOCOL_VER = 1; +const uint8_t PROTOCOL_VER1 = 0xff; // through groovy +const uint8_t PROTOCOL_VER2 = 0xfe; // in hydro +const uint8_t PROTOCOL_VER = PROTOCOL_VER2; +const uint8_t MODE_SIZE_L = 2; +const uint8_t MODE_SIZE_H = 3; +const uint8_t MODE_SIZE_CHECKSUM = 4; // checksum for msg size received from size L and H +const uint8_t MODE_TOPIC_L = 5; // waiting for topic id +const uint8_t MODE_TOPIC_H = 6; +const uint8_t MODE_MESSAGE = 7; +const uint8_t MODE_MSG_CHECKSUM = 8; // checksum for msg and topic id + + +const uint8_t SERIAL_MSG_TIMEOUT = 20; // 20 milliseconds to recieve all of message data + +using rosserial_msgs::TopicInfo; + +/* Node Handle */ +template +class NodeHandle_ : public NodeHandleBase_ +{ +protected: + Hardware hardware_; + + /* time used for syncing */ + uint32_t rt_time; + + /* used for computing current time */ + uint32_t sec_offset, nsec_offset; + + /* Spinonce maximum work timeout */ + uint32_t spin_timeout_; + + uint8_t message_in[INPUT_SIZE]; + uint8_t message_out[OUTPUT_SIZE]; + + Publisher * publishers[MAX_PUBLISHERS]; + Subscriber_ * subscribers[MAX_SUBSCRIBERS]; + + /* + * Setup Functions + */ +public: + NodeHandle_() : configured_(false) + { + + for (unsigned int i = 0; i < MAX_PUBLISHERS; i++) + publishers[i] = 0; + + for (unsigned int i = 0; i < MAX_SUBSCRIBERS; i++) + subscribers[i] = 0; + + for (unsigned int i = 0; i < INPUT_SIZE; i++) + message_in[i] = 0; + + for (unsigned int i = 0; i < OUTPUT_SIZE; i++) + message_out[i] = 0; + + req_param_resp.ints_length = 0; + req_param_resp.ints = NULL; + req_param_resp.floats_length = 0; + req_param_resp.floats = NULL; + req_param_resp.ints_length = 0; + req_param_resp.ints = NULL; + + spin_timeout_ = 0; + } + + Hardware* getHardware() + { + return &hardware_; + } + + /* Start serial, initialize buffers */ + void initNode() + { + hardware_.init(); + mode_ = 0; + bytes_ = 0; + index_ = 0; + topic_ = 0; + }; + + /* Start a named port, which may be network server IP, initialize buffers */ + void initNode(char *portName) + { + hardware_.init(portName); + mode_ = 0; + bytes_ = 0; + index_ = 0; + topic_ = 0; + }; + + /** + * @brief Sets the maximum time in millisconds that spinOnce() can work. + * This will not effect the processing of the buffer, as spinOnce processes + * one byte at a time. It simply sets the maximum time that one call can + * process for. You can choose to clear the buffer if that is beneficial if + * SPIN_TIMEOUT is returned from spinOnce(). + * @param timeout The timeout in milliseconds that spinOnce will function. + */ + void setSpinTimeout(const uint32_t& timeout) + { + spin_timeout_ = timeout; + } + +protected: + //State machine variables for spinOnce + int mode_; + int bytes_; + int topic_; + int index_; + int checksum_; + + bool configured_; + + /* used for syncing the time */ + uint32_t last_sync_time; + uint32_t last_sync_receive_time; + uint32_t last_msg_timeout_time; + +public: + /* This function goes in your loop() function, it handles + * serial input and callbacks for subscribers. + */ + + + virtual int spinOnce() + { + /* restart if timed out */ + uint32_t c_time = hardware_.time(); + if ((c_time - last_sync_receive_time) > (SYNC_SECONDS * 2200)) + { + configured_ = false; + } + + /* reset if message has timed out */ + if (mode_ != MODE_FIRST_FF) + { + if (c_time > last_msg_timeout_time) + { + mode_ = MODE_FIRST_FF; + } + } + + /* while available buffer, read data */ + while (true) + { + // If a timeout has been specified, check how long spinOnce has been running. + if (spin_timeout_ > 0) + { + // If the maximum processing timeout has been exceeded, exit with error. + // The next spinOnce can continue where it left off, or optionally + // based on the application in use, the hardware buffer could be flushed + // and start fresh. + if ((hardware_.time() - c_time) > spin_timeout_) + { + // Exit the spin, processing timeout exceeded. + return SPIN_TIMEOUT; + } + } + int data = hardware_.read(); + if (data < 0) + break; + checksum_ += data; + if (mode_ == MODE_MESSAGE) /* message data being recieved */ + { + message_in[index_++] = data; + bytes_--; + if (bytes_ == 0) /* is message complete? if so, checksum */ + mode_ = MODE_MSG_CHECKSUM; + } + else if (mode_ == MODE_FIRST_FF) + { + if (data == 0xff) + { + mode_++; + last_msg_timeout_time = c_time + SERIAL_MSG_TIMEOUT; + } + else if (hardware_.time() - c_time > (SYNC_SECONDS * 1000)) + { + /* We have been stuck in spinOnce too long, return error */ + configured_ = false; + return SPIN_TIMEOUT; + } + } + else if (mode_ == MODE_PROTOCOL_VER) + { + if (data == PROTOCOL_VER) + { + mode_++; + } + else + { + mode_ = MODE_FIRST_FF; + if (configured_ == false) + requestSyncTime(); /* send a msg back showing our protocol version */ + } + } + else if (mode_ == MODE_SIZE_L) /* bottom half of message size */ + { + bytes_ = data; + index_ = 0; + mode_++; + checksum_ = data; /* first byte for calculating size checksum */ + } + else if (mode_ == MODE_SIZE_H) /* top half of message size */ + { + bytes_ += data << 8; + mode_++; + } + else if (mode_ == MODE_SIZE_CHECKSUM) + { + if ((checksum_ % 256) == 255) + mode_++; + else + mode_ = MODE_FIRST_FF; /* Abandon the frame if the msg len is wrong */ + } + else if (mode_ == MODE_TOPIC_L) /* bottom half of topic id */ + { + topic_ = data; + mode_++; + checksum_ = data; /* first byte included in checksum */ + } + else if (mode_ == MODE_TOPIC_H) /* top half of topic id */ + { + topic_ += data << 8; + mode_ = MODE_MESSAGE; + if (bytes_ == 0) + mode_ = MODE_MSG_CHECKSUM; + } + else if (mode_ == MODE_MSG_CHECKSUM) /* do checksum */ + { + mode_ = MODE_FIRST_FF; + if ((checksum_ % 256) == 255) + { + if (topic_ == TopicInfo::ID_PUBLISHER) + { + requestSyncTime(); + negotiateTopics(); + last_sync_time = c_time; + last_sync_receive_time = c_time; + return SPIN_ERR; + } + else if (topic_ == TopicInfo::ID_TIME) + { + syncTime(message_in); + } + else if (topic_ == TopicInfo::ID_PARAMETER_REQUEST) + { + req_param_resp.deserialize(message_in); + param_recieved = true; + } + else if (topic_ == TopicInfo::ID_TX_STOP) + { + configured_ = false; + } + else + { + if (subscribers[topic_ - 100]) + subscribers[topic_ - 100]->callback(message_in); + } + } + } + } + + /* occasionally sync time */ + if (configured_ && ((c_time - last_sync_time) > (SYNC_SECONDS * 500))) + { + requestSyncTime(); + last_sync_time = c_time; + } + + return SPIN_OK; + } + + + /* Are we connected to the PC? */ + virtual bool connected() + { + return configured_; + }; + + /******************************************************************** + * Time functions + */ + + void requestSyncTime() + { + std_msgs::Time t; + publish(TopicInfo::ID_TIME, &t); + rt_time = hardware_.time(); + } + + void syncTime(uint8_t * data) + { + std_msgs::Time t; + uint32_t offset = hardware_.time() - rt_time; + + t.deserialize(data); + t.data.sec += offset / 1000; + t.data.nsec += (offset % 1000) * 1000000UL; + + this->setNow(t.data); + last_sync_receive_time = hardware_.time(); + } + + Time now() + { + uint32_t ms = hardware_.time(); + Time current_time; + current_time.sec = ms / 1000 + sec_offset; + current_time.nsec = (ms % 1000) * 1000000UL + nsec_offset; + normalizeSecNSec(current_time.sec, current_time.nsec); + return current_time; + } + + void setNow(Time & new_now) + { + uint32_t ms = hardware_.time(); + sec_offset = new_now.sec - ms / 1000 - 1; + nsec_offset = new_now.nsec - (ms % 1000) * 1000000UL + 1000000000UL; + normalizeSecNSec(sec_offset, nsec_offset); + } + + /******************************************************************** + * Topic Management + */ + + /* Register a new publisher */ + bool advertise(Publisher & p) + { + for (int i = 0; i < MAX_PUBLISHERS; i++) + { + if (publishers[i] == 0) // empty slot + { + publishers[i] = &p; + p.id_ = i + 100 + MAX_SUBSCRIBERS; + p.nh_ = this; + return true; + } + } + return false; + } + + /* Register a new subscriber */ + template + bool subscribe(SubscriberT& s) + { + for (int i = 0; i < MAX_SUBSCRIBERS; i++) + { + if (subscribers[i] == 0) // empty slot + { + subscribers[i] = static_cast(&s); + s.id_ = i + 100; + return true; + } + } + return false; + } + + /* Register a new Service Server */ + template + bool advertiseService(ServiceServer& srv) + { + bool v = advertise(srv.pub); + for (int i = 0; i < MAX_SUBSCRIBERS; i++) + { + if (subscribers[i] == 0) // empty slot + { + subscribers[i] = static_cast(&srv); + srv.id_ = i + 100; + return v; + } + } + return false; + } + + /* Register a new Service Client */ + template + bool serviceClient(ServiceClient& srv) + { + bool v = advertise(srv.pub); + for (int i = 0; i < MAX_SUBSCRIBERS; i++) + { + if (subscribers[i] == 0) // empty slot + { + subscribers[i] = static_cast(&srv); + srv.id_ = i + 100; + return v; + } + } + return false; + } + + void negotiateTopics() + { + rosserial_msgs::TopicInfo ti; + int i; + for (i = 0; i < MAX_PUBLISHERS; i++) + { + if (publishers[i] != 0) // non-empty slot + { + ti.topic_id = publishers[i]->id_; + ti.topic_name = (char *) publishers[i]->topic_; + ti.message_type = (char *) publishers[i]->msg_->getType(); + ti.md5sum = (char *) publishers[i]->msg_->getMD5(); + ti.buffer_size = OUTPUT_SIZE; + publish(publishers[i]->getEndpointType(), &ti); + } + } + for (i = 0; i < MAX_SUBSCRIBERS; i++) + { + if (subscribers[i] != 0) // non-empty slot + { + ti.topic_id = subscribers[i]->id_; + ti.topic_name = (char *) subscribers[i]->topic_; + ti.message_type = (char *) subscribers[i]->getMsgType(); + ti.md5sum = (char *) subscribers[i]->getMsgMD5(); + ti.buffer_size = INPUT_SIZE; + publish(subscribers[i]->getEndpointType(), &ti); + } + } + configured_ = true; + } + + virtual int publish(int id, const Msg * msg) + { + if (id >= 100 && !configured_) + return 0; + + /* serialize message */ + int l = msg->serialize(message_out + 7); + + /* setup the header */ + message_out[0] = 0xff; + message_out[1] = PROTOCOL_VER; + message_out[2] = (uint8_t)((uint16_t)l & 255); + message_out[3] = (uint8_t)((uint16_t)l >> 8); + message_out[4] = 255 - ((message_out[2] + message_out[3]) % 256); + message_out[5] = (uint8_t)((int16_t)id & 255); + message_out[6] = (uint8_t)((int16_t)id >> 8); + + /* calculate checksum */ + int chk = 0; + for (int i = 5; i < l + 7; i++) + chk += message_out[i]; + l += 7; + message_out[l++] = 255 - (chk % 256); + + if (l <= OUTPUT_SIZE) + { + hardware_.write(message_out, l); + return l; + } + else + { + logerror("Message from device dropped: message larger than buffer."); + return -1; + } + } + + /******************************************************************** + * Logging + */ + +private: + void log(char byte, const char * msg) + { + rosserial_msgs::Log l; + l.level = byte; + l.msg = (char*)msg; + publish(rosserial_msgs::TopicInfo::ID_LOG, &l); + } + +public: + void logdebug(const char* msg) + { + log(rosserial_msgs::Log::ROSDEBUG, msg); + } + void loginfo(const char * msg) + { + log(rosserial_msgs::Log::INFO, msg); + } + void logwarn(const char *msg) + { + log(rosserial_msgs::Log::WARN, msg); + } + void logerror(const char*msg) + { + log(rosserial_msgs::Log::ERROR, msg); + } + void logfatal(const char*msg) + { + log(rosserial_msgs::Log::FATAL, msg); + } + + /******************************************************************** + * Parameters + */ + +private: + bool param_recieved; + rosserial_msgs::RequestParamResponse req_param_resp; + + bool requestParam(const char * name, int time_out = 1000) + { + param_recieved = false; + rosserial_msgs::RequestParamRequest req; + req.name = (char*)name; + publish(TopicInfo::ID_PARAMETER_REQUEST, &req); + uint32_t end_time = hardware_.time() + time_out; + while (!param_recieved) + { + spinOnce(); + if (hardware_.time() > end_time) + { + logwarn("Failed to get param: timeout expired"); + return false; + } + } + return true; + } + +public: + bool getParam(const char* name, int* param, int length = 1, int timeout = 1000) + { + if (requestParam(name, timeout)) + { + if (length == req_param_resp.ints_length) + { + //copy it over + for (int i = 0; i < length; i++) + param[i] = req_param_resp.ints[i]; + return true; + } + else + { + logwarn("Failed to get param: length mismatch"); + } + } + return false; + } + bool getParam(const char* name, float* param, int length = 1, int timeout = 1000) + { + if (requestParam(name, timeout)) + { + if (length == req_param_resp.floats_length) + { + //copy it over + for (int i = 0; i < length; i++) + param[i] = req_param_resp.floats[i]; + return true; + } + else + { + logwarn("Failed to get param: length mismatch"); + } + } + return false; + } + bool getParam(const char* name, char** param, int length = 1, int timeout = 1000) + { + if (requestParam(name, timeout)) + { + if (length == req_param_resp.strings_length) + { + //copy it over + for (int i = 0; i < length; i++) + strcpy(param[i], req_param_resp.strings[i]); + return true; + } + else + { + logwarn("Failed to get param: length mismatch"); + } + } + return false; + } +}; + +} + +#endif diff --git a/source/ros-max-lib/ros_lib/ros/publisher.h b/source/ros-max-lib/ros_lib/ros/publisher.h new file mode 100644 index 0000000..86dde38 --- /dev/null +++ b/source/ros-max-lib/ros_lib/ros/publisher.h @@ -0,0 +1,74 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2011, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _ROS_PUBLISHER_H_ +#define _ROS_PUBLISHER_H_ + +#include "../rosserial_msgs/TopicInfo.h" +#include "../ros/node_handle.h" + +namespace ros +{ + +/* Generic Publisher */ +class Publisher +{ +public: + Publisher(const char * topic_name, Msg * msg, int endpoint = rosserial_msgs::TopicInfo::ID_PUBLISHER) : + topic_(topic_name), + msg_(msg), + endpoint_(endpoint) {}; + + int publish(const Msg * msg) + { + return nh_->publish(id_, msg); + }; + int getEndpointType() + { + return endpoint_; + } + + const char * topic_; + Msg *msg_; + // id_ and no_ are set by NodeHandle when we advertise + int id_; + NodeHandleBase_* nh_; + +private: + int endpoint_; +}; + +} + +#endif diff --git a/source/ros-max-lib/ros_lib/ros/service_client.h b/source/ros-max-lib/ros_lib/ros/service_client.h new file mode 100644 index 0000000..d0629a4 --- /dev/null +++ b/source/ros-max-lib/ros_lib/ros/service_client.h @@ -0,0 +1,95 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2011, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _ROS_SERVICE_CLIENT_H_ +#define _ROS_SERVICE_CLIENT_H_ + +#include "../rosserial_msgs/TopicInfo.h" + +#include "../ros/publisher.h" +#include "../ros/subscriber.h" + +namespace ros +{ + +template +class ServiceClient : public Subscriber_ +{ +public: + ServiceClient(const char* topic_name) : + pub(topic_name, &req, rosserial_msgs::TopicInfo::ID_SERVICE_CLIENT + rosserial_msgs::TopicInfo::ID_PUBLISHER) + { + this->topic_ = topic_name; + this->waiting = true; + } + + virtual void call(const MReq & request, MRes & response) + { + if (!pub.nh_->connected()) return; + ret = &response; + waiting = true; + pub.publish(&request); + while (waiting && pub.nh_->connected()) + if (pub.nh_->spinOnce() < 0) break; + } + + // these refer to the subscriber + virtual void callback(unsigned char *data) + { + ret->deserialize(data); + waiting = false; + } + virtual const char * getMsgType() + { + return this->resp.getType(); + } + virtual const char * getMsgMD5() + { + return this->resp.getMD5(); + } + virtual int getEndpointType() + { + return rosserial_msgs::TopicInfo::ID_SERVICE_CLIENT + rosserial_msgs::TopicInfo::ID_SUBSCRIBER; + } + + MReq req; + MRes resp; + MRes * ret; + bool waiting; + Publisher pub; +}; + +} + +#endif diff --git a/source/ros-max-lib/ros_lib/ros/service_server.h b/source/ros-max-lib/ros_lib/ros/service_server.h new file mode 100644 index 0000000..1b95a9e --- /dev/null +++ b/source/ros-max-lib/ros_lib/ros/service_server.h @@ -0,0 +1,130 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2011, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _ROS_SERVICE_SERVER_H_ +#define _ROS_SERVICE_SERVER_H_ + +#include "../rosserial_msgs/TopicInfo.h" + +#include "../ros/publisher.h" +#include "../ros/subscriber.h" + +namespace ros +{ + +template +class ServiceServer : public Subscriber_ +{ +public: + typedef void(ObjT::*CallbackT)(const MReq&, MRes&); + + ServiceServer(const char* topic_name, CallbackT cb, ObjT* obj) : + pub(topic_name, &resp, rosserial_msgs::TopicInfo::ID_SERVICE_SERVER + rosserial_msgs::TopicInfo::ID_PUBLISHER), + obj_(obj) + { + this->topic_ = topic_name; + this->cb_ = cb; + } + + // these refer to the subscriber + virtual void callback(unsigned char *data) + { + req.deserialize(data); + (obj_->*cb_)(req, resp); + pub.publish(&resp); + } + virtual const char * getMsgType() + { + return this->req.getType(); + } + virtual const char * getMsgMD5() + { + return this->req.getMD5(); + } + virtual int getEndpointType() + { + return rosserial_msgs::TopicInfo::ID_SERVICE_SERVER + rosserial_msgs::TopicInfo::ID_SUBSCRIBER; + } + + MReq req; + MRes resp; + Publisher pub; +private: + CallbackT cb_; + ObjT* obj_; +}; + +template +class ServiceServer : public Subscriber_ +{ +public: + typedef void(*CallbackT)(const MReq&, MRes&); + + ServiceServer(const char* topic_name, CallbackT cb) : + pub(topic_name, &resp, rosserial_msgs::TopicInfo::ID_SERVICE_SERVER + rosserial_msgs::TopicInfo::ID_PUBLISHER) + { + this->topic_ = topic_name; + this->cb_ = cb; + } + + // these refer to the subscriber + virtual void callback(unsigned char *data) + { + req.deserialize(data); + cb_(req, resp); + pub.publish(&resp); + } + virtual const char * getMsgType() + { + return this->req.getType(); + } + virtual const char * getMsgMD5() + { + return this->req.getMD5(); + } + virtual int getEndpointType() + { + return rosserial_msgs::TopicInfo::ID_SERVICE_SERVER + rosserial_msgs::TopicInfo::ID_SUBSCRIBER; + } + + MReq req; + MRes resp; + Publisher pub; +private: + CallbackT cb_; +}; + +} + +#endif diff --git a/source/ros-max-lib/ros_lib/ros/subscriber.h b/source/ros-max-lib/ros_lib/ros/subscriber.h new file mode 100644 index 0000000..0f7364a --- /dev/null +++ b/source/ros-max-lib/ros_lib/ros/subscriber.h @@ -0,0 +1,140 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2011, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef ROS_SUBSCRIBER_H_ +#define ROS_SUBSCRIBER_H_ + +#include "../rosserial_msgs/TopicInfo.h" + +namespace ros +{ + +/* Base class for objects subscribers. */ +class Subscriber_ +{ +public: + virtual void callback(unsigned char *data) = 0; + virtual int getEndpointType() = 0; + + // id_ is set by NodeHandle when we advertise + int id_; + + virtual const char * getMsgType() = 0; + virtual const char * getMsgMD5() = 0; + const char * topic_; +}; + +/* Bound function subscriber. */ +template +class Subscriber: public Subscriber_ +{ +public: + typedef void(ObjT::*CallbackT)(const MsgT&); + MsgT msg; + + Subscriber(const char * topic_name, CallbackT cb, ObjT* obj, int endpoint = rosserial_msgs::TopicInfo::ID_SUBSCRIBER) : + cb_(cb), + obj_(obj), + endpoint_(endpoint) + { + topic_ = topic_name; + }; + + virtual void callback(unsigned char* data) + { + msg.deserialize(data); + (obj_->*cb_)(msg); + } + + virtual const char * getMsgType() + { + return this->msg.getType(); + } + virtual const char * getMsgMD5() + { + return this->msg.getMD5(); + } + virtual int getEndpointType() + { + return endpoint_; + } + +private: + CallbackT cb_; + ObjT* obj_; + int endpoint_; +}; + +/* Standalone function subscriber. */ +template +class Subscriber: public Subscriber_ +{ +public: + typedef void(*CallbackT)(const MsgT&); + MsgT msg; + + Subscriber(const char * topic_name, CallbackT cb, int endpoint = rosserial_msgs::TopicInfo::ID_SUBSCRIBER) : + cb_(cb), + endpoint_(endpoint) + { + topic_ = topic_name; + }; + + virtual void callback(unsigned char* data) + { + msg.deserialize(data); + this->cb_(msg); + } + + virtual const char * getMsgType() + { + return this->msg.getType(); + } + virtual const char * getMsgMD5() + { + return this->msg.getMD5(); + } + virtual int getEndpointType() + { + return endpoint_; + } + +private: + CallbackT cb_; + int endpoint_; +}; + +} + +#endif diff --git a/source/ros-max-lib/ros_lib/ros/time.h b/source/ros-max-lib/ros_lib/ros/time.h new file mode 100644 index 0000000..72657cb --- /dev/null +++ b/source/ros-max-lib/ros_lib/ros/time.h @@ -0,0 +1,82 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2011, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef ROS_TIME_H_ +#define ROS_TIME_H_ + +#include "duration.h" +#include +#include + +namespace ros +{ +void normalizeSecNSec(uint32_t &sec, uint32_t &nsec); + +class Time +{ +public: + uint32_t sec, nsec; + + Time() : sec(0), nsec(0) {} + Time(uint32_t _sec, uint32_t _nsec) : sec(_sec), nsec(_nsec) + { + normalizeSecNSec(sec, nsec); + } + + double toSec() const + { + return (double)sec + 1e-9 * (double)nsec; + }; + void fromSec(double t) + { + sec = (uint32_t) floor(t); + nsec = (uint32_t) round((t - sec) * 1e9); + }; + + uint32_t toNsec() + { + return (uint32_t)sec * 1000000000ull + (uint32_t)nsec; + }; + Time& fromNSec(int32_t t); + + Time& operator +=(const Duration &rhs); + Time& operator -=(const Duration &rhs); + + static Time now(); + static void setNow(Time & new_now); +}; + +} + +#endif diff --git a/source/ros-max-lib/ros_lib/roscpp/Empty.h b/source/ros-max-lib/ros_lib/roscpp/Empty.h new file mode 100644 index 0000000..df021b7 --- /dev/null +++ b/source/ros-max-lib/ros_lib/roscpp/Empty.h @@ -0,0 +1,70 @@ +#ifndef _ROS_SERVICE_Empty_h +#define _ROS_SERVICE_Empty_h +#include +#include +#include +#include "ros/msg.h" + +namespace roscpp +{ + +static const char EMPTY[] = "roscpp/Empty"; + + class EmptyRequest : public ros::Msg + { + public: + + EmptyRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return EMPTY; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class EmptyResponse : public ros::Msg + { + public: + + EmptyResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return EMPTY; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class Empty { + public: + typedef EmptyRequest Request; + typedef EmptyResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/roscpp/GetLoggers.h b/source/ros-max-lib/ros_lib/roscpp/GetLoggers.h new file mode 100644 index 0000000..35f67fb --- /dev/null +++ b/source/ros-max-lib/ros_lib/roscpp/GetLoggers.h @@ -0,0 +1,96 @@ +#ifndef _ROS_SERVICE_GetLoggers_h +#define _ROS_SERVICE_GetLoggers_h +#include +#include +#include +#include "ros/msg.h" +#include "roscpp/Logger.h" + +namespace roscpp +{ + +static const char GETLOGGERS[] = "roscpp/GetLoggers"; + + class GetLoggersRequest : public ros::Msg + { + public: + + GetLoggersRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return GETLOGGERS; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class GetLoggersResponse : public ros::Msg + { + public: + uint32_t loggers_length; + typedef roscpp::Logger _loggers_type; + _loggers_type st_loggers; + _loggers_type * loggers; + + GetLoggersResponse(): + loggers_length(0), loggers(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->loggers_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->loggers_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->loggers_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->loggers_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->loggers_length); + for( uint32_t i = 0; i < loggers_length; i++){ + offset += this->loggers[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t loggers_lengthT = ((uint32_t) (*(inbuffer + offset))); + loggers_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + loggers_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + loggers_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->loggers_length); + if(loggers_lengthT > loggers_length) + this->loggers = (roscpp::Logger*)realloc(this->loggers, loggers_lengthT * sizeof(roscpp::Logger)); + loggers_length = loggers_lengthT; + for( uint32_t i = 0; i < loggers_length; i++){ + offset += this->st_loggers.deserialize(inbuffer + offset); + memcpy( &(this->loggers[i]), &(this->st_loggers), sizeof(roscpp::Logger)); + } + return offset; + } + + const char * getType(){ return GETLOGGERS; }; + const char * getMD5(){ return "32e97e85527d4678a8f9279894bb64b0"; }; + + }; + + class GetLoggers { + public: + typedef GetLoggersRequest Request; + typedef GetLoggersResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/roscpp/Logger.h b/source/ros-max-lib/ros_lib/roscpp/Logger.h new file mode 100644 index 0000000..b954b71 --- /dev/null +++ b/source/ros-max-lib/ros_lib/roscpp/Logger.h @@ -0,0 +1,72 @@ +#ifndef _ROS_roscpp_Logger_h +#define _ROS_roscpp_Logger_h + +#include +#include +#include +#include "ros/msg.h" + +namespace roscpp +{ + + class Logger : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef const char* _level_type; + _level_type level; + + Logger(): + name(""), + level("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + uint32_t length_level = strlen(this->level); + varToArr(outbuffer + offset, length_level); + offset += 4; + memcpy(outbuffer + offset, this->level, length_level); + offset += length_level; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + uint32_t length_level; + arrToVar(length_level, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_level; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_level-1]=0; + this->level = (char *)(inbuffer + offset-1); + offset += length_level; + return offset; + } + + const char * getType(){ return "roscpp/Logger"; }; + const char * getMD5(){ return "a6069a2ff40db7bd32143dd66e1f408e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/roscpp/SetLoggerLevel.h b/source/ros-max-lib/ros_lib/roscpp/SetLoggerLevel.h new file mode 100644 index 0000000..64f2a24 --- /dev/null +++ b/source/ros-max-lib/ros_lib/roscpp/SetLoggerLevel.h @@ -0,0 +1,104 @@ +#ifndef _ROS_SERVICE_SetLoggerLevel_h +#define _ROS_SERVICE_SetLoggerLevel_h +#include +#include +#include +#include "ros/msg.h" + +namespace roscpp +{ + +static const char SETLOGGERLEVEL[] = "roscpp/SetLoggerLevel"; + + class SetLoggerLevelRequest : public ros::Msg + { + public: + typedef const char* _logger_type; + _logger_type logger; + typedef const char* _level_type; + _level_type level; + + SetLoggerLevelRequest(): + logger(""), + level("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_logger = strlen(this->logger); + varToArr(outbuffer + offset, length_logger); + offset += 4; + memcpy(outbuffer + offset, this->logger, length_logger); + offset += length_logger; + uint32_t length_level = strlen(this->level); + varToArr(outbuffer + offset, length_level); + offset += 4; + memcpy(outbuffer + offset, this->level, length_level); + offset += length_level; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_logger; + arrToVar(length_logger, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_logger; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_logger-1]=0; + this->logger = (char *)(inbuffer + offset-1); + offset += length_logger; + uint32_t length_level; + arrToVar(length_level, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_level; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_level-1]=0; + this->level = (char *)(inbuffer + offset-1); + offset += length_level; + return offset; + } + + const char * getType(){ return SETLOGGERLEVEL; }; + const char * getMD5(){ return "51da076440d78ca1684d36c868df61ea"; }; + + }; + + class SetLoggerLevelResponse : public ros::Msg + { + public: + + SetLoggerLevelResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return SETLOGGERLEVEL; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class SetLoggerLevel { + public: + typedef SetLoggerLevelRequest Request; + typedef SetLoggerLevelResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/roscpp_tutorials/TwoInts.h b/source/ros-max-lib/ros_lib/roscpp_tutorials/TwoInts.h new file mode 100644 index 0000000..03510bb --- /dev/null +++ b/source/ros-max-lib/ros_lib/roscpp_tutorials/TwoInts.h @@ -0,0 +1,166 @@ +#ifndef _ROS_SERVICE_TwoInts_h +#define _ROS_SERVICE_TwoInts_h +#include +#include +#include +#include "ros/msg.h" + +namespace roscpp_tutorials +{ + +static const char TWOINTS[] = "roscpp_tutorials/TwoInts"; + + class TwoIntsRequest : public ros::Msg + { + public: + typedef int64_t _a_type; + _a_type a; + typedef int64_t _b_type; + _b_type b; + + TwoIntsRequest(): + a(0), + b(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_a; + u_a.real = this->a; + *(outbuffer + offset + 0) = (u_a.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_a.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_a.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_a.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_a.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_a.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_a.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_a.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->a); + union { + int64_t real; + uint64_t base; + } u_b; + u_b.real = this->b; + *(outbuffer + offset + 0) = (u_b.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_b.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_b.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_b.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_b.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_b.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_b.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_b.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->b); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_a; + u_a.base = 0; + u_a.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->a = u_a.real; + offset += sizeof(this->a); + union { + int64_t real; + uint64_t base; + } u_b; + u_b.base = 0; + u_b.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->b = u_b.real; + offset += sizeof(this->b); + return offset; + } + + const char * getType(){ return TWOINTS; }; + const char * getMD5(){ return "36d09b846be0b371c5f190354dd3153e"; }; + + }; + + class TwoIntsResponse : public ros::Msg + { + public: + typedef int64_t _sum_type; + _sum_type sum; + + TwoIntsResponse(): + sum(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_sum; + u_sum.real = this->sum; + *(outbuffer + offset + 0) = (u_sum.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_sum.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_sum.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_sum.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_sum.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_sum.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_sum.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_sum.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->sum); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_sum; + u_sum.base = 0; + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->sum = u_sum.real; + offset += sizeof(this->sum); + return offset; + } + + const char * getType(){ return TWOINTS; }; + const char * getMD5(){ return "b88405221c77b1878a3cbbfff53428d7"; }; + + }; + + class TwoInts { + public: + typedef TwoIntsRequest Request; + typedef TwoIntsResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/rosgraph_msgs/Clock.h b/source/ros-max-lib/ros_lib/rosgraph_msgs/Clock.h new file mode 100644 index 0000000..4d8736c --- /dev/null +++ b/source/ros-max-lib/ros_lib/rosgraph_msgs/Clock.h @@ -0,0 +1,62 @@ +#ifndef _ROS_rosgraph_msgs_Clock_h +#define _ROS_rosgraph_msgs_Clock_h + +#include +#include +#include +#include "ros/msg.h" +#include "ros/time.h" + +namespace rosgraph_msgs +{ + + class Clock : public ros::Msg + { + public: + typedef ros::Time _clock_type; + _clock_type clock; + + Clock(): + clock() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->clock.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->clock.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->clock.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->clock.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->clock.sec); + *(outbuffer + offset + 0) = (this->clock.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->clock.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->clock.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->clock.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->clock.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->clock.sec = ((uint32_t) (*(inbuffer + offset))); + this->clock.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->clock.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->clock.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->clock.sec); + this->clock.nsec = ((uint32_t) (*(inbuffer + offset))); + this->clock.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->clock.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->clock.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->clock.nsec); + return offset; + } + + const char * getType(){ return "rosgraph_msgs/Clock"; }; + const char * getMD5(){ return "a9c97c1d230cfc112e270351a944ee47"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/rosgraph_msgs/Log.h b/source/ros-max-lib/ros_lib/rosgraph_msgs/Log.h new file mode 100644 index 0000000..45c4566 --- /dev/null +++ b/source/ros-max-lib/ros_lib/rosgraph_msgs/Log.h @@ -0,0 +1,185 @@ +#ifndef _ROS_rosgraph_msgs_Log_h +#define _ROS_rosgraph_msgs_Log_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace rosgraph_msgs +{ + + class Log : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef int8_t _level_type; + _level_type level; + typedef const char* _name_type; + _name_type name; + typedef const char* _msg_type; + _msg_type msg; + typedef const char* _file_type; + _file_type file; + typedef const char* _function_type; + _function_type function; + typedef uint32_t _line_type; + _line_type line; + uint32_t topics_length; + typedef char* _topics_type; + _topics_type st_topics; + _topics_type * topics; + enum { DEBUG = 1 }; + enum { INFO = 2 }; + enum { WARN = 4 }; + enum { ERROR = 8 }; + enum { FATAL = 16 }; + + Log(): + header(), + level(0), + name(""), + msg(""), + file(""), + function(""), + line(0), + topics_length(0), topics(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + union { + int8_t real; + uint8_t base; + } u_level; + u_level.real = this->level; + *(outbuffer + offset + 0) = (u_level.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->level); + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + uint32_t length_msg = strlen(this->msg); + varToArr(outbuffer + offset, length_msg); + offset += 4; + memcpy(outbuffer + offset, this->msg, length_msg); + offset += length_msg; + uint32_t length_file = strlen(this->file); + varToArr(outbuffer + offset, length_file); + offset += 4; + memcpy(outbuffer + offset, this->file, length_file); + offset += length_file; + uint32_t length_function = strlen(this->function); + varToArr(outbuffer + offset, length_function); + offset += 4; + memcpy(outbuffer + offset, this->function, length_function); + offset += length_function; + *(outbuffer + offset + 0) = (this->line >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->line >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->line >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->line >> (8 * 3)) & 0xFF; + offset += sizeof(this->line); + *(outbuffer + offset + 0) = (this->topics_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->topics_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->topics_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->topics_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->topics_length); + for( uint32_t i = 0; i < topics_length; i++){ + uint32_t length_topicsi = strlen(this->topics[i]); + varToArr(outbuffer + offset, length_topicsi); + offset += 4; + memcpy(outbuffer + offset, this->topics[i], length_topicsi); + offset += length_topicsi; + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + union { + int8_t real; + uint8_t base; + } u_level; + u_level.base = 0; + u_level.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->level = u_level.real; + offset += sizeof(this->level); + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + uint32_t length_msg; + arrToVar(length_msg, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_msg; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_msg-1]=0; + this->msg = (char *)(inbuffer + offset-1); + offset += length_msg; + uint32_t length_file; + arrToVar(length_file, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_file; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_file-1]=0; + this->file = (char *)(inbuffer + offset-1); + offset += length_file; + uint32_t length_function; + arrToVar(length_function, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_function; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_function-1]=0; + this->function = (char *)(inbuffer + offset-1); + offset += length_function; + this->line = ((uint32_t) (*(inbuffer + offset))); + this->line |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->line |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->line |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->line); + uint32_t topics_lengthT = ((uint32_t) (*(inbuffer + offset))); + topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->topics_length); + if(topics_lengthT > topics_length) + this->topics = (char**)realloc(this->topics, topics_lengthT * sizeof(char*)); + topics_length = topics_lengthT; + for( uint32_t i = 0; i < topics_length; i++){ + uint32_t length_st_topics; + arrToVar(length_st_topics, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_topics; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_topics-1]=0; + this->st_topics = (char *)(inbuffer + offset-1); + offset += length_st_topics; + memcpy( &(this->topics[i]), &(this->st_topics), sizeof(char*)); + } + return offset; + } + + const char * getType(){ return "rosgraph_msgs/Log"; }; + const char * getMD5(){ return "acffd30cd6b6de30f120938c17c593fb"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/rosgraph_msgs/TopicStatistics.h b/source/ros-max-lib/ros_lib/rosgraph_msgs/TopicStatistics.h new file mode 100644 index 0000000..c62f2f9 --- /dev/null +++ b/source/ros-max-lib/ros_lib/rosgraph_msgs/TopicStatistics.h @@ -0,0 +1,347 @@ +#ifndef _ROS_rosgraph_msgs_TopicStatistics_h +#define _ROS_rosgraph_msgs_TopicStatistics_h + +#include +#include +#include +#include "ros/msg.h" +#include "ros/time.h" +#include "ros/duration.h" + +namespace rosgraph_msgs +{ + + class TopicStatistics : public ros::Msg + { + public: + typedef const char* _topic_type; + _topic_type topic; + typedef const char* _node_pub_type; + _node_pub_type node_pub; + typedef const char* _node_sub_type; + _node_sub_type node_sub; + typedef ros::Time _window_start_type; + _window_start_type window_start; + typedef ros::Time _window_stop_type; + _window_stop_type window_stop; + typedef int32_t _delivered_msgs_type; + _delivered_msgs_type delivered_msgs; + typedef int32_t _dropped_msgs_type; + _dropped_msgs_type dropped_msgs; + typedef int32_t _traffic_type; + _traffic_type traffic; + typedef ros::Duration _period_mean_type; + _period_mean_type period_mean; + typedef ros::Duration _period_stddev_type; + _period_stddev_type period_stddev; + typedef ros::Duration _period_max_type; + _period_max_type period_max; + typedef ros::Duration _stamp_age_mean_type; + _stamp_age_mean_type stamp_age_mean; + typedef ros::Duration _stamp_age_stddev_type; + _stamp_age_stddev_type stamp_age_stddev; + typedef ros::Duration _stamp_age_max_type; + _stamp_age_max_type stamp_age_max; + + TopicStatistics(): + topic(""), + node_pub(""), + node_sub(""), + window_start(), + window_stop(), + delivered_msgs(0), + dropped_msgs(0), + traffic(0), + period_mean(), + period_stddev(), + period_max(), + stamp_age_mean(), + stamp_age_stddev(), + stamp_age_max() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_topic = strlen(this->topic); + varToArr(outbuffer + offset, length_topic); + offset += 4; + memcpy(outbuffer + offset, this->topic, length_topic); + offset += length_topic; + uint32_t length_node_pub = strlen(this->node_pub); + varToArr(outbuffer + offset, length_node_pub); + offset += 4; + memcpy(outbuffer + offset, this->node_pub, length_node_pub); + offset += length_node_pub; + uint32_t length_node_sub = strlen(this->node_sub); + varToArr(outbuffer + offset, length_node_sub); + offset += 4; + memcpy(outbuffer + offset, this->node_sub, length_node_sub); + offset += length_node_sub; + *(outbuffer + offset + 0) = (this->window_start.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->window_start.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->window_start.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->window_start.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->window_start.sec); + *(outbuffer + offset + 0) = (this->window_start.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->window_start.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->window_start.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->window_start.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->window_start.nsec); + *(outbuffer + offset + 0) = (this->window_stop.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->window_stop.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->window_stop.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->window_stop.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->window_stop.sec); + *(outbuffer + offset + 0) = (this->window_stop.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->window_stop.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->window_stop.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->window_stop.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->window_stop.nsec); + union { + int32_t real; + uint32_t base; + } u_delivered_msgs; + u_delivered_msgs.real = this->delivered_msgs; + *(outbuffer + offset + 0) = (u_delivered_msgs.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_delivered_msgs.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_delivered_msgs.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_delivered_msgs.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->delivered_msgs); + union { + int32_t real; + uint32_t base; + } u_dropped_msgs; + u_dropped_msgs.real = this->dropped_msgs; + *(outbuffer + offset + 0) = (u_dropped_msgs.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_dropped_msgs.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_dropped_msgs.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_dropped_msgs.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->dropped_msgs); + union { + int32_t real; + uint32_t base; + } u_traffic; + u_traffic.real = this->traffic; + *(outbuffer + offset + 0) = (u_traffic.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_traffic.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_traffic.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_traffic.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->traffic); + *(outbuffer + offset + 0) = (this->period_mean.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->period_mean.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->period_mean.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->period_mean.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->period_mean.sec); + *(outbuffer + offset + 0) = (this->period_mean.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->period_mean.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->period_mean.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->period_mean.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->period_mean.nsec); + *(outbuffer + offset + 0) = (this->period_stddev.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->period_stddev.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->period_stddev.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->period_stddev.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->period_stddev.sec); + *(outbuffer + offset + 0) = (this->period_stddev.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->period_stddev.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->period_stddev.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->period_stddev.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->period_stddev.nsec); + *(outbuffer + offset + 0) = (this->period_max.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->period_max.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->period_max.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->period_max.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->period_max.sec); + *(outbuffer + offset + 0) = (this->period_max.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->period_max.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->period_max.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->period_max.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->period_max.nsec); + *(outbuffer + offset + 0) = (this->stamp_age_mean.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp_age_mean.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp_age_mean.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp_age_mean.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp_age_mean.sec); + *(outbuffer + offset + 0) = (this->stamp_age_mean.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp_age_mean.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp_age_mean.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp_age_mean.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp_age_mean.nsec); + *(outbuffer + offset + 0) = (this->stamp_age_stddev.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp_age_stddev.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp_age_stddev.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp_age_stddev.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp_age_stddev.sec); + *(outbuffer + offset + 0) = (this->stamp_age_stddev.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp_age_stddev.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp_age_stddev.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp_age_stddev.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp_age_stddev.nsec); + *(outbuffer + offset + 0) = (this->stamp_age_max.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp_age_max.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp_age_max.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp_age_max.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp_age_max.sec); + *(outbuffer + offset + 0) = (this->stamp_age_max.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp_age_max.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp_age_max.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp_age_max.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp_age_max.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_topic; + arrToVar(length_topic, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_topic; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_topic-1]=0; + this->topic = (char *)(inbuffer + offset-1); + offset += length_topic; + uint32_t length_node_pub; + arrToVar(length_node_pub, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_node_pub; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_node_pub-1]=0; + this->node_pub = (char *)(inbuffer + offset-1); + offset += length_node_pub; + uint32_t length_node_sub; + arrToVar(length_node_sub, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_node_sub; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_node_sub-1]=0; + this->node_sub = (char *)(inbuffer + offset-1); + offset += length_node_sub; + this->window_start.sec = ((uint32_t) (*(inbuffer + offset))); + this->window_start.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->window_start.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->window_start.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->window_start.sec); + this->window_start.nsec = ((uint32_t) (*(inbuffer + offset))); + this->window_start.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->window_start.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->window_start.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->window_start.nsec); + this->window_stop.sec = ((uint32_t) (*(inbuffer + offset))); + this->window_stop.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->window_stop.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->window_stop.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->window_stop.sec); + this->window_stop.nsec = ((uint32_t) (*(inbuffer + offset))); + this->window_stop.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->window_stop.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->window_stop.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->window_stop.nsec); + union { + int32_t real; + uint32_t base; + } u_delivered_msgs; + u_delivered_msgs.base = 0; + u_delivered_msgs.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_delivered_msgs.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_delivered_msgs.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_delivered_msgs.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->delivered_msgs = u_delivered_msgs.real; + offset += sizeof(this->delivered_msgs); + union { + int32_t real; + uint32_t base; + } u_dropped_msgs; + u_dropped_msgs.base = 0; + u_dropped_msgs.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_dropped_msgs.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_dropped_msgs.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_dropped_msgs.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->dropped_msgs = u_dropped_msgs.real; + offset += sizeof(this->dropped_msgs); + union { + int32_t real; + uint32_t base; + } u_traffic; + u_traffic.base = 0; + u_traffic.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_traffic.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_traffic.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_traffic.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->traffic = u_traffic.real; + offset += sizeof(this->traffic); + this->period_mean.sec = ((uint32_t) (*(inbuffer + offset))); + this->period_mean.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->period_mean.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->period_mean.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->period_mean.sec); + this->period_mean.nsec = ((uint32_t) (*(inbuffer + offset))); + this->period_mean.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->period_mean.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->period_mean.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->period_mean.nsec); + this->period_stddev.sec = ((uint32_t) (*(inbuffer + offset))); + this->period_stddev.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->period_stddev.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->period_stddev.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->period_stddev.sec); + this->period_stddev.nsec = ((uint32_t) (*(inbuffer + offset))); + this->period_stddev.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->period_stddev.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->period_stddev.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->period_stddev.nsec); + this->period_max.sec = ((uint32_t) (*(inbuffer + offset))); + this->period_max.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->period_max.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->period_max.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->period_max.sec); + this->period_max.nsec = ((uint32_t) (*(inbuffer + offset))); + this->period_max.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->period_max.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->period_max.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->period_max.nsec); + this->stamp_age_mean.sec = ((uint32_t) (*(inbuffer + offset))); + this->stamp_age_mean.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp_age_mean.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp_age_mean.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp_age_mean.sec); + this->stamp_age_mean.nsec = ((uint32_t) (*(inbuffer + offset))); + this->stamp_age_mean.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp_age_mean.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp_age_mean.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp_age_mean.nsec); + this->stamp_age_stddev.sec = ((uint32_t) (*(inbuffer + offset))); + this->stamp_age_stddev.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp_age_stddev.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp_age_stddev.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp_age_stddev.sec); + this->stamp_age_stddev.nsec = ((uint32_t) (*(inbuffer + offset))); + this->stamp_age_stddev.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp_age_stddev.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp_age_stddev.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp_age_stddev.nsec); + this->stamp_age_max.sec = ((uint32_t) (*(inbuffer + offset))); + this->stamp_age_max.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp_age_max.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp_age_max.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp_age_max.sec); + this->stamp_age_max.nsec = ((uint32_t) (*(inbuffer + offset))); + this->stamp_age_max.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp_age_max.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp_age_max.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp_age_max.nsec); + return offset; + } + + const char * getType(){ return "rosgraph_msgs/TopicStatistics"; }; + const char * getMD5(){ return "10152ed868c5097a5e2e4a89d7daa710"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/rospy_tutorials/AddTwoInts.h b/source/ros-max-lib/ros_lib/rospy_tutorials/AddTwoInts.h new file mode 100644 index 0000000..04dec98 --- /dev/null +++ b/source/ros-max-lib/ros_lib/rospy_tutorials/AddTwoInts.h @@ -0,0 +1,166 @@ +#ifndef _ROS_SERVICE_AddTwoInts_h +#define _ROS_SERVICE_AddTwoInts_h +#include +#include +#include +#include "ros/msg.h" + +namespace rospy_tutorials +{ + +static const char ADDTWOINTS[] = "rospy_tutorials/AddTwoInts"; + + class AddTwoIntsRequest : public ros::Msg + { + public: + typedef int64_t _a_type; + _a_type a; + typedef int64_t _b_type; + _b_type b; + + AddTwoIntsRequest(): + a(0), + b(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_a; + u_a.real = this->a; + *(outbuffer + offset + 0) = (u_a.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_a.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_a.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_a.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_a.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_a.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_a.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_a.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->a); + union { + int64_t real; + uint64_t base; + } u_b; + u_b.real = this->b; + *(outbuffer + offset + 0) = (u_b.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_b.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_b.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_b.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_b.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_b.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_b.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_b.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->b); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_a; + u_a.base = 0; + u_a.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->a = u_a.real; + offset += sizeof(this->a); + union { + int64_t real; + uint64_t base; + } u_b; + u_b.base = 0; + u_b.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_b.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->b = u_b.real; + offset += sizeof(this->b); + return offset; + } + + const char * getType(){ return ADDTWOINTS; }; + const char * getMD5(){ return "36d09b846be0b371c5f190354dd3153e"; }; + + }; + + class AddTwoIntsResponse : public ros::Msg + { + public: + typedef int64_t _sum_type; + _sum_type sum; + + AddTwoIntsResponse(): + sum(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_sum; + u_sum.real = this->sum; + *(outbuffer + offset + 0) = (u_sum.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_sum.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_sum.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_sum.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_sum.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_sum.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_sum.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_sum.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->sum); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_sum; + u_sum.base = 0; + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_sum.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->sum = u_sum.real; + offset += sizeof(this->sum); + return offset; + } + + const char * getType(){ return ADDTWOINTS; }; + const char * getMD5(){ return "b88405221c77b1878a3cbbfff53428d7"; }; + + }; + + class AddTwoInts { + public: + typedef AddTwoIntsRequest Request; + typedef AddTwoIntsResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/rospy_tutorials/BadTwoInts.h b/source/ros-max-lib/ros_lib/rospy_tutorials/BadTwoInts.h new file mode 100644 index 0000000..0218f54 --- /dev/null +++ b/source/ros-max-lib/ros_lib/rospy_tutorials/BadTwoInts.h @@ -0,0 +1,150 @@ +#ifndef _ROS_SERVICE_BadTwoInts_h +#define _ROS_SERVICE_BadTwoInts_h +#include +#include +#include +#include "ros/msg.h" + +namespace rospy_tutorials +{ + +static const char BADTWOINTS[] = "rospy_tutorials/BadTwoInts"; + + class BadTwoIntsRequest : public ros::Msg + { + public: + typedef int64_t _a_type; + _a_type a; + typedef int32_t _b_type; + _b_type b; + + BadTwoIntsRequest(): + a(0), + b(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_a; + u_a.real = this->a; + *(outbuffer + offset + 0) = (u_a.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_a.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_a.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_a.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_a.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_a.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_a.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_a.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->a); + union { + int32_t real; + uint32_t base; + } u_b; + u_b.real = this->b; + *(outbuffer + offset + 0) = (u_b.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_b.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_b.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_b.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->b); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_a; + u_a.base = 0; + u_a.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_a.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->a = u_a.real; + offset += sizeof(this->a); + union { + int32_t real; + uint32_t base; + } u_b; + u_b.base = 0; + u_b.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_b.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_b.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_b.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->b = u_b.real; + offset += sizeof(this->b); + return offset; + } + + const char * getType(){ return BADTWOINTS; }; + const char * getMD5(){ return "29bb5c7dea8bf822f53e94b0ee5a3a56"; }; + + }; + + class BadTwoIntsResponse : public ros::Msg + { + public: + typedef int32_t _sum_type; + _sum_type sum; + + BadTwoIntsResponse(): + sum(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_sum; + u_sum.real = this->sum; + *(outbuffer + offset + 0) = (u_sum.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_sum.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_sum.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_sum.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->sum); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_sum; + u_sum.base = 0; + u_sum.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_sum.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_sum.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_sum.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->sum = u_sum.real; + offset += sizeof(this->sum); + return offset; + } + + const char * getType(){ return BADTWOINTS; }; + const char * getMD5(){ return "0ba699c25c9418c0366f3595c0c8e8ec"; }; + + }; + + class BadTwoInts { + public: + typedef BadTwoIntsRequest Request; + typedef BadTwoIntsResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/rospy_tutorials/Floats.h b/source/ros-max-lib/ros_lib/rospy_tutorials/Floats.h new file mode 100644 index 0000000..c0d284c --- /dev/null +++ b/source/ros-max-lib/ros_lib/rospy_tutorials/Floats.h @@ -0,0 +1,82 @@ +#ifndef _ROS_rospy_tutorials_Floats_h +#define _ROS_rospy_tutorials_Floats_h + +#include +#include +#include +#include "ros/msg.h" + +namespace rospy_tutorials +{ + + class Floats : public ros::Msg + { + public: + uint32_t data_length; + typedef float _data_type; + _data_type st_data; + _data_type * data; + + Floats(): + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + union { + float real; + uint32_t base; + } u_datai; + u_datai.real = this->data[i]; + *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_datai.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_datai.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_datai.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (float*)realloc(this->data, data_lengthT * sizeof(float)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + union { + float real; + uint32_t base; + } u_st_data; + u_st_data.base = 0; + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_data = u_st_data.real; + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(float)); + } + return offset; + } + + const char * getType(){ return "rospy_tutorials/Floats"; }; + const char * getMD5(){ return "420cd38b6b071cd49f2970c3e2cee511"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/rospy_tutorials/HeaderString.h b/source/ros-max-lib/ros_lib/rospy_tutorials/HeaderString.h new file mode 100644 index 0000000..9fac4ef --- /dev/null +++ b/source/ros-max-lib/ros_lib/rospy_tutorials/HeaderString.h @@ -0,0 +1,61 @@ +#ifndef _ROS_rospy_tutorials_HeaderString_h +#define _ROS_rospy_tutorials_HeaderString_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace rospy_tutorials +{ + + class HeaderString : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef const char* _data_type; + _data_type data; + + HeaderString(): + header(), + data("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + uint32_t length_data = strlen(this->data); + varToArr(outbuffer + offset, length_data); + offset += 4; + memcpy(outbuffer + offset, this->data, length_data); + offset += length_data; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t length_data; + arrToVar(length_data, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_data; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_data-1]=0; + this->data = (char *)(inbuffer + offset-1); + offset += length_data; + return offset; + } + + const char * getType(){ return "rospy_tutorials/HeaderString"; }; + const char * getMD5(){ return "c99a9440709e4d4a9716d55b8270d5e7"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/rosserial_arduino/Adc.h b/source/ros-max-lib/ros_lib/rosserial_arduino/Adc.h new file mode 100644 index 0000000..ac48677 --- /dev/null +++ b/source/ros-max-lib/ros_lib/rosserial_arduino/Adc.h @@ -0,0 +1,92 @@ +#ifndef _ROS_rosserial_arduino_Adc_h +#define _ROS_rosserial_arduino_Adc_h + +#include +#include +#include +#include "ros/msg.h" + +namespace rosserial_arduino +{ + + class Adc : public ros::Msg + { + public: + typedef uint16_t _adc0_type; + _adc0_type adc0; + typedef uint16_t _adc1_type; + _adc1_type adc1; + typedef uint16_t _adc2_type; + _adc2_type adc2; + typedef uint16_t _adc3_type; + _adc3_type adc3; + typedef uint16_t _adc4_type; + _adc4_type adc4; + typedef uint16_t _adc5_type; + _adc5_type adc5; + + Adc(): + adc0(0), + adc1(0), + adc2(0), + adc3(0), + adc4(0), + adc5(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->adc0 >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->adc0 >> (8 * 1)) & 0xFF; + offset += sizeof(this->adc0); + *(outbuffer + offset + 0) = (this->adc1 >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->adc1 >> (8 * 1)) & 0xFF; + offset += sizeof(this->adc1); + *(outbuffer + offset + 0) = (this->adc2 >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->adc2 >> (8 * 1)) & 0xFF; + offset += sizeof(this->adc2); + *(outbuffer + offset + 0) = (this->adc3 >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->adc3 >> (8 * 1)) & 0xFF; + offset += sizeof(this->adc3); + *(outbuffer + offset + 0) = (this->adc4 >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->adc4 >> (8 * 1)) & 0xFF; + offset += sizeof(this->adc4); + *(outbuffer + offset + 0) = (this->adc5 >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->adc5 >> (8 * 1)) & 0xFF; + offset += sizeof(this->adc5); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->adc0 = ((uint16_t) (*(inbuffer + offset))); + this->adc0 |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->adc0); + this->adc1 = ((uint16_t) (*(inbuffer + offset))); + this->adc1 |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->adc1); + this->adc2 = ((uint16_t) (*(inbuffer + offset))); + this->adc2 |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->adc2); + this->adc3 = ((uint16_t) (*(inbuffer + offset))); + this->adc3 |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->adc3); + this->adc4 = ((uint16_t) (*(inbuffer + offset))); + this->adc4 |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->adc4); + this->adc5 = ((uint16_t) (*(inbuffer + offset))); + this->adc5 |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->adc5); + return offset; + } + + const char * getType(){ return "rosserial_arduino/Adc"; }; + const char * getMD5(){ return "6d7853a614e2e821319068311f2af25b"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/rosserial_arduino/Test.h b/source/ros-max-lib/ros_lib/rosserial_arduino/Test.h new file mode 100644 index 0000000..cd806db --- /dev/null +++ b/source/ros-max-lib/ros_lib/rosserial_arduino/Test.h @@ -0,0 +1,104 @@ +#ifndef _ROS_SERVICE_Test_h +#define _ROS_SERVICE_Test_h +#include +#include +#include +#include "ros/msg.h" + +namespace rosserial_arduino +{ + +static const char TEST[] = "rosserial_arduino/Test"; + + class TestRequest : public ros::Msg + { + public: + typedef const char* _input_type; + _input_type input; + + TestRequest(): + input("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_input = strlen(this->input); + varToArr(outbuffer + offset, length_input); + offset += 4; + memcpy(outbuffer + offset, this->input, length_input); + offset += length_input; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_input; + arrToVar(length_input, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_input; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_input-1]=0; + this->input = (char *)(inbuffer + offset-1); + offset += length_input; + return offset; + } + + const char * getType(){ return TEST; }; + const char * getMD5(){ return "39e92f1778057359c64c7b8a7d7b19de"; }; + + }; + + class TestResponse : public ros::Msg + { + public: + typedef const char* _output_type; + _output_type output; + + TestResponse(): + output("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_output = strlen(this->output); + varToArr(outbuffer + offset, length_output); + offset += 4; + memcpy(outbuffer + offset, this->output, length_output); + offset += length_output; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_output; + arrToVar(length_output, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_output; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_output-1]=0; + this->output = (char *)(inbuffer + offset-1); + offset += length_output; + return offset; + } + + const char * getType(){ return TEST; }; + const char * getMD5(){ return "0825d95fdfa2c8f4bbb4e9c74bccd3fd"; }; + + }; + + class Test { + public: + typedef TestRequest Request; + typedef TestResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/rosserial_mbed/Adc.h b/source/ros-max-lib/ros_lib/rosserial_mbed/Adc.h new file mode 100644 index 0000000..0de6480 --- /dev/null +++ b/source/ros-max-lib/ros_lib/rosserial_mbed/Adc.h @@ -0,0 +1,92 @@ +#ifndef _ROS_rosserial_mbed_Adc_h +#define _ROS_rosserial_mbed_Adc_h + +#include +#include +#include +#include "ros/msg.h" + +namespace rosserial_mbed +{ + + class Adc : public ros::Msg + { + public: + typedef uint16_t _adc0_type; + _adc0_type adc0; + typedef uint16_t _adc1_type; + _adc1_type adc1; + typedef uint16_t _adc2_type; + _adc2_type adc2; + typedef uint16_t _adc3_type; + _adc3_type adc3; + typedef uint16_t _adc4_type; + _adc4_type adc4; + typedef uint16_t _adc5_type; + _adc5_type adc5; + + Adc(): + adc0(0), + adc1(0), + adc2(0), + adc3(0), + adc4(0), + adc5(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->adc0 >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->adc0 >> (8 * 1)) & 0xFF; + offset += sizeof(this->adc0); + *(outbuffer + offset + 0) = (this->adc1 >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->adc1 >> (8 * 1)) & 0xFF; + offset += sizeof(this->adc1); + *(outbuffer + offset + 0) = (this->adc2 >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->adc2 >> (8 * 1)) & 0xFF; + offset += sizeof(this->adc2); + *(outbuffer + offset + 0) = (this->adc3 >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->adc3 >> (8 * 1)) & 0xFF; + offset += sizeof(this->adc3); + *(outbuffer + offset + 0) = (this->adc4 >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->adc4 >> (8 * 1)) & 0xFF; + offset += sizeof(this->adc4); + *(outbuffer + offset + 0) = (this->adc5 >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->adc5 >> (8 * 1)) & 0xFF; + offset += sizeof(this->adc5); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->adc0 = ((uint16_t) (*(inbuffer + offset))); + this->adc0 |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->adc0); + this->adc1 = ((uint16_t) (*(inbuffer + offset))); + this->adc1 |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->adc1); + this->adc2 = ((uint16_t) (*(inbuffer + offset))); + this->adc2 |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->adc2); + this->adc3 = ((uint16_t) (*(inbuffer + offset))); + this->adc3 |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->adc3); + this->adc4 = ((uint16_t) (*(inbuffer + offset))); + this->adc4 |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->adc4); + this->adc5 = ((uint16_t) (*(inbuffer + offset))); + this->adc5 |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->adc5); + return offset; + } + + const char * getType(){ return "rosserial_mbed/Adc"; }; + const char * getMD5(){ return "6d7853a614e2e821319068311f2af25b"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/rosserial_mbed/Test.h b/source/ros-max-lib/ros_lib/rosserial_mbed/Test.h new file mode 100644 index 0000000..6a2658f --- /dev/null +++ b/source/ros-max-lib/ros_lib/rosserial_mbed/Test.h @@ -0,0 +1,104 @@ +#ifndef _ROS_SERVICE_Test_h +#define _ROS_SERVICE_Test_h +#include +#include +#include +#include "ros/msg.h" + +namespace rosserial_mbed +{ + +static const char TEST[] = "rosserial_mbed/Test"; + + class TestRequest : public ros::Msg + { + public: + typedef const char* _input_type; + _input_type input; + + TestRequest(): + input("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_input = strlen(this->input); + varToArr(outbuffer + offset, length_input); + offset += 4; + memcpy(outbuffer + offset, this->input, length_input); + offset += length_input; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_input; + arrToVar(length_input, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_input; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_input-1]=0; + this->input = (char *)(inbuffer + offset-1); + offset += length_input; + return offset; + } + + const char * getType(){ return TEST; }; + const char * getMD5(){ return "39e92f1778057359c64c7b8a7d7b19de"; }; + + }; + + class TestResponse : public ros::Msg + { + public: + typedef const char* _output_type; + _output_type output; + + TestResponse(): + output("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_output = strlen(this->output); + varToArr(outbuffer + offset, length_output); + offset += 4; + memcpy(outbuffer + offset, this->output, length_output); + offset += length_output; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_output; + arrToVar(length_output, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_output; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_output-1]=0; + this->output = (char *)(inbuffer + offset-1); + offset += length_output; + return offset; + } + + const char * getType(){ return TEST; }; + const char * getMD5(){ return "0825d95fdfa2c8f4bbb4e9c74bccd3fd"; }; + + }; + + class Test { + public: + typedef TestRequest Request; + typedef TestResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/rosserial_msgs/Log.h b/source/ros-max-lib/ros_lib/rosserial_msgs/Log.h new file mode 100644 index 0000000..a162ca8 --- /dev/null +++ b/source/ros-max-lib/ros_lib/rosserial_msgs/Log.h @@ -0,0 +1,67 @@ +#ifndef _ROS_rosserial_msgs_Log_h +#define _ROS_rosserial_msgs_Log_h + +#include +#include +#include +#include "../ros/msg.h" + +namespace rosserial_msgs +{ + + class Log : public ros::Msg + { + public: + typedef uint8_t _level_type; + _level_type level; + typedef const char* _msg_type; + _msg_type msg; + enum { ROSDEBUG = 0 }; + enum { INFO = 1 }; + enum { WARN = 2 }; + enum { ERROR = 3 }; + enum { FATAL = 4 }; + + Log(): + level(0), + msg("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->level >> (8 * 0)) & 0xFF; + offset += sizeof(this->level); + uint32_t length_msg = strlen(this->msg); + varToArr(outbuffer + offset, length_msg); + offset += 4; + memcpy(outbuffer + offset, this->msg, length_msg); + offset += length_msg; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->level = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->level); + uint32_t length_msg; + arrToVar(length_msg, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_msg; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_msg-1]=0; + this->msg = (char *)(inbuffer + offset-1); + offset += length_msg; + return offset; + } + + const char * getType(){ return "rosserial_msgs/Log"; }; + const char * getMD5(){ return "11abd731c25933261cd6183bd12d6295"; }; + + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/rosserial_msgs/RequestMessageInfo.h b/source/ros-max-lib/ros_lib/rosserial_msgs/RequestMessageInfo.h new file mode 100644 index 0000000..3466ddc --- /dev/null +++ b/source/ros-max-lib/ros_lib/rosserial_msgs/RequestMessageInfo.h @@ -0,0 +1,121 @@ +#ifndef _ROS_SERVICE_RequestMessageInfo_h +#define _ROS_SERVICE_RequestMessageInfo_h +#include +#include +#include +#include "ros/msg.h" + +namespace rosserial_msgs +{ + +static const char REQUESTMESSAGEINFO[] = "rosserial_msgs/RequestMessageInfo"; + + class RequestMessageInfoRequest : public ros::Msg + { + public: + typedef const char* _type_type; + _type_type type; + + RequestMessageInfoRequest(): + type("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_type = strlen(this->type); + varToArr(outbuffer + offset, length_type); + offset += 4; + memcpy(outbuffer + offset, this->type, length_type); + offset += length_type; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_type; + arrToVar(length_type, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_type; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_type-1]=0; + this->type = (char *)(inbuffer + offset-1); + offset += length_type; + return offset; + } + + const char * getType(){ return REQUESTMESSAGEINFO; }; + const char * getMD5(){ return "dc67331de85cf97091b7d45e5c64ab75"; }; + + }; + + class RequestMessageInfoResponse : public ros::Msg + { + public: + typedef const char* _md5_type; + _md5_type md5; + typedef const char* _definition_type; + _definition_type definition; + + RequestMessageInfoResponse(): + md5(""), + definition("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_md5 = strlen(this->md5); + varToArr(outbuffer + offset, length_md5); + offset += 4; + memcpy(outbuffer + offset, this->md5, length_md5); + offset += length_md5; + uint32_t length_definition = strlen(this->definition); + varToArr(outbuffer + offset, length_definition); + offset += 4; + memcpy(outbuffer + offset, this->definition, length_definition); + offset += length_definition; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_md5; + arrToVar(length_md5, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_md5; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_md5-1]=0; + this->md5 = (char *)(inbuffer + offset-1); + offset += length_md5; + uint32_t length_definition; + arrToVar(length_definition, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_definition; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_definition-1]=0; + this->definition = (char *)(inbuffer + offset-1); + offset += length_definition; + return offset; + } + + const char * getType(){ return REQUESTMESSAGEINFO; }; + const char * getMD5(){ return "fe452186a069bed40f09b8628fe5eac8"; }; + + }; + + class RequestMessageInfo { + public: + typedef RequestMessageInfoRequest Request; + typedef RequestMessageInfoResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/rosserial_msgs/RequestParam.h b/source/ros-max-lib/ros_lib/rosserial_msgs/RequestParam.h new file mode 100644 index 0000000..aaecd13 --- /dev/null +++ b/source/ros-max-lib/ros_lib/rosserial_msgs/RequestParam.h @@ -0,0 +1,212 @@ +#ifndef _ROS_SERVICE_RequestParam_h +#define _ROS_SERVICE_RequestParam_h +#include +#include +#include +#include "../ros/msg.h" + +namespace rosserial_msgs +{ + +static const char REQUESTPARAM[] = "rosserial_msgs/RequestParam"; + + class RequestParamRequest : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + + RequestParamRequest(): + name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + return offset; + } + + const char * getType(){ return REQUESTPARAM; }; + const char * getMD5(){ return "c1f3d28f1b044c871e6eff2e9fc3c667"; }; + + }; + + class RequestParamResponse : public ros::Msg + { + public: + uint32_t ints_length; + typedef int32_t _ints_type; + _ints_type st_ints; + _ints_type * ints; + uint32_t floats_length; + typedef float _floats_type; + _floats_type st_floats; + _floats_type * floats; + uint32_t strings_length; + typedef char* _strings_type; + _strings_type st_strings; + _strings_type * strings; + + RequestParamResponse(): + ints_length(0), ints(NULL), + floats_length(0), floats(NULL), + strings_length(0), strings(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->ints_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->ints_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->ints_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->ints_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->ints_length); + for( uint32_t i = 0; i < ints_length; i++){ + union { + int32_t real; + uint32_t base; + } u_intsi; + u_intsi.real = this->ints[i]; + *(outbuffer + offset + 0) = (u_intsi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_intsi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_intsi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_intsi.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->ints[i]); + } + *(outbuffer + offset + 0) = (this->floats_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->floats_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->floats_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->floats_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->floats_length); + for( uint32_t i = 0; i < floats_length; i++){ + union { + float real; + uint32_t base; + } u_floatsi; + u_floatsi.real = this->floats[i]; + *(outbuffer + offset + 0) = (u_floatsi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_floatsi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_floatsi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_floatsi.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->floats[i]); + } + *(outbuffer + offset + 0) = (this->strings_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->strings_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->strings_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->strings_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->strings_length); + for( uint32_t i = 0; i < strings_length; i++){ + uint32_t length_stringsi = strlen(this->strings[i]); + varToArr(outbuffer + offset, length_stringsi); + offset += 4; + memcpy(outbuffer + offset, this->strings[i], length_stringsi); + offset += length_stringsi; + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t ints_lengthT = ((uint32_t) (*(inbuffer + offset))); + ints_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + ints_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + ints_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->ints_length); + if(ints_lengthT > ints_length) + this->ints = (int32_t*)realloc(this->ints, ints_lengthT * sizeof(int32_t)); + ints_length = ints_lengthT; + for( uint32_t i = 0; i < ints_length; i++){ + union { + int32_t real; + uint32_t base; + } u_st_ints; + u_st_ints.base = 0; + u_st_ints.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_ints.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_ints.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_ints.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_ints = u_st_ints.real; + offset += sizeof(this->st_ints); + memcpy( &(this->ints[i]), &(this->st_ints), sizeof(int32_t)); + } + uint32_t floats_lengthT = ((uint32_t) (*(inbuffer + offset))); + floats_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + floats_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + floats_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->floats_length); + if(floats_lengthT > floats_length) + this->floats = (float*)realloc(this->floats, floats_lengthT * sizeof(float)); + floats_length = floats_lengthT; + for( uint32_t i = 0; i < floats_length; i++){ + union { + float real; + uint32_t base; + } u_st_floats; + u_st_floats.base = 0; + u_st_floats.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_floats.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_floats.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_floats.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_floats = u_st_floats.real; + offset += sizeof(this->st_floats); + memcpy( &(this->floats[i]), &(this->st_floats), sizeof(float)); + } + uint32_t strings_lengthT = ((uint32_t) (*(inbuffer + offset))); + strings_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + strings_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + strings_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->strings_length); + if(strings_lengthT > strings_length) + this->strings = (char**)realloc(this->strings, strings_lengthT * sizeof(char*)); + strings_length = strings_lengthT; + for( uint32_t i = 0; i < strings_length; i++){ + uint32_t length_st_strings; + arrToVar(length_st_strings, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_strings; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_strings-1]=0; + this->st_strings = (char *)(inbuffer + offset-1); + offset += length_st_strings; + memcpy( &(this->strings[i]), &(this->st_strings), sizeof(char*)); + } + return offset; + } + + const char * getType(){ return REQUESTPARAM; }; + const char * getMD5(){ return "9f0e98bda65981986ddf53afa7a40e49"; }; + + }; + + class RequestParam { + public: + typedef RequestParamRequest Request; + typedef RequestParamResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/rosserial_msgs/RequestServiceInfo.h b/source/ros-max-lib/ros_lib/rosserial_msgs/RequestServiceInfo.h new file mode 100644 index 0000000..b18cf9d --- /dev/null +++ b/source/ros-max-lib/ros_lib/rosserial_msgs/RequestServiceInfo.h @@ -0,0 +1,138 @@ +#ifndef _ROS_SERVICE_RequestServiceInfo_h +#define _ROS_SERVICE_RequestServiceInfo_h +#include +#include +#include +#include "ros/msg.h" + +namespace rosserial_msgs +{ + +static const char REQUESTSERVICEINFO[] = "rosserial_msgs/RequestServiceInfo"; + + class RequestServiceInfoRequest : public ros::Msg + { + public: + typedef const char* _service_type; + _service_type service; + + RequestServiceInfoRequest(): + service("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_service = strlen(this->service); + varToArr(outbuffer + offset, length_service); + offset += 4; + memcpy(outbuffer + offset, this->service, length_service); + offset += length_service; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_service; + arrToVar(length_service, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_service; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_service-1]=0; + this->service = (char *)(inbuffer + offset-1); + offset += length_service; + return offset; + } + + const char * getType(){ return REQUESTSERVICEINFO; }; + const char * getMD5(){ return "1cbcfa13b08f6d36710b9af8741e6112"; }; + + }; + + class RequestServiceInfoResponse : public ros::Msg + { + public: + typedef const char* _service_md5_type; + _service_md5_type service_md5; + typedef const char* _request_md5_type; + _request_md5_type request_md5; + typedef const char* _response_md5_type; + _response_md5_type response_md5; + + RequestServiceInfoResponse(): + service_md5(""), + request_md5(""), + response_md5("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_service_md5 = strlen(this->service_md5); + varToArr(outbuffer + offset, length_service_md5); + offset += 4; + memcpy(outbuffer + offset, this->service_md5, length_service_md5); + offset += length_service_md5; + uint32_t length_request_md5 = strlen(this->request_md5); + varToArr(outbuffer + offset, length_request_md5); + offset += 4; + memcpy(outbuffer + offset, this->request_md5, length_request_md5); + offset += length_request_md5; + uint32_t length_response_md5 = strlen(this->response_md5); + varToArr(outbuffer + offset, length_response_md5); + offset += 4; + memcpy(outbuffer + offset, this->response_md5, length_response_md5); + offset += length_response_md5; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_service_md5; + arrToVar(length_service_md5, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_service_md5; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_service_md5-1]=0; + this->service_md5 = (char *)(inbuffer + offset-1); + offset += length_service_md5; + uint32_t length_request_md5; + arrToVar(length_request_md5, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_request_md5; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_request_md5-1]=0; + this->request_md5 = (char *)(inbuffer + offset-1); + offset += length_request_md5; + uint32_t length_response_md5; + arrToVar(length_response_md5, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_response_md5; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_response_md5-1]=0; + this->response_md5 = (char *)(inbuffer + offset-1); + offset += length_response_md5; + return offset; + } + + const char * getType(){ return REQUESTSERVICEINFO; }; + const char * getMD5(){ return "c3d6dd25b909596479fbbc6559fa6874"; }; + + }; + + class RequestServiceInfo { + public: + typedef RequestServiceInfoRequest Request; + typedef RequestServiceInfoResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/rosserial_msgs/TopicInfo.h b/source/ros-max-lib/ros_lib/rosserial_msgs/TopicInfo.h new file mode 100644 index 0000000..987c161 --- /dev/null +++ b/source/ros-max-lib/ros_lib/rosserial_msgs/TopicInfo.h @@ -0,0 +1,130 @@ +#ifndef _ROS_rosserial_msgs_TopicInfo_h +#define _ROS_rosserial_msgs_TopicInfo_h + +#include +#include +#include +#include "../ros/msg.h" + +namespace rosserial_msgs +{ + + class TopicInfo : public ros::Msg + { + public: + typedef uint16_t _topic_id_type; + _topic_id_type topic_id; + typedef const char* _topic_name_type; + _topic_name_type topic_name; + typedef const char* _message_type_type; + _message_type_type message_type; + typedef const char* _md5sum_type; + _md5sum_type md5sum; + typedef int32_t _buffer_size_type; + _buffer_size_type buffer_size; + enum { ID_PUBLISHER = 0 }; + enum { ID_SUBSCRIBER = 1 }; + enum { ID_SERVICE_SERVER = 2 }; + enum { ID_SERVICE_CLIENT = 4 }; + enum { ID_PARAMETER_REQUEST = 6 }; + enum { ID_LOG = 7 }; + enum { ID_TIME = 10 }; + enum { ID_TX_STOP = 11 }; + + TopicInfo(): + topic_id(0), + topic_name(""), + message_type(""), + md5sum(""), + buffer_size(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->topic_id >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->topic_id >> (8 * 1)) & 0xFF; + offset += sizeof(this->topic_id); + uint32_t length_topic_name = strlen(this->topic_name); + varToArr(outbuffer + offset, length_topic_name); + offset += 4; + memcpy(outbuffer + offset, this->topic_name, length_topic_name); + offset += length_topic_name; + uint32_t length_message_type = strlen(this->message_type); + varToArr(outbuffer + offset, length_message_type); + offset += 4; + memcpy(outbuffer + offset, this->message_type, length_message_type); + offset += length_message_type; + uint32_t length_md5sum = strlen(this->md5sum); + varToArr(outbuffer + offset, length_md5sum); + offset += 4; + memcpy(outbuffer + offset, this->md5sum, length_md5sum); + offset += length_md5sum; + union { + int32_t real; + uint32_t base; + } u_buffer_size; + u_buffer_size.real = this->buffer_size; + *(outbuffer + offset + 0) = (u_buffer_size.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_buffer_size.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_buffer_size.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_buffer_size.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->buffer_size); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->topic_id = ((uint16_t) (*(inbuffer + offset))); + this->topic_id |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->topic_id); + uint32_t length_topic_name; + arrToVar(length_topic_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_topic_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_topic_name-1]=0; + this->topic_name = (char *)(inbuffer + offset-1); + offset += length_topic_name; + uint32_t length_message_type; + arrToVar(length_message_type, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_message_type; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_message_type-1]=0; + this->message_type = (char *)(inbuffer + offset-1); + offset += length_message_type; + uint32_t length_md5sum; + arrToVar(length_md5sum, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_md5sum; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_md5sum-1]=0; + this->md5sum = (char *)(inbuffer + offset-1); + offset += length_md5sum; + union { + int32_t real; + uint32_t base; + } u_buffer_size; + u_buffer_size.base = 0; + u_buffer_size.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_buffer_size.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_buffer_size.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_buffer_size.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->buffer_size = u_buffer_size.real; + offset += sizeof(this->buffer_size); + return offset; + } + + const char * getType(){ return "rosserial_msgs/TopicInfo"; }; + const char * getMD5(){ return "0ad51f88fc44892f8c10684077646005"; }; + + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/sensor_msgs/BatteryState.h b/source/ros-max-lib/ros_lib/sensor_msgs/BatteryState.h new file mode 100644 index 0000000..4e9cba4 --- /dev/null +++ b/source/ros-max-lib/ros_lib/sensor_msgs/BatteryState.h @@ -0,0 +1,326 @@ +#ifndef _ROS_sensor_msgs_BatteryState_h +#define _ROS_sensor_msgs_BatteryState_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace sensor_msgs +{ + + class BatteryState : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef float _voltage_type; + _voltage_type voltage; + typedef float _current_type; + _current_type current; + typedef float _charge_type; + _charge_type charge; + typedef float _capacity_type; + _capacity_type capacity; + typedef float _design_capacity_type; + _design_capacity_type design_capacity; + typedef float _percentage_type; + _percentage_type percentage; + typedef uint8_t _power_supply_status_type; + _power_supply_status_type power_supply_status; + typedef uint8_t _power_supply_health_type; + _power_supply_health_type power_supply_health; + typedef uint8_t _power_supply_technology_type; + _power_supply_technology_type power_supply_technology; + typedef bool _present_type; + _present_type present; + uint32_t cell_voltage_length; + typedef float _cell_voltage_type; + _cell_voltage_type st_cell_voltage; + _cell_voltage_type * cell_voltage; + typedef const char* _location_type; + _location_type location; + typedef const char* _serial_number_type; + _serial_number_type serial_number; + enum { POWER_SUPPLY_STATUS_UNKNOWN = 0 }; + enum { POWER_SUPPLY_STATUS_CHARGING = 1 }; + enum { POWER_SUPPLY_STATUS_DISCHARGING = 2 }; + enum { POWER_SUPPLY_STATUS_NOT_CHARGING = 3 }; + enum { POWER_SUPPLY_STATUS_FULL = 4 }; + enum { POWER_SUPPLY_HEALTH_UNKNOWN = 0 }; + enum { POWER_SUPPLY_HEALTH_GOOD = 1 }; + enum { POWER_SUPPLY_HEALTH_OVERHEAT = 2 }; + enum { POWER_SUPPLY_HEALTH_DEAD = 3 }; + enum { POWER_SUPPLY_HEALTH_OVERVOLTAGE = 4 }; + enum { POWER_SUPPLY_HEALTH_UNSPEC_FAILURE = 5 }; + enum { POWER_SUPPLY_HEALTH_COLD = 6 }; + enum { POWER_SUPPLY_HEALTH_WATCHDOG_TIMER_EXPIRE = 7 }; + enum { POWER_SUPPLY_HEALTH_SAFETY_TIMER_EXPIRE = 8 }; + enum { POWER_SUPPLY_TECHNOLOGY_UNKNOWN = 0 }; + enum { POWER_SUPPLY_TECHNOLOGY_NIMH = 1 }; + enum { POWER_SUPPLY_TECHNOLOGY_LION = 2 }; + enum { POWER_SUPPLY_TECHNOLOGY_LIPO = 3 }; + enum { POWER_SUPPLY_TECHNOLOGY_LIFE = 4 }; + enum { POWER_SUPPLY_TECHNOLOGY_NICD = 5 }; + enum { POWER_SUPPLY_TECHNOLOGY_LIMN = 6 }; + + BatteryState(): + header(), + voltage(0), + current(0), + charge(0), + capacity(0), + design_capacity(0), + percentage(0), + power_supply_status(0), + power_supply_health(0), + power_supply_technology(0), + present(0), + cell_voltage_length(0), cell_voltage(NULL), + location(""), + serial_number("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + union { + float real; + uint32_t base; + } u_voltage; + u_voltage.real = this->voltage; + *(outbuffer + offset + 0) = (u_voltage.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_voltage.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_voltage.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_voltage.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->voltage); + union { + float real; + uint32_t base; + } u_current; + u_current.real = this->current; + *(outbuffer + offset + 0) = (u_current.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_current.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_current.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_current.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->current); + union { + float real; + uint32_t base; + } u_charge; + u_charge.real = this->charge; + *(outbuffer + offset + 0) = (u_charge.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_charge.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_charge.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_charge.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->charge); + union { + float real; + uint32_t base; + } u_capacity; + u_capacity.real = this->capacity; + *(outbuffer + offset + 0) = (u_capacity.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_capacity.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_capacity.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_capacity.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->capacity); + union { + float real; + uint32_t base; + } u_design_capacity; + u_design_capacity.real = this->design_capacity; + *(outbuffer + offset + 0) = (u_design_capacity.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_design_capacity.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_design_capacity.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_design_capacity.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->design_capacity); + union { + float real; + uint32_t base; + } u_percentage; + u_percentage.real = this->percentage; + *(outbuffer + offset + 0) = (u_percentage.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_percentage.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_percentage.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_percentage.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->percentage); + *(outbuffer + offset + 0) = (this->power_supply_status >> (8 * 0)) & 0xFF; + offset += sizeof(this->power_supply_status); + *(outbuffer + offset + 0) = (this->power_supply_health >> (8 * 0)) & 0xFF; + offset += sizeof(this->power_supply_health); + *(outbuffer + offset + 0) = (this->power_supply_technology >> (8 * 0)) & 0xFF; + offset += sizeof(this->power_supply_technology); + union { + bool real; + uint8_t base; + } u_present; + u_present.real = this->present; + *(outbuffer + offset + 0) = (u_present.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->present); + *(outbuffer + offset + 0) = (this->cell_voltage_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->cell_voltage_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->cell_voltage_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->cell_voltage_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->cell_voltage_length); + for( uint32_t i = 0; i < cell_voltage_length; i++){ + union { + float real; + uint32_t base; + } u_cell_voltagei; + u_cell_voltagei.real = this->cell_voltage[i]; + *(outbuffer + offset + 0) = (u_cell_voltagei.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_cell_voltagei.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_cell_voltagei.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_cell_voltagei.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->cell_voltage[i]); + } + uint32_t length_location = strlen(this->location); + varToArr(outbuffer + offset, length_location); + offset += 4; + memcpy(outbuffer + offset, this->location, length_location); + offset += length_location; + uint32_t length_serial_number = strlen(this->serial_number); + varToArr(outbuffer + offset, length_serial_number); + offset += 4; + memcpy(outbuffer + offset, this->serial_number, length_serial_number); + offset += length_serial_number; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + union { + float real; + uint32_t base; + } u_voltage; + u_voltage.base = 0; + u_voltage.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_voltage.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_voltage.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_voltage.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->voltage = u_voltage.real; + offset += sizeof(this->voltage); + union { + float real; + uint32_t base; + } u_current; + u_current.base = 0; + u_current.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_current.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_current.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_current.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->current = u_current.real; + offset += sizeof(this->current); + union { + float real; + uint32_t base; + } u_charge; + u_charge.base = 0; + u_charge.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_charge.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_charge.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_charge.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->charge = u_charge.real; + offset += sizeof(this->charge); + union { + float real; + uint32_t base; + } u_capacity; + u_capacity.base = 0; + u_capacity.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_capacity.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_capacity.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_capacity.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->capacity = u_capacity.real; + offset += sizeof(this->capacity); + union { + float real; + uint32_t base; + } u_design_capacity; + u_design_capacity.base = 0; + u_design_capacity.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_design_capacity.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_design_capacity.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_design_capacity.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->design_capacity = u_design_capacity.real; + offset += sizeof(this->design_capacity); + union { + float real; + uint32_t base; + } u_percentage; + u_percentage.base = 0; + u_percentage.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_percentage.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_percentage.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_percentage.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->percentage = u_percentage.real; + offset += sizeof(this->percentage); + this->power_supply_status = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->power_supply_status); + this->power_supply_health = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->power_supply_health); + this->power_supply_technology = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->power_supply_technology); + union { + bool real; + uint8_t base; + } u_present; + u_present.base = 0; + u_present.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->present = u_present.real; + offset += sizeof(this->present); + uint32_t cell_voltage_lengthT = ((uint32_t) (*(inbuffer + offset))); + cell_voltage_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + cell_voltage_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + cell_voltage_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->cell_voltage_length); + if(cell_voltage_lengthT > cell_voltage_length) + this->cell_voltage = (float*)realloc(this->cell_voltage, cell_voltage_lengthT * sizeof(float)); + cell_voltage_length = cell_voltage_lengthT; + for( uint32_t i = 0; i < cell_voltage_length; i++){ + union { + float real; + uint32_t base; + } u_st_cell_voltage; + u_st_cell_voltage.base = 0; + u_st_cell_voltage.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_cell_voltage.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_cell_voltage.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_cell_voltage.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_cell_voltage = u_st_cell_voltage.real; + offset += sizeof(this->st_cell_voltage); + memcpy( &(this->cell_voltage[i]), &(this->st_cell_voltage), sizeof(float)); + } + uint32_t length_location; + arrToVar(length_location, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_location; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_location-1]=0; + this->location = (char *)(inbuffer + offset-1); + offset += length_location; + uint32_t length_serial_number; + arrToVar(length_serial_number, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_serial_number; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_serial_number-1]=0; + this->serial_number = (char *)(inbuffer + offset-1); + offset += length_serial_number; + return offset; + } + + const char * getType(){ return "sensor_msgs/BatteryState"; }; + const char * getMD5(){ return "476f837fa6771f6e16e3bf4ef96f8770"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/sensor_msgs/CameraInfo.h b/source/ros-max-lib/ros_lib/sensor_msgs/CameraInfo.h new file mode 100644 index 0000000..5bd1c7d --- /dev/null +++ b/source/ros-max-lib/ros_lib/sensor_msgs/CameraInfo.h @@ -0,0 +1,276 @@ +#ifndef _ROS_sensor_msgs_CameraInfo_h +#define _ROS_sensor_msgs_CameraInfo_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "sensor_msgs/RegionOfInterest.h" + +namespace sensor_msgs +{ + + class CameraInfo : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef uint32_t _height_type; + _height_type height; + typedef uint32_t _width_type; + _width_type width; + typedef const char* _distortion_model_type; + _distortion_model_type distortion_model; + uint32_t D_length; + typedef double _D_type; + _D_type st_D; + _D_type * D; + double K[9]; + double R[9]; + double P[12]; + typedef uint32_t _binning_x_type; + _binning_x_type binning_x; + typedef uint32_t _binning_y_type; + _binning_y_type binning_y; + typedef sensor_msgs::RegionOfInterest _roi_type; + _roi_type roi; + + CameraInfo(): + header(), + height(0), + width(0), + distortion_model(""), + D_length(0), D(NULL), + K(), + R(), + P(), + binning_x(0), + binning_y(0), + roi() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->height >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->height >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->height >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->height >> (8 * 3)) & 0xFF; + offset += sizeof(this->height); + *(outbuffer + offset + 0) = (this->width >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->width >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->width >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->width >> (8 * 3)) & 0xFF; + offset += sizeof(this->width); + uint32_t length_distortion_model = strlen(this->distortion_model); + varToArr(outbuffer + offset, length_distortion_model); + offset += 4; + memcpy(outbuffer + offset, this->distortion_model, length_distortion_model); + offset += length_distortion_model; + *(outbuffer + offset + 0) = (this->D_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->D_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->D_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->D_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->D_length); + for( uint32_t i = 0; i < D_length; i++){ + union { + double real; + uint64_t base; + } u_Di; + u_Di.real = this->D[i]; + *(outbuffer + offset + 0) = (u_Di.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_Di.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_Di.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_Di.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_Di.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_Di.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_Di.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_Di.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->D[i]); + } + for( uint32_t i = 0; i < 9; i++){ + union { + double real; + uint64_t base; + } u_Ki; + u_Ki.real = this->K[i]; + *(outbuffer + offset + 0) = (u_Ki.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_Ki.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_Ki.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_Ki.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_Ki.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_Ki.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_Ki.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_Ki.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->K[i]); + } + for( uint32_t i = 0; i < 9; i++){ + union { + double real; + uint64_t base; + } u_Ri; + u_Ri.real = this->R[i]; + *(outbuffer + offset + 0) = (u_Ri.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_Ri.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_Ri.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_Ri.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_Ri.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_Ri.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_Ri.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_Ri.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->R[i]); + } + for( uint32_t i = 0; i < 12; i++){ + union { + double real; + uint64_t base; + } u_Pi; + u_Pi.real = this->P[i]; + *(outbuffer + offset + 0) = (u_Pi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_Pi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_Pi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_Pi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_Pi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_Pi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_Pi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_Pi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->P[i]); + } + *(outbuffer + offset + 0) = (this->binning_x >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->binning_x >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->binning_x >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->binning_x >> (8 * 3)) & 0xFF; + offset += sizeof(this->binning_x); + *(outbuffer + offset + 0) = (this->binning_y >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->binning_y >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->binning_y >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->binning_y >> (8 * 3)) & 0xFF; + offset += sizeof(this->binning_y); + offset += this->roi.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + this->height = ((uint32_t) (*(inbuffer + offset))); + this->height |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->height |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->height |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->height); + this->width = ((uint32_t) (*(inbuffer + offset))); + this->width |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->width |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->width |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->width); + uint32_t length_distortion_model; + arrToVar(length_distortion_model, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_distortion_model; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_distortion_model-1]=0; + this->distortion_model = (char *)(inbuffer + offset-1); + offset += length_distortion_model; + uint32_t D_lengthT = ((uint32_t) (*(inbuffer + offset))); + D_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + D_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + D_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->D_length); + if(D_lengthT > D_length) + this->D = (double*)realloc(this->D, D_lengthT * sizeof(double)); + D_length = D_lengthT; + for( uint32_t i = 0; i < D_length; i++){ + union { + double real; + uint64_t base; + } u_st_D; + u_st_D.base = 0; + u_st_D.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_D.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_D.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_D.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_D.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_D.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_D.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_D.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_D = u_st_D.real; + offset += sizeof(this->st_D); + memcpy( &(this->D[i]), &(this->st_D), sizeof(double)); + } + for( uint32_t i = 0; i < 9; i++){ + union { + double real; + uint64_t base; + } u_Ki; + u_Ki.base = 0; + u_Ki.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_Ki.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_Ki.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_Ki.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_Ki.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_Ki.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_Ki.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_Ki.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->K[i] = u_Ki.real; + offset += sizeof(this->K[i]); + } + for( uint32_t i = 0; i < 9; i++){ + union { + double real; + uint64_t base; + } u_Ri; + u_Ri.base = 0; + u_Ri.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_Ri.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_Ri.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_Ri.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_Ri.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_Ri.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_Ri.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_Ri.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->R[i] = u_Ri.real; + offset += sizeof(this->R[i]); + } + for( uint32_t i = 0; i < 12; i++){ + union { + double real; + uint64_t base; + } u_Pi; + u_Pi.base = 0; + u_Pi.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_Pi.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_Pi.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_Pi.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_Pi.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_Pi.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_Pi.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_Pi.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->P[i] = u_Pi.real; + offset += sizeof(this->P[i]); + } + this->binning_x = ((uint32_t) (*(inbuffer + offset))); + this->binning_x |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->binning_x |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->binning_x |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->binning_x); + this->binning_y = ((uint32_t) (*(inbuffer + offset))); + this->binning_y |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->binning_y |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->binning_y |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->binning_y); + offset += this->roi.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "sensor_msgs/CameraInfo"; }; + const char * getMD5(){ return "c9a58c1b0b154e0e6da7578cb991d214"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/sensor_msgs/ChannelFloat32.h b/source/ros-max-lib/ros_lib/sensor_msgs/ChannelFloat32.h new file mode 100644 index 0000000..c5c433d --- /dev/null +++ b/source/ros-max-lib/ros_lib/sensor_msgs/ChannelFloat32.h @@ -0,0 +1,99 @@ +#ifndef _ROS_sensor_msgs_ChannelFloat32_h +#define _ROS_sensor_msgs_ChannelFloat32_h + +#include +#include +#include +#include "ros/msg.h" + +namespace sensor_msgs +{ + + class ChannelFloat32 : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + uint32_t values_length; + typedef float _values_type; + _values_type st_values; + _values_type * values; + + ChannelFloat32(): + name(""), + values_length(0), values(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + *(outbuffer + offset + 0) = (this->values_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->values_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->values_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->values_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->values_length); + for( uint32_t i = 0; i < values_length; i++){ + union { + float real; + uint32_t base; + } u_valuesi; + u_valuesi.real = this->values[i]; + *(outbuffer + offset + 0) = (u_valuesi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_valuesi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_valuesi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_valuesi.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->values[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + uint32_t values_lengthT = ((uint32_t) (*(inbuffer + offset))); + values_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + values_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + values_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->values_length); + if(values_lengthT > values_length) + this->values = (float*)realloc(this->values, values_lengthT * sizeof(float)); + values_length = values_lengthT; + for( uint32_t i = 0; i < values_length; i++){ + union { + float real; + uint32_t base; + } u_st_values; + u_st_values.base = 0; + u_st_values.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_values.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_values.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_values.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_values = u_st_values.real; + offset += sizeof(this->st_values); + memcpy( &(this->values[i]), &(this->st_values), sizeof(float)); + } + return offset; + } + + const char * getType(){ return "sensor_msgs/ChannelFloat32"; }; + const char * getMD5(){ return "3d40139cdd33dfedcb71ffeeeb42ae7f"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/sensor_msgs/CompressedImage.h b/source/ros-max-lib/ros_lib/sensor_msgs/CompressedImage.h new file mode 100644 index 0000000..a11f62c --- /dev/null +++ b/source/ros-max-lib/ros_lib/sensor_msgs/CompressedImage.h @@ -0,0 +1,88 @@ +#ifndef _ROS_sensor_msgs_CompressedImage_h +#define _ROS_sensor_msgs_CompressedImage_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace sensor_msgs +{ + + class CompressedImage : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef const char* _format_type; + _format_type format; + uint32_t data_length; + typedef uint8_t _data_type; + _data_type st_data; + _data_type * data; + + CompressedImage(): + header(), + format(""), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + uint32_t length_format = strlen(this->format); + varToArr(outbuffer + offset, length_format); + offset += 4; + memcpy(outbuffer + offset, this->format, length_format); + offset += length_format; + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t length_format; + arrToVar(length_format, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_format; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_format-1]=0; + this->format = (char *)(inbuffer + offset-1); + offset += length_format; + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (uint8_t*)realloc(this->data, data_lengthT * sizeof(uint8_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + this->st_data = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(uint8_t)); + } + return offset; + } + + const char * getType(){ return "sensor_msgs/CompressedImage"; }; + const char * getMD5(){ return "8f7a12909da2c9d3332d540a0977563f"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/sensor_msgs/FluidPressure.h b/source/ros-max-lib/ros_lib/sensor_msgs/FluidPressure.h new file mode 100644 index 0000000..3df5165 --- /dev/null +++ b/source/ros-max-lib/ros_lib/sensor_msgs/FluidPressure.h @@ -0,0 +1,108 @@ +#ifndef _ROS_sensor_msgs_FluidPressure_h +#define _ROS_sensor_msgs_FluidPressure_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace sensor_msgs +{ + + class FluidPressure : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef double _fluid_pressure_type; + _fluid_pressure_type fluid_pressure; + typedef double _variance_type; + _variance_type variance; + + FluidPressure(): + header(), + fluid_pressure(0), + variance(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + union { + double real; + uint64_t base; + } u_fluid_pressure; + u_fluid_pressure.real = this->fluid_pressure; + *(outbuffer + offset + 0) = (u_fluid_pressure.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_fluid_pressure.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_fluid_pressure.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_fluid_pressure.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_fluid_pressure.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_fluid_pressure.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_fluid_pressure.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_fluid_pressure.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->fluid_pressure); + union { + double real; + uint64_t base; + } u_variance; + u_variance.real = this->variance; + *(outbuffer + offset + 0) = (u_variance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_variance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_variance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_variance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_variance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_variance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_variance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_variance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->variance); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + union { + double real; + uint64_t base; + } u_fluid_pressure; + u_fluid_pressure.base = 0; + u_fluid_pressure.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_fluid_pressure.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_fluid_pressure.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_fluid_pressure.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_fluid_pressure.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_fluid_pressure.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_fluid_pressure.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_fluid_pressure.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->fluid_pressure = u_fluid_pressure.real; + offset += sizeof(this->fluid_pressure); + union { + double real; + uint64_t base; + } u_variance; + u_variance.base = 0; + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->variance = u_variance.real; + offset += sizeof(this->variance); + return offset; + } + + const char * getType(){ return "sensor_msgs/FluidPressure"; }; + const char * getMD5(){ return "804dc5cea1c5306d6a2eb80b9833befe"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/sensor_msgs/Illuminance.h b/source/ros-max-lib/ros_lib/sensor_msgs/Illuminance.h new file mode 100644 index 0000000..d6fbb2c --- /dev/null +++ b/source/ros-max-lib/ros_lib/sensor_msgs/Illuminance.h @@ -0,0 +1,108 @@ +#ifndef _ROS_sensor_msgs_Illuminance_h +#define _ROS_sensor_msgs_Illuminance_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace sensor_msgs +{ + + class Illuminance : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef double _illuminance_type; + _illuminance_type illuminance; + typedef double _variance_type; + _variance_type variance; + + Illuminance(): + header(), + illuminance(0), + variance(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + union { + double real; + uint64_t base; + } u_illuminance; + u_illuminance.real = this->illuminance; + *(outbuffer + offset + 0) = (u_illuminance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_illuminance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_illuminance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_illuminance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_illuminance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_illuminance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_illuminance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_illuminance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->illuminance); + union { + double real; + uint64_t base; + } u_variance; + u_variance.real = this->variance; + *(outbuffer + offset + 0) = (u_variance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_variance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_variance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_variance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_variance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_variance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_variance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_variance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->variance); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + union { + double real; + uint64_t base; + } u_illuminance; + u_illuminance.base = 0; + u_illuminance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_illuminance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_illuminance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_illuminance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_illuminance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_illuminance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_illuminance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_illuminance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->illuminance = u_illuminance.real; + offset += sizeof(this->illuminance); + union { + double real; + uint64_t base; + } u_variance; + u_variance.base = 0; + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->variance = u_variance.real; + offset += sizeof(this->variance); + return offset; + } + + const char * getType(){ return "sensor_msgs/Illuminance"; }; + const char * getMD5(){ return "8cf5febb0952fca9d650c3d11a81a188"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/sensor_msgs/Image.h b/source/ros-max-lib/ros_lib/sensor_msgs/Image.h new file mode 100644 index 0000000..15842a3 --- /dev/null +++ b/source/ros-max-lib/ros_lib/sensor_msgs/Image.h @@ -0,0 +1,134 @@ +#ifndef _ROS_sensor_msgs_Image_h +#define _ROS_sensor_msgs_Image_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace sensor_msgs +{ + + class Image : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef uint32_t _height_type; + _height_type height; + typedef uint32_t _width_type; + _width_type width; + typedef const char* _encoding_type; + _encoding_type encoding; + typedef uint8_t _is_bigendian_type; + _is_bigendian_type is_bigendian; + typedef uint32_t _step_type; + _step_type step; + uint32_t data_length; + typedef uint8_t _data_type; + _data_type st_data; + _data_type * data; + + Image(): + header(), + height(0), + width(0), + encoding(""), + is_bigendian(0), + step(0), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->height >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->height >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->height >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->height >> (8 * 3)) & 0xFF; + offset += sizeof(this->height); + *(outbuffer + offset + 0) = (this->width >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->width >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->width >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->width >> (8 * 3)) & 0xFF; + offset += sizeof(this->width); + uint32_t length_encoding = strlen(this->encoding); + varToArr(outbuffer + offset, length_encoding); + offset += 4; + memcpy(outbuffer + offset, this->encoding, length_encoding); + offset += length_encoding; + *(outbuffer + offset + 0) = (this->is_bigendian >> (8 * 0)) & 0xFF; + offset += sizeof(this->is_bigendian); + *(outbuffer + offset + 0) = (this->step >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->step >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->step >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->step >> (8 * 3)) & 0xFF; + offset += sizeof(this->step); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + this->height = ((uint32_t) (*(inbuffer + offset))); + this->height |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->height |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->height |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->height); + this->width = ((uint32_t) (*(inbuffer + offset))); + this->width |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->width |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->width |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->width); + uint32_t length_encoding; + arrToVar(length_encoding, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_encoding; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_encoding-1]=0; + this->encoding = (char *)(inbuffer + offset-1); + offset += length_encoding; + this->is_bigendian = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->is_bigendian); + this->step = ((uint32_t) (*(inbuffer + offset))); + this->step |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->step |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->step |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->step); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (uint8_t*)realloc(this->data, data_lengthT * sizeof(uint8_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + this->st_data = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(uint8_t)); + } + return offset; + } + + const char * getType(){ return "sensor_msgs/Image"; }; + const char * getMD5(){ return "060021388200f6f0f447d0fcd9c64743"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/sensor_msgs/Imu.h b/source/ros-max-lib/ros_lib/sensor_msgs/Imu.h new file mode 100644 index 0000000..c18b583 --- /dev/null +++ b/source/ros-max-lib/ros_lib/sensor_msgs/Imu.h @@ -0,0 +1,166 @@ +#ifndef _ROS_sensor_msgs_Imu_h +#define _ROS_sensor_msgs_Imu_h + +#include +#include +#include +#include "../ros/msg.h" +#include "../std_msgs/Header.h" +#include "../geometry_msgs/Quaternion.h" +#include "../geometry_msgs/Vector3.h" + +namespace sensor_msgs +{ + + class Imu : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::Quaternion _orientation_type; + _orientation_type orientation; + double orientation_covariance[9]; + typedef geometry_msgs::Vector3 _angular_velocity_type; + _angular_velocity_type angular_velocity; + double angular_velocity_covariance[9]; + typedef geometry_msgs::Vector3 _linear_acceleration_type; + _linear_acceleration_type linear_acceleration; + double linear_acceleration_covariance[9]; + + Imu(): + header(), + orientation(), + orientation_covariance(), + angular_velocity(), + angular_velocity_covariance(), + linear_acceleration(), + linear_acceleration_covariance() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->orientation.serialize(outbuffer + offset); + for( uint32_t i = 0; i < 9; i++){ + union { + double real; + uint64_t base; + } u_orientation_covariancei; + u_orientation_covariancei.real = this->orientation_covariance[i]; + *(outbuffer + offset + 0) = (u_orientation_covariancei.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_orientation_covariancei.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_orientation_covariancei.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_orientation_covariancei.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_orientation_covariancei.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_orientation_covariancei.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_orientation_covariancei.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_orientation_covariancei.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->orientation_covariance[i]); + } + offset += this->angular_velocity.serialize(outbuffer + offset); + for( uint32_t i = 0; i < 9; i++){ + union { + double real; + uint64_t base; + } u_angular_velocity_covariancei; + u_angular_velocity_covariancei.real = this->angular_velocity_covariance[i]; + *(outbuffer + offset + 0) = (u_angular_velocity_covariancei.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_angular_velocity_covariancei.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_angular_velocity_covariancei.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_angular_velocity_covariancei.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_angular_velocity_covariancei.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_angular_velocity_covariancei.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_angular_velocity_covariancei.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_angular_velocity_covariancei.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->angular_velocity_covariance[i]); + } + offset += this->linear_acceleration.serialize(outbuffer + offset); + for( uint32_t i = 0; i < 9; i++){ + union { + double real; + uint64_t base; + } u_linear_acceleration_covariancei; + u_linear_acceleration_covariancei.real = this->linear_acceleration_covariance[i]; + *(outbuffer + offset + 0) = (u_linear_acceleration_covariancei.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_linear_acceleration_covariancei.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_linear_acceleration_covariancei.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_linear_acceleration_covariancei.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_linear_acceleration_covariancei.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_linear_acceleration_covariancei.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_linear_acceleration_covariancei.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_linear_acceleration_covariancei.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->linear_acceleration_covariance[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->orientation.deserialize(inbuffer + offset); + for( uint32_t i = 0; i < 9; i++){ + union { + double real; + uint64_t base; + } u_orientation_covariancei; + u_orientation_covariancei.base = 0; + u_orientation_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_orientation_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_orientation_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_orientation_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_orientation_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_orientation_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_orientation_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_orientation_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->orientation_covariance[i] = u_orientation_covariancei.real; + offset += sizeof(this->orientation_covariance[i]); + } + offset += this->angular_velocity.deserialize(inbuffer + offset); + for( uint32_t i = 0; i < 9; i++){ + union { + double real; + uint64_t base; + } u_angular_velocity_covariancei; + u_angular_velocity_covariancei.base = 0; + u_angular_velocity_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_angular_velocity_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_angular_velocity_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_angular_velocity_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_angular_velocity_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_angular_velocity_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_angular_velocity_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_angular_velocity_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->angular_velocity_covariance[i] = u_angular_velocity_covariancei.real; + offset += sizeof(this->angular_velocity_covariance[i]); + } + offset += this->linear_acceleration.deserialize(inbuffer + offset); + for( uint32_t i = 0; i < 9; i++){ + union { + double real; + uint64_t base; + } u_linear_acceleration_covariancei; + u_linear_acceleration_covariancei.base = 0; + u_linear_acceleration_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_linear_acceleration_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_linear_acceleration_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_linear_acceleration_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_linear_acceleration_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_linear_acceleration_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_linear_acceleration_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_linear_acceleration_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->linear_acceleration_covariance[i] = u_linear_acceleration_covariancei.real; + offset += sizeof(this->linear_acceleration_covariance[i]); + } + return offset; + } + + const char * getType(){ return "sensor_msgs/Imu"; }; + const char * getMD5(){ return "6a62c6daae103f4ff57a132d6f95cec2"; }; + + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/sensor_msgs/JointState.h b/source/ros-max-lib/ros_lib/sensor_msgs/JointState.h new file mode 100644 index 0000000..6195757 --- /dev/null +++ b/source/ros-max-lib/ros_lib/sensor_msgs/JointState.h @@ -0,0 +1,237 @@ +#ifndef _ROS_sensor_msgs_JointState_h +#define _ROS_sensor_msgs_JointState_h + +#include +#include +#include +#include "../ros/msg.h" +#include "../std_msgs/Header.h" + +namespace sensor_msgs +{ + + class JointState : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t name_length; + typedef char* _name_type; + _name_type st_name; + _name_type * name; + uint32_t position_length; + typedef double _position_type; + _position_type st_position; + _position_type * position; + uint32_t velocity_length; + typedef double _velocity_type; + _velocity_type st_velocity; + _velocity_type * velocity; + uint32_t effort_length; + typedef double _effort_type; + _effort_type st_effort; + _effort_type * effort; + + JointState(): + header(), + name_length(0), name(NULL), + position_length(0), position(NULL), + velocity_length(0), velocity(NULL), + effort_length(0), effort(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->name_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->name_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->name_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->name_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->name_length); + for( uint32_t i = 0; i < name_length; i++){ + uint32_t length_namei = strlen(this->name[i]); + varToArr(outbuffer + offset, length_namei); + offset += 4; + memcpy(outbuffer + offset, this->name[i], length_namei); + offset += length_namei; + } + *(outbuffer + offset + 0) = (this->position_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->position_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->position_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->position_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->position_length); + for( uint32_t i = 0; i < position_length; i++){ + union { + double real; + uint64_t base; + } u_positioni; + u_positioni.real = this->position[i]; + *(outbuffer + offset + 0) = (u_positioni.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_positioni.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_positioni.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_positioni.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_positioni.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_positioni.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_positioni.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_positioni.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->position[i]); + } + *(outbuffer + offset + 0) = (this->velocity_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->velocity_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->velocity_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->velocity_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->velocity_length); + for( uint32_t i = 0; i < velocity_length; i++){ + union { + double real; + uint64_t base; + } u_velocityi; + u_velocityi.real = this->velocity[i]; + *(outbuffer + offset + 0) = (u_velocityi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_velocityi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_velocityi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_velocityi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_velocityi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_velocityi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_velocityi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_velocityi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->velocity[i]); + } + *(outbuffer + offset + 0) = (this->effort_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->effort_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->effort_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->effort_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->effort_length); + for( uint32_t i = 0; i < effort_length; i++){ + union { + double real; + uint64_t base; + } u_efforti; + u_efforti.real = this->effort[i]; + *(outbuffer + offset + 0) = (u_efforti.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_efforti.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_efforti.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_efforti.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_efforti.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_efforti.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_efforti.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_efforti.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->effort[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t name_lengthT = ((uint32_t) (*(inbuffer + offset))); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + name_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->name_length); + if(name_lengthT > name_length) + this->name = (char**)realloc(this->name, name_lengthT * sizeof(char*)); + name_length = name_lengthT; + for( uint32_t i = 0; i < name_length; i++){ + uint32_t length_st_name; + arrToVar(length_st_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_name-1]=0; + this->st_name = (char *)(inbuffer + offset-1); + offset += length_st_name; + memcpy( &(this->name[i]), &(this->st_name), sizeof(char*)); + } + uint32_t position_lengthT = ((uint32_t) (*(inbuffer + offset))); + position_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + position_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + position_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->position_length); + if(position_lengthT > position_length) + this->position = (double*)realloc(this->position, position_lengthT * sizeof(double)); + position_length = position_lengthT; + for( uint32_t i = 0; i < position_length; i++){ + union { + double real; + uint64_t base; + } u_st_position; + u_st_position.base = 0; + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_position.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_position = u_st_position.real; + offset += sizeof(this->st_position); + memcpy( &(this->position[i]), &(this->st_position), sizeof(double)); + } + uint32_t velocity_lengthT = ((uint32_t) (*(inbuffer + offset))); + velocity_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + velocity_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + velocity_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->velocity_length); + if(velocity_lengthT > velocity_length) + this->velocity = (double*)realloc(this->velocity, velocity_lengthT * sizeof(double)); + velocity_length = velocity_lengthT; + for( uint32_t i = 0; i < velocity_length; i++){ + union { + double real; + uint64_t base; + } u_st_velocity; + u_st_velocity.base = 0; + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_velocity.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_velocity = u_st_velocity.real; + offset += sizeof(this->st_velocity); + memcpy( &(this->velocity[i]), &(this->st_velocity), sizeof(double)); + } + uint32_t effort_lengthT = ((uint32_t) (*(inbuffer + offset))); + effort_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + effort_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + effort_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->effort_length); + if(effort_lengthT > effort_length) + this->effort = (double*)realloc(this->effort, effort_lengthT * sizeof(double)); + effort_length = effort_lengthT; + for( uint32_t i = 0; i < effort_length; i++){ + union { + double real; + uint64_t base; + } u_st_effort; + u_st_effort.base = 0; + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_effort = u_st_effort.real; + offset += sizeof(this->st_effort); + memcpy( &(this->effort[i]), &(this->st_effort), sizeof(double)); + } + return offset; + } + + const char * getType(){ return "sensor_msgs/JointState"; }; + const char * getMD5(){ return "3066dcd76a6cfaef579bd0f34173e9fd"; }; + + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/sensor_msgs/Joy.h b/source/ros-max-lib/ros_lib/sensor_msgs/Joy.h new file mode 100644 index 0000000..bd56d41 --- /dev/null +++ b/source/ros-max-lib/ros_lib/sensor_msgs/Joy.h @@ -0,0 +1,132 @@ +#ifndef _ROS_sensor_msgs_Joy_h +#define _ROS_sensor_msgs_Joy_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace sensor_msgs +{ + + class Joy : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t axes_length; + typedef float _axes_type; + _axes_type st_axes; + _axes_type * axes; + uint32_t buttons_length; + typedef int32_t _buttons_type; + _buttons_type st_buttons; + _buttons_type * buttons; + + Joy(): + header(), + axes_length(0), axes(NULL), + buttons_length(0), buttons(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->axes_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->axes_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->axes_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->axes_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->axes_length); + for( uint32_t i = 0; i < axes_length; i++){ + union { + float real; + uint32_t base; + } u_axesi; + u_axesi.real = this->axes[i]; + *(outbuffer + offset + 0) = (u_axesi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_axesi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_axesi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_axesi.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->axes[i]); + } + *(outbuffer + offset + 0) = (this->buttons_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->buttons_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->buttons_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->buttons_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->buttons_length); + for( uint32_t i = 0; i < buttons_length; i++){ + union { + int32_t real; + uint32_t base; + } u_buttonsi; + u_buttonsi.real = this->buttons[i]; + *(outbuffer + offset + 0) = (u_buttonsi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_buttonsi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_buttonsi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_buttonsi.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->buttons[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t axes_lengthT = ((uint32_t) (*(inbuffer + offset))); + axes_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + axes_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + axes_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->axes_length); + if(axes_lengthT > axes_length) + this->axes = (float*)realloc(this->axes, axes_lengthT * sizeof(float)); + axes_length = axes_lengthT; + for( uint32_t i = 0; i < axes_length; i++){ + union { + float real; + uint32_t base; + } u_st_axes; + u_st_axes.base = 0; + u_st_axes.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_axes.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_axes.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_axes.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_axes = u_st_axes.real; + offset += sizeof(this->st_axes); + memcpy( &(this->axes[i]), &(this->st_axes), sizeof(float)); + } + uint32_t buttons_lengthT = ((uint32_t) (*(inbuffer + offset))); + buttons_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + buttons_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + buttons_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->buttons_length); + if(buttons_lengthT > buttons_length) + this->buttons = (int32_t*)realloc(this->buttons, buttons_lengthT * sizeof(int32_t)); + buttons_length = buttons_lengthT; + for( uint32_t i = 0; i < buttons_length; i++){ + union { + int32_t real; + uint32_t base; + } u_st_buttons; + u_st_buttons.base = 0; + u_st_buttons.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_buttons.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_buttons.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_buttons.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_buttons = u_st_buttons.real; + offset += sizeof(this->st_buttons); + memcpy( &(this->buttons[i]), &(this->st_buttons), sizeof(int32_t)); + } + return offset; + } + + const char * getType(){ return "sensor_msgs/Joy"; }; + const char * getMD5(){ return "5a9ea5f83505693b71e785041e67a8bb"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/sensor_msgs/JoyFeedback.h b/source/ros-max-lib/ros_lib/sensor_msgs/JoyFeedback.h new file mode 100644 index 0000000..7a12993 --- /dev/null +++ b/source/ros-max-lib/ros_lib/sensor_msgs/JoyFeedback.h @@ -0,0 +1,79 @@ +#ifndef _ROS_sensor_msgs_JoyFeedback_h +#define _ROS_sensor_msgs_JoyFeedback_h + +#include +#include +#include +#include "ros/msg.h" + +namespace sensor_msgs +{ + + class JoyFeedback : public ros::Msg + { + public: + typedef uint8_t _type_type; + _type_type type; + typedef uint8_t _id_type; + _id_type id; + typedef float _intensity_type; + _intensity_type intensity; + enum { TYPE_LED = 0 }; + enum { TYPE_RUMBLE = 1 }; + enum { TYPE_BUZZER = 2 }; + + JoyFeedback(): + type(0), + id(0), + intensity(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->type >> (8 * 0)) & 0xFF; + offset += sizeof(this->type); + *(outbuffer + offset + 0) = (this->id >> (8 * 0)) & 0xFF; + offset += sizeof(this->id); + union { + float real; + uint32_t base; + } u_intensity; + u_intensity.real = this->intensity; + *(outbuffer + offset + 0) = (u_intensity.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_intensity.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_intensity.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_intensity.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->intensity); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->type = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->type); + this->id = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->id); + union { + float real; + uint32_t base; + } u_intensity; + u_intensity.base = 0; + u_intensity.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_intensity.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_intensity.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_intensity.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->intensity = u_intensity.real; + offset += sizeof(this->intensity); + return offset; + } + + const char * getType(){ return "sensor_msgs/JoyFeedback"; }; + const char * getMD5(){ return "f4dcd73460360d98f36e55ee7f2e46f1"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/sensor_msgs/JoyFeedbackArray.h b/source/ros-max-lib/ros_lib/sensor_msgs/JoyFeedbackArray.h new file mode 100644 index 0000000..8fe8064 --- /dev/null +++ b/source/ros-max-lib/ros_lib/sensor_msgs/JoyFeedbackArray.h @@ -0,0 +1,64 @@ +#ifndef _ROS_sensor_msgs_JoyFeedbackArray_h +#define _ROS_sensor_msgs_JoyFeedbackArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "sensor_msgs/JoyFeedback.h" + +namespace sensor_msgs +{ + + class JoyFeedbackArray : public ros::Msg + { + public: + uint32_t array_length; + typedef sensor_msgs::JoyFeedback _array_type; + _array_type st_array; + _array_type * array; + + JoyFeedbackArray(): + array_length(0), array(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->array_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->array_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->array_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->array_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->array_length); + for( uint32_t i = 0; i < array_length; i++){ + offset += this->array[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t array_lengthT = ((uint32_t) (*(inbuffer + offset))); + array_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + array_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + array_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->array_length); + if(array_lengthT > array_length) + this->array = (sensor_msgs::JoyFeedback*)realloc(this->array, array_lengthT * sizeof(sensor_msgs::JoyFeedback)); + array_length = array_lengthT; + for( uint32_t i = 0; i < array_length; i++){ + offset += this->st_array.deserialize(inbuffer + offset); + memcpy( &(this->array[i]), &(this->st_array), sizeof(sensor_msgs::JoyFeedback)); + } + return offset; + } + + const char * getType(){ return "sensor_msgs/JoyFeedbackArray"; }; + const char * getMD5(){ return "cde5730a895b1fc4dee6f91b754b213d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/sensor_msgs/LaserEcho.h b/source/ros-max-lib/ros_lib/sensor_msgs/LaserEcho.h new file mode 100644 index 0000000..b8f4c49 --- /dev/null +++ b/source/ros-max-lib/ros_lib/sensor_msgs/LaserEcho.h @@ -0,0 +1,82 @@ +#ifndef _ROS_sensor_msgs_LaserEcho_h +#define _ROS_sensor_msgs_LaserEcho_h + +#include +#include +#include +#include "ros/msg.h" + +namespace sensor_msgs +{ + + class LaserEcho : public ros::Msg + { + public: + uint32_t echoes_length; + typedef float _echoes_type; + _echoes_type st_echoes; + _echoes_type * echoes; + + LaserEcho(): + echoes_length(0), echoes(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->echoes_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->echoes_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->echoes_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->echoes_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->echoes_length); + for( uint32_t i = 0; i < echoes_length; i++){ + union { + float real; + uint32_t base; + } u_echoesi; + u_echoesi.real = this->echoes[i]; + *(outbuffer + offset + 0) = (u_echoesi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_echoesi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_echoesi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_echoesi.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->echoes[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t echoes_lengthT = ((uint32_t) (*(inbuffer + offset))); + echoes_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + echoes_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + echoes_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->echoes_length); + if(echoes_lengthT > echoes_length) + this->echoes = (float*)realloc(this->echoes, echoes_lengthT * sizeof(float)); + echoes_length = echoes_lengthT; + for( uint32_t i = 0; i < echoes_length; i++){ + union { + float real; + uint32_t base; + } u_st_echoes; + u_st_echoes.base = 0; + u_st_echoes.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_echoes.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_echoes.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_echoes.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_echoes = u_st_echoes.real; + offset += sizeof(this->st_echoes); + memcpy( &(this->echoes[i]), &(this->st_echoes), sizeof(float)); + } + return offset; + } + + const char * getType(){ return "sensor_msgs/LaserEcho"; }; + const char * getMD5(){ return "8bc5ae449b200fba4d552b4225586696"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/sensor_msgs/LaserScan.h b/source/ros-max-lib/ros_lib/sensor_msgs/LaserScan.h new file mode 100644 index 0000000..203e739 --- /dev/null +++ b/source/ros-max-lib/ros_lib/sensor_msgs/LaserScan.h @@ -0,0 +1,300 @@ +#ifndef _ROS_sensor_msgs_LaserScan_h +#define _ROS_sensor_msgs_LaserScan_h + +#include +#include +#include +#include "../ros/msg.h" +#include "../std_msgs/Header.h" + +namespace sensor_msgs +{ + + class LaserScan : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef float _angle_min_type; + _angle_min_type angle_min; + typedef float _angle_max_type; + _angle_max_type angle_max; + typedef float _angle_increment_type; + _angle_increment_type angle_increment; + typedef float _time_increment_type; + _time_increment_type time_increment; + typedef float _scan_time_type; + _scan_time_type scan_time; + typedef float _range_min_type; + _range_min_type range_min; + typedef float _range_max_type; + _range_max_type range_max; + uint32_t ranges_length; + typedef float _ranges_type; + _ranges_type st_ranges; + _ranges_type * ranges; + uint32_t intensities_length; + typedef float _intensities_type; + _intensities_type st_intensities; + _intensities_type * intensities; + + LaserScan(): + header(), + angle_min(0), + angle_max(0), + angle_increment(0), + time_increment(0), + scan_time(0), + range_min(0), + range_max(0), + ranges_length(0), ranges(NULL), + intensities_length(0), intensities(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + union { + float real; + uint32_t base; + } u_angle_min; + u_angle_min.real = this->angle_min; + *(outbuffer + offset + 0) = (u_angle_min.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_angle_min.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_angle_min.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_angle_min.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->angle_min); + union { + float real; + uint32_t base; + } u_angle_max; + u_angle_max.real = this->angle_max; + *(outbuffer + offset + 0) = (u_angle_max.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_angle_max.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_angle_max.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_angle_max.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->angle_max); + union { + float real; + uint32_t base; + } u_angle_increment; + u_angle_increment.real = this->angle_increment; + *(outbuffer + offset + 0) = (u_angle_increment.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_angle_increment.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_angle_increment.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_angle_increment.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->angle_increment); + union { + float real; + uint32_t base; + } u_time_increment; + u_time_increment.real = this->time_increment; + *(outbuffer + offset + 0) = (u_time_increment.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_time_increment.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_time_increment.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_time_increment.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->time_increment); + union { + float real; + uint32_t base; + } u_scan_time; + u_scan_time.real = this->scan_time; + *(outbuffer + offset + 0) = (u_scan_time.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_scan_time.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_scan_time.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_scan_time.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->scan_time); + union { + float real; + uint32_t base; + } u_range_min; + u_range_min.real = this->range_min; + *(outbuffer + offset + 0) = (u_range_min.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_range_min.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_range_min.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_range_min.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->range_min); + union { + float real; + uint32_t base; + } u_range_max; + u_range_max.real = this->range_max; + *(outbuffer + offset + 0) = (u_range_max.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_range_max.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_range_max.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_range_max.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->range_max); + *(outbuffer + offset + 0) = (this->ranges_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->ranges_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->ranges_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->ranges_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->ranges_length); + for( uint32_t i = 0; i < ranges_length; i++){ + union { + float real; + uint32_t base; + } u_rangesi; + u_rangesi.real = this->ranges[i]; + *(outbuffer + offset + 0) = (u_rangesi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_rangesi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_rangesi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_rangesi.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->ranges[i]); + } + *(outbuffer + offset + 0) = (this->intensities_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->intensities_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->intensities_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->intensities_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->intensities_length); + for( uint32_t i = 0; i < intensities_length; i++){ + union { + float real; + uint32_t base; + } u_intensitiesi; + u_intensitiesi.real = this->intensities[i]; + *(outbuffer + offset + 0) = (u_intensitiesi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_intensitiesi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_intensitiesi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_intensitiesi.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->intensities[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + union { + float real; + uint32_t base; + } u_angle_min; + u_angle_min.base = 0; + u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->angle_min = u_angle_min.real; + offset += sizeof(this->angle_min); + union { + float real; + uint32_t base; + } u_angle_max; + u_angle_max.base = 0; + u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->angle_max = u_angle_max.real; + offset += sizeof(this->angle_max); + union { + float real; + uint32_t base; + } u_angle_increment; + u_angle_increment.base = 0; + u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->angle_increment = u_angle_increment.real; + offset += sizeof(this->angle_increment); + union { + float real; + uint32_t base; + } u_time_increment; + u_time_increment.base = 0; + u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->time_increment = u_time_increment.real; + offset += sizeof(this->time_increment); + union { + float real; + uint32_t base; + } u_scan_time; + u_scan_time.base = 0; + u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->scan_time = u_scan_time.real; + offset += sizeof(this->scan_time); + union { + float real; + uint32_t base; + } u_range_min; + u_range_min.base = 0; + u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->range_min = u_range_min.real; + offset += sizeof(this->range_min); + union { + float real; + uint32_t base; + } u_range_max; + u_range_max.base = 0; + u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->range_max = u_range_max.real; + offset += sizeof(this->range_max); + uint32_t ranges_lengthT = ((uint32_t) (*(inbuffer + offset))); + ranges_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + ranges_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + ranges_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->ranges_length); + if(ranges_lengthT > ranges_length) + this->ranges = (float*)realloc(this->ranges, ranges_lengthT * sizeof(float)); + ranges_length = ranges_lengthT; + for( uint32_t i = 0; i < ranges_length; i++){ + union { + float real; + uint32_t base; + } u_st_ranges; + u_st_ranges.base = 0; + u_st_ranges.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_ranges.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_ranges.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_ranges.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_ranges = u_st_ranges.real; + offset += sizeof(this->st_ranges); + memcpy( &(this->ranges[i]), &(this->st_ranges), sizeof(float)); + } + uint32_t intensities_lengthT = ((uint32_t) (*(inbuffer + offset))); + intensities_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + intensities_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + intensities_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->intensities_length); + if(intensities_lengthT > intensities_length) + this->intensities = (float*)realloc(this->intensities, intensities_lengthT * sizeof(float)); + intensities_length = intensities_lengthT; + for( uint32_t i = 0; i < intensities_length; i++){ + union { + float real; + uint32_t base; + } u_st_intensities; + u_st_intensities.base = 0; + u_st_intensities.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_intensities.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_intensities.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_intensities.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_intensities = u_st_intensities.real; + offset += sizeof(this->st_intensities); + memcpy( &(this->intensities[i]), &(this->st_intensities), sizeof(float)); + } + return offset; + } + + const char * getType(){ return "sensor_msgs/LaserScan"; }; + const char * getMD5(){ return "90c7ef2dc6895d81024acba2ac42f369"; }; + + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/sensor_msgs/MagneticField.h b/source/ros-max-lib/ros_lib/sensor_msgs/MagneticField.h new file mode 100644 index 0000000..69a7344 --- /dev/null +++ b/source/ros-max-lib/ros_lib/sensor_msgs/MagneticField.h @@ -0,0 +1,85 @@ +#ifndef _ROS_sensor_msgs_MagneticField_h +#define _ROS_sensor_msgs_MagneticField_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Vector3.h" + +namespace sensor_msgs +{ + + class MagneticField : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::Vector3 _magnetic_field_type; + _magnetic_field_type magnetic_field; + double magnetic_field_covariance[9]; + + MagneticField(): + header(), + magnetic_field(), + magnetic_field_covariance() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->magnetic_field.serialize(outbuffer + offset); + for( uint32_t i = 0; i < 9; i++){ + union { + double real; + uint64_t base; + } u_magnetic_field_covariancei; + u_magnetic_field_covariancei.real = this->magnetic_field_covariance[i]; + *(outbuffer + offset + 0) = (u_magnetic_field_covariancei.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_magnetic_field_covariancei.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_magnetic_field_covariancei.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_magnetic_field_covariancei.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_magnetic_field_covariancei.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_magnetic_field_covariancei.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_magnetic_field_covariancei.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_magnetic_field_covariancei.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->magnetic_field_covariance[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->magnetic_field.deserialize(inbuffer + offset); + for( uint32_t i = 0; i < 9; i++){ + union { + double real; + uint64_t base; + } u_magnetic_field_covariancei; + u_magnetic_field_covariancei.base = 0; + u_magnetic_field_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_magnetic_field_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_magnetic_field_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_magnetic_field_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_magnetic_field_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_magnetic_field_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_magnetic_field_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_magnetic_field_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->magnetic_field_covariance[i] = u_magnetic_field_covariancei.real; + offset += sizeof(this->magnetic_field_covariance[i]); + } + return offset; + } + + const char * getType(){ return "sensor_msgs/MagneticField"; }; + const char * getMD5(){ return "2f3b0b43eed0c9501de0fa3ff89a45aa"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/sensor_msgs/MultiDOFJointState.h b/source/ros-max-lib/ros_lib/sensor_msgs/MultiDOFJointState.h new file mode 100644 index 0000000..ed07797 --- /dev/null +++ b/source/ros-max-lib/ros_lib/sensor_msgs/MultiDOFJointState.h @@ -0,0 +1,159 @@ +#ifndef _ROS_sensor_msgs_MultiDOFJointState_h +#define _ROS_sensor_msgs_MultiDOFJointState_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Transform.h" +#include "geometry_msgs/Twist.h" +#include "geometry_msgs/Wrench.h" + +namespace sensor_msgs +{ + + class MultiDOFJointState : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t joint_names_length; + typedef char* _joint_names_type; + _joint_names_type st_joint_names; + _joint_names_type * joint_names; + uint32_t transforms_length; + typedef geometry_msgs::Transform _transforms_type; + _transforms_type st_transforms; + _transforms_type * transforms; + uint32_t twist_length; + typedef geometry_msgs::Twist _twist_type; + _twist_type st_twist; + _twist_type * twist; + uint32_t wrench_length; + typedef geometry_msgs::Wrench _wrench_type; + _wrench_type st_wrench; + _wrench_type * wrench; + + MultiDOFJointState(): + header(), + joint_names_length(0), joint_names(NULL), + transforms_length(0), transforms(NULL), + twist_length(0), twist(NULL), + wrench_length(0), wrench(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->joint_names_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->joint_names_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->joint_names_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->joint_names_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->joint_names_length); + for( uint32_t i = 0; i < joint_names_length; i++){ + uint32_t length_joint_namesi = strlen(this->joint_names[i]); + varToArr(outbuffer + offset, length_joint_namesi); + offset += 4; + memcpy(outbuffer + offset, this->joint_names[i], length_joint_namesi); + offset += length_joint_namesi; + } + *(outbuffer + offset + 0) = (this->transforms_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->transforms_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->transforms_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->transforms_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->transforms_length); + for( uint32_t i = 0; i < transforms_length; i++){ + offset += this->transforms[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->twist_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->twist_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->twist_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->twist_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->twist_length); + for( uint32_t i = 0; i < twist_length; i++){ + offset += this->twist[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->wrench_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->wrench_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->wrench_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->wrench_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->wrench_length); + for( uint32_t i = 0; i < wrench_length; i++){ + offset += this->wrench[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t joint_names_lengthT = ((uint32_t) (*(inbuffer + offset))); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->joint_names_length); + if(joint_names_lengthT > joint_names_length) + this->joint_names = (char**)realloc(this->joint_names, joint_names_lengthT * sizeof(char*)); + joint_names_length = joint_names_lengthT; + for( uint32_t i = 0; i < joint_names_length; i++){ + uint32_t length_st_joint_names; + arrToVar(length_st_joint_names, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_joint_names; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_joint_names-1]=0; + this->st_joint_names = (char *)(inbuffer + offset-1); + offset += length_st_joint_names; + memcpy( &(this->joint_names[i]), &(this->st_joint_names), sizeof(char*)); + } + uint32_t transforms_lengthT = ((uint32_t) (*(inbuffer + offset))); + transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->transforms_length); + if(transforms_lengthT > transforms_length) + this->transforms = (geometry_msgs::Transform*)realloc(this->transforms, transforms_lengthT * sizeof(geometry_msgs::Transform)); + transforms_length = transforms_lengthT; + for( uint32_t i = 0; i < transforms_length; i++){ + offset += this->st_transforms.deserialize(inbuffer + offset); + memcpy( &(this->transforms[i]), &(this->st_transforms), sizeof(geometry_msgs::Transform)); + } + uint32_t twist_lengthT = ((uint32_t) (*(inbuffer + offset))); + twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->twist_length); + if(twist_lengthT > twist_length) + this->twist = (geometry_msgs::Twist*)realloc(this->twist, twist_lengthT * sizeof(geometry_msgs::Twist)); + twist_length = twist_lengthT; + for( uint32_t i = 0; i < twist_length; i++){ + offset += this->st_twist.deserialize(inbuffer + offset); + memcpy( &(this->twist[i]), &(this->st_twist), sizeof(geometry_msgs::Twist)); + } + uint32_t wrench_lengthT = ((uint32_t) (*(inbuffer + offset))); + wrench_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + wrench_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + wrench_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->wrench_length); + if(wrench_lengthT > wrench_length) + this->wrench = (geometry_msgs::Wrench*)realloc(this->wrench, wrench_lengthT * sizeof(geometry_msgs::Wrench)); + wrench_length = wrench_lengthT; + for( uint32_t i = 0; i < wrench_length; i++){ + offset += this->st_wrench.deserialize(inbuffer + offset); + memcpy( &(this->wrench[i]), &(this->st_wrench), sizeof(geometry_msgs::Wrench)); + } + return offset; + } + + const char * getType(){ return "sensor_msgs/MultiDOFJointState"; }; + const char * getMD5(){ return "690f272f0640d2631c305eeb8301e59d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/sensor_msgs/MultiEchoLaserScan.h b/source/ros-max-lib/ros_lib/sensor_msgs/MultiEchoLaserScan.h new file mode 100644 index 0000000..35af2b2 --- /dev/null +++ b/source/ros-max-lib/ros_lib/sensor_msgs/MultiEchoLaserScan.h @@ -0,0 +1,263 @@ +#ifndef _ROS_sensor_msgs_MultiEchoLaserScan_h +#define _ROS_sensor_msgs_MultiEchoLaserScan_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "sensor_msgs/LaserEcho.h" + +namespace sensor_msgs +{ + + class MultiEchoLaserScan : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef float _angle_min_type; + _angle_min_type angle_min; + typedef float _angle_max_type; + _angle_max_type angle_max; + typedef float _angle_increment_type; + _angle_increment_type angle_increment; + typedef float _time_increment_type; + _time_increment_type time_increment; + typedef float _scan_time_type; + _scan_time_type scan_time; + typedef float _range_min_type; + _range_min_type range_min; + typedef float _range_max_type; + _range_max_type range_max; + uint32_t ranges_length; + typedef sensor_msgs::LaserEcho _ranges_type; + _ranges_type st_ranges; + _ranges_type * ranges; + uint32_t intensities_length; + typedef sensor_msgs::LaserEcho _intensities_type; + _intensities_type st_intensities; + _intensities_type * intensities; + + MultiEchoLaserScan(): + header(), + angle_min(0), + angle_max(0), + angle_increment(0), + time_increment(0), + scan_time(0), + range_min(0), + range_max(0), + ranges_length(0), ranges(NULL), + intensities_length(0), intensities(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + union { + float real; + uint32_t base; + } u_angle_min; + u_angle_min.real = this->angle_min; + *(outbuffer + offset + 0) = (u_angle_min.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_angle_min.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_angle_min.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_angle_min.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->angle_min); + union { + float real; + uint32_t base; + } u_angle_max; + u_angle_max.real = this->angle_max; + *(outbuffer + offset + 0) = (u_angle_max.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_angle_max.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_angle_max.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_angle_max.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->angle_max); + union { + float real; + uint32_t base; + } u_angle_increment; + u_angle_increment.real = this->angle_increment; + *(outbuffer + offset + 0) = (u_angle_increment.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_angle_increment.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_angle_increment.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_angle_increment.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->angle_increment); + union { + float real; + uint32_t base; + } u_time_increment; + u_time_increment.real = this->time_increment; + *(outbuffer + offset + 0) = (u_time_increment.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_time_increment.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_time_increment.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_time_increment.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->time_increment); + union { + float real; + uint32_t base; + } u_scan_time; + u_scan_time.real = this->scan_time; + *(outbuffer + offset + 0) = (u_scan_time.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_scan_time.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_scan_time.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_scan_time.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->scan_time); + union { + float real; + uint32_t base; + } u_range_min; + u_range_min.real = this->range_min; + *(outbuffer + offset + 0) = (u_range_min.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_range_min.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_range_min.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_range_min.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->range_min); + union { + float real; + uint32_t base; + } u_range_max; + u_range_max.real = this->range_max; + *(outbuffer + offset + 0) = (u_range_max.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_range_max.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_range_max.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_range_max.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->range_max); + *(outbuffer + offset + 0) = (this->ranges_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->ranges_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->ranges_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->ranges_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->ranges_length); + for( uint32_t i = 0; i < ranges_length; i++){ + offset += this->ranges[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->intensities_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->intensities_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->intensities_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->intensities_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->intensities_length); + for( uint32_t i = 0; i < intensities_length; i++){ + offset += this->intensities[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + union { + float real; + uint32_t base; + } u_angle_min; + u_angle_min.base = 0; + u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->angle_min = u_angle_min.real; + offset += sizeof(this->angle_min); + union { + float real; + uint32_t base; + } u_angle_max; + u_angle_max.base = 0; + u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->angle_max = u_angle_max.real; + offset += sizeof(this->angle_max); + union { + float real; + uint32_t base; + } u_angle_increment; + u_angle_increment.base = 0; + u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->angle_increment = u_angle_increment.real; + offset += sizeof(this->angle_increment); + union { + float real; + uint32_t base; + } u_time_increment; + u_time_increment.base = 0; + u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->time_increment = u_time_increment.real; + offset += sizeof(this->time_increment); + union { + float real; + uint32_t base; + } u_scan_time; + u_scan_time.base = 0; + u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->scan_time = u_scan_time.real; + offset += sizeof(this->scan_time); + union { + float real; + uint32_t base; + } u_range_min; + u_range_min.base = 0; + u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->range_min = u_range_min.real; + offset += sizeof(this->range_min); + union { + float real; + uint32_t base; + } u_range_max; + u_range_max.base = 0; + u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->range_max = u_range_max.real; + offset += sizeof(this->range_max); + uint32_t ranges_lengthT = ((uint32_t) (*(inbuffer + offset))); + ranges_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + ranges_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + ranges_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->ranges_length); + if(ranges_lengthT > ranges_length) + this->ranges = (sensor_msgs::LaserEcho*)realloc(this->ranges, ranges_lengthT * sizeof(sensor_msgs::LaserEcho)); + ranges_length = ranges_lengthT; + for( uint32_t i = 0; i < ranges_length; i++){ + offset += this->st_ranges.deserialize(inbuffer + offset); + memcpy( &(this->ranges[i]), &(this->st_ranges), sizeof(sensor_msgs::LaserEcho)); + } + uint32_t intensities_lengthT = ((uint32_t) (*(inbuffer + offset))); + intensities_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + intensities_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + intensities_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->intensities_length); + if(intensities_lengthT > intensities_length) + this->intensities = (sensor_msgs::LaserEcho*)realloc(this->intensities, intensities_lengthT * sizeof(sensor_msgs::LaserEcho)); + intensities_length = intensities_lengthT; + for( uint32_t i = 0; i < intensities_length; i++){ + offset += this->st_intensities.deserialize(inbuffer + offset); + memcpy( &(this->intensities[i]), &(this->st_intensities), sizeof(sensor_msgs::LaserEcho)); + } + return offset; + } + + const char * getType(){ return "sensor_msgs/MultiEchoLaserScan"; }; + const char * getMD5(){ return "6fefb0c6da89d7c8abe4b339f5c2f8fb"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/sensor_msgs/NavSatFix.h b/source/ros-max-lib/ros_lib/sensor_msgs/NavSatFix.h new file mode 100644 index 0000000..9edc7c1 --- /dev/null +++ b/source/ros-max-lib/ros_lib/sensor_msgs/NavSatFix.h @@ -0,0 +1,192 @@ +#ifndef _ROS_sensor_msgs_NavSatFix_h +#define _ROS_sensor_msgs_NavSatFix_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "sensor_msgs/NavSatStatus.h" + +namespace sensor_msgs +{ + + class NavSatFix : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef sensor_msgs::NavSatStatus _status_type; + _status_type status; + typedef double _latitude_type; + _latitude_type latitude; + typedef double _longitude_type; + _longitude_type longitude; + typedef double _altitude_type; + _altitude_type altitude; + double position_covariance[9]; + typedef uint8_t _position_covariance_type_type; + _position_covariance_type_type position_covariance_type; + enum { COVARIANCE_TYPE_UNKNOWN = 0 }; + enum { COVARIANCE_TYPE_APPROXIMATED = 1 }; + enum { COVARIANCE_TYPE_DIAGONAL_KNOWN = 2 }; + enum { COVARIANCE_TYPE_KNOWN = 3 }; + + NavSatFix(): + header(), + status(), + latitude(0), + longitude(0), + altitude(0), + position_covariance(), + position_covariance_type(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + union { + double real; + uint64_t base; + } u_latitude; + u_latitude.real = this->latitude; + *(outbuffer + offset + 0) = (u_latitude.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_latitude.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_latitude.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_latitude.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_latitude.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_latitude.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_latitude.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_latitude.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->latitude); + union { + double real; + uint64_t base; + } u_longitude; + u_longitude.real = this->longitude; + *(outbuffer + offset + 0) = (u_longitude.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_longitude.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_longitude.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_longitude.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_longitude.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_longitude.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_longitude.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_longitude.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->longitude); + union { + double real; + uint64_t base; + } u_altitude; + u_altitude.real = this->altitude; + *(outbuffer + offset + 0) = (u_altitude.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_altitude.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_altitude.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_altitude.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_altitude.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_altitude.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_altitude.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_altitude.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->altitude); + for( uint32_t i = 0; i < 9; i++){ + union { + double real; + uint64_t base; + } u_position_covariancei; + u_position_covariancei.real = this->position_covariance[i]; + *(outbuffer + offset + 0) = (u_position_covariancei.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_position_covariancei.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_position_covariancei.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_position_covariancei.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_position_covariancei.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_position_covariancei.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_position_covariancei.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_position_covariancei.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->position_covariance[i]); + } + *(outbuffer + offset + 0) = (this->position_covariance_type >> (8 * 0)) & 0xFF; + offset += sizeof(this->position_covariance_type); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + union { + double real; + uint64_t base; + } u_latitude; + u_latitude.base = 0; + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->latitude = u_latitude.real; + offset += sizeof(this->latitude); + union { + double real; + uint64_t base; + } u_longitude; + u_longitude.base = 0; + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->longitude = u_longitude.real; + offset += sizeof(this->longitude); + union { + double real; + uint64_t base; + } u_altitude; + u_altitude.base = 0; + u_altitude.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_altitude.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_altitude.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_altitude.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_altitude.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_altitude.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_altitude.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_altitude.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->altitude = u_altitude.real; + offset += sizeof(this->altitude); + for( uint32_t i = 0; i < 9; i++){ + union { + double real; + uint64_t base; + } u_position_covariancei; + u_position_covariancei.base = 0; + u_position_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_position_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_position_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_position_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_position_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_position_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_position_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_position_covariancei.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->position_covariance[i] = u_position_covariancei.real; + offset += sizeof(this->position_covariance[i]); + } + this->position_covariance_type = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->position_covariance_type); + return offset; + } + + const char * getType(){ return "sensor_msgs/NavSatFix"; }; + const char * getMD5(){ return "2d3a8cd499b9b4a0249fb98fd05cfa48"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/sensor_msgs/NavSatStatus.h b/source/ros-max-lib/ros_lib/sensor_msgs/NavSatStatus.h new file mode 100644 index 0000000..79d8abd --- /dev/null +++ b/source/ros-max-lib/ros_lib/sensor_msgs/NavSatStatus.h @@ -0,0 +1,73 @@ +#ifndef _ROS_sensor_msgs_NavSatStatus_h +#define _ROS_sensor_msgs_NavSatStatus_h + +#include +#include +#include +#include "ros/msg.h" + +namespace sensor_msgs +{ + + class NavSatStatus : public ros::Msg + { + public: + typedef int8_t _status_type; + _status_type status; + typedef uint16_t _service_type; + _service_type service; + enum { STATUS_NO_FIX = -1 }; + enum { STATUS_FIX = 0 }; + enum { STATUS_SBAS_FIX = 1 }; + enum { STATUS_GBAS_FIX = 2 }; + enum { SERVICE_GPS = 1 }; + enum { SERVICE_GLONASS = 2 }; + enum { SERVICE_COMPASS = 4 }; + enum { SERVICE_GALILEO = 8 }; + + NavSatStatus(): + status(0), + service(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int8_t real; + uint8_t base; + } u_status; + u_status.real = this->status; + *(outbuffer + offset + 0) = (u_status.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->status); + *(outbuffer + offset + 0) = (this->service >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->service >> (8 * 1)) & 0xFF; + offset += sizeof(this->service); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int8_t real; + uint8_t base; + } u_status; + u_status.base = 0; + u_status.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->status = u_status.real; + offset += sizeof(this->status); + this->service = ((uint16_t) (*(inbuffer + offset))); + this->service |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->service); + return offset; + } + + const char * getType(){ return "sensor_msgs/NavSatStatus"; }; + const char * getMD5(){ return "331cdbddfa4bc96ffc3b9ad98900a54c"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/sensor_msgs/PointCloud.h b/source/ros-max-lib/ros_lib/sensor_msgs/PointCloud.h new file mode 100644 index 0000000..f56e8d7 --- /dev/null +++ b/source/ros-max-lib/ros_lib/sensor_msgs/PointCloud.h @@ -0,0 +1,96 @@ +#ifndef _ROS_sensor_msgs_PointCloud_h +#define _ROS_sensor_msgs_PointCloud_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Point32.h" +#include "sensor_msgs/ChannelFloat32.h" + +namespace sensor_msgs +{ + + class PointCloud : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t points_length; + typedef geometry_msgs::Point32 _points_type; + _points_type st_points; + _points_type * points; + uint32_t channels_length; + typedef sensor_msgs::ChannelFloat32 _channels_type; + _channels_type st_channels; + _channels_type * channels; + + PointCloud(): + header(), + points_length(0), points(NULL), + channels_length(0), channels(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->points_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->points_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->points_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->points_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->points_length); + for( uint32_t i = 0; i < points_length; i++){ + offset += this->points[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->channels_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->channels_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->channels_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->channels_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->channels_length); + for( uint32_t i = 0; i < channels_length; i++){ + offset += this->channels[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t points_lengthT = ((uint32_t) (*(inbuffer + offset))); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->points_length); + if(points_lengthT > points_length) + this->points = (geometry_msgs::Point32*)realloc(this->points, points_lengthT * sizeof(geometry_msgs::Point32)); + points_length = points_lengthT; + for( uint32_t i = 0; i < points_length; i++){ + offset += this->st_points.deserialize(inbuffer + offset); + memcpy( &(this->points[i]), &(this->st_points), sizeof(geometry_msgs::Point32)); + } + uint32_t channels_lengthT = ((uint32_t) (*(inbuffer + offset))); + channels_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + channels_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + channels_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->channels_length); + if(channels_lengthT > channels_length) + this->channels = (sensor_msgs::ChannelFloat32*)realloc(this->channels, channels_lengthT * sizeof(sensor_msgs::ChannelFloat32)); + channels_length = channels_lengthT; + for( uint32_t i = 0; i < channels_length; i++){ + offset += this->st_channels.deserialize(inbuffer + offset); + memcpy( &(this->channels[i]), &(this->st_channels), sizeof(sensor_msgs::ChannelFloat32)); + } + return offset; + } + + const char * getType(){ return "sensor_msgs/PointCloud"; }; + const char * getMD5(){ return "d8e9c3f5afbdd8a130fd1d2763945fca"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/sensor_msgs/PointCloud2.h b/source/ros-max-lib/ros_lib/sensor_msgs/PointCloud2.h new file mode 100644 index 0000000..c545de1 --- /dev/null +++ b/source/ros-max-lib/ros_lib/sensor_msgs/PointCloud2.h @@ -0,0 +1,185 @@ +#ifndef _ROS_sensor_msgs_PointCloud2_h +#define _ROS_sensor_msgs_PointCloud2_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "sensor_msgs/PointField.h" + +namespace sensor_msgs +{ + + class PointCloud2 : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef uint32_t _height_type; + _height_type height; + typedef uint32_t _width_type; + _width_type width; + uint32_t fields_length; + typedef sensor_msgs::PointField _fields_type; + _fields_type st_fields; + _fields_type * fields; + typedef bool _is_bigendian_type; + _is_bigendian_type is_bigendian; + typedef uint32_t _point_step_type; + _point_step_type point_step; + typedef uint32_t _row_step_type; + _row_step_type row_step; + uint32_t data_length; + typedef uint8_t _data_type; + _data_type st_data; + _data_type * data; + typedef bool _is_dense_type; + _is_dense_type is_dense; + + PointCloud2(): + header(), + height(0), + width(0), + fields_length(0), fields(NULL), + is_bigendian(0), + point_step(0), + row_step(0), + data_length(0), data(NULL), + is_dense(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->height >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->height >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->height >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->height >> (8 * 3)) & 0xFF; + offset += sizeof(this->height); + *(outbuffer + offset + 0) = (this->width >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->width >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->width >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->width >> (8 * 3)) & 0xFF; + offset += sizeof(this->width); + *(outbuffer + offset + 0) = (this->fields_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->fields_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->fields_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->fields_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->fields_length); + for( uint32_t i = 0; i < fields_length; i++){ + offset += this->fields[i].serialize(outbuffer + offset); + } + union { + bool real; + uint8_t base; + } u_is_bigendian; + u_is_bigendian.real = this->is_bigendian; + *(outbuffer + offset + 0) = (u_is_bigendian.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->is_bigendian); + *(outbuffer + offset + 0) = (this->point_step >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->point_step >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->point_step >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->point_step >> (8 * 3)) & 0xFF; + offset += sizeof(this->point_step); + *(outbuffer + offset + 0) = (this->row_step >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->row_step >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->row_step >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->row_step >> (8 * 3)) & 0xFF; + offset += sizeof(this->row_step); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF; + offset += sizeof(this->data[i]); + } + union { + bool real; + uint8_t base; + } u_is_dense; + u_is_dense.real = this->is_dense; + *(outbuffer + offset + 0) = (u_is_dense.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->is_dense); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + this->height = ((uint32_t) (*(inbuffer + offset))); + this->height |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->height |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->height |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->height); + this->width = ((uint32_t) (*(inbuffer + offset))); + this->width |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->width |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->width |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->width); + uint32_t fields_lengthT = ((uint32_t) (*(inbuffer + offset))); + fields_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + fields_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + fields_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->fields_length); + if(fields_lengthT > fields_length) + this->fields = (sensor_msgs::PointField*)realloc(this->fields, fields_lengthT * sizeof(sensor_msgs::PointField)); + fields_length = fields_lengthT; + for( uint32_t i = 0; i < fields_length; i++){ + offset += this->st_fields.deserialize(inbuffer + offset); + memcpy( &(this->fields[i]), &(this->st_fields), sizeof(sensor_msgs::PointField)); + } + union { + bool real; + uint8_t base; + } u_is_bigendian; + u_is_bigendian.base = 0; + u_is_bigendian.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->is_bigendian = u_is_bigendian.real; + offset += sizeof(this->is_bigendian); + this->point_step = ((uint32_t) (*(inbuffer + offset))); + this->point_step |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->point_step |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->point_step |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->point_step); + this->row_step = ((uint32_t) (*(inbuffer + offset))); + this->row_step |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->row_step |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->row_step |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->row_step); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (uint8_t*)realloc(this->data, data_lengthT * sizeof(uint8_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + this->st_data = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(uint8_t)); + } + union { + bool real; + uint8_t base; + } u_is_dense; + u_is_dense.base = 0; + u_is_dense.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->is_dense = u_is_dense.real; + offset += sizeof(this->is_dense); + return offset; + } + + const char * getType(){ return "sensor_msgs/PointCloud2"; }; + const char * getMD5(){ return "1158d486dd51d683ce2f1be655c3c181"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/sensor_msgs/PointField.h b/source/ros-max-lib/ros_lib/sensor_msgs/PointField.h new file mode 100644 index 0000000..7ad0cc4 --- /dev/null +++ b/source/ros-max-lib/ros_lib/sensor_msgs/PointField.h @@ -0,0 +1,96 @@ +#ifndef _ROS_sensor_msgs_PointField_h +#define _ROS_sensor_msgs_PointField_h + +#include +#include +#include +#include "ros/msg.h" + +namespace sensor_msgs +{ + + class PointField : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef uint32_t _offset_type; + _offset_type offset; + typedef uint8_t _datatype_type; + _datatype_type datatype; + typedef uint32_t _count_type; + _count_type count; + enum { INT8 = 1 }; + enum { UINT8 = 2 }; + enum { INT16 = 3 }; + enum { UINT16 = 4 }; + enum { INT32 = 5 }; + enum { UINT32 = 6 }; + enum { FLOAT32 = 7 }; + enum { FLOAT64 = 8 }; + + PointField(): + name(""), + offset(0), + datatype(0), + count(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + *(outbuffer + offset + 0) = (this->offset >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->offset >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->offset >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->offset >> (8 * 3)) & 0xFF; + offset += sizeof(this->offset); + *(outbuffer + offset + 0) = (this->datatype >> (8 * 0)) & 0xFF; + offset += sizeof(this->datatype); + *(outbuffer + offset + 0) = (this->count >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->count >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->count >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->count >> (8 * 3)) & 0xFF; + offset += sizeof(this->count); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + this->offset = ((uint32_t) (*(inbuffer + offset))); + this->offset |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->offset |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->offset |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->offset); + this->datatype = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->datatype); + this->count = ((uint32_t) (*(inbuffer + offset))); + this->count |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->count |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->count |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->count); + return offset; + } + + const char * getType(){ return "sensor_msgs/PointField"; }; + const char * getMD5(){ return "268eacb2962780ceac86cbd17e328150"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/sensor_msgs/Range.h b/source/ros-max-lib/ros_lib/sensor_msgs/Range.h new file mode 100644 index 0000000..bfa827e --- /dev/null +++ b/source/ros-max-lib/ros_lib/sensor_msgs/Range.h @@ -0,0 +1,149 @@ +#ifndef _ROS_sensor_msgs_Range_h +#define _ROS_sensor_msgs_Range_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace sensor_msgs +{ + + class Range : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef uint8_t _radiation_type_type; + _radiation_type_type radiation_type; + typedef float _field_of_view_type; + _field_of_view_type field_of_view; + typedef float _min_range_type; + _min_range_type min_range; + typedef float _max_range_type; + _max_range_type max_range; + typedef float _range_type; + _range_type range; + enum { ULTRASOUND = 0 }; + enum { INFRARED = 1 }; + + Range(): + header(), + radiation_type(0), + field_of_view(0), + min_range(0), + max_range(0), + range(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->radiation_type >> (8 * 0)) & 0xFF; + offset += sizeof(this->radiation_type); + union { + float real; + uint32_t base; + } u_field_of_view; + u_field_of_view.real = this->field_of_view; + *(outbuffer + offset + 0) = (u_field_of_view.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_field_of_view.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_field_of_view.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_field_of_view.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->field_of_view); + union { + float real; + uint32_t base; + } u_min_range; + u_min_range.real = this->min_range; + *(outbuffer + offset + 0) = (u_min_range.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_min_range.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_min_range.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_min_range.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->min_range); + union { + float real; + uint32_t base; + } u_max_range; + u_max_range.real = this->max_range; + *(outbuffer + offset + 0) = (u_max_range.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_max_range.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_max_range.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_max_range.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->max_range); + union { + float real; + uint32_t base; + } u_range; + u_range.real = this->range; + *(outbuffer + offset + 0) = (u_range.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_range.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_range.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_range.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->range); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + this->radiation_type = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->radiation_type); + union { + float real; + uint32_t base; + } u_field_of_view; + u_field_of_view.base = 0; + u_field_of_view.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_field_of_view.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_field_of_view.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_field_of_view.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->field_of_view = u_field_of_view.real; + offset += sizeof(this->field_of_view); + union { + float real; + uint32_t base; + } u_min_range; + u_min_range.base = 0; + u_min_range.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_min_range.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_min_range.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_min_range.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->min_range = u_min_range.real; + offset += sizeof(this->min_range); + union { + float real; + uint32_t base; + } u_max_range; + u_max_range.base = 0; + u_max_range.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_max_range.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_max_range.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_max_range.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->max_range = u_max_range.real; + offset += sizeof(this->max_range); + union { + float real; + uint32_t base; + } u_range; + u_range.base = 0; + u_range.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_range.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_range.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_range.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->range = u_range.real; + offset += sizeof(this->range); + return offset; + } + + const char * getType(){ return "sensor_msgs/Range"; }; + const char * getMD5(){ return "c005c34273dc426c67a020a87bc24148"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/sensor_msgs/RegionOfInterest.h b/source/ros-max-lib/ros_lib/sensor_msgs/RegionOfInterest.h new file mode 100644 index 0000000..ea0c663 --- /dev/null +++ b/source/ros-max-lib/ros_lib/sensor_msgs/RegionOfInterest.h @@ -0,0 +1,108 @@ +#ifndef _ROS_sensor_msgs_RegionOfInterest_h +#define _ROS_sensor_msgs_RegionOfInterest_h + +#include +#include +#include +#include "ros/msg.h" + +namespace sensor_msgs +{ + + class RegionOfInterest : public ros::Msg + { + public: + typedef uint32_t _x_offset_type; + _x_offset_type x_offset; + typedef uint32_t _y_offset_type; + _y_offset_type y_offset; + typedef uint32_t _height_type; + _height_type height; + typedef uint32_t _width_type; + _width_type width; + typedef bool _do_rectify_type; + _do_rectify_type do_rectify; + + RegionOfInterest(): + x_offset(0), + y_offset(0), + height(0), + width(0), + do_rectify(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->x_offset >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->x_offset >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->x_offset >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->x_offset >> (8 * 3)) & 0xFF; + offset += sizeof(this->x_offset); + *(outbuffer + offset + 0) = (this->y_offset >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->y_offset >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->y_offset >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->y_offset >> (8 * 3)) & 0xFF; + offset += sizeof(this->y_offset); + *(outbuffer + offset + 0) = (this->height >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->height >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->height >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->height >> (8 * 3)) & 0xFF; + offset += sizeof(this->height); + *(outbuffer + offset + 0) = (this->width >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->width >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->width >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->width >> (8 * 3)) & 0xFF; + offset += sizeof(this->width); + union { + bool real; + uint8_t base; + } u_do_rectify; + u_do_rectify.real = this->do_rectify; + *(outbuffer + offset + 0) = (u_do_rectify.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->do_rectify); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->x_offset = ((uint32_t) (*(inbuffer + offset))); + this->x_offset |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->x_offset |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->x_offset |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->x_offset); + this->y_offset = ((uint32_t) (*(inbuffer + offset))); + this->y_offset |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->y_offset |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->y_offset |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->y_offset); + this->height = ((uint32_t) (*(inbuffer + offset))); + this->height |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->height |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->height |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->height); + this->width = ((uint32_t) (*(inbuffer + offset))); + this->width |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->width |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->width |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->width); + union { + bool real; + uint8_t base; + } u_do_rectify; + u_do_rectify.base = 0; + u_do_rectify.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->do_rectify = u_do_rectify.real; + offset += sizeof(this->do_rectify); + return offset; + } + + const char * getType(){ return "sensor_msgs/RegionOfInterest"; }; + const char * getMD5(){ return "bdb633039d588fcccb441a4d43ccfe09"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/sensor_msgs/RelativeHumidity.h b/source/ros-max-lib/ros_lib/sensor_msgs/RelativeHumidity.h new file mode 100644 index 0000000..a596f88 --- /dev/null +++ b/source/ros-max-lib/ros_lib/sensor_msgs/RelativeHumidity.h @@ -0,0 +1,108 @@ +#ifndef _ROS_sensor_msgs_RelativeHumidity_h +#define _ROS_sensor_msgs_RelativeHumidity_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace sensor_msgs +{ + + class RelativeHumidity : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef double _relative_humidity_type; + _relative_humidity_type relative_humidity; + typedef double _variance_type; + _variance_type variance; + + RelativeHumidity(): + header(), + relative_humidity(0), + variance(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + union { + double real; + uint64_t base; + } u_relative_humidity; + u_relative_humidity.real = this->relative_humidity; + *(outbuffer + offset + 0) = (u_relative_humidity.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_relative_humidity.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_relative_humidity.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_relative_humidity.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_relative_humidity.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_relative_humidity.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_relative_humidity.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_relative_humidity.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->relative_humidity); + union { + double real; + uint64_t base; + } u_variance; + u_variance.real = this->variance; + *(outbuffer + offset + 0) = (u_variance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_variance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_variance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_variance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_variance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_variance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_variance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_variance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->variance); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + union { + double real; + uint64_t base; + } u_relative_humidity; + u_relative_humidity.base = 0; + u_relative_humidity.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_relative_humidity.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_relative_humidity.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_relative_humidity.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_relative_humidity.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_relative_humidity.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_relative_humidity.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_relative_humidity.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->relative_humidity = u_relative_humidity.real; + offset += sizeof(this->relative_humidity); + union { + double real; + uint64_t base; + } u_variance; + u_variance.base = 0; + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->variance = u_variance.real; + offset += sizeof(this->variance); + return offset; + } + + const char * getType(){ return "sensor_msgs/RelativeHumidity"; }; + const char * getMD5(){ return "8730015b05955b7e992ce29a2678d90f"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/sensor_msgs/SetCameraInfo.h b/source/ros-max-lib/ros_lib/sensor_msgs/SetCameraInfo.h new file mode 100644 index 0000000..3f838fb --- /dev/null +++ b/source/ros-max-lib/ros_lib/sensor_msgs/SetCameraInfo.h @@ -0,0 +1,111 @@ +#ifndef _ROS_SERVICE_SetCameraInfo_h +#define _ROS_SERVICE_SetCameraInfo_h +#include +#include +#include +#include "ros/msg.h" +#include "sensor_msgs/CameraInfo.h" + +namespace sensor_msgs +{ + +static const char SETCAMERAINFO[] = "sensor_msgs/SetCameraInfo"; + + class SetCameraInfoRequest : public ros::Msg + { + public: + typedef sensor_msgs::CameraInfo _camera_info_type; + _camera_info_type camera_info; + + SetCameraInfoRequest(): + camera_info() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->camera_info.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->camera_info.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return SETCAMERAINFO; }; + const char * getMD5(){ return "ee34be01fdeee563d0d99cd594d5581d"; }; + + }; + + class SetCameraInfoResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _status_message_type; + _status_message_type status_message; + + SetCameraInfoResponse(): + success(0), + status_message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_status_message = strlen(this->status_message); + varToArr(outbuffer + offset, length_status_message); + offset += 4; + memcpy(outbuffer + offset, this->status_message, length_status_message); + offset += length_status_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_status_message; + arrToVar(length_status_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_status_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_status_message-1]=0; + this->status_message = (char *)(inbuffer + offset-1); + offset += length_status_message; + return offset; + } + + const char * getType(){ return SETCAMERAINFO; }; + const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; }; + + }; + + class SetCameraInfo { + public: + typedef SetCameraInfoRequest Request; + typedef SetCameraInfoResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/sensor_msgs/Temperature.h b/source/ros-max-lib/ros_lib/sensor_msgs/Temperature.h new file mode 100644 index 0000000..4308487 --- /dev/null +++ b/source/ros-max-lib/ros_lib/sensor_msgs/Temperature.h @@ -0,0 +1,108 @@ +#ifndef _ROS_sensor_msgs_Temperature_h +#define _ROS_sensor_msgs_Temperature_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace sensor_msgs +{ + + class Temperature : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef double _temperature_type; + _temperature_type temperature; + typedef double _variance_type; + _variance_type variance; + + Temperature(): + header(), + temperature(0), + variance(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + union { + double real; + uint64_t base; + } u_temperature; + u_temperature.real = this->temperature; + *(outbuffer + offset + 0) = (u_temperature.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_temperature.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_temperature.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_temperature.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_temperature.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_temperature.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_temperature.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_temperature.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->temperature); + union { + double real; + uint64_t base; + } u_variance; + u_variance.real = this->variance; + *(outbuffer + offset + 0) = (u_variance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_variance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_variance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_variance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_variance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_variance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_variance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_variance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->variance); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + union { + double real; + uint64_t base; + } u_temperature; + u_temperature.base = 0; + u_temperature.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_temperature.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_temperature.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_temperature.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_temperature.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_temperature.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_temperature.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_temperature.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->temperature = u_temperature.real; + offset += sizeof(this->temperature); + union { + double real; + uint64_t base; + } u_variance; + u_variance.base = 0; + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->variance = u_variance.real; + offset += sizeof(this->variance); + return offset; + } + + const char * getType(){ return "sensor_msgs/Temperature"; }; + const char * getMD5(){ return "ff71b307acdbe7c871a5a6d7ed359100"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/sensor_msgs/TimeReference.h b/source/ros-max-lib/ros_lib/sensor_msgs/TimeReference.h new file mode 100644 index 0000000..ed81b28 --- /dev/null +++ b/source/ros-max-lib/ros_lib/sensor_msgs/TimeReference.h @@ -0,0 +1,85 @@ +#ifndef _ROS_sensor_msgs_TimeReference_h +#define _ROS_sensor_msgs_TimeReference_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "ros/time.h" + +namespace sensor_msgs +{ + + class TimeReference : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef ros::Time _time_ref_type; + _time_ref_type time_ref; + typedef const char* _source_type; + _source_type source; + + TimeReference(): + header(), + time_ref(), + source("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->time_ref.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->time_ref.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->time_ref.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->time_ref.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->time_ref.sec); + *(outbuffer + offset + 0) = (this->time_ref.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->time_ref.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->time_ref.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->time_ref.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->time_ref.nsec); + uint32_t length_source = strlen(this->source); + varToArr(outbuffer + offset, length_source); + offset += 4; + memcpy(outbuffer + offset, this->source, length_source); + offset += length_source; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + this->time_ref.sec = ((uint32_t) (*(inbuffer + offset))); + this->time_ref.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->time_ref.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->time_ref.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->time_ref.sec); + this->time_ref.nsec = ((uint32_t) (*(inbuffer + offset))); + this->time_ref.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->time_ref.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->time_ref.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->time_ref.nsec); + uint32_t length_source; + arrToVar(length_source, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_source; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_source-1]=0; + this->source = (char *)(inbuffer + offset-1); + offset += length_source; + return offset; + } + + const char * getType(){ return "sensor_msgs/TimeReference"; }; + const char * getMD5(){ return "fded64a0265108ba86c3d38fb11c0c16"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/shape_msgs/Mesh.h b/source/ros-max-lib/ros_lib/shape_msgs/Mesh.h new file mode 100644 index 0000000..3599765 --- /dev/null +++ b/source/ros-max-lib/ros_lib/shape_msgs/Mesh.h @@ -0,0 +1,90 @@ +#ifndef _ROS_shape_msgs_Mesh_h +#define _ROS_shape_msgs_Mesh_h + +#include +#include +#include +#include "ros/msg.h" +#include "shape_msgs/MeshTriangle.h" +#include "geometry_msgs/Point.h" + +namespace shape_msgs +{ + + class Mesh : public ros::Msg + { + public: + uint32_t triangles_length; + typedef shape_msgs::MeshTriangle _triangles_type; + _triangles_type st_triangles; + _triangles_type * triangles; + uint32_t vertices_length; + typedef geometry_msgs::Point _vertices_type; + _vertices_type st_vertices; + _vertices_type * vertices; + + Mesh(): + triangles_length(0), triangles(NULL), + vertices_length(0), vertices(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->triangles_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->triangles_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->triangles_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->triangles_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->triangles_length); + for( uint32_t i = 0; i < triangles_length; i++){ + offset += this->triangles[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->vertices_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->vertices_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->vertices_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->vertices_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->vertices_length); + for( uint32_t i = 0; i < vertices_length; i++){ + offset += this->vertices[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t triangles_lengthT = ((uint32_t) (*(inbuffer + offset))); + triangles_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + triangles_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + triangles_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->triangles_length); + if(triangles_lengthT > triangles_length) + this->triangles = (shape_msgs::MeshTriangle*)realloc(this->triangles, triangles_lengthT * sizeof(shape_msgs::MeshTriangle)); + triangles_length = triangles_lengthT; + for( uint32_t i = 0; i < triangles_length; i++){ + offset += this->st_triangles.deserialize(inbuffer + offset); + memcpy( &(this->triangles[i]), &(this->st_triangles), sizeof(shape_msgs::MeshTriangle)); + } + uint32_t vertices_lengthT = ((uint32_t) (*(inbuffer + offset))); + vertices_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + vertices_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + vertices_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->vertices_length); + if(vertices_lengthT > vertices_length) + this->vertices = (geometry_msgs::Point*)realloc(this->vertices, vertices_lengthT * sizeof(geometry_msgs::Point)); + vertices_length = vertices_lengthT; + for( uint32_t i = 0; i < vertices_length; i++){ + offset += this->st_vertices.deserialize(inbuffer + offset); + memcpy( &(this->vertices[i]), &(this->st_vertices), sizeof(geometry_msgs::Point)); + } + return offset; + } + + const char * getType(){ return "shape_msgs/Mesh"; }; + const char * getMD5(){ return "1ffdae9486cd3316a121c578b47a85cc"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/shape_msgs/MeshTriangle.h b/source/ros-max-lib/ros_lib/shape_msgs/MeshTriangle.h new file mode 100644 index 0000000..b4aad17 --- /dev/null +++ b/source/ros-max-lib/ros_lib/shape_msgs/MeshTriangle.h @@ -0,0 +1,54 @@ +#ifndef _ROS_shape_msgs_MeshTriangle_h +#define _ROS_shape_msgs_MeshTriangle_h + +#include +#include +#include +#include "ros/msg.h" + +namespace shape_msgs +{ + + class MeshTriangle : public ros::Msg + { + public: + uint32_t vertex_indices[3]; + + MeshTriangle(): + vertex_indices() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + for( uint32_t i = 0; i < 3; i++){ + *(outbuffer + offset + 0) = (this->vertex_indices[i] >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->vertex_indices[i] >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->vertex_indices[i] >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->vertex_indices[i] >> (8 * 3)) & 0xFF; + offset += sizeof(this->vertex_indices[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + for( uint32_t i = 0; i < 3; i++){ + this->vertex_indices[i] = ((uint32_t) (*(inbuffer + offset))); + this->vertex_indices[i] |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->vertex_indices[i] |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->vertex_indices[i] |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->vertex_indices[i]); + } + return offset; + } + + const char * getType(){ return "shape_msgs/MeshTriangle"; }; + const char * getMD5(){ return "23688b2e6d2de3d32fe8af104a903253"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/shape_msgs/Plane.h b/source/ros-max-lib/ros_lib/shape_msgs/Plane.h new file mode 100644 index 0000000..6f4c332 --- /dev/null +++ b/source/ros-max-lib/ros_lib/shape_msgs/Plane.h @@ -0,0 +1,73 @@ +#ifndef _ROS_shape_msgs_Plane_h +#define _ROS_shape_msgs_Plane_h + +#include +#include +#include +#include "ros/msg.h" + +namespace shape_msgs +{ + + class Plane : public ros::Msg + { + public: + double coef[4]; + + Plane(): + coef() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + for( uint32_t i = 0; i < 4; i++){ + union { + double real; + uint64_t base; + } u_coefi; + u_coefi.real = this->coef[i]; + *(outbuffer + offset + 0) = (u_coefi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_coefi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_coefi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_coefi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_coefi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_coefi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_coefi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_coefi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->coef[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + for( uint32_t i = 0; i < 4; i++){ + union { + double real; + uint64_t base; + } u_coefi; + u_coefi.base = 0; + u_coefi.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_coefi.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_coefi.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_coefi.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_coefi.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_coefi.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_coefi.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_coefi.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->coef[i] = u_coefi.real; + offset += sizeof(this->coef[i]); + } + return offset; + } + + const char * getType(){ return "shape_msgs/Plane"; }; + const char * getMD5(){ return "2c1b92ed8f31492f8e73f6a4a44ca796"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/shape_msgs/SolidPrimitive.h b/source/ros-max-lib/ros_lib/shape_msgs/SolidPrimitive.h new file mode 100644 index 0000000..4751ad8 --- /dev/null +++ b/source/ros-max-lib/ros_lib/shape_msgs/SolidPrimitive.h @@ -0,0 +1,109 @@ +#ifndef _ROS_shape_msgs_SolidPrimitive_h +#define _ROS_shape_msgs_SolidPrimitive_h + +#include +#include +#include +#include "ros/msg.h" + +namespace shape_msgs +{ + + class SolidPrimitive : public ros::Msg + { + public: + typedef uint8_t _type_type; + _type_type type; + uint32_t dimensions_length; + typedef double _dimensions_type; + _dimensions_type st_dimensions; + _dimensions_type * dimensions; + enum { BOX = 1 }; + enum { SPHERE = 2 }; + enum { CYLINDER = 3 }; + enum { CONE = 4 }; + enum { BOX_X = 0 }; + enum { BOX_Y = 1 }; + enum { BOX_Z = 2 }; + enum { SPHERE_RADIUS = 0 }; + enum { CYLINDER_HEIGHT = 0 }; + enum { CYLINDER_RADIUS = 1 }; + enum { CONE_HEIGHT = 0 }; + enum { CONE_RADIUS = 1 }; + + SolidPrimitive(): + type(0), + dimensions_length(0), dimensions(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->type >> (8 * 0)) & 0xFF; + offset += sizeof(this->type); + *(outbuffer + offset + 0) = (this->dimensions_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->dimensions_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->dimensions_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->dimensions_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->dimensions_length); + for( uint32_t i = 0; i < dimensions_length; i++){ + union { + double real; + uint64_t base; + } u_dimensionsi; + u_dimensionsi.real = this->dimensions[i]; + *(outbuffer + offset + 0) = (u_dimensionsi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_dimensionsi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_dimensionsi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_dimensionsi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_dimensionsi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_dimensionsi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_dimensionsi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_dimensionsi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->dimensions[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->type = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->type); + uint32_t dimensions_lengthT = ((uint32_t) (*(inbuffer + offset))); + dimensions_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + dimensions_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + dimensions_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->dimensions_length); + if(dimensions_lengthT > dimensions_length) + this->dimensions = (double*)realloc(this->dimensions, dimensions_lengthT * sizeof(double)); + dimensions_length = dimensions_lengthT; + for( uint32_t i = 0; i < dimensions_length; i++){ + union { + double real; + uint64_t base; + } u_st_dimensions; + u_st_dimensions.base = 0; + u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_dimensions.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_dimensions = u_st_dimensions.real; + offset += sizeof(this->st_dimensions); + memcpy( &(this->dimensions[i]), &(this->st_dimensions), sizeof(double)); + } + return offset; + } + + const char * getType(){ return "shape_msgs/SolidPrimitive"; }; + const char * getMD5(){ return "d8f8cbc74c5ff283fca29569ccefb45d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/smach_msgs/SmachContainerInitialStatusCmd.h b/source/ros-max-lib/ros_lib/smach_msgs/SmachContainerInitialStatusCmd.h new file mode 100644 index 0000000..bd1e131 --- /dev/null +++ b/source/ros-max-lib/ros_lib/smach_msgs/SmachContainerInitialStatusCmd.h @@ -0,0 +1,109 @@ +#ifndef _ROS_smach_msgs_SmachContainerInitialStatusCmd_h +#define _ROS_smach_msgs_SmachContainerInitialStatusCmd_h + +#include +#include +#include +#include "ros/msg.h" + +namespace smach_msgs +{ + + class SmachContainerInitialStatusCmd : public ros::Msg + { + public: + typedef const char* _path_type; + _path_type path; + uint32_t initial_states_length; + typedef char* _initial_states_type; + _initial_states_type st_initial_states; + _initial_states_type * initial_states; + typedef const char* _local_data_type; + _local_data_type local_data; + + SmachContainerInitialStatusCmd(): + path(""), + initial_states_length(0), initial_states(NULL), + local_data("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_path = strlen(this->path); + varToArr(outbuffer + offset, length_path); + offset += 4; + memcpy(outbuffer + offset, this->path, length_path); + offset += length_path; + *(outbuffer + offset + 0) = (this->initial_states_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->initial_states_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->initial_states_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->initial_states_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->initial_states_length); + for( uint32_t i = 0; i < initial_states_length; i++){ + uint32_t length_initial_statesi = strlen(this->initial_states[i]); + varToArr(outbuffer + offset, length_initial_statesi); + offset += 4; + memcpy(outbuffer + offset, this->initial_states[i], length_initial_statesi); + offset += length_initial_statesi; + } + uint32_t length_local_data = strlen(this->local_data); + varToArr(outbuffer + offset, length_local_data); + offset += 4; + memcpy(outbuffer + offset, this->local_data, length_local_data); + offset += length_local_data; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_path; + arrToVar(length_path, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_path; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_path-1]=0; + this->path = (char *)(inbuffer + offset-1); + offset += length_path; + uint32_t initial_states_lengthT = ((uint32_t) (*(inbuffer + offset))); + initial_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + initial_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + initial_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->initial_states_length); + if(initial_states_lengthT > initial_states_length) + this->initial_states = (char**)realloc(this->initial_states, initial_states_lengthT * sizeof(char*)); + initial_states_length = initial_states_lengthT; + for( uint32_t i = 0; i < initial_states_length; i++){ + uint32_t length_st_initial_states; + arrToVar(length_st_initial_states, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_initial_states; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_initial_states-1]=0; + this->st_initial_states = (char *)(inbuffer + offset-1); + offset += length_st_initial_states; + memcpy( &(this->initial_states[i]), &(this->st_initial_states), sizeof(char*)); + } + uint32_t length_local_data; + arrToVar(length_local_data, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_local_data; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_local_data-1]=0; + this->local_data = (char *)(inbuffer + offset-1); + offset += length_local_data; + return offset; + } + + const char * getType(){ return "smach_msgs/SmachContainerInitialStatusCmd"; }; + const char * getMD5(){ return "45f8cf31fc29b829db77f23001f788d6"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/smach_msgs/SmachContainerStatus.h b/source/ros-max-lib/ros_lib/smach_msgs/SmachContainerStatus.h new file mode 100644 index 0000000..8c54da3 --- /dev/null +++ b/source/ros-max-lib/ros_lib/smach_msgs/SmachContainerStatus.h @@ -0,0 +1,169 @@ +#ifndef _ROS_smach_msgs_SmachContainerStatus_h +#define _ROS_smach_msgs_SmachContainerStatus_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace smach_msgs +{ + + class SmachContainerStatus : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef const char* _path_type; + _path_type path; + uint32_t initial_states_length; + typedef char* _initial_states_type; + _initial_states_type st_initial_states; + _initial_states_type * initial_states; + uint32_t active_states_length; + typedef char* _active_states_type; + _active_states_type st_active_states; + _active_states_type * active_states; + typedef const char* _local_data_type; + _local_data_type local_data; + typedef const char* _info_type; + _info_type info; + + SmachContainerStatus(): + header(), + path(""), + initial_states_length(0), initial_states(NULL), + active_states_length(0), active_states(NULL), + local_data(""), + info("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + uint32_t length_path = strlen(this->path); + varToArr(outbuffer + offset, length_path); + offset += 4; + memcpy(outbuffer + offset, this->path, length_path); + offset += length_path; + *(outbuffer + offset + 0) = (this->initial_states_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->initial_states_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->initial_states_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->initial_states_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->initial_states_length); + for( uint32_t i = 0; i < initial_states_length; i++){ + uint32_t length_initial_statesi = strlen(this->initial_states[i]); + varToArr(outbuffer + offset, length_initial_statesi); + offset += 4; + memcpy(outbuffer + offset, this->initial_states[i], length_initial_statesi); + offset += length_initial_statesi; + } + *(outbuffer + offset + 0) = (this->active_states_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->active_states_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->active_states_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->active_states_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->active_states_length); + for( uint32_t i = 0; i < active_states_length; i++){ + uint32_t length_active_statesi = strlen(this->active_states[i]); + varToArr(outbuffer + offset, length_active_statesi); + offset += 4; + memcpy(outbuffer + offset, this->active_states[i], length_active_statesi); + offset += length_active_statesi; + } + uint32_t length_local_data = strlen(this->local_data); + varToArr(outbuffer + offset, length_local_data); + offset += 4; + memcpy(outbuffer + offset, this->local_data, length_local_data); + offset += length_local_data; + uint32_t length_info = strlen(this->info); + varToArr(outbuffer + offset, length_info); + offset += 4; + memcpy(outbuffer + offset, this->info, length_info); + offset += length_info; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t length_path; + arrToVar(length_path, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_path; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_path-1]=0; + this->path = (char *)(inbuffer + offset-1); + offset += length_path; + uint32_t initial_states_lengthT = ((uint32_t) (*(inbuffer + offset))); + initial_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + initial_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + initial_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->initial_states_length); + if(initial_states_lengthT > initial_states_length) + this->initial_states = (char**)realloc(this->initial_states, initial_states_lengthT * sizeof(char*)); + initial_states_length = initial_states_lengthT; + for( uint32_t i = 0; i < initial_states_length; i++){ + uint32_t length_st_initial_states; + arrToVar(length_st_initial_states, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_initial_states; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_initial_states-1]=0; + this->st_initial_states = (char *)(inbuffer + offset-1); + offset += length_st_initial_states; + memcpy( &(this->initial_states[i]), &(this->st_initial_states), sizeof(char*)); + } + uint32_t active_states_lengthT = ((uint32_t) (*(inbuffer + offset))); + active_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + active_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + active_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->active_states_length); + if(active_states_lengthT > active_states_length) + this->active_states = (char**)realloc(this->active_states, active_states_lengthT * sizeof(char*)); + active_states_length = active_states_lengthT; + for( uint32_t i = 0; i < active_states_length; i++){ + uint32_t length_st_active_states; + arrToVar(length_st_active_states, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_active_states; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_active_states-1]=0; + this->st_active_states = (char *)(inbuffer + offset-1); + offset += length_st_active_states; + memcpy( &(this->active_states[i]), &(this->st_active_states), sizeof(char*)); + } + uint32_t length_local_data; + arrToVar(length_local_data, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_local_data; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_local_data-1]=0; + this->local_data = (char *)(inbuffer + offset-1); + offset += length_local_data; + uint32_t length_info; + arrToVar(length_info, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_info; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_info-1]=0; + this->info = (char *)(inbuffer + offset-1); + offset += length_info; + return offset; + } + + const char * getType(){ return "smach_msgs/SmachContainerStatus"; }; + const char * getMD5(){ return "5ba2bb79ac19e3842d562a191f2a675b"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/smach_msgs/SmachContainerStructure.h b/source/ros-max-lib/ros_lib/smach_msgs/SmachContainerStructure.h new file mode 100644 index 0000000..935b7e1 --- /dev/null +++ b/source/ros-max-lib/ros_lib/smach_msgs/SmachContainerStructure.h @@ -0,0 +1,246 @@ +#ifndef _ROS_smach_msgs_SmachContainerStructure_h +#define _ROS_smach_msgs_SmachContainerStructure_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace smach_msgs +{ + + class SmachContainerStructure : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef const char* _path_type; + _path_type path; + uint32_t children_length; + typedef char* _children_type; + _children_type st_children; + _children_type * children; + uint32_t internal_outcomes_length; + typedef char* _internal_outcomes_type; + _internal_outcomes_type st_internal_outcomes; + _internal_outcomes_type * internal_outcomes; + uint32_t outcomes_from_length; + typedef char* _outcomes_from_type; + _outcomes_from_type st_outcomes_from; + _outcomes_from_type * outcomes_from; + uint32_t outcomes_to_length; + typedef char* _outcomes_to_type; + _outcomes_to_type st_outcomes_to; + _outcomes_to_type * outcomes_to; + uint32_t container_outcomes_length; + typedef char* _container_outcomes_type; + _container_outcomes_type st_container_outcomes; + _container_outcomes_type * container_outcomes; + + SmachContainerStructure(): + header(), + path(""), + children_length(0), children(NULL), + internal_outcomes_length(0), internal_outcomes(NULL), + outcomes_from_length(0), outcomes_from(NULL), + outcomes_to_length(0), outcomes_to(NULL), + container_outcomes_length(0), container_outcomes(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + uint32_t length_path = strlen(this->path); + varToArr(outbuffer + offset, length_path); + offset += 4; + memcpy(outbuffer + offset, this->path, length_path); + offset += length_path; + *(outbuffer + offset + 0) = (this->children_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->children_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->children_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->children_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->children_length); + for( uint32_t i = 0; i < children_length; i++){ + uint32_t length_childreni = strlen(this->children[i]); + varToArr(outbuffer + offset, length_childreni); + offset += 4; + memcpy(outbuffer + offset, this->children[i], length_childreni); + offset += length_childreni; + } + *(outbuffer + offset + 0) = (this->internal_outcomes_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->internal_outcomes_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->internal_outcomes_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->internal_outcomes_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->internal_outcomes_length); + for( uint32_t i = 0; i < internal_outcomes_length; i++){ + uint32_t length_internal_outcomesi = strlen(this->internal_outcomes[i]); + varToArr(outbuffer + offset, length_internal_outcomesi); + offset += 4; + memcpy(outbuffer + offset, this->internal_outcomes[i], length_internal_outcomesi); + offset += length_internal_outcomesi; + } + *(outbuffer + offset + 0) = (this->outcomes_from_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->outcomes_from_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->outcomes_from_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->outcomes_from_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->outcomes_from_length); + for( uint32_t i = 0; i < outcomes_from_length; i++){ + uint32_t length_outcomes_fromi = strlen(this->outcomes_from[i]); + varToArr(outbuffer + offset, length_outcomes_fromi); + offset += 4; + memcpy(outbuffer + offset, this->outcomes_from[i], length_outcomes_fromi); + offset += length_outcomes_fromi; + } + *(outbuffer + offset + 0) = (this->outcomes_to_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->outcomes_to_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->outcomes_to_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->outcomes_to_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->outcomes_to_length); + for( uint32_t i = 0; i < outcomes_to_length; i++){ + uint32_t length_outcomes_toi = strlen(this->outcomes_to[i]); + varToArr(outbuffer + offset, length_outcomes_toi); + offset += 4; + memcpy(outbuffer + offset, this->outcomes_to[i], length_outcomes_toi); + offset += length_outcomes_toi; + } + *(outbuffer + offset + 0) = (this->container_outcomes_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->container_outcomes_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->container_outcomes_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->container_outcomes_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->container_outcomes_length); + for( uint32_t i = 0; i < container_outcomes_length; i++){ + uint32_t length_container_outcomesi = strlen(this->container_outcomes[i]); + varToArr(outbuffer + offset, length_container_outcomesi); + offset += 4; + memcpy(outbuffer + offset, this->container_outcomes[i], length_container_outcomesi); + offset += length_container_outcomesi; + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t length_path; + arrToVar(length_path, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_path; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_path-1]=0; + this->path = (char *)(inbuffer + offset-1); + offset += length_path; + uint32_t children_lengthT = ((uint32_t) (*(inbuffer + offset))); + children_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + children_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + children_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->children_length); + if(children_lengthT > children_length) + this->children = (char**)realloc(this->children, children_lengthT * sizeof(char*)); + children_length = children_lengthT; + for( uint32_t i = 0; i < children_length; i++){ + uint32_t length_st_children; + arrToVar(length_st_children, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_children; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_children-1]=0; + this->st_children = (char *)(inbuffer + offset-1); + offset += length_st_children; + memcpy( &(this->children[i]), &(this->st_children), sizeof(char*)); + } + uint32_t internal_outcomes_lengthT = ((uint32_t) (*(inbuffer + offset))); + internal_outcomes_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + internal_outcomes_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + internal_outcomes_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->internal_outcomes_length); + if(internal_outcomes_lengthT > internal_outcomes_length) + this->internal_outcomes = (char**)realloc(this->internal_outcomes, internal_outcomes_lengthT * sizeof(char*)); + internal_outcomes_length = internal_outcomes_lengthT; + for( uint32_t i = 0; i < internal_outcomes_length; i++){ + uint32_t length_st_internal_outcomes; + arrToVar(length_st_internal_outcomes, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_internal_outcomes; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_internal_outcomes-1]=0; + this->st_internal_outcomes = (char *)(inbuffer + offset-1); + offset += length_st_internal_outcomes; + memcpy( &(this->internal_outcomes[i]), &(this->st_internal_outcomes), sizeof(char*)); + } + uint32_t outcomes_from_lengthT = ((uint32_t) (*(inbuffer + offset))); + outcomes_from_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + outcomes_from_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + outcomes_from_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->outcomes_from_length); + if(outcomes_from_lengthT > outcomes_from_length) + this->outcomes_from = (char**)realloc(this->outcomes_from, outcomes_from_lengthT * sizeof(char*)); + outcomes_from_length = outcomes_from_lengthT; + for( uint32_t i = 0; i < outcomes_from_length; i++){ + uint32_t length_st_outcomes_from; + arrToVar(length_st_outcomes_from, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_outcomes_from; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_outcomes_from-1]=0; + this->st_outcomes_from = (char *)(inbuffer + offset-1); + offset += length_st_outcomes_from; + memcpy( &(this->outcomes_from[i]), &(this->st_outcomes_from), sizeof(char*)); + } + uint32_t outcomes_to_lengthT = ((uint32_t) (*(inbuffer + offset))); + outcomes_to_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + outcomes_to_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + outcomes_to_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->outcomes_to_length); + if(outcomes_to_lengthT > outcomes_to_length) + this->outcomes_to = (char**)realloc(this->outcomes_to, outcomes_to_lengthT * sizeof(char*)); + outcomes_to_length = outcomes_to_lengthT; + for( uint32_t i = 0; i < outcomes_to_length; i++){ + uint32_t length_st_outcomes_to; + arrToVar(length_st_outcomes_to, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_outcomes_to; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_outcomes_to-1]=0; + this->st_outcomes_to = (char *)(inbuffer + offset-1); + offset += length_st_outcomes_to; + memcpy( &(this->outcomes_to[i]), &(this->st_outcomes_to), sizeof(char*)); + } + uint32_t container_outcomes_lengthT = ((uint32_t) (*(inbuffer + offset))); + container_outcomes_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + container_outcomes_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + container_outcomes_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->container_outcomes_length); + if(container_outcomes_lengthT > container_outcomes_length) + this->container_outcomes = (char**)realloc(this->container_outcomes, container_outcomes_lengthT * sizeof(char*)); + container_outcomes_length = container_outcomes_lengthT; + for( uint32_t i = 0; i < container_outcomes_length; i++){ + uint32_t length_st_container_outcomes; + arrToVar(length_st_container_outcomes, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_container_outcomes; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_container_outcomes-1]=0; + this->st_container_outcomes = (char *)(inbuffer + offset-1); + offset += length_st_container_outcomes; + memcpy( &(this->container_outcomes[i]), &(this->st_container_outcomes), sizeof(char*)); + } + return offset; + } + + const char * getType(){ return "smach_msgs/SmachContainerStructure"; }; + const char * getMD5(){ return "3d3d1e0d0f99779ee9e58101a5dcf7ea"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/statistics_msgs/Stats1D.h b/source/ros-max-lib/ros_lib/statistics_msgs/Stats1D.h new file mode 100644 index 0000000..9b3b256 --- /dev/null +++ b/source/ros-max-lib/ros_lib/statistics_msgs/Stats1D.h @@ -0,0 +1,198 @@ +#ifndef _ROS_statistics_msgs_Stats1D_h +#define _ROS_statistics_msgs_Stats1D_h + +#include +#include +#include +#include "ros/msg.h" + +namespace statistics_msgs +{ + + class Stats1D : public ros::Msg + { + public: + typedef double _min_type; + _min_type min; + typedef double _max_type; + _max_type max; + typedef double _mean_type; + _mean_type mean; + typedef double _variance_type; + _variance_type variance; + typedef int64_t _N_type; + _N_type N; + + Stats1D(): + min(0), + max(0), + mean(0), + variance(0), + N(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_min; + u_min.real = this->min; + *(outbuffer + offset + 0) = (u_min.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_min.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_min.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_min.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_min.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_min.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_min.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_min.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->min); + union { + double real; + uint64_t base; + } u_max; + u_max.real = this->max; + *(outbuffer + offset + 0) = (u_max.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_max.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_max.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_max.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_max.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_max.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_max.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_max.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->max); + union { + double real; + uint64_t base; + } u_mean; + u_mean.real = this->mean; + *(outbuffer + offset + 0) = (u_mean.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_mean.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_mean.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_mean.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_mean.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_mean.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_mean.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_mean.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->mean); + union { + double real; + uint64_t base; + } u_variance; + u_variance.real = this->variance; + *(outbuffer + offset + 0) = (u_variance.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_variance.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_variance.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_variance.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_variance.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_variance.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_variance.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_variance.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->variance); + union { + int64_t real; + uint64_t base; + } u_N; + u_N.real = this->N; + *(outbuffer + offset + 0) = (u_N.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_N.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_N.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_N.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_N.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_N.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_N.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_N.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->N); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_min; + u_min.base = 0; + u_min.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_min.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_min.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_min.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_min.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_min.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_min.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_min.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->min = u_min.real; + offset += sizeof(this->min); + union { + double real; + uint64_t base; + } u_max; + u_max.base = 0; + u_max.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_max.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_max.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_max.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_max.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_max.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_max.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_max.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->max = u_max.real; + offset += sizeof(this->max); + union { + double real; + uint64_t base; + } u_mean; + u_mean.base = 0; + u_mean.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_mean.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_mean.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_mean.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_mean.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_mean.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_mean.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_mean.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->mean = u_mean.real; + offset += sizeof(this->mean); + union { + double real; + uint64_t base; + } u_variance; + u_variance.base = 0; + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_variance.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->variance = u_variance.real; + offset += sizeof(this->variance); + union { + int64_t real; + uint64_t base; + } u_N; + u_N.base = 0; + u_N.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_N.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_N.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_N.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_N.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_N.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_N.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_N.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->N = u_N.real; + offset += sizeof(this->N); + return offset; + } + + const char * getType(){ return "statistics_msgs/Stats1D"; }; + const char * getMD5(){ return "5e29efbcd70d63a82b5ddfac24a5bc4b"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/std_msgs/Bool.h b/source/ros-max-lib/ros_lib/std_msgs/Bool.h new file mode 100644 index 0000000..6641dd0 --- /dev/null +++ b/source/ros-max-lib/ros_lib/std_msgs/Bool.h @@ -0,0 +1,56 @@ +#ifndef _ROS_std_msgs_Bool_h +#define _ROS_std_msgs_Bool_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class Bool : public ros::Msg + { + public: + typedef bool _data_type; + _data_type data; + + Bool(): + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_data; + u_data.real = this->data; + *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_data; + u_data.base = 0; + u_data.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->data = u_data.real; + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return "std_msgs/Bool"; }; + const char * getMD5(){ return "8b94c1b53db61fb6aed406028ad6332a"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/std_msgs/Byte.h b/source/ros-max-lib/ros_lib/std_msgs/Byte.h new file mode 100644 index 0000000..bf81f6f --- /dev/null +++ b/source/ros-max-lib/ros_lib/std_msgs/Byte.h @@ -0,0 +1,56 @@ +#ifndef _ROS_std_msgs_Byte_h +#define _ROS_std_msgs_Byte_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class Byte : public ros::Msg + { + public: + typedef int8_t _data_type; + _data_type data; + + Byte(): + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int8_t real; + uint8_t base; + } u_data; + u_data.real = this->data; + *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int8_t real; + uint8_t base; + } u_data; + u_data.base = 0; + u_data.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->data = u_data.real; + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return "std_msgs/Byte"; }; + const char * getMD5(){ return "ad736a2e8818154c487bb80fe42ce43b"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/std_msgs/ByteMultiArray.h b/source/ros-max-lib/ros_lib/std_msgs/ByteMultiArray.h new file mode 100644 index 0000000..bf3f8b4 --- /dev/null +++ b/source/ros-max-lib/ros_lib/std_msgs/ByteMultiArray.h @@ -0,0 +1,82 @@ +#ifndef _ROS_std_msgs_ByteMultiArray_h +#define _ROS_std_msgs_ByteMultiArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/MultiArrayLayout.h" + +namespace std_msgs +{ + + class ByteMultiArray : public ros::Msg + { + public: + typedef std_msgs::MultiArrayLayout _layout_type; + _layout_type layout; + uint32_t data_length; + typedef int8_t _data_type; + _data_type st_data; + _data_type * data; + + ByteMultiArray(): + layout(), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->layout.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + union { + int8_t real; + uint8_t base; + } u_datai; + u_datai.real = this->data[i]; + *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->layout.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (int8_t*)realloc(this->data, data_lengthT * sizeof(int8_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + union { + int8_t real; + uint8_t base; + } u_st_data; + u_st_data.base = 0; + u_st_data.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->st_data = u_st_data.real; + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(int8_t)); + } + return offset; + } + + const char * getType(){ return "std_msgs/ByteMultiArray"; }; + const char * getMD5(){ return "70ea476cbcfd65ac2f68f3cda1e891fe"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/std_msgs/Char.h b/source/ros-max-lib/ros_lib/std_msgs/Char.h new file mode 100644 index 0000000..ab3340f --- /dev/null +++ b/source/ros-max-lib/ros_lib/std_msgs/Char.h @@ -0,0 +1,45 @@ +#ifndef _ROS_std_msgs_Char_h +#define _ROS_std_msgs_Char_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class Char : public ros::Msg + { + public: + typedef uint8_t _data_type; + _data_type data; + + Char(): + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->data >> (8 * 0)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->data = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return "std_msgs/Char"; }; + const char * getMD5(){ return "1bf77f25acecdedba0e224b162199717"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/std_msgs/ColorRGBA.h b/source/ros-max-lib/ros_lib/std_msgs/ColorRGBA.h new file mode 100644 index 0000000..e782d2f --- /dev/null +++ b/source/ros-max-lib/ros_lib/std_msgs/ColorRGBA.h @@ -0,0 +1,134 @@ +#ifndef _ROS_std_msgs_ColorRGBA_h +#define _ROS_std_msgs_ColorRGBA_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class ColorRGBA : public ros::Msg + { + public: + typedef float _r_type; + _r_type r; + typedef float _g_type; + _g_type g; + typedef float _b_type; + _b_type b; + typedef float _a_type; + _a_type a; + + ColorRGBA(): + r(0), + g(0), + b(0), + a(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + float real; + uint32_t base; + } u_r; + u_r.real = this->r; + *(outbuffer + offset + 0) = (u_r.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_r.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_r.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_r.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->r); + union { + float real; + uint32_t base; + } u_g; + u_g.real = this->g; + *(outbuffer + offset + 0) = (u_g.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_g.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_g.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_g.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->g); + union { + float real; + uint32_t base; + } u_b; + u_b.real = this->b; + *(outbuffer + offset + 0) = (u_b.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_b.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_b.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_b.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->b); + union { + float real; + uint32_t base; + } u_a; + u_a.real = this->a; + *(outbuffer + offset + 0) = (u_a.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_a.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_a.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_a.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->a); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + float real; + uint32_t base; + } u_r; + u_r.base = 0; + u_r.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_r.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_r.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_r.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->r = u_r.real; + offset += sizeof(this->r); + union { + float real; + uint32_t base; + } u_g; + u_g.base = 0; + u_g.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_g.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_g.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_g.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->g = u_g.real; + offset += sizeof(this->g); + union { + float real; + uint32_t base; + } u_b; + u_b.base = 0; + u_b.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_b.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_b.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_b.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->b = u_b.real; + offset += sizeof(this->b); + union { + float real; + uint32_t base; + } u_a; + u_a.base = 0; + u_a.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_a.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_a.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_a.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->a = u_a.real; + offset += sizeof(this->a); + return offset; + } + + const char * getType(){ return "std_msgs/ColorRGBA"; }; + const char * getMD5(){ return "a29a96539573343b1310c73607334b00"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/std_msgs/Duration.h b/source/ros-max-lib/ros_lib/std_msgs/Duration.h new file mode 100644 index 0000000..9373f35 --- /dev/null +++ b/source/ros-max-lib/ros_lib/std_msgs/Duration.h @@ -0,0 +1,62 @@ +#ifndef _ROS_std_msgs_Duration_h +#define _ROS_std_msgs_Duration_h + +#include +#include +#include +#include "ros/msg.h" +#include "ros/duration.h" + +namespace std_msgs +{ + + class Duration : public ros::Msg + { + public: + typedef ros::Duration _data_type; + _data_type data; + + Duration(): + data() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->data.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->data.sec); + *(outbuffer + offset + 0) = (this->data.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->data.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->data.sec = ((uint32_t) (*(inbuffer + offset))); + this->data.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->data.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->data.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data.sec); + this->data.nsec = ((uint32_t) (*(inbuffer + offset))); + this->data.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->data.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->data.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data.nsec); + return offset; + } + + const char * getType(){ return "std_msgs/Duration"; }; + const char * getMD5(){ return "3e286caf4241d664e55f3ad380e2ae46"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/std_msgs/Empty.h b/source/ros-max-lib/ros_lib/std_msgs/Empty.h new file mode 100644 index 0000000..440e5ed --- /dev/null +++ b/source/ros-max-lib/ros_lib/std_msgs/Empty.h @@ -0,0 +1,38 @@ +#ifndef _ROS_std_msgs_Empty_h +#define _ROS_std_msgs_Empty_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class Empty : public ros::Msg + { + public: + + Empty() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "std_msgs/Empty"; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/std_msgs/Float32.h b/source/ros-max-lib/ros_lib/std_msgs/Float32.h new file mode 100644 index 0000000..07fc435 --- /dev/null +++ b/source/ros-max-lib/ros_lib/std_msgs/Float32.h @@ -0,0 +1,62 @@ +#ifndef _ROS_std_msgs_Float32_h +#define _ROS_std_msgs_Float32_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class Float32 : public ros::Msg + { + public: + typedef float _data_type; + _data_type data; + + Float32(): + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + float real; + uint32_t base; + } u_data; + u_data.real = this->data; + *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_data.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_data.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_data.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + float real; + uint32_t base; + } u_data; + u_data.base = 0; + u_data.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->data = u_data.real; + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return "std_msgs/Float32"; }; + const char * getMD5(){ return "73fcbf46b49191e672908e50842a83d4"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/std_msgs/Float32MultiArray.h b/source/ros-max-lib/ros_lib/std_msgs/Float32MultiArray.h new file mode 100644 index 0000000..08800d0 --- /dev/null +++ b/source/ros-max-lib/ros_lib/std_msgs/Float32MultiArray.h @@ -0,0 +1,88 @@ +#ifndef _ROS_std_msgs_Float32MultiArray_h +#define _ROS_std_msgs_Float32MultiArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/MultiArrayLayout.h" + +namespace std_msgs +{ + + class Float32MultiArray : public ros::Msg + { + public: + typedef std_msgs::MultiArrayLayout _layout_type; + _layout_type layout; + uint32_t data_length; + typedef float _data_type; + _data_type st_data; + _data_type * data; + + Float32MultiArray(): + layout(), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->layout.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + union { + float real; + uint32_t base; + } u_datai; + u_datai.real = this->data[i]; + *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_datai.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_datai.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_datai.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->layout.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (float*)realloc(this->data, data_lengthT * sizeof(float)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + union { + float real; + uint32_t base; + } u_st_data; + u_st_data.base = 0; + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_data = u_st_data.real; + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(float)); + } + return offset; + } + + const char * getType(){ return "std_msgs/Float32MultiArray"; }; + const char * getMD5(){ return "6a40e0ffa6a17a503ac3f8616991b1f6"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/std_msgs/Float64.h b/source/ros-max-lib/ros_lib/std_msgs/Float64.h new file mode 100644 index 0000000..b566cb6 --- /dev/null +++ b/source/ros-max-lib/ros_lib/std_msgs/Float64.h @@ -0,0 +1,70 @@ +#ifndef _ROS_std_msgs_Float64_h +#define _ROS_std_msgs_Float64_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class Float64 : public ros::Msg + { + public: + typedef double _data_type; + _data_type data; + + Float64(): + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + double real; + uint64_t base; + } u_data; + u_data.real = this->data; + *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_data.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_data.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_data.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_data.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_data.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_data.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_data.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + double real; + uint64_t base; + } u_data; + u_data.base = 0; + u_data.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_data.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_data.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_data.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_data.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_data.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_data.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_data.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->data = u_data.real; + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return "std_msgs/Float64"; }; + const char * getMD5(){ return "fdb28210bfa9d7c91146260178d9a584"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/std_msgs/Float64MultiArray.h b/source/ros-max-lib/ros_lib/std_msgs/Float64MultiArray.h new file mode 100644 index 0000000..219abe6 --- /dev/null +++ b/source/ros-max-lib/ros_lib/std_msgs/Float64MultiArray.h @@ -0,0 +1,96 @@ +#ifndef _ROS_std_msgs_Float64MultiArray_h +#define _ROS_std_msgs_Float64MultiArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/MultiArrayLayout.h" + +namespace std_msgs +{ + + class Float64MultiArray : public ros::Msg + { + public: + typedef std_msgs::MultiArrayLayout _layout_type; + _layout_type layout; + uint32_t data_length; + typedef double _data_type; + _data_type st_data; + _data_type * data; + + Float64MultiArray(): + layout(), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->layout.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + union { + double real; + uint64_t base; + } u_datai; + u_datai.real = this->data[i]; + *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_datai.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_datai.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_datai.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_datai.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_datai.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_datai.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_datai.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->layout.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (double*)realloc(this->data, data_lengthT * sizeof(double)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + union { + double real; + uint64_t base; + } u_st_data; + u_st_data.base = 0; + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_data = u_st_data.real; + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(double)); + } + return offset; + } + + const char * getType(){ return "std_msgs/Float64MultiArray"; }; + const char * getMD5(){ return "4b7d974086d4060e7db4613a7e6c3ba4"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/std_msgs/Header.h b/source/ros-max-lib/ros_lib/std_msgs/Header.h new file mode 100644 index 0000000..658bd84 --- /dev/null +++ b/source/ros-max-lib/ros_lib/std_msgs/Header.h @@ -0,0 +1,92 @@ +#ifndef _ROS_std_msgs_Header_h +#define _ROS_std_msgs_Header_h + +#include +#include +#include +#include "../ros/msg.h" +#include "../ros/time.h" + +namespace std_msgs +{ + + class Header : public ros::Msg + { + public: + typedef uint32_t _seq_type; + _seq_type seq; + typedef ros::Time _stamp_type; + _stamp_type stamp; + typedef const char* _frame_id_type; + _frame_id_type frame_id; + + Header(): + seq(0), + stamp(), + frame_id("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->seq >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->seq >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->seq >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->seq >> (8 * 3)) & 0xFF; + offset += sizeof(this->seq); + *(outbuffer + offset + 0) = (this->stamp.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp.sec); + *(outbuffer + offset + 0) = (this->stamp.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp.nsec); + uint32_t length_frame_id = strlen(this->frame_id); + varToArr(outbuffer + offset, length_frame_id); + offset += 4; + memcpy(outbuffer + offset, this->frame_id, length_frame_id); + offset += length_frame_id; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->seq = ((uint32_t) (*(inbuffer + offset))); + this->seq |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->seq |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->seq |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->seq); + this->stamp.sec = ((uint32_t) (*(inbuffer + offset))); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp.sec); + this->stamp.nsec = ((uint32_t) (*(inbuffer + offset))); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp.nsec); + uint32_t length_frame_id; + arrToVar(length_frame_id, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_frame_id; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_frame_id-1]=0; + this->frame_id = (char *)(inbuffer + offset-1); + offset += length_frame_id; + return offset; + } + + const char * getType(){ return "std_msgs/Header"; }; + const char * getMD5(){ return "2176decaecbce78abc3b96ef049fabed"; }; + + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/std_msgs/Int16.h b/source/ros-max-lib/ros_lib/std_msgs/Int16.h new file mode 100644 index 0000000..8699431 --- /dev/null +++ b/source/ros-max-lib/ros_lib/std_msgs/Int16.h @@ -0,0 +1,58 @@ +#ifndef _ROS_std_msgs_Int16_h +#define _ROS_std_msgs_Int16_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class Int16 : public ros::Msg + { + public: + typedef int16_t _data_type; + _data_type data; + + Int16(): + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int16_t real; + uint16_t base; + } u_data; + u_data.real = this->data; + *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_data.base >> (8 * 1)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int16_t real; + uint16_t base; + } u_data; + u_data.base = 0; + u_data.base |= ((uint16_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_data.base |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->data = u_data.real; + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return "std_msgs/Int16"; }; + const char * getMD5(){ return "8524586e34fbd7cb1c08c5f5f1ca0e57"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/std_msgs/Int16MultiArray.h b/source/ros-max-lib/ros_lib/std_msgs/Int16MultiArray.h new file mode 100644 index 0000000..09a685a --- /dev/null +++ b/source/ros-max-lib/ros_lib/std_msgs/Int16MultiArray.h @@ -0,0 +1,84 @@ +#ifndef _ROS_std_msgs_Int16MultiArray_h +#define _ROS_std_msgs_Int16MultiArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/MultiArrayLayout.h" + +namespace std_msgs +{ + + class Int16MultiArray : public ros::Msg + { + public: + typedef std_msgs::MultiArrayLayout _layout_type; + _layout_type layout; + uint32_t data_length; + typedef int16_t _data_type; + _data_type st_data; + _data_type * data; + + Int16MultiArray(): + layout(), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->layout.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + union { + int16_t real; + uint16_t base; + } u_datai; + u_datai.real = this->data[i]; + *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_datai.base >> (8 * 1)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->layout.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (int16_t*)realloc(this->data, data_lengthT * sizeof(int16_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + union { + int16_t real; + uint16_t base; + } u_st_data; + u_st_data.base = 0; + u_st_data.base |= ((uint16_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_data.base |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->st_data = u_st_data.real; + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(int16_t)); + } + return offset; + } + + const char * getType(){ return "std_msgs/Int16MultiArray"; }; + const char * getMD5(){ return "d9338d7f523fcb692fae9d0a0e9f067c"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/std_msgs/Int32.h b/source/ros-max-lib/ros_lib/std_msgs/Int32.h new file mode 100644 index 0000000..1f33bbd --- /dev/null +++ b/source/ros-max-lib/ros_lib/std_msgs/Int32.h @@ -0,0 +1,62 @@ +#ifndef _ROS_std_msgs_Int32_h +#define _ROS_std_msgs_Int32_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class Int32 : public ros::Msg + { + public: + typedef int32_t _data_type; + _data_type data; + + Int32(): + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_data; + u_data.real = this->data; + *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_data.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_data.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_data.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_data; + u_data.base = 0; + u_data.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->data = u_data.real; + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return "std_msgs/Int32"; }; + const char * getMD5(){ return "da5909fbe378aeaf85e547e830cc1bb7"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/std_msgs/Int32MultiArray.h b/source/ros-max-lib/ros_lib/std_msgs/Int32MultiArray.h new file mode 100644 index 0000000..9dc349d --- /dev/null +++ b/source/ros-max-lib/ros_lib/std_msgs/Int32MultiArray.h @@ -0,0 +1,88 @@ +#ifndef _ROS_std_msgs_Int32MultiArray_h +#define _ROS_std_msgs_Int32MultiArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/MultiArrayLayout.h" + +namespace std_msgs +{ + + class Int32MultiArray : public ros::Msg + { + public: + typedef std_msgs::MultiArrayLayout _layout_type; + _layout_type layout; + uint32_t data_length; + typedef int32_t _data_type; + _data_type st_data; + _data_type * data; + + Int32MultiArray(): + layout(), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->layout.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + union { + int32_t real; + uint32_t base; + } u_datai; + u_datai.real = this->data[i]; + *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_datai.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_datai.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_datai.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->layout.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (int32_t*)realloc(this->data, data_lengthT * sizeof(int32_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + union { + int32_t real; + uint32_t base; + } u_st_data; + u_st_data.base = 0; + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_data = u_st_data.real; + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(int32_t)); + } + return offset; + } + + const char * getType(){ return "std_msgs/Int32MultiArray"; }; + const char * getMD5(){ return "1d99f79f8b325b44fee908053e9c945b"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/std_msgs/Int64.h b/source/ros-max-lib/ros_lib/std_msgs/Int64.h new file mode 100644 index 0000000..9edec3b --- /dev/null +++ b/source/ros-max-lib/ros_lib/std_msgs/Int64.h @@ -0,0 +1,70 @@ +#ifndef _ROS_std_msgs_Int64_h +#define _ROS_std_msgs_Int64_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class Int64 : public ros::Msg + { + public: + typedef int64_t _data_type; + _data_type data; + + Int64(): + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_data; + u_data.real = this->data; + *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_data.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_data.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_data.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_data.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_data.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_data.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_data.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int64_t real; + uint64_t base; + } u_data; + u_data.base = 0; + u_data.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_data.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_data.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_data.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_data.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_data.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_data.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_data.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->data = u_data.real; + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return "std_msgs/Int64"; }; + const char * getMD5(){ return "34add168574510e6e17f5d23ecc077ef"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/std_msgs/Int64MultiArray.h b/source/ros-max-lib/ros_lib/std_msgs/Int64MultiArray.h new file mode 100644 index 0000000..7815756 --- /dev/null +++ b/source/ros-max-lib/ros_lib/std_msgs/Int64MultiArray.h @@ -0,0 +1,96 @@ +#ifndef _ROS_std_msgs_Int64MultiArray_h +#define _ROS_std_msgs_Int64MultiArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/MultiArrayLayout.h" + +namespace std_msgs +{ + + class Int64MultiArray : public ros::Msg + { + public: + typedef std_msgs::MultiArrayLayout _layout_type; + _layout_type layout; + uint32_t data_length; + typedef int64_t _data_type; + _data_type st_data; + _data_type * data; + + Int64MultiArray(): + layout(), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->layout.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + union { + int64_t real; + uint64_t base; + } u_datai; + u_datai.real = this->data[i]; + *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_datai.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_datai.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_datai.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_datai.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_datai.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_datai.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_datai.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->layout.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (int64_t*)realloc(this->data, data_lengthT * sizeof(int64_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + union { + int64_t real; + uint64_t base; + } u_st_data; + u_st_data.base = 0; + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_data = u_st_data.real; + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(int64_t)); + } + return offset; + } + + const char * getType(){ return "std_msgs/Int64MultiArray"; }; + const char * getMD5(){ return "54865aa6c65be0448113a2afc6a49270"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/std_msgs/Int8.h b/source/ros-max-lib/ros_lib/std_msgs/Int8.h new file mode 100644 index 0000000..9509136 --- /dev/null +++ b/source/ros-max-lib/ros_lib/std_msgs/Int8.h @@ -0,0 +1,56 @@ +#ifndef _ROS_std_msgs_Int8_h +#define _ROS_std_msgs_Int8_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class Int8 : public ros::Msg + { + public: + typedef int8_t _data_type; + _data_type data; + + Int8(): + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int8_t real; + uint8_t base; + } u_data; + u_data.real = this->data; + *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int8_t real; + uint8_t base; + } u_data; + u_data.base = 0; + u_data.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->data = u_data.real; + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return "std_msgs/Int8"; }; + const char * getMD5(){ return "27ffa0c9c4b8fb8492252bcad9e5c57b"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/std_msgs/Int8MultiArray.h b/source/ros-max-lib/ros_lib/std_msgs/Int8MultiArray.h new file mode 100644 index 0000000..38921a9 --- /dev/null +++ b/source/ros-max-lib/ros_lib/std_msgs/Int8MultiArray.h @@ -0,0 +1,82 @@ +#ifndef _ROS_std_msgs_Int8MultiArray_h +#define _ROS_std_msgs_Int8MultiArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/MultiArrayLayout.h" + +namespace std_msgs +{ + + class Int8MultiArray : public ros::Msg + { + public: + typedef std_msgs::MultiArrayLayout _layout_type; + _layout_type layout; + uint32_t data_length; + typedef int8_t _data_type; + _data_type st_data; + _data_type * data; + + Int8MultiArray(): + layout(), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->layout.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + union { + int8_t real; + uint8_t base; + } u_datai; + u_datai.real = this->data[i]; + *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->layout.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (int8_t*)realloc(this->data, data_lengthT * sizeof(int8_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + union { + int8_t real; + uint8_t base; + } u_st_data; + u_st_data.base = 0; + u_st_data.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->st_data = u_st_data.real; + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(int8_t)); + } + return offset; + } + + const char * getType(){ return "std_msgs/Int8MultiArray"; }; + const char * getMD5(){ return "d7c1af35a1b4781bbe79e03dd94b7c13"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/std_msgs/MultiArrayDimension.h b/source/ros-max-lib/ros_lib/std_msgs/MultiArrayDimension.h new file mode 100644 index 0000000..72cb416 --- /dev/null +++ b/source/ros-max-lib/ros_lib/std_msgs/MultiArrayDimension.h @@ -0,0 +1,81 @@ +#ifndef _ROS_std_msgs_MultiArrayDimension_h +#define _ROS_std_msgs_MultiArrayDimension_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class MultiArrayDimension : public ros::Msg + { + public: + typedef const char* _label_type; + _label_type label; + typedef uint32_t _size_type; + _size_type size; + typedef uint32_t _stride_type; + _stride_type stride; + + MultiArrayDimension(): + label(""), + size(0), + stride(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_label = strlen(this->label); + varToArr(outbuffer + offset, length_label); + offset += 4; + memcpy(outbuffer + offset, this->label, length_label); + offset += length_label; + *(outbuffer + offset + 0) = (this->size >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->size >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->size >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->size >> (8 * 3)) & 0xFF; + offset += sizeof(this->size); + *(outbuffer + offset + 0) = (this->stride >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stride >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stride >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stride >> (8 * 3)) & 0xFF; + offset += sizeof(this->stride); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_label; + arrToVar(length_label, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_label; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_label-1]=0; + this->label = (char *)(inbuffer + offset-1); + offset += length_label; + this->size = ((uint32_t) (*(inbuffer + offset))); + this->size |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->size |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->size |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->size); + this->stride = ((uint32_t) (*(inbuffer + offset))); + this->stride |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stride |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stride |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stride); + return offset; + } + + const char * getType(){ return "std_msgs/MultiArrayDimension"; }; + const char * getMD5(){ return "4cd0c83a8683deae40ecdac60e53bfa8"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/std_msgs/MultiArrayLayout.h b/source/ros-max-lib/ros_lib/std_msgs/MultiArrayLayout.h new file mode 100644 index 0000000..3cf3cfb --- /dev/null +++ b/source/ros-max-lib/ros_lib/std_msgs/MultiArrayLayout.h @@ -0,0 +1,77 @@ +#ifndef _ROS_std_msgs_MultiArrayLayout_h +#define _ROS_std_msgs_MultiArrayLayout_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/MultiArrayDimension.h" + +namespace std_msgs +{ + + class MultiArrayLayout : public ros::Msg + { + public: + uint32_t dim_length; + typedef std_msgs::MultiArrayDimension _dim_type; + _dim_type st_dim; + _dim_type * dim; + typedef uint32_t _data_offset_type; + _data_offset_type data_offset; + + MultiArrayLayout(): + dim_length(0), dim(NULL), + data_offset(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->dim_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->dim_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->dim_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->dim_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->dim_length); + for( uint32_t i = 0; i < dim_length; i++){ + offset += this->dim[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->data_offset >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_offset >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_offset >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_offset >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t dim_lengthT = ((uint32_t) (*(inbuffer + offset))); + dim_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + dim_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + dim_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->dim_length); + if(dim_lengthT > dim_length) + this->dim = (std_msgs::MultiArrayDimension*)realloc(this->dim, dim_lengthT * sizeof(std_msgs::MultiArrayDimension)); + dim_length = dim_lengthT; + for( uint32_t i = 0; i < dim_length; i++){ + offset += this->st_dim.deserialize(inbuffer + offset); + memcpy( &(this->dim[i]), &(this->st_dim), sizeof(std_msgs::MultiArrayDimension)); + } + this->data_offset = ((uint32_t) (*(inbuffer + offset))); + this->data_offset |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->data_offset |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->data_offset |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_offset); + return offset; + } + + const char * getType(){ return "std_msgs/MultiArrayLayout"; }; + const char * getMD5(){ return "0fed2a11c13e11c5571b4e2a995a91a3"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/std_msgs/String.h b/source/ros-max-lib/ros_lib/std_msgs/String.h new file mode 100644 index 0000000..de0bfa0 --- /dev/null +++ b/source/ros-max-lib/ros_lib/std_msgs/String.h @@ -0,0 +1,55 @@ +#ifndef _ROS_std_msgs_String_h +#define _ROS_std_msgs_String_h + +#include +#include +#include +#include "../ros/msg.h" + +namespace std_msgs +{ + + class String : public ros::Msg + { + public: + typedef const char* _data_type; + _data_type data; + + String(): + data("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_data = strlen(this->data); + varToArr(outbuffer + offset, length_data); + offset += 4; + memcpy(outbuffer + offset, this->data, length_data); + offset += length_data; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_data; + arrToVar(length_data, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_data; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_data-1]=0; + this->data = (char *)(inbuffer + offset-1); + offset += length_data; + return offset; + } + + const char * getType(){ return "std_msgs/String"; }; + const char * getMD5(){ return "992ce8a1687cec8c8bd883ec73ca41d1"; }; + + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/std_msgs/Time.h b/source/ros-max-lib/ros_lib/std_msgs/Time.h new file mode 100644 index 0000000..2a6dd26 --- /dev/null +++ b/source/ros-max-lib/ros_lib/std_msgs/Time.h @@ -0,0 +1,62 @@ +#ifndef _ROS_std_msgs_Time_h +#define _ROS_std_msgs_Time_h + +#include +#include +#include +#include "../ros/msg.h" +#include "../ros/time.h" + +namespace std_msgs +{ + + class Time : public ros::Msg + { + public: + typedef ros::Time _data_type; + _data_type data; + + Time(): + data() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->data.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->data.sec); + *(outbuffer + offset + 0) = (this->data.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->data.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->data.sec = ((uint32_t) (*(inbuffer + offset))); + this->data.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->data.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->data.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data.sec); + this->data.nsec = ((uint32_t) (*(inbuffer + offset))); + this->data.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->data.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->data.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data.nsec); + return offset; + } + + const char * getType(){ return "std_msgs/Time"; }; + const char * getMD5(){ return "cd7166c74c552c311fbcc2fe5a7bc289"; }; + + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/std_msgs/UInt16.h b/source/ros-max-lib/ros_lib/std_msgs/UInt16.h new file mode 100644 index 0000000..4da6884 --- /dev/null +++ b/source/ros-max-lib/ros_lib/std_msgs/UInt16.h @@ -0,0 +1,47 @@ +#ifndef _ROS_std_msgs_UInt16_h +#define _ROS_std_msgs_UInt16_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class UInt16 : public ros::Msg + { + public: + typedef uint16_t _data_type; + _data_type data; + + UInt16(): + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->data >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data >> (8 * 1)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->data = ((uint16_t) (*(inbuffer + offset))); + this->data |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return "std_msgs/UInt16"; }; + const char * getMD5(){ return "1df79edf208b629fe6b81923a544552d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/std_msgs/UInt16MultiArray.h b/source/ros-max-lib/ros_lib/std_msgs/UInt16MultiArray.h new file mode 100644 index 0000000..26c0e8f --- /dev/null +++ b/source/ros-max-lib/ros_lib/std_msgs/UInt16MultiArray.h @@ -0,0 +1,73 @@ +#ifndef _ROS_std_msgs_UInt16MultiArray_h +#define _ROS_std_msgs_UInt16MultiArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/MultiArrayLayout.h" + +namespace std_msgs +{ + + class UInt16MultiArray : public ros::Msg + { + public: + typedef std_msgs::MultiArrayLayout _layout_type; + _layout_type layout; + uint32_t data_length; + typedef uint16_t _data_type; + _data_type st_data; + _data_type * data; + + UInt16MultiArray(): + layout(), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->layout.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data[i] >> (8 * 1)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->layout.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (uint16_t*)realloc(this->data, data_lengthT * sizeof(uint16_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + this->st_data = ((uint16_t) (*(inbuffer + offset))); + this->st_data |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(uint16_t)); + } + return offset; + } + + const char * getType(){ return "std_msgs/UInt16MultiArray"; }; + const char * getMD5(){ return "52f264f1c973c4b73790d384c6cb4484"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/std_msgs/UInt32.h b/source/ros-max-lib/ros_lib/std_msgs/UInt32.h new file mode 100644 index 0000000..30ae02b --- /dev/null +++ b/source/ros-max-lib/ros_lib/std_msgs/UInt32.h @@ -0,0 +1,51 @@ +#ifndef _ROS_std_msgs_UInt32_h +#define _ROS_std_msgs_UInt32_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class UInt32 : public ros::Msg + { + public: + typedef uint32_t _data_type; + _data_type data; + + UInt32(): + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->data >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data >> (8 * 3)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->data = ((uint32_t) (*(inbuffer + offset))); + this->data |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->data |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->data |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return "std_msgs/UInt32"; }; + const char * getMD5(){ return "304a39449588c7f8ce2df6e8001c5fce"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/std_msgs/UInt32MultiArray.h b/source/ros-max-lib/ros_lib/std_msgs/UInt32MultiArray.h new file mode 100644 index 0000000..af46e79 --- /dev/null +++ b/source/ros-max-lib/ros_lib/std_msgs/UInt32MultiArray.h @@ -0,0 +1,77 @@ +#ifndef _ROS_std_msgs_UInt32MultiArray_h +#define _ROS_std_msgs_UInt32MultiArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/MultiArrayLayout.h" + +namespace std_msgs +{ + + class UInt32MultiArray : public ros::Msg + { + public: + typedef std_msgs::MultiArrayLayout _layout_type; + _layout_type layout; + uint32_t data_length; + typedef uint32_t _data_type; + _data_type st_data; + _data_type * data; + + UInt32MultiArray(): + layout(), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->layout.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data[i] >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data[i] >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data[i] >> (8 * 3)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->layout.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (uint32_t*)realloc(this->data, data_lengthT * sizeof(uint32_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + this->st_data = ((uint32_t) (*(inbuffer + offset))); + this->st_data |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->st_data |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->st_data |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(uint32_t)); + } + return offset; + } + + const char * getType(){ return "std_msgs/UInt32MultiArray"; }; + const char * getMD5(){ return "4d6a180abc9be191b96a7eda6c8a233d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/std_msgs/UInt64.h b/source/ros-max-lib/ros_lib/std_msgs/UInt64.h new file mode 100644 index 0000000..b7ab02d --- /dev/null +++ b/source/ros-max-lib/ros_lib/std_msgs/UInt64.h @@ -0,0 +1,62 @@ +#ifndef _ROS_std_msgs_UInt64_h +#define _ROS_std_msgs_UInt64_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class UInt64 : public ros::Msg + { + public: + typedef uint64_t _data_type; + _data_type data; + + UInt64(): + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + uint64_t real; + uint32_t base; + } u_data; + u_data.real = this->data; + *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_data.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_data.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_data.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + uint64_t real; + uint32_t base; + } u_data; + u_data.base = 0; + u_data.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_data.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->data = u_data.real; + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return "std_msgs/UInt64"; }; + const char * getMD5(){ return "1b2a79973e8bf53d7b53acb71299cb57"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/std_msgs/UInt64MultiArray.h b/source/ros-max-lib/ros_lib/std_msgs/UInt64MultiArray.h new file mode 100644 index 0000000..4401271 --- /dev/null +++ b/source/ros-max-lib/ros_lib/std_msgs/UInt64MultiArray.h @@ -0,0 +1,88 @@ +#ifndef _ROS_std_msgs_UInt64MultiArray_h +#define _ROS_std_msgs_UInt64MultiArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/MultiArrayLayout.h" + +namespace std_msgs +{ + + class UInt64MultiArray : public ros::Msg + { + public: + typedef std_msgs::MultiArrayLayout _layout_type; + _layout_type layout; + uint32_t data_length; + typedef uint64_t _data_type; + _data_type st_data; + _data_type * data; + + UInt64MultiArray(): + layout(), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->layout.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + union { + uint64_t real; + uint32_t base; + } u_datai; + u_datai.real = this->data[i]; + *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_datai.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_datai.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_datai.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->layout.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (uint64_t*)realloc(this->data, data_lengthT * sizeof(uint64_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + union { + uint64_t real; + uint32_t base; + } u_st_data; + u_st_data.base = 0; + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_data = u_st_data.real; + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(uint64_t)); + } + return offset; + } + + const char * getType(){ return "std_msgs/UInt64MultiArray"; }; + const char * getMD5(){ return "6088f127afb1d6c72927aa1247e945af"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/std_msgs/UInt8.h b/source/ros-max-lib/ros_lib/std_msgs/UInt8.h new file mode 100644 index 0000000..e41b04b --- /dev/null +++ b/source/ros-max-lib/ros_lib/std_msgs/UInt8.h @@ -0,0 +1,45 @@ +#ifndef _ROS_std_msgs_UInt8_h +#define _ROS_std_msgs_UInt8_h + +#include +#include +#include +#include "ros/msg.h" + +namespace std_msgs +{ + + class UInt8 : public ros::Msg + { + public: + typedef uint8_t _data_type; + _data_type data; + + UInt8(): + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->data >> (8 * 0)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->data = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return "std_msgs/UInt8"; }; + const char * getMD5(){ return "7c8164229e7d2c17eb95e9231617fdee"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/std_msgs/UInt8MultiArray.h b/source/ros-max-lib/ros_lib/std_msgs/UInt8MultiArray.h new file mode 100644 index 0000000..9ca2ac2 --- /dev/null +++ b/source/ros-max-lib/ros_lib/std_msgs/UInt8MultiArray.h @@ -0,0 +1,71 @@ +#ifndef _ROS_std_msgs_UInt8MultiArray_h +#define _ROS_std_msgs_UInt8MultiArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/MultiArrayLayout.h" + +namespace std_msgs +{ + + class UInt8MultiArray : public ros::Msg + { + public: + typedef std_msgs::MultiArrayLayout _layout_type; + _layout_type layout; + uint32_t data_length; + typedef uint8_t _data_type; + _data_type st_data; + _data_type * data; + + UInt8MultiArray(): + layout(), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->layout.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->layout.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (uint8_t*)realloc(this->data, data_lengthT * sizeof(uint8_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + this->st_data = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(uint8_t)); + } + return offset; + } + + const char * getType(){ return "std_msgs/UInt8MultiArray"; }; + const char * getMD5(){ return "82373f1612381bb6ee473b5cd6f5d89c"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/std_srvs/Empty.h b/source/ros-max-lib/ros_lib/std_srvs/Empty.h new file mode 100644 index 0000000..b040dd2 --- /dev/null +++ b/source/ros-max-lib/ros_lib/std_srvs/Empty.h @@ -0,0 +1,70 @@ +#ifndef _ROS_SERVICE_Empty_h +#define _ROS_SERVICE_Empty_h +#include +#include +#include +#include "ros/msg.h" + +namespace std_srvs +{ + +static const char EMPTY[] = "std_srvs/Empty"; + + class EmptyRequest : public ros::Msg + { + public: + + EmptyRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return EMPTY; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class EmptyResponse : public ros::Msg + { + public: + + EmptyResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return EMPTY; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class Empty { + public: + typedef EmptyRequest Request; + typedef EmptyResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/std_srvs/SetBool.h b/source/ros-max-lib/ros_lib/std_srvs/SetBool.h new file mode 100644 index 0000000..1feb34e --- /dev/null +++ b/source/ros-max-lib/ros_lib/std_srvs/SetBool.h @@ -0,0 +1,123 @@ +#ifndef _ROS_SERVICE_SetBool_h +#define _ROS_SERVICE_SetBool_h +#include +#include +#include +#include "ros/msg.h" + +namespace std_srvs +{ + +static const char SETBOOL[] = "std_srvs/SetBool"; + + class SetBoolRequest : public ros::Msg + { + public: + typedef bool _data_type; + _data_type data; + + SetBoolRequest(): + data(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_data; + u_data.real = this->data; + *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->data); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_data; + u_data.base = 0; + u_data.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->data = u_data.real; + offset += sizeof(this->data); + return offset; + } + + const char * getType(){ return SETBOOL; }; + const char * getMD5(){ return "8b94c1b53db61fb6aed406028ad6332a"; }; + + }; + + class SetBoolResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _message_type; + _message_type message; + + SetBoolResponse(): + success(0), + message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_message = strlen(this->message); + varToArr(outbuffer + offset, length_message); + offset += 4; + memcpy(outbuffer + offset, this->message, length_message); + offset += length_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_message; + arrToVar(length_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_message-1]=0; + this->message = (char *)(inbuffer + offset-1); + offset += length_message; + return offset; + } + + const char * getType(){ return SETBOOL; }; + const char * getMD5(){ return "937c9679a518e3a18d831e57125ea522"; }; + + }; + + class SetBool { + public: + typedef SetBoolRequest Request; + typedef SetBoolResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/std_srvs/Trigger.h b/source/ros-max-lib/ros_lib/std_srvs/Trigger.h new file mode 100644 index 0000000..34d1e48 --- /dev/null +++ b/source/ros-max-lib/ros_lib/std_srvs/Trigger.h @@ -0,0 +1,105 @@ +#ifndef _ROS_SERVICE_Trigger_h +#define _ROS_SERVICE_Trigger_h +#include +#include +#include +#include "ros/msg.h" + +namespace std_srvs +{ + +static const char TRIGGER[] = "std_srvs/Trigger"; + + class TriggerRequest : public ros::Msg + { + public: + + TriggerRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return TRIGGER; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class TriggerResponse : public ros::Msg + { + public: + typedef bool _success_type; + _success_type success; + typedef const char* _message_type; + _message_type message; + + TriggerResponse(): + success(0), + message("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.real = this->success; + *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->success); + uint32_t length_message = strlen(this->message); + varToArr(outbuffer + offset, length_message); + offset += 4; + memcpy(outbuffer + offset, this->message, length_message); + offset += length_message; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + bool real; + uint8_t base; + } u_success; + u_success.base = 0; + u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->success = u_success.real; + offset += sizeof(this->success); + uint32_t length_message; + arrToVar(length_message, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_message; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_message-1]=0; + this->message = (char *)(inbuffer + offset-1); + offset += length_message; + return offset; + } + + const char * getType(){ return TRIGGER; }; + const char * getMD5(){ return "937c9679a518e3a18d831e57125ea522"; }; + + }; + + class Trigger { + public: + typedef TriggerRequest Request; + typedef TriggerResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/stereo_msgs/DisparityImage.h b/source/ros-max-lib/ros_lib/stereo_msgs/DisparityImage.h new file mode 100644 index 0000000..90b3f28 --- /dev/null +++ b/source/ros-max-lib/ros_lib/stereo_msgs/DisparityImage.h @@ -0,0 +1,176 @@ +#ifndef _ROS_stereo_msgs_DisparityImage_h +#define _ROS_stereo_msgs_DisparityImage_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "sensor_msgs/Image.h" +#include "sensor_msgs/RegionOfInterest.h" + +namespace stereo_msgs +{ + + class DisparityImage : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef sensor_msgs::Image _image_type; + _image_type image; + typedef float _f_type; + _f_type f; + typedef float _T_type; + _T_type T; + typedef sensor_msgs::RegionOfInterest _valid_window_type; + _valid_window_type valid_window; + typedef float _min_disparity_type; + _min_disparity_type min_disparity; + typedef float _max_disparity_type; + _max_disparity_type max_disparity; + typedef float _delta_d_type; + _delta_d_type delta_d; + + DisparityImage(): + header(), + image(), + f(0), + T(0), + valid_window(), + min_disparity(0), + max_disparity(0), + delta_d(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->image.serialize(outbuffer + offset); + union { + float real; + uint32_t base; + } u_f; + u_f.real = this->f; + *(outbuffer + offset + 0) = (u_f.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_f.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_f.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_f.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->f); + union { + float real; + uint32_t base; + } u_T; + u_T.real = this->T; + *(outbuffer + offset + 0) = (u_T.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_T.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_T.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_T.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->T); + offset += this->valid_window.serialize(outbuffer + offset); + union { + float real; + uint32_t base; + } u_min_disparity; + u_min_disparity.real = this->min_disparity; + *(outbuffer + offset + 0) = (u_min_disparity.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_min_disparity.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_min_disparity.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_min_disparity.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->min_disparity); + union { + float real; + uint32_t base; + } u_max_disparity; + u_max_disparity.real = this->max_disparity; + *(outbuffer + offset + 0) = (u_max_disparity.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_max_disparity.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_max_disparity.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_max_disparity.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->max_disparity); + union { + float real; + uint32_t base; + } u_delta_d; + u_delta_d.real = this->delta_d; + *(outbuffer + offset + 0) = (u_delta_d.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_delta_d.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_delta_d.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_delta_d.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->delta_d); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->image.deserialize(inbuffer + offset); + union { + float real; + uint32_t base; + } u_f; + u_f.base = 0; + u_f.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_f.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_f.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_f.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->f = u_f.real; + offset += sizeof(this->f); + union { + float real; + uint32_t base; + } u_T; + u_T.base = 0; + u_T.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_T.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_T.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_T.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->T = u_T.real; + offset += sizeof(this->T); + offset += this->valid_window.deserialize(inbuffer + offset); + union { + float real; + uint32_t base; + } u_min_disparity; + u_min_disparity.base = 0; + u_min_disparity.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_min_disparity.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_min_disparity.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_min_disparity.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->min_disparity = u_min_disparity.real; + offset += sizeof(this->min_disparity); + union { + float real; + uint32_t base; + } u_max_disparity; + u_max_disparity.base = 0; + u_max_disparity.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_max_disparity.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_max_disparity.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_max_disparity.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->max_disparity = u_max_disparity.real; + offset += sizeof(this->max_disparity); + union { + float real; + uint32_t base; + } u_delta_d; + u_delta_d.base = 0; + u_delta_d.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_delta_d.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_delta_d.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_delta_d.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->delta_d = u_delta_d.real; + offset += sizeof(this->delta_d); + return offset; + } + + const char * getType(){ return "stereo_msgs/DisparityImage"; }; + const char * getMD5(){ return "04a177815f75271039fa21f16acad8c9"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/tf/FrameGraph.h b/source/ros-max-lib/ros_lib/tf/FrameGraph.h new file mode 100644 index 0000000..e95a945 --- /dev/null +++ b/source/ros-max-lib/ros_lib/tf/FrameGraph.h @@ -0,0 +1,87 @@ +#ifndef _ROS_SERVICE_FrameGraph_h +#define _ROS_SERVICE_FrameGraph_h +#include +#include +#include +#include "ros/msg.h" + +namespace tf +{ + +static const char FRAMEGRAPH[] = "tf/FrameGraph"; + + class FrameGraphRequest : public ros::Msg + { + public: + + FrameGraphRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return FRAMEGRAPH; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class FrameGraphResponse : public ros::Msg + { + public: + typedef const char* _dot_graph_type; + _dot_graph_type dot_graph; + + FrameGraphResponse(): + dot_graph("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_dot_graph = strlen(this->dot_graph); + varToArr(outbuffer + offset, length_dot_graph); + offset += 4; + memcpy(outbuffer + offset, this->dot_graph, length_dot_graph); + offset += length_dot_graph; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_dot_graph; + arrToVar(length_dot_graph, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_dot_graph; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_dot_graph-1]=0; + this->dot_graph = (char *)(inbuffer + offset-1); + offset += length_dot_graph; + return offset; + } + + const char * getType(){ return FRAMEGRAPH; }; + const char * getMD5(){ return "c4af9ac907e58e906eb0b6e3c58478c0"; }; + + }; + + class FrameGraph { + public: + typedef FrameGraphRequest Request; + typedef FrameGraphResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/tf/tf.h b/source/ros-max-lib/ros_lib/tf/tf.h new file mode 100644 index 0000000..97858fe --- /dev/null +++ b/source/ros-max-lib/ros_lib/tf/tf.h @@ -0,0 +1,56 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2011, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef ROS_TF_H_ +#define ROS_TF_H_ + +#include "geometry_msgs/TransformStamped.h" + +namespace tf +{ + +static inline geometry_msgs::Quaternion createQuaternionFromYaw(double yaw) +{ + geometry_msgs::Quaternion q; + q.x = 0; + q.y = 0; + q.z = sin(yaw * 0.5); + q.w = cos(yaw * 0.5); + return q; +} + +} + +#endif + diff --git a/source/ros-max-lib/ros_lib/tf/tfMessage.h b/source/ros-max-lib/ros_lib/tf/tfMessage.h new file mode 100644 index 0000000..4c0b04a --- /dev/null +++ b/source/ros-max-lib/ros_lib/tf/tfMessage.h @@ -0,0 +1,64 @@ +#ifndef _ROS_tf_tfMessage_h +#define _ROS_tf_tfMessage_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/TransformStamped.h" + +namespace tf +{ + + class tfMessage : public ros::Msg + { + public: + uint32_t transforms_length; + typedef geometry_msgs::TransformStamped _transforms_type; + _transforms_type st_transforms; + _transforms_type * transforms; + + tfMessage(): + transforms_length(0), transforms(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->transforms_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->transforms_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->transforms_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->transforms_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->transforms_length); + for( uint32_t i = 0; i < transforms_length; i++){ + offset += this->transforms[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t transforms_lengthT = ((uint32_t) (*(inbuffer + offset))); + transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->transforms_length); + if(transforms_lengthT > transforms_length) + this->transforms = (geometry_msgs::TransformStamped*)realloc(this->transforms, transforms_lengthT * sizeof(geometry_msgs::TransformStamped)); + transforms_length = transforms_lengthT; + for( uint32_t i = 0; i < transforms_length; i++){ + offset += this->st_transforms.deserialize(inbuffer + offset); + memcpy( &(this->transforms[i]), &(this->st_transforms), sizeof(geometry_msgs::TransformStamped)); + } + return offset; + } + + const char * getType(){ return "tf/tfMessage"; }; + const char * getMD5(){ return "94810edda583a504dfda3829e70d7eec"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/tf/transform_broadcaster.h b/source/ros-max-lib/ros_lib/tf/transform_broadcaster.h new file mode 100644 index 0000000..6c4e5fe --- /dev/null +++ b/source/ros-max-lib/ros_lib/tf/transform_broadcaster.h @@ -0,0 +1,69 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2011, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef ROS_TRANSFORM_BROADCASTER_H_ +#define ROS_TRANSFORM_BROADCASTER_H_ + +#include "ros.h" +#include "tfMessage.h" + +namespace tf +{ + +class TransformBroadcaster +{ +public: + TransformBroadcaster() : publisher_("/tf", &internal_msg) {} + + void init(ros::NodeHandle &nh) + { + nh.advertise(publisher_); + } + + void sendTransform(geometry_msgs::TransformStamped &transform) + { + internal_msg.transforms_length = 1; + internal_msg.transforms = &transform; + publisher_.publish(&internal_msg); + } + +private: + tf::tfMessage internal_msg; + ros::Publisher publisher_; +}; + +} + +#endif + diff --git a/source/ros-max-lib/ros_lib/tf2_msgs/FrameGraph.h b/source/ros-max-lib/ros_lib/tf2_msgs/FrameGraph.h new file mode 100644 index 0000000..9145639 --- /dev/null +++ b/source/ros-max-lib/ros_lib/tf2_msgs/FrameGraph.h @@ -0,0 +1,87 @@ +#ifndef _ROS_SERVICE_FrameGraph_h +#define _ROS_SERVICE_FrameGraph_h +#include +#include +#include +#include "ros/msg.h" + +namespace tf2_msgs +{ + +static const char FRAMEGRAPH[] = "tf2_msgs/FrameGraph"; + + class FrameGraphRequest : public ros::Msg + { + public: + + FrameGraphRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return FRAMEGRAPH; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class FrameGraphResponse : public ros::Msg + { + public: + typedef const char* _frame_yaml_type; + _frame_yaml_type frame_yaml; + + FrameGraphResponse(): + frame_yaml("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_frame_yaml = strlen(this->frame_yaml); + varToArr(outbuffer + offset, length_frame_yaml); + offset += 4; + memcpy(outbuffer + offset, this->frame_yaml, length_frame_yaml); + offset += length_frame_yaml; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_frame_yaml; + arrToVar(length_frame_yaml, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_frame_yaml; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_frame_yaml-1]=0; + this->frame_yaml = (char *)(inbuffer + offset-1); + offset += length_frame_yaml; + return offset; + } + + const char * getType(){ return FRAMEGRAPH; }; + const char * getMD5(){ return "437ea58e9463815a0d511c7326b686b0"; }; + + }; + + class FrameGraph { + public: + typedef FrameGraphRequest Request; + typedef FrameGraphResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/tf2_msgs/LookupTransformAction.h b/source/ros-max-lib/ros_lib/tf2_msgs/LookupTransformAction.h new file mode 100644 index 0000000..733d095 --- /dev/null +++ b/source/ros-max-lib/ros_lib/tf2_msgs/LookupTransformAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_tf2_msgs_LookupTransformAction_h +#define _ROS_tf2_msgs_LookupTransformAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "tf2_msgs/LookupTransformActionGoal.h" +#include "tf2_msgs/LookupTransformActionResult.h" +#include "tf2_msgs/LookupTransformActionFeedback.h" + +namespace tf2_msgs +{ + + class LookupTransformAction : public ros::Msg + { + public: + typedef tf2_msgs::LookupTransformActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef tf2_msgs::LookupTransformActionResult _action_result_type; + _action_result_type action_result; + typedef tf2_msgs::LookupTransformActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + LookupTransformAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "tf2_msgs/LookupTransformAction"; }; + const char * getMD5(){ return "7ee01ba91a56c2245c610992dbaa3c37"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/tf2_msgs/LookupTransformActionFeedback.h b/source/ros-max-lib/ros_lib/tf2_msgs/LookupTransformActionFeedback.h new file mode 100644 index 0000000..39bd3b4 --- /dev/null +++ b/source/ros-max-lib/ros_lib/tf2_msgs/LookupTransformActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_tf2_msgs_LookupTransformActionFeedback_h +#define _ROS_tf2_msgs_LookupTransformActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "tf2_msgs/LookupTransformFeedback.h" + +namespace tf2_msgs +{ + + class LookupTransformActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef tf2_msgs::LookupTransformFeedback _feedback_type; + _feedback_type feedback; + + LookupTransformActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "tf2_msgs/LookupTransformActionFeedback"; }; + const char * getMD5(){ return "aae20e09065c3809e8a8e87c4c8953fd"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/tf2_msgs/LookupTransformActionGoal.h b/source/ros-max-lib/ros_lib/tf2_msgs/LookupTransformActionGoal.h new file mode 100644 index 0000000..92bc163 --- /dev/null +++ b/source/ros-max-lib/ros_lib/tf2_msgs/LookupTransformActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_tf2_msgs_LookupTransformActionGoal_h +#define _ROS_tf2_msgs_LookupTransformActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "tf2_msgs/LookupTransformGoal.h" + +namespace tf2_msgs +{ + + class LookupTransformActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef tf2_msgs::LookupTransformGoal _goal_type; + _goal_type goal; + + LookupTransformActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "tf2_msgs/LookupTransformActionGoal"; }; + const char * getMD5(){ return "f2e7bcdb75c847978d0351a13e699da5"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/tf2_msgs/LookupTransformActionResult.h b/source/ros-max-lib/ros_lib/tf2_msgs/LookupTransformActionResult.h new file mode 100644 index 0000000..38a98bd --- /dev/null +++ b/source/ros-max-lib/ros_lib/tf2_msgs/LookupTransformActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_tf2_msgs_LookupTransformActionResult_h +#define _ROS_tf2_msgs_LookupTransformActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "tf2_msgs/LookupTransformResult.h" + +namespace tf2_msgs +{ + + class LookupTransformActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef tf2_msgs::LookupTransformResult _result_type; + _result_type result; + + LookupTransformActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "tf2_msgs/LookupTransformActionResult"; }; + const char * getMD5(){ return "ac26ce75a41384fa8bb4dc10f491ab90"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/tf2_msgs/LookupTransformFeedback.h b/source/ros-max-lib/ros_lib/tf2_msgs/LookupTransformFeedback.h new file mode 100644 index 0000000..6be0748 --- /dev/null +++ b/source/ros-max-lib/ros_lib/tf2_msgs/LookupTransformFeedback.h @@ -0,0 +1,38 @@ +#ifndef _ROS_tf2_msgs_LookupTransformFeedback_h +#define _ROS_tf2_msgs_LookupTransformFeedback_h + +#include +#include +#include +#include "ros/msg.h" + +namespace tf2_msgs +{ + + class LookupTransformFeedback : public ros::Msg + { + public: + + LookupTransformFeedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "tf2_msgs/LookupTransformFeedback"; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/tf2_msgs/LookupTransformGoal.h b/source/ros-max-lib/ros_lib/tf2_msgs/LookupTransformGoal.h new file mode 100644 index 0000000..87a79ee --- /dev/null +++ b/source/ros-max-lib/ros_lib/tf2_msgs/LookupTransformGoal.h @@ -0,0 +1,178 @@ +#ifndef _ROS_tf2_msgs_LookupTransformGoal_h +#define _ROS_tf2_msgs_LookupTransformGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "ros/time.h" +#include "ros/duration.h" + +namespace tf2_msgs +{ + + class LookupTransformGoal : public ros::Msg + { + public: + typedef const char* _target_frame_type; + _target_frame_type target_frame; + typedef const char* _source_frame_type; + _source_frame_type source_frame; + typedef ros::Time _source_time_type; + _source_time_type source_time; + typedef ros::Duration _timeout_type; + _timeout_type timeout; + typedef ros::Time _target_time_type; + _target_time_type target_time; + typedef const char* _fixed_frame_type; + _fixed_frame_type fixed_frame; + typedef bool _advanced_type; + _advanced_type advanced; + + LookupTransformGoal(): + target_frame(""), + source_frame(""), + source_time(), + timeout(), + target_time(), + fixed_frame(""), + advanced(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_target_frame = strlen(this->target_frame); + varToArr(outbuffer + offset, length_target_frame); + offset += 4; + memcpy(outbuffer + offset, this->target_frame, length_target_frame); + offset += length_target_frame; + uint32_t length_source_frame = strlen(this->source_frame); + varToArr(outbuffer + offset, length_source_frame); + offset += 4; + memcpy(outbuffer + offset, this->source_frame, length_source_frame); + offset += length_source_frame; + *(outbuffer + offset + 0) = (this->source_time.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->source_time.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->source_time.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->source_time.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->source_time.sec); + *(outbuffer + offset + 0) = (this->source_time.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->source_time.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->source_time.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->source_time.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->source_time.nsec); + *(outbuffer + offset + 0) = (this->timeout.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->timeout.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->timeout.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->timeout.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->timeout.sec); + *(outbuffer + offset + 0) = (this->timeout.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->timeout.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->timeout.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->timeout.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->timeout.nsec); + *(outbuffer + offset + 0) = (this->target_time.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->target_time.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->target_time.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->target_time.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->target_time.sec); + *(outbuffer + offset + 0) = (this->target_time.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->target_time.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->target_time.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->target_time.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->target_time.nsec); + uint32_t length_fixed_frame = strlen(this->fixed_frame); + varToArr(outbuffer + offset, length_fixed_frame); + offset += 4; + memcpy(outbuffer + offset, this->fixed_frame, length_fixed_frame); + offset += length_fixed_frame; + union { + bool real; + uint8_t base; + } u_advanced; + u_advanced.real = this->advanced; + *(outbuffer + offset + 0) = (u_advanced.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->advanced); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_target_frame; + arrToVar(length_target_frame, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_target_frame; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_target_frame-1]=0; + this->target_frame = (char *)(inbuffer + offset-1); + offset += length_target_frame; + uint32_t length_source_frame; + arrToVar(length_source_frame, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_source_frame; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_source_frame-1]=0; + this->source_frame = (char *)(inbuffer + offset-1); + offset += length_source_frame; + this->source_time.sec = ((uint32_t) (*(inbuffer + offset))); + this->source_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->source_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->source_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->source_time.sec); + this->source_time.nsec = ((uint32_t) (*(inbuffer + offset))); + this->source_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->source_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->source_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->source_time.nsec); + this->timeout.sec = ((uint32_t) (*(inbuffer + offset))); + this->timeout.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->timeout.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->timeout.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->timeout.sec); + this->timeout.nsec = ((uint32_t) (*(inbuffer + offset))); + this->timeout.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->timeout.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->timeout.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->timeout.nsec); + this->target_time.sec = ((uint32_t) (*(inbuffer + offset))); + this->target_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->target_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->target_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->target_time.sec); + this->target_time.nsec = ((uint32_t) (*(inbuffer + offset))); + this->target_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->target_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->target_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->target_time.nsec); + uint32_t length_fixed_frame; + arrToVar(length_fixed_frame, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_fixed_frame; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_fixed_frame-1]=0; + this->fixed_frame = (char *)(inbuffer + offset-1); + offset += length_fixed_frame; + union { + bool real; + uint8_t base; + } u_advanced; + u_advanced.base = 0; + u_advanced.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->advanced = u_advanced.real; + offset += sizeof(this->advanced); + return offset; + } + + const char * getType(){ return "tf2_msgs/LookupTransformGoal"; }; + const char * getMD5(){ return "35e3720468131d675a18bb6f3e5f22f8"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/tf2_msgs/LookupTransformResult.h b/source/ros-max-lib/ros_lib/tf2_msgs/LookupTransformResult.h new file mode 100644 index 0000000..5422d7e --- /dev/null +++ b/source/ros-max-lib/ros_lib/tf2_msgs/LookupTransformResult.h @@ -0,0 +1,50 @@ +#ifndef _ROS_tf2_msgs_LookupTransformResult_h +#define _ROS_tf2_msgs_LookupTransformResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/TransformStamped.h" +#include "tf2_msgs/TF2Error.h" + +namespace tf2_msgs +{ + + class LookupTransformResult : public ros::Msg + { + public: + typedef geometry_msgs::TransformStamped _transform_type; + _transform_type transform; + typedef tf2_msgs::TF2Error _error_type; + _error_type error; + + LookupTransformResult(): + transform(), + error() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->transform.serialize(outbuffer + offset); + offset += this->error.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->transform.deserialize(inbuffer + offset); + offset += this->error.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "tf2_msgs/LookupTransformResult"; }; + const char * getMD5(){ return "3fe5db6a19ca9cfb675418c5ad875c36"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/tf2_msgs/TF2Error.h b/source/ros-max-lib/ros_lib/tf2_msgs/TF2Error.h new file mode 100644 index 0000000..e6efdce --- /dev/null +++ b/source/ros-max-lib/ros_lib/tf2_msgs/TF2Error.h @@ -0,0 +1,69 @@ +#ifndef _ROS_tf2_msgs_TF2Error_h +#define _ROS_tf2_msgs_TF2Error_h + +#include +#include +#include +#include "ros/msg.h" + +namespace tf2_msgs +{ + + class TF2Error : public ros::Msg + { + public: + typedef uint8_t _error_type; + _error_type error; + typedef const char* _error_string_type; + _error_string_type error_string; + enum { NO_ERROR = 0 }; + enum { LOOKUP_ERROR = 1 }; + enum { CONNECTIVITY_ERROR = 2 }; + enum { EXTRAPOLATION_ERROR = 3 }; + enum { INVALID_ARGUMENT_ERROR = 4 }; + enum { TIMEOUT_ERROR = 5 }; + enum { TRANSFORM_ERROR = 6 }; + + TF2Error(): + error(0), + error_string("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->error >> (8 * 0)) & 0xFF; + offset += sizeof(this->error); + uint32_t length_error_string = strlen(this->error_string); + varToArr(outbuffer + offset, length_error_string); + offset += 4; + memcpy(outbuffer + offset, this->error_string, length_error_string); + offset += length_error_string; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->error = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->error); + uint32_t length_error_string; + arrToVar(length_error_string, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_error_string; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_error_string-1]=0; + this->error_string = (char *)(inbuffer + offset-1); + offset += length_error_string; + return offset; + } + + const char * getType(){ return "tf2_msgs/TF2Error"; }; + const char * getMD5(){ return "bc6848fd6fd750c92e38575618a4917d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/tf2_msgs/TFMessage.h b/source/ros-max-lib/ros_lib/tf2_msgs/TFMessage.h new file mode 100644 index 0000000..fd8ff10 --- /dev/null +++ b/source/ros-max-lib/ros_lib/tf2_msgs/TFMessage.h @@ -0,0 +1,64 @@ +#ifndef _ROS_tf2_msgs_TFMessage_h +#define _ROS_tf2_msgs_TFMessage_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/TransformStamped.h" + +namespace tf2_msgs +{ + + class TFMessage : public ros::Msg + { + public: + uint32_t transforms_length; + typedef geometry_msgs::TransformStamped _transforms_type; + _transforms_type st_transforms; + _transforms_type * transforms; + + TFMessage(): + transforms_length(0), transforms(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->transforms_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->transforms_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->transforms_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->transforms_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->transforms_length); + for( uint32_t i = 0; i < transforms_length; i++){ + offset += this->transforms[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t transforms_lengthT = ((uint32_t) (*(inbuffer + offset))); + transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->transforms_length); + if(transforms_lengthT > transforms_length) + this->transforms = (geometry_msgs::TransformStamped*)realloc(this->transforms, transforms_lengthT * sizeof(geometry_msgs::TransformStamped)); + transforms_length = transforms_lengthT; + for( uint32_t i = 0; i < transforms_length; i++){ + offset += this->st_transforms.deserialize(inbuffer + offset); + memcpy( &(this->transforms[i]), &(this->st_transforms), sizeof(geometry_msgs::TransformStamped)); + } + return offset; + } + + const char * getType(){ return "tf2_msgs/TFMessage"; }; + const char * getMD5(){ return "94810edda583a504dfda3829e70d7eec"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/theora_image_transport/Packet.h b/source/ros-max-lib/ros_lib/theora_image_transport/Packet.h new file mode 100644 index 0000000..b35e696 --- /dev/null +++ b/source/ros-max-lib/ros_lib/theora_image_transport/Packet.h @@ -0,0 +1,183 @@ +#ifndef _ROS_theora_image_transport_Packet_h +#define _ROS_theora_image_transport_Packet_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" + +namespace theora_image_transport +{ + + class Packet : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t data_length; + typedef uint8_t _data_type; + _data_type st_data; + _data_type * data; + typedef int32_t _b_o_s_type; + _b_o_s_type b_o_s; + typedef int32_t _e_o_s_type; + _e_o_s_type e_o_s; + typedef int64_t _granulepos_type; + _granulepos_type granulepos; + typedef int64_t _packetno_type; + _packetno_type packetno; + + Packet(): + header(), + data_length(0), data(NULL), + b_o_s(0), + e_o_s(0), + granulepos(0), + packetno(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF; + offset += sizeof(this->data[i]); + } + union { + int32_t real; + uint32_t base; + } u_b_o_s; + u_b_o_s.real = this->b_o_s; + *(outbuffer + offset + 0) = (u_b_o_s.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_b_o_s.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_b_o_s.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_b_o_s.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->b_o_s); + union { + int32_t real; + uint32_t base; + } u_e_o_s; + u_e_o_s.real = this->e_o_s; + *(outbuffer + offset + 0) = (u_e_o_s.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_e_o_s.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_e_o_s.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_e_o_s.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->e_o_s); + union { + int64_t real; + uint64_t base; + } u_granulepos; + u_granulepos.real = this->granulepos; + *(outbuffer + offset + 0) = (u_granulepos.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_granulepos.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_granulepos.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_granulepos.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_granulepos.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_granulepos.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_granulepos.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_granulepos.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->granulepos); + union { + int64_t real; + uint64_t base; + } u_packetno; + u_packetno.real = this->packetno; + *(outbuffer + offset + 0) = (u_packetno.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_packetno.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_packetno.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_packetno.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_packetno.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_packetno.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_packetno.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_packetno.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->packetno); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (uint8_t*)realloc(this->data, data_lengthT * sizeof(uint8_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + this->st_data = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(uint8_t)); + } + union { + int32_t real; + uint32_t base; + } u_b_o_s; + u_b_o_s.base = 0; + u_b_o_s.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_b_o_s.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_b_o_s.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_b_o_s.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->b_o_s = u_b_o_s.real; + offset += sizeof(this->b_o_s); + union { + int32_t real; + uint32_t base; + } u_e_o_s; + u_e_o_s.base = 0; + u_e_o_s.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_e_o_s.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_e_o_s.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_e_o_s.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->e_o_s = u_e_o_s.real; + offset += sizeof(this->e_o_s); + union { + int64_t real; + uint64_t base; + } u_granulepos; + u_granulepos.base = 0; + u_granulepos.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_granulepos.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_granulepos.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_granulepos.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_granulepos.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_granulepos.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_granulepos.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_granulepos.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->granulepos = u_granulepos.real; + offset += sizeof(this->granulepos); + union { + int64_t real; + uint64_t base; + } u_packetno; + u_packetno.base = 0; + u_packetno.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_packetno.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_packetno.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_packetno.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_packetno.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_packetno.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_packetno.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_packetno.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->packetno = u_packetno.real; + offset += sizeof(this->packetno); + return offset; + } + + const char * getType(){ return "theora_image_transport/Packet"; }; + const char * getMD5(){ return "33ac4e14a7cff32e7e0d65f18bb410f3"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/time.cpp b/source/ros-max-lib/ros_lib/time.cpp new file mode 100644 index 0000000..86221f9 --- /dev/null +++ b/source/ros-max-lib/ros_lib/time.cpp @@ -0,0 +1,70 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2011, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote prducts derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include "ros/time.h" + +namespace ros +{ +void normalizeSecNSec(uint32_t& sec, uint32_t& nsec) +{ + uint32_t nsec_part = nsec % 1000000000UL; + uint32_t sec_part = nsec / 1000000000UL; + sec += sec_part; + nsec = nsec_part; +} + +Time& Time::fromNSec(int32_t t) +{ + sec = t / 1000000000; + nsec = t % 1000000000; + normalizeSecNSec(sec, nsec); + return *this; +} + +Time& Time::operator +=(const Duration &rhs) +{ + sec += rhs.sec; + nsec += rhs.nsec; + normalizeSecNSec(sec, nsec); + return *this; +} + +Time& Time::operator -=(const Duration &rhs) +{ + sec += -rhs.sec; + nsec += -rhs.nsec; + normalizeSecNSec(sec, nsec); + return *this; +} +} diff --git a/source/ros-max-lib/ros_lib/topic_tools/DemuxAdd.h b/source/ros-max-lib/ros_lib/topic_tools/DemuxAdd.h new file mode 100644 index 0000000..d8016c6 --- /dev/null +++ b/source/ros-max-lib/ros_lib/topic_tools/DemuxAdd.h @@ -0,0 +1,87 @@ +#ifndef _ROS_SERVICE_DemuxAdd_h +#define _ROS_SERVICE_DemuxAdd_h +#include +#include +#include +#include "ros/msg.h" + +namespace topic_tools +{ + +static const char DEMUXADD[] = "topic_tools/DemuxAdd"; + + class DemuxAddRequest : public ros::Msg + { + public: + typedef const char* _topic_type; + _topic_type topic; + + DemuxAddRequest(): + topic("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_topic = strlen(this->topic); + varToArr(outbuffer + offset, length_topic); + offset += 4; + memcpy(outbuffer + offset, this->topic, length_topic); + offset += length_topic; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_topic; + arrToVar(length_topic, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_topic; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_topic-1]=0; + this->topic = (char *)(inbuffer + offset-1); + offset += length_topic; + return offset; + } + + const char * getType(){ return DEMUXADD; }; + const char * getMD5(){ return "d8f94bae31b356b24d0427f80426d0c3"; }; + + }; + + class DemuxAddResponse : public ros::Msg + { + public: + + DemuxAddResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return DEMUXADD; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class DemuxAdd { + public: + typedef DemuxAddRequest Request; + typedef DemuxAddResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/topic_tools/DemuxDelete.h b/source/ros-max-lib/ros_lib/topic_tools/DemuxDelete.h new file mode 100644 index 0000000..3f030aa --- /dev/null +++ b/source/ros-max-lib/ros_lib/topic_tools/DemuxDelete.h @@ -0,0 +1,87 @@ +#ifndef _ROS_SERVICE_DemuxDelete_h +#define _ROS_SERVICE_DemuxDelete_h +#include +#include +#include +#include "ros/msg.h" + +namespace topic_tools +{ + +static const char DEMUXDELETE[] = "topic_tools/DemuxDelete"; + + class DemuxDeleteRequest : public ros::Msg + { + public: + typedef const char* _topic_type; + _topic_type topic; + + DemuxDeleteRequest(): + topic("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_topic = strlen(this->topic); + varToArr(outbuffer + offset, length_topic); + offset += 4; + memcpy(outbuffer + offset, this->topic, length_topic); + offset += length_topic; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_topic; + arrToVar(length_topic, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_topic; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_topic-1]=0; + this->topic = (char *)(inbuffer + offset-1); + offset += length_topic; + return offset; + } + + const char * getType(){ return DEMUXDELETE; }; + const char * getMD5(){ return "d8f94bae31b356b24d0427f80426d0c3"; }; + + }; + + class DemuxDeleteResponse : public ros::Msg + { + public: + + DemuxDeleteResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return DEMUXDELETE; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class DemuxDelete { + public: + typedef DemuxDeleteRequest Request; + typedef DemuxDeleteResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/topic_tools/DemuxList.h b/source/ros-max-lib/ros_lib/topic_tools/DemuxList.h new file mode 100644 index 0000000..0553329 --- /dev/null +++ b/source/ros-max-lib/ros_lib/topic_tools/DemuxList.h @@ -0,0 +1,107 @@ +#ifndef _ROS_SERVICE_DemuxList_h +#define _ROS_SERVICE_DemuxList_h +#include +#include +#include +#include "ros/msg.h" + +namespace topic_tools +{ + +static const char DEMUXLIST[] = "topic_tools/DemuxList"; + + class DemuxListRequest : public ros::Msg + { + public: + + DemuxListRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return DEMUXLIST; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class DemuxListResponse : public ros::Msg + { + public: + uint32_t topics_length; + typedef char* _topics_type; + _topics_type st_topics; + _topics_type * topics; + + DemuxListResponse(): + topics_length(0), topics(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->topics_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->topics_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->topics_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->topics_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->topics_length); + for( uint32_t i = 0; i < topics_length; i++){ + uint32_t length_topicsi = strlen(this->topics[i]); + varToArr(outbuffer + offset, length_topicsi); + offset += 4; + memcpy(outbuffer + offset, this->topics[i], length_topicsi); + offset += length_topicsi; + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t topics_lengthT = ((uint32_t) (*(inbuffer + offset))); + topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->topics_length); + if(topics_lengthT > topics_length) + this->topics = (char**)realloc(this->topics, topics_lengthT * sizeof(char*)); + topics_length = topics_lengthT; + for( uint32_t i = 0; i < topics_length; i++){ + uint32_t length_st_topics; + arrToVar(length_st_topics, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_topics; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_topics-1]=0; + this->st_topics = (char *)(inbuffer + offset-1); + offset += length_st_topics; + memcpy( &(this->topics[i]), &(this->st_topics), sizeof(char*)); + } + return offset; + } + + const char * getType(){ return DEMUXLIST; }; + const char * getMD5(){ return "b0eef9a05d4e829092fc2f2c3c2aad3d"; }; + + }; + + class DemuxList { + public: + typedef DemuxListRequest Request; + typedef DemuxListResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/topic_tools/DemuxSelect.h b/source/ros-max-lib/ros_lib/topic_tools/DemuxSelect.h new file mode 100644 index 0000000..17a6d9b --- /dev/null +++ b/source/ros-max-lib/ros_lib/topic_tools/DemuxSelect.h @@ -0,0 +1,104 @@ +#ifndef _ROS_SERVICE_DemuxSelect_h +#define _ROS_SERVICE_DemuxSelect_h +#include +#include +#include +#include "ros/msg.h" + +namespace topic_tools +{ + +static const char DEMUXSELECT[] = "topic_tools/DemuxSelect"; + + class DemuxSelectRequest : public ros::Msg + { + public: + typedef const char* _topic_type; + _topic_type topic; + + DemuxSelectRequest(): + topic("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_topic = strlen(this->topic); + varToArr(outbuffer + offset, length_topic); + offset += 4; + memcpy(outbuffer + offset, this->topic, length_topic); + offset += length_topic; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_topic; + arrToVar(length_topic, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_topic; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_topic-1]=0; + this->topic = (char *)(inbuffer + offset-1); + offset += length_topic; + return offset; + } + + const char * getType(){ return DEMUXSELECT; }; + const char * getMD5(){ return "d8f94bae31b356b24d0427f80426d0c3"; }; + + }; + + class DemuxSelectResponse : public ros::Msg + { + public: + typedef const char* _prev_topic_type; + _prev_topic_type prev_topic; + + DemuxSelectResponse(): + prev_topic("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_prev_topic = strlen(this->prev_topic); + varToArr(outbuffer + offset, length_prev_topic); + offset += 4; + memcpy(outbuffer + offset, this->prev_topic, length_prev_topic); + offset += length_prev_topic; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_prev_topic; + arrToVar(length_prev_topic, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_prev_topic; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_prev_topic-1]=0; + this->prev_topic = (char *)(inbuffer + offset-1); + offset += length_prev_topic; + return offset; + } + + const char * getType(){ return DEMUXSELECT; }; + const char * getMD5(){ return "3db0a473debdbafea387c9e49358c320"; }; + + }; + + class DemuxSelect { + public: + typedef DemuxSelectRequest Request; + typedef DemuxSelectResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/topic_tools/MuxAdd.h b/source/ros-max-lib/ros_lib/topic_tools/MuxAdd.h new file mode 100644 index 0000000..25a649a --- /dev/null +++ b/source/ros-max-lib/ros_lib/topic_tools/MuxAdd.h @@ -0,0 +1,87 @@ +#ifndef _ROS_SERVICE_MuxAdd_h +#define _ROS_SERVICE_MuxAdd_h +#include +#include +#include +#include "ros/msg.h" + +namespace topic_tools +{ + +static const char MUXADD[] = "topic_tools/MuxAdd"; + + class MuxAddRequest : public ros::Msg + { + public: + typedef const char* _topic_type; + _topic_type topic; + + MuxAddRequest(): + topic("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_topic = strlen(this->topic); + varToArr(outbuffer + offset, length_topic); + offset += 4; + memcpy(outbuffer + offset, this->topic, length_topic); + offset += length_topic; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_topic; + arrToVar(length_topic, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_topic; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_topic-1]=0; + this->topic = (char *)(inbuffer + offset-1); + offset += length_topic; + return offset; + } + + const char * getType(){ return MUXADD; }; + const char * getMD5(){ return "d8f94bae31b356b24d0427f80426d0c3"; }; + + }; + + class MuxAddResponse : public ros::Msg + { + public: + + MuxAddResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return MUXADD; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class MuxAdd { + public: + typedef MuxAddRequest Request; + typedef MuxAddResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/topic_tools/MuxDelete.h b/source/ros-max-lib/ros_lib/topic_tools/MuxDelete.h new file mode 100644 index 0000000..3672ad5 --- /dev/null +++ b/source/ros-max-lib/ros_lib/topic_tools/MuxDelete.h @@ -0,0 +1,87 @@ +#ifndef _ROS_SERVICE_MuxDelete_h +#define _ROS_SERVICE_MuxDelete_h +#include +#include +#include +#include "ros/msg.h" + +namespace topic_tools +{ + +static const char MUXDELETE[] = "topic_tools/MuxDelete"; + + class MuxDeleteRequest : public ros::Msg + { + public: + typedef const char* _topic_type; + _topic_type topic; + + MuxDeleteRequest(): + topic("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_topic = strlen(this->topic); + varToArr(outbuffer + offset, length_topic); + offset += 4; + memcpy(outbuffer + offset, this->topic, length_topic); + offset += length_topic; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_topic; + arrToVar(length_topic, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_topic; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_topic-1]=0; + this->topic = (char *)(inbuffer + offset-1); + offset += length_topic; + return offset; + } + + const char * getType(){ return MUXDELETE; }; + const char * getMD5(){ return "d8f94bae31b356b24d0427f80426d0c3"; }; + + }; + + class MuxDeleteResponse : public ros::Msg + { + public: + + MuxDeleteResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return MUXDELETE; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class MuxDelete { + public: + typedef MuxDeleteRequest Request; + typedef MuxDeleteResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/topic_tools/MuxList.h b/source/ros-max-lib/ros_lib/topic_tools/MuxList.h new file mode 100644 index 0000000..5d7936d --- /dev/null +++ b/source/ros-max-lib/ros_lib/topic_tools/MuxList.h @@ -0,0 +1,107 @@ +#ifndef _ROS_SERVICE_MuxList_h +#define _ROS_SERVICE_MuxList_h +#include +#include +#include +#include "ros/msg.h" + +namespace topic_tools +{ + +static const char MUXLIST[] = "topic_tools/MuxList"; + + class MuxListRequest : public ros::Msg + { + public: + + MuxListRequest() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return MUXLIST; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class MuxListResponse : public ros::Msg + { + public: + uint32_t topics_length; + typedef char* _topics_type; + _topics_type st_topics; + _topics_type * topics; + + MuxListResponse(): + topics_length(0), topics(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->topics_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->topics_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->topics_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->topics_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->topics_length); + for( uint32_t i = 0; i < topics_length; i++){ + uint32_t length_topicsi = strlen(this->topics[i]); + varToArr(outbuffer + offset, length_topicsi); + offset += 4; + memcpy(outbuffer + offset, this->topics[i], length_topicsi); + offset += length_topicsi; + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t topics_lengthT = ((uint32_t) (*(inbuffer + offset))); + topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->topics_length); + if(topics_lengthT > topics_length) + this->topics = (char**)realloc(this->topics, topics_lengthT * sizeof(char*)); + topics_length = topics_lengthT; + for( uint32_t i = 0; i < topics_length; i++){ + uint32_t length_st_topics; + arrToVar(length_st_topics, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_topics; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_topics-1]=0; + this->st_topics = (char *)(inbuffer + offset-1); + offset += length_st_topics; + memcpy( &(this->topics[i]), &(this->st_topics), sizeof(char*)); + } + return offset; + } + + const char * getType(){ return MUXLIST; }; + const char * getMD5(){ return "b0eef9a05d4e829092fc2f2c3c2aad3d"; }; + + }; + + class MuxList { + public: + typedef MuxListRequest Request; + typedef MuxListResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/topic_tools/MuxSelect.h b/source/ros-max-lib/ros_lib/topic_tools/MuxSelect.h new file mode 100644 index 0000000..67324a8 --- /dev/null +++ b/source/ros-max-lib/ros_lib/topic_tools/MuxSelect.h @@ -0,0 +1,104 @@ +#ifndef _ROS_SERVICE_MuxSelect_h +#define _ROS_SERVICE_MuxSelect_h +#include +#include +#include +#include "ros/msg.h" + +namespace topic_tools +{ + +static const char MUXSELECT[] = "topic_tools/MuxSelect"; + + class MuxSelectRequest : public ros::Msg + { + public: + typedef const char* _topic_type; + _topic_type topic; + + MuxSelectRequest(): + topic("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_topic = strlen(this->topic); + varToArr(outbuffer + offset, length_topic); + offset += 4; + memcpy(outbuffer + offset, this->topic, length_topic); + offset += length_topic; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_topic; + arrToVar(length_topic, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_topic; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_topic-1]=0; + this->topic = (char *)(inbuffer + offset-1); + offset += length_topic; + return offset; + } + + const char * getType(){ return MUXSELECT; }; + const char * getMD5(){ return "d8f94bae31b356b24d0427f80426d0c3"; }; + + }; + + class MuxSelectResponse : public ros::Msg + { + public: + typedef const char* _prev_topic_type; + _prev_topic_type prev_topic; + + MuxSelectResponse(): + prev_topic("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_prev_topic = strlen(this->prev_topic); + varToArr(outbuffer + offset, length_prev_topic); + offset += 4; + memcpy(outbuffer + offset, this->prev_topic, length_prev_topic); + offset += length_prev_topic; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_prev_topic; + arrToVar(length_prev_topic, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_prev_topic; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_prev_topic-1]=0; + this->prev_topic = (char *)(inbuffer + offset-1); + offset += length_prev_topic; + return offset; + } + + const char * getType(){ return MUXSELECT; }; + const char * getMD5(){ return "3db0a473debdbafea387c9e49358c320"; }; + + }; + + class MuxSelect { + public: + typedef MuxSelectRequest Request; + typedef MuxSelectResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/trajectory_msgs/JointTrajectory.h b/source/ros-max-lib/ros_lib/trajectory_msgs/JointTrajectory.h new file mode 100644 index 0000000..f03d537 --- /dev/null +++ b/source/ros-max-lib/ros_lib/trajectory_msgs/JointTrajectory.h @@ -0,0 +1,107 @@ +#ifndef _ROS_trajectory_msgs_JointTrajectory_h +#define _ROS_trajectory_msgs_JointTrajectory_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "trajectory_msgs/JointTrajectoryPoint.h" + +namespace trajectory_msgs +{ + + class JointTrajectory : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t joint_names_length; + typedef char* _joint_names_type; + _joint_names_type st_joint_names; + _joint_names_type * joint_names; + uint32_t points_length; + typedef trajectory_msgs::JointTrajectoryPoint _points_type; + _points_type st_points; + _points_type * points; + + JointTrajectory(): + header(), + joint_names_length(0), joint_names(NULL), + points_length(0), points(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->joint_names_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->joint_names_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->joint_names_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->joint_names_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->joint_names_length); + for( uint32_t i = 0; i < joint_names_length; i++){ + uint32_t length_joint_namesi = strlen(this->joint_names[i]); + varToArr(outbuffer + offset, length_joint_namesi); + offset += 4; + memcpy(outbuffer + offset, this->joint_names[i], length_joint_namesi); + offset += length_joint_namesi; + } + *(outbuffer + offset + 0) = (this->points_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->points_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->points_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->points_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->points_length); + for( uint32_t i = 0; i < points_length; i++){ + offset += this->points[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t joint_names_lengthT = ((uint32_t) (*(inbuffer + offset))); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->joint_names_length); + if(joint_names_lengthT > joint_names_length) + this->joint_names = (char**)realloc(this->joint_names, joint_names_lengthT * sizeof(char*)); + joint_names_length = joint_names_lengthT; + for( uint32_t i = 0; i < joint_names_length; i++){ + uint32_t length_st_joint_names; + arrToVar(length_st_joint_names, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_joint_names; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_joint_names-1]=0; + this->st_joint_names = (char *)(inbuffer + offset-1); + offset += length_st_joint_names; + memcpy( &(this->joint_names[i]), &(this->st_joint_names), sizeof(char*)); + } + uint32_t points_lengthT = ((uint32_t) (*(inbuffer + offset))); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->points_length); + if(points_lengthT > points_length) + this->points = (trajectory_msgs::JointTrajectoryPoint*)realloc(this->points, points_lengthT * sizeof(trajectory_msgs::JointTrajectoryPoint)); + points_length = points_lengthT; + for( uint32_t i = 0; i < points_length; i++){ + offset += this->st_points.deserialize(inbuffer + offset); + memcpy( &(this->points[i]), &(this->st_points), sizeof(trajectory_msgs::JointTrajectoryPoint)); + } + return offset; + } + + const char * getType(){ return "trajectory_msgs/JointTrajectory"; }; + const char * getMD5(){ return "65b4f94a94d1ed67169da35a02f33d3f"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/trajectory_msgs/JointTrajectoryPoint.h b/source/ros-max-lib/ros_lib/trajectory_msgs/JointTrajectoryPoint.h new file mode 100644 index 0000000..dac669b --- /dev/null +++ b/source/ros-max-lib/ros_lib/trajectory_msgs/JointTrajectoryPoint.h @@ -0,0 +1,270 @@ +#ifndef _ROS_trajectory_msgs_JointTrajectoryPoint_h +#define _ROS_trajectory_msgs_JointTrajectoryPoint_h + +#include +#include +#include +#include "ros/msg.h" +#include "ros/duration.h" + +namespace trajectory_msgs +{ + + class JointTrajectoryPoint : public ros::Msg + { + public: + uint32_t positions_length; + typedef double _positions_type; + _positions_type st_positions; + _positions_type * positions; + uint32_t velocities_length; + typedef double _velocities_type; + _velocities_type st_velocities; + _velocities_type * velocities; + uint32_t accelerations_length; + typedef double _accelerations_type; + _accelerations_type st_accelerations; + _accelerations_type * accelerations; + uint32_t effort_length; + typedef double _effort_type; + _effort_type st_effort; + _effort_type * effort; + typedef ros::Duration _time_from_start_type; + _time_from_start_type time_from_start; + + JointTrajectoryPoint(): + positions_length(0), positions(NULL), + velocities_length(0), velocities(NULL), + accelerations_length(0), accelerations(NULL), + effort_length(0), effort(NULL), + time_from_start() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->positions_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->positions_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->positions_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->positions_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->positions_length); + for( uint32_t i = 0; i < positions_length; i++){ + union { + double real; + uint64_t base; + } u_positionsi; + u_positionsi.real = this->positions[i]; + *(outbuffer + offset + 0) = (u_positionsi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_positionsi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_positionsi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_positionsi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_positionsi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_positionsi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_positionsi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_positionsi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->positions[i]); + } + *(outbuffer + offset + 0) = (this->velocities_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->velocities_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->velocities_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->velocities_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->velocities_length); + for( uint32_t i = 0; i < velocities_length; i++){ + union { + double real; + uint64_t base; + } u_velocitiesi; + u_velocitiesi.real = this->velocities[i]; + *(outbuffer + offset + 0) = (u_velocitiesi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_velocitiesi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_velocitiesi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_velocitiesi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_velocitiesi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_velocitiesi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_velocitiesi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_velocitiesi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->velocities[i]); + } + *(outbuffer + offset + 0) = (this->accelerations_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->accelerations_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->accelerations_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->accelerations_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->accelerations_length); + for( uint32_t i = 0; i < accelerations_length; i++){ + union { + double real; + uint64_t base; + } u_accelerationsi; + u_accelerationsi.real = this->accelerations[i]; + *(outbuffer + offset + 0) = (u_accelerationsi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_accelerationsi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_accelerationsi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_accelerationsi.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_accelerationsi.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_accelerationsi.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_accelerationsi.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_accelerationsi.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->accelerations[i]); + } + *(outbuffer + offset + 0) = (this->effort_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->effort_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->effort_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->effort_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->effort_length); + for( uint32_t i = 0; i < effort_length; i++){ + union { + double real; + uint64_t base; + } u_efforti; + u_efforti.real = this->effort[i]; + *(outbuffer + offset + 0) = (u_efforti.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_efforti.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_efforti.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_efforti.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_efforti.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_efforti.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_efforti.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_efforti.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->effort[i]); + } + *(outbuffer + offset + 0) = (this->time_from_start.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->time_from_start.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->time_from_start.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->time_from_start.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->time_from_start.sec); + *(outbuffer + offset + 0) = (this->time_from_start.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->time_from_start.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->time_from_start.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->time_from_start.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->time_from_start.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t positions_lengthT = ((uint32_t) (*(inbuffer + offset))); + positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->positions_length); + if(positions_lengthT > positions_length) + this->positions = (double*)realloc(this->positions, positions_lengthT * sizeof(double)); + positions_length = positions_lengthT; + for( uint32_t i = 0; i < positions_length; i++){ + union { + double real; + uint64_t base; + } u_st_positions; + u_st_positions.base = 0; + u_st_positions.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_positions.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_positions.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_positions.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_positions.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_positions.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_positions.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_positions.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_positions = u_st_positions.real; + offset += sizeof(this->st_positions); + memcpy( &(this->positions[i]), &(this->st_positions), sizeof(double)); + } + uint32_t velocities_lengthT = ((uint32_t) (*(inbuffer + offset))); + velocities_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + velocities_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + velocities_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->velocities_length); + if(velocities_lengthT > velocities_length) + this->velocities = (double*)realloc(this->velocities, velocities_lengthT * sizeof(double)); + velocities_length = velocities_lengthT; + for( uint32_t i = 0; i < velocities_length; i++){ + union { + double real; + uint64_t base; + } u_st_velocities; + u_st_velocities.base = 0; + u_st_velocities.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_velocities.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_velocities.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_velocities.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_velocities.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_velocities.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_velocities.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_velocities.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_velocities = u_st_velocities.real; + offset += sizeof(this->st_velocities); + memcpy( &(this->velocities[i]), &(this->st_velocities), sizeof(double)); + } + uint32_t accelerations_lengthT = ((uint32_t) (*(inbuffer + offset))); + accelerations_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + accelerations_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + accelerations_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->accelerations_length); + if(accelerations_lengthT > accelerations_length) + this->accelerations = (double*)realloc(this->accelerations, accelerations_lengthT * sizeof(double)); + accelerations_length = accelerations_lengthT; + for( uint32_t i = 0; i < accelerations_length; i++){ + union { + double real; + uint64_t base; + } u_st_accelerations; + u_st_accelerations.base = 0; + u_st_accelerations.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_accelerations.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_accelerations.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_accelerations.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_accelerations.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_accelerations.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_accelerations.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_accelerations.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_accelerations = u_st_accelerations.real; + offset += sizeof(this->st_accelerations); + memcpy( &(this->accelerations[i]), &(this->st_accelerations), sizeof(double)); + } + uint32_t effort_lengthT = ((uint32_t) (*(inbuffer + offset))); + effort_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + effort_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + effort_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->effort_length); + if(effort_lengthT > effort_length) + this->effort = (double*)realloc(this->effort, effort_lengthT * sizeof(double)); + effort_length = effort_lengthT; + for( uint32_t i = 0; i < effort_length; i++){ + union { + double real; + uint64_t base; + } u_st_effort; + u_st_effort.base = 0; + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_st_effort.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->st_effort = u_st_effort.real; + offset += sizeof(this->st_effort); + memcpy( &(this->effort[i]), &(this->st_effort), sizeof(double)); + } + this->time_from_start.sec = ((uint32_t) (*(inbuffer + offset))); + this->time_from_start.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->time_from_start.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->time_from_start.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->time_from_start.sec); + this->time_from_start.nsec = ((uint32_t) (*(inbuffer + offset))); + this->time_from_start.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->time_from_start.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->time_from_start.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->time_from_start.nsec); + return offset; + } + + const char * getType(){ return "trajectory_msgs/JointTrajectoryPoint"; }; + const char * getMD5(){ return "f3cd1e1c4d320c79d6985c904ae5dcd3"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/trajectory_msgs/MultiDOFJointTrajectory.h b/source/ros-max-lib/ros_lib/trajectory_msgs/MultiDOFJointTrajectory.h new file mode 100644 index 0000000..2ab653c --- /dev/null +++ b/source/ros-max-lib/ros_lib/trajectory_msgs/MultiDOFJointTrajectory.h @@ -0,0 +1,107 @@ +#ifndef _ROS_trajectory_msgs_MultiDOFJointTrajectory_h +#define _ROS_trajectory_msgs_MultiDOFJointTrajectory_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "trajectory_msgs/MultiDOFJointTrajectoryPoint.h" + +namespace trajectory_msgs +{ + + class MultiDOFJointTrajectory : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + uint32_t joint_names_length; + typedef char* _joint_names_type; + _joint_names_type st_joint_names; + _joint_names_type * joint_names; + uint32_t points_length; + typedef trajectory_msgs::MultiDOFJointTrajectoryPoint _points_type; + _points_type st_points; + _points_type * points; + + MultiDOFJointTrajectory(): + header(), + joint_names_length(0), joint_names(NULL), + points_length(0), points(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->joint_names_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->joint_names_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->joint_names_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->joint_names_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->joint_names_length); + for( uint32_t i = 0; i < joint_names_length; i++){ + uint32_t length_joint_namesi = strlen(this->joint_names[i]); + varToArr(outbuffer + offset, length_joint_namesi); + offset += 4; + memcpy(outbuffer + offset, this->joint_names[i], length_joint_namesi); + offset += length_joint_namesi; + } + *(outbuffer + offset + 0) = (this->points_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->points_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->points_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->points_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->points_length); + for( uint32_t i = 0; i < points_length; i++){ + offset += this->points[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t joint_names_lengthT = ((uint32_t) (*(inbuffer + offset))); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->joint_names_length); + if(joint_names_lengthT > joint_names_length) + this->joint_names = (char**)realloc(this->joint_names, joint_names_lengthT * sizeof(char*)); + joint_names_length = joint_names_lengthT; + for( uint32_t i = 0; i < joint_names_length; i++){ + uint32_t length_st_joint_names; + arrToVar(length_st_joint_names, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_joint_names; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_joint_names-1]=0; + this->st_joint_names = (char *)(inbuffer + offset-1); + offset += length_st_joint_names; + memcpy( &(this->joint_names[i]), &(this->st_joint_names), sizeof(char*)); + } + uint32_t points_lengthT = ((uint32_t) (*(inbuffer + offset))); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->points_length); + if(points_lengthT > points_length) + this->points = (trajectory_msgs::MultiDOFJointTrajectoryPoint*)realloc(this->points, points_lengthT * sizeof(trajectory_msgs::MultiDOFJointTrajectoryPoint)); + points_length = points_lengthT; + for( uint32_t i = 0; i < points_length; i++){ + offset += this->st_points.deserialize(inbuffer + offset); + memcpy( &(this->points[i]), &(this->st_points), sizeof(trajectory_msgs::MultiDOFJointTrajectoryPoint)); + } + return offset; + } + + const char * getType(){ return "trajectory_msgs/MultiDOFJointTrajectory"; }; + const char * getMD5(){ return "ef145a45a5f47b77b7f5cdde4b16c942"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/trajectory_msgs/MultiDOFJointTrajectoryPoint.h b/source/ros-max-lib/ros_lib/trajectory_msgs/MultiDOFJointTrajectoryPoint.h new file mode 100644 index 0000000..88b4564 --- /dev/null +++ b/source/ros-max-lib/ros_lib/trajectory_msgs/MultiDOFJointTrajectoryPoint.h @@ -0,0 +1,139 @@ +#ifndef _ROS_trajectory_msgs_MultiDOFJointTrajectoryPoint_h +#define _ROS_trajectory_msgs_MultiDOFJointTrajectoryPoint_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Transform.h" +#include "geometry_msgs/Twist.h" +#include "ros/duration.h" + +namespace trajectory_msgs +{ + + class MultiDOFJointTrajectoryPoint : public ros::Msg + { + public: + uint32_t transforms_length; + typedef geometry_msgs::Transform _transforms_type; + _transforms_type st_transforms; + _transforms_type * transforms; + uint32_t velocities_length; + typedef geometry_msgs::Twist _velocities_type; + _velocities_type st_velocities; + _velocities_type * velocities; + uint32_t accelerations_length; + typedef geometry_msgs::Twist _accelerations_type; + _accelerations_type st_accelerations; + _accelerations_type * accelerations; + typedef ros::Duration _time_from_start_type; + _time_from_start_type time_from_start; + + MultiDOFJointTrajectoryPoint(): + transforms_length(0), transforms(NULL), + velocities_length(0), velocities(NULL), + accelerations_length(0), accelerations(NULL), + time_from_start() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->transforms_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->transforms_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->transforms_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->transforms_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->transforms_length); + for( uint32_t i = 0; i < transforms_length; i++){ + offset += this->transforms[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->velocities_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->velocities_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->velocities_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->velocities_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->velocities_length); + for( uint32_t i = 0; i < velocities_length; i++){ + offset += this->velocities[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->accelerations_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->accelerations_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->accelerations_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->accelerations_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->accelerations_length); + for( uint32_t i = 0; i < accelerations_length; i++){ + offset += this->accelerations[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->time_from_start.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->time_from_start.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->time_from_start.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->time_from_start.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->time_from_start.sec); + *(outbuffer + offset + 0) = (this->time_from_start.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->time_from_start.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->time_from_start.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->time_from_start.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->time_from_start.nsec); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t transforms_lengthT = ((uint32_t) (*(inbuffer + offset))); + transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->transforms_length); + if(transforms_lengthT > transforms_length) + this->transforms = (geometry_msgs::Transform*)realloc(this->transforms, transforms_lengthT * sizeof(geometry_msgs::Transform)); + transforms_length = transforms_lengthT; + for( uint32_t i = 0; i < transforms_length; i++){ + offset += this->st_transforms.deserialize(inbuffer + offset); + memcpy( &(this->transforms[i]), &(this->st_transforms), sizeof(geometry_msgs::Transform)); + } + uint32_t velocities_lengthT = ((uint32_t) (*(inbuffer + offset))); + velocities_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + velocities_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + velocities_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->velocities_length); + if(velocities_lengthT > velocities_length) + this->velocities = (geometry_msgs::Twist*)realloc(this->velocities, velocities_lengthT * sizeof(geometry_msgs::Twist)); + velocities_length = velocities_lengthT; + for( uint32_t i = 0; i < velocities_length; i++){ + offset += this->st_velocities.deserialize(inbuffer + offset); + memcpy( &(this->velocities[i]), &(this->st_velocities), sizeof(geometry_msgs::Twist)); + } + uint32_t accelerations_lengthT = ((uint32_t) (*(inbuffer + offset))); + accelerations_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + accelerations_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + accelerations_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->accelerations_length); + if(accelerations_lengthT > accelerations_length) + this->accelerations = (geometry_msgs::Twist*)realloc(this->accelerations, accelerations_lengthT * sizeof(geometry_msgs::Twist)); + accelerations_length = accelerations_lengthT; + for( uint32_t i = 0; i < accelerations_length; i++){ + offset += this->st_accelerations.deserialize(inbuffer + offset); + memcpy( &(this->accelerations[i]), &(this->st_accelerations), sizeof(geometry_msgs::Twist)); + } + this->time_from_start.sec = ((uint32_t) (*(inbuffer + offset))); + this->time_from_start.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->time_from_start.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->time_from_start.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->time_from_start.sec); + this->time_from_start.nsec = ((uint32_t) (*(inbuffer + offset))); + this->time_from_start.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->time_from_start.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->time_from_start.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->time_from_start.nsec); + return offset; + } + + const char * getType(){ return "trajectory_msgs/MultiDOFJointTrajectoryPoint"; }; + const char * getMD5(){ return "3ebe08d1abd5b65862d50e09430db776"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/turtle_actionlib/ShapeAction.h b/source/ros-max-lib/ros_lib/turtle_actionlib/ShapeAction.h new file mode 100644 index 0000000..f100e9a --- /dev/null +++ b/source/ros-max-lib/ros_lib/turtle_actionlib/ShapeAction.h @@ -0,0 +1,56 @@ +#ifndef _ROS_turtle_actionlib_ShapeAction_h +#define _ROS_turtle_actionlib_ShapeAction_h + +#include +#include +#include +#include "ros/msg.h" +#include "turtle_actionlib/ShapeActionGoal.h" +#include "turtle_actionlib/ShapeActionResult.h" +#include "turtle_actionlib/ShapeActionFeedback.h" + +namespace turtle_actionlib +{ + + class ShapeAction : public ros::Msg + { + public: + typedef turtle_actionlib::ShapeActionGoal _action_goal_type; + _action_goal_type action_goal; + typedef turtle_actionlib::ShapeActionResult _action_result_type; + _action_result_type action_result; + typedef turtle_actionlib::ShapeActionFeedback _action_feedback_type; + _action_feedback_type action_feedback; + + ShapeAction(): + action_goal(), + action_result(), + action_feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->action_goal.serialize(outbuffer + offset); + offset += this->action_result.serialize(outbuffer + offset); + offset += this->action_feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->action_goal.deserialize(inbuffer + offset); + offset += this->action_result.deserialize(inbuffer + offset); + offset += this->action_feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "turtle_actionlib/ShapeAction"; }; + const char * getMD5(){ return "d73b17d6237a925511f5d7727a1dc903"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/turtle_actionlib/ShapeActionFeedback.h b/source/ros-max-lib/ros_lib/turtle_actionlib/ShapeActionFeedback.h new file mode 100644 index 0000000..b57b28c --- /dev/null +++ b/source/ros-max-lib/ros_lib/turtle_actionlib/ShapeActionFeedback.h @@ -0,0 +1,56 @@ +#ifndef _ROS_turtle_actionlib_ShapeActionFeedback_h +#define _ROS_turtle_actionlib_ShapeActionFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "turtle_actionlib/ShapeFeedback.h" + +namespace turtle_actionlib +{ + + class ShapeActionFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef turtle_actionlib::ShapeFeedback _feedback_type; + _feedback_type feedback; + + ShapeActionFeedback(): + header(), + status(), + feedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->feedback.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->feedback.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "turtle_actionlib/ShapeActionFeedback"; }; + const char * getMD5(){ return "aae20e09065c3809e8a8e87c4c8953fd"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/turtle_actionlib/ShapeActionGoal.h b/source/ros-max-lib/ros_lib/turtle_actionlib/ShapeActionGoal.h new file mode 100644 index 0000000..732215e --- /dev/null +++ b/source/ros-max-lib/ros_lib/turtle_actionlib/ShapeActionGoal.h @@ -0,0 +1,56 @@ +#ifndef _ROS_turtle_actionlib_ShapeActionGoal_h +#define _ROS_turtle_actionlib_ShapeActionGoal_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalID.h" +#include "turtle_actionlib/ShapeGoal.h" + +namespace turtle_actionlib +{ + + class ShapeActionGoal : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalID _goal_id_type; + _goal_id_type goal_id; + typedef turtle_actionlib::ShapeGoal _goal_type; + _goal_type goal; + + ShapeActionGoal(): + header(), + goal_id(), + goal() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->goal_id.serialize(outbuffer + offset); + offset += this->goal.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->goal_id.deserialize(inbuffer + offset); + offset += this->goal.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "turtle_actionlib/ShapeActionGoal"; }; + const char * getMD5(){ return "dbfccd187f2ec9c593916447ffd6cc77"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/turtle_actionlib/ShapeActionResult.h b/source/ros-max-lib/ros_lib/turtle_actionlib/ShapeActionResult.h new file mode 100644 index 0000000..b4e4213 --- /dev/null +++ b/source/ros-max-lib/ros_lib/turtle_actionlib/ShapeActionResult.h @@ -0,0 +1,56 @@ +#ifndef _ROS_turtle_actionlib_ShapeActionResult_h +#define _ROS_turtle_actionlib_ShapeActionResult_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "actionlib_msgs/GoalStatus.h" +#include "turtle_actionlib/ShapeResult.h" + +namespace turtle_actionlib +{ + + class ShapeActionResult : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef actionlib_msgs::GoalStatus _status_type; + _status_type status; + typedef turtle_actionlib::ShapeResult _result_type; + _result_type result; + + ShapeActionResult(): + header(), + status(), + result() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->status.serialize(outbuffer + offset); + offset += this->result.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->status.deserialize(inbuffer + offset); + offset += this->result.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "turtle_actionlib/ShapeActionResult"; }; + const char * getMD5(){ return "c8d13d5d140f1047a2e4d3bf5c045822"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/turtle_actionlib/ShapeFeedback.h b/source/ros-max-lib/ros_lib/turtle_actionlib/ShapeFeedback.h new file mode 100644 index 0000000..6c00c07 --- /dev/null +++ b/source/ros-max-lib/ros_lib/turtle_actionlib/ShapeFeedback.h @@ -0,0 +1,38 @@ +#ifndef _ROS_turtle_actionlib_ShapeFeedback_h +#define _ROS_turtle_actionlib_ShapeFeedback_h + +#include +#include +#include +#include "ros/msg.h" + +namespace turtle_actionlib +{ + + class ShapeFeedback : public ros::Msg + { + public: + + ShapeFeedback() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return "turtle_actionlib/ShapeFeedback"; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/turtle_actionlib/ShapeGoal.h b/source/ros-max-lib/ros_lib/turtle_actionlib/ShapeGoal.h new file mode 100644 index 0000000..bb72d11 --- /dev/null +++ b/source/ros-max-lib/ros_lib/turtle_actionlib/ShapeGoal.h @@ -0,0 +1,86 @@ +#ifndef _ROS_turtle_actionlib_ShapeGoal_h +#define _ROS_turtle_actionlib_ShapeGoal_h + +#include +#include +#include +#include "ros/msg.h" + +namespace turtle_actionlib +{ + + class ShapeGoal : public ros::Msg + { + public: + typedef int32_t _edges_type; + _edges_type edges; + typedef float _radius_type; + _radius_type radius; + + ShapeGoal(): + edges(0), + radius(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_edges; + u_edges.real = this->edges; + *(outbuffer + offset + 0) = (u_edges.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_edges.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_edges.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_edges.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->edges); + union { + float real; + uint32_t base; + } u_radius; + u_radius.real = this->radius; + *(outbuffer + offset + 0) = (u_radius.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_radius.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_radius.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_radius.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->radius); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + int32_t real; + uint32_t base; + } u_edges; + u_edges.base = 0; + u_edges.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_edges.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_edges.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_edges.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->edges = u_edges.real; + offset += sizeof(this->edges); + union { + float real; + uint32_t base; + } u_radius; + u_radius.base = 0; + u_radius.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_radius.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_radius.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_radius.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->radius = u_radius.real; + offset += sizeof(this->radius); + return offset; + } + + const char * getType(){ return "turtle_actionlib/ShapeGoal"; }; + const char * getMD5(){ return "3b9202ab7292cebe5a95ab2bf6b9c091"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/turtle_actionlib/ShapeResult.h b/source/ros-max-lib/ros_lib/turtle_actionlib/ShapeResult.h new file mode 100644 index 0000000..2a9127d --- /dev/null +++ b/source/ros-max-lib/ros_lib/turtle_actionlib/ShapeResult.h @@ -0,0 +1,86 @@ +#ifndef _ROS_turtle_actionlib_ShapeResult_h +#define _ROS_turtle_actionlib_ShapeResult_h + +#include +#include +#include +#include "ros/msg.h" + +namespace turtle_actionlib +{ + + class ShapeResult : public ros::Msg + { + public: + typedef float _interior_angle_type; + _interior_angle_type interior_angle; + typedef float _apothem_type; + _apothem_type apothem; + + ShapeResult(): + interior_angle(0), + apothem(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + float real; + uint32_t base; + } u_interior_angle; + u_interior_angle.real = this->interior_angle; + *(outbuffer + offset + 0) = (u_interior_angle.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_interior_angle.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_interior_angle.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_interior_angle.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->interior_angle); + union { + float real; + uint32_t base; + } u_apothem; + u_apothem.real = this->apothem; + *(outbuffer + offset + 0) = (u_apothem.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_apothem.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_apothem.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_apothem.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->apothem); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + float real; + uint32_t base; + } u_interior_angle; + u_interior_angle.base = 0; + u_interior_angle.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_interior_angle.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_interior_angle.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_interior_angle.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->interior_angle = u_interior_angle.real; + offset += sizeof(this->interior_angle); + union { + float real; + uint32_t base; + } u_apothem; + u_apothem.base = 0; + u_apothem.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_apothem.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_apothem.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_apothem.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->apothem = u_apothem.real; + offset += sizeof(this->apothem); + return offset; + } + + const char * getType(){ return "turtle_actionlib/ShapeResult"; }; + const char * getMD5(){ return "b06c6e2225f820dbc644270387cd1a7c"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/turtle_actionlib/Velocity.h b/source/ros-max-lib/ros_lib/turtle_actionlib/Velocity.h new file mode 100644 index 0000000..ab7141e --- /dev/null +++ b/source/ros-max-lib/ros_lib/turtle_actionlib/Velocity.h @@ -0,0 +1,86 @@ +#ifndef _ROS_turtle_actionlib_Velocity_h +#define _ROS_turtle_actionlib_Velocity_h + +#include +#include +#include +#include "ros/msg.h" + +namespace turtle_actionlib +{ + + class Velocity : public ros::Msg + { + public: + typedef float _linear_type; + _linear_type linear; + typedef float _angular_type; + _angular_type angular; + + Velocity(): + linear(0), + angular(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + float real; + uint32_t base; + } u_linear; + u_linear.real = this->linear; + *(outbuffer + offset + 0) = (u_linear.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_linear.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_linear.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_linear.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->linear); + union { + float real; + uint32_t base; + } u_angular; + u_angular.real = this->angular; + *(outbuffer + offset + 0) = (u_angular.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_angular.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_angular.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_angular.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->angular); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + float real; + uint32_t base; + } u_linear; + u_linear.base = 0; + u_linear.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_linear.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_linear.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_linear.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->linear = u_linear.real; + offset += sizeof(this->linear); + union { + float real; + uint32_t base; + } u_angular; + u_angular.base = 0; + u_angular.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_angular.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_angular.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_angular.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->angular = u_angular.real; + offset += sizeof(this->angular); + return offset; + } + + const char * getType(){ return "turtle_actionlib/Velocity"; }; + const char * getMD5(){ return "9d5c2dcd348ac8f76ce2a4307bd63a13"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/turtlebot3_msgs/MotorPower.h b/source/ros-max-lib/ros_lib/turtlebot3_msgs/MotorPower.h new file mode 100644 index 0000000..a22dc41 --- /dev/null +++ b/source/ros-max-lib/ros_lib/turtlebot3_msgs/MotorPower.h @@ -0,0 +1,47 @@ +#ifndef _ROS_turtlebot3_msgs_MotorPower_h +#define _ROS_turtlebot3_msgs_MotorPower_h + +#include +#include +#include +#include "ros/msg.h" + +namespace turtlebot3_msgs +{ + + class MotorPower : public ros::Msg + { + public: + typedef uint8_t _state_type; + _state_type state; + enum { OFF = 0 }; + enum { ON = 1 }; + + MotorPower(): + state(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->state >> (8 * 0)) & 0xFF; + offset += sizeof(this->state); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->state = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->state); + return offset; + } + + const char * getType(){ return "turtlebot3_msgs/MotorPower"; }; + const char * getMD5(){ return "8f77c0161e0f2021493136bb5f3f0e51"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/turtlebot3_msgs/PanoramaImg.h b/source/ros-max-lib/ros_lib/turtlebot3_msgs/PanoramaImg.h new file mode 100644 index 0000000..7d29869 --- /dev/null +++ b/source/ros-max-lib/ros_lib/turtlebot3_msgs/PanoramaImg.h @@ -0,0 +1,180 @@ +#ifndef _ROS_turtlebot3_msgs_PanoramaImg_h +#define _ROS_turtlebot3_msgs_PanoramaImg_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "sensor_msgs/Image.h" + +namespace turtlebot3_msgs +{ + + class PanoramaImg : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef const char* _pano_id_type; + _pano_id_type pano_id; + typedef double _latitude_type; + _latitude_type latitude; + typedef double _longitude_type; + _longitude_type longitude; + typedef double _heading_type; + _heading_type heading; + typedef const char* _geo_tag_type; + _geo_tag_type geo_tag; + typedef sensor_msgs::Image _image_type; + _image_type image; + + PanoramaImg(): + header(), + pano_id(""), + latitude(0), + longitude(0), + heading(0), + geo_tag(""), + image() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + uint32_t length_pano_id = strlen(this->pano_id); + varToArr(outbuffer + offset, length_pano_id); + offset += 4; + memcpy(outbuffer + offset, this->pano_id, length_pano_id); + offset += length_pano_id; + union { + double real; + uint64_t base; + } u_latitude; + u_latitude.real = this->latitude; + *(outbuffer + offset + 0) = (u_latitude.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_latitude.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_latitude.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_latitude.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_latitude.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_latitude.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_latitude.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_latitude.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->latitude); + union { + double real; + uint64_t base; + } u_longitude; + u_longitude.real = this->longitude; + *(outbuffer + offset + 0) = (u_longitude.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_longitude.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_longitude.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_longitude.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_longitude.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_longitude.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_longitude.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_longitude.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->longitude); + union { + double real; + uint64_t base; + } u_heading; + u_heading.real = this->heading; + *(outbuffer + offset + 0) = (u_heading.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_heading.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_heading.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_heading.base >> (8 * 3)) & 0xFF; + *(outbuffer + offset + 4) = (u_heading.base >> (8 * 4)) & 0xFF; + *(outbuffer + offset + 5) = (u_heading.base >> (8 * 5)) & 0xFF; + *(outbuffer + offset + 6) = (u_heading.base >> (8 * 6)) & 0xFF; + *(outbuffer + offset + 7) = (u_heading.base >> (8 * 7)) & 0xFF; + offset += sizeof(this->heading); + uint32_t length_geo_tag = strlen(this->geo_tag); + varToArr(outbuffer + offset, length_geo_tag); + offset += 4; + memcpy(outbuffer + offset, this->geo_tag, length_geo_tag); + offset += length_geo_tag; + offset += this->image.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t length_pano_id; + arrToVar(length_pano_id, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_pano_id; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_pano_id-1]=0; + this->pano_id = (char *)(inbuffer + offset-1); + offset += length_pano_id; + union { + double real; + uint64_t base; + } u_latitude; + u_latitude.base = 0; + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_latitude.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->latitude = u_latitude.real; + offset += sizeof(this->latitude); + union { + double real; + uint64_t base; + } u_longitude; + u_longitude.base = 0; + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_longitude.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->longitude = u_longitude.real; + offset += sizeof(this->longitude); + union { + double real; + uint64_t base; + } u_heading; + u_heading.base = 0; + u_heading.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_heading.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_heading.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_heading.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3); + u_heading.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4); + u_heading.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5); + u_heading.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6); + u_heading.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7); + this->heading = u_heading.real; + offset += sizeof(this->heading); + uint32_t length_geo_tag; + arrToVar(length_geo_tag, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_geo_tag; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_geo_tag-1]=0; + this->geo_tag = (char *)(inbuffer + offset-1); + offset += length_geo_tag; + offset += this->image.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "turtlebot3_msgs/PanoramaImg"; }; + const char * getMD5(){ return "aedf66295b374a7249a786af27aecc87"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/turtlebot3_msgs/SensorState.h b/source/ros-max-lib/ros_lib/turtlebot3_msgs/SensorState.h new file mode 100644 index 0000000..34b624a --- /dev/null +++ b/source/ros-max-lib/ros_lib/turtlebot3_msgs/SensorState.h @@ -0,0 +1,166 @@ +#ifndef _ROS_turtlebot3_msgs_SensorState_h +#define _ROS_turtlebot3_msgs_SensorState_h + +#include +#include +#include +#include "../ros/msg.h" +#include "../ros/time.h" + +namespace turtlebot3_msgs +{ + + class SensorState : public ros::Msg + { + public: + typedef ros::Time _stamp_type; + _stamp_type stamp; + typedef uint8_t _bumper_type; + _bumper_type bumper; + typedef uint8_t _cliff_type; + _cliff_type cliff; + typedef uint8_t _button_type; + _button_type button; + typedef int32_t _left_encoder_type; + _left_encoder_type left_encoder; + typedef int32_t _right_encoder_type; + _right_encoder_type right_encoder; + typedef float _battery_type; + _battery_type battery; + enum { BUMPER_RIGHT = 1 }; + enum { BUMPER_CENTER = 2 }; + enum { BUMPER_LEFT = 4 }; + enum { CLIFF_RIGHT = 1 }; + enum { CLIFF_CENTER = 2 }; + enum { CLIFF_LEFT = 4 }; + enum { BUTTON0 = 1 }; + enum { BUTTON1 = 2 }; + enum { BUTTON2 = 4 }; + enum { ERROR_LEFT_MOTOR = 1 }; + enum { ERROR_RIGHT_MOTOR = 2 }; + + SensorState(): + stamp(), + bumper(0), + cliff(0), + button(0), + left_encoder(0), + right_encoder(0), + battery(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->stamp.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp.sec); + *(outbuffer + offset + 0) = (this->stamp.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->stamp.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->stamp.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->stamp.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->stamp.nsec); + *(outbuffer + offset + 0) = (this->bumper >> (8 * 0)) & 0xFF; + offset += sizeof(this->bumper); + *(outbuffer + offset + 0) = (this->cliff >> (8 * 0)) & 0xFF; + offset += sizeof(this->cliff); + *(outbuffer + offset + 0) = (this->button >> (8 * 0)) & 0xFF; + offset += sizeof(this->button); + union { + int32_t real; + uint32_t base; + } u_left_encoder; + u_left_encoder.real = this->left_encoder; + *(outbuffer + offset + 0) = (u_left_encoder.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_left_encoder.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_left_encoder.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_left_encoder.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->left_encoder); + union { + int32_t real; + uint32_t base; + } u_right_encoder; + u_right_encoder.real = this->right_encoder; + *(outbuffer + offset + 0) = (u_right_encoder.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_right_encoder.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_right_encoder.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_right_encoder.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->right_encoder); + union { + float real; + uint32_t base; + } u_battery; + u_battery.real = this->battery; + *(outbuffer + offset + 0) = (u_battery.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_battery.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_battery.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_battery.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->battery); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->stamp.sec = ((uint32_t) (*(inbuffer + offset))); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp.sec); + this->stamp.nsec = ((uint32_t) (*(inbuffer + offset))); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->stamp.nsec); + this->bumper = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->bumper); + this->cliff = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->cliff); + this->button = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->button); + union { + int32_t real; + uint32_t base; + } u_left_encoder; + u_left_encoder.base = 0; + u_left_encoder.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_left_encoder.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_left_encoder.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_left_encoder.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->left_encoder = u_left_encoder.real; + offset += sizeof(this->left_encoder); + union { + int32_t real; + uint32_t base; + } u_right_encoder; + u_right_encoder.base = 0; + u_right_encoder.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_right_encoder.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_right_encoder.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_right_encoder.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->right_encoder = u_right_encoder.real; + offset += sizeof(this->right_encoder); + union { + float real; + uint32_t base; + } u_battery; + u_battery.base = 0; + u_battery.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_battery.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_battery.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_battery.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->battery = u_battery.real; + offset += sizeof(this->battery); + return offset; + } + + const char * getType(){ return "turtlebot3_msgs/SensorState"; }; + const char * getMD5(){ return "427f77f85da38bc1aa3f65ffb673c94c"; }; + + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/turtlebot3_msgs/SetFollowState.h b/source/ros-max-lib/ros_lib/turtlebot3_msgs/SetFollowState.h new file mode 100644 index 0000000..cb16e5c --- /dev/null +++ b/source/ros-max-lib/ros_lib/turtlebot3_msgs/SetFollowState.h @@ -0,0 +1,88 @@ +#ifndef _ROS_SERVICE_SetFollowState_h +#define _ROS_SERVICE_SetFollowState_h +#include +#include +#include +#include "ros/msg.h" + +namespace turtlebot3_msgs +{ + +static const char SETFOLLOWSTATE[] = "turtlebot3_msgs/SetFollowState"; + + class SetFollowStateRequest : public ros::Msg + { + public: + typedef uint8_t _state_type; + _state_type state; + enum { STOPPED = 0 }; + enum { FOLLOW = 1 }; + + SetFollowStateRequest(): + state(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->state >> (8 * 0)) & 0xFF; + offset += sizeof(this->state); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->state = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->state); + return offset; + } + + const char * getType(){ return SETFOLLOWSTATE; }; + const char * getMD5(){ return "92b912c48c68248015bb32deb0bf7713"; }; + + }; + + class SetFollowStateResponse : public ros::Msg + { + public: + typedef uint8_t _result_type; + _result_type result; + enum { OK = 0 }; + enum { ERROR = 1 }; + + SetFollowStateResponse(): + result(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->result >> (8 * 0)) & 0xFF; + offset += sizeof(this->result); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->result = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->result); + return offset; + } + + const char * getType(){ return SETFOLLOWSTATE; }; + const char * getMD5(){ return "37065417175a2f4a49100bc798e5ee49"; }; + + }; + + class SetFollowState { + public: + typedef SetFollowStateRequest Request; + typedef SetFollowStateResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/turtlebot3_msgs/TakePanorama.h b/source/ros-max-lib/ros_lib/turtlebot3_msgs/TakePanorama.h new file mode 100644 index 0000000..4adde37 --- /dev/null +++ b/source/ros-max-lib/ros_lib/turtlebot3_msgs/TakePanorama.h @@ -0,0 +1,162 @@ +#ifndef _ROS_SERVICE_TakePanorama_h +#define _ROS_SERVICE_TakePanorama_h +#include +#include +#include +#include "ros/msg.h" + +namespace turtlebot3_msgs +{ + +static const char TAKEPANORAMA[] = "turtlebot3_msgs/TakePanorama"; + + class TakePanoramaRequest : public ros::Msg + { + public: + typedef uint8_t _mode_type; + _mode_type mode; + typedef float _pano_angle_type; + _pano_angle_type pano_angle; + typedef float _snap_interval_type; + _snap_interval_type snap_interval; + typedef float _rot_vel_type; + _rot_vel_type rot_vel; + enum { SNAPANDROTATE = 0 }; + enum { CONTINUOUS = 1 }; + enum { STOP = 2 }; + + TakePanoramaRequest(): + mode(0), + pano_angle(0), + snap_interval(0), + rot_vel(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->mode >> (8 * 0)) & 0xFF; + offset += sizeof(this->mode); + union { + float real; + uint32_t base; + } u_pano_angle; + u_pano_angle.real = this->pano_angle; + *(outbuffer + offset + 0) = (u_pano_angle.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_pano_angle.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_pano_angle.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_pano_angle.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->pano_angle); + union { + float real; + uint32_t base; + } u_snap_interval; + u_snap_interval.real = this->snap_interval; + *(outbuffer + offset + 0) = (u_snap_interval.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_snap_interval.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_snap_interval.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_snap_interval.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->snap_interval); + union { + float real; + uint32_t base; + } u_rot_vel; + u_rot_vel.real = this->rot_vel; + *(outbuffer + offset + 0) = (u_rot_vel.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_rot_vel.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_rot_vel.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_rot_vel.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->rot_vel); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->mode = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->mode); + union { + float real; + uint32_t base; + } u_pano_angle; + u_pano_angle.base = 0; + u_pano_angle.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_pano_angle.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_pano_angle.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_pano_angle.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->pano_angle = u_pano_angle.real; + offset += sizeof(this->pano_angle); + union { + float real; + uint32_t base; + } u_snap_interval; + u_snap_interval.base = 0; + u_snap_interval.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_snap_interval.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_snap_interval.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_snap_interval.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->snap_interval = u_snap_interval.real; + offset += sizeof(this->snap_interval); + union { + float real; + uint32_t base; + } u_rot_vel; + u_rot_vel.base = 0; + u_rot_vel.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_rot_vel.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_rot_vel.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_rot_vel.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->rot_vel = u_rot_vel.real; + offset += sizeof(this->rot_vel); + return offset; + } + + const char * getType(){ return TAKEPANORAMA; }; + const char * getMD5(){ return "f52c694c82704221735cc576c7587ecc"; }; + + }; + + class TakePanoramaResponse : public ros::Msg + { + public: + typedef uint8_t _status_type; + _status_type status; + enum { STARTED = 0 }; + enum { IN_PROGRESS = 1 }; + enum { STOPPED = 2 }; + + TakePanoramaResponse(): + status(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->status >> (8 * 0)) & 0xFF; + offset += sizeof(this->status); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->status = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->status); + return offset; + } + + const char * getType(){ return TAKEPANORAMA; }; + const char * getMD5(){ return "1ebe3e03b034aa9578d367d7cf6ed627"; }; + + }; + + class TakePanorama { + public: + typedef TakePanoramaRequest Request; + typedef TakePanoramaResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/turtlebot3_msgs/VersionInfo.h b/source/ros-max-lib/ros_lib/turtlebot3_msgs/VersionInfo.h new file mode 100644 index 0000000..3d81b30 --- /dev/null +++ b/source/ros-max-lib/ros_lib/turtlebot3_msgs/VersionInfo.h @@ -0,0 +1,89 @@ +#ifndef _ROS_turtlebot3_msgs_VersionInfo_h +#define _ROS_turtlebot3_msgs_VersionInfo_h + +#include +#include +#include +#include "ros/msg.h" + +namespace turtlebot3_msgs +{ + + class VersionInfo : public ros::Msg + { + public: + typedef const char* _hardware_type; + _hardware_type hardware; + typedef const char* _firmware_type; + _firmware_type firmware; + typedef const char* _software_type; + _software_type software; + + VersionInfo(): + hardware(""), + firmware(""), + software("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_hardware = strlen(this->hardware); + varToArr(outbuffer + offset, length_hardware); + offset += 4; + memcpy(outbuffer + offset, this->hardware, length_hardware); + offset += length_hardware; + uint32_t length_firmware = strlen(this->firmware); + varToArr(outbuffer + offset, length_firmware); + offset += 4; + memcpy(outbuffer + offset, this->firmware, length_firmware); + offset += length_firmware; + uint32_t length_software = strlen(this->software); + varToArr(outbuffer + offset, length_software); + offset += 4; + memcpy(outbuffer + offset, this->software, length_software); + offset += length_software; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_hardware; + arrToVar(length_hardware, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_hardware; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_hardware-1]=0; + this->hardware = (char *)(inbuffer + offset-1); + offset += length_hardware; + uint32_t length_firmware; + arrToVar(length_firmware, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_firmware; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_firmware-1]=0; + this->firmware = (char *)(inbuffer + offset-1); + offset += length_firmware; + uint32_t length_software; + arrToVar(length_software, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_software; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_software-1]=0; + this->software = (char *)(inbuffer + offset-1); + offset += length_software; + return offset; + } + + const char * getType(){ return "turtlebot3_msgs/VersionInfo"; }; + const char * getMD5(){ return "43e0361461af2970a33107409403ef3c"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/turtlesim/Color.h b/source/ros-max-lib/ros_lib/turtlesim/Color.h new file mode 100644 index 0000000..de80290 --- /dev/null +++ b/source/ros-max-lib/ros_lib/turtlesim/Color.h @@ -0,0 +1,59 @@ +#ifndef _ROS_turtlesim_Color_h +#define _ROS_turtlesim_Color_h + +#include +#include +#include +#include "ros/msg.h" + +namespace turtlesim +{ + + class Color : public ros::Msg + { + public: + typedef uint8_t _r_type; + _r_type r; + typedef uint8_t _g_type; + _g_type g; + typedef uint8_t _b_type; + _b_type b; + + Color(): + r(0), + g(0), + b(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->r >> (8 * 0)) & 0xFF; + offset += sizeof(this->r); + *(outbuffer + offset + 0) = (this->g >> (8 * 0)) & 0xFF; + offset += sizeof(this->g); + *(outbuffer + offset + 0) = (this->b >> (8 * 0)) & 0xFF; + offset += sizeof(this->b); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->r = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->r); + this->g = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->g); + this->b = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->b); + return offset; + } + + const char * getType(){ return "turtlesim/Color"; }; + const char * getMD5(){ return "353891e354491c51aabe32df673fb446"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/turtlesim/Kill.h b/source/ros-max-lib/ros_lib/turtlesim/Kill.h new file mode 100644 index 0000000..086f2bb --- /dev/null +++ b/source/ros-max-lib/ros_lib/turtlesim/Kill.h @@ -0,0 +1,87 @@ +#ifndef _ROS_SERVICE_Kill_h +#define _ROS_SERVICE_Kill_h +#include +#include +#include +#include "ros/msg.h" + +namespace turtlesim +{ + +static const char KILL[] = "turtlesim/Kill"; + + class KillRequest : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + + KillRequest(): + name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + return offset; + } + + const char * getType(){ return KILL; }; + const char * getMD5(){ return "c1f3d28f1b044c871e6eff2e9fc3c667"; }; + + }; + + class KillResponse : public ros::Msg + { + public: + + KillResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return KILL; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class Kill { + public: + typedef KillRequest Request; + typedef KillResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/turtlesim/Pose.h b/source/ros-max-lib/ros_lib/turtlesim/Pose.h new file mode 100644 index 0000000..7dede41 --- /dev/null +++ b/source/ros-max-lib/ros_lib/turtlesim/Pose.h @@ -0,0 +1,158 @@ +#ifndef _ROS_turtlesim_Pose_h +#define _ROS_turtlesim_Pose_h + +#include +#include +#include +#include "ros/msg.h" + +namespace turtlesim +{ + + class Pose : public ros::Msg + { + public: + typedef float _x_type; + _x_type x; + typedef float _y_type; + _y_type y; + typedef float _theta_type; + _theta_type theta; + typedef float _linear_velocity_type; + _linear_velocity_type linear_velocity; + typedef float _angular_velocity_type; + _angular_velocity_type angular_velocity; + + Pose(): + x(0), + y(0), + theta(0), + linear_velocity(0), + angular_velocity(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + float real; + uint32_t base; + } u_x; + u_x.real = this->x; + *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->x); + union { + float real; + uint32_t base; + } u_y; + u_y.real = this->y; + *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->y); + union { + float real; + uint32_t base; + } u_theta; + u_theta.real = this->theta; + *(outbuffer + offset + 0) = (u_theta.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_theta.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_theta.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_theta.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->theta); + union { + float real; + uint32_t base; + } u_linear_velocity; + u_linear_velocity.real = this->linear_velocity; + *(outbuffer + offset + 0) = (u_linear_velocity.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_linear_velocity.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_linear_velocity.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_linear_velocity.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->linear_velocity); + union { + float real; + uint32_t base; + } u_angular_velocity; + u_angular_velocity.real = this->angular_velocity; + *(outbuffer + offset + 0) = (u_angular_velocity.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_angular_velocity.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_angular_velocity.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_angular_velocity.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->angular_velocity); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + float real; + uint32_t base; + } u_x; + u_x.base = 0; + u_x.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->x = u_x.real; + offset += sizeof(this->x); + union { + float real; + uint32_t base; + } u_y; + u_y.base = 0; + u_y.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->y = u_y.real; + offset += sizeof(this->y); + union { + float real; + uint32_t base; + } u_theta; + u_theta.base = 0; + u_theta.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_theta.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_theta.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_theta.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->theta = u_theta.real; + offset += sizeof(this->theta); + union { + float real; + uint32_t base; + } u_linear_velocity; + u_linear_velocity.base = 0; + u_linear_velocity.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_linear_velocity.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_linear_velocity.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_linear_velocity.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->linear_velocity = u_linear_velocity.real; + offset += sizeof(this->linear_velocity); + union { + float real; + uint32_t base; + } u_angular_velocity; + u_angular_velocity.base = 0; + u_angular_velocity.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_angular_velocity.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_angular_velocity.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_angular_velocity.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->angular_velocity = u_angular_velocity.real; + offset += sizeof(this->angular_velocity); + return offset; + } + + const char * getType(){ return "turtlesim/Pose"; }; + const char * getMD5(){ return "863b248d5016ca62ea2e895ae5265cf9"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/turtlesim/SetPen.h b/source/ros-max-lib/ros_lib/turtlesim/SetPen.h new file mode 100644 index 0000000..a0e32c0 --- /dev/null +++ b/source/ros-max-lib/ros_lib/turtlesim/SetPen.h @@ -0,0 +1,105 @@ +#ifndef _ROS_SERVICE_SetPen_h +#define _ROS_SERVICE_SetPen_h +#include +#include +#include +#include "ros/msg.h" + +namespace turtlesim +{ + +static const char SETPEN[] = "turtlesim/SetPen"; + + class SetPenRequest : public ros::Msg + { + public: + typedef uint8_t _r_type; + _r_type r; + typedef uint8_t _g_type; + _g_type g; + typedef uint8_t _b_type; + _b_type b; + typedef uint8_t _width_type; + _width_type width; + typedef uint8_t _off_type; + _off_type off; + + SetPenRequest(): + r(0), + g(0), + b(0), + width(0), + off(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->r >> (8 * 0)) & 0xFF; + offset += sizeof(this->r); + *(outbuffer + offset + 0) = (this->g >> (8 * 0)) & 0xFF; + offset += sizeof(this->g); + *(outbuffer + offset + 0) = (this->b >> (8 * 0)) & 0xFF; + offset += sizeof(this->b); + *(outbuffer + offset + 0) = (this->width >> (8 * 0)) & 0xFF; + offset += sizeof(this->width); + *(outbuffer + offset + 0) = (this->off >> (8 * 0)) & 0xFF; + offset += sizeof(this->off); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->r = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->r); + this->g = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->g); + this->b = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->b); + this->width = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->width); + this->off = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->off); + return offset; + } + + const char * getType(){ return SETPEN; }; + const char * getMD5(){ return "9f452acce566bf0c0954594f69a8e41b"; }; + + }; + + class SetPenResponse : public ros::Msg + { + public: + + SetPenResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return SETPEN; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class SetPen { + public: + typedef SetPenRequest Request; + typedef SetPenResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/turtlesim/Spawn.h b/source/ros-max-lib/ros_lib/turtlesim/Spawn.h new file mode 100644 index 0000000..f69b42f --- /dev/null +++ b/source/ros-max-lib/ros_lib/turtlesim/Spawn.h @@ -0,0 +1,176 @@ +#ifndef _ROS_SERVICE_Spawn_h +#define _ROS_SERVICE_Spawn_h +#include +#include +#include +#include "ros/msg.h" + +namespace turtlesim +{ + +static const char SPAWN[] = "turtlesim/Spawn"; + + class SpawnRequest : public ros::Msg + { + public: + typedef float _x_type; + _x_type x; + typedef float _y_type; + _y_type y; + typedef float _theta_type; + _theta_type theta; + typedef const char* _name_type; + _name_type name; + + SpawnRequest(): + x(0), + y(0), + theta(0), + name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + float real; + uint32_t base; + } u_x; + u_x.real = this->x; + *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->x); + union { + float real; + uint32_t base; + } u_y; + u_y.real = this->y; + *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->y); + union { + float real; + uint32_t base; + } u_theta; + u_theta.real = this->theta; + *(outbuffer + offset + 0) = (u_theta.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_theta.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_theta.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_theta.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->theta); + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + float real; + uint32_t base; + } u_x; + u_x.base = 0; + u_x.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->x = u_x.real; + offset += sizeof(this->x); + union { + float real; + uint32_t base; + } u_y; + u_y.base = 0; + u_y.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->y = u_y.real; + offset += sizeof(this->y); + union { + float real; + uint32_t base; + } u_theta; + u_theta.base = 0; + u_theta.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_theta.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_theta.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_theta.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->theta = u_theta.real; + offset += sizeof(this->theta); + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + return offset; + } + + const char * getType(){ return SPAWN; }; + const char * getMD5(){ return "57f001c49ab7b11d699f8606c1f4f7ff"; }; + + }; + + class SpawnResponse : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + + SpawnResponse(): + name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + return offset; + } + + const char * getType(){ return SPAWN; }; + const char * getMD5(){ return "c1f3d28f1b044c871e6eff2e9fc3c667"; }; + + }; + + class Spawn { + public: + typedef SpawnRequest Request; + typedef SpawnResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/turtlesim/TeleportAbsolute.h b/source/ros-max-lib/ros_lib/turtlesim/TeleportAbsolute.h new file mode 100644 index 0000000..c81489b --- /dev/null +++ b/source/ros-max-lib/ros_lib/turtlesim/TeleportAbsolute.h @@ -0,0 +1,142 @@ +#ifndef _ROS_SERVICE_TeleportAbsolute_h +#define _ROS_SERVICE_TeleportAbsolute_h +#include +#include +#include +#include "ros/msg.h" + +namespace turtlesim +{ + +static const char TELEPORTABSOLUTE[] = "turtlesim/TeleportAbsolute"; + + class TeleportAbsoluteRequest : public ros::Msg + { + public: + typedef float _x_type; + _x_type x; + typedef float _y_type; + _y_type y; + typedef float _theta_type; + _theta_type theta; + + TeleportAbsoluteRequest(): + x(0), + y(0), + theta(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + float real; + uint32_t base; + } u_x; + u_x.real = this->x; + *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->x); + union { + float real; + uint32_t base; + } u_y; + u_y.real = this->y; + *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->y); + union { + float real; + uint32_t base; + } u_theta; + u_theta.real = this->theta; + *(outbuffer + offset + 0) = (u_theta.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_theta.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_theta.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_theta.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->theta); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + float real; + uint32_t base; + } u_x; + u_x.base = 0; + u_x.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_x.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->x = u_x.real; + offset += sizeof(this->x); + union { + float real; + uint32_t base; + } u_y; + u_y.base = 0; + u_y.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_y.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->y = u_y.real; + offset += sizeof(this->y); + union { + float real; + uint32_t base; + } u_theta; + u_theta.base = 0; + u_theta.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_theta.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_theta.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_theta.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->theta = u_theta.real; + offset += sizeof(this->theta); + return offset; + } + + const char * getType(){ return TELEPORTABSOLUTE; }; + const char * getMD5(){ return "a130bc60ee6513855dc62ea83fcc5b20"; }; + + }; + + class TeleportAbsoluteResponse : public ros::Msg + { + public: + + TeleportAbsoluteResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return TELEPORTABSOLUTE; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class TeleportAbsolute { + public: + typedef TeleportAbsoluteRequest Request; + typedef TeleportAbsoluteResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/turtlesim/TeleportRelative.h b/source/ros-max-lib/ros_lib/turtlesim/TeleportRelative.h new file mode 100644 index 0000000..2da9668 --- /dev/null +++ b/source/ros-max-lib/ros_lib/turtlesim/TeleportRelative.h @@ -0,0 +1,118 @@ +#ifndef _ROS_SERVICE_TeleportRelative_h +#define _ROS_SERVICE_TeleportRelative_h +#include +#include +#include +#include "ros/msg.h" + +namespace turtlesim +{ + +static const char TELEPORTRELATIVE[] = "turtlesim/TeleportRelative"; + + class TeleportRelativeRequest : public ros::Msg + { + public: + typedef float _linear_type; + _linear_type linear; + typedef float _angular_type; + _angular_type angular; + + TeleportRelativeRequest(): + linear(0), + angular(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + union { + float real; + uint32_t base; + } u_linear; + u_linear.real = this->linear; + *(outbuffer + offset + 0) = (u_linear.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_linear.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_linear.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_linear.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->linear); + union { + float real; + uint32_t base; + } u_angular; + u_angular.real = this->angular; + *(outbuffer + offset + 0) = (u_angular.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_angular.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_angular.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_angular.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->angular); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + union { + float real; + uint32_t base; + } u_linear; + u_linear.base = 0; + u_linear.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_linear.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_linear.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_linear.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->linear = u_linear.real; + offset += sizeof(this->linear); + union { + float real; + uint32_t base; + } u_angular; + u_angular.base = 0; + u_angular.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_angular.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_angular.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_angular.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->angular = u_angular.real; + offset += sizeof(this->angular); + return offset; + } + + const char * getType(){ return TELEPORTRELATIVE; }; + const char * getMD5(){ return "9d5c2dcd348ac8f76ce2a4307bd63a13"; }; + + }; + + class TeleportRelativeResponse : public ros::Msg + { + public: + + TeleportRelativeResponse() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + return offset; + } + + const char * getType(){ return TELEPORTRELATIVE; }; + const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; }; + + }; + + class TeleportRelative { + public: + typedef TeleportRelativeRequest Request; + typedef TeleportRelativeResponse Response; + }; + +} +#endif diff --git a/source/ros-max-lib/ros_lib/uuid_msgs/UniqueID.h b/source/ros-max-lib/ros_lib/uuid_msgs/UniqueID.h new file mode 100644 index 0000000..bf14c40 --- /dev/null +++ b/source/ros-max-lib/ros_lib/uuid_msgs/UniqueID.h @@ -0,0 +1,48 @@ +#ifndef _ROS_uuid_msgs_UniqueID_h +#define _ROS_uuid_msgs_UniqueID_h + +#include +#include +#include +#include "ros/msg.h" + +namespace uuid_msgs +{ + + class UniqueID : public ros::Msg + { + public: + uint8_t uuid[16]; + + UniqueID(): + uuid() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + for( uint32_t i = 0; i < 16; i++){ + *(outbuffer + offset + 0) = (this->uuid[i] >> (8 * 0)) & 0xFF; + offset += sizeof(this->uuid[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + for( uint32_t i = 0; i < 16; i++){ + this->uuid[i] = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->uuid[i]); + } + return offset; + } + + const char * getType(){ return "uuid_msgs/UniqueID"; }; + const char * getMD5(){ return "fec2a93b6f5367ee8112c9c0b41ff310"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/variant_msgs/Test.h b/source/ros-max-lib/ros_lib/variant_msgs/Test.h new file mode 100644 index 0000000..4316dfe --- /dev/null +++ b/source/ros-max-lib/ros_lib/variant_msgs/Test.h @@ -0,0 +1,241 @@ +#ifndef _ROS_variant_msgs_Test_h +#define _ROS_variant_msgs_Test_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "std_msgs/Bool.h" +#include "std_msgs/String.h" + +namespace variant_msgs +{ + + class Test : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef int32_t _builtin_int_type; + _builtin_int_type builtin_int; + typedef bool _builtin_boolean_type; + _builtin_boolean_type builtin_boolean; + typedef std_msgs::Bool _boolean_type; + _boolean_type boolean; + typedef const char* _builtin_string_type; + _builtin_string_type builtin_string; + typedef std_msgs::String _string_type; + _string_type string; + int32_t builtin_int_array[3]; + uint32_t builtin_int_vector_length; + typedef int32_t _builtin_int_vector_type; + _builtin_int_vector_type st_builtin_int_vector; + _builtin_int_vector_type * builtin_int_vector; + std_msgs::String string_array[3]; + uint32_t string_vector_length; + typedef std_msgs::String _string_vector_type; + _string_vector_type st_string_vector; + _string_vector_type * string_vector; + bool builtin_boolean_array[3]; + enum { byte_constant = 42 }; + + Test(): + header(), + builtin_int(0), + builtin_boolean(0), + boolean(), + builtin_string(""), + string(), + builtin_int_array(), + builtin_int_vector_length(0), builtin_int_vector(NULL), + string_array(), + string_vector_length(0), string_vector(NULL), + builtin_boolean_array() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + union { + int32_t real; + uint32_t base; + } u_builtin_int; + u_builtin_int.real = this->builtin_int; + *(outbuffer + offset + 0) = (u_builtin_int.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_builtin_int.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_builtin_int.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_builtin_int.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->builtin_int); + union { + bool real; + uint8_t base; + } u_builtin_boolean; + u_builtin_boolean.real = this->builtin_boolean; + *(outbuffer + offset + 0) = (u_builtin_boolean.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->builtin_boolean); + offset += this->boolean.serialize(outbuffer + offset); + uint32_t length_builtin_string = strlen(this->builtin_string); + varToArr(outbuffer + offset, length_builtin_string); + offset += 4; + memcpy(outbuffer + offset, this->builtin_string, length_builtin_string); + offset += length_builtin_string; + offset += this->string.serialize(outbuffer + offset); + for( uint32_t i = 0; i < 3; i++){ + union { + int32_t real; + uint32_t base; + } u_builtin_int_arrayi; + u_builtin_int_arrayi.real = this->builtin_int_array[i]; + *(outbuffer + offset + 0) = (u_builtin_int_arrayi.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_builtin_int_arrayi.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_builtin_int_arrayi.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_builtin_int_arrayi.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->builtin_int_array[i]); + } + *(outbuffer + offset + 0) = (this->builtin_int_vector_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->builtin_int_vector_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->builtin_int_vector_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->builtin_int_vector_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->builtin_int_vector_length); + for( uint32_t i = 0; i < builtin_int_vector_length; i++){ + union { + int32_t real; + uint32_t base; + } u_builtin_int_vectori; + u_builtin_int_vectori.real = this->builtin_int_vector[i]; + *(outbuffer + offset + 0) = (u_builtin_int_vectori.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_builtin_int_vectori.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_builtin_int_vectori.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_builtin_int_vectori.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->builtin_int_vector[i]); + } + for( uint32_t i = 0; i < 3; i++){ + offset += this->string_array[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->string_vector_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->string_vector_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->string_vector_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->string_vector_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->string_vector_length); + for( uint32_t i = 0; i < string_vector_length; i++){ + offset += this->string_vector[i].serialize(outbuffer + offset); + } + for( uint32_t i = 0; i < 3; i++){ + union { + bool real; + uint8_t base; + } u_builtin_boolean_arrayi; + u_builtin_boolean_arrayi.real = this->builtin_boolean_array[i]; + *(outbuffer + offset + 0) = (u_builtin_boolean_arrayi.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->builtin_boolean_array[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + union { + int32_t real; + uint32_t base; + } u_builtin_int; + u_builtin_int.base = 0; + u_builtin_int.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_builtin_int.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_builtin_int.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_builtin_int.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->builtin_int = u_builtin_int.real; + offset += sizeof(this->builtin_int); + union { + bool real; + uint8_t base; + } u_builtin_boolean; + u_builtin_boolean.base = 0; + u_builtin_boolean.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->builtin_boolean = u_builtin_boolean.real; + offset += sizeof(this->builtin_boolean); + offset += this->boolean.deserialize(inbuffer + offset); + uint32_t length_builtin_string; + arrToVar(length_builtin_string, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_builtin_string; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_builtin_string-1]=0; + this->builtin_string = (char *)(inbuffer + offset-1); + offset += length_builtin_string; + offset += this->string.deserialize(inbuffer + offset); + for( uint32_t i = 0; i < 3; i++){ + union { + int32_t real; + uint32_t base; + } u_builtin_int_arrayi; + u_builtin_int_arrayi.base = 0; + u_builtin_int_arrayi.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_builtin_int_arrayi.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_builtin_int_arrayi.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_builtin_int_arrayi.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->builtin_int_array[i] = u_builtin_int_arrayi.real; + offset += sizeof(this->builtin_int_array[i]); + } + uint32_t builtin_int_vector_lengthT = ((uint32_t) (*(inbuffer + offset))); + builtin_int_vector_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + builtin_int_vector_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + builtin_int_vector_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->builtin_int_vector_length); + if(builtin_int_vector_lengthT > builtin_int_vector_length) + this->builtin_int_vector = (int32_t*)realloc(this->builtin_int_vector, builtin_int_vector_lengthT * sizeof(int32_t)); + builtin_int_vector_length = builtin_int_vector_lengthT; + for( uint32_t i = 0; i < builtin_int_vector_length; i++){ + union { + int32_t real; + uint32_t base; + } u_st_builtin_int_vector; + u_st_builtin_int_vector.base = 0; + u_st_builtin_int_vector.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_st_builtin_int_vector.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_st_builtin_int_vector.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_st_builtin_int_vector.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->st_builtin_int_vector = u_st_builtin_int_vector.real; + offset += sizeof(this->st_builtin_int_vector); + memcpy( &(this->builtin_int_vector[i]), &(this->st_builtin_int_vector), sizeof(int32_t)); + } + for( uint32_t i = 0; i < 3; i++){ + offset += this->string_array[i].deserialize(inbuffer + offset); + } + uint32_t string_vector_lengthT = ((uint32_t) (*(inbuffer + offset))); + string_vector_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + string_vector_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + string_vector_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->string_vector_length); + if(string_vector_lengthT > string_vector_length) + this->string_vector = (std_msgs::String*)realloc(this->string_vector, string_vector_lengthT * sizeof(std_msgs::String)); + string_vector_length = string_vector_lengthT; + for( uint32_t i = 0; i < string_vector_length; i++){ + offset += this->st_string_vector.deserialize(inbuffer + offset); + memcpy( &(this->string_vector[i]), &(this->st_string_vector), sizeof(std_msgs::String)); + } + for( uint32_t i = 0; i < 3; i++){ + union { + bool real; + uint8_t base; + } u_builtin_boolean_arrayi; + u_builtin_boolean_arrayi.base = 0; + u_builtin_boolean_arrayi.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->builtin_boolean_array[i] = u_builtin_boolean_arrayi.real; + offset += sizeof(this->builtin_boolean_array[i]); + } + return offset; + } + + const char * getType(){ return "variant_msgs/Test"; }; + const char * getMD5(){ return "17d92d9cea3499753cb392766b3203a1"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/variant_msgs/Variant.h b/source/ros-max-lib/ros_lib/variant_msgs/Variant.h new file mode 100644 index 0000000..c62dd44 --- /dev/null +++ b/source/ros-max-lib/ros_lib/variant_msgs/Variant.h @@ -0,0 +1,77 @@ +#ifndef _ROS_variant_msgs_Variant_h +#define _ROS_variant_msgs_Variant_h + +#include +#include +#include +#include "ros/msg.h" +#include "variant_msgs/VariantHeader.h" +#include "variant_msgs/VariantType.h" + +namespace variant_msgs +{ + + class Variant : public ros::Msg + { + public: + typedef variant_msgs::VariantHeader _header_type; + _header_type header; + typedef variant_msgs::VariantType _type_type; + _type_type type; + uint32_t data_length; + typedef uint8_t _data_type; + _data_type st_data; + _data_type * data; + + Variant(): + header(), + type(), + data_length(0), data(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->type.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->data_length); + for( uint32_t i = 0; i < data_length; i++){ + *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF; + offset += sizeof(this->data[i]); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->type.deserialize(inbuffer + offset); + uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->data_length); + if(data_lengthT > data_length) + this->data = (uint8_t*)realloc(this->data, data_lengthT * sizeof(uint8_t)); + data_length = data_lengthT; + for( uint32_t i = 0; i < data_length; i++){ + this->st_data = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->st_data); + memcpy( &(this->data[i]), &(this->st_data), sizeof(uint8_t)); + } + return offset; + } + + const char * getType(){ return "variant_msgs/Variant"; }; + const char * getMD5(){ return "01c24cd44ef34b0c6a309bcafb6bdfab"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/variant_msgs/VariantHeader.h b/source/ros-max-lib/ros_lib/variant_msgs/VariantHeader.h new file mode 100644 index 0000000..236b5cb --- /dev/null +++ b/source/ros-max-lib/ros_lib/variant_msgs/VariantHeader.h @@ -0,0 +1,90 @@ +#ifndef _ROS_variant_msgs_VariantHeader_h +#define _ROS_variant_msgs_VariantHeader_h + +#include +#include +#include +#include "ros/msg.h" + +namespace variant_msgs +{ + + class VariantHeader : public ros::Msg + { + public: + typedef const char* _publisher_type; + _publisher_type publisher; + typedef const char* _topic_type; + _topic_type topic; + typedef bool _latched_type; + _latched_type latched; + + VariantHeader(): + publisher(""), + topic(""), + latched(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_publisher = strlen(this->publisher); + varToArr(outbuffer + offset, length_publisher); + offset += 4; + memcpy(outbuffer + offset, this->publisher, length_publisher); + offset += length_publisher; + uint32_t length_topic = strlen(this->topic); + varToArr(outbuffer + offset, length_topic); + offset += 4; + memcpy(outbuffer + offset, this->topic, length_topic); + offset += length_topic; + union { + bool real; + uint8_t base; + } u_latched; + u_latched.real = this->latched; + *(outbuffer + offset + 0) = (u_latched.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->latched); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_publisher; + arrToVar(length_publisher, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_publisher; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_publisher-1]=0; + this->publisher = (char *)(inbuffer + offset-1); + offset += length_publisher; + uint32_t length_topic; + arrToVar(length_topic, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_topic; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_topic-1]=0; + this->topic = (char *)(inbuffer + offset-1); + offset += length_topic; + union { + bool real; + uint8_t base; + } u_latched; + u_latched.base = 0; + u_latched.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->latched = u_latched.real; + offset += sizeof(this->latched); + return offset; + } + + const char * getType(){ return "variant_msgs/VariantHeader"; }; + const char * getMD5(){ return "e4adbe277ed51d50644d64067b86c73d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/variant_msgs/VariantType.h b/source/ros-max-lib/ros_lib/variant_msgs/VariantType.h new file mode 100644 index 0000000..66c7ac7 --- /dev/null +++ b/source/ros-max-lib/ros_lib/variant_msgs/VariantType.h @@ -0,0 +1,89 @@ +#ifndef _ROS_variant_msgs_VariantType_h +#define _ROS_variant_msgs_VariantType_h + +#include +#include +#include +#include "ros/msg.h" + +namespace variant_msgs +{ + + class VariantType : public ros::Msg + { + public: + typedef const char* _md5_sum_type; + _md5_sum_type md5_sum; + typedef const char* _data_type_type; + _data_type_type data_type; + typedef const char* _definition_type; + _definition_type definition; + + VariantType(): + md5_sum(""), + data_type(""), + definition("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_md5_sum = strlen(this->md5_sum); + varToArr(outbuffer + offset, length_md5_sum); + offset += 4; + memcpy(outbuffer + offset, this->md5_sum, length_md5_sum); + offset += length_md5_sum; + uint32_t length_data_type = strlen(this->data_type); + varToArr(outbuffer + offset, length_data_type); + offset += 4; + memcpy(outbuffer + offset, this->data_type, length_data_type); + offset += length_data_type; + uint32_t length_definition = strlen(this->definition); + varToArr(outbuffer + offset, length_definition); + offset += 4; + memcpy(outbuffer + offset, this->definition, length_definition); + offset += length_definition; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_md5_sum; + arrToVar(length_md5_sum, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_md5_sum; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_md5_sum-1]=0; + this->md5_sum = (char *)(inbuffer + offset-1); + offset += length_md5_sum; + uint32_t length_data_type; + arrToVar(length_data_type, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_data_type; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_data_type-1]=0; + this->data_type = (char *)(inbuffer + offset-1); + offset += length_data_type; + uint32_t length_definition; + arrToVar(length_definition, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_definition; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_definition-1]=0; + this->definition = (char *)(inbuffer + offset-1); + offset += length_definition; + return offset; + } + + const char * getType(){ return "variant_msgs/VariantType"; }; + const char * getMD5(){ return "ea49579a10d85560b62a77e2f2f84caf"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/visualization_msgs/ImageMarker.h b/source/ros-max-lib/ros_lib/visualization_msgs/ImageMarker.h new file mode 100644 index 0000000..c69577a --- /dev/null +++ b/source/ros-max-lib/ros_lib/visualization_msgs/ImageMarker.h @@ -0,0 +1,262 @@ +#ifndef _ROS_visualization_msgs_ImageMarker_h +#define _ROS_visualization_msgs_ImageMarker_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Point.h" +#include "std_msgs/ColorRGBA.h" +#include "ros/duration.h" + +namespace visualization_msgs +{ + + class ImageMarker : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef const char* _ns_type; + _ns_type ns; + typedef int32_t _id_type; + _id_type id; + typedef int32_t _type_type; + _type_type type; + typedef int32_t _action_type; + _action_type action; + typedef geometry_msgs::Point _position_type; + _position_type position; + typedef float _scale_type; + _scale_type scale; + typedef std_msgs::ColorRGBA _outline_color_type; + _outline_color_type outline_color; + typedef uint8_t _filled_type; + _filled_type filled; + typedef std_msgs::ColorRGBA _fill_color_type; + _fill_color_type fill_color; + typedef ros::Duration _lifetime_type; + _lifetime_type lifetime; + uint32_t points_length; + typedef geometry_msgs::Point _points_type; + _points_type st_points; + _points_type * points; + uint32_t outline_colors_length; + typedef std_msgs::ColorRGBA _outline_colors_type; + _outline_colors_type st_outline_colors; + _outline_colors_type * outline_colors; + enum { CIRCLE = 0 }; + enum { LINE_STRIP = 1 }; + enum { LINE_LIST = 2 }; + enum { POLYGON = 3 }; + enum { POINTS = 4 }; + enum { ADD = 0 }; + enum { REMOVE = 1 }; + + ImageMarker(): + header(), + ns(""), + id(0), + type(0), + action(0), + position(), + scale(0), + outline_color(), + filled(0), + fill_color(), + lifetime(), + points_length(0), points(NULL), + outline_colors_length(0), outline_colors(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + uint32_t length_ns = strlen(this->ns); + varToArr(outbuffer + offset, length_ns); + offset += 4; + memcpy(outbuffer + offset, this->ns, length_ns); + offset += length_ns; + union { + int32_t real; + uint32_t base; + } u_id; + u_id.real = this->id; + *(outbuffer + offset + 0) = (u_id.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_id.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_id.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_id.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->id); + union { + int32_t real; + uint32_t base; + } u_type; + u_type.real = this->type; + *(outbuffer + offset + 0) = (u_type.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_type.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_type.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_type.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->type); + union { + int32_t real; + uint32_t base; + } u_action; + u_action.real = this->action; + *(outbuffer + offset + 0) = (u_action.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_action.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_action.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_action.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->action); + offset += this->position.serialize(outbuffer + offset); + union { + float real; + uint32_t base; + } u_scale; + u_scale.real = this->scale; + *(outbuffer + offset + 0) = (u_scale.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_scale.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_scale.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_scale.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->scale); + offset += this->outline_color.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->filled >> (8 * 0)) & 0xFF; + offset += sizeof(this->filled); + offset += this->fill_color.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->lifetime.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->lifetime.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->lifetime.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->lifetime.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->lifetime.sec); + *(outbuffer + offset + 0) = (this->lifetime.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->lifetime.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->lifetime.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->lifetime.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->lifetime.nsec); + *(outbuffer + offset + 0) = (this->points_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->points_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->points_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->points_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->points_length); + for( uint32_t i = 0; i < points_length; i++){ + offset += this->points[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->outline_colors_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->outline_colors_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->outline_colors_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->outline_colors_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->outline_colors_length); + for( uint32_t i = 0; i < outline_colors_length; i++){ + offset += this->outline_colors[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t length_ns; + arrToVar(length_ns, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_ns; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_ns-1]=0; + this->ns = (char *)(inbuffer + offset-1); + offset += length_ns; + union { + int32_t real; + uint32_t base; + } u_id; + u_id.base = 0; + u_id.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_id.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_id.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_id.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->id = u_id.real; + offset += sizeof(this->id); + union { + int32_t real; + uint32_t base; + } u_type; + u_type.base = 0; + u_type.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_type.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_type.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_type.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->type = u_type.real; + offset += sizeof(this->type); + union { + int32_t real; + uint32_t base; + } u_action; + u_action.base = 0; + u_action.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_action.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_action.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_action.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->action = u_action.real; + offset += sizeof(this->action); + offset += this->position.deserialize(inbuffer + offset); + union { + float real; + uint32_t base; + } u_scale; + u_scale.base = 0; + u_scale.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_scale.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_scale.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_scale.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->scale = u_scale.real; + offset += sizeof(this->scale); + offset += this->outline_color.deserialize(inbuffer + offset); + this->filled = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->filled); + offset += this->fill_color.deserialize(inbuffer + offset); + this->lifetime.sec = ((uint32_t) (*(inbuffer + offset))); + this->lifetime.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->lifetime.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->lifetime.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->lifetime.sec); + this->lifetime.nsec = ((uint32_t) (*(inbuffer + offset))); + this->lifetime.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->lifetime.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->lifetime.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->lifetime.nsec); + uint32_t points_lengthT = ((uint32_t) (*(inbuffer + offset))); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->points_length); + if(points_lengthT > points_length) + this->points = (geometry_msgs::Point*)realloc(this->points, points_lengthT * sizeof(geometry_msgs::Point)); + points_length = points_lengthT; + for( uint32_t i = 0; i < points_length; i++){ + offset += this->st_points.deserialize(inbuffer + offset); + memcpy( &(this->points[i]), &(this->st_points), sizeof(geometry_msgs::Point)); + } + uint32_t outline_colors_lengthT = ((uint32_t) (*(inbuffer + offset))); + outline_colors_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + outline_colors_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + outline_colors_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->outline_colors_length); + if(outline_colors_lengthT > outline_colors_length) + this->outline_colors = (std_msgs::ColorRGBA*)realloc(this->outline_colors, outline_colors_lengthT * sizeof(std_msgs::ColorRGBA)); + outline_colors_length = outline_colors_lengthT; + for( uint32_t i = 0; i < outline_colors_length; i++){ + offset += this->st_outline_colors.deserialize(inbuffer + offset); + memcpy( &(this->outline_colors[i]), &(this->st_outline_colors), sizeof(std_msgs::ColorRGBA)); + } + return offset; + } + + const char * getType(){ return "visualization_msgs/ImageMarker"; }; + const char * getMD5(){ return "1de93c67ec8858b831025a08fbf1b35c"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/visualization_msgs/InteractiveMarker.h b/source/ros-max-lib/ros_lib/visualization_msgs/InteractiveMarker.h new file mode 100644 index 0000000..8752679 --- /dev/null +++ b/source/ros-max-lib/ros_lib/visualization_msgs/InteractiveMarker.h @@ -0,0 +1,160 @@ +#ifndef _ROS_visualization_msgs_InteractiveMarker_h +#define _ROS_visualization_msgs_InteractiveMarker_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Pose.h" +#include "visualization_msgs/MenuEntry.h" +#include "visualization_msgs/InteractiveMarkerControl.h" + +namespace visualization_msgs +{ + + class InteractiveMarker : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::Pose _pose_type; + _pose_type pose; + typedef const char* _name_type; + _name_type name; + typedef const char* _description_type; + _description_type description; + typedef float _scale_type; + _scale_type scale; + uint32_t menu_entries_length; + typedef visualization_msgs::MenuEntry _menu_entries_type; + _menu_entries_type st_menu_entries; + _menu_entries_type * menu_entries; + uint32_t controls_length; + typedef visualization_msgs::InteractiveMarkerControl _controls_type; + _controls_type st_controls; + _controls_type * controls; + + InteractiveMarker(): + header(), + pose(), + name(""), + description(""), + scale(0), + menu_entries_length(0), menu_entries(NULL), + controls_length(0), controls(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->pose.serialize(outbuffer + offset); + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + uint32_t length_description = strlen(this->description); + varToArr(outbuffer + offset, length_description); + offset += 4; + memcpy(outbuffer + offset, this->description, length_description); + offset += length_description; + union { + float real; + uint32_t base; + } u_scale; + u_scale.real = this->scale; + *(outbuffer + offset + 0) = (u_scale.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_scale.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_scale.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_scale.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->scale); + *(outbuffer + offset + 0) = (this->menu_entries_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->menu_entries_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->menu_entries_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->menu_entries_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->menu_entries_length); + for( uint32_t i = 0; i < menu_entries_length; i++){ + offset += this->menu_entries[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->controls_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->controls_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->controls_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->controls_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->controls_length); + for( uint32_t i = 0; i < controls_length; i++){ + offset += this->controls[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->pose.deserialize(inbuffer + offset); + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + uint32_t length_description; + arrToVar(length_description, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_description; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_description-1]=0; + this->description = (char *)(inbuffer + offset-1); + offset += length_description; + union { + float real; + uint32_t base; + } u_scale; + u_scale.base = 0; + u_scale.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_scale.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_scale.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_scale.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->scale = u_scale.real; + offset += sizeof(this->scale); + uint32_t menu_entries_lengthT = ((uint32_t) (*(inbuffer + offset))); + menu_entries_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + menu_entries_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + menu_entries_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->menu_entries_length); + if(menu_entries_lengthT > menu_entries_length) + this->menu_entries = (visualization_msgs::MenuEntry*)realloc(this->menu_entries, menu_entries_lengthT * sizeof(visualization_msgs::MenuEntry)); + menu_entries_length = menu_entries_lengthT; + for( uint32_t i = 0; i < menu_entries_length; i++){ + offset += this->st_menu_entries.deserialize(inbuffer + offset); + memcpy( &(this->menu_entries[i]), &(this->st_menu_entries), sizeof(visualization_msgs::MenuEntry)); + } + uint32_t controls_lengthT = ((uint32_t) (*(inbuffer + offset))); + controls_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + controls_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + controls_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->controls_length); + if(controls_lengthT > controls_length) + this->controls = (visualization_msgs::InteractiveMarkerControl*)realloc(this->controls, controls_lengthT * sizeof(visualization_msgs::InteractiveMarkerControl)); + controls_length = controls_lengthT; + for( uint32_t i = 0; i < controls_length; i++){ + offset += this->st_controls.deserialize(inbuffer + offset); + memcpy( &(this->controls[i]), &(this->st_controls), sizeof(visualization_msgs::InteractiveMarkerControl)); + } + return offset; + } + + const char * getType(){ return "visualization_msgs/InteractiveMarker"; }; + const char * getMD5(){ return "dd86d22909d5a3364b384492e35c10af"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/visualization_msgs/InteractiveMarkerControl.h b/source/ros-max-lib/ros_lib/visualization_msgs/InteractiveMarkerControl.h new file mode 100644 index 0000000..0c905ce --- /dev/null +++ b/source/ros-max-lib/ros_lib/visualization_msgs/InteractiveMarkerControl.h @@ -0,0 +1,167 @@ +#ifndef _ROS_visualization_msgs_InteractiveMarkerControl_h +#define _ROS_visualization_msgs_InteractiveMarkerControl_h + +#include +#include +#include +#include "ros/msg.h" +#include "geometry_msgs/Quaternion.h" +#include "visualization_msgs/Marker.h" + +namespace visualization_msgs +{ + + class InteractiveMarkerControl : public ros::Msg + { + public: + typedef const char* _name_type; + _name_type name; + typedef geometry_msgs::Quaternion _orientation_type; + _orientation_type orientation; + typedef uint8_t _orientation_mode_type; + _orientation_mode_type orientation_mode; + typedef uint8_t _interaction_mode_type; + _interaction_mode_type interaction_mode; + typedef bool _always_visible_type; + _always_visible_type always_visible; + uint32_t markers_length; + typedef visualization_msgs::Marker _markers_type; + _markers_type st_markers; + _markers_type * markers; + typedef bool _independent_marker_orientation_type; + _independent_marker_orientation_type independent_marker_orientation; + typedef const char* _description_type; + _description_type description; + enum { INHERIT = 0 }; + enum { FIXED = 1 }; + enum { VIEW_FACING = 2 }; + enum { NONE = 0 }; + enum { MENU = 1 }; + enum { BUTTON = 2 }; + enum { MOVE_AXIS = 3 }; + enum { MOVE_PLANE = 4 }; + enum { ROTATE_AXIS = 5 }; + enum { MOVE_ROTATE = 6 }; + enum { MOVE_3D = 7 }; + enum { ROTATE_3D = 8 }; + enum { MOVE_ROTATE_3D = 9 }; + + InteractiveMarkerControl(): + name(""), + orientation(), + orientation_mode(0), + interaction_mode(0), + always_visible(0), + markers_length(0), markers(NULL), + independent_marker_orientation(0), + description("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + offset += this->orientation.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->orientation_mode >> (8 * 0)) & 0xFF; + offset += sizeof(this->orientation_mode); + *(outbuffer + offset + 0) = (this->interaction_mode >> (8 * 0)) & 0xFF; + offset += sizeof(this->interaction_mode); + union { + bool real; + uint8_t base; + } u_always_visible; + u_always_visible.real = this->always_visible; + *(outbuffer + offset + 0) = (u_always_visible.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->always_visible); + *(outbuffer + offset + 0) = (this->markers_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->markers_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->markers_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->markers_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->markers_length); + for( uint32_t i = 0; i < markers_length; i++){ + offset += this->markers[i].serialize(outbuffer + offset); + } + union { + bool real; + uint8_t base; + } u_independent_marker_orientation; + u_independent_marker_orientation.real = this->independent_marker_orientation; + *(outbuffer + offset + 0) = (u_independent_marker_orientation.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->independent_marker_orientation); + uint32_t length_description = strlen(this->description); + varToArr(outbuffer + offset, length_description); + offset += 4; + memcpy(outbuffer + offset, this->description, length_description); + offset += length_description; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + offset += this->orientation.deserialize(inbuffer + offset); + this->orientation_mode = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->orientation_mode); + this->interaction_mode = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->interaction_mode); + union { + bool real; + uint8_t base; + } u_always_visible; + u_always_visible.base = 0; + u_always_visible.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->always_visible = u_always_visible.real; + offset += sizeof(this->always_visible); + uint32_t markers_lengthT = ((uint32_t) (*(inbuffer + offset))); + markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->markers_length); + if(markers_lengthT > markers_length) + this->markers = (visualization_msgs::Marker*)realloc(this->markers, markers_lengthT * sizeof(visualization_msgs::Marker)); + markers_length = markers_lengthT; + for( uint32_t i = 0; i < markers_length; i++){ + offset += this->st_markers.deserialize(inbuffer + offset); + memcpy( &(this->markers[i]), &(this->st_markers), sizeof(visualization_msgs::Marker)); + } + union { + bool real; + uint8_t base; + } u_independent_marker_orientation; + u_independent_marker_orientation.base = 0; + u_independent_marker_orientation.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->independent_marker_orientation = u_independent_marker_orientation.real; + offset += sizeof(this->independent_marker_orientation); + uint32_t length_description; + arrToVar(length_description, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_description; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_description-1]=0; + this->description = (char *)(inbuffer + offset-1); + offset += length_description; + return offset; + } + + const char * getType(){ return "visualization_msgs/InteractiveMarkerControl"; }; + const char * getMD5(){ return "b3c81e785788195d1840b86c28da1aac"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/visualization_msgs/InteractiveMarkerFeedback.h b/source/ros-max-lib/ros_lib/visualization_msgs/InteractiveMarkerFeedback.h new file mode 100644 index 0000000..3d5cebb --- /dev/null +++ b/source/ros-max-lib/ros_lib/visualization_msgs/InteractiveMarkerFeedback.h @@ -0,0 +1,151 @@ +#ifndef _ROS_visualization_msgs_InteractiveMarkerFeedback_h +#define _ROS_visualization_msgs_InteractiveMarkerFeedback_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Pose.h" +#include "geometry_msgs/Point.h" + +namespace visualization_msgs +{ + + class InteractiveMarkerFeedback : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef const char* _client_id_type; + _client_id_type client_id; + typedef const char* _marker_name_type; + _marker_name_type marker_name; + typedef const char* _control_name_type; + _control_name_type control_name; + typedef uint8_t _event_type_type; + _event_type_type event_type; + typedef geometry_msgs::Pose _pose_type; + _pose_type pose; + typedef uint32_t _menu_entry_id_type; + _menu_entry_id_type menu_entry_id; + typedef geometry_msgs::Point _mouse_point_type; + _mouse_point_type mouse_point; + typedef bool _mouse_point_valid_type; + _mouse_point_valid_type mouse_point_valid; + enum { KEEP_ALIVE = 0 }; + enum { POSE_UPDATE = 1 }; + enum { MENU_SELECT = 2 }; + enum { BUTTON_CLICK = 3 }; + enum { MOUSE_DOWN = 4 }; + enum { MOUSE_UP = 5 }; + + InteractiveMarkerFeedback(): + header(), + client_id(""), + marker_name(""), + control_name(""), + event_type(0), + pose(), + menu_entry_id(0), + mouse_point(), + mouse_point_valid(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + uint32_t length_client_id = strlen(this->client_id); + varToArr(outbuffer + offset, length_client_id); + offset += 4; + memcpy(outbuffer + offset, this->client_id, length_client_id); + offset += length_client_id; + uint32_t length_marker_name = strlen(this->marker_name); + varToArr(outbuffer + offset, length_marker_name); + offset += 4; + memcpy(outbuffer + offset, this->marker_name, length_marker_name); + offset += length_marker_name; + uint32_t length_control_name = strlen(this->control_name); + varToArr(outbuffer + offset, length_control_name); + offset += 4; + memcpy(outbuffer + offset, this->control_name, length_control_name); + offset += length_control_name; + *(outbuffer + offset + 0) = (this->event_type >> (8 * 0)) & 0xFF; + offset += sizeof(this->event_type); + offset += this->pose.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->menu_entry_id >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->menu_entry_id >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->menu_entry_id >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->menu_entry_id >> (8 * 3)) & 0xFF; + offset += sizeof(this->menu_entry_id); + offset += this->mouse_point.serialize(outbuffer + offset); + union { + bool real; + uint8_t base; + } u_mouse_point_valid; + u_mouse_point_valid.real = this->mouse_point_valid; + *(outbuffer + offset + 0) = (u_mouse_point_valid.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->mouse_point_valid); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t length_client_id; + arrToVar(length_client_id, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_client_id; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_client_id-1]=0; + this->client_id = (char *)(inbuffer + offset-1); + offset += length_client_id; + uint32_t length_marker_name; + arrToVar(length_marker_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_marker_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_marker_name-1]=0; + this->marker_name = (char *)(inbuffer + offset-1); + offset += length_marker_name; + uint32_t length_control_name; + arrToVar(length_control_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_control_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_control_name-1]=0; + this->control_name = (char *)(inbuffer + offset-1); + offset += length_control_name; + this->event_type = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->event_type); + offset += this->pose.deserialize(inbuffer + offset); + this->menu_entry_id = ((uint32_t) (*(inbuffer + offset))); + this->menu_entry_id |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->menu_entry_id |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->menu_entry_id |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->menu_entry_id); + offset += this->mouse_point.deserialize(inbuffer + offset); + union { + bool real; + uint8_t base; + } u_mouse_point_valid; + u_mouse_point_valid.base = 0; + u_mouse_point_valid.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->mouse_point_valid = u_mouse_point_valid.real; + offset += sizeof(this->mouse_point_valid); + return offset; + } + + const char * getType(){ return "visualization_msgs/InteractiveMarkerFeedback"; }; + const char * getMD5(){ return "ab0f1eee058667e28c19ff3ffc3f4b78"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/visualization_msgs/InteractiveMarkerInit.h b/source/ros-max-lib/ros_lib/visualization_msgs/InteractiveMarkerInit.h new file mode 100644 index 0000000..a6fb154 --- /dev/null +++ b/source/ros-max-lib/ros_lib/visualization_msgs/InteractiveMarkerInit.h @@ -0,0 +1,105 @@ +#ifndef _ROS_visualization_msgs_InteractiveMarkerInit_h +#define _ROS_visualization_msgs_InteractiveMarkerInit_h + +#include +#include +#include +#include "ros/msg.h" +#include "visualization_msgs/InteractiveMarker.h" + +namespace visualization_msgs +{ + + class InteractiveMarkerInit : public ros::Msg + { + public: + typedef const char* _server_id_type; + _server_id_type server_id; + typedef uint64_t _seq_num_type; + _seq_num_type seq_num; + uint32_t markers_length; + typedef visualization_msgs::InteractiveMarker _markers_type; + _markers_type st_markers; + _markers_type * markers; + + InteractiveMarkerInit(): + server_id(""), + seq_num(0), + markers_length(0), markers(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_server_id = strlen(this->server_id); + varToArr(outbuffer + offset, length_server_id); + offset += 4; + memcpy(outbuffer + offset, this->server_id, length_server_id); + offset += length_server_id; + union { + uint64_t real; + uint32_t base; + } u_seq_num; + u_seq_num.real = this->seq_num; + *(outbuffer + offset + 0) = (u_seq_num.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_seq_num.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_seq_num.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_seq_num.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->seq_num); + *(outbuffer + offset + 0) = (this->markers_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->markers_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->markers_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->markers_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->markers_length); + for( uint32_t i = 0; i < markers_length; i++){ + offset += this->markers[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_server_id; + arrToVar(length_server_id, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_server_id; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_server_id-1]=0; + this->server_id = (char *)(inbuffer + offset-1); + offset += length_server_id; + union { + uint64_t real; + uint32_t base; + } u_seq_num; + u_seq_num.base = 0; + u_seq_num.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_seq_num.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_seq_num.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_seq_num.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->seq_num = u_seq_num.real; + offset += sizeof(this->seq_num); + uint32_t markers_lengthT = ((uint32_t) (*(inbuffer + offset))); + markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->markers_length); + if(markers_lengthT > markers_length) + this->markers = (visualization_msgs::InteractiveMarker*)realloc(this->markers, markers_lengthT * sizeof(visualization_msgs::InteractiveMarker)); + markers_length = markers_lengthT; + for( uint32_t i = 0; i < markers_length; i++){ + offset += this->st_markers.deserialize(inbuffer + offset); + memcpy( &(this->markers[i]), &(this->st_markers), sizeof(visualization_msgs::InteractiveMarker)); + } + return offset; + } + + const char * getType(){ return "visualization_msgs/InteractiveMarkerInit"; }; + const char * getMD5(){ return "d5f2c5045a72456d228676ab91048734"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/visualization_msgs/InteractiveMarkerPose.h b/source/ros-max-lib/ros_lib/visualization_msgs/InteractiveMarkerPose.h new file mode 100644 index 0000000..f46032a --- /dev/null +++ b/source/ros-max-lib/ros_lib/visualization_msgs/InteractiveMarkerPose.h @@ -0,0 +1,67 @@ +#ifndef _ROS_visualization_msgs_InteractiveMarkerPose_h +#define _ROS_visualization_msgs_InteractiveMarkerPose_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Pose.h" + +namespace visualization_msgs +{ + + class InteractiveMarkerPose : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef geometry_msgs::Pose _pose_type; + _pose_type pose; + typedef const char* _name_type; + _name_type name; + + InteractiveMarkerPose(): + header(), + pose(), + name("") + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + offset += this->pose.serialize(outbuffer + offset); + uint32_t length_name = strlen(this->name); + varToArr(outbuffer + offset, length_name); + offset += 4; + memcpy(outbuffer + offset, this->name, length_name); + offset += length_name; + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + offset += this->pose.deserialize(inbuffer + offset); + uint32_t length_name; + arrToVar(length_name, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_name; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_name-1]=0; + this->name = (char *)(inbuffer + offset-1); + offset += length_name; + return offset; + } + + const char * getType(){ return "visualization_msgs/InteractiveMarkerPose"; }; + const char * getMD5(){ return "a6e6833209a196a38d798dadb02c81f8"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/visualization_msgs/InteractiveMarkerUpdate.h b/source/ros-max-lib/ros_lib/visualization_msgs/InteractiveMarkerUpdate.h new file mode 100644 index 0000000..8cea6ca --- /dev/null +++ b/source/ros-max-lib/ros_lib/visualization_msgs/InteractiveMarkerUpdate.h @@ -0,0 +1,177 @@ +#ifndef _ROS_visualization_msgs_InteractiveMarkerUpdate_h +#define _ROS_visualization_msgs_InteractiveMarkerUpdate_h + +#include +#include +#include +#include "ros/msg.h" +#include "visualization_msgs/InteractiveMarker.h" +#include "visualization_msgs/InteractiveMarkerPose.h" + +namespace visualization_msgs +{ + + class InteractiveMarkerUpdate : public ros::Msg + { + public: + typedef const char* _server_id_type; + _server_id_type server_id; + typedef uint64_t _seq_num_type; + _seq_num_type seq_num; + typedef uint8_t _type_type; + _type_type type; + uint32_t markers_length; + typedef visualization_msgs::InteractiveMarker _markers_type; + _markers_type st_markers; + _markers_type * markers; + uint32_t poses_length; + typedef visualization_msgs::InteractiveMarkerPose _poses_type; + _poses_type st_poses; + _poses_type * poses; + uint32_t erases_length; + typedef char* _erases_type; + _erases_type st_erases; + _erases_type * erases; + enum { KEEP_ALIVE = 0 }; + enum { UPDATE = 1 }; + + InteractiveMarkerUpdate(): + server_id(""), + seq_num(0), + type(0), + markers_length(0), markers(NULL), + poses_length(0), poses(NULL), + erases_length(0), erases(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + uint32_t length_server_id = strlen(this->server_id); + varToArr(outbuffer + offset, length_server_id); + offset += 4; + memcpy(outbuffer + offset, this->server_id, length_server_id); + offset += length_server_id; + union { + uint64_t real; + uint32_t base; + } u_seq_num; + u_seq_num.real = this->seq_num; + *(outbuffer + offset + 0) = (u_seq_num.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_seq_num.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_seq_num.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_seq_num.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->seq_num); + *(outbuffer + offset + 0) = (this->type >> (8 * 0)) & 0xFF; + offset += sizeof(this->type); + *(outbuffer + offset + 0) = (this->markers_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->markers_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->markers_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->markers_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->markers_length); + for( uint32_t i = 0; i < markers_length; i++){ + offset += this->markers[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->poses_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->poses_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->poses_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->poses_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->poses_length); + for( uint32_t i = 0; i < poses_length; i++){ + offset += this->poses[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->erases_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->erases_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->erases_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->erases_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->erases_length); + for( uint32_t i = 0; i < erases_length; i++){ + uint32_t length_erasesi = strlen(this->erases[i]); + varToArr(outbuffer + offset, length_erasesi); + offset += 4; + memcpy(outbuffer + offset, this->erases[i], length_erasesi); + offset += length_erasesi; + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t length_server_id; + arrToVar(length_server_id, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_server_id; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_server_id-1]=0; + this->server_id = (char *)(inbuffer + offset-1); + offset += length_server_id; + union { + uint64_t real; + uint32_t base; + } u_seq_num; + u_seq_num.base = 0; + u_seq_num.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_seq_num.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_seq_num.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_seq_num.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->seq_num = u_seq_num.real; + offset += sizeof(this->seq_num); + this->type = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->type); + uint32_t markers_lengthT = ((uint32_t) (*(inbuffer + offset))); + markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->markers_length); + if(markers_lengthT > markers_length) + this->markers = (visualization_msgs::InteractiveMarker*)realloc(this->markers, markers_lengthT * sizeof(visualization_msgs::InteractiveMarker)); + markers_length = markers_lengthT; + for( uint32_t i = 0; i < markers_length; i++){ + offset += this->st_markers.deserialize(inbuffer + offset); + memcpy( &(this->markers[i]), &(this->st_markers), sizeof(visualization_msgs::InteractiveMarker)); + } + uint32_t poses_lengthT = ((uint32_t) (*(inbuffer + offset))); + poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->poses_length); + if(poses_lengthT > poses_length) + this->poses = (visualization_msgs::InteractiveMarkerPose*)realloc(this->poses, poses_lengthT * sizeof(visualization_msgs::InteractiveMarkerPose)); + poses_length = poses_lengthT; + for( uint32_t i = 0; i < poses_length; i++){ + offset += this->st_poses.deserialize(inbuffer + offset); + memcpy( &(this->poses[i]), &(this->st_poses), sizeof(visualization_msgs::InteractiveMarkerPose)); + } + uint32_t erases_lengthT = ((uint32_t) (*(inbuffer + offset))); + erases_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + erases_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + erases_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->erases_length); + if(erases_lengthT > erases_length) + this->erases = (char**)realloc(this->erases, erases_lengthT * sizeof(char*)); + erases_length = erases_lengthT; + for( uint32_t i = 0; i < erases_length; i++){ + uint32_t length_st_erases; + arrToVar(length_st_erases, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_st_erases; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_st_erases-1]=0; + this->st_erases = (char *)(inbuffer + offset-1); + offset += length_st_erases; + memcpy( &(this->erases[i]), &(this->st_erases), sizeof(char*)); + } + return offset; + } + + const char * getType(){ return "visualization_msgs/InteractiveMarkerUpdate"; }; + const char * getMD5(){ return "710d308d0a9276d65945e92dd30b3946"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/visualization_msgs/Marker.h b/source/ros-max-lib/ros_lib/visualization_msgs/Marker.h new file mode 100644 index 0000000..1c6e1b2 --- /dev/null +++ b/source/ros-max-lib/ros_lib/visualization_msgs/Marker.h @@ -0,0 +1,312 @@ +#ifndef _ROS_visualization_msgs_Marker_h +#define _ROS_visualization_msgs_Marker_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "geometry_msgs/Pose.h" +#include "geometry_msgs/Vector3.h" +#include "std_msgs/ColorRGBA.h" +#include "ros/duration.h" +#include "geometry_msgs/Point.h" + +namespace visualization_msgs +{ + + class Marker : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef const char* _ns_type; + _ns_type ns; + typedef int32_t _id_type; + _id_type id; + typedef int32_t _type_type; + _type_type type; + typedef int32_t _action_type; + _action_type action; + typedef geometry_msgs::Pose _pose_type; + _pose_type pose; + typedef geometry_msgs::Vector3 _scale_type; + _scale_type scale; + typedef std_msgs::ColorRGBA _color_type; + _color_type color; + typedef ros::Duration _lifetime_type; + _lifetime_type lifetime; + typedef bool _frame_locked_type; + _frame_locked_type frame_locked; + uint32_t points_length; + typedef geometry_msgs::Point _points_type; + _points_type st_points; + _points_type * points; + uint32_t colors_length; + typedef std_msgs::ColorRGBA _colors_type; + _colors_type st_colors; + _colors_type * colors; + typedef const char* _text_type; + _text_type text; + typedef const char* _mesh_resource_type; + _mesh_resource_type mesh_resource; + typedef bool _mesh_use_embedded_materials_type; + _mesh_use_embedded_materials_type mesh_use_embedded_materials; + enum { ARROW = 0 }; + enum { CUBE = 1 }; + enum { SPHERE = 2 }; + enum { CYLINDER = 3 }; + enum { LINE_STRIP = 4 }; + enum { LINE_LIST = 5 }; + enum { CUBE_LIST = 6 }; + enum { SPHERE_LIST = 7 }; + enum { POINTS = 8 }; + enum { TEXT_VIEW_FACING = 9 }; + enum { MESH_RESOURCE = 10 }; + enum { TRIANGLE_LIST = 11 }; + enum { ADD = 0 }; + enum { MODIFY = 0 }; + enum { DELETE = 2 }; + enum { DELETEALL = 3 }; + + Marker(): + header(), + ns(""), + id(0), + type(0), + action(0), + pose(), + scale(), + color(), + lifetime(), + frame_locked(0), + points_length(0), points(NULL), + colors_length(0), colors(NULL), + text(""), + mesh_resource(""), + mesh_use_embedded_materials(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + uint32_t length_ns = strlen(this->ns); + varToArr(outbuffer + offset, length_ns); + offset += 4; + memcpy(outbuffer + offset, this->ns, length_ns); + offset += length_ns; + union { + int32_t real; + uint32_t base; + } u_id; + u_id.real = this->id; + *(outbuffer + offset + 0) = (u_id.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_id.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_id.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_id.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->id); + union { + int32_t real; + uint32_t base; + } u_type; + u_type.real = this->type; + *(outbuffer + offset + 0) = (u_type.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_type.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_type.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_type.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->type); + union { + int32_t real; + uint32_t base; + } u_action; + u_action.real = this->action; + *(outbuffer + offset + 0) = (u_action.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_action.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_action.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_action.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->action); + offset += this->pose.serialize(outbuffer + offset); + offset += this->scale.serialize(outbuffer + offset); + offset += this->color.serialize(outbuffer + offset); + *(outbuffer + offset + 0) = (this->lifetime.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->lifetime.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->lifetime.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->lifetime.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->lifetime.sec); + *(outbuffer + offset + 0) = (this->lifetime.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->lifetime.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->lifetime.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->lifetime.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->lifetime.nsec); + union { + bool real; + uint8_t base; + } u_frame_locked; + u_frame_locked.real = this->frame_locked; + *(outbuffer + offset + 0) = (u_frame_locked.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->frame_locked); + *(outbuffer + offset + 0) = (this->points_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->points_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->points_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->points_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->points_length); + for( uint32_t i = 0; i < points_length; i++){ + offset += this->points[i].serialize(outbuffer + offset); + } + *(outbuffer + offset + 0) = (this->colors_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->colors_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->colors_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->colors_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->colors_length); + for( uint32_t i = 0; i < colors_length; i++){ + offset += this->colors[i].serialize(outbuffer + offset); + } + uint32_t length_text = strlen(this->text); + varToArr(outbuffer + offset, length_text); + offset += 4; + memcpy(outbuffer + offset, this->text, length_text); + offset += length_text; + uint32_t length_mesh_resource = strlen(this->mesh_resource); + varToArr(outbuffer + offset, length_mesh_resource); + offset += 4; + memcpy(outbuffer + offset, this->mesh_resource, length_mesh_resource); + offset += length_mesh_resource; + union { + bool real; + uint8_t base; + } u_mesh_use_embedded_materials; + u_mesh_use_embedded_materials.real = this->mesh_use_embedded_materials; + *(outbuffer + offset + 0) = (u_mesh_use_embedded_materials.base >> (8 * 0)) & 0xFF; + offset += sizeof(this->mesh_use_embedded_materials); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t length_ns; + arrToVar(length_ns, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_ns; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_ns-1]=0; + this->ns = (char *)(inbuffer + offset-1); + offset += length_ns; + union { + int32_t real; + uint32_t base; + } u_id; + u_id.base = 0; + u_id.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_id.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_id.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_id.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->id = u_id.real; + offset += sizeof(this->id); + union { + int32_t real; + uint32_t base; + } u_type; + u_type.base = 0; + u_type.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_type.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_type.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_type.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->type = u_type.real; + offset += sizeof(this->type); + union { + int32_t real; + uint32_t base; + } u_action; + u_action.base = 0; + u_action.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_action.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_action.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_action.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->action = u_action.real; + offset += sizeof(this->action); + offset += this->pose.deserialize(inbuffer + offset); + offset += this->scale.deserialize(inbuffer + offset); + offset += this->color.deserialize(inbuffer + offset); + this->lifetime.sec = ((uint32_t) (*(inbuffer + offset))); + this->lifetime.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->lifetime.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->lifetime.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->lifetime.sec); + this->lifetime.nsec = ((uint32_t) (*(inbuffer + offset))); + this->lifetime.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->lifetime.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->lifetime.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->lifetime.nsec); + union { + bool real; + uint8_t base; + } u_frame_locked; + u_frame_locked.base = 0; + u_frame_locked.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->frame_locked = u_frame_locked.real; + offset += sizeof(this->frame_locked); + uint32_t points_lengthT = ((uint32_t) (*(inbuffer + offset))); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + points_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->points_length); + if(points_lengthT > points_length) + this->points = (geometry_msgs::Point*)realloc(this->points, points_lengthT * sizeof(geometry_msgs::Point)); + points_length = points_lengthT; + for( uint32_t i = 0; i < points_length; i++){ + offset += this->st_points.deserialize(inbuffer + offset); + memcpy( &(this->points[i]), &(this->st_points), sizeof(geometry_msgs::Point)); + } + uint32_t colors_lengthT = ((uint32_t) (*(inbuffer + offset))); + colors_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + colors_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + colors_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->colors_length); + if(colors_lengthT > colors_length) + this->colors = (std_msgs::ColorRGBA*)realloc(this->colors, colors_lengthT * sizeof(std_msgs::ColorRGBA)); + colors_length = colors_lengthT; + for( uint32_t i = 0; i < colors_length; i++){ + offset += this->st_colors.deserialize(inbuffer + offset); + memcpy( &(this->colors[i]), &(this->st_colors), sizeof(std_msgs::ColorRGBA)); + } + uint32_t length_text; + arrToVar(length_text, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_text; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_text-1]=0; + this->text = (char *)(inbuffer + offset-1); + offset += length_text; + uint32_t length_mesh_resource; + arrToVar(length_mesh_resource, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_mesh_resource; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_mesh_resource-1]=0; + this->mesh_resource = (char *)(inbuffer + offset-1); + offset += length_mesh_resource; + union { + bool real; + uint8_t base; + } u_mesh_use_embedded_materials; + u_mesh_use_embedded_materials.base = 0; + u_mesh_use_embedded_materials.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0); + this->mesh_use_embedded_materials = u_mesh_use_embedded_materials.real; + offset += sizeof(this->mesh_use_embedded_materials); + return offset; + } + + const char * getType(){ return "visualization_msgs/Marker"; }; + const char * getMD5(){ return "4048c9de2a16f4ae8e0538085ebf1b97"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/visualization_msgs/MarkerArray.h b/source/ros-max-lib/ros_lib/visualization_msgs/MarkerArray.h new file mode 100644 index 0000000..20d1fce --- /dev/null +++ b/source/ros-max-lib/ros_lib/visualization_msgs/MarkerArray.h @@ -0,0 +1,64 @@ +#ifndef _ROS_visualization_msgs_MarkerArray_h +#define _ROS_visualization_msgs_MarkerArray_h + +#include +#include +#include +#include "ros/msg.h" +#include "visualization_msgs/Marker.h" + +namespace visualization_msgs +{ + + class MarkerArray : public ros::Msg + { + public: + uint32_t markers_length; + typedef visualization_msgs::Marker _markers_type; + _markers_type st_markers; + _markers_type * markers; + + MarkerArray(): + markers_length(0), markers(NULL) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->markers_length >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->markers_length >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->markers_length >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->markers_length >> (8 * 3)) & 0xFF; + offset += sizeof(this->markers_length); + for( uint32_t i = 0; i < markers_length; i++){ + offset += this->markers[i].serialize(outbuffer + offset); + } + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + uint32_t markers_lengthT = ((uint32_t) (*(inbuffer + offset))); + markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->markers_length); + if(markers_lengthT > markers_length) + this->markers = (visualization_msgs::Marker*)realloc(this->markers, markers_lengthT * sizeof(visualization_msgs::Marker)); + markers_length = markers_lengthT; + for( uint32_t i = 0; i < markers_length; i++){ + offset += this->st_markers.deserialize(inbuffer + offset); + memcpy( &(this->markers[i]), &(this->st_markers), sizeof(visualization_msgs::Marker)); + } + return offset; + } + + const char * getType(){ return "visualization_msgs/MarkerArray"; }; + const char * getMD5(){ return "d155b9ce5188fbaf89745847fd5882d7"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/visualization_msgs/MenuEntry.h b/source/ros-max-lib/ros_lib/visualization_msgs/MenuEntry.h new file mode 100644 index 0000000..c7b6c23 --- /dev/null +++ b/source/ros-max-lib/ros_lib/visualization_msgs/MenuEntry.h @@ -0,0 +1,108 @@ +#ifndef _ROS_visualization_msgs_MenuEntry_h +#define _ROS_visualization_msgs_MenuEntry_h + +#include +#include +#include +#include "ros/msg.h" + +namespace visualization_msgs +{ + + class MenuEntry : public ros::Msg + { + public: + typedef uint32_t _id_type; + _id_type id; + typedef uint32_t _parent_id_type; + _parent_id_type parent_id; + typedef const char* _title_type; + _title_type title; + typedef const char* _command_type; + _command_type command; + typedef uint8_t _command_type_type; + _command_type_type command_type; + enum { FEEDBACK = 0 }; + enum { ROSRUN = 1 }; + enum { ROSLAUNCH = 2 }; + + MenuEntry(): + id(0), + parent_id(0), + title(""), + command(""), + command_type(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + *(outbuffer + offset + 0) = (this->id >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->id >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->id >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->id >> (8 * 3)) & 0xFF; + offset += sizeof(this->id); + *(outbuffer + offset + 0) = (this->parent_id >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->parent_id >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->parent_id >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->parent_id >> (8 * 3)) & 0xFF; + offset += sizeof(this->parent_id); + uint32_t length_title = strlen(this->title); + varToArr(outbuffer + offset, length_title); + offset += 4; + memcpy(outbuffer + offset, this->title, length_title); + offset += length_title; + uint32_t length_command = strlen(this->command); + varToArr(outbuffer + offset, length_command); + offset += 4; + memcpy(outbuffer + offset, this->command, length_command); + offset += length_command; + *(outbuffer + offset + 0) = (this->command_type >> (8 * 0)) & 0xFF; + offset += sizeof(this->command_type); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + this->id = ((uint32_t) (*(inbuffer + offset))); + this->id |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->id |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->id |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->id); + this->parent_id = ((uint32_t) (*(inbuffer + offset))); + this->parent_id |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->parent_id |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->parent_id |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->parent_id); + uint32_t length_title; + arrToVar(length_title, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_title; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_title-1]=0; + this->title = (char *)(inbuffer + offset-1); + offset += length_title; + uint32_t length_command; + arrToVar(length_command, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_command; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_command-1]=0; + this->command = (char *)(inbuffer + offset-1); + offset += length_command; + this->command_type = ((uint8_t) (*(inbuffer + offset))); + offset += sizeof(this->command_type); + return offset; + } + + const char * getType(){ return "visualization_msgs/MenuEntry"; }; + const char * getMD5(){ return "b90ec63024573de83b57aa93eb39be2d"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/wfov_camera_msgs/WFOVCompressedImage.h b/source/ros-max-lib/ros_lib/wfov_camera_msgs/WFOVCompressedImage.h new file mode 100644 index 0000000..c6b05bc --- /dev/null +++ b/source/ros-max-lib/ros_lib/wfov_camera_msgs/WFOVCompressedImage.h @@ -0,0 +1,169 @@ +#ifndef _ROS_wfov_camera_msgs_WFOVCompressedImage_h +#define _ROS_wfov_camera_msgs_WFOVCompressedImage_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "sensor_msgs/CompressedImage.h" +#include "sensor_msgs/CameraInfo.h" +#include "geometry_msgs/TransformStamped.h" + +namespace wfov_camera_msgs +{ + + class WFOVCompressedImage : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef const char* _time_reference_type; + _time_reference_type time_reference; + typedef sensor_msgs::CompressedImage _image_type; + _image_type image; + typedef sensor_msgs::CameraInfo _info_type; + _info_type info; + typedef float _shutter_type; + _shutter_type shutter; + typedef float _gain_type; + _gain_type gain; + typedef uint16_t _white_balance_blue_type; + _white_balance_blue_type white_balance_blue; + typedef uint16_t _white_balance_red_type; + _white_balance_red_type white_balance_red; + typedef float _temperature_type; + _temperature_type temperature; + typedef geometry_msgs::TransformStamped _worldToCamera_type; + _worldToCamera_type worldToCamera; + + WFOVCompressedImage(): + header(), + time_reference(""), + image(), + info(), + shutter(0), + gain(0), + white_balance_blue(0), + white_balance_red(0), + temperature(0), + worldToCamera() + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + uint32_t length_time_reference = strlen(this->time_reference); + varToArr(outbuffer + offset, length_time_reference); + offset += 4; + memcpy(outbuffer + offset, this->time_reference, length_time_reference); + offset += length_time_reference; + offset += this->image.serialize(outbuffer + offset); + offset += this->info.serialize(outbuffer + offset); + union { + float real; + uint32_t base; + } u_shutter; + u_shutter.real = this->shutter; + *(outbuffer + offset + 0) = (u_shutter.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_shutter.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_shutter.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_shutter.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->shutter); + union { + float real; + uint32_t base; + } u_gain; + u_gain.real = this->gain; + *(outbuffer + offset + 0) = (u_gain.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_gain.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_gain.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_gain.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->gain); + *(outbuffer + offset + 0) = (this->white_balance_blue >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->white_balance_blue >> (8 * 1)) & 0xFF; + offset += sizeof(this->white_balance_blue); + *(outbuffer + offset + 0) = (this->white_balance_red >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->white_balance_red >> (8 * 1)) & 0xFF; + offset += sizeof(this->white_balance_red); + union { + float real; + uint32_t base; + } u_temperature; + u_temperature.real = this->temperature; + *(outbuffer + offset + 0) = (u_temperature.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_temperature.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_temperature.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_temperature.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->temperature); + offset += this->worldToCamera.serialize(outbuffer + offset); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t length_time_reference; + arrToVar(length_time_reference, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_time_reference; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_time_reference-1]=0; + this->time_reference = (char *)(inbuffer + offset-1); + offset += length_time_reference; + offset += this->image.deserialize(inbuffer + offset); + offset += this->info.deserialize(inbuffer + offset); + union { + float real; + uint32_t base; + } u_shutter; + u_shutter.base = 0; + u_shutter.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_shutter.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_shutter.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_shutter.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->shutter = u_shutter.real; + offset += sizeof(this->shutter); + union { + float real; + uint32_t base; + } u_gain; + u_gain.base = 0; + u_gain.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_gain.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_gain.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_gain.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->gain = u_gain.real; + offset += sizeof(this->gain); + this->white_balance_blue = ((uint16_t) (*(inbuffer + offset))); + this->white_balance_blue |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->white_balance_blue); + this->white_balance_red = ((uint16_t) (*(inbuffer + offset))); + this->white_balance_red |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->white_balance_red); + union { + float real; + uint32_t base; + } u_temperature; + u_temperature.base = 0; + u_temperature.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_temperature.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_temperature.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_temperature.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->temperature = u_temperature.real; + offset += sizeof(this->temperature); + offset += this->worldToCamera.deserialize(inbuffer + offset); + return offset; + } + + const char * getType(){ return "wfov_camera_msgs/WFOVCompressedImage"; }; + const char * getMD5(){ return "5b0f85e79ffccd27dc377911c83e026f"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/wfov_camera_msgs/WFOVImage.h b/source/ros-max-lib/ros_lib/wfov_camera_msgs/WFOVImage.h new file mode 100644 index 0000000..6ce4f0e --- /dev/null +++ b/source/ros-max-lib/ros_lib/wfov_camera_msgs/WFOVImage.h @@ -0,0 +1,163 @@ +#ifndef _ROS_wfov_camera_msgs_WFOVImage_h +#define _ROS_wfov_camera_msgs_WFOVImage_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "sensor_msgs/Image.h" +#include "sensor_msgs/CameraInfo.h" + +namespace wfov_camera_msgs +{ + + class WFOVImage : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef const char* _time_reference_type; + _time_reference_type time_reference; + typedef sensor_msgs::Image _image_type; + _image_type image; + typedef sensor_msgs::CameraInfo _info_type; + _info_type info; + typedef float _shutter_type; + _shutter_type shutter; + typedef float _gain_type; + _gain_type gain; + typedef uint16_t _white_balance_blue_type; + _white_balance_blue_type white_balance_blue; + typedef uint16_t _white_balance_red_type; + _white_balance_red_type white_balance_red; + typedef float _temperature_type; + _temperature_type temperature; + + WFOVImage(): + header(), + time_reference(""), + image(), + info(), + shutter(0), + gain(0), + white_balance_blue(0), + white_balance_red(0), + temperature(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + uint32_t length_time_reference = strlen(this->time_reference); + varToArr(outbuffer + offset, length_time_reference); + offset += 4; + memcpy(outbuffer + offset, this->time_reference, length_time_reference); + offset += length_time_reference; + offset += this->image.serialize(outbuffer + offset); + offset += this->info.serialize(outbuffer + offset); + union { + float real; + uint32_t base; + } u_shutter; + u_shutter.real = this->shutter; + *(outbuffer + offset + 0) = (u_shutter.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_shutter.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_shutter.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_shutter.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->shutter); + union { + float real; + uint32_t base; + } u_gain; + u_gain.real = this->gain; + *(outbuffer + offset + 0) = (u_gain.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_gain.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_gain.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_gain.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->gain); + *(outbuffer + offset + 0) = (this->white_balance_blue >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->white_balance_blue >> (8 * 1)) & 0xFF; + offset += sizeof(this->white_balance_blue); + *(outbuffer + offset + 0) = (this->white_balance_red >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->white_balance_red >> (8 * 1)) & 0xFF; + offset += sizeof(this->white_balance_red); + union { + float real; + uint32_t base; + } u_temperature; + u_temperature.real = this->temperature; + *(outbuffer + offset + 0) = (u_temperature.base >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (u_temperature.base >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (u_temperature.base >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (u_temperature.base >> (8 * 3)) & 0xFF; + offset += sizeof(this->temperature); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t length_time_reference; + arrToVar(length_time_reference, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_time_reference; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_time_reference-1]=0; + this->time_reference = (char *)(inbuffer + offset-1); + offset += length_time_reference; + offset += this->image.deserialize(inbuffer + offset); + offset += this->info.deserialize(inbuffer + offset); + union { + float real; + uint32_t base; + } u_shutter; + u_shutter.base = 0; + u_shutter.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_shutter.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_shutter.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_shutter.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->shutter = u_shutter.real; + offset += sizeof(this->shutter); + union { + float real; + uint32_t base; + } u_gain; + u_gain.base = 0; + u_gain.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_gain.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_gain.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_gain.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->gain = u_gain.real; + offset += sizeof(this->gain); + this->white_balance_blue = ((uint16_t) (*(inbuffer + offset))); + this->white_balance_blue |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->white_balance_blue); + this->white_balance_red = ((uint16_t) (*(inbuffer + offset))); + this->white_balance_red |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1); + offset += sizeof(this->white_balance_red); + union { + float real; + uint32_t base; + } u_temperature; + u_temperature.base = 0; + u_temperature.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0); + u_temperature.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + u_temperature.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + u_temperature.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + this->temperature = u_temperature.real; + offset += sizeof(this->temperature); + return offset; + } + + const char * getType(){ return "wfov_camera_msgs/WFOVImage"; }; + const char * getMD5(){ return "807d0db423ab5e1561cfeba09a10bc88"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/ros_lib/wfov_camera_msgs/WFOVTrigger.h b/source/ros-max-lib/ros_lib/wfov_camera_msgs/WFOVTrigger.h new file mode 100644 index 0000000..67b0d0f --- /dev/null +++ b/source/ros-max-lib/ros_lib/wfov_camera_msgs/WFOVTrigger.h @@ -0,0 +1,141 @@ +#ifndef _ROS_wfov_camera_msgs_WFOVTrigger_h +#define _ROS_wfov_camera_msgs_WFOVTrigger_h + +#include +#include +#include +#include "ros/msg.h" +#include "std_msgs/Header.h" +#include "ros/time.h" + +namespace wfov_camera_msgs +{ + + class WFOVTrigger : public ros::Msg + { + public: + typedef std_msgs::Header _header_type; + _header_type header; + typedef const char* _time_reference_type; + _time_reference_type time_reference; + typedef ros::Time _trigger_time_type; + _trigger_time_type trigger_time; + typedef const char* _trigger_time_reference_type; + _trigger_time_reference_type trigger_time_reference; + typedef uint32_t _shutter_type; + _shutter_type shutter; + typedef uint32_t _id_type; + _id_type id; + typedef uint32_t _trigger_seq_type; + _trigger_seq_type trigger_seq; + + WFOVTrigger(): + header(), + time_reference(""), + trigger_time(), + trigger_time_reference(""), + shutter(0), + id(0), + trigger_seq(0) + { + } + + virtual int serialize(unsigned char *outbuffer) const + { + int offset = 0; + offset += this->header.serialize(outbuffer + offset); + uint32_t length_time_reference = strlen(this->time_reference); + varToArr(outbuffer + offset, length_time_reference); + offset += 4; + memcpy(outbuffer + offset, this->time_reference, length_time_reference); + offset += length_time_reference; + *(outbuffer + offset + 0) = (this->trigger_time.sec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->trigger_time.sec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->trigger_time.sec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->trigger_time.sec >> (8 * 3)) & 0xFF; + offset += sizeof(this->trigger_time.sec); + *(outbuffer + offset + 0) = (this->trigger_time.nsec >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->trigger_time.nsec >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->trigger_time.nsec >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->trigger_time.nsec >> (8 * 3)) & 0xFF; + offset += sizeof(this->trigger_time.nsec); + uint32_t length_trigger_time_reference = strlen(this->trigger_time_reference); + varToArr(outbuffer + offset, length_trigger_time_reference); + offset += 4; + memcpy(outbuffer + offset, this->trigger_time_reference, length_trigger_time_reference); + offset += length_trigger_time_reference; + *(outbuffer + offset + 0) = (this->shutter >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->shutter >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->shutter >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->shutter >> (8 * 3)) & 0xFF; + offset += sizeof(this->shutter); + *(outbuffer + offset + 0) = (this->id >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->id >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->id >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->id >> (8 * 3)) & 0xFF; + offset += sizeof(this->id); + *(outbuffer + offset + 0) = (this->trigger_seq >> (8 * 0)) & 0xFF; + *(outbuffer + offset + 1) = (this->trigger_seq >> (8 * 1)) & 0xFF; + *(outbuffer + offset + 2) = (this->trigger_seq >> (8 * 2)) & 0xFF; + *(outbuffer + offset + 3) = (this->trigger_seq >> (8 * 3)) & 0xFF; + offset += sizeof(this->trigger_seq); + return offset; + } + + virtual int deserialize(unsigned char *inbuffer) + { + int offset = 0; + offset += this->header.deserialize(inbuffer + offset); + uint32_t length_time_reference; + arrToVar(length_time_reference, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_time_reference; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_time_reference-1]=0; + this->time_reference = (char *)(inbuffer + offset-1); + offset += length_time_reference; + this->trigger_time.sec = ((uint32_t) (*(inbuffer + offset))); + this->trigger_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->trigger_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->trigger_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->trigger_time.sec); + this->trigger_time.nsec = ((uint32_t) (*(inbuffer + offset))); + this->trigger_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->trigger_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->trigger_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->trigger_time.nsec); + uint32_t length_trigger_time_reference; + arrToVar(length_trigger_time_reference, (inbuffer + offset)); + offset += 4; + for(unsigned int k= offset; k< offset+length_trigger_time_reference; ++k){ + inbuffer[k-1]=inbuffer[k]; + } + inbuffer[offset+length_trigger_time_reference-1]=0; + this->trigger_time_reference = (char *)(inbuffer + offset-1); + offset += length_trigger_time_reference; + this->shutter = ((uint32_t) (*(inbuffer + offset))); + this->shutter |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->shutter |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->shutter |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->shutter); + this->id = ((uint32_t) (*(inbuffer + offset))); + this->id |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->id |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->id |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->id); + this->trigger_seq = ((uint32_t) (*(inbuffer + offset))); + this->trigger_seq |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); + this->trigger_seq |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); + this->trigger_seq |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); + offset += sizeof(this->trigger_seq); + return offset; + } + + const char * getType(){ return "wfov_camera_msgs/WFOVTrigger"; }; + const char * getMD5(){ return "e38c040150f1be3148468f6b9974f8bf"; }; + + }; + +} +#endif \ No newline at end of file diff --git a/source/ros-max-lib/wrapper.cpp b/source/ros-max-lib/wrapper.cpp new file mode 100644 index 0000000..6d4860c --- /dev/null +++ b/source/ros-max-lib/wrapper.cpp @@ -0,0 +1,484 @@ +// © Copyright The University of New South Wales 2018 +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see http://www.gnu.org/licenses/. + +#include "wrapper.h" +#include +#include "ros_lib/ros.h" +#include "ros_lib/ros/subscriber.h" +#include "ros_lib/std_msgs/String.h" +#include "ros_lib/geometry_msgs/Twist.h" +#include "ros_lib/nav_msgs/Odometry.h" +#include "ros_lib/sensor_msgs/LaserScan.h" +#include "ros_lib/sensor_msgs/Imu.h" +#include "ros_lib/turtlebot3_msgs/SensorState.h" +#include "ros_lib/sensor_msgs/JointState.h" + +extern "C" { + + // ROS Message + std_msgs::String str_msg; + geometry_msgs::Twist twist_msg; + + // GUI callback function + void (*twist_callback)(void*, const void*, int i); + void (*odometry_callback)(void*, const void*, int i); + void (*imu_callback)(void*, const void*, int i); + void (*laser_callback)(void*, const void*, int i); + void (*joints_callback)(void*, const void*, int i); + void (*sensors_callback)(void*, const void*, int i); + + void *gui_obj; + int twist_order; + int odometry_order; + int laser_order; + int imu_order; + int sensors_order; + int joints_order; + + // Ros Node + ros::NodeHandle nh; + + // ROS Publishers + ros::Publisher pub_twist("/cmd_vel", &twist_msg); + ros::Publisher pub_chatter("chatter", &str_msg); + + // ROS Subscribers + // turn (geometry_msgs::Twist) into (**void) - c_wrapper + void twistCb(const geometry_msgs::Twist& received_msg) { + (*twist_callback)(gui_obj, &received_msg, twist_order); + } + void odometryCb(const nav_msgs::Odometry& received_msg) { + (*odometry_callback)(gui_obj, &received_msg, odometry_order); + } + void laserCb(const sensor_msgs::LaserScan& received_msg) { + (*laser_callback)(gui_obj, &received_msg, laser_order); + } + void imuCb(const sensor_msgs::Imu& received_msg) { + (*imu_callback)(gui_obj, &received_msg, imu_order); + } + void jointsCb(const turtlebot3_msgs::SensorState& received_msg) { + (*joints_callback)(gui_obj, &received_msg, joints_order); + } + void sensorsCb(const sensor_msgs::JointState& received_msg) { + (*sensors_callback)(gui_obj, &received_msg, sensors_order); + } + ros::Subscriber subTwist("cmd_vel_rc100", twistCb); + ros::Subscriber subOdometry("/odom", odometryCb); + ros::Subscriber subLaser("/scan", laserCb); + ros::Subscriber subImu("/imu", imuCb); +// ros::Subscriber subSensors("/sensor_state", sensorsCb); +// ros::Subscriber subJoints("/joint_states", jointsCb); + + double *twistMsg_floats(const void *msg_) { + const geometry_msgs::Twist *msg = (geometry_msgs::Twist*)msg_; + double *data = (double *)malloc(6*sizeof(double)); + data[0] = msg->linear.x; + data[1] = msg->linear.y; + data[2] = msg->linear.z; + data[3] = msg->angular.x; + data[4] = msg->angular.y; + data[5] = msg->angular.z; + return data; + } + + unsigned *odometryMsg_header_ints(const void *msg_) { + const nav_msgs::Odometry *msg = (nav_msgs::Odometry*)msg_; + unsigned *data = (unsigned *)malloc(3*sizeof(unsigned)); + data[0] = msg->header.seq; + data[1] = msg->header.stamp.sec; + data[2] = msg->header.stamp.nsec; + return data; + } + + char *odometryMsg_header_frame(const void *msg_) { + const nav_msgs::Odometry *msg = (nav_msgs::Odometry*)msg_; + char *data = (char *)malloc(sizeof(msg->header.frame_id)); + sprintf(data, "%s", msg->header.frame_id); + return data; + } + + char *odometryMsg_childframe(const void *msg_) { + const nav_msgs::Odometry *msg = (nav_msgs::Odometry*)msg_; + char *data = (char *)malloc(sizeof(msg->child_frame_id)); + sprintf(data, "%s", msg->child_frame_id); + return data; + } + + double *odometryMsg_floats(const void *msg_) { + const nav_msgs::Odometry *msg = (nav_msgs::Odometry*)msg_; + double *data = (double *)malloc(85*sizeof(double)); + int i=0; + data[i++] = msg->pose.pose.position.x; + data[i++] = msg->pose.pose.position.y; + data[i++] = msg->pose.pose.position.z; + data[i++] = msg->pose.pose.orientation.x; + data[i++] = msg->pose.pose.orientation.y; + data[i++] = msg->pose.pose.orientation.z; + data[i++] = msg->pose.pose.orientation.w; + for(int j=0; j<36; ++j) + data[i++] = msg->pose.covariance[j]; + data[i++] = msg->twist.twist.linear.x; + data[i++] = msg->twist.twist.linear.y; + data[i++] = msg->twist.twist.linear.z; + data[i++] = msg->twist.twist.angular.x; + data[i++] = msg->twist.twist.angular.y; + data[i++] = msg->twist.twist.angular.z; + for(int j=0; j<36; ++j) + data[i++] = msg->twist.covariance[j]; + return data; + } + + unsigned *imuMsg_header_ints(const void *msg_) { + const sensor_msgs::Imu *msg = (sensor_msgs::Imu*)msg_; + unsigned *data = (unsigned *)malloc(3*sizeof(unsigned)); + data[0] = msg->header.seq; + data[1] = msg->header.stamp.sec; + data[2] = msg->header.stamp.nsec; + return data; + } + + char *imuMsg_header_frame(const void *msg_) { + const sensor_msgs::Imu *msg = (sensor_msgs::Imu*)msg_; + char *data = (char *)malloc(sizeof(msg->header.frame_id)); + sprintf(data, "%s", msg->header.frame_id); + return data; + } + + double *imuMsg_floats(const void *msg_) { + const sensor_msgs::Imu *msg = (sensor_msgs::Imu*)msg_; + double *data = (double *)malloc(37*sizeof(double)); + int i=0; + data[i++] = msg->orientation.x; + data[i++] = msg->orientation.y; + data[i++] = msg->orientation.z; + data[i++] = msg->orientation.w; + for(int j=0; j<9; ++j) + data[i++] = msg->orientation_covariance[j]; + data[i++] = msg->angular_velocity.x; + data[i++] = msg->angular_velocity.y; + data[i++] = msg->angular_velocity.z; + for(int j=0; j<9; ++j) + data[i++] = msg->angular_velocity_covariance[j]; + data[i++] = msg->linear_acceleration.x; + data[i++] = msg->linear_acceleration.y; + data[i++] = msg->linear_acceleration.z; + for(int j=0; j<9; ++j) + data[i++] = msg->linear_acceleration_covariance[j]; + return data; + } + + char *laserMsg_header_frame(const void *msg_) { + const sensor_msgs::LaserScan *msg = (sensor_msgs::LaserScan*)msg_; + char *data = (char *)malloc(sizeof(msg->header.frame_id)); + sprintf(data, "%s", msg->header.frame_id); + return data; + } + + double *laserMsg_floats(const void *msg_) { + const sensor_msgs::LaserScan *msg = (sensor_msgs::LaserScan*)msg_; + int range_length = msg->ranges_length; + int intensities_length = msg->intensities_length; + int num_total = 7 + range_length + intensities_length; + double *data = (double *)malloc(num_total*sizeof(double)); + data[0] = msg->angle_min; + data[1] = msg->angle_max; + data[2] = msg->angle_increment; + data[3] = msg->time_increment; + data[4] = msg->scan_time; + data[5] = msg->range_min ; + data[6] = msg->range_max ; + int i = 7; + data[i] = NULL; + for(int j=0; jranges[j]; + data[i] = NULL; + for(int j=0; jintensities[j]; + return data; + } + + unsigned *laserMsg_header_ints(const void *msg_) { + const sensor_msgs::LaserScan *msg = (sensor_msgs::LaserScan*)msg_; + unsigned *data = (unsigned *)malloc(3*sizeof(unsigned)); + data[0] = msg->header.seq; + data[1] = msg->header.stamp.sec; + data[2] = msg->header.stamp.nsec; + return data; + } + + int laser_ranges_length(const void *msg_) { + const sensor_msgs::LaserScan *msg = (sensor_msgs::LaserScan*)msg_; + return msg->ranges_length; + } + int laser_intensities_length(const void *msg_) { + const sensor_msgs::LaserScan *msg = (sensor_msgs::LaserScan*)msg_; + return msg->intensities_length; + } + + unsigned *jointsMsg_header_ints(const void *msg_) { + const sensor_msgs::JointState *msg = (sensor_msgs::JointState*)msg_; + unsigned *data = (unsigned *)malloc(3*sizeof(unsigned)); + data[0] = msg->header.seq; + data[1] = msg->header.stamp.sec; + data[2] = msg->header.stamp.nsec; + return data; + } + + char *jointsMsg_header_frame(const void *msg_) { + const sensor_msgs::JointState *msg = (sensor_msgs::JointState*)msg_; + char *data = (char *)malloc(sizeof(msg->header.frame_id)); + sprintf(data, "%s", msg->header.frame_id); + return data; + } + + int jointsMsg_length(const void *msg_) { + const sensor_msgs::JointState *msg = (sensor_msgs::JointState*)msg_; + return msg->name_length; + } + + char **jointsMsg_names(const void *msg_) { + const sensor_msgs::JointState *msg = (sensor_msgs::JointState*)msg_; + int length = msg->name_length; + + char **data = (char**)malloc(length*sizeof(char*)); + for(int i=0; i<3; ++i) { + data[i] = (char*)malloc(sizeof(msg->name[i])); + sprintf(data[i], "%s", msg->name[i]); + } + return data; + } + + double *jointsMsg_floats(const void *msg_) { + const sensor_msgs::JointState *msg = (sensor_msgs::JointState*)msg_; + int length = msg->name_length; + int num_total = 3 * length; + double *data = (double *)malloc(num_total*sizeof(double)); + for(int i=0; iposition[i]; + int count = length; + for(int i=0; ivelocity[i]; + count = 2*length; + for(int i=0; ieffort[i]; + return data; + } + + unsigned *sensorsMsg_ints(const void *msg_) { + const turtlebot3_msgs::SensorState *msg = (turtlebot3_msgs::SensorState*)msg_; + unsigned *data = (unsigned *)malloc(7*sizeof(unsigned)); + data[0] = msg->stamp.sec; + data[1] = msg->stamp.nsec; + data[2] = msg->bumper; + data[3] = msg->cliff; + data[4] = msg->button; + data[5] = msg->left_encoder; + data[6] = msg->right_encoder; + return data; + + /* ROSSERIAL MESSAGE IMPLEMENTATION: + ros::Time stamp; // sec, nsec + uint8_t bumper; + uint8_t cliff; + uint8_t button; + uint8_t left_encoder; + uint8_t right_encoder; + float battery; + */ + } + + double sensorsMsg_float(const void *msg_) { + const turtlebot3_msgs::SensorState *msg = (turtlebot3_msgs::SensorState*)msg_; + return msg->battery; + } + + + // ROS Communication + int ros_init(char *rosSrvrIp) { + if(isValidIpAddress(rosSrvrIp) == false) { + return -1; + } + //nh.initNode(); + nh.initNode(rosSrvrIp); + return 0; + } + + void ros_advertise_chatter() { + nh.advertise(pub_chatter); + sleep(1); + } + + int ros_advertise_twist() { + nh.advertise(pub_twist); + sleep(1); + return 0; + } + + void ros_publish_chatter(const void *msg) { + + if(msg == NULL) return; + + str_msg.data = (char*)msg; + pub_chatter.publish( &str_msg ); + nh.spinOnce(); + } + + int ros_publish_twist(const double out_msg[6]) { + + twist_msg.linear.x = out_msg[0]; + twist_msg.linear.y = out_msg[1]; + twist_msg.linear.z = out_msg[2]; + + twist_msg.angular.x = out_msg[3]; + twist_msg.angular.y = out_msg[4]; + twist_msg.angular.z = out_msg[5]; + + pub_twist.publish( &twist_msg ); + nh.spinOnce(); + return 0; + } + + + void ros_subscribe_chatter(void *obj, void (*f)(void*, void**) ) { + } + + void ros_subscribe_twist(void *obj, void (*f)(void*, const void*, int), int index) { + twist_callback = f; + gui_obj = obj; + twist_order = index; + nh.subscribe(subTwist); + } + + void ros_subscribe_odometry(void *obj, void (*f)(void*, const void*, int), int index) { + odometry_callback = f; + gui_obj = obj; + odometry_order = index; + nh.subscribe(subOdometry); + } + + void ros_subscribe_laser(void *obj, void (*f)(void*, const void*, int), int index) { + laser_callback = f; + gui_obj = obj; + laser_order = index; + nh.subscribe(subLaser); + } + + void ros_subscribe_imu(void *obj, void (*f)(void*, const void*, int), int index) { + imu_callback = f; + gui_obj = obj; + imu_order = index; + nh.subscribe(subImu); + } + + void ros_subscribe_joints(void *obj, void (*f)(void*, const void*, int), int index) { + joints_callback = f; + gui_obj = obj; + joints_order = index; + //nh.subscribe(subJoints); + } + + void ros_subscribe_sensors(void *obj, void (*f)(void*, const void*, int), int index) { + sensors_callback = f; + gui_obj = obj; + sensors_order = index; + //nh.subscribe(subSensors); + } + + void ros_listen(void *data) { + while(1) { + nh.spinOnce(); + sleep(1); + } + } + + int isValidIpAddress(char *ipAddress) { + struct sockaddr_in sa; + return inet_pton(AF_INET, ipAddress, &(sa.sin_addr)); + } + + + double twistMsg_get_linera_x(const void *msg) { + const geometry_msgs::Twist *t_msg = (const geometry_msgs::Twist*)msg; + return t_msg->linear.x; + } + + double twistMsg_get_linera_y(const void *msg) { + const geometry_msgs::Twist *t_msg = (const geometry_msgs::Twist*)msg; + return t_msg->linear.x; + } + double twistMsg_get_linera_z(const void *msg) { + const geometry_msgs::Twist *t_msg = (const geometry_msgs::Twist*)msg; + return t_msg->linear.x; + } + + double twistMsg_get_angular_x(const void *msg) { + const geometry_msgs::Twist *t_msg = (const geometry_msgs::Twist*)msg; + return t_msg->linear.x; + } + + double twistMsg_get_angular_y(const void *msg) { + const geometry_msgs::Twist *t_msg = (const geometry_msgs::Twist*)msg; + return t_msg->linear.x; + } + + double twistMsg_get_angular_z(const void *msg) { + const geometry_msgs::Twist *t_msg = (const geometry_msgs::Twist*)msg; + return t_msg->linear.x; + } + +} + +const double* twistMsgToC(const geometry_msgs::Twist& received_msg) { + double *msg; + msg = (double*)malloc(6*sizeof(double)); + msg[0] = received_msg.linear.x; + msg[1] = received_msg.linear.y; + msg[2] = received_msg.linear.z; + msg[3] = received_msg.angular.x; + msg[4] = received_msg.angular.y; + msg[5] = received_msg.angular.z; + return msg; +} + +/* +const double** twistMsgToC(const geometry_msgs::Twist& received_msg) { + const double **msg; + msg = (const double**)malloc(6*sizeof(const double*)); + msg[0] = &(received_msg.linear.x); + msg[1] = &(received_msg.linear.y); + msg[2] = &(received_msg.linear.z); + msg[3] = &(received_msg.angular.x); + msg[4] = &(received_msg.angular.y); + msg[5] = &(received_msg.angular.z); + return msg;//(const void**)msg; +}*/ + +/* + ros::Subscriber_ *sub; + void msgCb(const geometry_msgs::Twist& received_msg) { + + // turn (geometry_msgs::Twist) into (**void) - c_wrapper + // turn (**void) into (t_atom*) and output + const void** twist_msg = (const void**)twistMsgToC(received_msg); + (*gui_callback)(gui_obj, twist_msg, out_order); + } + + // turn (geometry_msgs::Twist) into (**void) - c_wrapper + void twistCb1(const geometry_msgs::Twist& received_msg) { + const void** twist_msg = (const void**)twistMsgToC(received_msg); + (*gui_callback)(gui_obj, twist_msg, out_order); + } + +*/ diff --git a/source/ros-max-lib/wrapper.h b/source/ros-max-lib/wrapper.h new file mode 100644 index 0000000..3bc3ac7 --- /dev/null +++ b/source/ros-max-lib/wrapper.h @@ -0,0 +1,109 @@ +// © Copyright The University of New South Wales 2018 +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see http://www.gnu.org/licenses/. + +#ifndef wrapper_h +#define wrapper_h + +#ifdef __cplusplus + +#include "ros_lib/geometry_msgs/Twist.h" +#include "ros_lib/nav_msgs/Odometry.h" + + + +//using namespace geometry_msgs; +const double* twistMsgToC(const geometry_msgs::Twist& received_msg); + +extern "C" { +#endif + + // init ROS Node + int ros_init(char *rosSrvrIp); + + // Publisher (output) + void ros_advertise_chatter(); + int ros_advertise_twist(); + void ros_publish_chatter(const void *msg); + int ros_publish_twist(const double out_msg[6]); + + // Subscriber (input) + void ros_subscribe_twist(void *obj, void (*f)(void*, const void*, int), int index); + void ros_subscribe_odometry(void *obj, void (*f)(void*, const void*, int), int index); + void ros_subscribe_laser(void *obj, void (*f)(void*, const void*, int), int index); + void ros_subscribe_imu(void *obj, void (*f)(void*, const void*, int), int index); + void ros_subscribe_sensors(void *obj, void (*f)(void*, const void*, int), int index); + void ros_subscribe_joints(void *obj, void (*f)(void*, const void*, int), int index); + + void ros_listen(void *data); + + int isValidIpAddress(char *ipAddress); + + + double *twistMsg_floats(const void *msg); + + unsigned *laserMsg_header_ints(const void *msg); + char *laserMsg_header_frame(const void *msg); + double *laserMsg_floats(const void *msg); + int laser_ranges_length(const void *msg); + int laser_intensities_length(const void *msg); + + unsigned *odometryMsg_header_ints(const void *msg); + char *odometryMsg_header_frame(const void *msg); + char *odometryMsg_childframe(const void *msg); + double *odometryMsg_floats(const void *msg); + + unsigned *imuMsg_header_ints(const void *msg); + char *imuMsg_header_frame(const void *msg); + double *imuMsg_floats(const void *msg); + + unsigned *jointsMsg_header_ints(const void *msg); + char *jointsMsg_header_frame(const void *msg); + int jointsMsg_length(const void *msg); + char **jointsMsg_names(const void *msg); + double *jointsMsg_floats(const void *msg); + + unsigned *sensorsMsg_ints(const void *msg); + + + + + typedef struct { + char* frame_id; + unsigned *header[2];//3 + char* child_frame_id; + double *pose[2];//7 + double *poseCovariance[2];//36 + double *twist[2]; //2 + double *twistCovariance[2];//36 + } msg_odometry; + + typedef struct { + double *twist[2]; //2 + } msg_velocity2; + + double twistMsg_get_linera_x(const void *msg); + double twistMsg_get_linera_y(const void *msg); + double twistMsg_get_linera_z(const void *msg); + double twistMsg_get_angular_x(const void *msg); + double twistMsg_get_angular_y(const void *msg); + double twistMsg_get_angular_z(const void *msg); + + +#ifdef __cplusplus +} +#endif + + +#endif /* wrapper_h */ -- GitLab From 01eb178ba9fc1f8b9e7447a3b05be57a9b0da6ea Mon Sep 17 00:00:00 2001 From: Orly Natan Date: Wed, 30 May 2018 20:30:47 +1000 Subject: [PATCH 3/8] fixed robotin robotout objects --- cr/docs/cr.robotin.maxref.xml | 16 +- .../cr.robotin.mxo/Contents/MacOS/cr.robotin | Bin 240660 -> 290932 bytes .../ros_lib/geometry_msgs/Transform.h | 8 +- .../ros_lib/geometry_msgs/TransformStamped.h | 8 +- .../Resources/ros_lib/ros/node_handle.h | 4 +- .../Contents/Resources/ros_lib/tf/tfMessage.h | 6 +- .../Contents/MacOS/cr.robotout | Bin 221828 -> 276148 bytes .../ros_lib/geometry_msgs/Transform.h | 8 +- .../ros_lib/geometry_msgs/TransformStamped.h | 8 +- .../Resources/ros_lib/ros/node_handle.h | 4 +- .../Contents/Resources/ros_lib/tf/tfMessage.h | 6 +- cr/extras/ros/demo_robotin_imu.maxpat | 100 +- cr/extras/ros/demo_robotin_joints.maxpat | 1908 ++--------------- cr/extras/ros/demo_robotin_laser.maxpat | 133 +- cr/extras/ros/demo_robotin_odometry.maxpat | 153 +- cr/extras/ros/demo_robotin_sensors.maxpat | 43 +- cr/extras/ros/demo_robotin_tf.maxpat | 561 +++++ cr/extras/ros/demo_robotin_twist.maxpat | 34 +- cr/extras/ros/demo_robotout_twist.maxpat | 24 +- cr/extras/ros/demo_robotout_twist_full.maxpat | 2 +- source/cr.robotin/cr.robotin.c | 235 +- source/cr.robotout/cr.robotout.c | 3 +- .../ros_lib/geometry_msgs/Transform.h | 8 +- .../ros_lib/geometry_msgs/TransformStamped.h | 8 +- source/ros-max-lib/ros_lib/ros/node_handle.h | 4 +- source/ros-max-lib/ros_lib/tf/tfMessage.h | 6 +- source/ros-max-lib/wrapper.cpp | 89 +- source/ros-max-lib/wrapper.h | 11 +- 28 files changed, 1178 insertions(+), 2212 deletions(-) create mode 100644 cr/extras/ros/demo_robotin_tf.maxpat diff --git a/cr/docs/cr.robotin.maxref.xml b/cr/docs/cr.robotin.maxref.xml index 989a247..3f9fea5 100755 --- a/cr/docs/cr.robotin.maxref.xml +++ b/cr/docs/cr.robotin.maxref.xml @@ -60,14 +60,14 @@ Inertial Measurement Unit (IMU) data http://docs.ros.org/api/sensor_msgs/html/msg/Imu.html - - Sensors State data - https://github.com/ROBOTIS-GIT/turtlebot3_msgs/blob/master/msg/SensorState.msg - - - Joints State data - http://docs.ros.org/api/sensor_msgs/html/msg/JointState.html - + + + Sensors State data + https://github.com/ROBOTIS-GIT/turtlebot3_msgs/blob/master/msg/SensorState.msg + + + Joints State data + http://docs.ros.org/api/sensor_msgs/html/msg/JointState.html diff --git a/cr/externals/cr.robotin.mxo/Contents/MacOS/cr.robotin b/cr/externals/cr.robotin.mxo/Contents/MacOS/cr.robotin index fb3a8064e7ce4a1d893fec27728d2b9887c57a75..d083a3c8fa2c032dea789c639aa666afcfefcb0f 100755 GIT binary patch literal 290932 zcmX^0Z`VEs1_mYu1_pKp1_ovZ1_1^JCgD8{3=BMsFfk?r1_maF5|9|fC>RZa(GVC7 zfzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7;+(S?$_IY(2hR?2egBq!pgwV%D}+D z$iToL!o~28ISk1_lrfbqQE22P?!3Hn1L$ z=J<@%oPyLMFdx+nnX?QGeM}4tAR06P0yY3dK+OO#uVY{<1JIfM}HP0Gk9M;^Ry6$}{s);xqHo^0Bz% z!#xIuJ%S7jAR5_jh;9fOAD@~LpH`HZn+oHjhR22v3=A&v3=ANe8KMM(1cmhlMo^r( zIEFYPNrTdZ10+3whLB)s3KS0@Rq^q8Iq}daEhs5sh>yqAuK`jhzz80U0x>}tq#tA~ zh#eoFlZej@4Uiic85lq`au|Tz;sr7Q9B#S!pg_zliBBudOU7`Ah9DyYC=Nh0vKgFE z{U9nnJ|(dv5yXOEbiWt~GBR9YVPF8!xWW;XCUSH0^B^W*h9`>{BZGz!L>Ac{pzw!? zg7hR67sEJUzoCYyjt3(H4^$qP86fj4z8CC`c5p_le5$FJ;1Oo%Z9t}o@Tu_9x zFf#1vXJFuFU|1zJEGhe{{S4>Gu86$)eKfqr&n6lwO*TNW>oImj{={p`A~|!y4a!*e^hC zjp+8}=?>-SEj`h_;|3=qL$`fr?U&Bb1D(EmI!#nMT{pb&JI27!>AIu2b_WB0iwy$< zgW-X0-wnMJAD?7k*!Tbc|Nq^!dpd1Yj=QLU@)<*Ci3&$&hzd`q>zWs)M;REpeRp*F z9_e&l@$vx!14FOtiJhS6>0|+G05g4;y!dbwyB&WB*|Ffo#Ulti=De(d*wO8~p?l&T zPDTd9Z{4*AI&D-sT~t^)LsU49yQqLdgrT!^#*22arCXY7x1f4V{uBX^O?eRmwsZ^F zV-sG2lK*knBcR~yc0B^N8yu8E-KAeFKXtnH@VD|ZFfeqx_B0*=1$;rqlODx9^*7&Q2bcPS*!7mL35G=#%E!Ck*^8&d^AE&^xjG z1l(^gx?`VUi?ysDX4>2$tcl`oNVx6uJ zUIsBRFud@!!8EFfkWqJDtU)#k=9@1N-+XC4VgQPfG=6y(29SR+^HV2_%8SF6pb-7? z;d!5pl1@aW({;;>&tNgI z7eS@yfddQ-h9|p2U-WL;ag2eXdzTU$BLm1I^2b>~H4&)PW9f9=(CNG8#jgXP=*j_S z5O92h@`nQ~x&*pIdAdtEx_1<_Ffw$Oet>3OevnID@4VP}02FhOeA}u8%`SI(C+Z$$ zV1QW#@{sF|7n2Tvvj-^fUdA(likBDs`x%;lF!Q%Yf=inhpu~4%Kge@WIvoYNU7vJ2 z2y`=mM8nJ>*$CN+3{YWR`lP!|pxX@DDo}audgX=k0S1PbTwsHr9CrYxn{L-9#~ms_ z4(N7$a;!lCBnT2~&;YR@N-J zJm6{vebOCN)5+5H^2q=H|6hV+yIt?}cC>&h2p*Le&-Q`B@J{c< zE=Uk{w)ucEn25@YGccJxm`ngvW)n&bAn+jMqK}hMl0y+a3C(vnfRfoJ>IcPTvzR0%6+L!wk%TY7>UZ9DvAlZv)G) zb&9CG_`Vn9-6!3hU?E4AZr3NBu3x%czce3l02h>LX=!?R$~#RaPzFGhXW;S*USCOc zhl+HU3Ut@7JLFm$?p z;BS=$r`iv_9nOas7`j7$bc#TlQSy5k7+%_dlh}{u9ia5h$lnTT`*pj1=ZpRSqH! z$}w?lki66a>aM?>!@$4*O}#%@K}CDF?~lfVpcV(Hs0Ni|=f3{`-|70Lx%LaR$pdzN z8_XeJkX^2`2b7^ep@V9M2*_=QU^jf|?U)bId%Q_Q0Mv8_2O73;c(NOmC{*HN4}+ou zCH;gozY#%?kDVan7&=|Q@VA1!76Y~qhp%>g`~M#lGLTS!WZy5n9XgE_xW4E(L25)E3Pdx8oHP(KICU-|d{f8_Q+So50@n17(f zeP`*H&QMUJ=(sCb=D6zSO=<%o^^(?bh5qZ+675zt*#6V49&GK z82DRs!Eth+x1$|YS%!Y;Er3RRHq#I(- zEF^oBQ0)OVUkTdNgk+B+*yJZ*d!D@94Xzhq_AErQXV*>?|2!bZKT=5c+ytBa0Bp~L zmwsR#%%0Uq_5`8YbB7pvHtj%!TOruwJ79b6ynF~QNMQDCLbB)84ix{~AjTdqBzri) z_S^v5bK_+Riapzr>}f)^=K?YIJlc-%&qA=t7r^#hc*zdt!TfUo$sQ?Gd#(^;PZg3q zmSB^wfbF^RauztL!t6PLWY4DUDB*U77<+_}?70Xw`3%^eGcVyu^$d2#SW0;-TfxxN)N?9uIdpts}E0S1O$k{}0_ zegSpfeNNNsOJYZ}?k4{b{Jamzv<*_XXb0>;tt&T*2MOPS+RR zt{=L6zgRm~@b|t4C$~4f9jA7Ks*DfarC+*3rip-B!J$uHlx_vLKr9dPw}J*7x?SJ& zcBFue1{E?Nkc*gFQ*d$C+hGQ(twLcH7}$iDt@`V-Ts#{J9RAoN^^`d-V zG#=ce4f4g4?$QU)1|O)y)mfs#^WyMEQ0%?w4t>!bRMXAV1!7DB^3#r`biMK7;zm$Y4l-r}Dj&e@`y3<(gBm)J z?B4161Ts+YVv7<3L-PT4XrJ8m%!_6vkeO!~4}yATt`C|IuynfKIqnK>0zvhF2BkY) zuXMXUVa*W$slEYjvvm7j>E?ub@WrajnGvmeX&@0_R zEFgD-JIyCv94D-t1FrnYiy5fO-+-iC54@Nz4+{1Rm=3!DRaU3w?2^K*CUlg48pD?n}l$LMLW z))LUj?1~qOU>98hNxCk1@qaxiMxjF%80~XVdQ3oyUi9=B#Q>_)z%5y5vJ{s9h0mRC z*B7ik8X#vrfJWRMM8w&G-Twd_CJ(wnsTZs?^Z_*D?jT3pnHPM7l_MhV#Ebjuz}CV{ zhm1rXd2vr1E={H(u}&R*s1OD=+S^0R<3l)4^4* z>xE9=GcT+_j%87K!2q`53@B7UQNNfd6Havc9(j==$-uBv6_g8DR6taB=n>HHCaCQN z;&!^I@O1hfcwrAV5iQa{<3&i31_~~a3(zBN&x`e7-H=Gz@xpfvD5e5HF@=#|!R2ub zQiP$D$H!eCfM#8eyWW8`+>i@geOXYvfeYLiP*viKrNC`n4GLL!S@xvyAXq8(0{6m; zFv7|a@pk5gIsxTxK#f0FaHv0$fpl9vz*>%gLJbseuUDbC4^q~Gorql4KIz^M9^K-B z4@7s?fJ(*#FE)bpKVbH~(dm05+xG!;cj%MGL&yeXmp)*ImDYPYeRp(*Zs{!D@M4lI z$YM~Q@AlmSDXl?;HU}vBUpRwJMJugAV|YlVHOLN-FTin+R9dfju^FrzQn;*m5x5Ez z_c7oBW>Ec0D1U-R1ECr79XNs?KnEO}Ywxi0_nLv*KrdKzz*X!Wcu5`lpqr-)R?YUW z1f`5K-L9~n=mF5gpDRRH^8pLkWY38g(sB$8cVjPn;umne(CrEuVEDu@2#OfDm7wrJ zOa7n%PNd`yasxaFkjkthFE)U6Lz*B5Uihs91py-Yql_nk!UJD@1xfeF_0@E6uz<^} zH{f)SrM&800dhWai2_y%DXuSehoaP1H(taMR*p#bS6=87P>xhyd4U|uqVggDtOZ_P zeO`{=eGn7CIi~_@0w34}c+S~KlnJ1j;TOwf85nkgr#)Ff6Z;I^p?hE@9!M0F0hJ2ZbWGDBtp8?{ZL@+t7RjTp@ubzaaBp;Q2WY#QfUA<)HaB*p!9q zj~8;wK~t;n`8aTS2p@mu*acd`Vfd}n_X8x+f+ns(LZIRr)cNgnebHI^q%-uvi#y9e z4tUdC`{qCY)WZ#*|9?9S8(A}jWSZU%v2_d#y%UtzF)-|N0?j?|s9DFr0QC>ZM35l3 zXeqt(f^Qjge0B$DrW`bq9r~vE6sUO$asx;V++KIR@gfOqGtvk)@_2iASmPT7Mg|60 zpPZ*Vl%sot#484dZZq&e5ruB3 zS?AV*{rf^1fzEdZI-vXp_L*Y`ws=nPP4?xVue*_s0q zcUcA&-^K6{Y$Pa9z|7VRkUOTPfYiuA^kS+>0IP`ssbN?Onyu>%J<(lyq469;2LnTA z=>-t`+5h+d|HIk8k=TFW>~o+!b8t2P|3K7VX?#}t52WTwcj<}7Xa7Hf*eAM6&on># z*I9a|yL3jU2{_=uDJVpRqq8*v}EFzm1br6FHX zEP#9p;&rzAfRsysl)H8`*LE=Qw}QH;J3yn)y}m1syS7Z$0d?^}nqV0YB-h#M0n+$= z3CJE7(D-x&c_!`q-h)d(fxn{DwWZs2L3e0J zcj*GnPoNY6T{-b$7T9nLkSCx~4{C+>hOX!?Z2_qR^{`4*I9^CBVPF8S@z@0#u{Qj6 zoJ9rP;BZl40SSOC2RWj%)dXz00f?Nc10uI-fE>aHvd48wbL|uc{$6cR7(uO*f#j?g zKY#!KzXLR=e4IrEM0K`;s23WG85nke`o=p!*6aeMx8Bl*5AWL`Xgzg|7Xblf4d0y;Z2pUvrN$Wh$zx_DK;p-R}7xX}!atvf?H<;ac1XK!wn!qnEEnr}Puipqr z>vrWx>va9czuouW!G|3D+e7~y{Kdg}F|G3i|MmmTM_5qTYlJnwF@cq(9KE5R_koj! zFKC<-nyx{i3l?;J(pmc8MaV)>biUx<=K8tQ^$mD3qz^J5^rqAG$4gL=4;JhNO+dfU zTEM{2Y@y8GA`e=?A_LO5Ylim&|P}7P><;AT9(AuHf^#ynt*N^5SCXmq~)bSx? z_rm9wen7^Fj=R1AWiC+7<_j7t0&zNBA9TAuv37mI-|Gvu^hdYv7iQll-JvM+@;4TM zeD$We_6-AnuNYY2gWis1E5K#(3mcH@KubKjUEeT+CWN27Tn;JdrXeJM|E)6uv+F1LA;nXZ^{yuOm;`&7w!~;(-!$!+){fExNgXbxGq3T$X)&1{u z{qXWG*a089egAYacDsH7t$Jf@J|X~`VnnVl!R-Ye@YpqCeOxyuGe;*!x9^W`PZnkm zmQD|r&V$VdSzx)r^~(z*u<2jGGkYlQOVE5J#Dj*HI(>hDoem1p&THC+%m$qX-M(M6 z16h~@SULmH4E^xpE;xOEXg&g&ZiKG)(EzoUc_531KJg2>e&}}n0}}f1iC>H36My81 zPy9M3J2_xN9xQM%bZ5VLQ4O}?P4f{A*nB3!y}Q6c2zBz8ZU)1XouMx}Pj&mg`2Mjo z^h0;(mu{iX3x=1ze}t^?=`Q`j%+|>U8n-X~(#ZyKHAa6EG@lL$4;1skLE`$M^F(Lp zo0;9dZ@&Kojd-(lyMCGZ{by$wOY6v_ysF1*o0`rP>qCN5GTBDCr4hJ{FXY ze18y*KPFnl-&%0!qQ@WVdajeopw0AW5@-KBzmNE~o-r_VPp|-yr9ZkGY@RVNfNG->6_!pH z6^{QGArTK-9|uZLsQMo~1?m3*B0>5YNY%drq;tX!5DC(M;RD<{a2n4^1n*AE9vQBBX}Jl*7QJ@ zc?UtuIw83gJ$;d7-oj8&x~HD|5|gNF-otF_n%7uFUGo&{v6~03|2TFUfCrkvi&9;G z9A{Ah^L;D#%Ld*ukY#vx8}M%MLHjKa&@}Cd2t+M35&`L{pp}llQ+E+ zch3gd`T~dIKyA+D?I6_78S@ zpbH_JYoEZK_5_yRLBmB@4TP=k!;#+cl*fqjesi0JYJv}yo6%j~} z@Tv@)kxZbyLI;OVP;c%_^8t2d*AL(Z`N4nLo-yqTBVw zCw@VWZdWi@2Ez4#@fDzaP}K`kt^(zQs$LLZ1IhlglBeQ;bo0C$dUKJ!PhG=i3Z9|TXPKk4=bITBQRz!pCq1&uF< zA3!k=yr8w)^^Udc2bg(xz~*`2HV-zn1Tqg)sDXO0p!qEVJ zCp}~OR|3hup!qceqy`UopbR{l((Ne$-uU(A;6o7?(g*Fe1Lqu2It5w$;^kSe#a}vIpP=O?&@P^CS4eJh zfa-t1?E0kJ_YKqtSVlSpG2-9@MzAS}JoJUX7h(z|4+TI?xr1T~Ec-xAfeZkF_a8y? zj|^J-AIt}}|9e0&1j#=vphh;Ny$x;(fZN;r+n|kaP)WqU&4CxB$dRYp^#}hp2R<+d zR3^ciMlT<=qTek0+6AuPEbK7;2`mtKk5K@*z2zA2VCQKxcdt^-3a$* zpcDZasJ(^^mJdol5}PN74#vDj#?K1De@+2^zKUcKy=Z5qX&bydwy*WaLFNXuXdss9D3% z?fM6t$f5BIDj(td{Wx}kCck=1A9U}iKEuEO*72xzlVr|XT* z&?_%GJ3tBNM)yRp2I%aE>jnN+(41Yj>jmgGtQU9N85kht8~XStsHevQ+PwsEYp3g% z7hlRiQ#)UdH}HU_)Ie@;5P-8J;4Bd+3)w&L@apZ*yu`rJ+c5JlcuoMcr}~8sXod(h zH*%as1w?hY{_pht@xmE2=?dC0CIK3aN9~_CzY&297sCh7p=l31nesuBzZbOB4b&6& zebc>U%WU_3Mv`E1)T2-?M4l41_s+7S_};QZIG1s;#h+MD7}Cx!5!dq#oq$j z4GWIC7uJnB+90)%9ZD|{DGzyp^o!;S2L}E&NaVf%EdpjydErsYz@QDKJyAnEY1>P*?3R=bQ`lj3W1#_c}HUmQ^m~7q&aw0o_t2a0X z-hj4Iz383*O8bzV6&paz4j%!R?g^l*(R}ECCxo#B#ASeO;)nVKw5samHPEI6*B8xD z-?!#4FfcUMzWL9>xiW=IgT@VELg zFfi-@9c9$*`=WayIC@>5bY7U*UHatvzs6sXpvU2T%%u1SJf;Hm87tgb-M%k68$o3u znrjgL0ZkHvVh$YhZ2YZukRXBi2c#Eb!f|jwfI3{wJ3+q0nvSxOox#E18U|WN1N9`t z0C3WVtxSoO$D^f&GkbkI8z^Y zh3wG_LNyi7yZ%gx`)58*@8Ie7LQoN_@%H@{42-qW!HTm!Vg z^Al92y9X=-D(IRIxPZzm7ZsNOmk`AZMXZG1pp^(OzJZH4M*bE^5d{i8?M6`O*&g8p zbR(xd9b-{qW-b z&;S1oPjw|%7Apt zf$y8nj#DQ={`%0_@eIs((b@6pBm)EJjFuSac{Lrb&zq0Pz}L4DZZG(NlhB85aC-rg zT3SIXufdA~K6Hn^>1^o&2}9Zo;Kl+Au4ck2Y|R9e`VxnK#ZH3!`|1n2fA5`u`u7`{ z@uIWi--+SiU$qk;|9<+0?%!|6q5frq`B!LI_}A<>$iGP#{$+ysR}9Q}(b=JPd^p6f z+cA)TnZBdPuN3G26yFb>9cp04i_Q)^(77o#DxE_+|Arj}`S%eec7P7F>f}** z!S(t7f8-t=s1xV=;l;#CP-o}O%M1Vi|3~ewVyt)Z{n2>}v_8fav=id;-;%fQflhy%3NNvzY41xtS`09I9U^fqh;sXhQYxedIE4YD>7%XuZR3K+WD4BBDt z_F#cbFu!>5tpe=)Zr3l&pq>+KG0+PgaGUM}sILT`hycsJ=niCoE*OH%aqCoo8ZU3a zlN6vHAGDtdssA+~*7t&rumCjyx?TSqcLmM&Fm(I=VD^RWy6$v+@d9+o2xzV!w4D>& zpL7Ks6$M^!_`&i7e>0>J2b#t05@7^QfW2Vs_WjWTVS`3e-@H5n83tu`{m=}SJjTKZ zT8_Z%`lb26e^5&lG%ERl8MGZ1WCM7*6S+Nt9KI|Kpk~z{aJa(SU&!)b>M`Y;-|#^E z3pq~@>eJ@hFD(4cknSyL&DFt&%$Hw)`jB6`L;rN}Fo8YI*y;M^<)#0i^FVk&%kRMB zeQ4%^0uR)h2c2yOq9F!@yZqoajQrbJ7`uJHfXsi;9r}lxsT0ZU^9Zw%=Xc>Ls?+xm zC?P?TCukYMi*E4NV^I1B9dmM!qdW9VCs*?!mQE3s7tpb-<^u|#_A6*bDr7JNHT|Q^ zkFcn`&}0OyGeKV8hCcoT4KnapLU-s7=1}k$1SqMwet2QU$iM)LybsL>6rf26dS0On zk}P!G4z%D9dAtKWo{6%a6R&+)O!(~cL6XH`A98w;sl!Y!$npYM>>j z75Wm&4l!ix3Vj9VFm;8#hI5#^Lf^nSEM1{*;T+bk(06bSTUY3NIENiPn8DHM`vGJ# z$f2$exEA%;>gKDz~ zX!hVnSLh8$gTF(Bqbu|#lpVss*cEyU&SB~by$$CucZJ@8b6C1U@4`8(U7`2j9Ja2| z`*03BxD&wvnK*)$lBoFwH2w=MF*|*~fE9j$E)9TAcf)3gd_jE^{%t&hoxTsCQjn#b z{M$l|7!N+;;Jk=UhUwrV0qio&2OmjbmtldNu+?4qp}Y1C|F#l4)`QPDI6rmzKIja6 zf)Hgp_)Gv(l>Oi{379Bo5%Pmi{DKZFpzhW|j!xe<(Cvh<&HG5cx&f8K^cAKI%vYE) zFkfNHuylsr0qy(8@YRjZ&^wsELKTJi3M2~h)eVrZc#wRBd=3+2+!+#A7mmAvr7(Sk zDFgErrVPwim@+J#p;tP6FCg3xi>nKrp;r*1u((1Mh4~633i8zjkgr5QHSGZo$ohlk zBO0Jh6Nvp1@Y=t0?kJRz-MiN z4km-luWP_vfKq?G==6Q^!W!IwdC}X!xs`#T8B{nvf!AODU^&pygP>t(R?z4Zs3MDC z1RY2KKFOxJ_J<^YGo+sT(e3->cnf4c0X$&v1H4%5$II*gK_}mU+cV9zU*PJ$K-7Z< z4nXxZqJoF02cK%wSo?uNgMop+8L~;?L$~jfV=jy?4B$e75wuAGw3z{#`x|TDfX>3^ zZw5`hc7q0}pB!spbO9Zc4UQksc{*UnfDci$0Qm_#QR4t-xxiUIa26JI4xpJV25`eD zwDT!){d9RV=ok+C?M?Lh-V*IRKXiG}W-sud5On?vJU(Iri&FTa^*5ls2EL$a@8;SU zDV?sMB+lOh35pA_VK(U08#ruV_CTVyo1>evJM=>1Ay7y)A7Td$ErzJD{J*#pG}yZf zG)xNK;&S0w14zaHV-2nv3=IFeOCO|le&^r*z3~}HUFYYH8{MTBI@;VoCsM>dNb9`M zzy1Ef-y9t`I@;Vpaky4~yivuL)r2$HR;OYD0t~Wqa65Xyhx_uusA7r;Y!QZO{PJB1IeJ}8D zgG4{G>zz*5JKe6ZMw70>NN1%mxNV5qC!A)-P`UB+s zN*uit_(1bD;8PbtR=9!=CwS474eGr>&LxD-o4f%#`$O+US&(|@DRf*pAayTZg0jpG z@L7$%Z@@d*U=2*rPA!mlr|Xj!FTsXB=yrW`%t4XixPuC4Gbv=Z63TcU{`Q&oC(t8=&RSmrkzZPM|G=49A^7b5jh*oj{w?7>+xEPtQH>1WMBk$DKfZ1qN`t4Yhp` z9M=5C0oH&+Z69=dupE5J(D)D(_Z_D|bx!G<4iQ7JFbA4&h#@0bTmVCy2`nywAx7u~*Rx&wK-S(?C^>cPPm460z~90pD6g}&*K z5$JY(aPS2Os%VS=BUo4fU6=_hEP*b}3@-6lz%>$VsUc`{aJTE3ZVv(Mfgo`3CDuR? zIQSB4AP5|Mi9Zm)S+v{rPB$n71o)dlmt;V=-GLIH`2|>-KJyE@-spC{fi)CvU=M{G z2VYS_UZRUFdfGzznLmK*z;^mMy$E^8u7SK$#UBl@Qr0-Jxf?i&VOK`npSD zDnSbzUK~pYl{XidUEhFJ!;a^x2lx2jfEG4HW3Cqfou>)QE~xz-Pq`_c^&V>p~fAw38FZ7duIA24vc zJ^*Jc&^iYGZ7v*)2On^ti!mL1Ab>8$eDHw;OzZ*JQVvjQ3>szm0LsFFJl%yHohD77 zDM`>M%8Qrz;4p>Q!@>csULYKprI0EICI+z-RSaS&L<~NHbO-E30i^Je=nlPu6h1a- zpz;4bosJUVthA@oQ2^F60M&wftQ`gTo7=$Q13uvtEqpF?g3b+rISUd#sA3SOqKZMB z3KIJaIe28xXMRBk5pe&M1-$3sMt6WjcY#Q!Nf)A?%|;8OGcdQn!sraRgoHT;Vlk>1 z#A1jTJdDnO!$<}xj8wWq&me`7L@G3lR6sc$l!j!EyPklwGEYD?H-iqX>;>H?@P*kI zblMv@zpZ%-%5QL+K6JVs=ypBO?fZe*_XuKq?LfEh7x4Jn0q_vo7x4Jn0dRBo0Carq z1GDQ9h$Liu4K!{D9$(wj>8Q}{dIUBScmh-i6e@tz7VN0VaB#SNfSwVFK0bro-b^UM zKVBk}izyFY-w!|i?oTIlzv>^*X|X>*!&i`@BG5j^7jF-N4mAD%ZtB9u_u%70;FCTe zgLsflqtII?K&O3x4?_$6g8hDs<~N}8_qw1rV?5{#{nFtJ+UgBDf)8{l#+?_SQ*d{H zCiQzmA9VSC?(lsA8c!{K(Or6{+pgOlx-%c70OZV0*Bk$@ce-AItx83051_ZFLA$Jx z+tUQbpI5yErHC)R9R}H;@n??}i1FuRZY&I)ejLy-Xju4w#wQeD1uAO$gMXU`%fX*m z8X%x%79*%Y_2B4y*2xEIUbQ5FY6Q@sp5Ph*w8Q|MLU+9axd*LAc+y?S0bbGzzl7k$ zu0&8>@B&sBylFn70PdE8k`qe%4AfqNy0R*D^x`6MVVD^0j zYF~m*7jb>?q7>CpZ@>o=g8CxNzAq5j26VbOINLk{=Zp{FYy;bE02!8k!|eJ3A_>Vh zpb8J1Z61I(q@j8zI`%MH|EnzvGrc3{mr5-1;P?W!*CM)oMY=-;x=VSwYdJvow7~BV z@cjavk^mi}{=yyHl6%tIk-rSuW_SWwS6Li8h%6%Z{!oAq#k=NIv&qw@z0!n{BdOHl4K*J6(9|75T@}sw-5!8kV z{nF_r(R@e-lxiX8Eq!5a0d4wXQ302~;I0*#dqClr33DuTJOVj=faE(thvuV%FTy_{ zc}p?W`3=x|9awRR+WrK^150=47v@m#$&la)ju$UL_QPt=7u_D<1>G;gVnL-P=nz-% z3>B0?acg+^z(=c5C-H^Gy76+@=pTX2l)cJ#^9h#w=1&!^58H4Nr4ulfzk@<fN92IUFA?Jh&4)NZi5oO*(Czx8w_{>5 zXz1ljrkUavhX3pG5P{ze<=3IUVidW2LjsRLS=W+xn z05#1J0CP7lx~pKg%xFcUdY#2_Z3ia|_-h+#1iv`rtyM4nC$Br%AIsA3Qk zAz}ydsK5oc-yl~c!3$Vu5s6+t{7S%IKD@#v4{yI52len6jyr${55d(g$b9_e z$LYHupa1CX2%L*iUqZ%gzce54=zQ48c-)Z%bRgD?wcv9!z*qi3*B_vkADw9RBWQdU zR(zl)K4=AiQor4K@e({`4ytLO^BUm&`OW>{M(3Mu-#ef91zZk#faYYuv%#*Q^wuF_ z&=vX+)W0tM&=F$5*cJK+&H>K`LsW$rfMvy|7)_KNGEEE?1m0(Cg^ey zwEe0XG*$QkJVFbelj24ROHc<5r9BDjn{f0t^v2=OAAMNl38ep9(DYw93wQbluU`S3 z&sxq`nkYEdn>1tG=ZV)o{OeoRu!EX? z@Fow|{uNUE&5Xexf1qY)C))fk{`lj*iCEwAa0Vg@L91FoYgL>;%SN0=*S8pgOEk!u zoe;y(^(|OezQEQ@z)M%~!Dpa?ZghRir%qqcN*2WW5ZFo(kSM5>A6?(l+mIcOzkHJp z!<5HgzG+`Uly90-aF%bN;!XxuJE4yMhBd#@!QTD?t*Qf+kt26KAEZ14tt7k&>F9KT zR}$WWbHMBQAgV$P!Rz^89PoNR7zezb55@tn=Yw%jOIjIFtMx)x=mkhy4!n}^B9skY zNq7m)Vd@IK4CgR+g&qDh%ihYR60=gdm z{7R7Am*xWw$o=`duAuQ~M1P*t{%hog|NkN5(J1{_wEnsSsN@?K{q>vYvHEwI_SZp& zsgU1am-ok?z7?^^gX$**Sf7!o`N-{$LFxKQZ%2AJG|eOCBa!CI93#NHac5i@0= z;RclP8}$A>S@UI6*gz{VzH|phU{02yjUOP*mpR0MN9|DCZ^-U}&WA1I24z{?^N(oq z_~y$_p9F>7kKPW)E@;>x=F9#+fwn!rfL6OmfCw27p#UOOK!gT}&;bz!#~nZyg)$s> z09~oca2&Em__%`ys2m43OkwK-K=bVh*xMh_0l^QWjM%^t|g!O z!6!Nig3hgcff%em4XG+RWCXi?UmynSVZt$jj9_utIzEIr6IdL!jt?P@Sj-5r5#(*q z8Cwsq+xP&7jSmph0|=9ux_uuYrUww>s5XMa7_^@026h{7;IQ!q4jXR}wh9l&nm0US0Sz+vM7 z!ZsR!mU!;y_T7Qq#vM3p+=0W!9r$hR_AtR}4@ej`A%{qDj9}&1@&rgdzC3ZO1fOT!_2JCBFHyp&ewsix6wXIvgOV75vgsg2{ z((U1Z2nFP2&JKvsh6#h0IXfUi8zIgFHU<_72ysL{J?^>&5(;a;q2K@u1rWD8&;uR{ zE4p1*U=4*8*h66j_E1F;iabd<-gn zA@ecdY8leQ1kFQ$SDd~8A2AAB#0XhYi7EzJ*oZ0yS=a~?1Ffih(d{|~REtQ!S5(6L zppf|u9>IeT8Mu8PfNpa|nespv15I|Ii-D#&AYvf99)K*8L9z&PMIqEws70XL`9OmJ zkk!4QxfO2kjeQ6)h()OCAQpkdKo;EqS)_nu5oA3osznz-JF%cbu%*SQVi1c^#UK`e z#6T8Z09mAhWD#VkC)8A^k4}I(H&7v%MW|vBi%`WN7J5E!CaU?P1d$x&>*e zZmuP$p*W?}(FR|56j-M&-6g)3w^^9qP4B&R`_d#~tpT>;CFuvNvV zVvx*-DhA1XATdxFtbk@d&@GFwW$GKc18lkrEWpc|H-O8P4KLA`GcQ56cuA)#k{HBd zR56If5Ha{{`x3A>9gxDvqdRm7QW$xH?#cF@(g|8n2vXeX=y2Q>bh0!9=q@o(7&*X} ze1ndtW`Ma18b&iZU1z|AU}1zR25~B?7{sX{F;E!IfQFF^Qc_va9pKSj-~tY#1>i7R z01cxL%|}YWdk{hU50U%xtxov+L)BR1N$(FWzXod4Kk4mQUI%T{W9<($f;KXOxf z+w}`8Xsr)uY2mtkU5Z@l!^Wxb``4Ol?{M-r zPXe#L0d3Ct#4pft5R||`UVu$ylz!*{Ex-X!Wxy8TfTuFR9N1I_m;;;20CQkd8DI`< zDg(@cO=W;N$Ws}xeQYVOT01p{A*PelU0kn4p>;+JA1bN{=SLgvy z?Ev+{K`0x%hUgHS!_*ae7|vnt3OxenuylnUg>zWDLXW{YY+a$p;T&WyoB>xBXI?_Q z0NdvR8y~^F9}PM@@&$Q4@SYcvc+(>{_VhUHMl1J#u7N%Xx&{OLXeG9^zJ3qZwEhlM zC_|25IPMB*vx82~fv&uQpQiwA^+H;QpjA|uGN3jhb{SAh5xWdar|%We9yN@WR~I^c zuYj)51FfeFF@mkULKTIryaI`W<{>UX_Q-wW7lhFoNemr|%KW z;6W9I1rJCR6g&qY+vC8&11b-Yf(MpIA;AO7qoDay^zI!AGaldVG5c=yYJv{u&L;#vGpUZ5?o9j^Oxq8!P_y9GX17 z_T1}Dps)iSepCVtJ4Ac#{{`6i_Av(@hGP!A496V!5N$PZ%MH{&lmNFJkjiHj?Ck~g zV_q2d_Z>!ISzh^`0Pa(J);&^CV5w#5>7=j%Fy6TI6n+Go;1$=lFbbAPN`n~{fZKyKlz$3T zqJUZhhNwgN2yxV*e1tf{L){)C-~pruD8qwr+mMFw5xN<{!}YL1QiM3_Fg`*YVH;@T z05oZWy2BsbrttmHA;JOP_YXbi045s3!3Y+H?(jzlGl7MnJNyyC%-|x61-vZ>x~3e| z!bR>+1vkIJm0qD$7>^)y@judN7j#iSWc1BP5L8riqltkEX_y#%v;(36WFmO+KeCCC zMg0&3FcVS5ASOb@P)zKS5$uTIfu}oAQV9J37Uaby$OjjMZJmev6g-Uh0-WYxE`f|3 zp^Ab1>x(J|b{$mgMW=@V*b>n0Z`zDig0@h4AhwvpHo2qv1T@wN2@U>jkd_FUCL3>ER>-&-GJ6$9E^_?abdD82<=SM+h_LJU@_B?2rjlI5001aL^f^X`h zb$vGlI(`wDKvI2|LS%hMU_Q4ERUTh`_j@%c?0)oiB<4cH4pHCf9|y^OISw0sfQ~zW z50W|V03B(7&f->qU3ymhK`2@Hr$fmEdzo?36*9 zvYx>9p2M~XLCzuB((R#w@G@*(2~>Tn;Fz9LL3kOaJj9R*Yz)lH2ytXDKLAA=_;RQ% z){ZLt%@e`B_y=GwgYTL;1nL3b=!(4oKYXVv_9m1aBf!`ddkfBC>WaM$=P-B0-hp#i zx?=CbIjmi=_uw41uGsr<4m;9vDA<)$3E)or7VtbIQvDCQZW`QhGQkldCOAUG1Tj5| zJwy zU9o539M-Pbb8rq@SL}H>2RTGwXVt(%#07gAalsKHE;vHOg;0n%N z5pakEfNlZkX+9DV2b<1BAHPe16+eXMGuOO$c??wifaWtngEO!VRiLfY z-5?HZh5%ANK_**VI3P0wsA7;A0*DxVGUH9R?;23?0zKbnO}B?aH_G`wHS(YdpEcl9 zP(X@19VK9m6wsO$ux9AlETCgcLHiUT2a>!HSOF@7;5K~#?au-&O8LO-`vkE`5p+B% zc$4A-@HrBYO^UGm2H&IzIe`Lwlj53AN11NdCy>>AprSHRp}SB9d^QWL41=7_0tpr> zpZl{0R7N4f%>aDv4>RcS2GF@kE^^RtGXRfitm$-Afi;Oh>tw*1n|}?fp_?_JRiu#V zR?s21-M%-v0}Q$gG&)UAbrB!liHH{m@L5Cfcv&L@ zjTZ;-V9FZs1SVtx8nm_ttQi_F;G*XE&>u4b#|vb(6cR5dx&s`*v!$oH3v3|q0z1nH zJzn;}3LRKEv!~M)NeoiXpo&4t8HgA>_wNChGcK@6(>2{50o|c{4nBg%i-j#rqNw@Ks7_-1-zCAKI@D~LmObre4u>}NCyKnmWL_Bbnu}7b{SB&3A+qS zr|*_d*A0kKJJ=@E4WOBJ_y`|ts1sEbHkJnx1&!rx=ynCiiwC${28ov)-2nmJ1s>r1 z;sc479pGAJ$4f}Od}uzB0@@dW++RlS?^LPc@9z|1kte;s^L+=XV1Lrv@jMaQX2;&& zsQ~wPY6zUCgS=i8H2+4{`qd|(8DY@)UIj`0of_i$JIi2O#6jb!$nJ%$Z$*{I*Wclu z4+^^2HAb_0mgxp0o=YHz^C3p6hH@a(8NIb9;WUKcwGsoWC0(4_=3L;G!YJJVR&R@ zhki(aRr2v-phD|Kr(*`FN$C5c(~$-0dGMJ>FTg$z2lrxLG#}tVJ$~f^BLlq+jTMjr#3Sxr?&UgIi$d6@d=@1t(-I=M%j|+kcKY{{wc^ z-4E#f9?{2Q@53 zVxBKF8GJDVq*V@0q0sz?Gkrpxk9K|#*Y5xSdwsE8lEhJpT0cdL}4>e)M*HjK)k~u1yWvi z7pj0x2`o_ojnH@czIibx3v?~sn@+}NO9uX4$U%A^x;y@afX-G_lSACmYApaN2|sjC zWC&$o=!BGAFQfz*7ES zfS0C$)(kO#)~6w-pWcSh9&iXiii#J>Ad`K6bO!2lf@T-Lfa=Fk0Z>u!0bKlm>TmFQ z>^iUz05!ZiUBSl$s)02>=q}XguGG=|Ao&aA+|W0myVmy!^)N8-ufN_IdguG|?%F$y zzq>P0v|XhKj2d}kkM1QH{CazL)0?gj-(b96{H4K_qaZJafyk6VF&2q*dTZU>IE&O>RS`zBnk zz{D89U4J;&fu-A^lSSo!7zg;=Nsx&!m2fGZPS+QpsuXmNpX&winfIkvy0>fq-E-V& zqSEPm=0yPu=;SrfDfS=%(3QSEDjeOeXZ~O4bUgvS?6TVxHcVv&zS96ang;RAcDTcv z_cVgQP*A>hz42l;*pD|r zQztAcFW&wERXz{8LvLt1nSc*P2A|yLqQdgx5hEycAMAPonmI4M1G=E#gWg zP;NkOT7@3~i|l^n_BAN~qM!eYoc~eo#{d;$FIG>6)*m-P$38*NmxH!X_HTsM7|8a8 zAzes?Ivz)__A+>48)-NhHo*&;HiykAASP@X!OF2s@H%k7cU<6{apeJZA5q35k-U$3 z-XWw)0Jo<>ca^}}&fw`s=+r7q4Ah&3O|8Pj!0laxPbPvchDohMw zBB~g~M6ej>@-r4lan*bTe76|9en74tTg1V&1Gtw5>pvjN7h#b{Pk)-=N(gbk7pSa+ zmfj8mV3Sejmk69s%ry~|K)>{MOb`Oqp$Wl=^NG`ryRk5UPAKm5dOP;>iuu9fNJ$AiVF6ld0oupTgnW?kl^44?LG>l(34b5K z4o90(x`KI-@kj6_8t@bTu5^3wfDR9QkqkB$bE;}44s&_BYr&ILpvFjz3df6?U~}P< zR98StF`jkuz2F9$`v5it_5jrQ0F^tAILsC3t_7=snd=BP_W^A3>k4?$#f@%Xq@9eg zxf#$>5~Q7sFkx^&BJE^Eh%S(g z{tHO-t^x?Qg@yMp$O!B4b*(;fPPe;bPc zcsJUKPS+Elu>z2givVOd8mbs%h!s@~GQ0;f1w7#Lq8WN84J=0L2r2J`^WCmCz{8a z-!X!cSAhlSSc)>1Zr3;9Hp9ovQ=m43=DEgW45wyUgRZhHv}rzQ(H;7t`H&6BbkIDC zR~o3&RsfxaK4Ai=y^1JbdpiO^_gR9Pt3O_B0kuGf!>CjzTm#g3$t{PorwMFF!_T7<@@Q9n>KKHtz*D$UF^v<{bft zB0=-+RDj&K0BqiuwEzG2F)|z6P*)Td3f^7O;7CVDpwx!Mr(O^Zsyx{5yqA z^FaBf^w0nQFAji++aTf_h!Fhy|Nn~^5V0IYd;$@+|Nj4f(E%bZg9y3*|Np_ zJHX@~FnIt>9s!dlz~mV)c>zpb0h2etYChL@lgbOz`)+m}@! zF*}f00f-d@Vx@stsUTJih_w;K3IefCfLNeoGcs<1Sau*W(453e(8{cgPfQF9FF|)g zXRtFfFuVjU;mVK!vBW^?+(0Z)p_dT{VljaxJQy-qARZH7WS9V+0(trB|Ns9Ppgm|W zAAnfq3=9k}uYp))AQq?*kkJKV9Ri8X1hIC2SZhJ7bs!dK=;GxP5bGjH3^a6}0qR-5 zoB$H51G&2m#OemIYCx=cAXX8G^&Z5^0I@hgeu)FIL_w?&5K9Nd@&d7JKr9CkD+0ta z1F_OUEFBQ57Q|8lvHC$Q2@q=)h{XqD9R;yiK&&eu)~|p6|7Sb~u|9xU2B5Hc24WS0 zSa(3I1`z8Kh}92bodB^`f>`@Ntg|5277*(#h_wpDVqsxmc)0+?k^-@&fmm7~Ru70} z3t}~aSRo)*1&EalV&#EY#UNG+h}8sQMS)loL974}YXOMm24bxTv1~xB{UDYRh;=PTqU=2as5P)8vrGdC0D!IFGXf(V9rJ_VGd^^%KV;){|E4Gb92B#V<1^U%dWZbTOYITKAQ*sY+@D@iRzR}S$IL=s)DB#ogswIn_- zKQAdKKRKI0KeRZts8~P0D5p}tpeP@dK8y8p6DxF!@{4sd^GZ^S(h`$X^^5aMi;`3I zL4qL3oXjK;J03)*<|d`4q@XrcXR%%~Lt0K^da;6{t%9y0gMR@eVvAFY zG81zY3i69U!O6t{%9a|MRtlkciAg!Bpzs1GBxGf}3JlKBLLx66q$0#QK%qFbs4TTe zArWMXm1<6ko}Qi_7lUh1kbe+3DS{GFaei`kY6*igC5)I8P%#%}-Es`ygQYQz3-`L|0g9a!G!XF@s5>g^5v;nQ5Adp|OF5NlLO&lA%Fbl8J>$ zYNC0Xp*fni5O4`&nPzBdnr2~PXk=oRmXeleWNvAZVwhr_nwpfHXkn7b5ab^m>>A|h z=o25{9~8o%pORXpUs6)(=xfMenP!k`X_1tYXl80@VQ6V#mXeZYYMhvsXr5?dkZNMd z;G0@poS2@fkXDqRtB{gfmYJNYkWvIL5v&w)p^`a?Md_(U3MCndc?wCTX=$lNdJIMR z#gN1V@u5$CI)kBMVp58^v0<{2sim>8k(ps~ikYE>aZ-w*QHq(7r70p5J;0?igOQ=R zSxRbhVrp_ya;mvSVp6hklBHQ{nt_RBT4GXa3R-XkfXY)evB1*AlGLKS%=|otM00aX z3vs*E!o1{Fb#{I@XV47=lrt7qD)X##gJ@doN8fWk(_3jWNvC~oM@3^4)VW& zxpAVUd8!$@3E(J2Gr}+})gsZzBGt^o(jd_!IoUWd)g;+CIngxPJjKE&)r=u8u?!N* z{;(=0ImI;9+&IP1(jdj$#4yn)&C)2EIBPPHOrr{x#rG9)HjrlzHtm?S2pnH!oI8JZXx8YLN+rkI)}8Yib&CZWY9Tw`!a zVs1fd3PX~qxtU3#v2jvbYLc<3g+*FwQnHbmg^`7+5y%Y&3?*s$C27zs!(eG*VQ7$= zl9Fg@VVr1cV3Lvs@~4qys<}amd1`7hgKI@5s2RoJ3N6Mx5{pvG6N^&yGOWO5X=;iB zs7Qwt+Qp^G$*IM~X{9+im0XCN5|Wvl%8;C5ZfItfY;KZlYHE~hY-pI4l$>momTH=4 zo|J54VTqm@L-GqUlRfj&@)-;gQ%nuhEG*KJO-w8-jnXWV4GqjJObpD;%}mS;3_zD* zfjbTi3=Do2utLrZQpmY7_!$@F7aRK)r-Lpj^fNR@Db!5CNf{&qF#%oP99rnXRDcaL zH1x|)N%cs~OUX%%_cStu1&t4=f`f&RPo|NnE0h2wQ3F?>OjAQ6S67%(U<)DUnIg<{ zN-R!|M=0?#G(jz+j0}PxEvA6PqQu;w)Z&8tyy8?>^uR+_1hxoDV3=p@lMfCUm^>)3 z3=QCoi6T$*5P^nR8N?qD_ZuSABe@-9Bt#y?JPTMsU;!%#T%m@6;}267WDX1?#V@4z zMFbUC3A$?yEkGqCYEgx(1zo)fNI8-Mba_*7@r_V`E^lanD9b^rFyt-42@a=&u!NVP zA+%lxRo#~GVh|E&ez;`8p}_!2{AlrsY@V@aZYjhhhz3;iz_JhtD2dH|rf9{dp&?TF ziEKD1ehu-fhFSxsu-S*~enSI9k&9*(*bG$vps0q(W2Sebk~B+r`3N@C4^;@P5lUdh zuNiuI3`zx1#bE!VmOqwo|Fdy(>U4GHd1ax?@+Ltr!n zMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%%E2ml$Y&}P`d03NGg0xg<;z{tRoz|O#U zfro)XfR}-30xttYfdB*J0x<@L2Vx9N3E~V43nUmA1Ed*PC&)4|T##j83Xo%9*dWiq zVxYpn*r3J0a6pTJ$w8ZeVS)|=V}ULMLx4U5qksVe!v-S;#sXsoh7HCH%myY53<)L- zj0a2@m;%fh7!H^-FdndAU=XlkU@Wj=U<$BdU|wLy!0^D1fvLcrf$@Mn1A~GC1LFrL z1_nk3$lwZi#W!f6rYeYmv4(?DfQOZ(gOPy&wD<)yt|MUb|3CP^Wk)`a7A7ZN(AC)> zanM1_DklH`9|eUGOwO&1wVkDz86+RUz`$_D%>S z|Nq^v$bn9_Tw(qHzYnq;)J)Kg-gm73|BpqMgPLi>$iSdr^Z!3+RT2Z5TR_Knr`Y`e z588{1E?2_Hz_7vwyIUqOGBDh+!S0qdj0_9~SFy{17DX+&`u{)ZN^-b;PC!vaL9EqGcY{4g5B?+vqU>=vCAD`W?=Y(L*E@{28IPV^!)(& z?<#gPMOYXZcHq!wz{0?wgF~MW3j@Oi9Qra?7#Lh|=xbqNV0eK;A84r;D7|1y6MH~~ zksWqF++cyEPi*?WurM%4;Ls<)%D~`b_y0d=YaV)D(P3p^IAHhxKWK~^UCx7*fq}*T z|9{Y`MYtR^U8k@zFht;xYhYzySY!YHzXoV2A}q~A^X(jveU8}e+X1rA3A=q)K=wKP z|1W{XOwjmyj0<*spu5pGxcvVg530)0+@it8!0^QtyIWk?7#J+v{{NRn&VNupB(O0s z*x-<>VPjx$aKmoq3^oRa7B}qf+``7da082(pz`Jd8w0}~xBvgwA-lyDQSW?UV_?W} z|Ns9VvOLtSJnRe%0UrPVw_}mhU}s=B;_?5#Di%2xb_RwU9@y)M1a<}n8PEU!bCC5x z(?tzC14980xfvk)Jpcda!V(u-*cljhc>VtmS{DmXYYYqwVE?l-F#PfQ|34quK4ky1 zGcfpgW9kLftvnnI3=_Qn|93{#3k@3$4hDuJ-v9rDZmmSN6Qs|DgMq=q=l_4uZf$hA z1P%s<93SlQSi`}S_PgKm>S_6I0jH8>d1;xPxE(V4@;b>(#G!3rdVqo|X zj@E91#`_5_1_qUg|NoVd;})v#2^Rx{Ma2LAb;xp1eGJ?T409s>|6h(Q2h}IT&A?y~ z`TxH(7C8%U1_l!xav|Id3>J}S?KG&F1>6h_Ig$VWgWAW)X$<7|9&QGP4UyQ(!xh{N z3|}I#x8aU(Gcf#!{Qo}*i#s21Gcfo>VVC>E4Vr(%?mr1028Jb3*yT)k7#LPW{r~Ta z#l8R@28KIP|Nl=xF1K9TzO|{664eV33Lb|33lQJy?B>n#{hwN6UdwO^o7y^?1|DT2|2ldAaUIvCMN&o++ zBFjO`wIjR?3>wM*|0{z!qp*70wT-12+Shu*%fMif_W%DPWO=B$415d>XEL#exeOlz z!v!327JLj0S2EGs$54NS@G&s_$V7_|s9Ov87#L)-{{K%w_6JfLn83%tkduWy+}H3i zFcf6{|L=vY7n-(C@G&qf$@>3)A+j9QTu{7#j`lFg{{J6*9|M*!;^1dsxRQ-M98~xj z7;a#Z1DWf<&%kge`~Uw!EcSx(bOJvEgG~26Bs9O^R7#MVNvAeZKfPujPhujPS1_qPd|NlYzfzZv|BEZ1V zk&E4(7X%m>dT_|S5ny1LfJ2T$kbz-J?*ISbD}7+;1DZ!v1Q{42^8Ww-j~s4L|2YUU zFxcc{Pd71w3=9r9&x`3n2yuky7k+ zD~m7#LqsWdcPa=oFvQ@Hvk_)sNGQc#w?+svFl@mgS0c>7z)^i>T}SFjz!1`eyI!aeWnkFS zggwno5oKW5(S*HT*dWTl@TLiSy>Ld9f#E|F_I&z6l!4(34mlPv28JI^|NnO*=S66J ztsut0kkkDCe-Uy&45@A5AjZIOrsMzrTx5A@K8_J%U{L789(EOC3=Aq*BBXT;2=7AV-28II@{{QbnmV<^(g*XF)$>jh4=V57+O%Z2c*f9-zxNQ(;VAz92 z4is)@K=w_;o#x(%GcYJj#~yAR5)2F~)3K*H6$u80i0RnV9O$ZqnCaNVEk=TYApwV6 zg#-gb%Jl#Lv(eHVsBV}d!N9O%`v3onv4qt!%28KIxu!mcWBm;xMTvh z54#ys3=BtBU=O=3QVa|yR$vdi3sMXWXK={9kz!!DumWvP2AWqnq!}1QR$_OjiZla* z#LEBwZy|>{G#@)iGcep)`TxH-a$5yzW{flg!-G}W!?Z%0f#C@bxhc{N3@=vw{|`Eb z6&_DeGdD;xFzBqt?#?sP3=9UV|NjSVK8Ndry7PrJ1H+Zo|Nq}d_5;*R78wSH8Ede+ zQ$dD-VGa&C8yNYTI_BCouobihujGn z28JnX|NjRc;0;UrP`^I`*|+Zhe|t2)gVHa9ECWN#y8r)+k>!y3>k6_A413o7{|~+c z24*fa+-yK|x9k4@k3-fAZR149GBAj&|Ns9ea=L)FaX|J~$TBb-+3^4WR%E?Uc~BWR zLzaOdWh3@@-XhDukg*YM91QBF3$hFhb2k3}{}tI>XgIu)WngI7^#4Ej@Od=9aL6$* zm~6%#?kaK&3>G-#9OM`nY&K(eXN(*JgTrR*dALH3fx%_-|NoI_?gWL+6gdWlj?Mr7 z-^LMkTjUrRJhuM-?~PnPAjR1gIR=J`?b!VS+DlM_MGj;yk30iI!}kCGdy(CQ6el|J z3=9RkF~{{l%CX{L1_liekS8!@51eISICYkR;mTPChI?lj7+#!ZVEA;Ff#J_t1_ris z3=9J27#O6^F)+xSWnfS{%fMi8mVv?QECYkfSq28bvkVL>=NK6D&M`1poMT{!ILpA0 zbe4f3=PUz*(>VqPpK}ZhVdoea63#I&WSwJRC_Br*P;!oeq3#?5L&rG=hDqlb80MT~ zU|4pJfnmcr28Lbd7#JGPGB9+VWnh?cmVx2OIR=J#XBik)oMm7*caDMK#yJLtN9PzA z-kf7#_;!wgf#Ey@1J`*529fg&407ig7&Oi^Fc_U@V6ZvQz~FYCfg#{L14Gn#28NXL z3=Dba85kaw=|jd71Q{6$!WbAHgfTD#gflP{fG6G|`UP$w^zRU4WOxwH zz|auMz+e!=zz_hQM1iO?KvMTWkddJwj)B1dwErUkBEJCYo`72n3^$@Wo zhk@Zj4gAe@JYB0QEzaYfgwW(5OsxTN-F)##xj)Y-=*sE{{ z5grx7j0^{=7#I?27#IZV85j)e5#~7{saqh-$grWFf#Eiwni2E4sBFxJW zVPv>4gMlFdbdKtL1_p)s2zw3gBEn^Y2qVLT`3wvO3m6yz7BDarEI_CWKr(NK2qOc- zLI#Eniy0U`EM;I2ScXtH0m-}vAbXcFFeof%U~pK@z>ol*Ac45=0FrqeqKpgzD;O9i ztYKhyu!(_zVKc%!hI>ld^pI!AaDqwZUd6KAEJy57Y;EnYyjQWa-4xd z0dlE5xV*Z6qzVzr}QbR>7q%dzfbAvro!A!;ira%Tkhxqs?zu*#!%>3f` zq{QM>6VJTN5*I_)GKRoHkqIE#;1ZMM{L&Hz7$-F^CC4*4xWv#fIU}(szN9EIv!vKF z+0`{DxWv#nDX};+IX=I*q$o8p*E1wO#30@^*eo8RJ0#4{&>%iOxuPO5DYMMb&^$gq zIVZ8WIKHH^AT>TSFD>7dp=TS9!9WzXgZ7x;^T`mv1oeo7j&=7|Ns9P7uXzN zQrWw6_X3*(qADOW;*%>9;|ofQQsc`qi%Lopa~K+4e1oY@V3;sr!h#0I2@@8yFiw~- zVSR^a7d}lNr^8mDNTw` z%FIhiEn;Z60ag2-aRNi31~i28bBbL9+=7DhgX3KpCNLE0K*iBQ-We3~6Br5&z|z4b zImMpDg>-UAylb#&e1LZ{$aE91HxfaIij~9{mE?iMEWlz(RjEb!Ag&FV3ksXWlGKXK z5|Ee!SPXn19Ej@z<`x$eW#*Nnfr0}h=m8NdNrZ+_T4H7nNZbc3UYe3wmXc`<5(uz! zh)*oZ&y7z{Eh(!48T+63ofZO9v@T zKoWzRn}RBYFf>ERAwDTNzW{7Qj*vrqa$0d}NoH|DYHA9|tOA%&K3u58&Hrxg zQ%f@P!73}@!g;CXAgwiUfuhuO(2PFU3M2w53&1%N zWcnJ2R8CGlICX6Rb5nDZA>q0O$}LU>$Jq{$Lm?-K#wWtG>_HNQr>_G@f(7}-VBJSR zhJj93LK-`k#^wbj2akU`h=0HS>5h4q~BKbM_<*8u%mw@=7 z<0Vs(Jprol8RJtcO5$@9GxHdDnHe4kGcYiG;5L}RY%qcG0;7R|f`Y;Z<_D|_6Bs8j zPhfPo!1;k~1LFhc29^!XADAaFJzzGtz_@_RU<2a<#tDo80SO5S0RajM3IPrf5C8!a z7!wK#Hn1cVEMO^kz?7h%kWiqofw6&U0;54fLBRy3go1>C35)>+4j;HSFe)TWV8lcL z0R|0>8yFQ70umAw3JMey0v0fDU{z3Xc)(o2DT0C3JMMm1quNh7!NQi zC^Rq{fLznSr~sl06ciL5Fg7qLC?qHxU|zti0AhS#yZ{zJHZx%YO9Q)tLIOk%s(S)s z1NR3mkeOh^Ca_FkUBC|K7HnWWzyjw@U~J&Lzys$dC_G?X0Jh}-;{!&J?+X+Z4lp`2 zFd8IWU_QX85YWJMfl&eEo(IeqSQHc{FoN6*3A=!R00stzd=>@<@VZO}28LBg>}et(V$UgJw^rw&_0qhRt5$YC>taWnj-_9{RCqBF+$FP0+reJ!rohhz(K?V}sOh0A1n)RS#l=)PU6EGXDWP1H(e7dJr3?9<+}K#0HxW+ULl? zzyLD8fP;ZyEmS>-4N?O#{{mDENIi@VQt!aYz_1Uh9>j*J$K{>^P6mdHQ1u`-OuYb- z`7k!f{02@2hPzPpAT~@r==^dJ8{{4s8>AkzFW@;;J%|lb19Cr14Z3>JK7sF0^&mD( zJ!sww#0IH{u~R?-3=9l>Y>4#Wfy54FgQN$uYD9W?z{$WM#12UhAU4Pdkb5>Tg7%s+ zFo4X5u|e*iz|FuQ162=V!_w(xH^)NO_J!svqCR9C$4N?O#AD4eY>xj*v>OpLn zdR*y2fuDiF9jYG0hO0+%KT7%(U|apO3&bu^_`uj8^#NiG4DC?$AT~^W0W(59j15wMK$3w0w8sdPe?e@R zdeHt_5F2DZj15v>AjQD28frd>4N?R0?*pXpfw4jA17sK&_CeKy*f8~={iYx`$b1+Z ztX__R;R;N>9K_8a^I>TQq#niwsb^4NV0a2u4`PGN1gZaks1MdKbwzi* zLk?6uhz(P(zzVSoq#niwsb|n;U;vdzpmYLaPa(l=2HFe^3ZQ*Cpt?XCVm`=iuyh5o z3&sZ7^+20}!4Rq*#D=*IG?fKngVe*=AoUG83=D2i^&oaG7Xt(6P6<%Zfz*TS!j&Hd zbQu`-K=p#yF!i8%5X1)A1!IHkO3-CsxCT`ZVuRFx%!jE#SHD4*f#CyGJ%|lc4_ea$ zVuRGf*dX%-^cWb}xS{c=$H1V@jp-MddUU-7dJGIjP`w~F$b697aH+qb$H34HRS#mr z)Z_Atf<6PoYN&b;n~?efeFlcpQ1u}86D)qgS#IkyFj(+F!eN3w149@OW;o!|yFs6U zVLwzah|R@Iyxt4?3=Czw5PL!FnOOAV3?Bmq24+5pUIhb0I)|0#p!kBZL2;d6z`(!* zRS#mr!V{(jUHt+B1_lYJdJvnC`UeIK42n?oAT}ZO3Wf{}8c_8hHX-#1h71hGQ1u`- zA@vIk85nG#>OpKm>K_;~FgQcigV;@cnDK}!E)0wq7_LI~g4i&-aH(%FVqg&Dhr}I- zO-TI(BL;>bsCp2aka`7U28Ld!dJvnCdeGS(SE1@bY(nY}7&9v0>_Ql`RaW3=EY}^&mD(J!l^fhz&~HFg7SJ6qqtFOopll zu|aA;Wfx2hy7~vE3=FHG>OpLndIKg%z5}U;u|ehwSTHc`hpGp$Vd`)dp3@@PSA6P)#0CK+ql6zomkb4-c85q7p)q~iC%rCHJVBiyk#4m^qQxDqD z2x5c$3uA-KzhJ|_AP-d!VuRFx+=I)%2DS_grcm`DHcUOPGB&`Lfx!!^9>gZ3zQC4& zAqA=)#D=NI<(><+3=Gv!^&mD(J+AO~uw!7D3{?+e!_?z)e}WwY!&0bv5F4f*)(!!M zCyWgWPXT)dhHX&wAT~@rsIdoPgVe*=VD%0R3@2df9T4dOXZ~_vV7LiYzW_-+uJ+yq z2L^`MQ1u`-$PIYo*O7tYA5^`8Bf>qn!gGNm1A~wdB)x&yF!OP#7jR-=0PPP0wGTmT zn0i=S8WcV-HYj`)oEaF5pyq?vF!i|7LxVE|gAG(Yhz(PZ%RL{Q85sPa>OpLndR*oQ zxG*p*gsKOzVd`Bqm4QK07!sZ!HcUM(^BY_l81$g(L2Q_M zoc?uXU~q=2|KN&T#K05X8XH3snzd!_?z4 zpCOomfgQ9r3ZyU?5k9!`Z$K~ugD_M*hz-&PDxYzwUl7c|paWG8V%th!wsmpV1;Gpq z{ZPH2_0urBKxfc_*r2=#V}tW%2m`|=sCv*^Ymgd{+hF+@q#niwsb>gfV7Lxd4`RdA zOpKm>K#HE7(^r?aR*|<)Z+@P384%OW>EDYHcUOPxc(5zzz_*l4`LHi z9}vdCP!3fOVo#UEj0;?T2dzD40PUdyozWJCNGG_;ZO}S(4XAn$8|F4#>OpJTgP`g` zY?ykS?g?jLD1)j8t%WC~enL0{!%V1p5F4f*S6qPB(C>t*2eD!57a)zN!Pua*1X^$Z z7^)t`hN<6x)J}%6LFz$k^ZBJAX#>QDsmJAC&^mrosCp2akotlc28Jl8dJr3?9#_4& zA%=mW7OEb^hN*|Oy+L^g#s;}xAdZ3I1XMkU4O5RRFFV9BFg$~*2eH{?h);V7aSRMe zGLWzWu_uzC7qrKLQx>8Z#D=*OHg*c~7mN+^S3v>;Lkd(qhz(PZD_$lfFfeR~st2)Q z>S5z}AoF2tkog9Q3=G$y>OpLndR+Mew9kS~4&r_g8>Sv~g(-*)G9ShUnGf2NVGmUg zVuRFx%Rr=Y@(oZnNIhu(Mio>&hz(PZ%fFz#9_yj%L2N?m4`eVfJcg_Qr9*~H z1_n-fh<`zBLh2nd85m-r>OpLndR*bTA(Me&EmS>-eM+AAba)|?fx%J%;x-T)W*4q9 z1hoGp45}W)hN*|uL7=#Uu|aVG+AC8FRS#mr)Pv4+0kJ{qVQi3k(7u{wQ1u`-NDU~i zam5{I56(%bdJvnC`U}|%46mW;L2Q_MSe*-U4~z|RPe2X>gO(yBd_ZiNdR%1!Xy1gZ3-XNEO!BPq0Ul1Fn z9u_9(;jkuYL_*rjWng#))eG9^1hWfQSb_FI$tgqJ24ch1;|eR#o~c-< zdJvnCdeHu==}`3`HX-#5c?=Baq3S_wn0j3K^g|v4!z-wI5Sv+r_^=YlXJE)sf%qN7 zo)pQeRNWz+ebf4`RdA<7$6iC}d#pf~p6x zW7LQbE70D$Jy5+MHq5RANbM^a8{~J;KD_%-^&mD(J**7|3M&{Jq#m?qk3}8o_fo=P z1=`=I3{?+e!_3DORuf7Y7#yMML2N?mH*f90D!d9S+fuSC%9>kubPJGyc z_9L=rK>QA3!|eKiln!BRP*{QXE?Pm=gV-?j0Z4HHV}sO#_Bj?o)q~hD^*F<-f`MTP zR6S^aBq8-1Di|29Le+!VF!eaYs*-`>6I8uGB?E(iCJA9x$-q#l2@R`C28OvL=mqWP zZ z5F4f*SDgadm%0b49>j*Jhvhr;JP6vu`UI*T#D=Md^@Bj_VQf&k0_}I@(}sj6hz(PZ z%fFz#u|`n!AT}ZOp!?xMq3S_wn0j343benr5~?1=hN%}o>eIp4Aoqjz;x31(2eD!5 zLFYh$*dYJH*dXOpLf8hq_H&>mk#9Z2|q*$fN}_|!MFGB9XC)q~hD^KtnX zv`;u3svg9KsfU#nAos)AAoqjz6!$^ZgV-?ju(ATA9>xZ#2kk#T4pk3g!_?!7U(jCV zUr_ZRHX-$(`xbR{q2bekDD!c(#~ySrFyunjgV?>g#FrbOz0%L2dO>WM+i>L_(7tLF zJ&4;tY?yjneh2Nr&VZ^1u?eXM?bluoRS#klQoo^-f#C^MJ%|lck87L|wC9^eAL4!x z8>Sv~zBh;sifb4f6xX2r;d)T@AT~%1D6PWA-a+bNY>;};Uh*iYdJr3?9#{B)_MJCC z)q~iC)E7);U|0%O4`RdA<4PMJrZO-*fT{OpLndR%@7?WaEsRS#klQV-gD{|Blb#3rQvz%&L1V?&7hL2Q_MSXl>(I~W@jccA_I zzEJfbHcb5lq;e9*2B`<_^)G~~2eD!57eL1)K<2~PAoUFM85pKR)q~hD^|-OpLndR%Gaz_Q`5kmNf{8K2Z6G!w^`LVUs-WsYY(nZMEMQ>R2UQPZ!_?zy^MKA`cnVby zV#CzK>U~gL!`Ps>2A$g=W&&|Phz(QkfRvVCY>;};84sRN^&mD(J+ANpod;0{RS#kl zQg5(~fngC;J%|lck1K6#SjNEc6sjJ?W;Z21ZCqH!z>s7L@jHkOvkO<+0G(a25UL); zhN;KpchET(&!Or;Y(nZmXJTlWLEHmk6H?!>oPi-7svg9KsmE2PfX>zEgsKOzVd@)@ z)&RrUptuH|!Lb#p9>j*J4`74T^`Nu_V}sO#&g*y#RS#mr)Z+>t(Agf`<`Dma*o4$8 zY-V6Ef~p6xVd`^94y&yKsE?j8?bPfr#1;j5PHcUM( zzk|*!v4yG!u?eXMoo`YERS#klQeUuzfnh0BJ%|lckE<6%-VFfy0 z#m^GrcMuz97i{bWlulr5P&xsf#gYeA4`RdAgYHHGu|eu#Y>;};xh)f*>OpLf8c^E? zSJ;Bicv%Bg4`LHiZ?K(#;W$)1hz(PZE377LXJGgURS#kdTM-{tpfhF~tRP_pV#Dl$ zjWdJ%4r7D-4myu!3sgOb4O0&bPmp>T8>Aj|cFilOdJr3?9#>d_&bg7YhPVgBCZvAC zP6h@~sCp0^rXE*Veb~vskPTH2V#Czqs=q+z>P&~K2eApM2c5xl6sjJ?hN;KpU(k6y zZ=vczY(nYv0>_Qjrkwg!@#f%svg9KsmB#x3VRtC7;GW_1+ii3FCdLg!Pp@G ze%Qyr5Cv5aV#CzK!UR2hHtc6$SPNATVjr<3KJQ%E&%mH(2XPyS4YLbZnG8CA$rY*| z#D=Mdjq!rq24jQ#0y?WH4W|Aeq>clXGqC**AoVadNImFWr%tGP5F2JbuCxa_18Nym zJ%~+6y}=;{hC@*GAof!`;=?N75CcP$JtV9^Y(jPw9AaQ-fT{OpLndeB*oAU4STFgD0N7mhP9tc0ouu@5+4#s$uFc!Gh!*%9it z6Nq$$%P$Tm7#L!q>OpLfdqC+Bm->Vg3=HK^^&mDO^$jN&7$!p1gV-?jxZHo?1Ovlr zsCp2aka~ra3=Bu1>OpKm>I+UXFx-c#2eApMKX8(P;U`o*h)qbnz$pd>VbHo#Mg|5D zn~?g1Qw$8cQ1u`-A@v(hF)+A8)q~iC)H9rBU`T|j2eApM4>--hPz_ZNV#Cyf?w16y zL1`7lp6-O$JGLH)y&s8v2Z{X~iS6o)(3^zBp5V;DpvKC;@bVS|!&W5mi%4u{7ld9J zB(^saI~9pti^N`m#6E(=eu%_oaYdL9TJs9Z2Mi1h3@J$B%}DHxNbFNcY*sgfIoe3< zL?m_-5_=62`ydkg6%w1<9bu*-65APx9gW1!Mq)Q3u_q(3Hz2XkBC+2fvAI1E_J$&{ zi;&oRkk~ho*zBGNy{1U)KqPi95_>)pdj}Hx6%w1-3t^@a5<3xzU5&(^io{-v#6F6| z{(!`m_C}a*j>HZ|VizE>dy&{1kl2@z*#D8(+CB*L}j^Cmf00i^N`s#6FM2{)xm^_D7gwfyDMjVwWMY=OeKX zAh91JvA-j+c>@sU>m#uPk=Rj4>{KLnDH6K_i9HR8y$p%H9f^GsiG2-;eIJSa28sO# ziOm^^aI**!TN#OMh{U!=V%sCJy^z@9NbE!;b{-PD0*MV;iwsLMJxJoyk=XMB85q=f z85ndt7#Y?<*#;hrpe8E=Y+vx9Kn4am=$Q#Op={832+yHx&{+q6p={7O2An|<^`J8f zq@Zlj`2)I8Ht1{tODG$(PuCgB2Av5I3}u7%`)5JfpuP6xP&Q~EeJhj=+9N*|$_DL! zUkqh~_O@?=vO)XS4?)?WJ?U4WY|wu5XHYh1FZoX>8?;ZHCm7;>&>nCl7+a2k!5GR0 zZJu_AvO)W@W1wu%p6eVa8?-0763PbcaqfY#LHn0MYo_@?m8v!a!xpGGXy5TsC>yko z_!g86+9S*u0&x#$&#yF;4cgCZ3T1=#>Uu-jpgp-cP&Q~^Z7Y-w+B3Tp$_DL+Jql(w zFo5>D-h;A1dsqKJ*`U3s?x7%i8yG-)OS8ai1_sbx(PAhYv=6i%$_DN6?0~XC`#1Zc zY|!4!Sx`1;-{lf08?>i#6`0+?0NOA463Pbce^d>F*bCa*m5cQzFgvnqw0|RKEUpTkFt!5&!&@jDwD$^hDI+Lvg7#GjMMB&L+B2mFWrOxZSwPvK zy-sdWHfSGH0F({dqm%?@H!y(qA8iG*85lr&i_U=A4Gf@tL%LB=^IaJjoS14`wqkfcD@#g0eyTYkor6puIDE(I7J$7(n}CCV<%t44^$PE5Pgq z2GD*M^%#&E1_sbx6&oI%4 zg4qlVpgkQdaUeAf44^WyAIxT80PV$C2xd1hfc9BP$Ai=`Fo5<`sDs%J450lH4p25I z9|uC&puG$wP&R0v!b~U|vWrNnk3nfC#1g&+qfwDpC*fXGP&>HnVC>yl? zd^3~{T3db%$_A|)S4@JK16mVq4`qYad&fiBp!M5*P&Q~i_Dd)mwAR`t8KM`ojyeX) zHb`V(=!UXE>z|K6*`T$}|DkNqx@D6Th+fc|LezuS z0Q*DPpf$ZYP&R12?qnz%v=(;{lnq*EdmqXMuc1wYm;+iL>i}hg*1kqT*`Rf;Q=x3o zn$_!2HfTMnNIFEXKrRD=Ka>qxN7@Z#gVu;HgR((uKJP)qxW4Q{-2Cbhw3}u7XL%xTyLF*f3G9l)G)+;(f*`T$E88CJs14Ad24O&CE63Pax z4?F~AgVz3CfwDns`MyKhpmlmOSy1y!85pdgY|#3;NGKb$b}k#r2Ca*m4rPPZylsK9 zL2KAvLD``7X-e4;GeK+5LZEEWy0TU%8?(a_t!sJ-WrNl%@#aFz1g%E`#ibl$0|RKS zQ3zBVw2r6=$_A|w+5}~T*8kjrvO#NmSo0v}fY$98LD`@+Ihjy4XuZuMC>ykv<|>p8 zS|`Jv577%+590x4gVwiXK-r-6Dodek&{~w2P&R0tiADiLFK7)(DwGXcAJPhCgVuhm zhq6KII&MSR22&Xr7z-hKLF+Npplr}ui$o|Jw2q=0$_A~A*aT&R);xgH4JfQY>lrkQ zAm)J9DkMPJpmhjUP&R0d!8|A%w0__Slnq)N@C3>R&HFPKL(Boq>3c)jpt<`ZC>u2Y zz75I-&#jk0)Pv^D-JxvIoOm~s4Vv%X1Z9KfvL8d)pm}PsQixvA9JDi(4Vquhhq6I) z$D5#R(7f;!C>u1-D_jQA3!1}?gt9^Nv$LRV(A?`yD7#@f1H*498#HICUJlUs8m4A0nHW0LD`^rz{yZHXpZj~lnt7{ zy8~r|=H}QcA$mb`ZE8?9XdcZ2$_CAmr9j!B`LB8?8#K4I63Pb6Tb+ioLGw`mp={6` zlW7&ie9-(+DwGYH8=3-TgXVpolnt6|_yJ{u<`MX7A!~hIKjZ+24#cBcoU#((D-c?lnol2odRWp#$DGz z*`P7i6Hqp2yz~*2ec&YME=!1Apm9#I1_&E8hG_t0gT^Plpls0CV+xcF8dq#+U|^7A zZD0W1k23?xX1>M1umZ{k-FtHs$_CwS^90HU-Cv{E2+<3=)5aUh2Hj6n*~q}a2OU40 z2Neh1N3#pc2HiFD2FeEAKf~GtF$Z*qj0uztx+lgD$_Cv9lLlpj?t7UCWrOZ?Sqo)@ z?rk{*WrOZ!c?)HO?q88?hL{h!W5pNB2Hm5Q17(BmN|^;^gYHAw3}u7vJb4FYgYGpE zX@Qsny1T>+%4WF7z>p1PgYF=i3T1=t8CeBoC){ITxC~{3?hE+>WrOYn;cA7L3A*<~ z2gK%XU@#D5WN?A9L3b5}K-r)>j&h*v7(qsc8YsI&kda{~lnuJWXd9G0N05=>DwGYn zv*-(yeMFFv!LE&gL5{ltd^(w^ z3@K1H=uV+JDEo;JBf~T(8+3=zIw+e*n33TolnuHwh@}%^rim~kg94Ndx+BO2%8n6c zWQc^aL3aX`LD?>g1@hLun@=+2x|Q1%v4MurDaHt3F=Z&3Cf zQAP%dK8RhQJ8`T)Y#s&%7BNN!XDFLTjFG_)%JvXrWQc>ZeZ&|U3Zd)(F-C@ZC_6-q zk)a>Tju2yHSO8_mh%qv3g0d6D7#a3M*(qX-3@4!M3^7KAt59~17$d_|D7!$6k>L}R zT_VQF@E6Li5MyNE>1SY&<6&T^5o2VKg0dUL7#UQc>=rRb1`R0tfg>Y>F_itqk&(dx z%I0ulWblHrBb*o+!lCQ{S4M_JD0_n|BSR*XE#S_`Pzq%`xHB>|K-nwY85!E4Y|x!? z)A|`0_@HBn%b;w~SR&}kJAOt62GALsJdph=pwTY|IV83@5*s>42v!q~Bt9L94V@zg ztND&3t_WE}0J4%nABk;&#CC(Q!Fr=0Y_R%dBz6%Jy9J3o9f`dNiMf+J(f1 zu44d;-$xREi^Tqg#O8&}RfF9lg2YxtV(UTJU^DHJ*j`BNC22pepd zF@z0PvMN+kA9B=!j;_C+N2T_pBfB=%P%_CF*x8)WSx z*lm1BY%wIZ91>d{iLH;swnAdNBC-9D*l|c~6?O&&Rdxmj&>6Hk>>lD z__8xF_^~rE__H%G1h6wO1hO+Q1hF$P1hX?Rgs?--qYYzcUo663>kjBoykj~D) zkipKtkjc)#kj2ixkj>7(ki!njjSLRP5E``HsX>jMfkB;}fk6W*W&%22b%ckL0t4c# zbMTEDDEC2tMX=ojflUH@IY)ea6zpCO2s4$eTRFgb$+=@9K0XTVY7VTId0;BTb%RHI zd_2;174h-$kc%qfLAQk@#zU{Dfbvi-^N5d+haC0~y0-&z2tN3#3J@3dk_r?N$i*ID zA;?`G@$vDn%PUZ>t$=VqcL5+@SOFJ>TvY+*f-k9n^FVhsAakG>Q$VkzK)H+p!hv2x zfpGx^Q~-3v0h9^9bRs?({kDmC@HG?hX!lFRr$GXTAwCUsqXg_K3DE5vpgSZ$G}7e} z@rYX^;;~#80TDyJCn7!bamLjiijLp;n=1sHca#G?p-A`s~^2e>5qEe;3?$n_2JsP{I2xZn#L;*oA@ zh%ZLHq9MLGKRG+KgdrY!bqWLQHU==ATL9q~RDx;H#S0*D@Qn)~2I#7Vc*GqG@g>Q{ z(90F#OQ5$Z#G_rOfN=+nerR!OQL%o0QBI|PK~X*^{EPK-6DxF!@{4sd^GZ^S(h`$X z^^5aMi;`3IL4qL3oXjMBhTOyoy<`St1AH=*iV}+|^<7fSQgiYPQj7E>lJiqi^<7en zGRsm^ToOwX^^=SAit>~4OEU9xQ7yZD>IW*D@roU^HS2w^_@yH zb5is@K`zKmP036wNi9awtCs|phFX-HnpXmLbZSLOYEfQd4piD7oSuqx^YV*w6La)4 zjV;VT%JlLX;*0W=GV?&!_Y{@H=YTF{$;-@3XNb>9EX_;KfTR$FqWl76HQAXtIS3V{ zCE(N;Us9e~TmsSp6G+ZTEGbDXf(j+)CatIvR755Y)6a(q5=eF#lC@!*UN<3LI&7%#E77#b1aLQ@MwT=OY+mxbHLF8;TI$p6{k8Dr57XVfE1bt0dPd8mF6WQgmMy#Q;SfA@>BA2 zQ%i~}QAIOzOHl=~@-y>Fic!UiQ}c@Ri_ip1(ohwFZ^L3JFG?&ZNG;M!E+{}rDnlV7 z!rY$E5Fa093NGbAcTypjCxlZxa)DHoUmOoAm{N0-Qd3e=Q{rw{kxomw$2A4yOR)P5&CuQN8k7Yx zkn&^#YLlS2+9V`1H`OAoC_fhzPOgYR1WSOu;ujnb_nRx+kzjeShcM+Wic3=BbBoi9 z&4NpcGV{{G*S1mac$lgB5K|%P!q3n+Jrz>yfUPtQ0o6%VvJu5(eLX#WQ~|J6P-lRW zfT5vZeoCrGVqQv4YP_eBp(`{~`hfDJM`BS*d16tjPo|NnE0i!aFfuW4^~p3fG;(#N zm79z5i$P8YQF-|(sqq`O-o9PN^(+@@=J`t_8S@ogX`?zlEji! z63jvNgQ0;Js4YOE5k@6xmL+Mvsl~;K>DX-srzPLw^muUpvlx-4Kw=rGi7BZ?@t`&c zR*AGC(EWh$WC+rdoROK6f<+u=d}eMbNEwRBsA5pfP(heJaPmgd2~`Cb#-$G8cCfPe zqQt!P)Z+M@)V%bP3{Ydf7~;9qyyDD~Oe7gdhC#9oVhV;Z)DZ}An9&Fk&<%>k4Dkp7 zm_s4yvlwIv#B?M9uo{N=k~EMkN>HH)L9K^~AqPA}1Z)bpsahPLnU`6@5Rcx8fLBqJ z6~`7J(?R9AYXG>_TO6O5QkGg&l3AP@5AWu{vN%Nrza`vY*C4;(ctmmR3Tka5+Y3(D z5J70!iQyE4ZgZ#-*8p!=fljTUDK5y&^Uq68buB}643hicMIpk4ptdSP7^;>!AqY3t z(=Rw4t+p6#g=RF-g)F+OX=+_XvKxYL6Aa;-flvx$#A$0S{l;BafGUC94;(Lql4qnD{vIIKnAA3uE6L= z7=a2LXo&%8p*n*EDDPO5q`_LGxy9+wmYX-a<(9>%MVW~?nN_K-0pK2~AG!)d!<1Bl zip8T~YE~aSyv?xm~3dwgYD)J1-$Z~Zp1792t4kA#u0~8V# ziA6;r`C*Ago>>7IuC8T42qoA%NT84dwKCCU&BIcYOY)11sni*PBzSOp5fsFzodKv- zumDGM38W*38R}S-VGVk$D$&9ps~XfuKvMz_Ay^1{<4{1*=`fRsaXd^de&@qfp?Uz6 zMi9*cXCt&e9w-%nlu*`O0%t|IQKq1V6Qm>Tlvtb^50}N!DW+0#LmLIlfOff|Da_EM zC?9m^duCz|I7J#61f>?1rWTh3Bo-y+2Bj7k! z1NzT-8C6BSPjbL=&@w%lTWQtJ|Z)YPd==s z#_ATF=?Uag!l?(Oim0>#Qb-_WfRv!718@#U9ofOrNr4vDh;b@V;DfarB8IsTr7Kv5 zD1$AM6LWHs5|guGjTz##8k(l3mbm7n6o7_qkeV_im|y^E=)tOw__)EYotTKhsuLqtFjc|Z0El+8 z2Y4usNwolxg_W5z0GS&FF!Ye|Z!46Pi+RDfEFVk9G2nGY(6z|&JyN?2$E-=K~R zXs{nVmj>wxB6SuaX$?!Lz*3_bLNwPzfRZSc!Ve>3 zq6&a)f~7AaT#OmCL}ivS{YpvDQB21uyl2y)W^P=!jbFwe{@fd)F78x0Kt zOA|pWiZb)_sN@*DqW}oopzcBMPlE%EV61~x5fjZ|h4|wYtORdFLgNY+lju%{NE383 zL>V!ThN#5vYKR)V&PIt_T#iRpM9>S!iizd9K~{<1Q&=lWoW8@Rny@#q=_1O% z*fbLGI5sV)Apk1sQJcKD$L+DUdvPeIL4JqNQbTh$DNZM%6^z3pu4S&oH-+(-K}>rX zw|0z1F%G5hma#Vu1z6H2_IVoYNfNtS^i+sl6-fyXIx|B!$$=EoAhCJomJ*lDK=u>Y z%|eM0s5UZ_7ECwEi3+L_e{upT!jX_bQUsC^ND1M@15$-A*?{B;CKy69Q`l1vUR_j5 zO6U!Jqy;XxlNDZv5t+sanL$E=BWM&+sgIB;m`M?@4y1I6R~?o_idQ}M6pL32dh*4q zm|$8)E;G@lfUzfITpFm9f{|O=h^1Ay6E8035SecAXeS}b;xmP))QZOd%!G^x-S=aHcjCi-}8N=vs(RRTw&n zNlECMFj5bS0(go+??Ib|6eZ>rgI2@`mn7yEq^3|Wlre@9(XE1pzBh_XF%vF|G}gq5 zq5>^}qR62pO2T0Q>zSdcw1oSFN}+{1%7i=MU?GO)9z%>+#0*7(TCj#JL0xE}O;A1F z7(fbFSjeLfS0I!S^ddqjFX;q>@0|<3li$2_1Xjp+#7GnJmt|}Cd>*1k`TMcGN<5r6`)Nw0EivipU zQDXz-Ys!{9m=&j%_~n;_7iEK^8?^f=KDnYIK0PNtDKRI$ED^MgAd~)k<&w3v^-c7Q z^bGYg^NUN0QWJ9-z?=UuT&8Degj2>Cr;G_s8B?4x<~U_6amg4N;*`PZHY1!aFv95q zBb+WU2D!l9$KT1(CqBNoG%4OQ9=1ahw7V2^K0`3Z5=~Glhzbb??=}K0y@c`6s%gmj zMI4f_g?cb)$`dP!N$AV(V3O#02m1;*uxdYawLXSML9T(JuE8MzjzNyTU_~Lp7|KAa zU0`xxU!g2^z#c|rt|&T?m$sltpcsWYJq%jZ4_fUM66}XX5+(zyO`!9zFbmLJhHY5@ z4yEAPA{=s%IT;+1$TJ+clwg|+fT_h2yvQ9#)Ybb?@1qQ7BB_8%6EG4qzK0abD29RM za2tbnoCVoT{0ebffb4a&p%_?zp|}@C4NhZGdOAqXL=}f>M^8f-JqWl%P?viln!hjw zsBI9KD0-GeG%z44!f=#To@iy2Ck}OCXzIdn?4JaC7uV)Wuq1{~)B+DfFRC=e9h6nx zkPw0R+z@+t2$iI$H4m`{>R{~FgkhACc#7Q+Pm)w)nvE!bF-=0qK^=@zprWN-X#E8% zn_+>4wCoV#cc=sjMnNsdEassSC`Mr^$4uCRY zhC{hf%b~oIw0I~hFM}bzpfm~MQ3w;hJ-xUz3A~t>0o1vLtwaZNz{_&LEKkq|-r~|E z$YgghSPVRM2w{eRH-rY4_*lfpXXb+jUO}nO$I!SKG#ZzbSeyzP-~#QU9ujAZfzCh! zox?VQPt!s^cq%?Virn*|Kw6>aNKt+!6Kq=x{GcK5$wQzsk1%AwXAWVPA?gq%n1SHZ zhAt-`fo#OuxCRdkgJi+oZi@OLC`KU$dod35ffN&<^Ku5{m>sxh2{+oIPRFwK2}Lii z78;f_ez04PVgR_kM7&n~trp_V!P6cgG8jpSJ-zdIffZ3M>JD#88f7!6E@Y zlm%G^`DhkoahUPYqi#@4Miqk^3KfLu16PMgZi1?U3*%A;Id2B6Z1hZ=(KB(tr;tLA zia?Zy@SV|A-xzH%dL~Y43ULSBjh=~&!g5BDDEHQ3XeZ;w?8M zW`#OhodFLLjFsw`_F|n$#Tt~DDpAWtlt{u`VR+!6MGm$JU7TvM&33{S55;pgK!p%e6BH6um}LxlU}7y_&=sMTE$Gsi^dS|&}6a2IHs40(1bMyocw|Kcy@0Hk7>^*U$L}3vmH0h{wN%9EJ8Y^6dlQ>3qWp_ZBLRK)Yd|i&i$)H0Vh^f$VYsaY7aVUk?3?uIV22eFk zAW1+c#YjyIP;F!;1DI}-697~r{-_5j!V&2pDJ+Esaxw=g!Cpe3t3odh(B%o{eL_Q) z*oy$Xy6}|*cr_B&t|zeIi==~D2swwiE)yYBFp~;i9Z2a0uR1J=2(NnVDGIL^^yGzC zF~PKkoH)_O?y)B`TpIADFkE_wOk8-hlUdN9`INXMg~u6~sR@^2q=bY^36?a3ODXo` zgG)7f%E6_MP@=(DcK|tE9Cc_0MG>CFfufGM1c9!F_(XuAlbD(YT@yxRqbPt!FnZqz zV~r&|P=@@zeNcM>z0Wkdl^#61iIxfw>tnHJUDSa_glhDxi%T79*2OXGJ-U@1>s@?? zrUSW^9+ZdRV_K*~SBMccusCM@fT|B`%0g9wmYh%}QPU9moC0FSHN5-+btMo}g1Aa! zJO&{;_h^$32+J@%joUn|0f1XMT43N-h#D{;UsE>AN&H^((T(1t8@*xM&oQRMA-mHs zcV%Or?FOsH*l#$x(Hk5tpuO#=RV#Sx7>68WgcgS+@^~jMCD=v=VQRs}3(BM$j&Urc z4a&GwfLbEZ!wc}7APXAdz-1U%4!1FQ`=H2X;#Y{<0$g1cWV3Oq!D%c?!yU;eRB@J}!7yWWAQK-x+Ly^9hB9aFpI#M1p5wbNU%`D8mNP@TZ6f24NtK< zy3xBBwfw=HaEIqYX#Am+fOwRTZuBlju8uJCFZiMXNWQ_yznFCuhJH*Xn5N*a&M=L` ztrnWyP$C{z#fEP?Eg?N<+kKIyv0x=2a)p8}P0*F#8k1=Ep{Pc48CVXRn-CIMU4y@_ z#p^WUw2p4{MjVXciMCA}U+|(fFJLN1H+q9M6+=p>(T(2p+vr`Cp9J0}7+4t?7(g^gL415k zYDEc%1;Oa%IdDV7#V2l3I}1W^GY==Je?F{o&DByTYThbb&|b@fX`KGB9+y&S|cl!@%DHDh&<4dGzu! zTxDSJIDY8=|Ns9zx@#9~V0f|p0s}*L>735eEuF4YUd{s9+FQG0AE?ZJQHj-zt5?v? zC`K}4!pktQ8KpZsdRfnTGB6mP^ymgT>(C1`uyHe*YiA%kX(fhnDq!PgfSuIy5>zuD zcijT=eYfitk8a+D!VnL4hyL)eyx8g5!QTq1HM(6pJQ|OH0w(tGi|6MV82IH~7#P6e zMQZpqzfth$to`88S^5GL7arYqFG?pXz__+U+sq%+btLvntw3xw`jpEx_=2d%wKF^ zc=7)n1H*CGKcJZGbbay?)WqGu@FLd=UFRzdokx*%lHfjg`g|d70Sb&a8yH^5S~4&g z9)NfX9^QrrVh^LFS6KLW*Zz3HZ3WdK08)e+KOlK;2Uxm?n+MMyAo1}0FB=S zk6zYEAfNW~S}`&(c=U>1W@cd6XW_}f;Mn=W@S9`j$9S}nvqtg|XOFwvY zo^$Cu3CclWwW5!}YE9)XL6bZv`8@FGyynpz`oN>p^~MH<7rhXb7OWssO@CfQQh5QQ z@`6XF>xm5vFOnfD=Rs6ny~x0@6Vz%0S>Fv#m4qyZ+U9o}TMFvQ5^O1zu!)X(s;b{O* z|DB-^Ji0}Xf>mFCVF*&%>3YMXx%LJFf2%wweIDpM?$K)+dy#=*1H%g$kb>i`KS0U- zr5zIkgGaaP1OELS%|Ds>TYW$!LwD_i7k+0z616uxI^7jKx?OL0bUP?`bX&aOGlL}G zR#}9>_Fy;r-tg%5RPg8)+`#Z+#~B8Om!K>U)_UAQ0c077eZ1iVhzYjE^~SM=1)vrw zL}CMo36`k6;n5As*P#zy)U!aXTL6}Ez2T7zHo@cI17=Xj8N!{}4)PGlB#-7DASSBc z6EA@Mt^iUF^Scu$8Fstg=07l{yIbA&L1Cj-L^FNm-jLRbJKYzz^WKnQbygk>PYoCskBkT5Gm_~&`Jl@cJ~ zcc&N_c7ejR^E$*AjT#`~-={#y+x8qnwE;-@07Uo%Ot`xfB<#`2_+lAI1{4f1Ax92y zPzklkn*ZC^o2*K?*ku5qJ6={->L_S z0#IeR{2X$jdIOYFeY#zLcy_xS(D3O7rRG^DK?U6vmlGOITctn= zsMqu_$V8BnJCAQ*c)@jwf#D^%IO=x&(Yync1R42TRUt|r!IXCU{(vTJ53sIVCm9%C zvVeRA)&)vE3~*ihap{@|(sd4Gbhqn|t`1PjZ+OVazwKi4F9!Zr8L&j{j~BdbkQCnn z8e4lgkAZ;!lD0r@W?dlwj^7_1jRzS(_IDol=sfo#>ihryovvS+Yrin?w}6H+JbFzd zpw8$H{Q_~c{7I13Qb>?A9*1bJec{ph9hBKNFueG8f`Q>BDC9kQO^uW^_atu=AcyzmN@aVPx)iGxn7+zE#horMs2L=X) z=Gr?9{4JmnGLK%I9xf#JpBV<_&vf-w6Ss0>7R zw+52CXM@eY0yg`~OI{SS*MiJWM>YEb!t5+;W}i8V2orm-*%!cOUwF9&lsVzy9RV_% z8`bPH2($UHnO%Tn_G3m+n4AHdedeV%irI`Hv)3O*36moTvp0bYZnU@*K{C4?Z1xeb z*+*W2hL{oQWZfwSh8Mx8W}iTq9fr;99Y+vh0vhP+c0B<$`^3vmNE(NxlPHkc-;bcU z`vAi1U*OUT&D}9bW}jyOg~Yg39<^-~mQZIs{i1%MT+01XKrsE$w#Q z19thImmh!s|9{*SsqX=5<6-tEo8JV0%b)Jr58v8BRR<$~3#fes)%x-wBr$)0HPgg( zK(@XCl{uZRFS=ddcy#-IuxFi`43YBab~&iw(dqi&#qL9(dcyaC zhvh;3R?zsSN3ZEjkcMv858a_}K#eXgQ&984^eRX{+@D7eF)+L|1u5*cO#sQDnSA3# zBE;ky$R@uBX+W4f!3=Ej43K`f$=M*2uYpp1uk9ajp@!<_3oqCqCSO1{c_|CXA8Fs7AX9u#Ae&sx1`>mtd{qWF;1)01Pl$UyKSwJ#q;k@I;&jTP+e0Lz5e4G;` z26yuhh{^3B{cw|+K_*8*Ox_KuG|)`m@M1p1ejinztL*ICGmx7v> z501Ou0nP4!vg`{{NpLlI!6Ui$4yYaJ!Ft0TR6&N`@#yxw;L&;PMdE%C-}eo;JJ>x5 z+`jL&Ipxvq`@o}nBd7`Q((QUD&9(C&Sg7$J$N)$F{TD$!!WS1oy1^!$_vmyz@FEw) zZ$9DxaV_Tf&<0TOL5Gx(oD6oWr4j=}^8t1cyVG^g3oa!FhVIZkjE6cy?||!FmQL3j z&_)MH&5KS&u-{HV{AD2s@<-_vkAu%xJQzQCbeEp!7VEqQ%DG+pKqg&jKE&7=3hKu^ z@Mt^+QC@q+Nbk zqjMg~;8^|O(OKKz(RtpZv$X;=oYpzD08DMo`2YX^iz6W0yK5Ufy1{&pZm8_R7ZH2G zrr}5kpx&8Fx9bh0gaEQ0k`P)GKt>-08PM%}0%CUrNGJ{@)OZ9G>yQ+I+CFW31Cqg> zgh5#n+R_Ba_G>Y4uw8%zTZJRYv86WK_Clim*o!HcrnQ37!;9Tw3=F$M85kHqc?2|I>-xZh6=E(doPKz8`|bcG z=uSvl={)AqJr$gabU>CQ<0>>jU3RoW17t9ATA2wl09J0ag42o-Sjcq;D95US*syei z=s!2UnSj0gIPQ7}G?a{-UZN$C(+ecKBL#dZJiX-XLJ4nh&Vne1g#)N`fTx!epaAJE z1;yKe7Y4-Yg`^j7V0M@801t(I*-4DOA3&uLXzcvOD{+vAj=vDt1&ZL>1)!2)8_{OW z@aQa^@PbW(fngV@qYsMo?;hR06FfRgJ3Knid31+%cyu0o5xf(WuW&^yXygVhVnHDV ziCEW$7l%Q*;js!zf-hn~LXAg2@dhdZ(DVNSobd@7=s)gy1Jc|B_cX!9fQbw!6kMVC zNdjD%VJ-Bh?f?ZZYM~ENjDu7YITaLn9-Y15qQU_b=H0a& z9^G3(e2;FZ?7J!3D`gkOA;I16+-0frJ{5fKo>6;WRAc z5uip6T6+gHgbq#~TR~3kbiHug6+9f#TziI{zt;+s$UwsgtUEv>Ny)xvAT{O*4-m6E z^g_2u7pT-p+6IaW*8|y8(%K{j>Q?s%aF(v@5b>T7^v z0@{H332rTQZv>4~c8A_cbL_kT7HK>Pa)TrPe$a^eh8Gh-nqfJ{b;S!^5Faw+4eAb| zjW0F60fh?o`Vx{+z#}stH@?UQxv$d|T3=dtfFcTe`L`96*ih?Bh;kyzKVtPlG74(> zw}lvcK^X-+cld$}?4jc?1h#@R3Z(oa+6+kfX9hLn%oea26F`}*h-fo9JUUAoUL?sd zFzf1~Q-%oJ~An*#R`O z1i{ex5cqiGi{LE`42J(-+}aG9V03_wNACkIsxrLPS^KBE_Rj`}7Y8c^%MPa6{+T8c4=!;NNG^{7;|1 zH3-sa>;c)`UD~jL;YH_W28MlX3``6j-L(y!tsejX|KGsyA{t~7xLw-}ZsPpsZv~Gc z_S$BG+~@~#BPa*%0J{;ar1KcqiN`mAx@e^vx*>wCE}-^l*JhAl?S@?p4?zu~&Q=GI zXc1T`lBf+xG-(rLay4{=M|bT3kH+($^-mt1wFe;F=l|dT|BuZ5jmrIl%smfU`-QCd z{~ws%6CRDvOaFltpYZ6e-Qdyq{QpNV7i8}akLKt9JUVN4z`S7ra@xsF3=EyECjbBc z?*@lWr)$qkcP0jgeUOr`w&6uB$V;8zhL%V3UQm0Bfxi{hmj#tZ44sEOdTS?m9B&Qy z|NsAF9Z+1AHoQoL=+OX;6oZzI86N07whOeZ)1$i=WP(TYK}OIFkv&KqNPj0-zejgz zgGV>Ss&3x~56u%EorhkCfE0DMDuCj>*Y**pvg<9K;L$x5WaS2i7qd1pFzg4_`TM{_ z#g{r;Wk5dLxe?^ElK=nzH}3_J4E()f;52D_d9 zcLc}3M{g@=nEN=G1POP8%>cD?Lc!*yfXxMw|M^?xAm+C00MD6mf!qT!xwBOQt_ztwx*-|9+d;yk+rpz8EbGyHfCbv}_DBvA0To&&*MqD8 zhj*G|=K)9l?LS_Ch8n@sULL)r3(`7W7eT!H;^2D7cw;Z9ity;Qy}6x%;l-Zc|Nlef zFM?8PukGdSV2=xKU|{I(1%-8|Z%=0{3n)>!_IPyj9{L2blG6jayrGrh|NsB|t^A-7 zNif@^@dzll#~yycv>vj)A+7UATBqwj{_VB@4nF7L-|qYG;7<lqk2k9XF-;onyKy|ea1bL|@j{yxz9!EVwJzv zXYC)*@|VugH^*IHfCd)3L*I0UJ~{3RUgzBH`oP-t34bprdvw?S0S%6NB>O(_U_9ZG z9Qp(lQC3jbzi6&~!2q4|=(U}&je+6C!gUM`FF{i<-L5Z~T_1qfWUK*)_6x|m1yBP3 zwY>}-I03cRy4gBGU zYJqgSvoO1{bh@#CTGq|SSv)$S^KQN`JUUAsfTr-&L8Sqxc?DT~g0Y^c`Hcc-T?1?d z5_lT#L+3$lerCQ-K9C*SxaT%b_;n6;vcrV@S>R&sEFPUdJ(>?feRS?c0>lbfw88tUJ0O7yYp+3~&G3@P z_m7U97hJ&c7y7}ao5`i~kVoeQSHlA!21xRNOQ$Pn(asCdG_wmcgG(on{D$>H4Ab!_4l|58wZFvUj_Fnfd)+XE?f>W57WVii#76 z)P^lTQWC%4Ap!FMVFPMZWZvXEqHYgBK;!dXRG0tf31g29-Mwa z1%yXu=!;I@C!i<*#j{6u=!)~ceAboQy~3&KrG_*$AXl1v*v**kp2b`i+KIIAm!bxdSD8q-vz`X zte;T)FSP-u8gSi$S)L=8pV-sSQd`ROAC03-|I!@F^qZDbrr))WGW}b73FzMen(XU5 z2r5Crc^4ez=U<#(1|A9k6~G@p@e4QzcyznI_{1*=S~dn2kbnv}fR+S-ML-M2KuW-B z!6F7QH6X=c5et|INHJK%0VV>PS%uah{POVro5BuIy9LvI`bh5U4gkBZ6GVRK4iEvE z*creADl@tRKvuu#3;?+jYC1~!0ZG50wY?yZgC=>q>lI!kf=xgE;^b0Lqt{e?6)Z4n z!2#mY9iXs*;e|3tRd?u%PS+^%M=6Jq}Ml^Eu0Y+!hC z7$i%;e1jb;m>3u^!-pTFx6}2-an~oHMjI$BK+)*Y9r^?^v0eJaBl(a=w=XEhSPsJE z0|>}R5RlIxAYVX0z5>5|18Auk4kgeQX>;uZ75-i`P+un5^#N%9`xC!F%R$gq9UL0F zT_1qwA0NCt0B#e2T0jB~2S6(%e4lil0?(s7@kl-hS}^sAUy$V(G_V>@5LR-5u#yLa zmAoLV1hkE;8@qF%tCpH;?;rx^4m@CffXv38D8Q4B;Ke@BfB|J7@QOb~`vF(}>|X>+ z(ykwjC>kE%=l>FHYk|mgbG#IhvpYsbL?nlc%1~}3XG)XvE z5Ri8uAdf45A`&+zf3GoW;&wTRE7u}Y_F<%y4H`nlkyN1GXjlR2)M8IfFeMvsD?ubU zPIyj4B)AGr5#9Fs2 zY{eRS20_$cC>1NLeqmeyN?pfaWX=cIFWVP`xESg8Fi4g_`h~22K&rpG-60*T+7I3C z5s*bd%?H?-UBR_fa_tk3gU^{?e4NL?z#k5p>$w4n&(Hi(9-!*?#wUJ3P(}FxB%lLY z>idab&;u?4s?I@5Jirw#NR0_h4XBm{>jG8qU^Ufoqd$kE zy;46H7R8j5hoHVFYFvZ*!k|hK(jUfr%$eP; zcfgrJ2U7BbTmrH^;1j<93(PqWKy8zQ2p60Hk6yh&tQqQdy#h7_w9^5aF+hf7fDP#m zy}}%N1Cp6wCc&1>f+~-0*Ea_rFoF$3$)2Fy+#boGSvKDf9^IXwqzESjBH@~|ft$A2`p9iVE&%X`Y7XT~yz`rd(5F!gw1mX%o zxZn~D-c_Xzv9s2zC-mCkD132uuHBKge)!wwndE^!N)V5Z!AU0M3QT*$(UuXm2JIqzFCt zq4^(c{)XA7@j?q^MCb7rlV*UcwFjX53`*7TW*N*rQ19j`ND*QCc7QgWW2OgvkZ#oe z4K%bs-5h+)EF@*PT3etx5lI=Y<`tT<1RSjdG-dd@NJy6A>nR~A!_#4creS`0-)l^TXexqkTxNY&d?toowW}|Af{aD-%frkU@aVNod{P$s)R0q?+S-g7Vjv}csR)f6P$4JztEgQcN2JUUxW zfuy=ipEMs!X+9V_Jp)QFKRlXi zK?w!CHwQFa`44zd94$^>r% z!xDZV_kqe(Sp0U^NqBU#dvr5&mkD@uhkk$!`6A*A)ZPWBUk{L*4{(6fS?BQ=f15$Q zIPg>tXqw=GcE=xW28PC;KeQMa_}f5}WuSGF#~QwX(gBFsyaSwI_*+0uhD`1}ux@0~ z0V#)U5^{ZjNL1j!2NPhu6+R67ZJ-PU;(0WKoN@d`RWk!ax9^+I^B$U@nV<*V{yv?j zJS;Epw}FPRj=TQ(2bz0&!vdXpL)JPU}K|3HpsifQY0dwOAZ3c!;Fxk8l zQR?yKQ-L5Y>4uX~~cQ=6&dgn3FhJ{TarbqIR4j-$4?j}%H0BvW4Fm{2s@J&!K z|A87lFS#J=<{!XkZ5e2ocQ%58 z>Ubk4FhS;ZH-bHWfUy(I=yrVpiI10unZOwU8g9(|t)N`q?fT;20}jw~CuXoY5Yy1i zc-f4im4&}G5Y!9>O(BDHc25Myy6c_J3p2Y*?|lE)_zMyjxB>x7qLo3hffepJkoldB zpdt~?O$dM80j);?jURxs2^&9nzZkN=K)NAj90vyps2|t76BKIL6IdIHfgJp;pmTS2 zzpm_(#IyUI07|=W_D+hRih%cya z3ji-+IQPO1w63b#_rbA7799o##!lBOFKbW?;O1`yt$9F7{E*`qz^NHzL-WfNkK~IU z&3i6LfQl&o79*(s?hYjB?kQktk8UH6ZZoi(L96aTi*Z4tk|+LO0GCme6Jnqx5#6p2 zzJUu&M*bGi4pDH>`aaNZ1O=__5l&E!1}{bd3*UP(! z6SQ$3GFK1T+VR1o({#xlP~rq_OfkK92ejbtO{eGukQk^{bnb;H=m;s-*N|oj#{56N z_66wtDi5Ug1ti&k%O6k^!Xp{cz5q!<+7}?1&H@fxjfzE>jS7tUj9yklkn?+ajj;N6 z&uzGWAKr%g_X$XB==#?YG1zaMWw{rdwXHgx?P2y%WeuM$@OJ^{Di z!ReV1=3gF=hN0`QL;dRk5*wQSh4j~YZF{dVFuXYN z3EJ7~bp7%ovmI2;eRz2vG&GLX{{^K0@OUYx&kjD92Hc$PWlie`1)J?-&_4C%;{xDu z@=i;SPDc*tIvh}k4z+&lW#t9!^lv@@aR%5}cF+JB+I$GKzjxdfyj9twyN(02BJRbj zHb^H9Jj&;hT>8d?@dM~cn9k!be8H1IZ<-IXbb>bLxPI^ejp#ChJ6ayy#@Et`X`?DS}^eZj)ttPl3g z7tq=OkAn}HJ5P09ybSJWf)3}Y{n5c=4r)bsG#_B}=yZMY^4S0X|6>nB!WWd5U~voD zg3I86YBYG}64J%`z`sp|5p2-G2h5$vIzL{11X}FJEdUE|9^c~JWu6zAZK4v!De;Rc}D#a`BW(C&CdlzieB z1h?YdK`nQ830P<&{0}k3fhQPTzwharz!4Nu=*VeLC>;(giHOFMZR&VhG;IkLml;Hytj9ptuKVME5;d5)}6! zNp#3a2 zT^Rye3=UfK&cBU^z4L^}!3PW;+^(SG?H+)qACf`42Yf6T!BQO9q?o``0@$RO!BP^~ zq*%aG3fQDr!BQI7q}aex2H2z^j<l>g${SY$9zQ&M3_!>hB;cE;jgs(BA5WdEcLiid(3gK(86v)@0H4AP6=)MNey(0XE zX__W9=IT4F(4OX3&f}Xrm8!uHcvpR{&^`6s-Qu%j^F^2N8ic_B7VM0NqZ&-wfIZ z2^tB8sBhs40G+ec?fL?&<;BY@(4`H>8w5b>5kSL~#~UP|%;OCTP?pE>1`Q|^yGjSp zsgt0ibP?g*%lZ~{)(j|6K~V(`cGUg@y#4pW8Z@{Ko>)R|uOZ}DW6B46G{5lxZNup- zed5s>dIPjcp}F=+ibrSY0sbEFUZ8H*1F$hq@Zq(`UBPkoayBGlZ+LWbfX?*o4n5$} zcnB0Q9?gf?!Gplp{$F(50cw0W?gWi$Lr#!9aI6ue=>M_CKn(_lf8DNE(i}SvIr48m zqzYEraoD9}W{?JG=oBt<@CSz@SUeaMd)pd8()`8N?Z6|5ixq%rhK znq%iBNB;en8XrN-yzJ63GZab!J5G3CndIcP)=U%vQf;#0_IzzvJXF)xBO;IAQ;2F-edTmGHrUr0mLfEL=lIOd?p;BnkR z1GL)~GTn{7zaO4{LGzp7;osvg7JdMYQ?vd8oh1Xx8j$|Yad*(f9fQYlchJNF!*O@e z#1M!Jax24ecTlDUaY5@RK)Fl++{8!iuOpqG1Uftk+86G2<2d+&0h~ZP4ni6hp>H~P z#KGbmaPd%ZRny^P#R!%Vz?5JDOGsc!FnfTyxuEX!g-%!4#zK$I(i4!r;R$O;4*q7) zsco=g=!8dikw7;~U#IJXZr2Ae*Ew_?hqUuc-#B#G7=mRW?n9BOF=PZwL0pI?#RQgu zxDic?8QK(Q={y1MeZvaCa7Y1oqT55_;7bN*kK+_LzLRU;bcoo2B{(o7LhKm9G6Gm+ zn7}d;SY(*N10l`FSUNv;`o4j#t?dS{Mmu5cD8b)67hIFv0oMwka8mfpFTm3GnP1TL zMz`w?oMCn2;0s(~b>rX*Tw!(N;0vO{3U*9nFg&a@aD|n|!IwC~O5@;59ATw#@Fg)} z1wJ;V8??C8_k^{h27hxSIIOO~!^*;=+vePhq7u+))Syj=&=!>M8xO`4-Jr3b<1a41 z`~SbY^bIHiNitMXvWM={oGfX@2^pYMT`A0b)L^$oaf4_asg8T|q`@(w=a;P!pd zi7Lu;@Sy;vDD%OG5>QdlZrSDoEa0|ux9d3pxzRQ2>%hcXT>(K-au9AvmH4w3@F(FSr#C+LtcbVuAl6NNYeT@>O7uqZ494}k{+?|5{(?ywG! z;71NYh3?Qho$wI6R|pS51xW7Q(dj4w?Z<#m+V;M0|Q3i4kbh{n^59A&}4CKOwZNUS%2arZ-9l!&* zu;WKTLzCcv+#^Uzun*+!@aXh1=yp8<8650(Jpn3#iYz?3s|-9kZO$Q%O9dTg0U4@; z9C(OYU-zaF6$9fm<86AJ_G`3Sb~KpKC1 z0bb*UyFY-`o(g;pZcnw9f#)|~gN~U&%x@fX@s(D};2;@}*jQcuzS&x+B&mY_I%EQ*@gT|nd z#t0w>9d(A@0HS7<*C5apow>OB6!@-b3nj$F}$kM1qh z=mu3R$6s(|pq7)MHFzG)2Mi#k9H?}?2rlK$y*R;!VtwO5aNvQiWdYAce*z!udhLay zG)x(!rbdikA(tQBr9bfb_l8I3u@}=p>7%#y1v6~U@B_HB$M_Lc-mZG||3CO_WEODm z^9?g97Uc$B$&Vw1nu(xZ42lueemK`3Z9me_I2!Cf7XstJRG>m^+h$XmN8^(bq3hoPGh=Th<5K&Ok23p<%>dZolCeWOnh-GIO z4}uFbod-=6Vmi7g#B{JIZqp$Pd%zQfFw+G!!{+AEq(QUuAZgg_Jeo9UejX$Zo1aIM z2F=ieq+v7kXwslLdXO}1jvh@KF-wm+EPUY~xW0z8xFP9_)b>C*y#0d`{(PV|9DJf5 zHg+Y#(Rl%Lq8~c629`pb=!Zx#fu+zU`XN%xU@5eTeuxwcSPE^TA0ovHmePPt*@IJU zGDM0EEQL1F50PRAOIg5lfhK<+bcenGpArn3`*t}P0iOm253<4MA73DcGwS?FFYD?I z{P}qeUU}^83B~K+{Q3xV$_QG1MPFYA%D<3SHn_ilWZnz#1wI)06On&!V{KoP)_x|q z{_GgM-3BQNX}$iej2qTY#A;tJ>+v-F@wE%DJW}`~m9K?Y|NrL?Kj6{JS`Rt}2@z$Z z>(9Uo;?T=Cl+|*G(hbxQ8C`!iy8aAlyb9FbLF>!It0mC-Y3Ll)==w9zY(KR5jJy&H zyt)fgL4q3hJ{E|TSQt`>l~@>3h?Q6vQizpU7*dFpSQt`>l~`aYP-P6NgGbk&LG}>9 z*Ms%4o{Yy|UsZz6o5VSufxW&ucn(%y$%9UO!dYK|sxJjd>jFCdiJ2ck1@`EAX+hAm z(&&0=oU6q_E0AIRGL+gM*LrDiy8+ZE1L=hI$xw8HdSoC;SdR=v64W09Ny7SLD3YMw z7)TP<8$*!% z8^`#!A+4MSS9!>lGGdiHhSX?%4Y^SV-nK!sQow7tk%JM@O2Lpqv{Epn5UmspDMTv; zECp(%U|BEj0bLD(a0*gfgKjMYU7ZDYKO(L%q!4k9A%*ZYh7`ir7*YsdV@M%l2_=@(S?b5%3KM;LReK`~P&q@wZph@XBLvuLvFkkB1xr9q5E;tboTamo5DN zAAS51bVkODZXfL9m!yqPrl0u#A2L^lGCqbmJ{d4NK6#J>ZP_Xn#wWv%V-5e2IX)Qx z&wwP1Px^-7&yW6i<&npev97OJb{CX2Maw6HavR3_6twjfpnaF1B`STO!?96UsX+S| zNcsN-dFv}gL8F?W`TFjCAnS--UjcFv5$h|C^ML#bniYYKx5LL%!RuG>$s^{A9S?#6 zjdju_kYT9nE3Vyxbj`Y5KY$iXYJdnG5Mcl!OhAMMh_C?>4#yo_K)Z1~jyr&k=VCbS z5CP>TfNAL9FVc8Q^P2?l`W3V>6>R&9!PmXDKZNB!k8a-upZNtGK`sK_^!)-pBYOz6 zpbyl@0WCy#eF2}5MTmpep@Sr#GqT7MOrRs4pewvPkR=eS&_8s#z5&?`3I>$b_(xm3<{+=cN74{thrA9SMFP`iP}rlaZAVfMvKhXz9Z4MQXZX5y6bUBqDtYKE zG_qSUZ3acS>xFLD3phgi0YmTQkmVYlkg!?<39ATLSgnDFRRTP$R&=|rz!_F6aEH|j++no>mVO9?)f#YEtpSG> zWa29UT$`b{&zs*A5L^C(uj)*{3oHMj?O(`zd+8hgZ7hZdA24u(j(LB95OgtQJotbE zQ{!(Zkip36WG3fd>Sk1$~ z&BYF4F}f(kVsuf6#UN3T#ScK1>Y!N)z1J1Z(i@$ifj*cZ%u;kwh^6SF5KBR#AWLt6 zEHyy06uJomW|qjbWw<<=%NryL82f_FMupHL9-ORl>rfwP)kpAf`+xw zEkzfFSc)zRu@ocjuz;8xB*#70bXwwiY^LXvxOlF zUb6)j1qBeu7*G~>@Bmo=+O!Hjbfi0U19%fqKzD!#coWbDaB;TbCFUleC72Fb(iw^( z3ULU!D8wOPQPfR9AiWc;10vv?fIy*`&>gx25sH&RcZxwmF`?Ua2`JDy9V3prf-W{; z=yqKI60mlR;D?6d3`p8WESmv`;*8GF8JLbo7lk+;T@>PYkSHh=LB@bXF$OIZ7l1=C zp*tW39EuCTp|}7XijYd70R4QAUe?8K`1^-5@yZkIAGVzbb#+9)gHBN(xcT5An$( z`iF{}L4n391P(OR{^7O@pdBBG^QF}8fXBZ;*P(X8*6%^azbrxibp7DL3QCTk6@ArP z(Ur1-3Pg}p99%KzBmt0!AEsi^8bOehAxJT}Yl(RtTk{*N`$@6&FL!u!9($pF8P>k= z==R;=fq8ya+hdplXal6V_5~;E0>K^N1%jgkaG)ccFc%1dHi|;i0C<5d^7ezDTM&VJ z2UKV^*WTgeZ`K55Ls!WDZcyO1oC2j2&;TdsQXJ6a80=6el!c1m1(+aN*i;vaEMx&D zNE$ZTg(i(Y*@q?#n(zYYhD~^(NrR@mK+>=&FEnY;q!&mUHtB^X4Vv}>NyDbS(4-L) zUy$&H?KM9Oxe0ZL2P-(+V1)0?&4}WcZ!|S6pXag2ES4 zaRtO4hOTcUt$bO20Tu%|$`?26<;zGLVBYbGU(n?sz5!-@<;X>(bdFSx2!d*H=J8b`L5UL4nwE5L8y84b;QRi>Cz2i_T53)C#>ithp9cUO>YU+GRpCE5U&UI)Dsx zui63Z;fNuH2uBPlL^xtdA;J+u3K5PNQiyQGkV1qbSPB%52S6L|5#b0b6VbvERxW_T z5ne8!oEP59$^~kx<6IBb%lgY2UwfBedv@CqP}5BGcr~bf^CO+56AG%}tOfRYHVSb-RgxuXRMs_<+u70}sY^@K}N8 zZ=j>p2yxIEO-M67$Py?sKFAX2d;TO)&t5{>$Op3Z0c<=KNgQnJ1K4OPiUi7R4{lpO z^9#7ifMx-ZPcniTRQjfa#|S)kgX-VXHyu7kj9>}qs65mHums9%53&TBf3dEoz)auZ z&DhD%b3l30L1**$ade`Jg3so`5Cxyj0}+J{hk#afKq?W?Qehs8PCxJ+ zcA%L(_{l$hJZPd2)6qpCrh`SXncgL0(GdnaYLXFrC=kqIu#_OQ+{Yp%gdzp)6T&ou zR#_c<$N)Wa2)un8AUA7J(uS z8tVZ`BgP_7q(Ng5AZf%{1d23htOq2G7>huW295QAq!D8gDAJ&@9*{I*ECNLueXQpJ zcr4<<%j1x~+lGOeg+@A8a07Uz0WwAhIad%AZ{SOH!SMzOj&&M%@u`mOJwD2z=jl0PMaGQrE97--A^DfX})CEnEO! z5ezzQ0I*0YW0CD8&GA+H5>g%i#y$}cfe-}K0ur$2pPAB zUJ7#u>7YQ!S%R>!DEL`|50I1`!+I&q0?1i{517G+26aQOodMOHu(JeVSHyzO5`@*C zpxI;aiPsP>@Na`19(e;z6f)z9E()3P1dGCY5a30xpfj{x7gz^4z^7|L;T+H%dILON z3l8Tea`12tfE;wWpwrRexGPd2x&U1HNkRrFp$i~j4n-QE1TTO`_y~D`5|ffIROGipY%a&?AV5l$M1@ zWJb3us1RKMo_7b2go4iS?)F^(t_`6P3CcGp%NO7yq&qyoi#%Xaj2w{|QizDekU~Tx zh7=+qF{BU?i6MoENDL`NM1rM25xK*o+Z7y<3DCj^7LfaU9;&Qk)%19gZsib#=r5%Bl_!s6G4H-s+5Y-Uq_q|CjdDg4m4nOykP>UH2}&;U~AF#S0c|B z%!b>Id_E$!{Y~^96NmP@L5I&m+BpxvM|B5*&q4?Fy$?QQ2cIv?+y(NjN4Fv9a^ddU z4?fARZ+sY!LoUPvwQg^CfG@;5=hN+a!SVkESPKN!nVttf+#Gbo7HGHvBfPMM2g(>K z>PhC{F;tRA3QVP21hTqto>Rs8HzUojaL3v+FzywKlgGLtkLAOeE9{PU~d^cqCK@N}3^PR4DUa0>6 z|G)DXsEFz;aDavtqJ7c$23(Q!x}E@UBY{}412jtR%L=+12|V7_Tzf>4zxN@?x@2&# zZHGtmo`V5e3=9nXE!&ZWyIa7*-2nn=o!8PpRXtb(MAW030TgK-C_)Y#9^DomowXZ4 zCn$HjZulP{0E&5tBHtYzP!m16VG3736t4ImAOX5P7IeKCsGb1dIRd^}D;acW!=4`? z=XrGcE_ks7bnI@g?+K6Y+8v$8JV3GIy8v`2z?_$$mRYweYvKD@)49HQPr59d+Hd1+XyIufayw!R9#hyQ)LKc)1OD}Z$ zIdq=#(7XVeW4!~~GV$Ubs0-K|`e5e^W^mw2NHrKSx$we^6E-i4 z<>r#r%^35tpia>R@HOV$MFL3YZ&z@D3lZcN_yv#d3W*mlIbaq*Cw{>ubc1edJpRH9 zzXhNJzG3sd;t&hq^S$7LuDe3vMF-ph==u<-1>kD=WfNW>D7bXHK7dXrZ(|4h-~ntx z8DxP=w}XaDr|S)uZr2-*2VXEaHa-B|$LNBxUI{A6fko2Ch!H9)fK`?WDl36i7M`sg zJ1>B4XMwaA!3XZ6*9R}ajRn+l4wBD78_GoZ(;Pc5q`7pu!A~`J>GH8;bmZT55hUZt zzx~3&M;tEv+ru~qt(cs(*dyvCi-yn6pD4fdi=&ij0b{OI59FW5#x?Q2uIcN@B)_~q8 zywdG@1w6-e12M-0nRkZHFRzAWyf}pzv_I&>TAKbbDT{iLt+))tdc75Y&c%U=%4!Awz((QW3QS*Rf z^9x3g?$QS?oo+6mT+{8&(s>-B60EHAqGRVt-^`Psc8`zdd5^~945wyUcmC}3^YCas z2Ga7tqxm@K8rlmW`@2goytohsZiN`c9-aUP(Eh7{N3ZS6HU@?lUEpT2ttx2$U$5!4 zHc(w5Dz5hb|BEIjP>1Lbq}z)+KGAD?Hjshg#fR|!{~_HIwEju2?Op=%u0iV-c>T{dH>VJVY zBKC^1N5I^_7l-;*i2554_2O{#XK|=!1>JYuYq|}hULCIfE;jWqmjC_#|HUH^@fSo$ z{QLj^g)xYT0}-7dVhf1442TbaL zNdqux1SUt;pz-$*V=>{e}z@!(L^Z}E8U@`zq27$>C z7Y2rmTMP^gFZ&o67&6|1SfCSxGPoES7+zL^#6Vj!UV@ekW|)G+(m-OKAXW^BH50@F zjrC`21hGI{Q!@^OSfD$iGL)DY7+#uy)SU*gK!XAq4?rx?Ey5XJK`hW2_Zec$3=A(p zcm8GQfmlqSzBhwUuk2Ar1_sCA|EgOZ85kyjS1-PN_W%F?4A4e_mv=xcbC8QKfmmfA z)(H@+3&h$7V$B1wwt!e`L9A6E)*%pU0f?0ha_2M_4Tu#0Vm$(};z6t%AXX)abq>Uu3u1v* z(qwD_v37yPPJ>t*K&%@e)-n(a)X#o72gLdf5}O2Kak4NlyzBt6BtWb>5K9BZDgm*~ zL98qg%MHXz0I@v$3YmEd1tl3psfj7^ zi6tdP@tJvI+LP-Zl?=tHdByof#SB^bnRz9} z3?*p{ENEi*NRAu$IO#+3>nKP%+t zfh^3+S12w`Do!rSOiC>(Rwzm>EKMygNlj5m%P#`SL!vM<58{jX;*!Lo5^zZ7WEPjC z=7D0gBp)IPF;PKJPmiIvB)^~_HAMlU2#YEPhvbaJl9JRSP#oqLDWsGZmq|B6*)I5d6qV&?-)VvaqIVJh|3b~1S zmB>ESQOL>6%>;R{Bp;L@f?=Ld0VQeue*3U1>snjnh$_J&- zV*T923f-doV%^NVlGLKK#N<@{;{4L0{$V&&Q2yqTjC{8UZOD$4J1es!`nvDoo;2IR<9|TT{phQ%h zpPZdq!r%NJ`MJ5ET&$s~kP0f`tQg9RGD}iHo&xg~KwOY>bQMa9DnX3I z^u)|O1ziOOSkhpCC0v*QG_B}^Q-VG?jp&0?fIdpR>Z7Cp{gN~WhT@Wx_}t?3V*TKf zqRhN>21`q$L=(dlLx%KJNMQic6_%P@l3!%Z zV3KHIVw7ZNnr32XY+zxMl5CV@Xpoj8KhcT zB&8&pnOa&HT3VQ;q@4p{ zW|*8}W@urYlwxRsyaOuooWN2=dlA4^Dnw*rJYHpF3lx&=2X_lI1U}Bk; zn3S4=790Vf@)S)hur#qGwJ0w$KaU~N+}zT_+%hdOCC$Ll%)s2(B+b&mEXg9-&@$QF zz`z7eX8@=gNi{J|F)>XvO*BkSHMKNPGBUADH8M_1GB!v{wlFtL!=fiVvn0bgzbvsR z6I4|(BpVs0T9{ZQrx_-hn;IJ@TBMkR{BK}xoM>sDYKCqCI7-osFicCeNHnrYHM6iZ zNHj@KHcm`6Nj6SSG)*>7u`o(CW5`P^gM_j_tcpoaF-KH%l~2PD@NpGc~tNN-;`7+jK=TacQ8YLSW8m1*BCmW@unkJejB^y~-qG!gC{DRD6&%CsJ27|;DQ^Pb1 zi?n1D6AMeDG>c?I12YQ~19NjT6Egz?Q*bW99rnXRDcaLH1x|)N%cs~OUX%%_cStu1&t4=f`f&RPo|Nn zE0h2wQ3F?>OjAQ6S67%(U<)DUnIg<{N-R!|M=0?#G(jz+j0}PxEvA6PqQu;w)Z&8t zyy8^222{oR$Z8?>p_^yylMfCUuq*>4unZ00jfo;p93fT)@dw2Hh6wdYZU-3&kw-Dl z0#*=MzzPCas9~V^!6FMX2ZoX27gGGfeGXB9?pi|&Pzi}zR3U3YS8oDRj-&ux-V|JX zBNU*^8yXamT=_|b%^wB0xC2if(Y#l z80CQ_yqE;51&vzDFff2lCSm}Mt$?(GXvjzk1ET{s0|RJpC)& zB)~cu7%qe}Fdm2mnZpP&k^y`$1IXN}AO^+?0Y(8Hc8&>*3=Ap^3=AOqETlopasK~T z23ZKgj(h@bOwPP)AT|R;9q80*2dFx2u&E3T3|Q3VfTlcU2%9&Bfq@|astz<71-1%{ zd3zWb7-m4#flfTcr4F^9IzsVu0jl2*d1JmGwWk%7TN2cizN+!bUT zw($GI$iU#B2T^wvPxz@YF)+N)hp1D>W3LYr1H%VHh`NtpORpz`AdR2>7J_yncP1EAe&|M8bwpmccx zs;(7}y`XeyU<534nmjzIDQFzpW z(&Y-Mx>!8wKC`FfjZe!aUF#PyuMX;WO_H3j>1&5$e9MFfc552#F6>JmDh4%D@22ANb0u_$RGI3YXLPzi7;;s8zTMTGw%u;1H*#{gyZ)Q8w0}*BK)hu&cJX1s%{RR^x^|L ztOlC?@Rj2w>d%63_FNWcZ8jR;R94%HI8~7)E{^Qa-SU}T=2P1goA;h z0jdt4`)oKE7wZ5f8cZ9 z5>5sN1*p2Yc>HmOlYwCdR2^s!HdrZ^@cY8az%aoDV((P2BJANJ!^ObB;R;cQuYPj@ z?PY+f%g1A04rtX3R9z|_byK()7$y**ZVwj&!wsl9(1HiBky!lu1mr$~a zhns;x1F9|-k2(`>28IM8)WvW!FwB6e!&hFla5FG$fU28>$KEv{_jy440Uuk%;@>OW z3=9rXb)c0WU?Z`p`@_w^Pytn^3s!_ZTvT`%7#g7J4zfZOVlmH$hk-%E58}SXP-WQq zLnS;63>%>8KsyP+O0k$Xhlhb-22@=LSP^#j9pPbMxBykxjz`@a9tH*re~A0=nJ2=_ zz)%2HhtE74UIvC6P<8msOW|c;5CAPe`TzevKJ$8b85k;{>hPJjg_nV015_P8^X~96 zFh~Rv_Ad(`1495*9X|7P_!t;=K-J-MUkD!q!w0B3eCE~gF)%~~5q94aJ_d#fP<8ms zJHyAo@B^w2UwZxmN_3!mjQ;=s?}R74$nY~TXh7BB?f>#KFepIP)!{KOho6C=0;&#t z069plBj$MA6p(o#kZ=(MsR3au>h|z6Fh~%g?g>8wg8)>WKgcW)#$q0i00V;sR9zfM z4G3dVXClDBPykg2KEMu#x)=clh8a+G`09@q0S1N%P<5Fgvp^V&y=w#*7;X@u?uq~d zgF-0b@cSdcz#u_{Iu$_%1_7u#PmtR{7>oOS1Q{4Cpz6dyeMlVYN(31g3?d-z`-i99 zG)Itufg>8C4qrMr0+J*`-5Ws$h96N7^YlP&17R%w5CL_{q2}e`8LzStVqoxyftZIc zf20U8FgQTf;Y$ZSLJSNRM5x;$#K2$xRrdnjeXh;mkO#GQ?+7t4{D_6P4`2I=MVNu% z15_Qp@_8Yx_=N~FFf4$oYXQ3kd%aa7%)r2r1Tjwp&v@7pVFm_< zG>AG-RD-O=RS9D07*;^lf!D@@?8cH_T0|KbK0wvs%SUTO85mwb)%k+V0%0uXT@htq5Xd0xk3XUe z3>;8(@*uN77>ju-;3dEi^YE$j5o2KZ0d-#<$Se@XVqS?D1A_z9UVQ0bju-=j1ymir zdgh22149B-9VjV+ti_f;-iR?UL_pQy^M{By14952>TE!p38Ct;z?Nc9rzzr~#nF)P z!{^@~aR!DCsCoF*Z4qZ+Xdpt}9dQPR3aGkwc-+S#!NA~<32~nWdU*=f2P#i>Bp4Vx zvLNd4l|vyQ^N3JaBf-F60aX_UwFg_gEsaODP#}^3(28A4m zKR`R1!B%5Qr!tZZ3^#Hi>hSs3MUsKx0ukzRBpDb^K-J;%#}r8hh67M_kzmJRPgi>+ z85n**)!{Smi6jHV2dKJwJmJD4#lYYJIuZB(|NrTD)R{;zFia>Q94;|Z3=ADasB4j8 zU}%7VFpwkzILaIGy}r}BGmavGcafr5)PLV zX$A%bBGk>1W?+zjs>9drJR;4&-~d&Juig1Znt{Qh1mZq??M@LH1_pt0h&p`f-bRLj zfrAKjDWFOXs?HBjdhU^7V9hSr4MV5i# z0}<+UKqr_$)#1yRpp#A%>LK>x%Wt3)R4N)E>hR^aC9(_*2O1&j@cHA6ECa(1BGi46 zWnkC7FmbL1EpBtTnt{{R1vub!SF$G{)}Rfn&h z-Xq7rz(IsM&|UK?14{U%XwBXJANxs>2s=f8-e$BB1K<#hZ!(149E; z9lm%2ov2#@RfjL$N)#9v3W!iQM}dJM1FG&YD2zcEOE@1j(5GGB8v?)!~b`Es6{b z1yFVP`T=(o85m|j)#398ixLCF1gJWE@us81z|cX2x)3D>h6boQeCxkzlo%LJK-FEr zGY+x@WZo=Dd^F%ucSebU;l><@I(+{9qQt;(fe3Xn$_xxApz84DHy33F27$Q{d-26v zjxqxS2UH!t{5D0Ifx!T(4qtxTqs+jd0ab@D-kvBkFenhAjz@)oK?14{-#Qr+6$XX| zsJeQ5<(~=z!;Qs|a1mh#=QgbC3R_ed7%r@WsKXa;Yg8B*P7tB)iV6e60jN5B@%BfB zfq`Q+#9n;yrUF_d09A)C-h5OU7&M^j@Woq+Dg%Q8R2{x}o1@CWAVGw>BdQDx0#J4M z`cZE{hs{FO;q$ME8Uup^R2^iMDfa${jT!@k#u`ZYnd0d$q=3v@3sHwJetXmy7%YfT zw?&PC!2qf*0-CI_mE(8R7#K33>hSrOMV)~m0jlme9`kh685lU$LHvO)Ttd_t7(PJN z;qz~eIs?NCBGfHWXJB{$RfjMAodLOTJ;Z(Z`ZHhD85jbHP$#3oz%T=<4xc|hmcY3=AKj>de53u&2L08Vn2^8zBD0mkyq2Ffcek)!|zQ z&7;Y{-~m;KZ+_oIlYyZDs!kG5eH5d~z)-OX;=Z$Z{L!Mxz@V@hq7Gj=U8BjsAOTee zzCZ|MCYJEKqRGHu09E$~qy~hssQaVIz`z08eE7EKe6$!C zb`YViM2mr815_P8|IX23U|0cFhtJ+4S_}*epz6XwegI)C{(Ymxz;FYq4qv>9XfrTe z*anG@ZFu6>Mw@{lV<$u%KKG?)GcY6&p{_@pfgu8_ZW+iAAdJNyTeKM%4E8|mbqA>d zVKj9hA#!lZJ&3M4DBS_2Cqd~sPku_ptKB>egvi8KV-2|n3p!75-y#PwDg3?={^gbwk0!m+k(s!Wr zGbsH5O8q^g3>xr+6+oNKxqN!UK2>HF)$P;K`QbI(1wHnG($ar z(hSgoRsgDD@hb=e#-9M?CqT`C$TBdX^I_t+=nqi+4$y&?4NzJES};36X_$VP{Tp!D z@1P9v*9NG*3(y5V7ZM;Qe1Osr9s>i+ybCzYn*cRWAQ__L0_b2B5EHtv38vrSHAoO) z-Uq084N(0MSq27lK1>{gR)P3K0ot+J0IldR zA102AHc*9x6GJgXMF5m8fYKA7G(;8=KMGKHq1)F0HLsxrqNAV`LN5TFYQw<5Z~#g} zL=ol%K+QuB{|iv_63QVu94aBS0(1j~1C)k{BFrnmVV;5-)W0?MX|2}}}>w)S7or252z@Px7p`!5o%m6w;i2<`bN`RWT0IE*`x)5)|WQYkH zpfrSsaGwGW^EN=uO8{+VVPIg`0HrTL=?_pE-Mj#(dFbhn0Xi|a0J>mv!EA`m4bY8D z7oapm6yd%GsCnq=F92#@!y<@|3sCw4loo(5;DgA+(#rylo1yK3`lzsrEA+iYbK0wVwcb^03iarJg zhJtkv9RV95^o7k3`U8}P@DS!1KqpSo-8TVh-hwR<9Uq{y0O)*a1_lNLC=HQCn3n)G z58ZtapyoY*>PrA^Zen0yXn+oUE`ZYL<}HAlhweTDElBz_0*HAAr&ipftL9 z2cYJmyRQLiUc*s{jtR#g^aW^#`2&=Oh$8&^6lxy2`z}Dun*hG`u&4RDxO05#9xB1FBxB?v8W8A2OC zX$TMDz5pEN9e|qm0jf{n8bs#>XvgaVl!k~R%qzfQ9!%XRJsJX|Aut*O=pi7eXpvy= z80uKS5#(5)5$Y7=2*M!{zCx%YgdgfyAb>0nQbR?|z`!8r5Fa1q7hGbInO_{Alvtc< z;+dCO;$rAp#t>M@FaabRTw;=(Us?j^q~@jMcqRvz7#b#LBo@V&6eVVs6niGSx&{T8 z7#b%f7H1~M=NFe0r6%TjhQx;$#JdKY#Y1$5g!vg7#K$LBR3s*4mKhqF$Hyn#xgs&XptLA8zAUq-q%<*yq2aHNY(>I6pYvm0BtiosEip3(Bwk_X5T96*pBtZ^T2fq@3leHzgo%O9eatUS%1Mn+EGkN@1W9%v zOQz-ICxTrt0a-LBKQA4mbOy2@)a(UlVhDp*FbX-uCne_>fUVg8;w7gQr9RQgJNp*=SDY>a78TnwfClKO!spTNu7Z4&vsp+6o6hV<&cmr%G{**V0gr{+QZ*})_P;+CZ5m4Rd@ zK)Ik}^O7p_5_7?NW`IO9^HNLV3rh0AvAX~ylAD;E5ucb;oS#!#k{VwEIyGtnL*WXz z6i5V=xxrZsWcmh(R8CGlIN9s~b5nDZAwhWn$}LU>N7V_CLm@|O#wWtGTtE_pr=uH4 zf(7}-VBHTuhJlVB1ljunte~_cC$%I#F|V=&bX+M&`~#9WH1vOf^cBF3ZeSL2h)0BE z2bha-6zK$p!U-5Mpfs6^IE!=wL*Wc$HIPF`L9SSUA`CgB6cmmiVbFP;AT=AH99TH) z0PzuLAcB+}01M@$rWSyBC%`<&p@|b13NL`U2#?$V^Gk}7Gr)=K0gRgq*8Bp-g+$B; zC^sh+9QQw<+&pN!HLwUd#21$omE?m{Uk8X=lANAe0y?V|l7V7b7&fu(_I0*gWeV*`i51V#`{fB*#r1qW2HfH5Hp+1m*+BPK95@J!%=8Fhj20SCw? zh+M$~)&^FX)C9%`-UWOxUV_2|rUPIbFECDEQcws0IeY@hqX`RGE-)%MG%!72Q~fa(u`>WA@R`k}+5;8U4E_9OE__B-%`e8<2L1Jw`X z!}KqJNW=9b^FjI_K=tQB^~3lu{m9`3vLBfb(k}qo;|3Z(fa-_wVftbHUl1RpADIu* zuK?BG1Jw`XgVck<4|H}F$O|AoNIx$ZuUR!}`fY&Pf0zxDeqnr&(IEE+fEY;W519}0 z{{?=C1I|MA!}uU=ApHxV^NJuo$oADIu*?*P@W3e^wegVclUZ-A~71o1)o zk@+C~2cR3qETH;fe2{vOeg){dV-O#tADIu*{{Xb+nSp`96RID^2dM|?2i=Yg@*#*1 z(vQps>7M|t2xFl7VSJE!kbVKQ^n=U?>0ba{SdR#1VEt+k_wR@4hw@?iVdr6i_#pdX{PXM#@bmdVCV=FT%Mhc0V@%Jb;>~$_)t*7@t`8I6x23u!HJ{@rl*H0IEL@svpKDRzHIgBtGk)`eFR( z+}P6xa()Gc2QnWNzY0+EUPH};@i}?OGtU8PUJ(x@d|~{(WSW-%HBXZlVjhg|!;9U0 z$n`JCzsP)$e-}W_+Xgic#)pMJvU+U#A3*i*hw6v%iPf)Q42i$fQ2j7IvHBCB`maFs z!}!GNUjWsA8>%11CszLhsQzbA{V+bU`V~Nz{D9VXK=s4;#OhCg>i-7S596Eik(nN# z=5_Ev($@kgpIG-ifT}+N)eqwnt6u?nfDS7^#C{l`Sp5l5{SHw5Fg~&R7eMuQK=s4; z#Oi+l)qfhQAI2wEzXEh&Et3G$|4=?mKXQK*lpm4#p!|FQs$LkXAI692CsZFOKo5x2 zf$E3xiPhf#)$az?591T7{{d8g98^Dy57Q6ZX9D7b{Ey5B`9A@A5MdEiKa3Aj4{EOv z^8W#-{x+z77@t`E3f7SFY&KLsj1Sk3*1k_b;)C4ZU<=W|3aTH*hwFz(gWIDZ|0DYc zr2hd_|3RpJ7$2q|bOtrZ2oN8nADIu*UtkZCWnj1j)eqx?)Dsha7ohrIK=s4;F#X8& zEy#XkKFIzLQ2l?Q`eA%x^$S2NEO9|d{(W_fxhw)+hk@Gu9KQbSre}W?<{xYHZVSJc=1rP(Ne}>El z>E8f7c&QqyAI1l11I0hGec0>|aE9351Jw`X!}KHj7o;DV53;`is(&6-Ka3C4k360S z(vQps=?C3;2y($jsD2oqSpA?o{y_SVLiNM=#Ogl)I&_(Vf#Et-Ka3C4k31d)az8R3 z`Sq>__H<^dErgXB2|u zA2=U+COxuxZ2A?T3*SSa`eA&S{m|qMFTaraAo~-b`m>?>VSJc=Lg|kIy59E;R6mRl z(~oQ)$o)&C8uAI692hjzE%{zvA6?1!yamJx=8Ka3C4 ze*wDx8N>&YoAC597o16AHfrQ2lG6`eA&SenS2G0BDBL7lDKyj1SXK$o>sb{q9ixFg{E_ zA^RPm2YVlb>WA@R`U%;;0IL5sR6mRl(@)5L1L(n$@uCp_!}u`$gzTRH)n5eF597o1 z6S7|cdhq%OsD2n9rk{}g4N(1TVi5Pk_%Qv1>=%F@fY<}o597o16SBVms(&$5Ka3C4 zPso0TP)Gr-Ck}Bxj1SXK$o>SVeg~+27$2seko_N^`gcL~!}u`$$mI__H<^uzY$tc2=^ z@rl*10NvMf9I7A2hv`QSe~|sie31PGQ2j5V`eA&SenRQ-0#rYbBqaP{e3*V@`>@%s z0No#?1=SDZdr6X)9$@>9Hbc#W@nP;kZV!UogUkno2W-F6ZK!@2pIH5{eNL=Wknn)< zVfvBdA7no=A7nplf0QOvKa5YT{sibgDIchQ7$2seP<+7lS>-_W!}u`$$n#}j_an`x zf!q(xU+|LooeNK1@Gyc!BgI^FjJy`@vp7^~3nY>K90a zWO!a_Nc_S0F#X8oA;^AYKFEFtsD1;eei$F7zW~HQYM&$XLHai&LF})F>WA?`+Cc3y zWdDNfN9Kd{Ux4bL3Dpnd@02DlKYf6jCn^I84;bG?hCK6N`|kEY&4ck_{`&x8AcYSy zALKs<=srDhS%`aJe2_L`!bbtBKMSfK#)s)ARDW)O>hFT;hw)+hk;@ZM{2=o|?uYIF z+X>YVFg{#AB>BPXJM{Dg z+ozZW)eqwnt6uKP#)r9wPu5^57UqAUTp4%?VJ4$)eqyt^b?9d*nV3hMM(U? z_%Qv1?1$~sErIHX@rl(B+uyqpsvpKDR(}C>fAAZqei$F7A33~1;fKrzh5rMnehnpv z|6zP*B{K69bbs(nsClq`#4z^|iVxU+NkSw zhw=T@$%{`0=(z^lq2|H(F!vy@KLxo5nGbRg>^y|GQ2j7IOh0n}38WvH57G}iM?qBs z5*{!|7sSeMtDh_%Qth!ykGckTFz0?0g_%^?!iskAUij@nQN2rRN0bIYN`6 z`eFRF`sAf&*f~Xv29WT8^P%fS2&HG(`9>B{{V+bvKZL>)b}mvGR6mSQtbW*eO6#He zVSHls8$i!vdIr@Gp4_Ej8Ck7*!f$!#t`?z_{8dGfS$uu2-Oec!}Jr157;?gGobome3m*b^j1SX~yxte2ADIu*4?8#P4^%&l57SR5{69d?8`Cs_gddDgtbPIL zd1Ika{V+aEKcVnzfa;$C)eqzEG9fQL!_GkyHHG*G#)r9wP7*AC+vL0c&L6DpIH3@&~p;2p!#8an11B&#}*$2Q2k4w z`eFQImgL0;?A%6UD@c66_%Qb%w?9GdLFR+P6L#KXI#fT557Unve<1zHe2{+FIgxXr z`eA&SenRm9J74lFR6mSQto{wq^C|y8^~3lu{e;Q~2I#qza@LUWgYjYd36*!S^DVug z`eA%x^~27^tbpo=@nQN2g&*uZ%>_{XFg~&R6`<#F9*63O@nQOr>qk)hBlAJ=zX7WM z4OBmj57Upl-X5eMnGe$c0jgiv1`_@-K1@HM{1gDa(7_C@PRFg{Gb0$TeQnGdp`0h%FsZ6W@L@nQO*((v&SWIjm$1*kv* zR6mSgZcAQy@&RhzL#TN$KFmGH@dpY|WIo6}uya~}K=s4;F#TYUAeHaPe6W7#`L2?7 zknn(=_X^VwJuV-t4P-wuAEY04F02hyKa3C4PbfdZ&XbLV>WA@()gJ&oSGE+YAI6_y zM_zmsK+WT|hlB@=Ppo?;K=m6#^~3lu{e;pt?3~;%sD2n9rXM*ygW?034~`G$`MS+e z{Q^)vO#cD2{DI5|>4%-my9ufv#)s)A6rZs3d~ZYb!}!GN7q|&&U^6>F!XL(m>4)79 z0^)=GkIVWA@( z)&Bvie-czbj8Ck7h1-z$TLaY(;}fet0IL5OR6mSQto{b5{s&O~Fg~&RH$e6Og6fCy ziPirAs$awjlKx;)ZIzDH=Z>jbDPspNq!dhsM8x#{Y)K=W|E3Uk;6L zhQ@b8<0qr>8_@Xk(fIq&_#7Un_N$`t^U?S{X#8Dh{1<3^7Ee_370~!WX#8w6{#-Qv zHZ=ZIG`@%zs(pHBd=E5!0vf*pjlUR;e-4fR3XRX^jcUI#8s7nppNz(DL*s8kKT_^;9U4F0J0X`=Ci(D=n@{3&SsRcL(BK4Mtg5LDwnLX&3+K((J2jW2=5*FfW2 zqwzh__>pM*EHr)%8ov{bKM9RLAC12rjlTzte;kc}4UPW#d_#`i+w2L>`QsPQo{>_`CB^b8D%Q2rh$A0&!=K457e1A`pW`L{h# zKJ5J3Sx`RgJlYLVKJ0wiJy1UEyx6l)KJ5J02T(rjJl8i+KJ0wfZ%{t$yj8X!hlLSqkOD&fDyO@?qy^&V=$| z=V7ja@?qy&?uYVW=T%;X@?qysK7;aM=Slv8@?qyg@&`lwdjWdhqdb%kJ8w}3%7>ko zXbv0?LP-cNYQW!_Kd(0P`CdVCT_Igz{nM$*qU-Vdug9g7RVK zxygn??1P=hrUvE1&Q~*n@?qztSws1-^Us{1eAszrzED2we6nyTA9mhYESTTG06RZy z4wMf&|LX>n4?E9GG7RLt1_s#qTp>_C?7XcxP(JMZtou+t>^v;7aFBim2H1I5>QFxH zyebDMA9ns!6qFA;PpSyYhn)}A2Ia%fdzuC1!_IG759PzoW7-Gh!_HT_3gyGjOL_+7 z!_GhY1LeccGZKt|xF2>tkv5bMJ8#Gd%7>jF6b0qO&I8JU@?q!u)I#~N^LqNBeAxLr z3!r@1c{-b*eAxLoN1=S!c{ewqeAxLluc3U{c{D$veAxLi%#jfPz|M;i1@jviVCTPN zfcXpzu=8B%!TbgW*!e6Ezk zVCQQT$3XPM&dX>6^BWjo=U=eILgZoRSxABT4GggJDHeeF3=FXICbon54GggJBb?$O z`eElmgn;=C46ySZ&Vl(146ySWZh`p?46ySTK12Di^AuR(LFP3uz|KQZhw@?P8~8x^ zu=5JCp?ui+1D#Ml>^y4u! z)}Nq!*#2puB#8O2{m+h2K5YN;94H^QANf6$58GeNpA69t+b?Vf<-_*>mP7fl{k)r? zeAxcn=TJUuzpZo%#5~ykSw|=zwjXvXln>kA`V`8C?N?<=h3JRvHjlxdqCH?Z5mC<-_(<@}@!TgYA#>fbwDc9lM}>*#5=iP(ExwB2zj< zKWu-Y9h48-FBl2s!}j}4gz{ng_bx#Bu>E*k84&Ye`|F&beAs@uSSTO1|E&zlhwWcm z1m(l_pPh&DVf)9vK>4u!VA7co`(XRKY@mGDeytcNAGZIh6v~I~r)r1tVf&$0LHV%# zP3NI}*nXvVP(Ez`5l>3(u>Chzp?uhW8uo06 z`LO*l7EnHHze^~T58J;|4CTZ2pG=4HVf#n+LHV%#AkU$E*nSVL9Eg3e{Tez@K5YMm z7nBd%Pf-Nr!}dqaf$^dH4-P>2u>A{#+nYAm+o?SGhs?u=P@vP(Ez^Q$LgsThFu;%7?8-x(VgO)))PT@?q4n~#1E<-_KemQU4yXRh~k%55^Y5ps)5n?~=-uhf9A9m0Dd?+7wAN>v}A9fG? zb0{Bnk2_-%#5~wN?2=GE>>hO&C?9?gI+PE)$GjHGhuuTI0Lq8mBYp5p|{0J!jBb46&<@2>c?4JPTM?m>2 zp!`xO{{oc17|I7l^Ga1qLv0Byo#U|@I)}H z<)47^=R^5Fp!{=CzJV&lzki{84=7)}17cqTly3;-&w%nhq5KO_ej=3r0?O}!@)gt| z=5L4cEuj3%P<{cF{~pTkfbw}dA@(1D@-?CS8&JLvlrNwTF+U&5*MRb8L-`3%{&6V3 z0?PjlE?1SCMZVlzXfXc@}`LO%dYoUA#=zZpsp?uhV z=_{f94ygQTC?9tJ`CAa5mx191RQ?;3{{qTq>|%2$E%9iV(8 zDBlChcY^W*p!{GcKLW~6h4K@i{30kn1In+4@(ZB+4k*6_%AWz{S3vnoq5K*se*=`? z0Ojw8@>`(%vrv8qlz$z{p8)0GhVpMjK>Ys<%4dj#@IOQO8c_aUD1Qc&&(#kJzZ)?S z^&(JyMl6Ic1LgmSgYY$=e1~`l-x$jO0Oeaj`5U0~U7r06417rQVUbWiY(5OMtd1Wv ze*(Qf4|I(pBjnf`(C{gP9Aph9#4-j32GBJO$nv0d)5v_#rIN_}>1g^v%SMsqzoW@3 zLL@=X0^6^T#>7L9)u!iT%(F&h6P8vh@J4|gvMGdR5A`bE+BiV!|r zy(Svp5RLDG#!p1!7ozbS(fI9Xe9*a%j0~Vu0ZD;#(Bv1R@mHhqx1jO&pz)8O@z0>~ zub}boqVb=i@jsyPf1~kPSis>84^M71z6v`71L)32O?Czb9d-r=U3LZreRc*019k=m zLv{uR6Ltm$Q+5UhGj;|Bb9M#>(EW~<>7{Mi{80@xWC0@)cDg4h`tg4r1uLf9D?LfIJ@!q^!Y!r2)ZBG?%iBH0-jqSzT2 zqS+Z3K=(byvNJHmu`@8lvokOxurn|uvNJFwu`@6vgYFt+XJAML-7(0{z>v<)z>vYt zz>vw#z@Wy?z@W~~z@Wj-z+lAAz+lYIz>o#m^XD*9!$g4rakq4Qe3V~seonD#fLl;- zesH`i16ZWQA~U}@9&~lNiDzDBiL;?=8CD4ws6=pyNpgN^2}n(FiAic+N{(l8aEYN| zaz(;}c83cg;h21*Ju)@nxAsC8dcuAQh1N(&OXfiy>Ex$0uiG zgT#wV5|gt*ocOfFOt4CXNP1~vQ3^y+N@`J20YiLZNq%m8dTI&iYI+CU)7{Nj?N%DlwfREGG>ywsBTf|C3^hWOmX zlq~iRX(vsBpl1z{^SPaAjr9^Nvg4BVpfRE2j%>`Y*4x)=wOBmwwld@8iOX3qD zvQQp0TA;jw{9=&8g48^Q`25n6oYa!|#JtLqj7(72K?T5GEr9BS`K18k!uxm>Ay6!( zB5t~eOG2->NAMwc+sA`1wFi+9$0A*0A72c2(SsPEd+6g47tqI-Bo{+(o{ukqUO68RxobY9GAAXzxTG{GJ}EOV zCAEk_KeRZts8~P0D5p}tpeP>{q{aHVi50p<`Ng`Kc_pbuX^F|H`o;OBMail9AVH91 zPG*umLvCV)UNVXSKAA~HiA9zAE~#ayIr#;tMfwrR`6;RTE~!PCWvMAHi6x2p$whia z`APXDnR&XYNku6s zQ6;KqW^O5}KvsTcUP&>kSaE7zaefh+U`ZOPB5;kzP+pW+P>@=rmt0VQl30dDW`wyu zA5^QGf{S5L6;FP#RFq#F4=SEgbCXh2Qc_dmb29TvE8>&$b90OJz-%TMOsmQE-0K_5rGJn0DHwRI3Dgda5EF^NU%KELzwaw#U&~6xy9+l zX2B&znR)5p_BG{>hncDmF%^<7{0xoLQy~Qp*heLJ30yBNGExpG;FjBUe{i zxw$C6802&im6xBA8lM4nACj{z14@%}GK(`(i<}Kz1H6+1{DR|+eT&mwGpUeQP(w^l z57elFIi~<-FUT?AO2#>fAs$wbfY{(_2E@qBEd^1~iUP!h)FU8PNg9ZZhh`pw;L@bx zz>_ffK5QKeWEY<{Vhj zVTkG*Lx}&u`YnAxRd8@}Vjh_W7<=ZHlAzVJq_n6cCp9U*#29S9pU@7_{=;|&m6rY0ctIPt0>Bf zV+)Y!pz_=`0Nm~cjT@Au7L{Zcr^ds(II@Q~ykk+425XV#7N9$TJ`#%hk0EJgWc>B2c#j z6cQGRMMWX`VTnbaSpgZYu4O?8CD=PippXN#GSOts!%~w=@{5eA)ER*!cyN0W6vU{V z0jO2507r8Pq$7tJ>R6Rw4SK99(ZV0A8q`QYQvwemSO|LKP(aY>Fq4RJJWMTq=fhN? zdH|G05X}N-BeXsqC>4N|P}W=mXGOSCrl5usq$BK!?0=blM>H(=DDy@JN5=a>!C8+5DoWoH^c5rl3poKMJoC*~9VC{y8VJ<}J z3YH^c0m67TUl! zs3QX!><7=KL3)Bnokd7m!xAd6)My4#fjvyn6rqO*nlx&7AiNC=2x5{t4z(trBub_5 z!^oJZ0w9}U>5B*#V+Jh|ny`j85&F;~fCwF^ae}4+5~?_Y+%y1Gq0%eNGxJKIfsW=z zLxaH5M9{jT%=|nmIR@`20Kzt?d(ivS;6Ni7>tI#HL^D_+{&)o|!5fj#xPrwbx|1Q& z1l`iRC zi1IHsjRZW7O$%xWfQow5CNJ)Bd#vqV9Li~s-{G^=(A-Um(}`#WtOtdLr?8z9H1}ddsLaj8a6l(^IpN{{Fh>sZquiXtkdyOK10_=-H7sSU+q;!+s87UEMC zhE8Hq61pag)Pte`o?_5@&}Jb;iFw7K74g9(iMa)-Dbx#PjG;tytDvFpjp9)6ldCvg#nXGA|j)ebg{HFEu^C1hjcDB)=dtxtMBhwkU?V z6@BRwHOJX8GAwA6T~ALRHtMYp3N2`Eg%AEi8~{(*sN$H(8C4!@8b(!Oj$^$R*k07s ziarr-362HNytI5;m1xiaLS5FP54RQ?R-lxHSpS2o3dQ4kcaV1E78O$rTmoF4HqK!YN~nQ^o|Rj44hTbDT1kxMYkBamwIyn-NYI7~yn* z5l$BvgIwV5(LX=gWIMjuqsSCrge-i9nT$?Mwk{CKs3p@sMr270otSkMhJH*Xn5N*a&M=L` ztrlB4K`GmjDmJwAi;}ho=?U}0r2?94@JbVOCAh{U+I=Xh(Od?W!{#Q01XkDJuWRu- zjX14geunrJ!W>P6Dy%*rSnFdeBv7Iar5ynCGFteesDU{dr`2Eu*j$U+Xn@&;&4t)i zhWVk2gDvvJCWx8yaI{4*vmFkF7$%}OS};sPSAbNO!h6$EAxLczBvH(I4ZW>{S-YXA zC@v`iZLnd0Y)M9D!WO0$^$aGsVl1ND!5+}Vh6LfAH z%n|vZ(`=Beh4LY`Ksg`>K$$SZpfFLsqJuf$WjSD$Cujq2acL4{vbz{82A(>EFhjr_LW4_uEaKxc^Fafzpj78$Xj}{$ zjRPHA2O8i4?V=tM=Zk^PK?9w}HiFO7ijP7ZJQW`wMeg}fAg$1Iq$od=3AU{Te$Wv3 zy%-1jK#B>_ zc{#B2O+ajL5d>n;`j{QKXHnW=SlZ=Sj_ARz7o{#oY4<_>j%Du@isdKCVQTR^AEpY`1E6jTqHcvQHiexv zhd4@>vf>6F93a~;W^&-NI97qd`$gz;XV~Xp;L5?4QPd-YH#J5NVL>}#2Ya$4>O2+n zR7#X4)I^ITp$w-(SU{y7dU^-V{lPN}#wj}>SuDj0TJVBY5fynLg#@Asqy#l$z*!Ep zYmPci4xf>PmNZy;_Q-RJaNiPdFfkhrakvTBvO3}|Hza0-I$E6p4-$-(>X`OoA7z1@ z28J4xm?}}rMU+UwR7~8`eysY44@KTQ09S+Fq6M2zFo3|S zhzSv}Li|AhR)W{hP;bFJjqYTKG(k5*lo8`-h)VpfhN!{oY?ScE<#=R81igT)m>7>B ztH_mg|$?~={szy340TpE~5O4O(Ox1W7C2f0+{tS%9sl33Nu3bYle|`00XF+CXghclVYSM2B~&WBPIolU2-)L?mAzk5d1aZA^JO*HPjG{1aXzdcnm^x?$IV65SC$j8n<~^ z0|2*jw7|fv5H(;xzNT!JllZ;n;2YXUH+o~+>^{2D8?rkMb5}O@*>13EjQxhA8@<8d z0@~Y-TD5}5j&aCAMrd(JB9C|CQi5${5T+Jfyr4|Fq4a}LM%`d~aH#;bL_&fg%fN6O z2^!%*+U<;D7+4OsF?jo+$Y$bKh}!~OT@_@rajL;-EK0*2$tYBDsCKlL9A^6#9t)@` z2+@dxDL}1mVWPO}9f%5~tyIt}mLcMhtz@9}Rxm!?d=zz%&1ndA7@NDG^U7fFVr=X} zmc-BrTPXx{09sI?N<-X1SG8I+=B3CHr(ga-zt}*d#_eF6ZifS~Mf#tBd2_b>iHTdgVyiOxd z>*z*r#K9QoJF@WwFKY7wrgC(nH)vBaq=XvX=uN+k-bMLI;LXv=If=!^pkjvLzHbHw F1^~fC6VCtu delta 67115 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

      M)?#LJNvQNYsB{37&%-mF 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 #include #include -#include "ros/msg.h" -#include "geometry_msgs/Vector3.h" -#include "geometry_msgs/Quaternion.h" +#include "../ros/msg.h" +#include "../geometry_msgs/Vector3.h" +#include "../geometry_msgs/Quaternion.h" namespace geometry_msgs { @@ -47,4 +47,4 @@ namespace geometry_msgs }; } -#endif \ No newline at end of file +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/TransformStamped.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/TransformStamped.h index b197b54..ef3f7a8 100644 --- a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/TransformStamped.h +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/geometry_msgs/TransformStamped.h @@ -4,9 +4,9 @@ #include #include #include -#include "ros/msg.h" -#include "std_msgs/Header.h" -#include "geometry_msgs/Transform.h" +#include "../ros/msg.h" +#include "../std_msgs/Header.h" +#include "../geometry_msgs/Transform.h" namespace geometry_msgs { @@ -64,4 +64,4 @@ namespace geometry_msgs }; } -#endif \ No newline at end of file +#endif diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/ros/node_handle.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/ros/node_handle.h index fa2416a..9321ed7 100644 --- a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/ros/node_handle.h +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/ros/node_handle.h @@ -99,8 +99,8 @@ using rosserial_msgs::TopicInfo; template + int INPUT_SIZE = 10240, + int OUTPUT_SIZE = 512> class NodeHandle_ : public NodeHandleBase_ { protected: diff --git a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf/tfMessage.h b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf/tfMessage.h index 4c0b04a..1f370d0 100644 --- a/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf/tfMessage.h +++ b/cr/externals/cr.robotin.mxo/Contents/Resources/ros_lib/tf/tfMessage.h @@ -4,8 +4,8 @@ #include #include #include -#include "ros/msg.h" -#include "geometry_msgs/TransformStamped.h" +#include "../ros/msg.h" +#include "../geometry_msgs/TransformStamped.h" namespace tf { @@ -61,4 +61,4 @@ namespace tf }; } -#endif \ No newline at end of file +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/MacOS/cr.robotout b/cr/externals/cr.robotout.mxo/Contents/MacOS/cr.robotout index fea4005aa8209ccc35118f446955883340b2ae6e..7c1267e134c9d82e4211ede53ed3c4a627baa5b6 100755 GIT binary patch delta 79206 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

      W0 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⪻z&~9=N!H zG9Xj{)VvE&eF~ir@p{k&av){`Q~<;VVVHpqPy-=}7bFA03!nxHbV2w6pe02hhfRa< z9iTLXhX}6%sCm%v2S){1%?GG~AD|i?rh|nU5}_Rfu#_w4&e2J3=9cS8X}4?PyxK<0W*#bKr3rOK3fUVkpQI| zp!9<27dx25>jR+L(cRMk)gAyk$qaOGA80`z0|Ubc(BdADvEXH-5TijPEQL&fnui`< z7og@Hfa(+23DU(-&tL#yFa$tpurSC1C}RWEKy(KxNI_!s156+Em`2b=Y9Or%ps7m` z1Bzh|yb3iB;y|PrFMt}zuot4^0+fER55i~I52c|L%)k#Q20|qn7#I#f%`1TFdjO>a zz$zM!-yHNGsfsH8M8hoRxZ+wDmcnRr=*7l4+Dfec-sb%6B)qreBI4bz*Z zGU-fTHI+$Tv!I~h0#iUjg2MtvhXjKQ+#47L5+*QWB7^DgrZP=7DNqPdP*5m%z}mp7 zpa9`aU~J%Bzz5?cC`@2Fz@(s%pm2e40+WJ5KtaLu`e{s>+y(}qWpp5S7);+djY(fA zr1+m_MCqI+LE@1JK|k0|P@cRQ$no$LUP^f)_yN zgfK8L6hehBOm74UKY$81K!qPnKRBI9Unl@{z!w7p!$hcXfYkI&dzthE8>AtYE`W+R zOn02Yq%XJtD!c(IykL6c3?_Xc1{sLz{ZL^Bndwb)nDjZI!sn+~&SbJ@ygPm8OeTA# z*DTY2&1ACU{0UY3VLIbXCVe3RS%?|ztPpPs$WDJWi^+^j6v{V{o$fS?DNivMEqDT; z`YhNW`U0k3oW*1>SO68C2Nf=ut~i@XU+@D|cq3H!!}LV3Flb{10|UcRxbVW+O!k5b zN)R`tvO~;Pm~J?SNndaSRJaT(ya6KYpbSyn4Hb5nUO0!zUho1`n2`fw$c5<#L53Kp zKvYXZg$<@V&SlaUoB$Ozg$hrA2!DVIdqagkOmCdaWG@K1P90>-cBpW`^ot-vHh|9m z0Tq`};SFG6Apy|wI-t@MDlDKj{nA_}eVDKSC&YmT(v!gnNM55#KGt>opS+`J!9Z> zPY@M5y%R*GO+N{ua;I}HWU}Y1;D#6-FkNsVlm7Gx3z;~Wnz*OWTF7K4)B%;d02()7 zU|=}TJ-ur_li75EMNAxwQqv_DG1+s5@xb&eE&_!o=*UwB28QWS;R(~h!WW>zm!QHI zz`{ZT&@w@a7h;Hj)^wo-O!|UQ;aI3}fY$UNB;hGg;R#yPlNK@Q2^naE;)H==DOB7* zdwSChCOx4EQ1N|G@d?_~4}p>bRQLu|_=EOzCQvLwk23fG6%Npup0t=rPv`>ZkQ4?6 z2GEQps64o!H$7+`lfIxn#8L@9h|>-9p_W3$b)n)D^rtH=VbT-&06I5_fq}sWD*nL` zVk_vR76t}}V5o3_(ey=2K&6c_#P}4b_=D*Smon)KI)IK1VqjpXf(koKS6s%VFPH!o z?uQB|fQ5w`pu#Jm!VM-6H$H%hAApKKFqyt+6_dUo=&ULR28J6@VF%OcPBWPF1)##O zpu!2$A1(tGLZIUX7#J9SLxma4rZdf8(h~&TcMozqFFzz;6s9MxVA2;lU=9*wV330f zA26T(Xb+RVAXL}@D*V8Fy35x+Vq&24|>vfW`Ep<4pR3P~mW>@Bs^ua{WL{ zh~b$~VFM^1)K~!JWatUQ;47TYU=?g-I8==A% ztRPWu4N*NADr{g43DyZv@n=x+3D(mm&1cdVgbM$K3SY2>B-;WTh%s>jkbo+%0V&rL z+5iI4z|;iRx;@c34o4E1z8{nFcWDXVAf{I^ohWHh<(29Y9!5%7X;4(dFHIu#|RQMoN_<+mw zMId3w8a0NSP+5q_vBZMGs+29KCksHW;3=FwYVF9=4hd}vu0aW}WRD6Nk^hZmW z^ab4^%0Uyupp3}i4zBeCpu$bU5W^=-FWkVSKRsas69?A}sMrU0h{+8e5F_M7AZi;t zATjpE zdwS7&P?muXOUZ~qtO@X$&a|0HUl1y64HYi%neH?bAsh)6p5Oy^l+XjH@@lB~10P7) z03EEF2NibkoxW)&lfEQWcn?%~0+fG83|v78!N#~;#UXCm;5*%DCzHM)bf_yADy-lK z%Eo#^upzMNQ1JH3qwKJc;O+ac)|3-y-fN-u;IhkP~n7BNX$b=6ZzyI zMmMBRS6a@bF9;PjfC?{21v^ww06JEf4;2@f{t;w2Y-q6)Dr}GjcAy|^sPPC?yaB9S z5H|A2CJ(W60a$qYf_+RJoX$|O0}!zf`Y!o|(!j2e3V@C$?t+TL_*dm2!3CAp zR)82^kPdc@5NtRy87h7t9a3FGl`nz{KS-ahw2nz%FauKZ-GK@-WK35AHCLd*pxIkc z#!|?DxM>1ZTwf7lDU9!-2ub}Lpz>>>@-Y5QsQd+}yq6M0Ka5|l1lBJE8v}g_mH&`2 z-3e63!Nx@Slp*>aWP*ENLa;GXQ>eH=HmEP8F9;nn4TB0BWKUl-k4Yb|QUe9AxgeD5rw%dHpk#W}Mkalj za4A%HK?yho3c<#R=Rw5SQ9FKpaN3Qz{Zh5r<#Gn<3KeePeF&3%c062R73I3~%U!wCP}D+n!Kyfv)LJCqd0?=va3#Onk!h zCXl!Sbm)3MR9s;i#4%9eqflXoX%NRig zBXBV)2%QL64wV*IIsMZSCVc^@@H41z!t{?IyJ6D?I>r#g8X&?8psI7B!VAE{LIWiD7=vQpzyi?orL%W)eqyt^ecc42}TNU zWIjm05N!5B!vx}s58ELL5jrUm02LP40ZAiJ;c}?3!4615gbJ^N3NL{2kC;FbB9tp? z3bEtB4roGzPE>e6#RYakEP)C)L4^%=LJ}fWcso=$U?(IYLWN&Jg$s6q`=OFhVFojZ zofn{dEi-T_Q4gCWnGBVO@nHc6+V~D?w}JSefJf$o0*(PXxw09mAI1l%2PJd|5CbXT zk@Ew9@)3pd=Hxe(zk#(=fOTmwG5rmiH8a^?1xl! zP~kqPu)=;w{KMvfHbBJ-_Jhk1L8$UOP~ivr!MRrmHciB339&Tb03-o`W{nsa7>uC8 z1qUGgI;e0YRCvMxNWbnNC{`I5>Y&032O$GX2~hE+Q1OI=pa9kvgbJU43LiK)T?sV! z1r>e`75;D#+;kKK9d6CQz~E{Hb>X4uLFYhSPw<&l3=H$3;sr;*(IDjjowxb~6^HRT zt-*;@C;=*8Yz;9l;V8th3!vg%Q1Jyvrzf3f(i4Ksf31dzADg}iBo3PoI|mhSI1Z`I zpwnZop~4G}PhYf_Nna8w%x(j*^#GKwWi$QO9wu`^D0ej^QOhgkjrD$Z~oB5nW`=dy=bYH)tK(n=zHi3dQ$ z>l>irpq=C(aTp&~GC&6u;S~~$f5)DIK>^}#F!=?I&*Fe8uZYG6o%X1}z<`+j?Lt$q z9F2d~fq_8{wBZrDn&=mryqF`Zg&t`9L^S>cFdtz*!z!=<*fU__5E}n28lTe%)j~Bi zz9$;L6pgiA!%)n5O9EWT!s21p> z@dMEKX=wZoH2wlK{suJu2^WTXltgp`O~F?*zK|=b0}avm0ciYLX#DMHd`7o=R0HMQ zQ29P+{3}QyR z#$SfU-;BoJi^e~S#=nThzXRpN>}PoF$H1V*$G`x)fc7(#9|N5(2DJxLKm^o*?EVZ4 za*PZNu$4ffP(Ex4kP4I!Tl-@Q<-->JxIp;z46xNcArJuu*fO7FC?B@Irx?ng0A1MA z2<2~p^82Cu3sC-CDE|YLzZ%Mit@YUn=GQYY7(kch90v<9Fu)e|T!Hdot9hP7`LJa? zzx^2)_!t=&K0w#+@CQIb1h#NT0m_H1*fE9jVM}#lK>T_}1_sz7oidOBBLf3$bQ#hb_c;0OiA0;4lP290XfqqX6bNFcd)7##jb2Fx1O2HZV+p3WP%y zz*g2Qg7RUDX^w*V3=9IG10oq17|ucY0Z{%eD1QQ!{}{@@0Oh}e@&%wvXubwA)PoaI z094>VRKWx&pEU^Ng9ZlJnj04=UjVv-rUA+ifbtJQ`4gc0KTtkw#f?ia#5~wioA%&( zhydt(Hc-Oe2UftqFaf&g<~)=STUGM{%7?9{VG051XJ7!`00z=81?2}o*U#ud`LJ~} zPEfu9bYV<*Jyc)%U<*#v!Tbh>3sCtE zFrR?|w!&mCln+^1QqRD!2`tdSAOKxFas$eT?ex$JhgbkxL}Cl&!xoQ(K=~J-i$*fR z{00UC=(3R4U_JxG0Vtn20%TqTg92!M2&nvR0t+xOYyb&>mWzS;4GaR%r61CfAPo!* zu%#e+V15Gw1GF!;2Fzz*m;mJ;0`nUfK0x^%Q4syG1t0NXeggw&p$Eu*hF4$#25{30 z6vuzS{04>#(6t?9(GUY*YdV_1{04>z&@~&gp?uhyjWtj{Y|qenC?B?1;|r7@-~;Xd z3CDmeXkaLSuD39R@+Uy~!B9SIJw_Rn?*Lt4F$Kzpt+?0%<-=B7+=238yNlRjA@)u1 z1N)zWK?^DX+iv6wY&!GHz z*sde_1c(8!bq!HaK5RWhKa>yKjdU2wZ-A~$cnRfifbwkgK|Bd!AZ$H?6_gL#))WKfFMzH3@}Yd#Hm6lk{sZVzhG$SdY!Lxt3Pe9_6O$#B4_iG@0p-IsHEja% z>lqsuV7r@Mfdm*E7!;s0`mCuC17Rxy5q5KBubU7%fK@FS*Q2t-2 zJZw5$Is;n&!zR$}Gaweiwo#=)`LOL&{ZKw^%6t=)58GaK1R|%VdG8D;AGW=!8_H*Z&UCMb@?qPk?n3#n8E@V!hy}2jZgVJq0(5RW0m_HX zb=UVo1z;PijzIaa+3mkjK5SMSlvY4N3fpj%lnt@a0Xjjw7|MrDSRaP+VH4I2IS}>G ziRyX=7pMSi<5e@158Hrs0LpKGPD($3@?n$FT)7YfVH>W@pnTZma}1OZ+kn*wj8)dJ~H9*a7xG z1H*r)fB|&o(yRnx0c>K^2g----KvN3p?kO(c0&2Etz7S*eAt#Q#ZriQ1<+YZb145p zJyakODgc|7Y=rV*(~OIueAq1FekdQd$Lki9-vFH-WGRDK2%8^NgYscpyP}}{de}_h z1gHRPrtbih58Lzg9?DmMPSy#QLo9&J>Dfa0usvScP(ExDZ!(k*-t)!4z_1I#uVAQL;0{dw=6Kf zzJUQY>DCAqXkdU%wk?A3p_|N(Liw=CwMS4sY}464C?7U`rdS1Wzys*~nLCuv0G%Pr z0`WohKWy{abdUgJ1AG(OF(@B4MfM)bhiys|uZCFA0G$*osD=zkz$U-ip?uin*Fq?N z0(2g0cQpe;J!k}D161HDRKW!(|2>oso8aQCfm#5ads2q-6QF!sC?7VH6%OSefXWv_ z`5&PC?iz-A@DK`Y(rPJG0c^5rKa>xfl)7ERz#zxkzyLc`;4_pDJ9L1#79tNj9Y6uf zhi&e+hw@>Y^E+!n^*?I^g8_6>X&F=jY>)kwS_TF_q)DfrPOuLiJ)r(jK5P$XDwGe~g4qt@^E5DA5QL0Q&WG|L zyIUC;)(qlDSr&*cR=M?y1@3;!#9bmLIfCYKowX+`LI3Tfl$5% zbPsqjln>g&4H~qX3gYuJFjPS0=Rx@$Q2t6N{{oc16U?t?V7LJlI0F`7V0ZxK--7aA zK>4qr{0~t6Zz%r=}^83lwS(vYe4z+P`&|_-wfqfctA?ZzHU(epO=AQ0aRc% zRKW=-e<_r2;R(^O3CgeVf$;Z0`5e9w{t+mD251QxXbUiu{{YIr4dqYphp2zl&0r1= zvH<8L)2D6*20o-oD5f3=A2taET1?6h-iE%t=mXO-=K3dW3=B`%7#Lo%F)+MgV_MW&Cb9e!_L6)jE#ZeIU57R3pNIZPizbfpV=4~WFhM~9q@aw zp5{Kp??F|fe7OCc9-|54_IKZyxH(zDS0HTv^PfqFQ5r^jcc zCZ?no#b@S~6f?x52&EMz=BC2Lk~1=MQcy(Fa`F>Pil-~GFo!`rGo8<`sWfx3uKuG zS&TfW9{%sZC^dbbBO@oeS^_}_(#KSiHvMA>qZPsi6=jsLb1idqb#+Y&3W;ZkFUl{D z&&ezNSP865&QfY zdAJaly@29D4K*bA{^*_Hq#&cV{(ruNz>QU(?_{5J#H}u1H-pQ7=?PNI ze4KEXPH%8w6vt)&I6^1LGV@~zfJRqF6>NG0f*IwpD4!_JEQ{=xLK$XB6n-6}@bnEX zjC{y~AUlxx0>O-O$b7$AM%C#Pf|xfzi@Jr%%%M=`>|hvkd!P#QM<$5y_WcQr3mK;$ zNn{jdGBTfjFp*J$$;c8y8yilKO=8>wRVb6pIF)I7rxvr2JN`ThD!@T891=|6qM+%G zTFg>d@|r^`qXcR`04Y>Oj$z0RLhQtqXrAe5m>@+gCR3o z_&vyG6h+ng(U4gREvJJ_v%((8VW@!&b1;hH>4s_8^UTFe?BXExNKrB!qz;*1Z^Zl> z)LMu)W=;dqdyScWWr|CaAT?_-Lws>*61Z@OFhkO|bC@u%gQn~0JI$EG@U{4UkGAy& zeOpg-`&m2YeXtnqb7bBO$)?i@w(+*})GK{Rxal)2+go-;6f0Af@;A(MDEDnq^6vZ)$OIVmhKF NJ2V;=y%>nh8R0;q9 delta 51915 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

      rg|b1*$ZDW$&{DB!P&Q~e*g7a1wBqX~ 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 diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Transform.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Transform.h index 27a9944..967eabb 100644 --- a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Transform.h +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/Transform.h @@ -4,9 +4,9 @@ #include #include #include -#include "ros/msg.h" -#include "geometry_msgs/Vector3.h" -#include "geometry_msgs/Quaternion.h" +#include "../ros/msg.h" +#include "../geometry_msgs/Vector3.h" +#include "../geometry_msgs/Quaternion.h" namespace geometry_msgs { @@ -47,4 +47,4 @@ namespace geometry_msgs }; } -#endif \ No newline at end of file +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/TransformStamped.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/TransformStamped.h index b197b54..ef3f7a8 100644 --- a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/TransformStamped.h +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/geometry_msgs/TransformStamped.h @@ -4,9 +4,9 @@ #include #include #include -#include "ros/msg.h" -#include "std_msgs/Header.h" -#include "geometry_msgs/Transform.h" +#include "../ros/msg.h" +#include "../std_msgs/Header.h" +#include "../geometry_msgs/Transform.h" namespace geometry_msgs { @@ -64,4 +64,4 @@ namespace geometry_msgs }; } -#endif \ No newline at end of file +#endif diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/ros/node_handle.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/ros/node_handle.h index fa2416a..9321ed7 100644 --- a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/ros/node_handle.h +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/ros/node_handle.h @@ -99,8 +99,8 @@ using rosserial_msgs::TopicInfo; template + int INPUT_SIZE = 10240, + int OUTPUT_SIZE = 512> class NodeHandle_ : public NodeHandleBase_ { protected: diff --git a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf/tfMessage.h b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf/tfMessage.h index 4c0b04a..1f370d0 100644 --- a/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf/tfMessage.h +++ b/cr/externals/cr.robotout.mxo/Contents/Resources/ros_lib/tf/tfMessage.h @@ -4,8 +4,8 @@ #include #include #include -#include "ros/msg.h" -#include "geometry_msgs/TransformStamped.h" +#include "../ros/msg.h" +#include "../geometry_msgs/TransformStamped.h" namespace tf { @@ -61,4 +61,4 @@ namespace tf }; } -#endif \ No newline at end of file +#endif diff --git a/cr/extras/ros/demo_robotin_imu.maxpat b/cr/extras/ros/demo_robotin_imu.maxpat index 748c369..49d16db 100644 --- a/cr/extras/ros/demo_robotin_imu.maxpat +++ b/cr/extras/ros/demo_robotin_imu.maxpat @@ -9,7 +9,7 @@ "modernui" : 1 } , - "rect" : [ 80.0, 119.0, 1261.0, 671.0 ], + "rect" : [ 92.0, 231.0, 1313.0, 671.0 ], "bglocked" : 0, "openinpresentation" : 0, "default_fontsize" : 12.0, @@ -39,13 +39,25 @@ "boxes" : [ { "box" : { "id" : "obj-10", - "maxclass" : "newobj", + "maxclass" : "number", "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 41.0, 149.0, 63.0, 22.0 ], + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 123.600006, 335.5, 72.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-22", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 67.5, 503.5, 59.0, 20.0 ], "style" : "", - "text" : "sprintf %s" + "text" : "Frame ID" } } @@ -56,7 +68,7 @@ "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], - "patching_rect" : [ 99.0, 460.5, 55.0, 22.0 ], + "patching_rect" : [ 67.5, 479.5, 55.0, 22.0 ], "style" : "", "text" : "imu_link" } @@ -147,20 +159,6 @@ "text" : "X" } - } -, { - "box" : { - "format" : 6, - "id" : "obj-62", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 99.0, 222.0, 50.0, 22.0 ], - "style" : "" - } - } , { "box" : { @@ -291,7 +289,7 @@ "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, - "patching_rect" : [ 45.0, 359.5, 104.0, 33.0 ], + "patching_rect" : [ 35.600006, 359.5, 104.0, 33.0 ], "style" : "", "text" : "TimeStamp\nsec and nano-sec" } @@ -303,7 +301,7 @@ "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, - "patching_rect" : [ 79.5, 264.5, 30.0, 20.0 ], + "patching_rect" : [ 33.399994, 234.0, 30.0, 20.0 ], "style" : "", "text" : "Seq" } @@ -328,7 +326,7 @@ "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, - "patching_rect" : [ 44.600006, 117.0, 41.0, 20.0 ], + "patching_rect" : [ 41.0, 151.0, 41.0, 20.0 ], "style" : "", "text" : "Name" } @@ -861,20 +859,6 @@ "style" : "" } - } -, { - "box" : { - "format" : 6, - "id" : "obj-21", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 123.600006, 335.5, 79.0, 22.0 ], - "style" : "" - } - } , { "box" : { @@ -897,7 +881,7 @@ "numoutlets" : 2, "outlettype" : [ "", "bang" ], "parameter_enable" : 0, - "patching_rect" : [ 116.600006, 264.5, 53.0, 22.0 ], + "patching_rect" : [ 61.100006, 234.0, 53.0, 22.0 ], "style" : "" } @@ -908,10 +892,10 @@ "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 42, - "outlettype" : [ "int", "int", "int", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float" ], - "patching_rect" : [ 244.600006, 234.0, 600.0, 22.0 ], + "outlettype" : [ "", "int", "int", "int", "", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float" ], + "patching_rect" : [ 244.600006, 234.0, 624.0, 22.0 ], "style" : "", - "text" : "unpack 0 0 0 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0." + "text" : "unpack sym 0 0 0 sym 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0." } } @@ -948,13 +932,6 @@ "source" : [ "obj-1", 0 ] } - } -, { - "patchline" : { - "destination" : [ "obj-4", 0 ], - "source" : [ "obj-10", 0 ] - } - } , { "patchline" : { @@ -966,8 +943,7 @@ , { "patchline" : { "destination" : [ "obj-10", 0 ], - "order" : 1, - "source" : [ "obj-14", 0 ] + "source" : [ "obj-14", 3 ] } } @@ -984,13 +960,6 @@ "source" : [ "obj-14", 2 ] } - } -, { - "patchline" : { - "destination" : [ "obj-21", 0 ], - "source" : [ "obj-14", 3 ] - } - } , { "patchline" : { @@ -1110,6 +1079,13 @@ "source" : [ "obj-14", 26 ] } + } +, { + "patchline" : { + "destination" : [ "obj-4", 0 ], + "source" : [ "obj-14", 0 ] + } + } , { "patchline" : { @@ -1243,14 +1219,6 @@ "source" : [ "obj-14", 40 ] } - } -, { - "patchline" : { - "destination" : [ "obj-62", 0 ], - "order" : 0, - "source" : [ "obj-14", 0 ] - } - } , { "patchline" : { diff --git a/cr/extras/ros/demo_robotin_joints.maxpat b/cr/extras/ros/demo_robotin_joints.maxpat index 50dd82a..cd08fa0 100644 --- a/cr/extras/ros/demo_robotin_joints.maxpat +++ b/cr/extras/ros/demo_robotin_joints.maxpat @@ -9,7 +9,7 @@ "modernui" : 1 } , - "rect" : [ 126.0, 119.0, 1229.0, 695.0 ], + "rect" : [ 114.0, 169.0, 1132.0, 430.0 ], "bglocked" : 0, "openinpresentation" : 0, "default_fontsize" : 12.0, @@ -38,1973 +38,484 @@ "subpatcher_template" : "", "boxes" : [ { "box" : { - "id" : "obj-62", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 169.5, 331.5, 37.0, 22.0 ], - "style" : "", - "text" : "laser" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-63", - "maxclass" : "flonum", + "id" : "obj-16", + "maxclass" : "number", "numinlets" : 1, "numoutlets" : 2, "outlettype" : [ "", "bang" ], "parameter_enable" : 0, - "patching_rect" : [ 876.0, 506.5, 50.0, 22.0 ], + "patching_rect" : [ 399.0, 284.0, 90.0, 22.0 ], "style" : "" } } , { "box" : { - "format" : 6, - "id" : "obj-64", - "maxclass" : "flonum", + "id" : "obj-28", + "maxclass" : "comment", "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 739.0, 418.0, 50.0, 22.0 ], - "style" : "" + "numoutlets" : 0, + "patching_rect" : [ 898.0, 315.0, 90.0, 20.0 ], + "style" : "", + "text" : "Effort 2" } } , { "box" : { "format" : 6, - "id" : "obj-65", + "id" : "obj-29", "maxclass" : "flonum", "numinlets" : 1, "numoutlets" : 2, "outlettype" : [ "", "bang" ], "parameter_enable" : 0, - "patching_rect" : [ 824.0, 506.5, 50.0, 22.0 ], + "patching_rect" : [ 898.0, 284.0, 90.0, 22.0 ], "style" : "" } } , { "box" : { - "format" : 6, - "id" : "obj-66", - "maxclass" : "flonum", + "id" : "obj-30", + "maxclass" : "comment", "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 772.0, 506.5, 50.0, 22.0 ], - "style" : "" + "numoutlets" : 0, + "patching_rect" : [ 824.0, 315.0, 66.0, 20.0 ], + "style" : "", + "text" : "Velocity 2" } } , { "box" : { "format" : 6, - "id" : "obj-67", + "id" : "obj-31", "maxclass" : "flonum", "numinlets" : 1, "numoutlets" : 2, "outlettype" : [ "", "bang" ], "parameter_enable" : 0, - "patching_rect" : [ 876.0, 482.5, 50.0, 22.0 ], + "patching_rect" : [ 824.0, 284.0, 66.0, 22.0 ], "style" : "" } } , { "box" : { - "format" : 6, - "id" : "obj-68", - "maxclass" : "flonum", + "id" : "obj-32", + "maxclass" : "comment", "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 824.0, 482.5, 50.0, 22.0 ], - "style" : "" + "numoutlets" : 0, + "patching_rect" : [ 751.0, 315.0, 66.0, 20.0 ], + "style" : "", + "text" : "Position 2" } } , { "box" : { "format" : 6, - "id" : "obj-69", + "id" : "obj-33", "maxclass" : "flonum", "numinlets" : 1, "numoutlets" : 2, "outlettype" : [ "", "bang" ], "parameter_enable" : 0, - "patching_rect" : [ 772.0, 482.5, 50.0, 22.0 ], + "patching_rect" : [ 751.0, 284.0, 66.0, 22.0 ], "style" : "" } } , { "box" : { - "format" : 6, - "id" : "obj-70", - "maxclass" : "flonum", + "id" : "obj-26", + "maxclass" : "comment", "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 876.0, 458.5, 50.0, 22.0 ], - "style" : "" + "numoutlets" : 0, + "patching_rect" : [ 898.0, 220.0, 90.0, 20.0 ], + "style" : "", + "text" : "Effort 1" } } , { "box" : { "format" : 6, - "id" : "obj-71", + "id" : "obj-27", "maxclass" : "flonum", "numinlets" : 1, "numoutlets" : 2, "outlettype" : [ "", "bang" ], "parameter_enable" : 0, - "patching_rect" : [ 824.0, 458.5, 50.0, 22.0 ], + "patching_rect" : [ 898.0, 189.0, 90.0, 22.0 ], "style" : "" } } , { "box" : { - "format" : 6, - "id" : "obj-72", - "maxclass" : "flonum", + "id" : "obj-24", + "maxclass" : "comment", "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 772.0, 458.5, 50.0, 22.0 ], - "style" : "" + "numoutlets" : 0, + "patching_rect" : [ 824.0, 220.0, 66.0, 20.0 ], + "style" : "", + "text" : "Velocity 1" } } , { "box" : { "format" : 6, - "id" : "obj-73", + "id" : "obj-25", "maxclass" : "flonum", "numinlets" : 1, "numoutlets" : 2, "outlettype" : [ "", "bang" ], "parameter_enable" : 0, - "patching_rect" : [ 791.0, 418.0, 50.0, 22.0 ], + "patching_rect" : [ 824.0, 189.0, 66.0, 22.0 ], "style" : "" } } , { "box" : { - "format" : 6, - "id" : "obj-74", - "maxclass" : "flonum", + "id" : "obj-23", + "maxclass" : "comment", "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 564.0, 506.5, 50.0, 22.0 ], - "style" : "" + "numoutlets" : 0, + "patching_rect" : [ 751.0, 220.0, 66.0, 20.0 ], + "style" : "", + "text" : "Position 1" } } , { "box" : { "format" : 6, - "id" : "obj-75", + "id" : "obj-22", "maxclass" : "flonum", "numinlets" : 1, "numoutlets" : 2, "outlettype" : [ "", "bang" ], "parameter_enable" : 0, - "patching_rect" : [ 668.0, 482.5, 50.0, 22.0 ], + "patching_rect" : [ 751.0, 189.0, 66.0, 22.0 ], "style" : "" } } , { "box" : { - "format" : 6, - "id" : "obj-76", - "maxclass" : "flonum", + "id" : "obj-15", + "maxclass" : "comment", "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 616.0, 482.5, 50.0, 22.0 ], - "style" : "" + "numoutlets" : 0, + "patching_rect" : [ 654.0, 315.0, 47.0, 20.0 ], + "style" : "", + "text" : "Joint 2" } } , { "box" : { - "format" : 6, - "id" : "obj-77", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 564.0, 482.5, 50.0, 22.0 ], - "style" : "" + "id" : "obj-17", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 654.0, 284.0, 119.0, 22.0 ], + "style" : "", + "text" : "wheel_right_joint" } } , { "box" : { - "format" : 6, - "id" : "obj-78", - "maxclass" : "flonum", + "id" : "obj-12", + "maxclass" : "comment", "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 668.0, 458.5, 50.0, 22.0 ], - "style" : "" + "numoutlets" : 0, + "patching_rect" : [ 654.0, 220.0, 47.0, 20.0 ], + "style" : "", + "text" : "Joint 1" } } , { "box" : { - "format" : 6, - "id" : "obj-79", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 616.0, 458.5, 50.0, 22.0 ], - "style" : "" + "id" : "obj-13", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 654.0, 189.0, 111.0, 22.0 ], + "style" : "", + "text" : "wheel_left_joint" } } , { "box" : { - "format" : 6, - "id" : "obj-80", - "maxclass" : "flonum", + "id" : "obj-8", + "maxclass" : "comment", "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 564.0, 458.5, 50.0, 22.0 ], - "style" : "" + "numoutlets" : 0, + "patching_rect" : [ 513.5, 308.0, 77.0, 20.0 ], + "style" : "", + "text" : "Frame ID" } } , { "box" : { - "format" : 6, - "id" : "obj-81", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 605.0, 418.0, 50.0, 22.0 ], - "style" : "" + "id" : "obj-10", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 513.5, 284.0, 87.0, 22.0 ], + "style" : "", + "text" : "base_footprint" } } , { "box" : { - "format" : 6, - "id" : "obj-82", - "maxclass" : "flonum", + "id" : "obj-9", + "maxclass" : "comment", "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 553.0, 418.0, 50.0, 22.0 ], - "style" : "" + "numoutlets" : 0, + "patching_rect" : [ 73.0, 248.0, 43.0, 20.0 ], + "style" : "", + "text" : "Name" } } , { "box" : { - "format" : 6, - "id" : "obj-83", - "maxclass" : "flonum", + "id" : "obj-7", + "linecount" : 2, + "maxclass" : "comment", "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 687.0, 418.0, 50.0, 22.0 ], - "style" : "" + "numoutlets" : 0, + "patching_rect" : [ 307.0, 308.0, 104.0, 33.0 ], + "style" : "", + "text" : "TimeStamp\nsec and nano-sec" } } , { "box" : { - "format" : 6, - "id" : "obj-84", - "maxclass" : "flonum", + "id" : "obj-6", + "maxclass" : "comment", "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 668.0, 506.5, 50.0, 22.0 ], - "style" : "" + "numoutlets" : 0, + "patching_rect" : [ 195.0, 308.0, 33.0, 20.0 ], + "style" : "", + "text" : "Seq" } } , { "box" : { - "format" : 6, - "id" : "obj-85", - "maxclass" : "flonum", + "id" : "obj-19", + "maxclass" : "number", "numinlets" : 1, "numoutlets" : 2, "outlettype" : [ "", "bang" ], "parameter_enable" : 0, - "patching_rect" : [ 616.0, 506.5, 50.0, 22.0 ], + "patching_rect" : [ 307.0, 284.0, 90.0, 22.0 ], "style" : "" } } , { "box" : { - "format" : 6, - "id" : "obj-86", - "maxclass" : "flonum", + "id" : "obj-18", + "maxclass" : "number", "numinlets" : 1, "numoutlets" : 2, "outlettype" : [ "", "bang" ], "parameter_enable" : 0, - "patching_rect" : [ 501.0, 418.0, 50.0, 22.0 ], + "patching_rect" : [ 195.0, 284.0, 85.0, 22.0 ], "style" : "" } } , { "box" : { - "format" : 6, - "id" : "obj-87", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 484.0, 506.5, 50.0, 22.0 ], - "style" : "" + "id" : "obj-2", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 120.0, 248.0, 39.0, 22.0 ], + "style" : "", + "text" : "joints" } } , { "box" : { - "format" : 6, - "id" : "obj-88", - "maxclass" : "flonum", + "id" : "obj-20", + "maxclass" : "comment", "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 432.0, 506.5, 50.0, 22.0 ], - "style" : "" + "numoutlets" : 0, + "patching_rect" : [ 346.0, 37.0, 74.0, 20.0 ], + "style" : "", + "text" : "Joints State" } } , { "box" : { - "format" : 6, - "id" : "obj-89", - "maxclass" : "flonum", + "id" : "obj-103", + "maxclass" : "newobj", "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 380.0, 506.5, 50.0, 22.0 ], - "style" : "" + "numoutlets" : 13, + "outlettype" : [ "", "int", "int", "int", "", "", "", "float", "float", "float", "float", "float", "float" ], + "patching_rect" : [ 182.0, 170.0, 261.0, 22.0 ], + "style" : "", + "text" : "unpack sym 0 0 0 sym sym sym 0. 0. 0. 0. 0. 0." } } , { "box" : { - "format" : 6, - "id" : "obj-90", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 484.0, 482.5, 50.0, 22.0 ], - "style" : "" + "id" : "obj-4", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 232.5, 71.0, 39.0, 22.0 ], + "style" : "", + "text" : "close" } } , { "box" : { - "format" : 6, - "id" : "obj-91", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 432.0, 482.5, 50.0, 22.0 ], - "style" : "" + "id" : "obj-3", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 182.0, 71.0, 37.0, 22.0 ], + "style" : "", + "text" : "open" } } , { "box" : { - "format" : 6, - "id" : "obj-92", - "maxclass" : "flonum", + "id" : "obj-1", + "maxclass" : "newobj", "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 380.0, 482.5, 50.0, 22.0 ], - "style" : "" + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 182.0, 124.0, 183.0, 22.0 ], + "style" : "", + "text" : "cr.robotin 192.168.1.200 @joints" } } -, { - "box" : { - "format" : 6, - "id" : "obj-93", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 484.0, 458.5, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-94", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 432.0, 458.5, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-95", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 380.0, 458.5, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-96", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 424.0, 418.0, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-97", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 372.0, 418.0, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-98", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 320.0, 418.0, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-99", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 264.0, 418.0, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-100", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 323.0, 364.5, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "id" : "obj-101", - "maxclass" : "number", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 271.0, 364.5, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "id" : "obj-102", - "maxclass" : "number", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 196.0, 364.5, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "id" : "obj-103", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 41, - "outlettype" : [ "int", "int", "int", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float" ], - "patching_rect" : [ 246.0, 303.0, 586.0, 22.0 ], - "style" : "", - "text" : "unpack 0 0 0 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0." - } - - } -, { - "box" : { - "id" : "obj-61", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 19.5, 578.0, 34.0, 22.0 ], - "style" : "", - "text" : "twist" - } - - } -, { - "box" : { - "id" : "obj-60", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 165.5, 710.5, 30.0, 22.0 ], - "style" : "", - "text" : "imu" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-58", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 872.0, 885.5, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-57", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 735.0, 797.0, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-48", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 820.0, 885.5, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-49", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 768.0, 885.5, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-50", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 872.0, 861.5, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-51", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 820.0, 861.5, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-52", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 768.0, 861.5, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-53", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 872.0, 837.5, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-54", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 820.0, 837.5, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-55", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 768.0, 837.5, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-56", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 787.0, 797.0, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-39", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 560.0, 885.5, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-40", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 664.0, 861.5, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-41", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 612.0, 861.5, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-42", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 560.0, 861.5, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-43", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 664.0, 837.5, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-44", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 612.0, 837.5, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-45", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 560.0, 837.5, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-46", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 601.0, 797.0, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-47", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 549.0, 797.0, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-36", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 683.0, 797.0, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-37", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 664.0, 885.5, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-38", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 612.0, 885.5, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-33", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 497.0, 797.0, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-34", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 480.0, 885.5, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-35", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 428.0, 885.5, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-30", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 376.0, 885.5, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-31", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 480.0, 861.5, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-32", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 428.0, 861.5, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-27", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 376.0, 861.5, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-28", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 480.0, 837.5, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-29", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 428.0, 837.5, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-24", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 376.0, 837.5, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-25", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 420.0, 797.0, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-26", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 368.0, 797.0, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-23", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 316.0, 797.0, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-22", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 260.0, 797.0, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-21", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 319.0, 743.5, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "id" : "obj-19", - "maxclass" : "number", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 267.0, 743.5, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "id" : "obj-18", - "maxclass" : "number", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 192.0, 743.5, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "id" : "obj-14", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 41, - "outlettype" : [ "int", "int", "int", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float" ], - "patching_rect" : [ 242.0, 682.0, 586.0, 22.0 ], - "style" : "", - "text" : "unpack 0 0 0 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0." - } - - } -, { - "box" : { - "id" : "obj-5", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 3, - "outlettype" : [ "", "", "" ], - "patching_rect" : [ 369.0, 94.0, 256.0, 22.0 ], - "style" : "", - "text" : "cr.robotin 192.168.1.200 @twist @laser @imu" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-15", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 324.5, 610.0, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "id" : "obj-7", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 7, - "outlettype" : [ "float", "float", "float", "float", "float", "float", "float" ], - "patching_rect" : [ 106.0, 567.0, 143.0, 22.0 ], - "style" : "", - "text" : "unpack 0. 0. 0. 0. 0. 0. 0." - } - - } -, { - "box" : { - "id" : "obj-6", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 504.0, 228.0, 34.0, 22.0 ], - "style" : "", - "text" : "print" - } - - } -, { - "box" : { - "id" : "obj-13", - "maxclass" : "toggle", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "int" ], - "parameter_enable" : 0, - "patching_rect" : [ 263.0, 59.0, 24.0, 24.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-10", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 272.5, 610.0, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-11", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 220.5, 610.0, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-12", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 152.5, 610.0, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-9", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 100.5, 610.0, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-8", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 48.5, 610.0, 50.0, 22.0 ], - "style" : "" - } - - } -, { - "box" : { - "id" : "obj-4", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 201.5, 59.0, 39.0, 22.0 ], - "style" : "", - "text" : "close" - } - - } -, { - "box" : { - "id" : "obj-3", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 151.0, 59.0, 37.0, 22.0 ], - "style" : "", - "text" : "open" - } - - } -, { - "box" : { - "id" : "obj-1", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 6, - "outlettype" : [ "", "", "", "", "", "" ], - "patching_rect" : [ 169.0, 156.0, 422.0, 22.0 ], - "style" : "", - "text" : "cr.robotin 192.168.1.200 @twist @imu @odometry @laser @joints @sensors" - } - - } - ], - "lines" : [ { - "patchline" : { - "destination" : [ "obj-103", 0 ], - "source" : [ "obj-1", 3 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-14", 0 ], - "source" : [ "obj-1", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-6", 0 ], - "source" : [ "obj-1", 5 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-6", 0 ], - "source" : [ "obj-1", 4 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-7", 0 ], - "source" : [ "obj-1", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-100", 0 ], - "source" : [ "obj-103", 3 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-101", 0 ], - "source" : [ "obj-103", 2 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-102", 0 ], - "source" : [ "obj-103", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-62", 0 ], - "source" : [ "obj-103", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-63", 0 ], - "source" : [ "obj-103", 40 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-64", 0 ], - "source" : [ "obj-103", 30 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-65", 0 ], - "source" : [ "obj-103", 39 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-66", 0 ], - "source" : [ "obj-103", 38 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-67", 0 ], - "source" : [ "obj-103", 37 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-68", 0 ], - "source" : [ "obj-103", 36 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-69", 0 ], - "source" : [ "obj-103", 35 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-70", 0 ], - "source" : [ "obj-103", 34 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-71", 0 ], - "source" : [ "obj-103", 33 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-72", 0 ], - "source" : [ "obj-103", 32 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-73", 0 ], - "source" : [ "obj-103", 31 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-74", 0 ], - "source" : [ "obj-103", 26 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-75", 0 ], - "source" : [ "obj-103", 25 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-76", 0 ], - "source" : [ "obj-103", 24 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-77", 0 ], - "source" : [ "obj-103", 23 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-78", 0 ], - "source" : [ "obj-103", 22 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-79", 0 ], - "source" : [ "obj-103", 21 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-80", 0 ], - "source" : [ "obj-103", 20 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-81", 0 ], - "source" : [ "obj-103", 19 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-82", 0 ], - "source" : [ "obj-103", 18 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-83", 0 ], - "source" : [ "obj-103", 29 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-84", 0 ], - "source" : [ "obj-103", 28 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-85", 0 ], - "source" : [ "obj-103", 27 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-86", 0 ], - "source" : [ "obj-103", 17 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-87", 0 ], - "source" : [ "obj-103", 16 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-88", 0 ], - "source" : [ "obj-103", 15 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-89", 0 ], - "source" : [ "obj-103", 14 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-90", 0 ], - "source" : [ "obj-103", 13 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-91", 0 ], - "source" : [ "obj-103", 12 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-92", 0 ], - "source" : [ "obj-103", 11 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-93", 0 ], - "source" : [ "obj-103", 10 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-94", 0 ], - "source" : [ "obj-103", 9 ] + ], + "lines" : [ { + "patchline" : { + "destination" : [ "obj-103", 0 ], + "source" : [ "obj-1", 0 ] } } , { "patchline" : { - "destination" : [ "obj-95", 0 ], - "source" : [ "obj-103", 8 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-96", 0 ], - "source" : [ "obj-103", 7 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-97", 0 ], - "source" : [ "obj-103", 6 ] + "destination" : [ "obj-10", 0 ], + "source" : [ "obj-103", 4 ] } } , { "patchline" : { - "destination" : [ "obj-98", 0 ], + "destination" : [ "obj-13", 0 ], "source" : [ "obj-103", 5 ] } } , { "patchline" : { - "destination" : [ "obj-99", 0 ], - "source" : [ "obj-103", 4 ] + "destination" : [ "obj-16", 0 ], + "source" : [ "obj-103", 3 ] } } , { "patchline" : { - "destination" : [ "obj-1", 0 ], - "source" : [ "obj-13", 0 ] + "destination" : [ "obj-17", 0 ], + "source" : [ "obj-103", 6 ] } } , { "patchline" : { "destination" : [ "obj-18", 0 ], - "source" : [ "obj-14", 1 ] + "source" : [ "obj-103", 1 ] } } , { "patchline" : { "destination" : [ "obj-19", 0 ], - "source" : [ "obj-14", 2 ] + "source" : [ "obj-103", 2 ] } } , { "patchline" : { - "destination" : [ "obj-21", 0 ], - "source" : [ "obj-14", 3 ] + "destination" : [ "obj-2", 0 ], + "source" : [ "obj-103", 0 ] } } , { "patchline" : { "destination" : [ "obj-22", 0 ], - "source" : [ "obj-14", 4 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-23", 0 ], - "source" : [ "obj-14", 5 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-24", 0 ], - "source" : [ "obj-14", 8 ] + "source" : [ "obj-103", 7 ] } } , { "patchline" : { "destination" : [ "obj-25", 0 ], - "source" : [ "obj-14", 7 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-26", 0 ], - "source" : [ "obj-14", 6 ] + "source" : [ "obj-103", 9 ] } } , { "patchline" : { "destination" : [ "obj-27", 0 ], - "source" : [ "obj-14", 11 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-28", 0 ], - "source" : [ "obj-14", 10 ] + "source" : [ "obj-103", 11 ] } } , { "patchline" : { "destination" : [ "obj-29", 0 ], - "source" : [ "obj-14", 9 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-30", 0 ], - "source" : [ "obj-14", 14 ] + "source" : [ "obj-103", 12 ] } } , { "patchline" : { "destination" : [ "obj-31", 0 ], - "source" : [ "obj-14", 13 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-32", 0 ], - "source" : [ "obj-14", 12 ] + "source" : [ "obj-103", 10 ] } } , { "patchline" : { "destination" : [ "obj-33", 0 ], - "source" : [ "obj-14", 17 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-34", 0 ], - "source" : [ "obj-14", 16 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-35", 0 ], - "source" : [ "obj-14", 15 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-36", 0 ], - "source" : [ "obj-14", 29 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-37", 0 ], - "source" : [ "obj-14", 28 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-38", 0 ], - "source" : [ "obj-14", 27 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-39", 0 ], - "source" : [ "obj-14", 26 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-40", 0 ], - "source" : [ "obj-14", 25 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-41", 0 ], - "source" : [ "obj-14", 24 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-42", 0 ], - "source" : [ "obj-14", 23 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-43", 0 ], - "source" : [ "obj-14", 22 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-44", 0 ], - "source" : [ "obj-14", 21 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-45", 0 ], - "source" : [ "obj-14", 20 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-46", 0 ], - "source" : [ "obj-14", 19 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-47", 0 ], - "source" : [ "obj-14", 18 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-48", 0 ], - "source" : [ "obj-14", 39 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-49", 0 ], - "source" : [ "obj-14", 38 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-50", 0 ], - "source" : [ "obj-14", 37 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-51", 0 ], - "source" : [ "obj-14", 36 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-52", 0 ], - "source" : [ "obj-14", 35 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-53", 0 ], - "source" : [ "obj-14", 34 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-54", 0 ], - "source" : [ "obj-14", 33 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-55", 0 ], - "source" : [ "obj-14", 32 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-56", 0 ], - "source" : [ "obj-14", 31 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-57", 0 ], - "source" : [ "obj-14", 30 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-58", 0 ], - "source" : [ "obj-14", 40 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-60", 0 ], - "source" : [ "obj-14", 0 ] + "source" : [ "obj-103", 8 ] } } @@ -2021,55 +532,6 @@ "source" : [ "obj-4", 0 ] } - } -, { - "patchline" : { - "destination" : [ "obj-10", 0 ], - "source" : [ "obj-7", 5 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-11", 0 ], - "source" : [ "obj-7", 4 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-12", 0 ], - "source" : [ "obj-7", 3 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-15", 0 ], - "source" : [ "obj-7", 6 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-61", 0 ], - "source" : [ "obj-7", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-8", 0 ], - "source" : [ "obj-7", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-9", 0 ], - "source" : [ "obj-7", 2 ] - } - } ], "dependency_cache" : [ { diff --git a/cr/extras/ros/demo_robotin_laser.maxpat b/cr/extras/ros/demo_robotin_laser.maxpat index a6ffb20..dfbf926 100644 --- a/cr/extras/ros/demo_robotin_laser.maxpat +++ b/cr/extras/ros/demo_robotin_laser.maxpat @@ -9,7 +9,7 @@ "modernui" : 1 } , - "rect" : [ 192.0, 115.0, 1012.0, 603.0 ], + "rect" : [ 192.0, 115.0, 785.0, 462.0 ], "bglocked" : 0, "openinpresentation" : 0, "default_fontsize" : 12.0, @@ -38,27 +38,26 @@ "subpatcher_template" : "", "boxes" : [ { "box" : { - "id" : "obj-17", - "maxclass" : "newobj", + "id" : "obj-16", + "maxclass" : "comment", "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 308.0, 418.0, 63.0, 22.0 ], + "numoutlets" : 0, + "patching_rect" : [ 181.0, 353.5, 68.0, 20.0 ], "style" : "", - "text" : "sprintf %s" + "text" : "Frame ID " } } , { "box" : { - "id" : "obj-16", - "maxclass" : "newobj", + "id" : "obj-20", + "maxclass" : "number", "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 190.0, 171.0, 63.0, 22.0 ], - "style" : "", - "text" : "sprintf %s" + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 62.0, 349.0, 105.0, 22.0 ], + "style" : "" } } @@ -69,7 +68,7 @@ "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, - "patching_rect" : [ 747.0, 353.5, 50.0, 33.0 ], + "patching_rect" : [ 659.0, 353.5, 50.0, 33.0 ], "style" : "", "text" : "Range (max)" } @@ -82,7 +81,7 @@ "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, - "patching_rect" : [ 688.0, 353.5, 50.0, 33.0 ], + "patching_rect" : [ 600.0, 353.5, 50.0, 33.0 ], "style" : "", "text" : "Range (min)" } @@ -95,7 +94,7 @@ "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, - "patching_rect" : [ 631.0, 353.5, 50.0, 33.0 ], + "patching_rect" : [ 543.0, 353.5, 50.0, 33.0 ], "style" : "", "text" : "Scan Time" } @@ -108,7 +107,7 @@ "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, - "patching_rect" : [ 558.0, 353.5, 71.0, 33.0 ], + "patching_rect" : [ 470.0, 353.5, 71.0, 33.0 ], "style" : "", "text" : "Time (increment)" } @@ -121,7 +120,7 @@ "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, - "patching_rect" : [ 483.0, 353.5, 70.0, 33.0 ], + "patching_rect" : [ 395.0, 353.5, 70.0, 33.0 ], "style" : "", "text" : "Angle (increment)" } @@ -134,7 +133,7 @@ "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, - "patching_rect" : [ 436.181824, 353.5, 45.0, 33.0 ], + "patching_rect" : [ 348.181824, 353.5, 45.0, 33.0 ], "style" : "", "text" : "Angle (max)" } @@ -147,7 +146,7 @@ "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, - "patching_rect" : [ 373.5, 353.5, 43.0, 33.0 ], + "patching_rect" : [ 285.5, 353.5, 43.0, 33.0 ], "style" : "", "text" : "Angle (min)" } @@ -160,9 +159,9 @@ "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], - "patching_rect" : [ 308.0, 449.0, 54.0, 22.0 ], + "patching_rect" : [ 181.0, 325.0, 69.0, 22.0 ], "style" : "", - "text" : "frame id" + "text" : "base_scan" } } @@ -172,7 +171,7 @@ "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, - "patching_rect" : [ 190.0, 149.0, 41.0, 20.0 ], + "patching_rect" : [ 102.0, 149.0, 41.0, 20.0 ], "style" : "", "text" : "Name" } @@ -185,7 +184,7 @@ "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, - "patching_rect" : [ 150.0, 349.0, 104.0, 33.0 ], + "patching_rect" : [ 62.0, 373.0, 104.0, 33.0 ], "style" : "", "text" : "TimeStamp\nsec and nano-sec" } @@ -197,25 +196,11 @@ "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, - "patching_rect" : [ 165.0, 242.5, 30.0, 20.0 ], + "patching_rect" : [ 77.0, 242.5, 30.0, 20.0 ], "style" : "", "text" : "Seq" } - } -, { - "box" : { - "format" : 6, - "id" : "obj-21", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 242.0, 325.0, 88.0, 22.0 ], - "style" : "" - } - } , { "box" : { @@ -225,7 +210,7 @@ "numoutlets" : 2, "outlettype" : [ "", "bang" ], "parameter_enable" : 0, - "patching_rect" : [ 150.0, 325.0, 90.0, 22.0 ], + "patching_rect" : [ 62.0, 325.0, 105.0, 22.0 ], "style" : "" } @@ -238,7 +223,7 @@ "numoutlets" : 2, "outlettype" : [ "", "bang" ], "parameter_enable" : 0, - "patching_rect" : [ 197.0, 242.5, 50.0, 22.0 ], + "patching_rect" : [ 109.0, 242.5, 50.0, 22.0 ], "style" : "" } @@ -249,7 +234,7 @@ "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, - "patching_rect" : [ 473.0, 53.0, 132.0, 20.0 ], + "patching_rect" : [ 385.0, 53.0, 132.0, 20.0 ], "style" : "", "text" : " Laser Scan Message " } @@ -262,7 +247,7 @@ "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], - "patching_rect" : [ 190.0, 200.0, 37.0, 22.0 ], + "patching_rect" : [ 102.0, 175.0, 37.0, 22.0 ], "style" : "", "text" : "laser" } @@ -277,7 +262,7 @@ "numoutlets" : 2, "outlettype" : [ "", "bang" ], "parameter_enable" : 0, - "patching_rect" : [ 747.0, 325.0, 50.0, 22.0 ], + "patching_rect" : [ 659.0, 325.0, 50.0, 22.0 ], "style" : "" } @@ -291,7 +276,7 @@ "numoutlets" : 2, "outlettype" : [ "", "bang" ], "parameter_enable" : 0, - "patching_rect" : [ 688.0, 325.0, 50.0, 22.0 ], + "patching_rect" : [ 600.0, 325.0, 50.0, 22.0 ], "style" : "" } @@ -305,7 +290,7 @@ "numoutlets" : 2, "outlettype" : [ "", "bang" ], "parameter_enable" : 0, - "patching_rect" : [ 631.0, 325.0, 50.0, 22.0 ], + "patching_rect" : [ 543.0, 325.0, 50.0, 22.0 ], "style" : "" } @@ -319,7 +304,7 @@ "numoutlets" : 2, "outlettype" : [ "", "bang" ], "parameter_enable" : 0, - "patching_rect" : [ 568.0, 325.0, 50.0, 22.0 ], + "patching_rect" : [ 480.0, 325.0, 50.0, 22.0 ], "style" : "" } @@ -333,7 +318,7 @@ "numoutlets" : 2, "outlettype" : [ "", "bang" ], "parameter_enable" : 0, - "patching_rect" : [ 489.0, 325.0, 50.0, 22.0 ], + "patching_rect" : [ 401.0, 325.0, 50.0, 22.0 ], "style" : "" } @@ -347,7 +332,7 @@ "numoutlets" : 2, "outlettype" : [ "", "bang" ], "parameter_enable" : 0, - "patching_rect" : [ 431.181824, 325.0, 50.0, 22.0 ], + "patching_rect" : [ 343.181824, 325.0, 50.0, 22.0 ], "style" : "" } @@ -361,7 +346,7 @@ "numoutlets" : 2, "outlettype" : [ "", "bang" ], "parameter_enable" : 0, - "patching_rect" : [ 373.5, 325.0, 50.0, 22.0 ], + "patching_rect" : [ 285.5, 325.0, 50.0, 22.0 ], "style" : "" } @@ -372,10 +357,10 @@ "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 12, - "outlettype" : [ "int", "int", "int", "float", "float", "float", "float", "float", "float", "float", "float", "float" ], - "patching_rect" : [ 333.0, 182.0, 199.0, 22.0 ], + "outlettype" : [ "", "int", "int", "int", "", "float", "float", "float", "float", "float", "float", "float" ], + "patching_rect" : [ 245.0, 182.0, 223.0, 22.0 ], "style" : "", - "text" : "unpack 0 0 0 0. 0. 0. 0. 0. 0. 0. 0. 0." + "text" : "unpack sym 0 0 0 sym 0. 0. 0. 0. 0. 0. 0." } } @@ -386,7 +371,7 @@ "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], - "patching_rect" : [ 384.5, 92.0, 39.0, 22.0 ], + "patching_rect" : [ 296.5, 92.0, 39.0, 22.0 ], "style" : "", "text" : "close" } @@ -399,7 +384,7 @@ "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], - "patching_rect" : [ 334.0, 92.0, 37.0, 22.0 ], + "patching_rect" : [ 246.0, 92.0, 37.0, 22.0 ], "style" : "", "text" : "open" } @@ -412,7 +397,7 @@ "numinlets" : 1, "numoutlets" : 1, "outlettype" : [ "" ], - "patching_rect" : [ 333.0, 138.0, 181.0, 22.0 ], + "patching_rect" : [ 245.0, 138.0, 181.0, 22.0 ], "style" : "", "text" : "cr.robotin 192.168.1.200 @laser" } @@ -428,36 +413,36 @@ } , { "patchline" : { - "destination" : [ "obj-16", 0 ], - "source" : [ "obj-103", 0 ] + "destination" : [ "obj-18", 0 ], + "source" : [ "obj-103", 1 ] } } , { "patchline" : { - "destination" : [ "obj-17", 0 ], - "source" : [ "obj-103", 4 ] + "destination" : [ "obj-19", 0 ], + "source" : [ "obj-103", 2 ] } } , { "patchline" : { - "destination" : [ "obj-18", 0 ], - "source" : [ "obj-103", 1 ] + "destination" : [ "obj-20", 0 ], + "source" : [ "obj-103", 3 ] } } , { "patchline" : { - "destination" : [ "obj-19", 0 ], - "source" : [ "obj-103", 2 ] + "destination" : [ "obj-5", 0 ], + "source" : [ "obj-103", 4 ] } } , { "patchline" : { - "destination" : [ "obj-21", 0 ], - "source" : [ "obj-103", 3 ] + "destination" : [ "obj-62", 0 ], + "source" : [ "obj-103", 0 ] } } @@ -509,20 +494,6 @@ "source" : [ "obj-103", 5 ] } - } -, { - "patchline" : { - "destination" : [ "obj-62", 0 ], - "source" : [ "obj-16", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-5", 0 ], - "source" : [ "obj-17", 0 ] - } - } , { "patchline" : { diff --git a/cr/extras/ros/demo_robotin_odometry.maxpat b/cr/extras/ros/demo_robotin_odometry.maxpat index a2b1191..e2a3b96 100644 --- a/cr/extras/ros/demo_robotin_odometry.maxpat +++ b/cr/extras/ros/demo_robotin_odometry.maxpat @@ -9,7 +9,7 @@ "modernui" : 1 } , - "rect" : [ 85.0, 161.0, 1492.0, 695.0 ], + "rect" : [ 37.0, 155.0, 1540.0, 695.0 ], "bglocked" : 0, "openinpresentation" : 0, "default_fontsize" : 12.0, @@ -37,6 +37,19 @@ "style" : "", "subpatcher_template" : "", "boxes" : [ { + "box" : { + "id" : "obj-5", + "maxclass" : "number", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 145.0, 289.5, 79.0, 22.0 ], + "style" : "" + } + + } +, { "box" : { "id" : "obj-33", "maxclass" : "message", @@ -61,32 +74,6 @@ "text" : "open" } - } -, { - "box" : { - "id" : "obj-26", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 57.0, 163.0, 63.0, 22.0 ], - "style" : "", - "text" : "sprintf %s" - } - - } -, { - "box" : { - "id" : "obj-23", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 133.0, 442.0, 63.0, 22.0 ], - "style" : "", - "text" : "sprintf %s" - } - } , { "box" : { @@ -96,21 +83,7 @@ "numoutlets" : 1, "outlettype" : [ "" ], "patching_rect" : [ 133.0, 473.0, 82.0, 22.0 ], - "style" : "", - "text" : "child frame id" - } - - } -, { - "box" : { - "id" : "obj-5", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 63.0, 442.0, 63.0, 22.0 ], - "style" : "", - "text" : "sprintf %s" + "style" : "" } } @@ -121,21 +94,7 @@ "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], - "patching_rect" : [ 63.0, 473.0, 54.0, 22.0 ], - "style" : "", - "text" : "frame id" - } - - } -, { - "box" : { - "id" : "obj-167", - "maxclass" : "number", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 218.0, 383.0, 50.0, 22.0 ], + "patching_rect" : [ 66.0, 473.0, 41.0, 22.0 ], "style" : "" } @@ -1453,7 +1412,7 @@ "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], - "patching_rect" : [ 58.0, 192.0, 61.0, 22.0 ], + "patching_rect" : [ 57.0, 191.0, 61.0, 22.0 ], "style" : "", "text" : "odometry" } @@ -1465,7 +1424,7 @@ "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, - "patching_rect" : [ 58.0, 134.0, 41.0, 20.0 ], + "patching_rect" : [ 57.0, 163.0, 41.0, 20.0 ], "style" : "", "text" : "Name" } @@ -1490,7 +1449,7 @@ "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, - "patching_rect" : [ 49.0, 245.5, 30.0, 20.0 ], + "patching_rect" : [ 41.0, 230.5, 58.0, 20.0 ], "style" : "", "text" : "Seq" } @@ -1645,20 +1604,6 @@ "style" : "" } - } -, { - "box" : { - "format" : 6, - "id" : "obj-21", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 145.0, 289.5, 88.0, 22.0 ], - "style" : "" - } - } , { "box" : { @@ -1681,7 +1626,7 @@ "numoutlets" : 2, "outlettype" : [ "", "bang" ], "parameter_enable" : 0, - "patching_rect" : [ 81.0, 245.5, 50.0, 22.0 ], + "patching_rect" : [ 73.0, 230.5, 78.0, 22.0 ], "style" : "" } @@ -1692,10 +1637,10 @@ "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 86, - "outlettype" : [ "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "", "float", "float", "float", "float", "float", "float", "float", "float", "float" ], - "patching_rect" : [ 248.0, 205.0, 1237.0, 22.0 ], + "outlettype" : [ "", "int", "int", "int", "", "", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "float", "", "float", "float", "float", "float", "float", "float", "float", "float", "float" ], + "patching_rect" : [ 248.0, 205.0, 1263.0, 22.0 ], "style" : "", - "text" : "unpack 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.0. 0. 0. 0. 0. 0. 0. 0. 0. 0." + "text" : "unpack sym 0 0 0 sym sym 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.0. 0. 0. 0. 0. 0. 0. 0. 0. 0." } } @@ -1866,14 +1811,6 @@ "source" : [ "obj-14", 80 ] } - } -, { - "patchline" : { - "destination" : [ "obj-167", 0 ], - "order" : 0, - "source" : [ "obj-14", 5 ] - } - } , { "patchline" : { @@ -1891,25 +1828,17 @@ } , { "patchline" : { - "destination" : [ "obj-21", 0 ], - "source" : [ "obj-14", 3 ] + "destination" : [ "obj-22", 0 ], + "source" : [ "obj-14", 4 ] } } , { "patchline" : { - "destination" : [ "obj-23", 0 ], - "order" : 1, + "destination" : [ "obj-25", 0 ], "source" : [ "obj-14", 5 ] } - } -, { - "patchline" : { - "destination" : [ "obj-26", 0 ], - "source" : [ "obj-14", 0 ] - } - } , { "patchline" : { @@ -1935,7 +1864,7 @@ , { "patchline" : { "destination" : [ "obj-5", 0 ], - "source" : [ "obj-14", 4 ] + "source" : [ "obj-14", 3 ] } } @@ -2008,6 +1937,13 @@ "source" : [ "obj-14", 45 ] } + } +, { + "patchline" : { + "destination" : [ "obj-8", 0 ], + "source" : [ "obj-14", 0 ] + } + } , { "patchline" : { @@ -2029,20 +1965,6 @@ "source" : [ "obj-14", 13 ] } - } -, { - "patchline" : { - "destination" : [ "obj-25", 0 ], - "source" : [ "obj-23", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-8", 0 ], - "source" : [ "obj-26", 0 ] - } - } , { "patchline" : { @@ -2057,13 +1979,6 @@ "source" : [ "obj-36", 0 ] } - } -, { - "patchline" : { - "destination" : [ "obj-22", 0 ], - "source" : [ "obj-5", 0 ] - } - } ], "dependency_cache" : [ { diff --git a/cr/extras/ros/demo_robotin_sensors.maxpat b/cr/extras/ros/demo_robotin_sensors.maxpat index 7fd0775..e18942a 100644 --- a/cr/extras/ros/demo_robotin_sensors.maxpat +++ b/cr/extras/ros/demo_robotin_sensors.maxpat @@ -9,7 +9,7 @@ "modernui" : 1 } , - "rect" : [ 34.0, 634.0, 663.0, 512.0 ], + "rect" : [ 719.0, 169.0, 652.0, 512.0 ], "bglocked" : 0, "openinpresentation" : 0, "default_fontsize" : 12.0, @@ -43,8 +43,9 @@ "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], - "patching_rect" : [ 41.0, 156.0, 50.0, 22.0 ], - "style" : "" + "patching_rect" : [ 41.0, 156.0, 53.0, 22.0 ], + "style" : "", + "text" : "sensors" } } @@ -68,7 +69,7 @@ "numoutlets" : 2, "outlettype" : [ "", "bang" ], "parameter_enable" : 0, - "patching_rect" : [ 174.0, 225.5, 50.0, 22.0 ], + "patching_rect" : [ 173.0, 225.5, 50.0, 22.0 ], "style" : "" } @@ -91,7 +92,7 @@ "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, - "patching_rect" : [ 555.0, 273.0, 54.0, 20.0 ], + "patching_rect" : [ 534.0, 273.0, 54.0, 20.0 ], "style" : "", "text" : "Battery" } @@ -104,7 +105,7 @@ "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, - "patching_rect" : [ 489.0, 273.0, 54.0, 33.0 ], + "patching_rect" : [ 468.0, 273.0, 54.0, 33.0 ], "style" : "", "text" : "Right \nEncoder" } @@ -117,7 +118,7 @@ "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, - "patching_rect" : [ 402.5, 273.0, 54.0, 33.0 ], + "patching_rect" : [ 390.5, 273.0, 54.0, 33.0 ], "style" : "", "text" : "Left \nEncoder" } @@ -129,7 +130,7 @@ "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, - "patching_rect" : [ 333.0, 273.0, 50.0, 20.0 ], + "patching_rect" : [ 321.0, 273.0, 50.0, 20.0 ], "style" : "", "text" : "Button" } @@ -141,7 +142,7 @@ "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, - "patching_rect" : [ 261.0, 273.0, 50.0, 20.0 ], + "patching_rect" : [ 249.0, 273.0, 50.0, 20.0 ], "style" : "", "text" : "Cliff" } @@ -153,7 +154,7 @@ "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, - "patching_rect" : [ 174.0, 273.0, 50.0, 20.0 ], + "patching_rect" : [ 173.0, 273.0, 50.0, 20.0 ], "style" : "", "text" : "Bunper" } @@ -180,7 +181,7 @@ "numoutlets" : 2, "outlettype" : [ "", "bang" ], "parameter_enable" : 0, - "patching_rect" : [ 489.0, 225.5, 50.0, 22.0 ], + "patching_rect" : [ 468.0, 225.5, 54.0, 22.0 ], "style" : "" } @@ -193,7 +194,7 @@ "numoutlets" : 2, "outlettype" : [ "", "bang" ], "parameter_enable" : 0, - "patching_rect" : [ 402.5, 225.5, 50.0, 22.0 ], + "patching_rect" : [ 390.5, 225.5, 58.0, 22.0 ], "style" : "" } @@ -206,7 +207,7 @@ "numoutlets" : 2, "outlettype" : [ "", "bang" ], "parameter_enable" : 0, - "patching_rect" : [ 333.0, 225.5, 50.0, 22.0 ], + "patching_rect" : [ 321.0, 225.5, 50.0, 22.0 ], "style" : "" } @@ -219,7 +220,7 @@ "numoutlets" : 2, "outlettype" : [ "", "bang" ], "parameter_enable" : 0, - "patching_rect" : [ 261.0, 225.5, 50.0, 22.0 ], + "patching_rect" : [ 249.0, 225.5, 50.0, 22.0 ], "style" : "" } @@ -230,7 +231,7 @@ "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, - "patching_rect" : [ 243.5, 30.0, 85.0, 20.0 ], + "patching_rect" : [ 243.5, 30.0, 87.0, 20.0 ], "style" : "", "text" : "Sensors State\n" } @@ -245,7 +246,7 @@ "numoutlets" : 2, "outlettype" : [ "", "bang" ], "parameter_enable" : 0, - "patching_rect" : [ 555.0, 225.5, 50.0, 22.0 ], + "patching_rect" : [ 534.0, 225.5, 54.0, 22.0 ], "style" : "" } @@ -258,7 +259,7 @@ "numoutlets" : 2, "outlettype" : [ "", "bang" ], "parameter_enable" : 0, - "patching_rect" : [ 93.0, 225.5, 50.0, 22.0 ], + "patching_rect" : [ 41.0, 244.5, 102.0, 22.0 ], "style" : "" } @@ -271,7 +272,7 @@ "numoutlets" : 2, "outlettype" : [ "", "bang" ], "parameter_enable" : 0, - "patching_rect" : [ 41.0, 225.5, 50.0, 22.0 ], + "patching_rect" : [ 41.0, 220.5, 102.0, 22.0 ], "style" : "" } @@ -282,10 +283,10 @@ "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 9, - "outlettype" : [ "int", "int", "int", "int", "int", "int", "int", "int", "float" ], - "patching_rect" : [ 178.0, 143.0, 143.0, 22.0 ], + "outlettype" : [ "", "int", "int", "int", "int", "int", "int", "int", "float" ], + "patching_rect" : [ 178.0, 143.0, 158.0, 22.0 ], "style" : "", - "text" : "unpack 0 0 0 0 0 0 0 0 0." + "text" : "unpack sym 0 0 0 0 0 0 0 0." } } diff --git a/cr/extras/ros/demo_robotin_tf.maxpat b/cr/extras/ros/demo_robotin_tf.maxpat new file mode 100644 index 0000000..0c25fc2 --- /dev/null +++ b/cr/extras/ros/demo_robotin_tf.maxpat @@ -0,0 +1,561 @@ +{ + "patcher" : { + "fileversion" : 1, + "appversion" : { + "major" : 7, + "minor" : 3, + "revision" : 4, + "architecture" : "x86", + "modernui" : 1 + } +, + "rect" : [ 405.0, 181.0, 842.0, 394.0 ], + "bglocked" : 0, + "openinpresentation" : 0, + "default_fontsize" : 12.0, + "default_fontface" : 0, + "default_fontname" : "Arial", + "gridonopen" : 1, + "gridsize" : [ 15.0, 15.0 ], + "gridsnaponopen" : 1, + "objectsnaponopen" : 1, + "statusbarvisible" : 2, + "toolbarvisible" : 1, + "lefttoolbarpinned" : 0, + "toptoolbarpinned" : 0, + "righttoolbarpinned" : 0, + "bottomtoolbarpinned" : 0, + "toolbars_unpinned_last_save" : 0, + "tallnewobj" : 0, + "boxanimatetime" : 200, + "enablehscroll" : 1, + "enablevscroll" : 1, + "devicewidth" : 0.0, + "description" : "", + "digest" : "", + "tags" : "", + "style" : "", + "subpatcher_template" : "", + "boxes" : [ { + "box" : { + "id" : "obj-10", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 660.0, 271.0, 58.0, 20.0 ], + "style" : "", + "text" : "Rotation" + } + + } +, { + "box" : { + "id" : "obj-4", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 423.0, 271.0, 68.0, 20.0 ], + "style" : "", + "text" : "Translation" + } + + } +, { + "box" : { + "id" : "obj-16", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 264.0, 271.0, 93.0, 20.0 ], + "style" : "", + "text" : "Child Frame ID" + } + + } +, { + "box" : { + "id" : "obj-15", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 175.5, 270.0, 59.0, 20.0 ], + "style" : "", + "text" : "Frame ID" + } + + } +, { + "box" : { + "id" : "obj-14", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 264.0, 244.0, 93.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-12", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 173.5, 243.0, 61.0, 22.0 ], + "style" : "", + "text" : "base_link" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-11", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 369.0, 218.5, 54.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-8", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 493.0, 218.5, 54.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-9", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 432.0, 218.5, 54.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-6", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 636.0, 218.5, 54.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-7", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 580.0, 218.5, 54.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-5", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 36.0, 176.0, 41.0, 20.0 ], + "style" : "", + "text" : "Seq" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-3", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 748.0, 218.5, 54.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-2", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 748.0, 244.0, 54.0, 20.0 ], + "style" : "", + "text" : "W" + } + + } +, { + "box" : { + "id" : "obj-39", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 79.0, 145.0, 29.5, 22.0 ], + "style" : "", + "text" : "tf" + } + + } +, { + "box" : { + "id" : "obj-38", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 36.0, 145.0, 41.0, 20.0 ], + "style" : "", + "text" : "Name" + } + + } +, { + "box" : { + "id" : "obj-37", + "maxclass" : "number", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 40.0, 273.0, 102.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-35", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 173.5, 58.0, 45.0, 20.0 ], + "style" : "", + "text" : "On/Off" + } + + } +, { + "box" : { + "id" : "obj-34", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 692.0, 244.0, 54.0, 20.0 ], + "style" : "", + "text" : "Z" + } + + } +, { + "box" : { + "id" : "obj-33", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 636.0, 244.0, 54.0, 20.0 ], + "style" : "", + "text" : "Y" + } + + } +, { + "box" : { + "id" : "obj-32", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 580.0, 244.0, 54.0, 20.0 ], + "style" : "", + "text" : "X" + } + + } +, { + "box" : { + "id" : "obj-31", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 497.0, 244.0, 50.0, 20.0 ], + "style" : "", + "text" : "Z" + } + + } +, { + "box" : { + "id" : "obj-30", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 432.0, 244.0, 50.0, 20.0 ], + "style" : "", + "text" : "Y" + } + + } +, { + "box" : { + "id" : "obj-29", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 371.0, 244.0, 50.0, 20.0 ], + "style" : "", + "text" : "X" + } + + } +, { + "box" : { + "id" : "obj-28", + "linecount" : 2, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 40.0, 297.0, 104.0, 33.0 ], + "style" : "", + "text" : "TimeStamp\nsec and nano-sec" + } + + } +, { + "box" : { + "id" : "obj-20", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 314.0, 29.0, 118.5, 20.0 ], + "style" : "", + "text" : "TF (Transformation)\n" + } + + } +, { + "box" : { + "format" : 6, + "id" : "obj-96", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 692.0, 218.5, 54.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-101", + "maxclass" : "number", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 40.0, 250.0, 102.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-102", + "maxclass" : "number", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 79.0, 176.0, 74.0, 22.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-103", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 13, + "outlettype" : [ "", "int", "int", "int", "", "", "float", "float", "float", "float", "float", "float", "float" ], + "patching_rect" : [ 235.5, 145.0, 249.0, 22.0 ], + "style" : "", + "text" : "unpack sym 0 0 0 sym sym 0. 0. 0. 0. 0. 0. 0." + } + + } +, { + "box" : { + "id" : "obj-13", + "maxclass" : "toggle", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "int" ], + "parameter_enable" : 0, + "patching_rect" : [ 235.5, 56.0, 24.0, 24.0 ], + "style" : "" + } + + } +, { + "box" : { + "id" : "obj-1", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 235.5, 106.0, 162.0, 22.0 ], + "style" : "", + "text" : "cr.robotin 192.168.1.200 @tf" + } + + } + ], + "lines" : [ { + "patchline" : { + "destination" : [ "obj-103", 0 ], + "source" : [ "obj-1", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-101", 0 ], + "source" : [ "obj-103", 2 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-102", 0 ], + "source" : [ "obj-103", 1 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-11", 0 ], + "source" : [ "obj-103", 6 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-12", 0 ], + "source" : [ "obj-103", 4 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-14", 0 ], + "source" : [ "obj-103", 5 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-3", 0 ], + "source" : [ "obj-103", 12 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-37", 0 ], + "source" : [ "obj-103", 3 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-39", 0 ], + "source" : [ "obj-103", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-6", 0 ], + "source" : [ "obj-103", 10 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-7", 0 ], + "source" : [ "obj-103", 9 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-8", 0 ], + "source" : [ "obj-103", 8 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-9", 0 ], + "source" : [ "obj-103", 7 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-96", 0 ], + "source" : [ "obj-103", 11 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-1", 0 ], + "source" : [ "obj-13", 0 ] + } + + } + ], + "dependency_cache" : [ { + "name" : "cr.robotin.mxo", + "type" : "iLaX" + } + ], + "autosave" : 0 + } + +} diff --git a/cr/extras/ros/demo_robotin_twist.maxpat b/cr/extras/ros/demo_robotin_twist.maxpat index fd8e429..00f76ab 100644 --- a/cr/extras/ros/demo_robotin_twist.maxpat +++ b/cr/extras/ros/demo_robotin_twist.maxpat @@ -37,28 +37,13 @@ "style" : "", "subpatcher_template" : "", "boxes" : [ { - "box" : { - "fontname" : "Verdana", - "fontsize" : 11.0, - "id" : "obj-19", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 80.0, 203.0, 67.0, 22.0 ], - "style" : "", - "text" : "sprintf %s" - } - - } -, { "box" : { "id" : "obj-18", "maxclass" : "message", "numinlets" : 2, "numoutlets" : 1, "outlettype" : [ "" ], - "patching_rect" : [ 80.0, 234.0, 34.0, 22.0 ], + "patching_rect" : [ 78.25, 233.0, 34.0, 22.0 ], "style" : "", "text" : "twist" } @@ -70,7 +55,7 @@ "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, - "patching_rect" : [ 80.0, 258.0, 41.0, 20.0 ], + "patching_rect" : [ 76.5, 257.0, 41.0, 20.0 ], "style" : "", "text" : "Name" } @@ -216,10 +201,10 @@ "maxclass" : "newobj", "numinlets" : 1, "numoutlets" : 7, - "outlettype" : [ "float", "float", "float", "float", "float", "float", "float" ], - "patching_rect" : [ 222.0, 171.0, 143.0, 22.0 ], + "outlettype" : [ "", "float", "float", "float", "float", "float", "float" ], + "patching_rect" : [ 222.0, 171.0, 155.0, 22.0 ], "style" : "", - "text" : "unpack 0. 0. 0. 0. 0. 0. 0." + "text" : "unpack sym 0. 0. 0. 0. 0. 0." } } @@ -333,13 +318,6 @@ "source" : [ "obj-13", 0 ] } - } -, { - "patchline" : { - "destination" : [ "obj-18", 0 ], - "source" : [ "obj-19", 0 ] - } - } , { "patchline" : { @@ -371,7 +349,7 @@ } , { "patchline" : { - "destination" : [ "obj-19", 0 ], + "destination" : [ "obj-18", 0 ], "source" : [ "obj-7", 0 ] } diff --git a/cr/extras/ros/demo_robotout_twist.maxpat b/cr/extras/ros/demo_robotout_twist.maxpat index bb585b0..6cd6ac6 100644 --- a/cr/extras/ros/demo_robotout_twist.maxpat +++ b/cr/extras/ros/demo_robotout_twist.maxpat @@ -9,7 +9,7 @@ "modernui" : 1 } , - "rect" : [ 253.0, 267.0, 486.0, 332.0 ], + "rect" : [ 253.0, 267.0, 746.0, 493.0 ], "bglocked" : 0, "openinpresentation" : 0, "default_fontsize" : 12.0, @@ -37,19 +37,6 @@ "style" : "", "subpatcher_template" : "", "boxes" : [ { - "box" : { - "id" : "obj-3", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 47.0, 201.0, 39.0, 22.0 ], - "style" : "", - "text" : "close" - } - - } -, { "box" : { "id" : "obj-2", "maxclass" : "message", @@ -148,7 +135,7 @@ "maxclass" : "newobj", "numinlets" : 7, "numoutlets" : 0, - "patching_rect" : [ 189.0, 201.0, 147.0, 22.0 ], + "patching_rect" : [ 189.0, 221.0, 147.0, 22.0 ], "style" : "", "text" : "cr.robotout 192.168.1.200" } @@ -187,13 +174,6 @@ "source" : [ "obj-22", 0 ] } - } -, { - "patchline" : { - "destination" : [ "obj-21", 0 ], - "source" : [ "obj-3", 0 ] - } - } , { "patchline" : { diff --git a/cr/extras/ros/demo_robotout_twist_full.maxpat b/cr/extras/ros/demo_robotout_twist_full.maxpat index 0768ed4..964cbc6 100644 --- a/cr/extras/ros/demo_robotout_twist_full.maxpat +++ b/cr/extras/ros/demo_robotout_twist_full.maxpat @@ -9,7 +9,7 @@ "modernui" : 1 } , - "rect" : [ 468.0, 191.0, 635.0, 332.0 ], + "rect" : [ 579.0, 243.0, 635.0, 332.0 ], "bglocked" : 0, "openinpresentation" : 0, "default_fontsize" : 12.0, diff --git a/source/cr.robotin/cr.robotin.c b/source/cr.robotin/cr.robotin.c index 883ae8d..1be7ff7 100755 --- a/source/cr.robotin/cr.robotin.c +++ b/source/cr.robotin/cr.robotin.c @@ -36,7 +36,7 @@ typedef struct robotin // selected pins to read void **outlets; - t_atom **data; + //t_atom **data; // robotout state char err_msg[4000]; @@ -44,6 +44,19 @@ typedef struct robotin t_listener listener; + // ROS Messages place holder + t_atom sensors_msg[8]; + t_atom imu_msg[41]; + t_atom laser_msg[731]; + t_atom odometry_msg[90]; + t_atom joints_msg[12]; + t_atom twist_msg[6]; + t_atom tf_msg[12]; + + t_symbol *twist_s, *imu_s, *odom_s, *laser_s, *joints_s, *sensors_s, *tf_s; + t_symbol **joint_names_sym; + + } t_robotin; ///////////////////////// function prototypes @@ -64,9 +77,9 @@ void robotin_imufunc(void *x, const void *msg, int index); void robotin_laserfunc(void *x, const void *msg, int index); void robotin_sensorsfunc(void *x, const void *msg, int index); void robotin_jointsfunc(void *x, const void *msg, int index); +void robotin_tffunc(void *x_, const void *msg, int index); //////////////////////// global class pointer variable void *robotin_class; -//const t_symbol *twist_symbol = gensym("@twist"); //http://emanual.robotis.com/assets/images/platform/turtlebot3/example/rqt_1.png @@ -87,7 +100,7 @@ void ext_main(void *r) class_register(CLASS_BOX, c); /* CLASS_NOBOX */ robotin_class = c; - post("robotin-twist object created (Reader)."); + post("robotin object created (Reader)."); } void robotin_assist(t_robotin *x, void *b, long m, long a, char *s) @@ -132,8 +145,8 @@ void *robotin_new(t_symbol *s, long argc, t_atom *argv) if (robotin_parseArgs(x, argc, argv) == 0 ) { x->outlets = (void**)malloc(x->num_subscribers * sizeof(void*)); - x->data = (t_atom**)malloc(x->num_subscribers * sizeof(t_atom*)); - if (x->outlets == NULL || x->data == NULL) { + //x->data = (t_atom**)malloc(x->num_subscribers * sizeof(t_atom*)); + if (x->outlets == NULL) { // || x->data == NULL) { post( "Max is out of memory, could not create new robotin object."); return NULL; } @@ -143,6 +156,18 @@ void *robotin_new(t_symbol *s, long argc, t_atom *argv) } } + x->twist_s = gensym("twist"); + x->imu_s = gensym("imu"); + x->laser_s = gensym("laser"); + x->odom_s = gensym("odometry"); + x->sensors_s = gensym("sensors"); + x->joints_s = gensym("joints"); + x->tf_s = gensym("tf"); + + x->joint_names_sym = (t_symbol**)malloc(2 * sizeof(t_symbol*)); + x->joint_names_sym[0] = gensym("wheel_left_joint"); + x->joint_names_sym[1] = gensym("wheel_right_joint"); + return (x); } @@ -209,7 +234,7 @@ int robotin_parseArgs(t_robotin *x, long argc, t_atom *argv) { // check the second argument int num_chatter = 0, num_twist = 0, num_odometry = 0, num_laser = 0, num_imu = 0; - int num_joints = 0, num_sensors = 0; + int num_joints = 0, num_sensors = 0, num_tf = 0; for (int i=1; i < argc && x->num_subscriberss_name, "@tf")) { + if(num_tf) { + // already exist + object_error((t_object *)x, "error duplicate %s", s->s_name); + return -1; + } + num_tf++; + } else { // otherwise, unknown attribute symbol object_error((t_object *)x, "forbidden argument %s", s->s_name); @@ -300,115 +333,142 @@ int robotin_connect(t_robotin *x) { ros_init(x->ip_addr->s_name); // subscribe to requested topics for(int i=0; inum_subscribers; ++i) { - if(x->msg_type[i] == gensym("@twist")) + if(x->msg_type[i] == gensym("@twist")) { ros_subscribe_twist(x, robotin_twistfunc, i); - else if(x->msg_type[i] == gensym("@laser")) + object_post((t_object *)x, "Subscribed to /cmd_vel_rc100"); + } + else if(x->msg_type[i] == gensym("@laser")) { ros_subscribe_laser(x, robotin_laserfunc, i); - else if(x->msg_type[i] == gensym("@odometry")) + object_post((t_object *)x, "Subscribed to /scan"); + } + else if(x->msg_type[i] == gensym("@odometry")) { ros_subscribe_odometry(x, robotin_odometryfunc, i); - else if(x->msg_type[i] == gensym("@imu")) + object_post((t_object *)x, "Subscribed to /odom"); + } + else if(x->msg_type[i] == gensym("@imu")) { ros_subscribe_imu(x, robotin_imufunc, i); - else if(x->msg_type[i] == gensym("@joints")) + object_post((t_object *)x, "Subscribed to /imu"); + } + else if(x->msg_type[i] == gensym("@joints")) { ros_subscribe_joints(x, robotin_jointsfunc, i); - else if(x->msg_type[i] == gensym("@sensors")) + object_post((t_object *)x, "Subscribed to /joint_states"); + } + else if(x->msg_type[i] == gensym("@sensors")) { ros_subscribe_sensors(x, robotin_sensorsfunc, i); + object_post((t_object *)x, "Subscribed to /sensor_state"); + } + else if(x->msg_type[i] == gensym("@tf")) { + ros_subscribe_tf(x, robotin_tffunc, i); + object_post((t_object *)x, "Subscribed to /tf"); + } - post("subscribed to: %s", x->msg_type[i]->s_name); + //post("subscribed to: %s", x->msg_type[i]->s_name); } x->is_connected = true; return 0; } -void robotin_twistfunc(void *x, const void *msg, int index) { +void robotin_twistfunc(void *x_, const void *msg, int index) { //post("recieved twist message"); + t_robotin *x = (t_robotin *)x_; int argc = 6; - t_atom argv[6]; - atom_setdouble_array(argc, argv, argc, twistMsg_floats(msg)); - t_symbol *s = gensym("twist"); - outlet_anything(((t_robotin *)x)->outlets[index], s, argc, argv); + double *d = twistMsg_floats(msg); + atom_setdouble_array(argc, x->twist_msg, argc, d); + outlet_anything(x->outlets[index], x->twist_s, argc, x->twist_msg); + free(d); } -void robotin_odometryfunc(void *x, const void *msg, int index) { - int argc = 90; - t_atom argv[90]; +void robotin_odometryfunc(void *x_, const void *msg, int index) { //post("recieved odometry message"); + t_robotin *x = (t_robotin *)x_; + //t_atom argv[90]; + int argc = 90; int i=0; - atom_setlong_array(3, argv, 3, odometryMsg_header_ints(msg)); i += 3; - atom_setsym(argv+i, odometryMsg_header_frame(msg)); ++i; - atom_setsym(argv+i, odometryMsg_childframe(msg)); ++i; - atom_setdouble_array(85, argv+i, 85, odometryMsg_floats(msg)); - t_symbol *s = gensym("odometry"); - outlet_anything(((t_robotin *)x)->outlets[index], s, argc, argv); + unsigned *header_ints = odometryMsg_header_ints(msg); + atom_setlong(x->odometry_msg+i, header_ints[0]); ++i; + atom_setlong(x->odometry_msg+i, header_ints[1]); ++i; + atom_setlong(x->odometry_msg+i, header_ints[2]); ++i; + const char *frame = odometryMsg_header_frame(msg); + atom_setsym(x->odometry_msg+i, gensym(frame)); ++i; + const char *child = odometryMsg_childframe(msg); + atom_setsym(x->odometry_msg+i, gensym(child)); ++i; + double *d = odometryMsg_floats(msg); + atom_setdouble_array(85, x->odometry_msg+i, 85, d); + outlet_anything(x->outlets[index], x->odom_s, argc, x->odometry_msg); + free(header_ints); + free(d); } -void robotin_laserfunc(void *x, const void *msg, int index) { - post("recieved laser message"); - int n = 7 + laser_intensities_length(msg) + laser_ranges_length(msg); - post("ranges=%d, intensities=%d", laser_ranges_length(msg), laser_intensities_length(msg)); - int total = 4 + n; - t_atom *argv = (t_atom*)malloc(total*sizeof(t_atom)); +void robotin_laserfunc(void *x_, const void *msg, int index) { + //post("recieved laser message"); + t_robotin *x = (t_robotin *)x_; + int n = 7 + laser_intensities_length(msg) + laser_ranges_length(msg); // 7+2*360 = 727 + //object_post((t_object*)x, "laser: ranges-length=%d, intensities-length=%d", laser_ranges_length(msg), laser_intensities_length(msg));//=360, 360 + int total = 4 + n; //=4+727=731 + //t_atom *argv = (t_atom*)malloc(total*sizeof(t_atom)); int i=0; - atom_setlong_array(3, argv, 3, laserMsg_header_ints(msg)); i += 3; - atom_setsym(argv+i, laserMsg_header_frame(msg)); ++i; - atom_setdouble_array(n, argv+i, n, laserMsg_floats(msg)); - - t_symbol *s = gensym("laser"); - outlet_anything(((t_robotin *)x)->outlets[index], s, total, argv); - - // release memory allocation after outlet - //object_free(argv); + unsigned *header_ints = laserMsg_header_ints(msg); + atom_setlong(x->imu_msg+i, header_ints[0]); ++i; + atom_setlong(x->imu_msg+i, header_ints[1]); ++i; + atom_setlong(x->imu_msg+i, header_ints[2]); ++i; + char *frameid = laserMsg_header_frame(msg); + atom_setsym(x->imu_msg+i, gensym(frameid)); ++i; + //post("laser frame id=%s", laserMsg_header_frame(msg)); + atom_setdouble_array(n, x->laser_msg+i, n, laserMsg_floats(msg)); + outlet_anything(x->outlets[index], x->laser_s, total, x->laser_msg); + free(header_ints); } -void robotin_imufunc(void *x, const void *msg, int index) { +void robotin_imufunc(void *x_, const void *msg, int index) { //post("recieved imu message"); + t_robotin *x = (t_robotin *)x_; int argc = 3+1+37; - t_atom argv[41]; + //t_atom argv[41]; int i=0; - atom_setlong_array(3, argv, 3, imuMsg_header_ints(msg)); i += 3; - atom_setsym(argv+i, imuMsg_header_frame(msg)); ++i; - atom_setdouble_array(37, argv+i, 37, imuMsg_floats(msg)); - - t_symbol *s = gensym("imu"); - outlet_anything(((t_robotin *)x)->outlets[index], s, argc, argv); + unsigned *header_ints = imuMsg_header_ints(msg); + atom_setlong(x->imu_msg+i, header_ints[0]); ++i; + atom_setlong(x->imu_msg+i, header_ints[1]); ++i; + atom_setlong(x->imu_msg+i, header_ints[2]); ++i; + atom_setsym(x->imu_msg+i, gensym(imuMsg_header_frame(msg))); ++i; + atom_setdouble_array(37, x->imu_msg+i, 37, imuMsg_floats(msg)); + outlet_anything(x->outlets[index], x->imu_s, argc, x->imu_msg); + free(header_ints); } -void robotin_jointsfunc(void *x, const void *msg, int index) { +void robotin_jointsfunc(void *x_, const void *msg, int index) { //post("recieved joints state message"); - int num_joints = jointsMsg_length(msg); - int total = 3 + 1 + 4 * num_joints; + t_robotin *x = (t_robotin *)x_; + int num_joints = 2; + int total = 12; //3 + 1 + 4 * num_joints; int i = 0; - t_atom *argv = (t_atom*)malloc(total*sizeof(t_atom)); // set header - atom_setlong_array(3, argv, 3, jointsMsg_header_ints(msg)); i += 3; - atom_setsym(argv+i, jointsMsg_header_frame(msg)); ++i; - // set joints names - char **names = jointsMsg_names(msg); - t_symbol **names_sym = (t_symbol**)malloc(num_joints*sizeof(t_symbol*)); - for(int j=0; jjoints_msg+i, header_ints[0]); ++i; + atom_setlong(x->joints_msg+i, header_ints[1]); ++i; + atom_setlong(x->joints_msg+i, header_ints[2]); ++i; + //post("jointsMsg_header_frame = %s", jointsMsg_header_frame(msg)); + //post("joint_names_sym_0 = %s", *(x->joint_names_sym[0])); + //post("joint_names_sym_1 = %s", *(x->joint_names_sym[1])); + atom_setsym(x->joints_msg+i, gensym(jointsMsg_header_frame(msg))); ++i; + atom_setsym_array(num_joints, x->joints_msg+i, num_joints, x->joint_names_sym); i += num_joints; // set position, velocity, effort arrays (length num_joints) = 3*num_joints - atom_setdouble_array(3*num_joints, argv+i, 3*num_joints, odometryMsg_floats(msg)); - t_symbol *s = gensym("joints"); - outlet_anything(((t_robotin *)x)->outlets[index], s, total, argv); - - // release memory allocation after outlet - object_free(argv); - free(names_sym); - free(names); + atom_setdouble_array(3*num_joints, x->joints_msg+i, 3*num_joints, jointsMsg_floats(msg)); + outlet_anything(x->outlets[index], x->joints_s, total, x->joints_msg); + free(header_ints); } -void robotin_sensorsfunc(void *x, const void *msg, int index) { +void robotin_sensorsfunc(void *x_, const void *msg, int index) { //post("recieved sensors state message"); + t_robotin *x = (t_robotin *)x_; int argc = 8; - t_atom argv[8]; - atom_setlong_array(7, argv, 7, sensorsMsg_ints(msg)); + unsigned *ints = sensorsMsg_ints(msg); + for(int i=0; i<7; ++i) + atom_setlong(x->sensors_msg+i, ints[i]); // set all the doubles - atom_setfloat(argv+7, sensorsMsg_float(msg)); - - t_symbol *s = gensym("sensors"); - outlet_anything(((t_robotin *)x)->outlets[index], s, argc, argv); + atom_setfloat(x->sensors_msg+7, sensorsMsg_float(msg)); + outlet_anything(x->outlets[index], x->sensors_s, argc, x->sensors_msg); + free(ints); /* ROSSERIAL MESSAGE IMPLEMENTATION: ros::Time stamp; // sec, nsec @@ -421,8 +481,19 @@ void robotin_sensorsfunc(void *x, const void *msg, int index) { */ } - - - - - +void robotin_tffunc(void *x_, const void *msg, int index) { + //post("recieved tf message"); + t_robotin *x = (t_robotin *)x_; + int argc = 12; //3+1+1+3+4; + //t_atom argv[12]; + int i=0; + unsigned *header_ints = tfMsg_header_ints(msg); + atom_setlong(x->tf_msg+i, header_ints[0]); ++i; + atom_setlong(x->tf_msg+i, header_ints[1]); ++i; + atom_setlong(x->tf_msg+i, header_ints[2]); ++i; + atom_setsym(x->tf_msg+i, gensym(tfMsg_header_frame(msg))); ++i; + atom_setsym(x->tf_msg+i, gensym(tfMsg_childframe(msg))); ++i; + atom_setdouble_array(7, x->tf_msg+i, 7, tfMsg_floats(msg)); + outlet_anything(x->outlets[index], x->tf_s, argc, x->tf_msg); + +} diff --git a/source/cr.robotout/cr.robotout.c b/source/cr.robotout/cr.robotout.c index e9b5968..045652b 100755 --- a/source/cr.robotout/cr.robotout.c +++ b/source/cr.robotout/cr.robotout.c @@ -183,8 +183,9 @@ int robotout_open(t_robotout *x) { } object_post((t_object *)x, "ready to publish to robot on %s", x->ip_addr->s_name); - x->is_ready = true; + post("Publishing to /cmd_vel"); + x->is_ready = true; return 0; } diff --git a/source/ros-max-lib/ros_lib/geometry_msgs/Transform.h b/source/ros-max-lib/ros_lib/geometry_msgs/Transform.h index 27a9944..967eabb 100644 --- a/source/ros-max-lib/ros_lib/geometry_msgs/Transform.h +++ b/source/ros-max-lib/ros_lib/geometry_msgs/Transform.h @@ -4,9 +4,9 @@ #include #include #include -#include "ros/msg.h" -#include "geometry_msgs/Vector3.h" -#include "geometry_msgs/Quaternion.h" +#include "../ros/msg.h" +#include "../geometry_msgs/Vector3.h" +#include "../geometry_msgs/Quaternion.h" namespace geometry_msgs { @@ -47,4 +47,4 @@ namespace geometry_msgs }; } -#endif \ No newline at end of file +#endif diff --git a/source/ros-max-lib/ros_lib/geometry_msgs/TransformStamped.h b/source/ros-max-lib/ros_lib/geometry_msgs/TransformStamped.h index b197b54..ef3f7a8 100644 --- a/source/ros-max-lib/ros_lib/geometry_msgs/TransformStamped.h +++ b/source/ros-max-lib/ros_lib/geometry_msgs/TransformStamped.h @@ -4,9 +4,9 @@ #include #include #include -#include "ros/msg.h" -#include "std_msgs/Header.h" -#include "geometry_msgs/Transform.h" +#include "../ros/msg.h" +#include "../std_msgs/Header.h" +#include "../geometry_msgs/Transform.h" namespace geometry_msgs { @@ -64,4 +64,4 @@ namespace geometry_msgs }; } -#endif \ No newline at end of file +#endif diff --git a/source/ros-max-lib/ros_lib/ros/node_handle.h b/source/ros-max-lib/ros_lib/ros/node_handle.h index fa2416a..9321ed7 100644 --- a/source/ros-max-lib/ros_lib/ros/node_handle.h +++ b/source/ros-max-lib/ros_lib/ros/node_handle.h @@ -99,8 +99,8 @@ using rosserial_msgs::TopicInfo; template + int INPUT_SIZE = 10240, + int OUTPUT_SIZE = 512> class NodeHandle_ : public NodeHandleBase_ { protected: diff --git a/source/ros-max-lib/ros_lib/tf/tfMessage.h b/source/ros-max-lib/ros_lib/tf/tfMessage.h index 4c0b04a..1f370d0 100644 --- a/source/ros-max-lib/ros_lib/tf/tfMessage.h +++ b/source/ros-max-lib/ros_lib/tf/tfMessage.h @@ -4,8 +4,8 @@ #include #include #include -#include "ros/msg.h" -#include "geometry_msgs/TransformStamped.h" +#include "../ros/msg.h" +#include "../geometry_msgs/TransformStamped.h" namespace tf { @@ -61,4 +61,4 @@ namespace tf }; } -#endif \ No newline at end of file +#endif diff --git a/source/ros-max-lib/wrapper.cpp b/source/ros-max-lib/wrapper.cpp index 6d4860c..26761eb 100644 --- a/source/ros-max-lib/wrapper.cpp +++ b/source/ros-max-lib/wrapper.cpp @@ -24,6 +24,7 @@ #include "ros_lib/sensor_msgs/Imu.h" #include "ros_lib/turtlebot3_msgs/SensorState.h" #include "ros_lib/sensor_msgs/JointState.h" +#include "ros_lib/tf/tfMessage.h" extern "C" { @@ -38,6 +39,7 @@ extern "C" { void (*laser_callback)(void*, const void*, int i); void (*joints_callback)(void*, const void*, int i); void (*sensors_callback)(void*, const void*, int i); + void (*tf_callback)(void*, const void*, int i); void *gui_obj; int twist_order; @@ -46,6 +48,7 @@ extern "C" { int imu_order; int sensors_order; int joints_order; + int tf_order; // Ros Node ros::NodeHandle nh; @@ -68,18 +71,22 @@ extern "C" { void imuCb(const sensor_msgs::Imu& received_msg) { (*imu_callback)(gui_obj, &received_msg, imu_order); } - void jointsCb(const turtlebot3_msgs::SensorState& received_msg) { + void sensorsCb(const turtlebot3_msgs::SensorState& received_msg) { + (*sensors_callback)(gui_obj, &received_msg, sensors_order); + } + void jointsCb(const sensor_msgs::JointState& received_msg) { (*joints_callback)(gui_obj, &received_msg, joints_order); } - void sensorsCb(const sensor_msgs::JointState& received_msg) { - (*sensors_callback)(gui_obj, &received_msg, sensors_order); + void tfCb(const tf::tfMessage& received_msg) { + (*tf_callback)(gui_obj, &received_msg, tf_order); } - ros::Subscriber subTwist("cmd_vel_rc100", twistCb); + ros::Subscriber subTwist("/cmd_vel_rc100", twistCb); ros::Subscriber subOdometry("/odom", odometryCb); ros::Subscriber subLaser("/scan", laserCb); ros::Subscriber subImu("/imu", imuCb); -// ros::Subscriber subSensors("/sensor_state", sensorsCb); -// ros::Subscriber subJoints("/joint_states", jointsCb); + ros::Subscriber subSensors("/sensor_state", sensorsCb); + ros::Subscriber subJoints("/joint_states", jointsCb); + ros::Subscriber subTf("/tf", tfCb); double *twistMsg_floats(const void *msg_) { const geometry_msgs::Twist *msg = (geometry_msgs::Twist*)msg_; @@ -104,14 +111,14 @@ extern "C" { char *odometryMsg_header_frame(const void *msg_) { const nav_msgs::Odometry *msg = (nav_msgs::Odometry*)msg_; - char *data = (char *)malloc(sizeof(msg->header.frame_id)); + char *data = (char *)malloc(strlen(msg->header.frame_id)); sprintf(data, "%s", msg->header.frame_id); return data; } char *odometryMsg_childframe(const void *msg_) { const nav_msgs::Odometry *msg = (nav_msgs::Odometry*)msg_; - char *data = (char *)malloc(sizeof(msg->child_frame_id)); + char *data = (char *)malloc(strlen(msg->child_frame_id)); sprintf(data, "%s", msg->child_frame_id); return data; } @@ -151,7 +158,7 @@ extern "C" { char *imuMsg_header_frame(const void *msg_) { const sensor_msgs::Imu *msg = (sensor_msgs::Imu*)msg_; - char *data = (char *)malloc(sizeof(msg->header.frame_id)); + char *data = (char *)malloc(strlen(msg->header.frame_id)); sprintf(data, "%s", msg->header.frame_id); return data; } @@ -181,7 +188,7 @@ extern "C" { char *laserMsg_header_frame(const void *msg_) { const sensor_msgs::LaserScan *msg = (sensor_msgs::LaserScan*)msg_; - char *data = (char *)malloc(sizeof(msg->header.frame_id)); + char *data = (char *)malloc(strlen(msg->header.frame_id)); sprintf(data, "%s", msg->header.frame_id); return data; } @@ -238,7 +245,7 @@ extern "C" { char *jointsMsg_header_frame(const void *msg_) { const sensor_msgs::JointState *msg = (sensor_msgs::JointState*)msg_; - char *data = (char *)malloc(sizeof(msg->header.frame_id)); + char *data = (char *)malloc(strlen(msg->header.frame_id)); sprintf(data, "%s", msg->header.frame_id); return data; } @@ -303,7 +310,43 @@ extern "C" { const turtlebot3_msgs::SensorState *msg = (turtlebot3_msgs::SensorState*)msg_; return msg->battery; } - + + unsigned *tfMsg_header_ints(const void *msg_) { + const tf::tfMessage *msg = (tf::tfMessage*)msg_; + unsigned *data = (unsigned *)malloc(3*sizeof(unsigned)); + data[0] = msg->transforms[0].header.seq; + data[1] = msg->transforms[0].header.stamp.sec; + data[2] = msg->transforms[0].header.stamp.nsec; + return data; + } + + char *tfMsg_header_frame(const void *msg_) { + const tf::tfMessage *msg = (tf::tfMessage*)msg_; + char *data = (char *)malloc(strlen(msg->transforms[0].header.frame_id)); + sprintf(data, "%s", msg->transforms[0].header.frame_id); + return data; + } + + char *tfMsg_childframe(const void *msg_) { + const tf::tfMessage *msg = (tf::tfMessage*)msg_; + char *data = (char *)malloc(strlen(msg->transforms[0].child_frame_id)); + sprintf(data, "%s", msg->transforms[0].child_frame_id); + return data; + } + + double *tfMsg_floats(const void *msg_) { + const tf::tfMessage *msg = (tf::tfMessage*)msg_; + double *data = (double *)malloc(7*sizeof(double)); + int i=0; + data[i++] = msg->transforms[0].transform.translation.x; + data[i++] = msg->transforms[0].transform.translation.y; + data[i++] = msg->transforms[0].transform.translation.z; + data[i++] = msg->transforms[0].transform.rotation.x; + data[i++] = msg->transforms[0].transform.rotation.y; + data[i++] = msg->transforms[0].transform.rotation.z; + data[i++] = msg->transforms[0].transform.rotation.w; + return data; + } // ROS Communication int ros_init(char *rosSrvrIp) { @@ -386,16 +429,23 @@ extern "C" { joints_callback = f; gui_obj = obj; joints_order = index; - //nh.subscribe(subJoints); + nh.subscribe(subJoints); } void ros_subscribe_sensors(void *obj, void (*f)(void*, const void*, int), int index) { sensors_callback = f; gui_obj = obj; sensors_order = index; - //nh.subscribe(subSensors); + nh.subscribe(subSensors); } - + + void ros_subscribe_tf(void *obj, void (*f)(void*, const void*, int), int index) { + tf_callback = f; + gui_obj = obj; + tf_order = index; + nh.subscribe(subTf); + } + void ros_listen(void *data) { while(1) { nh.spinOnce(); @@ -409,6 +459,9 @@ extern "C" { } +} + +/* double twistMsg_get_linera_x(const void *msg) { const geometry_msgs::Twist *t_msg = (const geometry_msgs::Twist*)msg; return t_msg->linear.x; @@ -452,7 +505,7 @@ const double* twistMsgToC(const geometry_msgs::Twist& received_msg) { return msg; } -/* + const double** twistMsgToC(const geometry_msgs::Twist& received_msg) { const double **msg; msg = (const double**)malloc(6*sizeof(const double*)); @@ -463,9 +516,9 @@ const double** twistMsgToC(const geometry_msgs::Twist& received_msg) { msg[4] = &(received_msg.angular.y); msg[5] = &(received_msg.angular.z); return msg;//(const void**)msg; -}*/ +} + -/* ros::Subscriber_ *sub; void msgCb(const geometry_msgs::Twist& received_msg) { diff --git a/source/ros-max-lib/wrapper.h b/source/ros-max-lib/wrapper.h index 3bc3ac7..fbb6581 100644 --- a/source/ros-max-lib/wrapper.h +++ b/source/ros-max-lib/wrapper.h @@ -45,6 +45,7 @@ extern "C" { void ros_subscribe_imu(void *obj, void (*f)(void*, const void*, int), int index); void ros_subscribe_sensors(void *obj, void (*f)(void*, const void*, int), int index); void ros_subscribe_joints(void *obj, void (*f)(void*, const void*, int), int index); + void ros_subscribe_tf(void *obj, void (*f)(void*, const void*, int), int index) ; void ros_listen(void *data); @@ -75,10 +76,14 @@ extern "C" { double *jointsMsg_floats(const void *msg); unsigned *sensorsMsg_ints(const void *msg); + double sensorsMsg_float(const void *msg); - - - + unsigned *tfMsg_header_ints(const void *msg); + char *tfMsg_header_frame(const void *msg); + char *tfMsg_childframe(const void *msg); + double *tfMsg_floats(const void *msg); + + typedef struct { char* frame_id; unsigned *header[2];//3 -- GitLab From b542f549bae110411744b294db190553a71cc556 Mon Sep 17 00:00:00 2001 From: Orly Natan Date: Thu, 7 Jun 2018 02:53:06 +1000 Subject: [PATCH 4/8] Updated docs --- cr/docs/cr.robotin2.maxref.xml | 98 ++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 cr/docs/cr.robotin2.maxref.xml diff --git a/cr/docs/cr.robotin2.maxref.xml b/cr/docs/cr.robotin2.maxref.xml new file mode 100644 index 0000000..f113d57 --- /dev/null +++ b/cr/docs/cr.robotin2.maxref.xml @@ -0,0 +1,98 @@ + + + + + + + + Robotics Operating System (ROS) Turtlebot3 Burger Inputs (Reader). + + + + + Receives ROS messages (Velocity, Odometry, Laser Scan, IMU, Sensors State, Joints State, Transformation) from Turtlebot3 Robot via ROS Messages. + + + + + Creative Robotics Lab + CR + ROS + Robotics + Turtlebot3 + + + + + + Messages: Open, Close + + + + + + + Input data from the TurtleBot3 robot + Further description in http://emanual.robotis.com/docs/en/platform/turtlebot3/overview/ + + + + + + + Enter the robot IP. + + + + + + + Velocities (linear, angular) data + The linear/translational speed (x,y,z in m/s) and angular/rotational speed (x,y,z in rad/s) of the robot. Full details: http://docs.ros.org/api/geometry_msgs/html/msg/Twist.html + + + Odometry data + The Turtlebot3’s odometry information based on the encoder and IMU. Odometry is the use of data from motion sensors to estimate change in position over time. It estimates the robot position relative to a starting location. It measures how many times the wheels have rotated, and by multiplying with the circumference of its wheels, computes the distance. Data include position (x,y,z), orientation (x,y,z,w), linear speed (x,y,z), and angular speed (x,y,z). Full details: http://docs.ros.org/kinetic/api/nav_msgs/html/msg/Odometry.html + + + Laser Scan data + The scan values of the LiDAR mounted on top of the Turtlebot3. The Laser Distance Sensor LDS-01 is a 2D laser scanner capable of sensing 360 degrees that collects a set of data around the robot to use for SLAM (Simultaneous Localization and Mapping) and Navigation. Detection distance: 12 cm ~ 350 cm. Sampling Rate: 1.8kHz. Full details: http://docs.ros.org/api/sensor_msgs/html/msg/LaserScan.html + + + Inertial Measurement Unit (IMU) data + Inertial measurement unit (IMU) is a combination of Accelerometers, Gyroscopes, and Magnetometer. Estimate the robot's orientation (x,y,z,w), angular/rotational velocity (x,y,z) in rad/sec, and linear acceleration (x,y,z) in m/s^2. Full details: http://docs.ros.org/api/sensor_msgs/html/msg/Imu.html + + + Sensors State data + Turtlebot3 Sensors state: button status, voltage level, encoder values. Full details: https://github.com/ROBOTIS-GIT/turtlebot3_msgs/blob/master/msg/SensorState.msg + + + Joints State data + The state of a set of torque controlled joints (left wheel/right wheel). Full details: http://docs.ros.org/api/sensor_msgs/html/msg/JointState.html + + + Transformation data + The transform from base_link to imu_link. It defines where the IMU sensor is mounted relative to the robot's chassis so that the sensor readings can be correctly transformed into the robot's frame of reference. This transform should be static; the IMU frame moves and rotates together with the robot frame, so relative position of IMU frame does not change. Data include translation (x,y,z) and rotation (x,y,z,w). Full details: http://docs.ros.org/api/tf/html/msg/tfMessage.html + + + + + + + + Open a connection to the robot + + + + + Close the connection to the robot + + + + + + + + + + \ No newline at end of file -- GitLab From 448d4b327eb0300ba65cea8da3874f07b594cb0e Mon Sep 17 00:00:00 2001 From: Orly Natan Date: Thu, 7 Jun 2018 02:53:53 +1000 Subject: [PATCH 5/8] removed doc file --- cr/docs/cr.robotin2.maxref.xml | 98 ---------------------------------- 1 file changed, 98 deletions(-) delete mode 100644 cr/docs/cr.robotin2.maxref.xml diff --git a/cr/docs/cr.robotin2.maxref.xml b/cr/docs/cr.robotin2.maxref.xml deleted file mode 100644 index f113d57..0000000 --- a/cr/docs/cr.robotin2.maxref.xml +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - - Robotics Operating System (ROS) Turtlebot3 Burger Inputs (Reader). - - - - - Receives ROS messages (Velocity, Odometry, Laser Scan, IMU, Sensors State, Joints State, Transformation) from Turtlebot3 Robot via ROS Messages. - - - - - Creative Robotics Lab - CR - ROS - Robotics - Turtlebot3 - - - - - - Messages: Open, Close - - - - - - - Input data from the TurtleBot3 robot - Further description in http://emanual.robotis.com/docs/en/platform/turtlebot3/overview/ - - - - - - - Enter the robot IP. - - - - - - - Velocities (linear, angular) data - The linear/translational speed (x,y,z in m/s) and angular/rotational speed (x,y,z in rad/s) of the robot. Full details: http://docs.ros.org/api/geometry_msgs/html/msg/Twist.html - - - Odometry data - The Turtlebot3’s odometry information based on the encoder and IMU. Odometry is the use of data from motion sensors to estimate change in position over time. It estimates the robot position relative to a starting location. It measures how many times the wheels have rotated, and by multiplying with the circumference of its wheels, computes the distance. Data include position (x,y,z), orientation (x,y,z,w), linear speed (x,y,z), and angular speed (x,y,z). Full details: http://docs.ros.org/kinetic/api/nav_msgs/html/msg/Odometry.html - - - Laser Scan data - The scan values of the LiDAR mounted on top of the Turtlebot3. The Laser Distance Sensor LDS-01 is a 2D laser scanner capable of sensing 360 degrees that collects a set of data around the robot to use for SLAM (Simultaneous Localization and Mapping) and Navigation. Detection distance: 12 cm ~ 350 cm. Sampling Rate: 1.8kHz. Full details: http://docs.ros.org/api/sensor_msgs/html/msg/LaserScan.html - - - Inertial Measurement Unit (IMU) data - Inertial measurement unit (IMU) is a combination of Accelerometers, Gyroscopes, and Magnetometer. Estimate the robot's orientation (x,y,z,w), angular/rotational velocity (x,y,z) in rad/sec, and linear acceleration (x,y,z) in m/s^2. Full details: http://docs.ros.org/api/sensor_msgs/html/msg/Imu.html - - - Sensors State data - Turtlebot3 Sensors state: button status, voltage level, encoder values. Full details: https://github.com/ROBOTIS-GIT/turtlebot3_msgs/blob/master/msg/SensorState.msg - - - Joints State data - The state of a set of torque controlled joints (left wheel/right wheel). Full details: http://docs.ros.org/api/sensor_msgs/html/msg/JointState.html - - - Transformation data - The transform from base_link to imu_link. It defines where the IMU sensor is mounted relative to the robot's chassis so that the sensor readings can be correctly transformed into the robot's frame of reference. This transform should be static; the IMU frame moves and rotates together with the robot frame, so relative position of IMU frame does not change. Data include translation (x,y,z) and rotation (x,y,z,w). Full details: http://docs.ros.org/api/tf/html/msg/tfMessage.html - - - - - - - - Open a connection to the robot - - - - - Close the connection to the robot - - - - - - - - - - \ No newline at end of file -- GitLab From dbae94aea19f15c7e63958fb29c84f7ff7d5a718 Mon Sep 17 00:00:00 2001 From: Orly Natan Date: Thu, 7 Jun 2018 02:55:07 +1000 Subject: [PATCH 6/8] Updated cr/docs/cr.robotin.maxref.xml --- cr/docs/cr.robotin.maxref.xml | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/cr/docs/cr.robotin.maxref.xml b/cr/docs/cr.robotin.maxref.xml index 3f9fea5..f113d57 100755 --- a/cr/docs/cr.robotin.maxref.xml +++ b/cr/docs/cr.robotin.maxref.xml @@ -5,12 +5,12 @@ - Robotics Operating System (ROS) Turtlebot3 Burger Inputs (Reader) + Robotics Operating System (ROS) Turtlebot3 Burger Inputs (Reader). - Receives ROS messages (Velocity, Odometry, Laser Scan, IMU, Sensors State, Joints State) from Turtlebot3 Robot via ROS Messages. + Receives ROS messages (Velocity, Odometry, Laser Scan, IMU, Sensors State, Joints State, Transformation) from Turtlebot3 Robot via ROS Messages. @@ -19,6 +19,7 @@ CR ROS Robotics + Turtlebot3 @@ -31,7 +32,7 @@ - Input data from the robot, as specified in the TurtleBot3 + Input data from the TurtleBot3 robot Further description in http://emanual.robotis.com/docs/en/platform/turtlebot3/overview/ @@ -47,27 +48,31 @@ Velocities (linear, angular) data - http://docs.ros.org/api/geometry_msgs/html/msg/Twist.html + The linear/translational speed (x,y,z in m/s) and angular/rotational speed (x,y,z in rad/s) of the robot. Full details: http://docs.ros.org/api/geometry_msgs/html/msg/Twist.html Odometry data - http://docs.ros.org/kinetic/api/nav_msgs/html/msg/Odometry.html + The Turtlebot3’s odometry information based on the encoder and IMU. Odometry is the use of data from motion sensors to estimate change in position over time. It estimates the robot position relative to a starting location. It measures how many times the wheels have rotated, and by multiplying with the circumference of its wheels, computes the distance. Data include position (x,y,z), orientation (x,y,z,w), linear speed (x,y,z), and angular speed (x,y,z). Full details: http://docs.ros.org/kinetic/api/nav_msgs/html/msg/Odometry.html Laser Scan data - http://docs.ros.org/api/sensor_msgs/html/msg/LaserScan.html + The scan values of the LiDAR mounted on top of the Turtlebot3. The Laser Distance Sensor LDS-01 is a 2D laser scanner capable of sensing 360 degrees that collects a set of data around the robot to use for SLAM (Simultaneous Localization and Mapping) and Navigation. Detection distance: 12 cm ~ 350 cm. Sampling Rate: 1.8kHz. Full details: http://docs.ros.org/api/sensor_msgs/html/msg/LaserScan.html Inertial Measurement Unit (IMU) data - http://docs.ros.org/api/sensor_msgs/html/msg/Imu.html + Inertial measurement unit (IMU) is a combination of Accelerometers, Gyroscopes, and Magnetometer. Estimate the robot's orientation (x,y,z,w), angular/rotational velocity (x,y,z) in rad/sec, and linear acceleration (x,y,z) in m/s^2. Full details: http://docs.ros.org/api/sensor_msgs/html/msg/Imu.html Sensors State data - https://github.com/ROBOTIS-GIT/turtlebot3_msgs/blob/master/msg/SensorState.msg + Turtlebot3 Sensors state: button status, voltage level, encoder values. Full details: https://github.com/ROBOTIS-GIT/turtlebot3_msgs/blob/master/msg/SensorState.msg Joints State data - http://docs.ros.org/api/sensor_msgs/html/msg/JointState.html + The state of a set of torque controlled joints (left wheel/right wheel). Full details: http://docs.ros.org/api/sensor_msgs/html/msg/JointState.html + + + Transformation data + The transform from base_link to imu_link. It defines where the IMU sensor is mounted relative to the robot's chassis so that the sensor readings can be correctly transformed into the robot's frame of reference. This transform should be static; the IMU frame moves and rotates together with the robot frame, so relative position of IMU frame does not change. Data include translation (x,y,z) and rotation (x,y,z,w). Full details: http://docs.ros.org/api/tf/html/msg/tfMessage.html @@ -90,4 +95,4 @@ - + \ No newline at end of file -- GitLab From 40df33a97f96f735b52ca270055efa5d8574e5d8 Mon Sep 17 00:00:00 2001 From: Orly Natan Date: Thu, 7 Jun 2018 02:57:03 +1000 Subject: [PATCH 7/8] Updated cr/docs/cr.robotout.maxref.xml --- cr/docs/cr.robotout.maxref.xml | 145 +++++++++++++++++---------------- 1 file changed, 73 insertions(+), 72 deletions(-) diff --git a/cr/docs/cr.robotout.maxref.xml b/cr/docs/cr.robotout.maxref.xml index 392c7bd..87388d3 100755 --- a/cr/docs/cr.robotout.maxref.xml +++ b/cr/docs/cr.robotout.maxref.xml @@ -1,77 +1,78 @@ - + - - - Robotics Operating System (ROS) Turtlebot3 Burger Outputs (Writer) - - - - - Send Velocities (Linear, Angular) to Turtlebot3 Robot via ROS Messages. - - - - - Creative Robotics Lab - CR - ROS - Robotics - - - - - - Messages: Open, Close, Break, Bang - - - Send data to robot, as specified in Turtlebot3: http://docs.ros.org/api/geometry_msgs/html/msg/Twist.html - Further description in http://emanual.robotis.com/docs/en/platform/turtlebot3/overview/ - - + + + Robotics Operating System (ROS) Turtlebot3 Burger Outputs (Writer). + - - - - - - - Enter the robot IP. - - - - - - - - - - - Open a connection to the robot - - - - - Close the connection to the robot - - - - - Send the velocities message to the robot - - - - - Send a break (zero velocities) message to the robot - - - - - - - - - - + + + Send Velocities (Linear, Angular) to Turtlebot3 Robot via ROS Messages. + + + + + Creative Robotics Lab + CR + ROS + Robotics + Turtlebot3 + + + + + + Messages: Open, Close, Break, Bang + + + Send data to robot, as specified in Turtlebot3: http://docs.ros.org/api/geometry_msgs/html/msg/Twist.html + Control the linear/translational speed (x,y,z in m/s) and angular/rotational speed (x,y,z in rad/s) of the robot. Further description in http://emanual.robotis.com/docs/en/platform/turtlebot3/overview/ + + + + + + + + + + Enter the robot IP. + + + + + + + + + + + Open a connection to the robot + + + + + Close the connection to the robot + + + + + Send the velocities message to the robot + + + + + Send a break (zero velocities) message to the robot + + + + + + + + + + \ No newline at end of file -- GitLab From 172ac5bb2268f46ed05540239096fe5ce811f8c6 Mon Sep 17 00:00:00 2001 From: Orly Natan Date: Thu, 7 Jun 2018 02:58:23 +1000 Subject: [PATCH 8/8] Updated cr/readme.md --- cr/readme.md | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/cr/readme.md b/cr/readme.md index a601430..8df046e 100644 --- a/cr/readme.md +++ b/cr/readme.md @@ -31,9 +31,9 @@ B. Manual installation -Board Preparations: +Arduino UNO - Board Preparations: ------------------- -1. Open Arduino. +1. Open the Arduino IDE Software. Link for download: https://www.arduino.cc/en/Main/Software. 2. Open Sketch File -> Examples -> Firmata -> StandardFirmata. 3. Upload the Sketch to Your UNO Board*. Make sure no errors in the console (Arduino window). @@ -43,6 +43,19 @@ Tools -> Port -> (choose the correct port that is connected to your Arduino boar Done. +TurtleBot3 - Robot Preparations: +------------------- +1. Install the following ROS packages: + http://wiki.ros.org/rosserial + http://wiki.ros.org/rosserial_embeddedlinux +2. Note the robot IP address (must be static IP), and add export command to bashrc file. +3. Copy the auto-start script to the robot. Link to download: http://robolab.cse.unsw.edu.au:4443/interaction-interface/max-arduino-interface/tree/master. +4. Follow to instructions on how to get the robot to automatically run the script on startup. +5. Restart the robot. + +* Further details in the Turtlebot3 Burger eManual: http://emanual.robotis.com/docs/en/platform/turtlebot3/bringup/. + +Done. Usage Instructions: @@ -52,4 +65,3 @@ Usage Instructions: 3. Try the demo patchers under /extras/cr. They demonstrate how to use some of the actuators and sensors, and include circuite images to help you get started. 4. Help pages, Reference pages and Example Patchers are available in the cr package to help you getting started. - -- GitLab