From c66bdf2510e9a58d46ad4bd0b022b6d6e9baf9e6 Mon Sep 17 00:00:00 2001 From: Eason Yi Date: Fri, 12 Jul 2024 11:37:49 +0800 Subject: [PATCH] add setGimbalDownwardHome function --- gimbal_ctrl/driver/src/GX40/GX40_gimbal_driver.h | 1 + gimbal_ctrl/driver/src/GX40/GX40_gimbal_funtion.cpp | 6 ++++++ gimbal_ctrl/driver/src/amovGimbal/amov_gimbal.h | 1 + gimbal_ctrl/driver/src/amov_gimbal_interface.cpp | 10 ++++++++++ gimbal_ctrl/driver/src/amov_gimbal_interface_c.cpp | 5 +++++ gimbal_ctrl/driver/src/amov_gimbal_private.h | 1 + gimbal_ctrl/sv_gimbal.cpp | 6 ++++++ include/sv_gimbal.h | 1 + 8 files changed, 31 insertions(+) diff --git a/gimbal_ctrl/driver/src/GX40/GX40_gimbal_driver.h b/gimbal_ctrl/driver/src/GX40/GX40_gimbal_driver.h index 8f447b5..0a330aa 100644 --- a/gimbal_ctrl/driver/src/GX40/GX40_gimbal_driver.h +++ b/gimbal_ctrl/driver/src/GX40/GX40_gimbal_driver.h @@ -46,6 +46,7 @@ public: uint32_t setGimabalPos(const AMOV_GIMBAL_POS_T &pos); uint32_t setGimabalSpeed(const AMOV_GIMBAL_POS_T &speed); uint32_t setGimabalHome(void); + uint32_t setGimbalDownwardHome(void); uint32_t setGimbalZoom(AMOV_GIMBAL_ZOOM_T zoom, float targetRate = 0); uint32_t setGimbalFocus(AMOV_GIMBAL_ZOOM_T zoom, float targetRate = 0); diff --git a/gimbal_ctrl/driver/src/GX40/GX40_gimbal_funtion.cpp b/gimbal_ctrl/driver/src/GX40/GX40_gimbal_funtion.cpp index 5dab64c..17a2f77 100644 --- a/gimbal_ctrl/driver/src/GX40/GX40_gimbal_funtion.cpp +++ b/gimbal_ctrl/driver/src/GX40/GX40_gimbal_funtion.cpp @@ -65,6 +65,12 @@ uint32_t GX40GimbalDriver::setGimabalHome(void) return pack(GX40::GIMBAL_CMD_HOME, nullptr, 0); } +uint32_t GX40GimbalDriver::setGimbalDownwardHome(void) +{ + pack(GX40::GIMBAL_CMD_MODE_OVERLOCK, nullptr, 0); + return pack(GX40::GIMBAL_CMD_HOME, nullptr, 0); +} + /** * The function `takePic` in the `GX40GimbalDriver` class takes a picture using the GX40 gimbal and * returns the packed command. diff --git a/gimbal_ctrl/driver/src/amovGimbal/amov_gimbal.h b/gimbal_ctrl/driver/src/amovGimbal/amov_gimbal.h index 2e95126..bf53345 100755 --- a/gimbal_ctrl/driver/src/amovGimbal/amov_gimbal.h +++ b/gimbal_ctrl/driver/src/amovGimbal/amov_gimbal.h @@ -75,6 +75,7 @@ namespace amovGimbal uint32_t setGimabalFollowSpeed(const AMOV_GIMBAL_POS_T &followSpeed); uint32_t setGimabalHome(void); + uint32_t setGimbalDownwardHome(void); uint32_t setGimbalZoom(AMOV_GIMBAL_ZOOM_T zoom, float targetRate = 0); uint32_t setGimbalFocus(AMOV_GIMBAL_ZOOM_T zoom, float targetRate = 0); uint32_t setGimbalROI(const AMOV_GIMBAL_ROI_T area); diff --git a/gimbal_ctrl/driver/src/amov_gimbal_interface.cpp b/gimbal_ctrl/driver/src/amov_gimbal_interface.cpp index ee70c11..97a3f67 100644 --- a/gimbal_ctrl/driver/src/amov_gimbal_interface.cpp +++ b/gimbal_ctrl/driver/src/amov_gimbal_interface.cpp @@ -80,6 +80,16 @@ uint32_t amovGimbal::IamovGimbalBase::setGimabalHome(void) return 0; } +uint32_t amovGimbal::gimbal::setGimbalDownwardHome(void) +{ + return ((amovGimbalBase*)(this->devHandle))->setGimbalDownwardHome(); +} + +uint32_t amovGimbal::IamovGimbalBase::setGimbalDownwardHome() +{ + return 0; +} + uint32_t amovGimbal::gimbal::setGimbalZoom(AMOV_GIMBAL_ZOOM_T zoom, float targetRate) { return ((amovGimbalBase *)(this->devHandle))->setGimbalZoom(zoom, targetRate); diff --git a/gimbal_ctrl/driver/src/amov_gimbal_interface_c.cpp b/gimbal_ctrl/driver/src/amov_gimbal_interface_c.cpp index d91a07a..6ab2623 100644 --- a/gimbal_ctrl/driver/src/amov_gimbal_interface_c.cpp +++ b/gimbal_ctrl/driver/src/amov_gimbal_interface_c.cpp @@ -66,6 +66,11 @@ uint32_t amovGimbalSetGimabalHome(void *handle) return ((amovGimbal::gimbal *)handle)->setGimabalHome(); } +uint32_t amovGimbalSetGimbalDownwardHome(void* handle) +{ + return ((amovGimbal::gimbal*)handle)->setGimbalDownwardHome(); +} + uint32_t amovGimbalSetGimbalZoom(AMOV_GIMBAL_ZOOM_T zoom, float targetRate, void *handle) { return ((amovGimbal::gimbal *)handle)->setGimbalZoom(zoom, targetRate); diff --git a/gimbal_ctrl/driver/src/amov_gimbal_private.h b/gimbal_ctrl/driver/src/amov_gimbal_private.h index feb3125..8b815b9 100644 --- a/gimbal_ctrl/driver/src/amov_gimbal_private.h +++ b/gimbal_ctrl/driver/src/amov_gimbal_private.h @@ -84,6 +84,7 @@ namespace amovGimbal virtual uint32_t setGimabalFollowSpeed(const AMOV_GIMBAL_POS_T &followSpeed); virtual uint32_t setGimabalHome(void); + virtual uint32_t setGimbalDownwardHome(void); virtual uint32_t setGimbalZoom(AMOV_GIMBAL_ZOOM_T zoom, float targetRate = 0); virtual uint32_t setGimbalFocus(AMOV_GIMBAL_ZOOM_T zoom, float targetRate = 0); virtual uint32_t setGimbalROI(const AMOV_GIMBAL_ROI_T area); diff --git a/gimbal_ctrl/sv_gimbal.cpp b/gimbal_ctrl/sv_gimbal.cpp index 7d7afb2..be3bee7 100644 --- a/gimbal_ctrl/sv_gimbal.cpp +++ b/gimbal_ctrl/sv_gimbal.cpp @@ -290,6 +290,12 @@ bool sv::Gimbal::setHome() } } +void sv::Gimbal::setGimbalDownwardHome(void) +{ + amovGimbal::gimbal* pdevTemp = (amovGimbal::gimbal*)this->dev; + pdevTemp->setGimbalDownwardHome(); +} + /** * This function sets the zoom level of a gimbal device and returns a boolean indicating success or * failure. diff --git a/include/sv_gimbal.h b/include/sv_gimbal.h index 2dfddf9..294e55b 100644 --- a/include/sv_gimbal.h +++ b/include/sv_gimbal.h @@ -181,6 +181,7 @@ namespace sv // Funtions bool setHome(); + void setGimbalDownwardHome(); bool setZoom(double x); bool setAutoZoom(int state); bool setAutoFocus(int state);