diff --git a/gimbal_ctrl/driver/src/GX40/GX40_gimbal_driver.h b/gimbal_ctrl/driver/src/GX40/GX40_gimbal_driver.h index 21e16e7..8f447b5 100644 --- a/gimbal_ctrl/driver/src/GX40/GX40_gimbal_driver.h +++ b/gimbal_ctrl/driver/src/GX40/GX40_gimbal_driver.h @@ -58,6 +58,7 @@ public: void *extenData); uint32_t setGNSSInfo(float lng, float lat, float alt, uint32_t nState, float relAlt); + uint32_t setDownwardShootingMode(); uint32_t extensionFuntions(void *cmd); static amovGimbal::amovGimbalBase *creat(amovGimbal::IOStreamBase *_IO) { diff --git a/gimbal_ctrl/driver/src/GX40/GX40_gimbal_funtion.cpp b/gimbal_ctrl/driver/src/GX40/GX40_gimbal_funtion.cpp index 719958a..3fc53ae 100644 --- a/gimbal_ctrl/driver/src/GX40/GX40_gimbal_funtion.cpp +++ b/gimbal_ctrl/driver/src/GX40/GX40_gimbal_funtion.cpp @@ -249,3 +249,8 @@ uint32_t GX40GimbalDriver::setGNSSInfo(float lng, float lat, float alt, uint32_t carrierStateMutex.unlock(); return sizeof(GX40::GIMBAL_SECONDARY_MASTER_FRAME_T); } + +uint32_t GX40GimbalDriver::setDownwardShootingMode() +{ + return pack(GX40::GIMBAL_CMD_MODE_OVERLOCK,nullptr,0); +} \ No newline at end of file diff --git a/gimbal_ctrl/driver/src/amovGimbal/amov_gimbal.h b/gimbal_ctrl/driver/src/amovGimbal/amov_gimbal.h index ef0ac0d..2e95126 100755 --- a/gimbal_ctrl/driver/src/amovGimbal/amov_gimbal.h +++ b/gimbal_ctrl/driver/src/amovGimbal/amov_gimbal.h @@ -87,6 +87,7 @@ namespace amovGimbal const AMOV_GIMBAL_VELOCITY_T &seppd, const AMOV_GIMBAL_VELOCITY_T &acc, void *extenData); uint32_t setGNSSInfo(float lng, float lat, float alt, uint32_t nState, float relAlt); + uint32_t setDownwardShootingMode(); uint32_t extensionFuntions(void *cmd); // block functions diff --git a/gimbal_ctrl/driver/src/amovGimbal/amov_gimbal_c.h b/gimbal_ctrl/driver/src/amovGimbal/amov_gimbal_c.h index 9d5f27f..06982fd 100644 --- a/gimbal_ctrl/driver/src/amovGimbal/amov_gimbal_c.h +++ b/gimbal_ctrl/driver/src/amovGimbal/amov_gimbal_c.h @@ -40,6 +40,7 @@ extern "C" AMOV_GIMBAL_VELOCITY_T *speed, AMOV_GIMBAL_VELOCITY_T *acc, void *extenData, void *handle); uint32_t amovGimbalSetGNSSInfo(float lng, float lat, float alt, uint32_t nState, float relAlt, void *handle); + uint32_t amovGimbalSetDownwardShootingMode(void* handle); uint32_t amovGimbalExtensionFuntions(void *cmd, void *handle); void getGimabalState(AMOV_GIMBAL_STATE_T *state, void *handle); void getGimbalType(char *type, void *handle); diff --git a/gimbal_ctrl/driver/src/amov_gimbal_interface.cpp b/gimbal_ctrl/driver/src/amov_gimbal_interface.cpp index ffc74f5..ee70c11 100644 --- a/gimbal_ctrl/driver/src/amov_gimbal_interface.cpp +++ b/gimbal_ctrl/driver/src/amov_gimbal_interface.cpp @@ -168,6 +168,17 @@ uint32_t amovGimbal::IamovGimbalBase::setGNSSInfo(float lng, float lat, float al return 0; } +uint32_t amovGimbal::gimbal::setDownwardShootingMode() +{ + return ((amovGimbalBase*)(this->devHandle))->setDownwardShootingMode(); +} + +uint32_t amovGimbal::IamovGimbalBase::setDownwardShootingMode() +{ + return 0; +} + + uint32_t amovGimbal::gimbal::extensionFuntions(void *cmd) { return ((amovGimbalBase *)(this->devHandle))->extensionFuntions(cmd); diff --git a/gimbal_ctrl/driver/src/amov_gimbal_interface_c.cpp b/gimbal_ctrl/driver/src/amov_gimbal_interface_c.cpp index abb3264..d91a07a 100644 --- a/gimbal_ctrl/driver/src/amov_gimbal_interface_c.cpp +++ b/gimbal_ctrl/driver/src/amov_gimbal_interface_c.cpp @@ -110,6 +110,12 @@ uint32_t amovGimbalSetGNSSInfo(float lng, float lat, float alt, uint32_t nState, return ((amovGimbal::gimbal *)handle)->setGNSSInfo(lng, lat, alt, nState, relAlt); } +uint32_t amovGimbalSetDownwardShootingMode(void* handle) +{ + return ((amovGimbal::gimbal*)handle)->setDownwardShootingMode(); +} + + uint32_t amovGimbalExtensionFuntions(void *cmd, void *handle) { return ((amovGimbal::gimbal *)handle)->extensionFuntions(cmd); diff --git a/gimbal_ctrl/driver/src/amov_gimbal_private.h b/gimbal_ctrl/driver/src/amov_gimbal_private.h index 1380639..feb3125 100644 --- a/gimbal_ctrl/driver/src/amov_gimbal_private.h +++ b/gimbal_ctrl/driver/src/amov_gimbal_private.h @@ -92,8 +92,10 @@ namespace amovGimbal virtual uint32_t attitudeCorrection(const AMOV_GIMBAL_QUATERNION_T &quaterion, const AMOV_GIMBAL_VELOCITY_T &speed, const AMOV_GIMBAL_VELOCITY_T &acc, void *extenData); virtual uint32_t attitudeCorrection(const AMOV_GIMBAL_POS_T &pos, const AMOV_GIMBAL_VELOCITY_T &seppd, const AMOV_GIMBAL_VELOCITY_T &acc, void *extenData); virtual uint32_t setGNSSInfo(float lng, float lat, float alt, uint32_t nState, float relAlt); + virtual uint32_t setDownwardShootingMode(); virtual uint32_t extensionFuntions(void *cmd); + // block functions virtual bool setGimbalPosBlock(const AMOV_GIMBAL_POS_T &pos); virtual bool setGimabalHomeBlock(void); diff --git a/gimbal_ctrl/sv_gimbal.cpp b/gimbal_ctrl/sv_gimbal.cpp index 4e97e86..7d7afb2 100644 --- a/gimbal_ctrl/sv_gimbal.cpp +++ b/gimbal_ctrl/sv_gimbal.cpp @@ -554,6 +554,13 @@ void sv::Gimbal::attitudeCorrection(const GimbalPosT &pos, pdevTemp->attitudeCorrection(temp_p, temp_v1, temp_v2, extenData); } +void sv::Gimbal::setDownwardShootingMode() +{ + amovGimbal::gimbal* pdevTemp = (amovGimbal::gimbal*)this->dev; + pdevTemp->setDownwardShootingMode(); +} + + sv::Gimbal::~Gimbal() { removeIO(this); diff --git a/include/sv_gimbal.h b/include/sv_gimbal.h index a3ab82e..2dfddf9 100644 --- a/include/sv_gimbal.h +++ b/include/sv_gimbal.h @@ -194,6 +194,8 @@ namespace sv const GimbalVelocityT &speed, const GimbalVelocityT &acc, void *extenData); + void setDownwardShootingMode(); + //! Set gimbal angles /*! \param roll: eular roll angle (-60, 60) degree diff --git a/samples/demo/gimbal_detection_with_clicked_tracking.cpp b/samples/demo/gimbal_detection_with_clicked_tracking.cpp index d4829cf..84edd95 100644 --- a/samples/demo/gimbal_detection_with_clicked_tracking.cpp +++ b/samples/demo/gimbal_detection_with_clicked_tracking.cpp @@ -35,21 +35,24 @@ void gimbalNoTrack(void) int main(int argc, char *argv[]) { // 实例化吊舱 - gimbal = new sv::Gimbal(sv::GimbalType::G1, sv::GimbalLink::SERIAL); + gimbal = new sv::Gimbal(sv::GimbalType::GX40, sv::GimbalLink::SERIAL); // 使用 /dev/ttyUSB0 作为控制串口 gimbal->setSerialPort("/dev/ttyUSB0"); // 以GimableCallback作为状态回调函数启用吊舱控制 gimbal->open(GimableCallback); + + gimbal->setDownwardShootingMode(); + // 定义相机 sv::Camera cap; // 设置相机流媒体地址为 192.168.2.64 - cap.setIp("192.168.2.64"); + cap.setIp("192.168.144.108"); // 设置获取画面分辨率为720P cap.setWH(1280, 720); // 设置视频帧率为30帧 cap.setFps(30); // 开启相机 - cap.open(sv::CameraType::G1); + cap.open(sv::CameraType::GX40); // 定义一个新的窗口,可在上面进行框选操作 cv::namedWindow(RGB_WINDOW);