diff --git a/orbbec_camera/SDK/include/libobsensor/ObSensor.h b/orbbec_camera/SDK/include/libobsensor/ObSensor.h index cd05372e..0eb17e77 100644 --- a/orbbec_camera/SDK/include/libobsensor/ObSensor.h +++ b/orbbec_camera/SDK/include/libobsensor/ObSensor.h @@ -20,4 +20,4 @@ #include #include #include - +#include diff --git a/orbbec_camera/SDK/include/libobsensor/ObSensor.hpp b/orbbec_camera/SDK/include/libobsensor/ObSensor.hpp index 8f148a6a..23da2ff7 100644 --- a/orbbec_camera/SDK/include/libobsensor/ObSensor.hpp +++ b/orbbec_camera/SDK/include/libobsensor/ObSensor.hpp @@ -14,9 +14,8 @@ #include #include #include -// #include +#include #include #include #include #include - diff --git a/orbbec_camera/SDK/include/libobsensor/h/Advanced.h b/orbbec_camera/SDK/include/libobsensor/h/Advanced.h index 8d40d3ea..bf5365a6 100644 --- a/orbbec_camera/SDK/include/libobsensor/h/Advanced.h +++ b/orbbec_camera/SDK/include/libobsensor/h/Advanced.h @@ -211,12 +211,12 @@ OB_EXPORT bool ob_device_preset_list_has_preset(const ob_device_preset_list *pre * @return bool Returns true if the device supports the frame interleave feature. */ OB_EXPORT bool ob_device_is_frame_interleave_supported(const ob_device *device, ob_error **error); - /** +/** * * @brief load the frame interleave mode according to frame interleavee name. * * @param device The device object. - * @param interleave_ae_name The name should be one of the frame interleave names returned by @ref ob_device_get_available_frame_interleave_list. + * @param frame_interleave_name The name should be one of the frame interleave names returned by @ref ob_device_get_available_frame_interleave_list. * @param error Log error messages. */ OB_EXPORT void ob_device_load_frame_interleave(ob_device *device, const char *frame_interleave_name, ob_error **error); @@ -230,11 +230,10 @@ OB_EXPORT void ob_device_load_frame_interleave(ob_device *device, const char *fr */ OB_EXPORT ob_device_frame_interleave_list *ob_device_get_available_frame_interleave_list(ob_device *device, ob_error **error); - /** * @brief Delete the available frame interleave list. * - * @param interleave_ae_list The available frame interleave list. + * @param frame_interleave_list The available frame interleave list. * @param error Log error messages. */ OB_EXPORT void ob_delete_frame_interleave_list(ob_device_frame_interleave_list *frame_interleave_list, ob_error **error); @@ -242,7 +241,7 @@ OB_EXPORT void ob_delete_frame_interleave_list(ob_device_frame_interleave_list * /** * @brief Get the number of frame interleave in the frame interleave list. * - * @param interleave_ae_list The available frame interleave list. + * @param frame_interleave_list The available frame interleave list. * @param error Log error messages. * @return The number of frame interleave in the frame interleave list. */ @@ -251,7 +250,7 @@ OB_EXPORT uint32_t ob_device_frame_interleave_list_get_count(ob_device_frame_int /** * @brief Get the name of frame interleave in the frame interleave list. * - * @param interleave_ae_list The available frame interleave list. + * @param frame_interleave_list The available frame interleave list. * @param index The index of frame interleave in the frame interleave list. * @param error Log error messages. * @return The name of frame interleave in the frame interleave list.. @@ -261,8 +260,8 @@ OB_EXPORT const char *ob_device_frame_interleave_list_get_name(ob_device_frame_i /** * @brief Check if the interleave ae list has the interleave ae. * - * @param interleave_ae_list The available interleave ae list. - * @param interleave_ae_name The name of the interleave ae. + * @param frame_interleave_list The available interleave ae list. + * @param frame_interleave_name The name of the interleave ae. * @param error Log error messages. * @return Whether the interleave ae list has the interleave ae. If true, the interleave ae list has the interleave ae. If false, the interleave ae list does * not have the interleave ae. diff --git a/orbbec_camera/SDK/include/libobsensor/h/Context.h b/orbbec_camera/SDK/include/libobsensor/h/Context.h index 457ccd2f..77fac022 100644 --- a/orbbec_camera/SDK/include/libobsensor/h/Context.h +++ b/orbbec_camera/SDK/include/libobsensor/h/Context.h @@ -104,7 +104,7 @@ OB_EXPORT void ob_enable_device_clock_sync(ob_context *context, uint64_t repeat_ OB_EXPORT void ob_free_idle_memory(ob_context *context, ob_error **error); /** - * @brief For linux, there are two ways to enable the UVC backend: libuvc and libusb. This function is used to set the backend type. + * @brief For linux, there are two ways to enable the UVC backend: libuvc and v4l2. This function is used to set the backend type. * @brief It is effective when the new device is created. * * @attention This interface is only available for Linux. @@ -155,7 +155,7 @@ OB_EXPORT void ob_set_logger_to_console(ob_log_severity severity, ob_error **err /** * @brief Set the extensions directory - * @brief The extensions directory is used to search for dynamic libraries that provide additional functionality to the SDK, such as the Frame filters. + * @brief The extensions directory is used to search for dynamic libraries that provide additional functionality to the SDK, such as the Frame filters. * * @attention Should be called before creating the context and pipeline, otherwise the default extensions directory (./extensions) will be used. * diff --git a/orbbec_camera/SDK/include/libobsensor/h/Device.h b/orbbec_camera/SDK/include/libobsensor/h/Device.h index 754d35da..1c14efba 100644 --- a/orbbec_camera/SDK/include/libobsensor/h/Device.h +++ b/orbbec_camera/SDK/include/libobsensor/h/Device.h @@ -166,6 +166,26 @@ OB_EXPORT void ob_device_get_structured_data(ob_device *device, ob_property_id p */ OB_EXPORT void ob_device_get_raw_data(ob_device *device, ob_property_id property_id, ob_get_data_callback cb, void *user_data, ob_error **error); +/** + * @brief Set customer data. + * + * @param[in] device The device object. + * @param[in] data The property data to be set. + * @param[in] data_size The size of the property to be set,the maximum length cannot exceed 65532 bytes. + * @param[out] error Log error messages. + */ +OB_EXPORT void ob_device_write_customer_data(ob_device *device, const void *data, uint32_t data_size, ob_error **error); + +/** + * @brief Get customer data of a device property. + * + * @param[in] device The device object. + * @param[out] data The obtained property data. + * @param[out] data_size The size of the obtained property data. + * @param[out] error Log error messages. + */ +OB_EXPORT void ob_device_read_customer_data(ob_device *device, void *data, uint32_t *data_size, ob_error **error); + /** * @brief Get the number of properties supported by the device. * @@ -305,9 +325,8 @@ OB_EXPORT void ob_device_enable_heartbeat(ob_device *device, bool enable, ob_err * @param[in] send_data The data to be sent to the device. * @param[in] send_data_size The size of the data to be sent to the device. * @param[out] receive_data The data received from the device. - * @param[in, out] receive_data_size Pass in the expected size of the receive data, and return the actual size of the received data. + * @param[in,out] receive_data_size Pass in the expected size of the receive data, and return the actual size of the received data. * @param error Pointer to an error object that will be set if an error occurs. - * @return OB_EXPORT */ OB_EXPORT void ob_device_send_and_receive_data(ob_device *device, const uint8_t *send_data, uint32_t send_data_size, uint8_t *receive_data, uint32_t *receive_data_size, ob_error **error); @@ -388,7 +407,7 @@ OB_EXPORT const char *ob_device_info_get_firmware_version(const ob_device_info * * * @param[in] info Device Information * @param[out] error Pointer to an error object that will be set if an error occurs. - * @return const char* The connection type,currently supports:"USB", "USB1.0", "USB1.1", "USB2.0", "USB2.1", "USB3.0", "USB3.1", "USB3.2", "Ethernet" + * @return const char* The connection type, currently supports: "USB", "USB1.0", "USB1.1", "USB2.0", "USB2.1", "USB3.0", "USB3.1", "USB3.2", "Ethernet" */ OB_EXPORT const char *ob_device_info_get_connection_type(const ob_device_info *info, ob_error **error); @@ -399,7 +418,7 @@ OB_EXPORT const char *ob_device_info_get_connection_type(const ob_device_info *i * * @param info Device Information * @param error Pointer to an error object that will be set if an error occurs. - * @return const char* The IP address,such as "192.168.1.10" + * @return const char* The IP address, such as "192.168.1.10" */ OB_EXPORT const char *ob_device_info_get_ip_address(const ob_device_info *info, ob_error **error); @@ -533,7 +552,7 @@ OB_EXPORT const char *ob_device_list_get_device_serial_number(const ob_device_li * @param[in] list Device list object * @param[in] index Device index * @param[out] error Pointer to an error object that will be set if an error occurs. - * @return const char* returns the device connection type,currently supports:"USB", "USB1.0", "USB1.1", "USB2.0", "USB2.1", "USB3.0", "USB3.1", "USB3.2", + * @return const char* returns the device connection type, currently supports: "USB", "USB1.0", "USB1.1", "USB2.0", "USB2.1", "USB3.0", "USB3.1", "USB3.2", * "Ethernet" */ OB_EXPORT const char *ob_device_list_get_device_connection_type(const ob_device_list *list, uint32_t index, ob_error **error); @@ -546,10 +565,22 @@ OB_EXPORT const char *ob_device_list_get_device_connection_type(const ob_device_ * @param list Device list object * @param index Device index * @param error Pointer to an error object that will be set if an error occurs. - * @return const char* returns the device ip address,such as "192.168.1.10" + * @return const char* returns the device ip address, such as "192.168.1.10" */ OB_EXPORT const char *ob_device_list_get_device_ip_address(const ob_device_list *list, uint32_t index, ob_error **error); +/** + * @brief Get device local mac address + * + * @attention Only valid for network devices, otherwise it will return "0:0:0:0:0:0". + * + * @param list Device list object + * @param index Device index + * @param error Pointer to an error object that will be set if an error occurs. + * @return const char* returns the device mac address + */ +OB_EXPORT const char *ob_device_list_get_device_local_mac(const ob_device_list *list, uint32_t index, ob_error **error); + /** * @brief Create a device. * @@ -580,7 +611,7 @@ OB_EXPORT ob_device *ob_device_list_get_device_by_serial_number(const ob_device_ * @brief On Linux platform, for usb device, the uid of the device is composed of bus-port-dev, for example 1-1.2-1. But the SDK will remove the dev number and * only keep the bus-port as the uid to create the device, for example 1-1.2, so that we can create a device connected to the specified USB port. Similarly, * users can also directly pass in bus-port as uid to create device. - * @brief For GMSL device,the uid is GMSL port with “gmsl2-” prefix, for example gmsl2-1. + * @brief For GMSL device, the uid is GMSL port with "gmsl2-" prefix, for example gmsl2-1. * * @attention If the device has already been acquired and created elsewhere, repeated acquisitions will return an error. * diff --git a/orbbec_camera/SDK/include/libobsensor/h/Error.h b/orbbec_camera/SDK/include/libobsensor/h/Error.h index 06ed8cdd..b9aec31a 100644 --- a/orbbec_camera/SDK/include/libobsensor/h/Error.h +++ b/orbbec_camera/SDK/include/libobsensor/h/Error.h @@ -68,7 +68,7 @@ OB_EXPORT ob_exception_type ob_error_get_exception_type(const ob_error *error); /** * @brief Delete the error object. * - * @param[in] error The error object to delete. + * @param[in] error The error object to delete, you should set the pointer to NULL after calling this function. */ OB_EXPORT void ob_delete_error(ob_error *error); diff --git a/orbbec_camera/SDK/include/libobsensor/h/Frame.h b/orbbec_camera/SDK/include/libobsensor/h/Frame.h index 78cce55c..923e2526 100644 --- a/orbbec_camera/SDK/include/libobsensor/h/Frame.h +++ b/orbbec_camera/SDK/include/libobsensor/h/Frame.h @@ -62,7 +62,7 @@ OB_EXPORT ob_frame *ob_create_frame_from_stream_profile(const ob_stream_profile * no longer needed. * * @param[in] frame_type Frame object type. - * @param[in] frame_format Frame object format. + * @param[in] format Frame object format. * @param[in] width Frame object width. * @param[in] height Frame object height. * @param[in] stride_bytes Row span in bytes. If 0, the stride is calculated based on the width and format. @@ -148,7 +148,7 @@ OB_EXPORT void ob_delete_frame(const ob_frame *frame, ob_error **error); /** * @brief Copy the information of the source frame object to the destination frame object. - * @brief Including the index,timestamp,system timestamp,global timestamp and metadata will be copied. + * @brief Including the index, timestamp, system timestamp, global timestamp and metadata will be copied. * * @param[in] src_frame Source frame object to copy the information from. * @param[in] dst_frame Destination frame object to copy the information to. @@ -224,7 +224,7 @@ OB_EXPORT void ob_frame_set_system_timestamp_us(ob_frame *frame, uint64_t system /** * @brief Get the global timestamp of the frame in microseconds. - * @brief The global timestamp is the time point when the frame was was captured by the device, and has been converted to the host clock domain. The + * @brief The global timestamp is the time point when the frame was captured by the device, and has been converted to the host clock domain. The * conversion process base on the frame timestamp and can eliminate the timer drift of the device * * @attention The global timestamp is disabled by default. If global timestamp is not enabled, the function will return 0. To enable it, call @ref @@ -603,6 +603,24 @@ OB_EXPORT ob_frame *ob_frameset_get_frame_by_index(const ob_frame *frameset, uin */ OB_EXPORT void ob_frameset_push_frame(ob_frame *frameset, const ob_frame *frame, ob_error **error); +/** + * @brief Get point cloud frame width + * + * @param[in] frame point cloud Frame object + * @param[out] error Pointer to an error object that will be set if an error occurs. + * @return uint32_t return the point cloud frame width + */ +OB_EXPORT uint32_t ob_point_cloud_frame_get_width(const ob_frame *frame, ob_error **error); + +/** + * @brief Get point cloud frame height + * + * @param[in] frame point cloud Frame object + * @param[out] error Pointer to an error object that will be set if an error occurs. + * @return uint32_t return the point cloud frame height + */ +OB_EXPORT uint32_t ob_point_cloud_frame_get_height(const ob_frame *frame, ob_error **error); + // The following interfaces are deprecated and are retained here for compatibility purposes. #define ob_frame_index ob_frame_get_index #define ob_frame_format ob_frame_get_format diff --git a/orbbec_camera/SDK/include/libobsensor/h/MultipleDevices.h b/orbbec_camera/SDK/include/libobsensor/h/MultipleDevices.h index a2e77935..adb09478 100644 --- a/orbbec_camera/SDK/include/libobsensor/h/MultipleDevices.h +++ b/orbbec_camera/SDK/include/libobsensor/h/MultipleDevices.h @@ -62,7 +62,7 @@ OB_EXPORT ob_multi_device_sync_config ob_device_get_multi_device_sync_config(con * * @attention The frequency of the user call this function multiplied by the number of frames per trigger should be less than the frame rate of the stream. The * number of frames per trigger can be set by @ref framesPerTrigger. - * @attention For some models,receive and execute the capture command will have a certain delay and performance consumption, so the frequency of calling this + * @attention For some models, receive and execute the capture command will have a certain delay and performance consumption, so the frequency of calling this * function should not be too high, please refer to the product manual for the specific supported frequency. * @attention If the device is not in the @ref OB_MULTI_DEVICE_SYNC_MODE_HARDWARE_TRIGGERING mode, device will ignore the capture command. * diff --git a/orbbec_camera/SDK/include/libobsensor/h/ObTypes.h b/orbbec_camera/SDK/include/libobsensor/h/ObTypes.h index 43be59a3..ab6ae321 100644 --- a/orbbec_camera/SDK/include/libobsensor/h/ObTypes.h +++ b/orbbec_camera/SDK/include/libobsensor/h/ObTypes.h @@ -10,19 +10,21 @@ #include "Export.h" +#include +#include + #pragma pack(push, 1) // struct 1-byte align #ifdef __cplusplus extern "C" { #endif -#include -#include - typedef struct ob_context_t ob_context; typedef struct ob_device_t ob_device; typedef struct ob_device_info_t ob_device_info; typedef struct ob_device_list_t ob_device_list; +typedef struct ob_record_device_t ob_record_device; +typedef struct ob_playback_device_t ob_playback_device; typedef struct ob_camera_param_list_t ob_camera_param_list; typedef struct ob_sensor_t ob_sensor; typedef struct ob_sensor_list_t ob_sensor_list; @@ -183,6 +185,7 @@ typedef enum { OB_PIXEL_DEPTH = 0, // Depth pixel type, the value of the pixel is the distance from the camera to the object OB_PIXEL_DISPARITY = 2, // Disparity for structured light camera OB_PIXEL_RAW_PHASE = 3, // Raw phase for tof camera + OB_PIXEL_TOF_DEPTH = 4, // Depth for tof camera } OBPixelType, ob_pixel_type; @@ -190,7 +193,7 @@ typedef enum { * @brief Enumeration value describing the pixel format */ typedef enum { - OB_FORMAT_UNKNOWN = -1, /*< unknown format */ + OB_FORMAT_UNKNOWN = -1, /**< unknown format */ OB_FORMAT_YUYV = 0, /**< YUYV format */ OB_FORMAT_YUY2 = 1, /**< YUY2 format (the actual format is the same as YUYV) */ OB_FORMAT_UYVY = 2, /**< UYVY format */ @@ -495,6 +498,15 @@ typedef enum { } OBAlignMode, ob_align_mode; +/** + * @brief Camera performance mode + */ +typedef enum { + ADAPTIVE_PERFORMANCE_MODE, /**< Camera adaptive mode */ + HIGH_PERFORMANCE_MODE, /**< High Performance Mode */ +} OBCameraPerformanceMode, + ob_camera_performance_mode; + /** * @brief Rectangle */ @@ -527,6 +539,10 @@ typedef enum { FORMAT_YUYV_TO_BGRA, /**< YUYV to BGRA */ FORMAT_YUYV_TO_Y16, /**< YUYV to Y16 */ FORMAT_YUYV_TO_Y8, /**< YUYV to Y8 */ + FORMAT_RGBA_TO_RGB, /**< RGBA to RGB */ + FORMAT_BGRA_TO_BGR, /**< BGRA to BGR */ + FORMAT_Y16_TO_RGB, /**< Y16 to RGB */ + FORMAT_Y8_TO_RGB, /**< Y8 to RGB */ } OBConvertFormat, ob_convert_format; @@ -714,14 +730,14 @@ typedef struct { double zpps; // zpps=z0/fx float baseline; // baseline length, for monocular camera,it means the distance of laser to the center of IR-CMOS double fx; // focus - uint8_t bitSize; // disparity bit size(raw disp bit size,for example: MX6000 is 12, MX6600 is 14) - float unit; // reference units:unit=10 denote 1cm; unit=1 denote 1mm; unit=0.5 denote 0.5mm; and so on + uint8_t bitSize; // disparity bit size (raw disp bit size, for example: MX6000 is 12, MX6600 is 14) + float unit; // reference units: unit=10 denote 1cm; unit=1 denote 1mm; unit=0.5 denote 0.5mm; and so on float minDisparity; // dual disparity coefficient uint8_t packMode; // data pack mode - float dispOffset; // disparity offset,actual disp=chip disp + disp_offset - int32_t invalidDisp; // invalid disparity,usually is 0,dual IR add a auxiliary value. - int32_t dispIntPlace; // disp integer digits,default is 8,Gemini2 XL is 10 - uint8_t isDualCamera; // 0 monocular camera,1 dual camera + float dispOffset; // disparity offset, actual disp=chip disp + disp_offset + int32_t invalidDisp; // invalid disparity, usually is 0, dual IR add a auxiliary value. + int32_t dispIntPlace; // disp integer digits, default is 8, Gemini2 XL is 10 + uint8_t isDualCamera; // 0 monocular camera, 1 dual camera } OBDisparityParam, ob_disparity_param; /** @@ -826,7 +842,7 @@ typedef enum { /** * @brief Secondary synchronize mode * @brief Secondary device. Both process input trigger signal and output trigger signal to other devices. - * @brief Different sensors in a single devices receive trigger signals respectively:ext trigger -> RGB && ext trigger -> IR/Depth/TOF + * @brief Different sensors in a single devices receive trigger signals respectively: ext trigger -> RGB && ext trigger -> IR/Depth/TOF * * @attention With the current Gemini 2 device set to this mode, each Sensor receives the first external trigger signal * after the stream is turned on and starts timing self-triggering at the set frame rate until the stream is turned off @@ -860,7 +876,7 @@ typedef enum { * @brief Software trigger synchronize mode as secondary device * @brief The slave receives the external trigger signal (the external trigger signal comes from the soft trigger host) and outputs the trigger signal to * the external relay. - * @brief Different sensors in a single machine receive trigger signals respectively:ext trigger -> RGB && ext trigger -> IR/Depth/TOF + * @brief Different sensors in a single machine receive trigger signals respectively: ext trigger -> RGB && ext trigger -> IR/Depth/TOF */ OB_SYNC_MODE_SECONDARY_SOFT_TRIGGER = 0x07, @@ -1295,14 +1311,14 @@ typedef struct { /** * @brief The delay time of the depth image capture after receiving the capture command or trigger signal in microseconds. * - * @attention This parameter is only valid for some models, please refer to the product manual for details. + * @attention This parameter is only valid for some models, please refer to the product manual for details. */ int depthDelayUs; /** * @brief The delay time of the color image capture after receiving the capture command or trigger signal in microseconds. * - * @attention This parameter is only valid for some models, please refer to the product manual for details. + * @attention This parameter is only valid for some models, please refer to the product manual for details. */ int colorDelayUs; @@ -1548,14 +1564,14 @@ typedef enum { /** * @brief Power line frequency - * @brief For anti-flickering, 0:Close, 1: 50Hz, 2: 60Hz, 3: Auto + * @brief For anti-flickering, 0: Close, 1: 50Hz, 2: 60Hz, 3: Auto */ OB_FRAME_METADATA_TYPE_POWER_LINE_FREQUENCY = 15, /** * @brief Low light compensation * - * @attention The low light compensation is a feature inside the device,and can not manually control it. + * @attention The low light compensation is a feature inside the device, and can not manually control it. */ OB_FRAME_METADATA_TYPE_LOW_LIGHT_COMPENSATION = 16, @@ -1678,9 +1694,26 @@ typedef enum { * */ OB_UVC_BACKEND_TYPE_V4L2, + + /** + * @brief Use MSMF backend to access the UVC device + */ + OB_UVC_BACKEND_TYPE_MSMF, } ob_uvc_backend_type, OBUvcBackendType; +/** + * @brief The playback status of the media + */ +typedef enum { + OB_PLAYBACK_UNKNOWN, + OB_PLAYBACK_PLAYING, /**< The media is playing */ + OB_PLAYBACK_PAUSED, /**< The media is paused */ + OB_PLAYBACK_STOPPED, /**< The media is stopped */ + OB_PLAYBACK_COUNT, +} ob_playback_status, + OBPlaybackStatus; + // For compatibility #define OB_FRAME_METADATA_TYPE_LASER_POWER_MODE OB_FRAME_METADATA_TYPE_LASER_POWER_LEVEL #define OB_FRAME_METADATA_TYPE_EMITTER_MODE OB_FRAME_METADATA_TYPE_LASER_STATUS @@ -1787,6 +1820,7 @@ typedef void(ob_frame_destroy_callback)(uint8_t *buffer, void *user_data); */ typedef void(ob_log_callback)(ob_log_severity severity, const char *message, void *user_data); +typedef void (*ob_playback_status_changed_callback)(ob_playback_status status, void *user_data); /** * @brief Check if the sensor_type is a video sensor * diff --git a/orbbec_camera/SDK/include/libobsensor/h/Pipeline.h b/orbbec_camera/SDK/include/libobsensor/h/Pipeline.h index b88f6eac..c670748f 100644 --- a/orbbec_camera/SDK/include/libobsensor/h/Pipeline.h +++ b/orbbec_camera/SDK/include/libobsensor/h/Pipeline.h @@ -205,13 +205,13 @@ OB_EXPORT void ob_config_enable_stream_with_stream_profile(ob_config *config, co * * @attention The stream_type should be a video stream type, such as OB_STREAM_IR, OB_STREAM_COLOR, OB_STREAM_DEPTH, etc. * - * @param config[in] The pipeline configuration object - * @param stream_type[in] The type of the stream to be enabled - * @param width[in] The width of the video stream - * @param height[in] The height of the video stream - * @param fps[in] The frame rate of the video stream - * @param format[in] The format of the video stream - * @param error[out] Pointer to an error object that will be set if an error occurs. + * @param[in] config The pipeline configuration object + * @param[in] stream_type The type of the stream to be enabled + * @param[in] width The width of the video stream + * @param[in] height The height of the video stream + * @param[in] fps The frame rate of the video stream + * @param[in] format The format of the video stream + * @param[out] error Pointer to an error object that will be set if an error occurs. */ OB_EXPORT void ob_config_enable_video_stream(ob_config *config, ob_stream_type stream_type, uint32_t width, uint32_t height, uint32_t fps, ob_format format, ob_error **error); @@ -219,20 +219,20 @@ OB_EXPORT void ob_config_enable_video_stream(ob_config *config, ob_stream_type s /** * @brief Enable accelerometer stream with specified parameters * - * @param config[in] The pipeline configuration object - * @param full_scale_range[in] The full scale range of the accelerometer - * @param sample_rate[in] The sample rate of the accelerometer - * @param error[out] Pointer to an error object that will be set if an error occurs. + * @param[in] config The pipeline configuration object + * @param[in] full_scale_range The full scale range of the accelerometer + * @param[in] sample_rate The sample rate of the accelerometer + * @param[out] error Pointer to an error object that will be set if an error occurs. */ OB_EXPORT void ob_config_enable_accel_stream(ob_config *config, ob_accel_full_scale_range full_scale_range, ob_accel_sample_rate sample_rate, ob_error **error); /** * @brief Enable gyroscope stream with specified parameters * - * @param config[in] The pipeline configuration object - * @param full_scale_range[in] The full scale range of the gyroscope - * @param sample_rate[in] The sample rate of the gyroscope - * @param error[out] Pointer to an error object that will be set if an error occurs. + * @param[in] config The pipeline configuration object + * @param[in] full_scale_range The full scale range of the gyroscope + * @param[in] sample_rate The sample rate of the gyroscope + * @param[out] error Pointer to an error object that will be set if an error occurs. */ OB_EXPORT void ob_config_enable_gyro_stream(ob_config *config, ob_gyro_full_scale_range full_scale_range, ob_gyro_sample_rate sample_rate, ob_error **error); diff --git a/orbbec_camera/SDK/include/libobsensor/h/Property.h b/orbbec_camera/SDK/include/libobsensor/h/Property.h index f34d16c2..bc0a671b 100644 --- a/orbbec_camera/SDK/include/libobsensor/h/Property.h +++ b/orbbec_camera/SDK/include/libobsensor/h/Property.h @@ -306,7 +306,7 @@ typedef enum { OB_PROP_DEPTH_ROTATE_INT = 118, /** - * @brief Get hardware laser power actual level which real state of laser element. OB_PROP_LASER_POWER_LEVEL_CONTROL_INT99)will effect this command + * @brief Get hardware laser power actual level which real state of laser element. OB_PROP_LASER_POWER_LEVEL_CONTROL_INT99 will effect this command * which it setting and changed the hardware laser energy level. */ OB_PROP_LASER_POWER_ACTUAL_LEVEL_INT = 119, @@ -501,6 +501,20 @@ typedef enum { * @brief hardware noise remove filter threshold ,range [0.0 - 1.0] */ OB_PROP_HW_NOISE_REMOVE_FILTER_THRESHOLD_FLOAT = 212, + /** + * @brief soft trigger auto capture enable, use in OB_MULTI_DEVICE_SYNC_MODE_SOFTWARE_TRIGGERING mode + */ + OB_DEVICE_AUTO_CAPTURE_ENABLE_BOOL = 216, + /** + * @brief soft trigger auto capture interval time, use in OB_MULTI_DEVICE_SYNC_MODE_SOFTWARE_TRIGGERING mode + */ + OB_DEVICE_AUTO_CAPTURE_INTERVAL_TIME_INT = 217, + + /** + * @brief PTP time synchronization enable + */ + OB_DEVICE_PTP_CLOCK_SYNC_ENABLE_BOOL = 223, + /** * @brief Baseline calibration parameters */ @@ -553,7 +567,7 @@ typedef enum { /** * @brief Device network static ip config record - * @brief Using for get last static ip config,witch is record in device flash when user set static ip config + * @brief Using for get last static ip config, witch is record in device flash when user set static ip config * * @attention read only */ @@ -800,10 +814,20 @@ typedef enum { */ OB_PROP_NETWORK_BANDWIDTH_TYPE_INT = 3027, + /** + * @brief Switch device performance mode, currently available in Adaptive Mode and High Performance Mode, such as G335LE. + */ + OB_PROP_DEVICE_PERFORMANCE_MODE_INT = 3028, + /** * @brief Calibration JSON file read from device (Femto Mega, read only) */ OB_RAW_DATA_CAMERA_CALIB_JSON_FILE = 4029, + + /** + * @brief Confidence degree + */ + OB_PROP_DEBUG_ESGM_CONFIDENCE_FLOAT = 5013, } OBPropertyID, ob_property_id; diff --git a/orbbec_camera/SDK/include/libobsensor/h/RecordPlayback.h b/orbbec_camera/SDK/include/libobsensor/h/RecordPlayback.h new file mode 100644 index 00000000..7b93ff32 --- /dev/null +++ b/orbbec_camera/SDK/include/libobsensor/h/RecordPlayback.h @@ -0,0 +1,135 @@ +// Copyright (c) Orbbec Inc. All Rights Reserved. +// Licensed under the MIT License. + +/** + * @file RecordPlayback.hpp + * @brief Record and playback device-related types, including interfaces to create recording and playback devices, + record and playback streaming data, etc. + */ + +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#include "Device.h" + +/** + * @brief Create a recording device for the specified device with a specified file path and compression enabled. + * + * @param[in] device The device to record. + * @param[in] file_path The file path to record to. + * @param[in] compression_enabled Whether to enable compression for the recording. + * @param[out] error Pointer to an error object that will be set if an error occurs. + * @return A pointer to the newly created recording device, or NULL if an error occurred. + */ +OB_EXPORT ob_record_device *ob_create_record_device(ob_device *device, const char *file_path, bool compression_enabled, ob_error **error); + +/** + * @brief Delete a recording device. + * + * @param[in] recorder The recording device to delete. + * @param[out] error Pointer to an error object that will be set if an error occurs. + */ +OB_EXPORT void ob_delete_record_device(ob_record_device *recorder, ob_error **error); + +/** + * @brief Pause recording on the specified recording device. + * + * @param[in] recorder The recording device to pause. + * @param[out] error Pointer to an error object that will be set if an error occurs. + */ +OB_EXPORT void ob_record_device_pause(ob_record_device *recorder, ob_error **error); + +/** + * @brief Resume recording on the specified recording device. + * + * @param[in] recorder The recording device to resume. + * @param[out] error Pointer to an error object that will be set if an error occurs. + */ +OB_EXPORT void ob_record_device_resume(ob_record_device *recorder, ob_error **error); + +/** + * @brief Create a playback device for the specified file path. + * + * @param[in] file_path The file path to playback from. + * @param[out] error Pointer to an error object that will be set if an error occurs. + * @return A pointer to the newly created playback device, or NULL if an error occurred. + */ +OB_EXPORT ob_device *ob_create_playback_device(const char *file_path, ob_error **error); + +/** + * @brief Pause playback on the specified playback device. + * + * @param[in] player The playback device to pause. + * @param[out] error Pointer to an error object that will be set if an error occurs. + */ +OB_EXPORT void ob_playback_device_pause(ob_device *player, ob_error **error); + +/** + * @brief Resume playback on the specified playback device. + * + * @param[in] player The playback device to resume. + * @param[out] error Pointer to an error object that will be set if an error occurs. + */ +OB_EXPORT void ob_playback_device_resume(ob_device *player, ob_error **error); + +/** + * @brief Set the playback to a specified time point of the played data. + * + * @param[in] player The playback device to set the position for. + * @param[in] timestamp The position to set the playback to, in milliseconds. + * @param[out] error Pointer to an error object that will be set if an error occurs. + */ +OB_EXPORT void ob_playback_device_seek(ob_device *player, const uint64_t timestamp, ob_error **error); + +/** + * @brief Set the playback to a specified time point of the played data. + * + * @param[in] player The playback device to set the position for. + * @param[in] rate The playback rate to set. + * @param[out] error Pointer to an error object that will be set if an error occurs. + */ +OB_EXPORT void ob_playback_device_set_playback_rate(ob_device *player, const float rate, ob_error **error); + +/** + * @brief Get the current playback status of the played data. + * + * @param[in] player The playback device to get the status for. + * @param[out] error Pointer to an error object that will be set if an error occurs. + * @return The current playback status of the played data. + */ +OB_EXPORT ob_playback_status ob_playback_device_get_current_playback_status(ob_device *player, ob_error **error); + +/** + * @brief Set a callback function to receive playback status updates. + * + * @param[in] player The playback device to set the callback for. + * @param[in] callback The callback function to receive playback status updates. + * @param[out] error Pointer to an error object that will be set if an error occurs. + */ +OB_EXPORT void ob_playback_device_set_playback_status_changed_callback(ob_device *player, ob_playback_status_changed_callback callback, void *user_data, + ob_error **error); + +/** + * @brief Get the current playback position of the played data. + * + * @param[in] player The playback device to get the position for. + * @param[out] error Pointer to an error object that will be set if an error occurs. + * @return The current playback position of the played data, in milliseconds. + */ +OB_EXPORT uint64_t ob_playback_device_get_position(ob_device *player, ob_error **error); + +/** + * @brief Get the duration of the played data. + * + * @param[in] player The playback device to get the duration for. + * @param[out] error Pointer to an error object that will be set if an error occurs. + * @return The duration of the played data, in milliseconds. + */ +OB_EXPORT uint64_t ob_playback_device_get_duration(ob_device *player, ob_error **error); + +#ifdef __cplusplus +} // extern "C" +#endif \ No newline at end of file diff --git a/orbbec_camera/SDK/include/libobsensor/h/StreamProfile.h b/orbbec_camera/SDK/include/libobsensor/h/StreamProfile.h index dfb72037..98e5ad19 100644 --- a/orbbec_camera/SDK/include/libobsensor/h/StreamProfile.h +++ b/orbbec_camera/SDK/include/libobsensor/h/StreamProfile.h @@ -134,13 +134,23 @@ OB_EXPORT ob_extrinsic ob_stream_profile_get_extrinsic_to(const ob_stream_profil /** * @brief Set the extrinsic for source stream to target stream * - * @param[in] profile Stream profile object + * @param[in] source Stream profile object * @param[in] target Target stream type * @param[in] extrinsic The extrinsic * @param[out] error Pointer to an error object that will be set if an error occurs. */ OB_EXPORT void ob_stream_profile_set_extrinsic_to(ob_stream_profile *source, const ob_stream_profile *target, ob_extrinsic extrinsic, ob_error **error); +/** + * @brief Set the extrinsic for source stream to target stream type + * + * @param[in] source Source stream profile + * @param[in] type Target stream type + * @param[out] error Pointer to an error object that will be set if an error occurs. + * @return ob_extrinsic The extrinsic + */ +OB_EXPORT void ob_stream_profile_set_extrinsic_to_type(ob_stream_profile *source, const ob_stream_type type, ob_extrinsic extrinsic, ob_error **error); + /** * @brief Get the frame rate of the video stream * @@ -235,7 +245,7 @@ OB_EXPORT ob_disparity_param ob_disparity_based_stream_profile_get_disparity_par * @brief Set the disparity process param of the disparity stream. * * @param[in] profile Stream profile object. If the profile is not for the disparity stream, an error will be returned. - * @param[in] intrinsic The disparity process param of the disparity stream. + * @param[in] param The disparity process param of the disparity stream. * @param[out] error Pointer to an error object that will be set if an error occurs. */ OB_EXPORT void ob_disparity_based_stream_profile_set_disparity_param(ob_stream_profile *profile, ob_disparity_param param, ob_error **error); diff --git a/orbbec_camera/SDK/include/libobsensor/h/Utils.h b/orbbec_camera/SDK/include/libobsensor/h/Utils.h index 043c084a..90f39453 100644 --- a/orbbec_camera/SDK/include/libobsensor/h/Utils.h +++ b/orbbec_camera/SDK/include/libobsensor/h/Utils.h @@ -19,25 +19,22 @@ extern "C" { * * @return bool Transform result */ -OB_EXPORT bool ob_transformation_3d_to_3d(const OBPoint3f source_point3f, OBExtrinsic extrinsic, OBPoint3f *target_point3f, ob_error **error) ; - +OB_EXPORT bool ob_transformation_3d_to_3d(const OBPoint3f source_point3f, OBExtrinsic extrinsic, OBPoint3f *target_point3f, ob_error **error); /** * @brief Transform a 2d pixel coordinate with an associated depth value of the source camera into a 3d point of the target coordinate system. * - * @param[in] source_intrinsic Source intrinsic parameters - * @param[in] source_distortion Source distortion parameters * @param[in] source_point2f Source 2d point value * @param[in] source_depth_pixel_value The depth of sourcePoint2f in millimeters + * @param[in] source_intrinsic Source intrinsic parameters * @param[in] extrinsic Transformation matrix from source to target * @param[out] target_point3f Target 3d point value * @param[out] error Pointer to an error object that will be set if an error occurs. * * @return bool Transform result */ -OB_EXPORT bool ob_transformation_2d_to_3d(const OBPoint2f source_point2f, const float source_depth_pixel_value, const OBCameraIntrinsic source_intrinsic, - OBExtrinsic extrinsic, OBPoint3f *target_point3f, ob_error **error); - +OB_EXPORT bool ob_transformation_2d_to_3d(const OBPoint2f source_point2f, const float source_depth_pixel_value, const OBCameraIntrinsic source_intrinsic, + OBExtrinsic extrinsic, OBPoint3f *target_point3f, ob_error **error); /** * @brief Transform a 3d point of a source coordinate system into a 2d pixel coordinate of the target camera. @@ -69,46 +66,59 @@ OB_EXPORT bool ob_transformation_3d_to_2d(const OBPoint3f source_point3f, const * * @return bool Transform result */ -OB_EXPORT bool ob_transformation_2d_to_2d(const OBPoint2f source_point2f, const float source_depth_pixel_value, const OBCameraIntrinsic source_intrinsic, - const OBCameraDistortion source_distortion, const OBCameraIntrinsic target_intrinsic, const OBCameraDistortion target_distortion, - OBExtrinsic extrinsic, OBPoint2f *target_point2f, ob_error **error); +OB_EXPORT bool ob_transformation_2d_to_2d(const OBPoint2f source_point2f, const float source_depth_pixel_value, const OBCameraIntrinsic source_intrinsic, + const OBCameraDistortion source_distortion, const OBCameraIntrinsic target_intrinsic, + const OBCameraDistortion target_distortion, OBExtrinsic extrinsic, OBPoint2f *target_point2f, ob_error **error); -// \deprecated This function is deprecated and will be removed in a future version. +// \deprecated This function is deprecated and will be removed in a future version. OB_EXPORT ob_frame *transformation_depth_frame_to_color_camera(ob_device *device, ob_frame *depth_frame, uint32_t target_color_camera_width, - uint32_t target_color_camera_height, ob_error **error); + uint32_t target_color_camera_height, ob_error **error); -// \deprecated This function is deprecated and will be removed in a future version. +// \deprecated This function is deprecated and will be removed in a future version. OB_EXPORT bool transformation_init_xy_tables(const ob_calibration_param calibration_param, const ob_sensor_type sensor_type, float *data, uint32_t *data_size, - ob_xy_tables *xy_tables, ob_error **error); + ob_xy_tables *xy_tables, ob_error **error); -// \deprecated This function is deprecated and will be removed in a future version. +// \deprecated This function is deprecated and will be removed in a future version. OB_EXPORT void transformation_depth_to_pointcloud(ob_xy_tables *xy_tables, const void *depth_image_data, void *pointcloud_data, ob_error **error); -// \deprecated This function is deprecated and will be removed in a future version. -OB_EXPORT void transformation_depth_to_rgbd_pointcloud(ob_xy_tables *xy_tables, const void *depth_image_data, const void *color_image_data, void *pointcloud_data, - ob_error **error); +// \deprecated This function is deprecated and will be removed in a future version. +OB_EXPORT void transformation_depth_to_rgbd_pointcloud(ob_xy_tables *xy_tables, const void *depth_image_data, const void *color_image_data, + void *pointcloud_data, ob_error **error); -// \deprecated This function is deprecated and will be removed in a future version. +// \deprecated This function is deprecated and will be removed in a future version. // Use the ob_transformation_3d_to_3d instead. OB_EXPORT bool ob_calibration_3d_to_3d(const ob_calibration_param calibration_param, const ob_point3f source_point3f, const ob_sensor_type source_sensor_type, - const ob_sensor_type target_sensor_type, ob_point3f *target_point3f, ob_error **error); + const ob_sensor_type target_sensor_type, ob_point3f *target_point3f, ob_error **error); -// \deprecated This function is deprecated and will be removed in a future version. +// \deprecated This function is deprecated and will be removed in a future version. // Use the ob_transformation_2d_to_3d instead. OB_EXPORT bool ob_calibration_2d_to_3d(const ob_calibration_param calibration_param, const ob_point2f source_point2f, const float source_depth_pixel_value, - const ob_sensor_type source_sensor_type, const ob_sensor_type target_sensor_type, ob_point3f *target_point3f, ob_error **error); + const ob_sensor_type source_sensor_type, const ob_sensor_type target_sensor_type, ob_point3f *target_point3f, + ob_error **error); -// \deprecated This function is deprecated and will be removed in a future version. +// \deprecated This function is deprecated and will be removed in a future version. // Use the ob_transformation_3d_to_2d instead. OB_EXPORT bool ob_calibration_3d_to_2d(const ob_calibration_param calibration_param, const ob_point3f source_point3f, const ob_sensor_type source_sensor_type, - const ob_sensor_type target_sensor_type, ob_point2f *target_point2f, ob_error **error); + const ob_sensor_type target_sensor_type, ob_point2f *target_point2f, ob_error **error); -// \deprecated This function is deprecated and will be removed in a future version. +// \deprecated This function is deprecated and will be removed in a future version. // Use the ob_transformation_2d_to_2d instead. OB_EXPORT bool ob_calibration_2d_to_2d(const ob_calibration_param calibration_param, const ob_point2f source_point2f, const float source_depth_pixel_value, - const ob_sensor_type source_sensor_type, const ob_sensor_type target_sensor_type, ob_point2f *target_point2f, ob_error **error); - - + const ob_sensor_type source_sensor_type, const ob_sensor_type target_sensor_type, ob_point2f *target_point2f, + ob_error **error); +/** + * @brief save point cloud to ply file. + * + * @param[in] file_name Point cloud save path + * @param[in] frame Point cloud frame + * @param[in] save_binary Binary or textual,true: binary, false: textual + * @param[in] use_mesh Save mesh or not, true: save as mesh, false: not save as mesh + * @param[in] mesh_threshold Distance threshold for creating faces in point cloud,default value :50 + * @param[out] error Pointer to an error object that will be set if an error occurs. + * + * @return bool save point cloud result + */ +OB_EXPORT bool ob_save_pointcloud_to_ply(const char *file_name, ob_frame *frame, bool save_binary, bool use_mesh, float mesh_threshold, ob_error **error); #ifdef __cplusplus } #endif diff --git a/orbbec_camera/SDK/include/libobsensor/hpp/Context.hpp b/orbbec_camera/SDK/include/libobsensor/hpp/Context.hpp index 82eb0da8..259b5209 100644 --- a/orbbec_camera/SDK/include/libobsensor/hpp/Context.hpp +++ b/orbbec_camera/SDK/include/libobsensor/hpp/Context.hpp @@ -101,7 +101,7 @@ public: * @brief Creates a network device with the specified IP address and port. * * @param[in] address The IP address, ipv4 only. such as "192.168.1.10" - * @param[in] port The port number, currently only support 8090 + * @param[in] port The port number, currently only support 8090 * @return std::shared_ptr The created device object. */ std::shared_ptr createNetDevice(const char *address, uint16_t port) const { @@ -127,7 +127,7 @@ public: /** * @brief Activates device clock synchronization to synchronize the clock of the host and all created devices (if supported). * - * @param repeatInterval The interval for auto-repeated synchronization, in milliseconds. If the value is 0, synchronization is performed only once. + * @param repeatIntervalMsec The interval for auto-repeated synchronization, in milliseconds. If the value is 0, synchronization is performed only once. */ void enableDeviceClockSync(uint64_t repeatIntervalMsec) const { ob_error *error = nullptr; @@ -146,12 +146,12 @@ public: } /** - * @brief For linux, there are two ways to enable the UVC backend: libuvc and libusb. This function is used to set the backend type. + * @brief For linux, there are two ways to enable the UVC backend: libuvc and v4l2. This function is used to set the backend type. * @brief It is effective when the new device is created. * * @attention This interface is only available for Linux. * - * @param[in] backend_type The backend type to be used. + * @param[in] type The backend type to be used. */ void setUvcBackendType(OBUvcBackendType type) const { ob_error *error = nullptr; @@ -202,7 +202,7 @@ public: * @param callback The callback function. */ static void setLoggerToCallback(OBLogSeverity severity, LogCallback callback) { - ob_error *error = nullptr; + ob_error *error = nullptr; Context::getLogCallback() = callback; ob_set_logger_to_callback(severity, &Context::logCallback, &Context::getLogCallback(), &error); Error::handle(&error); @@ -210,7 +210,7 @@ public: /** * @brief Set the extensions directory - * @brief The extensions directory is used to search for dynamic libraries that provide additional functionality to the SDK, such as the Frame filters. + * @brief The extensions directory is used to search for dynamic libraries that provide additional functionality to the SDK, such as the Frame filters. * * @attention Should be called before creating the context and pipeline, otherwise the default extensions directory (./extensions) will be used. * @@ -240,7 +240,7 @@ private: } // Lazy initialization of the logcallback_. The purpose is to initialize logcallback_ in .hpp - static LogCallback& getLogCallback() { + static LogCallback &getLogCallback() { static LogCallback logCallback_ = nullptr; return logCallback_; } @@ -249,4 +249,3 @@ private: #define enableMultiDeviceSync enableDeviceClockSync }; } // namespace ob - diff --git a/orbbec_camera/SDK/include/libobsensor/hpp/Device.hpp b/orbbec_camera/SDK/include/libobsensor/hpp/Device.hpp index f831a30e..d3aa4637 100644 --- a/orbbec_camera/SDK/include/libobsensor/hpp/Device.hpp +++ b/orbbec_camera/SDK/include/libobsensor/hpp/Device.hpp @@ -292,6 +292,30 @@ public: Error::handle(&error); } + /** + * @brief Set the customer data type of a device property + * + * @param data The data to set + * @param dataSize The size of the data to set,the maximum length cannot exceed 65532 bytes. + */ + void writeCustomerData(const void *data, uint32_t dataSize) { + ob_error *error = nullptr; + ob_device_write_customer_data(impl_, data, dataSize, &error); + Error::handle(&error); + } + + /** + * @brief Get the customer data type of a device property + * + * @param data The property data obtained + * @param dataSize The size of the data obtained + */ + void readCustomerData(void *data, uint32_t *dataSize) { + ob_error *error = nullptr; + ob_device_read_customer_data(impl_, data, dataSize, &error); + Error::handle(&error); + } + /** * @brief Get the number of properties supported by the device * @@ -491,7 +515,7 @@ public: * Please delete the object directly and obtain it again after the device is reconnected. * Support devices: Gemini2 L * - * @param[in] delayMs Time unit:ms。delayMs == 0:No delay;delayMs > 0, Delay millisecond connect to host device after reboot + * @param[in] delayMs Time unit: ms. delayMs == 0: No delay; delayMs > 0, Delay millisecond connect to host device after reboot */ void reboot(uint32_t delayMs) const { setIntProperty(OB_PROP_DEVICE_REBOOT_DELAY_INT, delayMs); @@ -564,7 +588,7 @@ public: * * @attention The frequency of the user call this function multiplied by the number of frames per trigger should be less than the frame rate of the stream. * The number of frames per trigger can be set by @ref framesPerTrigger. - * @attention For some models,receive and execute the capture command will have a certain delay and performance consumption, so the frequency of calling + * @attention For some models, receive and execute the capture command will have a certain delay and performance consumption, so the frequency of calling * this function should not be too high, please refer to the product manual for the specific supported frequency. * @attention If the device is not in the @ref OB_MULTI_DEVICE_SYNC_MODE_HARDWARE_TRIGGERING mode, device will ignore the capture command. */ @@ -755,7 +779,7 @@ public: * @param[in] sendData The data to be sent to the device. * @param[in] sendDataSize The size of the data to be sent to the device. * @param[out] receiveData The data received from the device. - * @param[in out] receiveDataSize The requeseted size of the data received from the device, and the actual size of the data received from the device. + * @param[in,out] receiveDataSize The requeseted size of the data received from the device, and the actual size of the data received from the device. */ void sendAndReceiveData(const uint8_t *sendData, uint32_t sendDataSize, uint8_t *receiveData, uint32_t *receiveDataSize) const { ob_error *error = nullptr; @@ -919,7 +943,7 @@ public: /** * @brief Get the connection type of the device * - * @return const char* the connection type of the device,currently supports:"USB", "USB1.0", "USB1.1", "USB2.0", "USB2.1", "USB3.0", "USB3.1", + * @return const char* the connection type of the device, currently supports: "USB", "USB1.0", "USB1.1", "USB2.0", "USB2.1", "USB3.0", "USB3.1", * "USB3.2", "Ethernet" */ const char *getConnectionType() const { @@ -1141,7 +1165,7 @@ public: * @brief Get device connection type * * @param index device index - * @return const char* returns connection type,currently supports:"USB", "USB1.0", "USB1.1", "USB2.0", "USB2.1", "USB3.0", "USB3.1", "USB3.2", "Ethernet" + * @return const char* returns connection type, currently supports: "USB", "USB1.0", "USB1.1", "USB2.0", "USB2.1", "USB3.0", "USB3.1", "USB3.2", "Ethernet" */ const char *getConnectionType(uint32_t index) const { ob_error *error = nullptr; @@ -1165,6 +1189,21 @@ public: return ip; } + /** + * @brief get the local mac address of the device at the specified index + * + * @attention Only valid for network devices, otherwise it will return "0:0:0:0:0:0". + * + * @param index the index of the device + * @return const char* the local mac address of the device + */ + const char *getLocalMacAddress(uint32_t index) const { + ob_error *error = nullptr; + auto mac = ob_device_list_get_device_local_mac(impl_, index, &error); + Error::handle(&error); + return mac; + } + /** * @brief Get the device object at the specified index * @@ -1200,7 +1239,7 @@ public: * @brief On Linux platform, for usb device, the uid of the device is composed of bus-port-dev, for example 1-1.2-1. But the SDK will remove the dev number * and only keep the bus-port as the uid to create the device, for example 1-1.2, so that we can create a device connected to the specified USB port. * Similarly, users can also directly pass in bus-port as uid to create device. - * @brief For GMSL device,the uid is GMSL port with “gmsl2-” prefix, for example gmsl2-1. + * @brief For GMSL device, the uid is GMSL port with "gmsl2-" prefix, for example gmsl2-1. * * @attention If the device has been acquired and created elsewhere, repeated acquisition will throw an exception * @@ -1379,9 +1418,9 @@ public: } /** - * @brief Get the number of device presets in the list + * @brief Get the number of camera parameters in the list. * - * @return uint32_t the number of device presets in the list + * @return uint32_t the number of camera parameters in the list. */ uint32_t getCount() { ob_error *error = nullptr; diff --git a/orbbec_camera/SDK/include/libobsensor/hpp/Error.hpp b/orbbec_camera/SDK/include/libobsensor/hpp/Error.hpp index c284360b..d0c099a7 100644 --- a/orbbec_camera/SDK/include/libobsensor/hpp/Error.hpp +++ b/orbbec_camera/SDK/include/libobsensor/hpp/Error.hpp @@ -22,10 +22,12 @@ private: * * @attention This constructor should not be called directly, use the handle() function instead. * - * @param error + * @param error The ob_error object */ explicit Error(ob_error *error) : impl_(error) {}; + Error& operator=(const Error&) = default; + public: /** * @brief A static function to handle the ob_error and throw an exception if needed. diff --git a/orbbec_camera/SDK/include/libobsensor/hpp/Filter.hpp b/orbbec_camera/SDK/include/libobsensor/hpp/Filter.hpp index 88afc1f7..c6d7f70e 100644 --- a/orbbec_camera/SDK/include/libobsensor/hpp/Filter.hpp +++ b/orbbec_camera/SDK/include/libobsensor/hpp/Filter.hpp @@ -311,7 +311,7 @@ public: * @brief Some private filters require an activation key to be activated, its depends on the vendor of the filter. * * @param name The name of the filter. - * @param activation_key The activation key of the filter. + * @param activationKey The activation key of the filter. */ static std::shared_ptr createPrivateFilter(const std::string &name, const std::string &activationKey) { ob_error *error = nullptr; @@ -352,7 +352,7 @@ public: /** * @brief Set the output pointcloud frame format. * - * @param type The point cloud frame format: OB_FORMAT_POINT or OB_FORMAT_RGB_POINT + * @param format The point cloud frame format: OB_FORMAT_POINT or OB_FORMAT_RGB_POINT */ void setCreatePointFormat(OBFormat format) { setConfigValue("pointFormat", static_cast(format)); @@ -534,7 +534,7 @@ public: /** * @brief Set the sequenceId filter params. * - * @param sequence id to pass the filter. + * @param sequence_id id to pass the filter. */ void selectSequenceId(int sequence_id) { setConfigValue("sequenceid", static_cast(sequence_id)); @@ -580,7 +580,7 @@ public: /** * @brief Set the decimation filter scale value. * - * @param type The decimation filter scale value. + * @param value The decimation filter scale value. */ void setScaleValue(uint8_t value) { setConfigValue("decimate", static_cast(value)); @@ -796,7 +796,6 @@ public: /** * @brief Set the HoleFillingFilter mode. * - * @param[in] filter A holefilling_filter object. * @param mode OBHoleFillingMode, OB_HOLE_FILL_TOP,OB_HOLE_FILL_NEAREST or OB_HOLE_FILL_FAREST. */ void setFilterMode(OBHoleFillingMode mode) { @@ -830,7 +829,7 @@ public: /** * @brief Set the noise removal filter params. * - * @param[in] params ob_noise_removal_filter_params. + * @param[in] filterParams ob_noise_removal_filter_params. */ void setFilterParams(OBNoiseRemovalFilterParams filterParams) { setConfigValue("max_size", static_cast(filterParams.max_size)); diff --git a/orbbec_camera/SDK/include/libobsensor/hpp/Frame.hpp b/orbbec_camera/SDK/include/libobsensor/hpp/Frame.hpp index 41b55d4c..ea5a8763 100644 --- a/orbbec_camera/SDK/include/libobsensor/hpp/Frame.hpp +++ b/orbbec_camera/SDK/include/libobsensor/hpp/Frame.hpp @@ -18,7 +18,7 @@ #include /** - * Frame classis inheritance hierarchy: + * Frame classis inheritance hierarchy: * Frame * | * +-----------+----------+----------+-----------+ @@ -181,7 +181,7 @@ public: /** * @brief Get the global timestamp of the frame in microseconds. - * @brief The global timestamp is the time point when the frame was was captured by the device, and has been converted to the host clock domain. The + * @brief The global timestamp is the time point when the frame was captured by the device, and has been converted to the host clock domain. The * conversion process base on the device timestamp and can eliminate the timer drift of the device * * @attention The global timestamp disable by default. If global timestamp is not enabled, the function will return 0. To enable the global timestamp, @@ -593,6 +593,33 @@ public: return scale; } + /** + * @brief Get the width of the frame. + * + * @return uint32_t The width of the frame. + */ + uint32_t getWidth() const { + ob_error *error = nullptr; + // TODO + auto width = ob_point_cloud_frame_get_width(impl_, &error); + Error::handle(&error); + + return width; + } + + /** + * @brief Get the height of the frame. + * + * @return uint32_t The height of the frame. + */ + uint32_t getHeight() const { + ob_error *error = nullptr; + auto height = ob_point_cloud_frame_get_height(impl_, &error); + Error::handle(&error); + + return height; + } + public: // The following interfaces are deprecated and are retained here for compatibility purposes. #define getPositionValueScale getCoordinateValueScale @@ -902,11 +929,11 @@ public: * @attention The buffer is owned by the caller, and will not be destroyed by the frame object. The user should ensure that the buffer is valid and not * modified. * - * @param[in] frame_type Frame object type. + * @param[in] frameType Frame object type. * @param[in] format Frame object format. * @param[in] buffer Frame object buffer. - * @param[in] buffer_size Frame object buffer size. * @param[in] destroyCallback Destroy callback, will be called when the frame object is destroyed. + * @param[in] bufferSize Frame object buffer size. * * @return std::shared_ptr The created frame object. */ @@ -957,7 +984,7 @@ private: static void BufferDestroy(uint8_t *buffer, void *context) { auto *ctx = static_cast(context); - if (ctx->callback) { + if(ctx->callback) { ctx->callback(buffer); } delete ctx; diff --git a/orbbec_camera/SDK/include/libobsensor/hpp/Pipeline.hpp b/orbbec_camera/SDK/include/libobsensor/hpp/Pipeline.hpp index 28936bda..61009f1f 100644 --- a/orbbec_camera/SDK/include/libobsensor/hpp/Pipeline.hpp +++ b/orbbec_camera/SDK/include/libobsensor/hpp/Pipeline.hpp @@ -95,7 +95,7 @@ public: * If no parameters are specified, the stream will be enabled with default resolution settings. * Users who wish to set custom resolutions should refer to the product manual, as available resolutions vary by camera model. * - * @param type The video stream type. + * @param streamType The video stream type. * @param width The video stream width (default is OB_WIDTH_ANY, which selects the default resolution). * @param height The video stream height (default is OB_HEIGHT_ANY, which selects the default resolution). * @param fps The video stream frame rate (default is OB_FPS_ANY, which selects the default frame rate). @@ -182,7 +182,7 @@ public: * @brief Disable a sensor stream to be used in the pipeline. * @brief Will convert sensor type to stream type automatically. * - * @param sensorType + * @param sensorType The sensor configuration to be disabled */ void disableStream(OBSensorType sensorType) const { auto streamType = ob::TypeHelper::convertSensorTypeToStreamType(sensorType); @@ -346,7 +346,7 @@ public: /** * @brief Wait for frameset * - * @param timeout_ms The waiting timeout in milliseconds + * @param timeoutMs The waiting timeout in milliseconds * @return std::shared_ptr The waiting frameset data */ std::shared_ptr waitForFrameset(uint32_t timeoutMs = 1000) const { diff --git a/orbbec_camera/SDK/include/libobsensor/hpp/RecordPlayback.hpp b/orbbec_camera/SDK/include/libobsensor/hpp/RecordPlayback.hpp new file mode 100644 index 00000000..37bea9c6 --- /dev/null +++ b/orbbec_camera/SDK/include/libobsensor/hpp/RecordPlayback.hpp @@ -0,0 +1,188 @@ +// Copyright (c) Orbbec Inc. All Rights Reserved. +// Licensed under the MIT License. + +/** + * @file RecordPlayback.hpp + * @brief Record and playback device-related types, including interfaces to create recording and playback devices, + record and playback streaming data, etc. + */ + +#pragma once + +#include "Types.hpp" +#include "Error.hpp" +#include "libobsensor/h/RecordPlayback.h" +#include "libobsensor/hpp/Device.hpp" + +namespace ob { + +typedef std::function PlaybackStatusChangeCallback; + +class RecordDevice { +private: + ob_record_device_t *impl_; + +public: + explicit RecordDevice(std::shared_ptr device, const std::string &file, bool compressionEnabled = true) { + ob_error *error = nullptr; + impl_ = ob_create_record_device(device->getImpl(), file.c_str(), compressionEnabled, &error); + Error::handle(&error); + } + + virtual ~RecordDevice() noexcept { + ob_error *error = nullptr; + ob_delete_record_device(impl_, &error); + Error::handle(&error, false); + } + + RecordDevice(RecordDevice &&other) { + if(this != &other) { + impl_ = other.impl_; + other.impl_ = nullptr; + } + } + + RecordDevice &operator=(RecordDevice &&other) { + if(this != &other) { + impl_ = other.impl_; + other.impl_ = nullptr; + } + + return *this; + } + + RecordDevice(const RecordDevice &) = delete; + RecordDevice &operator=(const RecordDevice &) = delete; + +public: + void pause() { + ob_error *error = nullptr; + ob_record_device_pause(impl_, &error); + Error::handle(&error); + } + + void resume() { + ob_error *error = nullptr; + ob_record_device_resume(impl_, &error); + Error::handle(&error); + } +}; + +class PlaybackDevice : public Device { +public: + explicit PlaybackDevice(const std::string &file) : Device(nullptr) { + ob_error *error = nullptr; + impl_ = ob_create_playback_device(file.c_str(), &error); + Error::handle(&error); + } + + virtual ~PlaybackDevice() noexcept = default; + + PlaybackDevice(PlaybackDevice &&other) : Device(std::move(other)) {} + + PlaybackDevice &operator=(PlaybackDevice &&other) { + Device::operator=(std::move(other)); + return *this; + } + + PlaybackDevice(const PlaybackDevice &) = delete; + PlaybackDevice &operator=(const PlaybackDevice &) = delete; + +public: + /** + * @brief Pause the streaming data from the playback device. + */ + void pause() { + ob_error *error = nullptr; + ob_playback_device_pause(impl_, &error); + Error::handle(&error); + } + + /** + * @brief Resume the streaming data from the playback device. + */ + void resume() { + ob_error *error = nullptr; + ob_playback_device_resume(impl_, &error); + Error::handle(&error); + } + + /** + * @brief Seek to a specific timestamp when playing back a recording. + * @param[in] timestamp The timestamp to seek to, in milliseconds. + */ + void seek(const int64_t timestamp) { + ob_error *error = nullptr; + ob_playback_device_seek(impl_, timestamp, &error); + Error::handle(&error); + } + + /** + * @brief Set the playback rate of the playback device. + * @param[in] rate The playback rate to set. + */ + void setPlaybackRate(const float rate) { + ob_error *error = nullptr; + ob_playback_device_set_playback_rate(impl_, rate, &error); + Error::handle(&error); + } + + /** + * @brief Set a callback function to be called when the playback status changes. + * @param[in] callback The callback function to set. + */ + void setPlaybackStatusChangeCallback(PlaybackStatusChangeCallback callback) { + callback_ = callback; + ob_error *error = nullptr; + ob_playback_device_set_playback_status_changed_callback(impl_, &PlaybackDevice::playbackStatusCallback, this, &error); + Error::handle(&error); + } + + /** + * @brief Get the current playback status of the playback device. + * @return The current playback status. + */ + OBPlaybackStatus getPlaybackStatus() const { + ob_error *error = nullptr; + OBPlaybackStatus status = ob_playback_device_get_current_playback_status(impl_, &error); + Error::handle(&error); + + return status; + } + + /** + * @brief Get the current position of the playback device. + * @return The current position of the playback device, in milliseconds. + */ + uint64_t getPosition() const { + ob_error *error = nullptr; + uint64_t position = ob_playback_device_get_position(impl_, &error); + Error::handle(&error); + + return position; + } + + /** + * @brief Get the duration of the playback device. + * @return The duration of the playback device, in milliseconds. + */ + uint64_t getDuration() const { + ob_error *error = nullptr; + uint64_t duration = ob_playback_device_get_duration(impl_, &error); + Error::handle(&error); + + return duration; + } + +private: + static void playbackStatusCallback(OBPlaybackStatus status, void *userData) { + auto *playbackDevice = static_cast(userData); + if(playbackDevice && playbackDevice->callback_) { + playbackDevice->callback_(status); + } + } + +private: + PlaybackStatusChangeCallback callback_; +}; +} // namespace ob \ No newline at end of file diff --git a/orbbec_camera/SDK/include/libobsensor/hpp/StreamProfile.hpp b/orbbec_camera/SDK/include/libobsensor/hpp/StreamProfile.hpp index 3c8a1142..84528507 100644 --- a/orbbec_camera/SDK/include/libobsensor/hpp/StreamProfile.hpp +++ b/orbbec_camera/SDK/include/libobsensor/hpp/StreamProfile.hpp @@ -51,9 +51,9 @@ public: } /** - * @brief Get the format of the stream + * @brief Get the format of the stream. * - * @return OBFormat return the format of the stream + * @return OBFormat return the format of the stream. */ OBFormat getFormat() const { ob_error *error = nullptr; @@ -63,9 +63,9 @@ public: } /** - * @brief Get the type of stream + * @brief Get the type of stream. * - * @return OBStreamType return the type of the stream + * @return OBStreamType return the type of the stream. */ OBStreamType getType() const { ob_error *error = nullptr; @@ -75,7 +75,7 @@ public: } /** - * @brief Get the extrinsic parameters from current stream profile to the given target stream profile + * @brief Get the extrinsic parameters from current stream profile to the given target stream profile. * * @return OBExtrinsic Return the extrinsic parameters. */ @@ -87,17 +87,41 @@ public: } /** - * @brief Check if frame object is compatible with the given type + * @brief Set the extrinsic parameters from current stream profile to the given target stream profile. + * + * @tparam target Target stream profile. + * @tparam extrinsic The extrinsic. + */ + void bindExtrinsicTo(std::shared_ptr target, const OBExtrinsic &extrinsic) { + ob_error *error = nullptr; + ob_stream_profile_set_extrinsic_to(const_cast(impl_), const_cast(target->getImpl()), extrinsic, &error); + Error::handle(&error); + } + + /** + * @brief Set the extrinsic parameters from current stream profile to the given target stream type. + * + * @tparam targetStreamType Target stream type. + * @tparam extrinsic The extrinsic. + */ + void bindExtrinsicTo(const OBStreamType &targetStreamType, const OBExtrinsic &extrinsic) { + ob_error *error = nullptr; + ob_stream_profile_set_extrinsic_to_type(const_cast(impl_),targetStreamType,extrinsic, &error); + Error::handle(&error); + } + + /** + * @brief Check if frame object is compatible with the given type. * - * @tparam T Given type - * @return bool return result + * @tparam T Given type. + * @return bool return result. */ template bool is() const; /** - * @brief Converts object type to target type + * @brief Converts object type to target type. * - * @tparam T Target type + * @tparam T Target type. * @return std::shared_ptr Return the result. Throws an exception if conversion is not possible. */ template std::shared_ptr as() { @@ -109,9 +133,9 @@ public: } /** - * @brief Converts object type to target type (const version) + * @brief Converts object type to target type (const version). * - * @tparam T Target type + * @tparam T Target type. * @return std::shared_ptr Return the result. Throws an exception if conversion is not possible. */ template std::shared_ptr as() const { @@ -192,6 +216,17 @@ public: return intrinsic; } + /** + * @brief Set the intrinsic parameters of the stream. + * + * @param intrinsic The intrinsic parameters. + */ + void setIntrinsic(const OBCameraIntrinsic &intrinsic) { + ob_error *error = nullptr; + ob_video_stream_profile_set_intrinsic(const_cast(impl_), intrinsic, &error); + Error::handle(&error); + } + /** * @brief Get the distortion parameters of the stream. * @brief Brown distortion model @@ -205,6 +240,17 @@ public: return distortion; } + /** + * @brief Set the distortion parameters of the stream. + * + * @param distortion The distortion parameters. + */ + void setDistortion(const OBCameraDistortion &distortion) { + ob_error *error = nullptr; + ob_video_stream_profile_set_distortion(const_cast(impl_), distortion, &error); + Error::handle(&error); + } + public: // The following interfaces are deprecated and are retained here for compatibility purposes. uint32_t fps() const { diff --git a/orbbec_camera/SDK/include/libobsensor/hpp/TypeHelper.hpp b/orbbec_camera/SDK/include/libobsensor/hpp/TypeHelper.hpp index 71c63143..b35efece 100644 --- a/orbbec_camera/SDK/include/libobsensor/hpp/TypeHelper.hpp +++ b/orbbec_camera/SDK/include/libobsensor/hpp/TypeHelper.hpp @@ -113,7 +113,7 @@ public: * OB_SENSOR_IR_LEFT, * OB_SENSOR_IR_RIGHT, * - * @param type + * @param type The sensor type * @return true * @return false */ @@ -128,7 +128,7 @@ public: * OB_STREAM_VIDEO, * OB_STREAM_DEPTH, * OB_STREAM_COLOR, - * OB_STREAM_IR, + * OB_STREAM_IR, * OB_STREAM_IR_LEFT, * OB_STREAM_IR_RIGHT, * diff --git a/orbbec_camera/SDK/include/libobsensor/hpp/Utils.hpp b/orbbec_camera/SDK/include/libobsensor/hpp/Utils.hpp index 5b0add2e..7a2a8cf6 100644 --- a/orbbec_camera/SDK/include/libobsensor/hpp/Utils.hpp +++ b/orbbec_camera/SDK/include/libobsensor/hpp/Utils.hpp @@ -17,7 +17,7 @@ namespace ob { class Device; -class CoordinateTransformHelper { +class CoordinateTransformHelper { public: /** * @brief Transform a 3d point of a source coordinate system into a 3d point of the target coordinate system. @@ -29,8 +29,8 @@ public: * @return bool Transform result */ static bool transformation3dto3d(const OBPoint3f source_point3f, OBExtrinsic extrinsic, OBPoint3f *target_point3f) { - ob_error *error = NULL; - bool result = ob_transformation_3d_to_3d(source_point3f, extrinsic, target_point3f, &error); + ob_error *error = NULL; + bool result = ob_transformation_3d_to_3d(source_point3f, extrinsic, target_point3f, &error); Error::handle(&error); return result; } @@ -48,8 +48,8 @@ public: */ static bool transformation2dto3d(const OBPoint2f source_point2f, const float source_depth_pixel_value, const OBCameraIntrinsic source_intrinsic, OBExtrinsic extrinsic, OBPoint3f *target_point3f) { - ob_error *error = NULL; - bool result = ob_transformation_2d_to_3d(source_point2f, source_depth_pixel_value, source_intrinsic, extrinsic, target_point3f, &error); + ob_error *error = NULL; + bool result = ob_transformation_2d_to_3d(source_point2f, source_depth_pixel_value, source_intrinsic, extrinsic, target_point3f, &error); Error::handle(&error); return result; } @@ -66,9 +66,9 @@ public: * @return bool Transform result */ static bool transformation3dto2d(const OBPoint3f source_point3f, const OBCameraIntrinsic target_intrinsic, const OBCameraDistortion target_distortion, - OBExtrinsic extrinsic, OBPoint2f *target_point2f) { - ob_error *error = NULL; - bool result = ob_transformation_3d_to_2d(source_point3f, target_intrinsic, target_distortion, extrinsic, target_point2f, &error); + OBExtrinsic extrinsic, OBPoint2f *target_point2f) { + ob_error *error = NULL; + bool result = ob_transformation_3d_to_2d(source_point3f, target_intrinsic, target_distortion, extrinsic, target_point2f, &error); Error::handle(&error); return result; } @@ -90,7 +90,7 @@ public: static bool transformation2dto2d(const OBPoint2f source_point2f, const float source_depth_pixel_value, const OBCameraIntrinsic source_intrinsic, const OBCameraDistortion source_distortion, const OBCameraIntrinsic target_intrinsic, const OBCameraDistortion target_distortion, OBExtrinsic extrinsic, OBPoint2f *target_point2f) { - ob_error *error = NULL; + ob_error *error = NULL; bool result = ob_transformation_2d_to_2d(source_point2f, source_depth_pixel_value, source_intrinsic, source_distortion, target_intrinsic, target_distortion, extrinsic, target_point2f, &error); Error::handle(&error); @@ -101,8 +101,8 @@ public: // The following interfaces are deprecated and are retained here for compatibility purposes. static bool calibration3dTo3d(const OBCalibrationParam calibrationParam, const OBPoint3f sourcePoint3f, const OBSensorType sourceSensorType, const OBSensorType targetSensorType, OBPoint3f *targetPoint3f) { - ob_error *error = NULL; - bool result = ob_calibration_3d_to_3d(calibrationParam, sourcePoint3f, sourceSensorType, targetSensorType, targetPoint3f, &error); + ob_error *error = NULL; + bool result = ob_calibration_3d_to_3d(calibrationParam, sourcePoint3f, sourceSensorType, targetSensorType, targetPoint3f, &error); Error::handle(&error); return result; } @@ -110,15 +110,16 @@ public: static bool calibration2dTo3d(const OBCalibrationParam calibrationParam, const OBPoint2f sourcePoint2f, const float sourceDepthPixelValue, const OBSensorType sourceSensorType, const OBSensorType targetSensorType, OBPoint3f *targetPoint3f) { ob_error *error = NULL; - bool result = ob_calibration_2d_to_3d(calibrationParam, sourcePoint2f, sourceDepthPixelValue, sourceSensorType, targetSensorType, targetPoint3f, &error); + bool result = + ob_calibration_2d_to_3d(calibrationParam, sourcePoint2f, sourceDepthPixelValue, sourceSensorType, targetSensorType, targetPoint3f, &error); Error::handle(&error); return result; } static bool calibration3dTo2d(const OBCalibrationParam calibrationParam, const OBPoint3f sourcePoint3f, const OBSensorType sourceSensorType, const OBSensorType targetSensorType, OBPoint2f *targetPoint2f) { - ob_error *error = NULL; - bool result = ob_calibration_3d_to_2d(calibrationParam, sourcePoint3f, sourceSensorType, targetSensorType, targetPoint2f, &error); + ob_error *error = NULL; + bool result = ob_calibration_3d_to_2d(calibrationParam, sourcePoint3f, sourceSensorType, targetSensorType, targetPoint2f, &error); Error::handle(&error); return result; } @@ -126,7 +127,8 @@ public: static bool calibration2dTo2d(const OBCalibrationParam calibrationParam, const OBPoint2f sourcePoint2f, const float sourceDepthPixelValue, const OBSensorType sourceSensorType, const OBSensorType targetSensorType, OBPoint2f *targetPoint2f) { ob_error *error = NULL; - bool result = ob_calibration_2d_to_2d(calibrationParam, sourcePoint2f, sourceDepthPixelValue, sourceSensorType, targetSensorType, targetPoint2f, &error); + bool result = + ob_calibration_2d_to_2d(calibrationParam, sourcePoint2f, sourceDepthPixelValue, sourceSensorType, targetSensorType, targetPoint2f, &error); Error::handle(&error); return result; } @@ -138,15 +140,15 @@ public: // unsafe operation, need to cast const to non-const auto unConstImpl = const_cast(depthFrame->getImpl()); - auto result = transformation_depth_frame_to_color_camera(device->getImpl() , unConstImpl, targetColorCameraWidth, targetColorCameraHeight, &error); + auto result = transformation_depth_frame_to_color_camera(device->getImpl(), unConstImpl, targetColorCameraWidth, targetColorCameraHeight, &error); Error::handle(&error); return std::make_shared(result); } static bool transformationInitXYTables(const OBCalibrationParam calibrationParam, const OBSensorType sensorType, float *data, uint32_t *dataSize, OBXYTables *xyTables) { - ob_error *error = NULL; - bool result = transformation_init_xy_tables(calibrationParam, sensorType, data, dataSize, xyTables, &error); + ob_error *error = NULL; + bool result = transformation_init_xy_tables(calibrationParam, sensorType, data, dataSize, xyTables, &error); Error::handle(&error); return result; } @@ -157,11 +159,32 @@ public: Error::handle(&error, false); } - static void transformationDepthToRGBDPointCloud(OBXYTables *xyTables, const void *depthImageData, const void *colorImageData, void *pointCloudData){ + static void transformationDepthToRGBDPointCloud(OBXYTables *xyTables, const void *depthImageData, const void *colorImageData, void *pointCloudData) { ob_error *error = NULL; transformation_depth_to_rgbd_pointcloud(xyTables, depthImageData, colorImageData, pointCloudData, &error); Error::handle(&error, false); } }; -} // namespace ob +class PointCloudHelper { +public: + /** + * @brief save point cloud to ply file. + * + * @param[in] fileName Point cloud save path + * @param[in] frame Point cloud frame + * @param[in] saveBinary Binary or textual,true: binary, false: textual + * @param[in] useMesh Save mesh or not, true: save as mesh, false: not save as mesh + * @param[in] meshThreshold Distance threshold for creating faces in point cloud,default value :50 + * + * @return bool save point cloud result + */ + static bool savePointcloudToPly(const char *fileName, std::shared_ptr frame, bool saveBinary, bool useMesh, float meshThreshold) { + ob_error *error = NULL; + auto unConstImpl = const_cast(frame->getImpl()); + bool result = ob_save_pointcloud_to_ply(fileName, unConstImpl, saveBinary, useMesh, meshThreshold, &error); + Error::handle(&error, false); + return result; + } +}; +} // namespace ob diff --git a/orbbec_camera/SDK/lib/arm64/OrbbecSDKConfig-release.cmake b/orbbec_camera/SDK/lib/arm64/OrbbecSDKConfig-release.cmake index 3c15141d..85c83e27 100644 --- a/orbbec_camera/SDK/lib/arm64/OrbbecSDKConfig-release.cmake +++ b/orbbec_camera/SDK/lib/arm64/OrbbecSDKConfig-release.cmake @@ -8,12 +8,12 @@ set(CMAKE_IMPORT_FILE_VERSION 1) # Import target "ob::OrbbecSDK" for configuration "Release" set_property(TARGET ob::OrbbecSDK APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) set_target_properties(ob::OrbbecSDK PROPERTIES - IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/libOrbbecSDK.so.2.2.8" + IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/libOrbbecSDK.so.2.4.1" IMPORTED_SONAME_RELEASE "libOrbbecSDK.so.2" ) list(APPEND _cmake_import_check_targets ob::OrbbecSDK ) -list(APPEND _cmake_import_check_files_for_ob::OrbbecSDK "${_IMPORT_PREFIX}/lib/libOrbbecSDK.so.2.2.8" ) +list(APPEND _cmake_import_check_files_for_ob::OrbbecSDK "${_IMPORT_PREFIX}/lib/libOrbbecSDK.so.2.4.1" ) # Commands beyond this point should not need to know the version. set(CMAKE_IMPORT_FILE_VERSION) diff --git a/orbbec_camera/SDK/lib/arm64/extensions/depthengine/libdepthengine.so b/orbbec_camera/SDK/lib/arm64/extensions/depthengine/libdepthengine.so deleted file mode 100644 index 61c3e389..00000000 Binary files a/orbbec_camera/SDK/lib/arm64/extensions/depthengine/libdepthengine.so and /dev/null differ diff --git a/orbbec_camera/SDK/lib/arm64/extensions/depthengine/libdepthengine.so b/orbbec_camera/SDK/lib/arm64/extensions/depthengine/libdepthengine.so new file mode 120000 index 00000000..745a98a5 --- /dev/null +++ b/orbbec_camera/SDK/lib/arm64/extensions/depthengine/libdepthengine.so @@ -0,0 +1 @@ +libdepthengine.so.2.0 \ No newline at end of file diff --git a/orbbec_camera/SDK/lib/arm64/extensions/filters/libFilterProcessor.so b/orbbec_camera/SDK/lib/arm64/extensions/filters/libFilterProcessor.so index 12e66cd9..f04e2678 100644 Binary files a/orbbec_camera/SDK/lib/arm64/extensions/filters/libFilterProcessor.so and b/orbbec_camera/SDK/lib/arm64/extensions/filters/libFilterProcessor.so differ diff --git a/orbbec_camera/SDK/lib/arm64/extensions/filters/libob_priv_filter.so b/orbbec_camera/SDK/lib/arm64/extensions/filters/libob_priv_filter.so index 6d361c3d..a0466daf 100644 Binary files a/orbbec_camera/SDK/lib/arm64/extensions/filters/libob_priv_filter.so and b/orbbec_camera/SDK/lib/arm64/extensions/filters/libob_priv_filter.so differ diff --git a/orbbec_camera/SDK/lib/arm64/extensions/firmwareupdater/libfirmwareupdater.so b/orbbec_camera/SDK/lib/arm64/extensions/firmwareupdater/libfirmwareupdater.so index d18a658f..c1555d6e 100644 Binary files a/orbbec_camera/SDK/lib/arm64/extensions/firmwareupdater/libfirmwareupdater.so and b/orbbec_camera/SDK/lib/arm64/extensions/firmwareupdater/libfirmwareupdater.so differ diff --git a/orbbec_camera/SDK/lib/arm64/extensions/frameprocessor/libob_frame_processor.so b/orbbec_camera/SDK/lib/arm64/extensions/frameprocessor/libob_frame_processor.so index 73e4f140..cc13222c 100644 Binary files a/orbbec_camera/SDK/lib/arm64/extensions/frameprocessor/libob_frame_processor.so and b/orbbec_camera/SDK/lib/arm64/extensions/frameprocessor/libob_frame_processor.so differ diff --git a/orbbec_camera/SDK/lib/arm64/libOrbbecSDK.so b/orbbec_camera/SDK/lib/arm64/libOrbbecSDK.so deleted file mode 100644 index 97d06337..00000000 Binary files a/orbbec_camera/SDK/lib/arm64/libOrbbecSDK.so and /dev/null differ diff --git a/orbbec_camera/SDK/lib/arm64/libOrbbecSDK.so b/orbbec_camera/SDK/lib/arm64/libOrbbecSDK.so new file mode 120000 index 00000000..1e0e3c31 --- /dev/null +++ b/orbbec_camera/SDK/lib/arm64/libOrbbecSDK.so @@ -0,0 +1 @@ +libOrbbecSDK.so.2 \ No newline at end of file diff --git a/orbbec_camera/SDK/lib/arm64/libOrbbecSDK.so.2 b/orbbec_camera/SDK/lib/arm64/libOrbbecSDK.so.2 deleted file mode 100644 index 97d06337..00000000 Binary files a/orbbec_camera/SDK/lib/arm64/libOrbbecSDK.so.2 and /dev/null differ diff --git a/orbbec_camera/SDK/lib/arm64/libOrbbecSDK.so.2 b/orbbec_camera/SDK/lib/arm64/libOrbbecSDK.so.2 new file mode 120000 index 00000000..05ef9aca --- /dev/null +++ b/orbbec_camera/SDK/lib/arm64/libOrbbecSDK.so.2 @@ -0,0 +1 @@ +libOrbbecSDK.so.2.4.1 \ No newline at end of file diff --git a/orbbec_camera/SDK/lib/arm64/libOrbbecSDK.so.2.2.8 b/orbbec_camera/SDK/lib/arm64/libOrbbecSDK.so.2.4.1 similarity index 55% rename from orbbec_camera/SDK/lib/arm64/libOrbbecSDK.so.2.2.8 rename to orbbec_camera/SDK/lib/arm64/libOrbbecSDK.so.2.4.1 index 97d06337..0c434a52 100644 Binary files a/orbbec_camera/SDK/lib/arm64/libOrbbecSDK.so.2.2.8 and b/orbbec_camera/SDK/lib/arm64/libOrbbecSDK.so.2.4.1 differ diff --git a/orbbec_camera/SDK/lib/x64/OrbbecSDKConfig-release.cmake b/orbbec_camera/SDK/lib/x64/OrbbecSDKConfig-release.cmake index 3c15141d..85c83e27 100644 --- a/orbbec_camera/SDK/lib/x64/OrbbecSDKConfig-release.cmake +++ b/orbbec_camera/SDK/lib/x64/OrbbecSDKConfig-release.cmake @@ -8,12 +8,12 @@ set(CMAKE_IMPORT_FILE_VERSION 1) # Import target "ob::OrbbecSDK" for configuration "Release" set_property(TARGET ob::OrbbecSDK APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) set_target_properties(ob::OrbbecSDK PROPERTIES - IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/libOrbbecSDK.so.2.2.8" + IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/libOrbbecSDK.so.2.4.1" IMPORTED_SONAME_RELEASE "libOrbbecSDK.so.2" ) list(APPEND _cmake_import_check_targets ob::OrbbecSDK ) -list(APPEND _cmake_import_check_files_for_ob::OrbbecSDK "${_IMPORT_PREFIX}/lib/libOrbbecSDK.so.2.2.8" ) +list(APPEND _cmake_import_check_files_for_ob::OrbbecSDK "${_IMPORT_PREFIX}/lib/libOrbbecSDK.so.2.4.1" ) # Commands beyond this point should not need to know the version. set(CMAKE_IMPORT_FILE_VERSION) diff --git a/orbbec_camera/SDK/lib/x64/extensions/depthengine/libdepthengine.so b/orbbec_camera/SDK/lib/x64/extensions/depthengine/libdepthengine.so deleted file mode 100644 index dd818fae..00000000 Binary files a/orbbec_camera/SDK/lib/x64/extensions/depthengine/libdepthengine.so and /dev/null differ diff --git a/orbbec_camera/SDK/lib/x64/extensions/depthengine/libdepthengine.so b/orbbec_camera/SDK/lib/x64/extensions/depthengine/libdepthengine.so new file mode 120000 index 00000000..745a98a5 --- /dev/null +++ b/orbbec_camera/SDK/lib/x64/extensions/depthengine/libdepthengine.so @@ -0,0 +1 @@ +libdepthengine.so.2.0 \ No newline at end of file diff --git a/orbbec_camera/SDK/lib/x64/extensions/filters/libFilterProcessor.so b/orbbec_camera/SDK/lib/x64/extensions/filters/libFilterProcessor.so index 141f047d..a6517bd1 100644 Binary files a/orbbec_camera/SDK/lib/x64/extensions/filters/libFilterProcessor.so and b/orbbec_camera/SDK/lib/x64/extensions/filters/libFilterProcessor.so differ diff --git a/orbbec_camera/SDK/lib/x64/extensions/filters/libob_priv_filter.so b/orbbec_camera/SDK/lib/x64/extensions/filters/libob_priv_filter.so index 1c8e5825..f5c8d7b6 100644 Binary files a/orbbec_camera/SDK/lib/x64/extensions/filters/libob_priv_filter.so and b/orbbec_camera/SDK/lib/x64/extensions/filters/libob_priv_filter.so differ diff --git a/orbbec_camera/SDK/lib/x64/extensions/firmwareupdater/libfirmwareupdater.so b/orbbec_camera/SDK/lib/x64/extensions/firmwareupdater/libfirmwareupdater.so index acc97487..240a4b06 100644 Binary files a/orbbec_camera/SDK/lib/x64/extensions/firmwareupdater/libfirmwareupdater.so and b/orbbec_camera/SDK/lib/x64/extensions/firmwareupdater/libfirmwareupdater.so differ diff --git a/orbbec_camera/SDK/lib/x64/extensions/frameprocessor/libob_frame_processor.so b/orbbec_camera/SDK/lib/x64/extensions/frameprocessor/libob_frame_processor.so index a7f3e0bc..40290450 100644 Binary files a/orbbec_camera/SDK/lib/x64/extensions/frameprocessor/libob_frame_processor.so and b/orbbec_camera/SDK/lib/x64/extensions/frameprocessor/libob_frame_processor.so differ diff --git a/orbbec_camera/SDK/lib/x64/libOrbbecSDK.so b/orbbec_camera/SDK/lib/x64/libOrbbecSDK.so deleted file mode 100644 index b6ba266d..00000000 Binary files a/orbbec_camera/SDK/lib/x64/libOrbbecSDK.so and /dev/null differ diff --git a/orbbec_camera/SDK/lib/x64/libOrbbecSDK.so b/orbbec_camera/SDK/lib/x64/libOrbbecSDK.so new file mode 120000 index 00000000..1e0e3c31 --- /dev/null +++ b/orbbec_camera/SDK/lib/x64/libOrbbecSDK.so @@ -0,0 +1 @@ +libOrbbecSDK.so.2 \ No newline at end of file diff --git a/orbbec_camera/SDK/lib/x64/libOrbbecSDK.so.2 b/orbbec_camera/SDK/lib/x64/libOrbbecSDK.so.2 deleted file mode 100644 index b6ba266d..00000000 Binary files a/orbbec_camera/SDK/lib/x64/libOrbbecSDK.so.2 and /dev/null differ diff --git a/orbbec_camera/SDK/lib/x64/libOrbbecSDK.so.2 b/orbbec_camera/SDK/lib/x64/libOrbbecSDK.so.2 new file mode 120000 index 00000000..05ef9aca --- /dev/null +++ b/orbbec_camera/SDK/lib/x64/libOrbbecSDK.so.2 @@ -0,0 +1 @@ +libOrbbecSDK.so.2.4.1 \ No newline at end of file diff --git a/orbbec_camera/SDK/lib/x64/libOrbbecSDK.so.2.2.8 b/orbbec_camera/SDK/lib/x64/libOrbbecSDK.so.2.4.1 similarity index 56% rename from orbbec_camera/SDK/lib/x64/libOrbbecSDK.so.2.2.8 rename to orbbec_camera/SDK/lib/x64/libOrbbecSDK.so.2.4.1 index b6ba266d..ab2cd9cb 100644 Binary files a/orbbec_camera/SDK/lib/x64/libOrbbecSDK.so.2.2.8 and b/orbbec_camera/SDK/lib/x64/libOrbbecSDK.so.2.4.1 differ diff --git a/orbbec_camera/config/OrbbecSDKConfig_v2.0.xml b/orbbec_camera/config/OrbbecSDKConfig_v2.0.xml index 068b318a..c78fed26 100644 --- a/orbbec_camera/config/OrbbecSDKConfig_v2.0.xml +++ b/orbbec_camera/config/OrbbecSDKConfig_v2.0.xml @@ -61,18 +61,12 @@ - - 0 - - false - false + true Y16 - - 0 - - 5000 - - 0 - - 5000 @@ -125,19 +106,6 @@ 30 MJPG - - 0 - - 5000 - - 0 - - 5000 @@ -149,19 +117,6 @@ 30 Y16 - - 0 - - 5000 - - 0 - - 5000 @@ -174,7 +129,7 @@ 100 - + 640 @@ -184,19 +139,6 @@ 30 Y16 - - 0 - - 5000 - - 0 - - 5000 @@ -208,19 +150,6 @@ 30 MJPG - - 0 - - 5000 - - 0 - - 5000 @@ -232,19 +161,6 @@ 30 Y16 - - 0 - - 5000 - - 0 - - 5000 @@ -271,19 +187,6 @@ 30 Y16 - - 0 - - 5000 - - 0 - - 5000 @@ -295,19 +198,6 @@ 30 MJPG - - 0 - - 5000 - - 0 - - 5000 @@ -319,19 +209,6 @@ 30 Y16 - - 0 - - 5000 - - 0 - - 5000 @@ -353,17 +230,6 @@ 0 - - 0 - - 5000 - - 0 - - 2000 1280 @@ -537,17 +403,6 @@ 0 - - 0 - - 5000 - - 0 - - 2000 1280 @@ -565,8 +420,6 @@ 30 MJPG - - 0 @@ -577,8 +430,6 @@ 30 Y8 - - 0 @@ -588,8 +439,6 @@ 30 Y8 - - 0 @@ -599,8 +448,6 @@ 30 Y8 - - 0 @@ -613,8 +460,6 @@ 30 RLE - - 0 @@ -624,8 +469,6 @@ 30 Y8 - - 0 @@ -637,8 +480,6 @@ 30 MJPG - - 0 @@ -648,8 +489,6 @@ 30 Y10 - - 0 @@ -659,8 +498,6 @@ 30 Y10 - - 0 @@ -673,8 +510,6 @@ 30 MJPG - - 0 @@ -684,8 +519,6 @@ 30 Y8 - - 0 @@ -695,8 +528,6 @@ 30 Y8 - - 0 @@ -724,17 +555,6 @@ - - 2 - - 10000 - - 2 - - 2000 800 @@ -840,6 +660,329 @@ 0 + + + 1280 + + 800 + + 10 + RVL + + + + 1280 + + 800 + + 10 + MJPG + + + + 1280 + + 800 + + 10 + Y8 + + + + 1280 + + 800 + + 10 + Y8 + + + + + + + + + + + 1280 + + 800 + + 20 + MJPG + + + + 640 + + 400 + + 20 + RVL + + + + 640 + + 400 + + 20 + Y8 + + + + 640 + + 400 + + 20 + Y8 + + + + + + 1280 + + 800 + + 10 + MJPG + + + + 1280 + + 800 + + 10 + Y10 + + + + 1280 + + 800 + + 10 + Y10 + + + + + + 1280 + + 800 + + 10 + MJPG + + + + 1280 + + 800 + + 10 + Y8 + + + + 1280 + + 800 + + 10 + Y8 + + + + + + + + LibUVC + + + true + + 1000 + + 100 + + + + false + true + + + + 0 + + 1 + + + + + + 848 + + 480 + + 30 + Y16 + + + + 1280 + + 720 + + 30 + MJPG + + + + 848 + + 480 + + 30 + Y8 + + + + 848 + + 480 + + 30 + Y8 + + + + 848 + + 480 + + 30 + Y8 + + + + + + + LibUVC + + + true + + 1000 + + 100 + + + + false + true + + + + 0 + + 1 + + + + + + 848 + + 480 + + 30 + Y16 + + + + 1280 + + 720 + + 30 + MJPG + + + + 848 + + 480 + + 30 + Y8 + + + + 848 + + 480 + + 30 + Y8 + + + + 848 + + 480 + + 30 + Y8 + + + + + + LibUVC + + + true + + 1000 + + 100 + + + + false + true + + + + 0 + + 1 + + + 0 @@ -848,10 +991,1084 @@ 5000 - 5 + 0 - 5000 + 2000 + + 848 + + 480 + + 30 + Y16 + + + + 1280 + + 720 + + 30 + MJPG + + + + 848 + + 480 + + 30 + Y8 + + + + 848 + + 480 + + 30 + Y8 + + + + 848 + + 480 + + 30 + Y8 + + + + + + + LibUVC + + + true + + 1000 + + 100 + + + + false + true + + + + 0 + + 1 + + + + + + 0 + + 5000 + + 0 + + 2000 + + 848 + + 480 + + 30 + Y16 + + + + 1280 + + 720 + + 30 + MJPG + + + + 848 + + 480 + + 30 + Y8 + + + + 848 + + 480 + + 30 + Y8 + + + + 848 + + 480 + + 30 + Y8 + + + + + + + LibUVC + + + true + + 1000 + + 100 + + + + false + true + + + + 0 + + 1 + + + 848 + + 480 + + 30 + Y16 + + + + 1280 + + 720 + + 30 + MJPG + + + + 848 + + 480 + + 30 + Y8 + + + + 848 + + 480 + + 30 + Y8 + + + + 848 + + 480 + + 30 + Y8 + + + + + + + 0 + + 1 + + + true + + 1000 + + 100 + + + + false + true + + + + 0 + + 1 + + + + + + 640 + + 400 + + 15 + Y16 + + + + 640 + + 400 + + 15 + MJPG + + + + 640 + + 400 + + 15 + Y8 + + + + 640 + + 400 + + 15 + Y8 + + + + + + + LibUVC + + + false + true + + + + true + + 1000 + + 100 + + + + 0 + + 1 + + + + + + 848 + + 480 + + 30 + Y16 + + + + 1280 + + 720 + + 30 + MJPG + + + + 848 + + 480 + + 30 + Y8 + + + + 848 + + 480 + + 30 + Y8 + + + + 848 + + 480 + + 30 + Y8 + + + + + + + LibUVC + + + false + true + + + + true + + 1000 + + 100 + + + + 0 + + 1 + + + + + + 848 + + 480 + + 30 + Y16 + + + + 1280 + + 720 + + 30 + MJPG + + + + 848 + + 480 + + 30 + Y8 + + + + 848 + + 480 + + 30 + Y8 + + + + 848 + + 480 + + 30 + Y8 + + + + + + + LibUVC + + + true + + 1000 + + 100 + + + + false + true + + + + 0 + + 1 + + + + 640 + + 480 + + 30 + Y16 + + + + 1280 + + 720 + + 30 + MJPG + + + + 640 + + 480 + + 30 + Y8 + + + + 640 + + 480 + + 30 + Y8 + + + + 640 + + 480 + + 30 + Y8 + + + + + + LibUVC + + + true + + 1000 + + 100 + + + false + true + + + + 0 + + 1 + + + + 640 + + 480 + + 30 + Y16 + + + + 1280 + + 720 + + 30 + MJPG + + + + 640 + + 480 + + 30 + Y8 + + + + 640 + + 480 + + 30 + Y8 + + + + 640 + + 480 + + 30 + Y8 + + + + + + + LibUVC + + + true + + 1000 + + 100 + + + false + true + + + + 0 + + 1 + + + + 640 + + 480 + + 30 + Y16 + + + + 1280 + + 720 + + 30 + MJPG + + + + 640 + + 480 + + 30 + Y8 + + + + 640 + + 480 + + 30 + Y8 + + + + 640 + + 480 + + 30 + Y8 + + + + + + LibUVC + + + true + + 1000 + + 100 + + + false + true + + + + 0 + + 1 + + + + 640 + + 480 + + 30 + Y16 + + + + 1280 + + 720 + + 30 + MJPG + + + + 640 + + 480 + + 30 + Y8 + + + + 640 + + 480 + + 30 + Y8 + + + + 640 + + 480 + + 30 + Y8 + + + + + + LibUVC + + + false + + 1000 + + 100 + + + + 0 + + + + 1280 + + 800 + + 15 + Y16 + + + + 1280 + + 720 + + 15 + + MJPG + + + + 1280 + + 800 + + 15 + + Y8 + + + + + + LibUVC + + + false + + 1000 + + 100 + + + + 0 + + + + 1280 + + 800 + + 15 + Y16 + + + + 1280 + + 720 + + 15 + + MJPG + + + + 1280 + + 800 + + 15 + + Y8 + + + + + + + LibUVC + + + false + true + + + + true + + 1000 + + 100 + + + + 0 + + 1 + + + + + + 0 + + 5000 + + 0 + + 2000 + + 848 + + 480 + + 30 + Y16 + + + + 1280 + + 720 + + 30 + MJPG + + + + 848 + + 480 + + 30 + Y8 + + + + 848 + + 480 + + 30 + Y8 + + + + 848 + + 480 + + 30 + Y8 + + + + + + + LibUVC + + + false + true + + + + true + + 1000 + + 100 + + + + 0 + + 1 + + + + + + 0 + + 5000 + + 0 + + 2000 + + 848 + + 480 + + 30 + Y16 + + + + 1280 + + 720 + + 30 + MJPG + + + + 848 + + 480 + + 30 + Y8 + + + + 848 + + 480 + + 30 + Y8 + + + + 848 + + 480 + + 30 + Y8 + + + + + + + LibUVC + + + 0 + + + 1.2 + + + + 15 + + 5000 + + 3000 1280 @@ -869,13 +2086,13 @@ 10 MJPG - 0 - - 5 + 15 + + 5000 - 5000 + 3000 @@ -886,13 +2103,13 @@ 10 Y8 - 0 - - 5 + 15 + + 5000 - 5000 + 3000 @@ -903,29 +2120,34 @@ 10 Y8 - 0 - - 5 + 15 + + 5000 - 5000 + 3000 - - 5 + + + 0 + + 5000 - 5000 + 3000 - - 5 + + 0 + + 5000 - 5000 + 3000 @@ -1105,744 +2327,6 @@ 5000 - - - - - - LibUVC - - - true - - 1000 - - 100 - - - - 0 - - 1 - - - - - - 0 - - 5000 - - 0 - - 2000 - - 848 - - 480 - - 30 - Y16 - - - - 1280 - - 720 - - 30 - MJPG - - - - 848 - - 480 - - 30 - Y8 - - - - 848 - - 480 - - 30 - Y8 - - - - 848 - - 480 - - 30 - Y8 - - - - - - - LibUVC - - - true - - 1000 - - 100 - - - - 0 - - 1 - - - - - - 0 - - 5000 - - 0 - - 2000 - - 848 - - 480 - - 30 - Y16 - - - - 1280 - - 720 - - 30 - MJPG - - - - 848 - - 480 - - 30 - Y8 - - - - 848 - - 480 - - 30 - Y8 - - - - 848 - - 480 - - 30 - Y8 - - - - - - - LibUVC - - - true - - 1000 - - 100 - - - - 0 - - 1 - - - 0 - - 5000 - - 0 - - 2000 - - 848 - - 480 - - 30 - Y16 - - - - 1280 - - 720 - - 30 - MJPG - - - - 848 - - 480 - - 30 - Y8 - - - - 848 - - 480 - - 30 - Y8 - - - - 848 - - 480 - - 30 - Y8 - - - - - - - LibUVC - - - true - - 1000 - - 100 - - - - 0 - - 1 - - - - - - 0 - - 5000 - - 0 - - 2000 - - 848 - - 480 - - 30 - Y16 - - - - 1280 - - 720 - - 30 - MJPG - - - - 848 - - 480 - - 30 - Y8 - - - - 848 - - 480 - - 30 - Y8 - - - - 848 - - 480 - - 30 - Y8 - - - - - - - LibUVC - - - true - - 1000 - - 100 - - - - 0 - - 1 - - - - - - 0 - - 5000 - - 0 - - 2000 - - 848 - - 480 - - 30 - Y16 - - - - 1280 - - 720 - - 30 - MJPG - - - - 848 - - 480 - - 30 - Y8 - - - - 848 - - 480 - - 30 - Y8 - - - - 848 - - 480 - - 30 - Y8 - - - - - - - LibUVC - - - true - - 1000 - - 100 - - - - 0 - - 1 - - - - - - 0 - - 5000 - - 0 - - 2000 - - 640 - - 480 - - 30 - Y16 - - - - 1280 - - 720 - - 30 - MJPG - - - - 640 - - 480 - - 30 - Y8 - - - - 640 - - 480 - - 30 - Y8 - - - - 640 - - 480 - - 30 - Y8 - - - - - - - LibUVC - - - true - - 1000 - - 100 - - - - 0 - - 1 - - - - - - 0 - - 5000 - - 0 - - 2000 - - 640 - - 480 - - 30 - Y16 - - - - 1280 - - 720 - - 30 - MJPG - - - - 640 - - 480 - - 30 - Y8 - - - - 640 - - 480 - - 30 - Y8 - - - - 640 - - 480 - - 30 - Y8 - - - - - - LibUVC - - - false - - 1000 - - 100 - - - - 0 - - - - 0 - - 5000 - - 0 - - 2000 - - 1280 - - 800 - - 15 - Y16 - - - - 1280 - - 720 - - 15 - - MJPG - - 0 - - - - 1280 - - 800 - - 15 - - Y8 - - 0 - - - - - - LibUVC - - - false - - 1000 - - 100 - - - - 0 - - - - 0 - - 5000 - - 0 - - 2000 - - 1280 - - 800 - - 15 - Y16 - - - - 1280 - - 720 - - 15 - - MJPG - - 0 - - - - 1280 - - 800 - - 15 - - Y8 - - 0 - - + - \ No newline at end of file + diff --git a/orbbec_camera/scripts/99-obsensor-libusb.rules b/orbbec_camera/scripts/99-obsensor-libusb.rules index 598b95f3..f999f3ff 100644 --- a/orbbec_camera/scripts/99-obsensor-libusb.rules +++ b/orbbec_camera/scripts/99-obsensor-libusb.rules @@ -1,4 +1,4 @@ -SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0501", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Orbbec Bootloader Device" +SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0501", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Bootloader Device" # UVC Modules SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0635", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Femto" @@ -11,25 +11,33 @@ SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0537", MODE:="066 SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0669", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Femto-mega" SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="066b", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Femto Bolt" SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0660", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Astra 2" -SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0670", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Orbbec Gemini 2" -SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0671", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Orbbec Gemini 2 XL" -SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0673", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Orbbec Gemini 2 L" -SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0675", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Orbbec Gemini 2 VL" -SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0800", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Orbbec Gemini 335" -SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0801", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Orbbec Gemini 330" -SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0802", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Orbbec Gemini dm330" -SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0803", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Orbbec Gemini 336" -SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0804", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Orbbec Gemini 335L" -SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0805", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Orbbec Gemini 330L" -SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0806", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Orbbec Gemini dm330L" -SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0807", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Orbbec Gemini 336L" -SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="080b", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Orbbec Gemini 335Lg" -SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="080d", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Orbbec Gemini 336Lg" -SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="080e", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Orbbec Gemini 335Le" -SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0810", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Orbbec Gemini 336Le" -SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0674", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Orbbec Gemini 2 I" +SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0670", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Gemini 2" +SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0671", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Gemini 2 XL" +SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0673", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Gemini 2 L" +SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0675", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Gemini 2 VL" +SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0800", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Gemini 335" +SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0801", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Gemini 330" +SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0802", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Gemini dm330" +SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0803", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Gemini 336" +SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0804", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Gemini 335L" +SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0805", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Gemini 330L" +SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0806", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Gemini dm330L" +SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0807", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Gemini 336L" +SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="080b", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Gemini 335Lg" +SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="080d", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Gemini 336Lg" +SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="080e", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Gemini 335Le" +SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0810", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Gemini 336Le" +SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0674", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Gemini 2 I" SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0701", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Dabai DCL" SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="069d", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Astra Pro2" +SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0808", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Gemini 215" +SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0809", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Gemini 210" +SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0a12", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Dabai A" +SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0a13", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Dabai AL" +SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0812", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Gemini 345" +SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0813", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="Gemini 345Lg" +SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0816", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="CAM-5330" +SUBSYSTEMS=="usb", ATTRS{idVendor}=="2bc5", ATTRS{idProduct}=="0817", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="CAM-5530" # OpenNI Modules SUBSYSTEM=="usb", ATTR{idProduct}=="0401", ATTR{idVendor}=="2bc5", MODE:="0666", OWNER:="root", GROUP:="video", SYMLINK+="astra"