阿木实验室通用吊舱驱动库(C++ & python)
介绍
amov-gimbal-libs
是阿木实验室推出的多平台吊舱驱动库,旨在实现多个平台对于多种阿木实验室吊舱产品的支持,助力用户在不同的产品间快速切换,仅需少量改动现有代码- 目前支持吊舱
- 阿木实验室G1
- 阿木实验室Q10f
- 阿木实验室GX40
- 品灵AT10
- 目前支持平台
- X86_64-linux
- X86_64-Windows
- i386-linux
- i386-Windows
- aarch64-linux
- aarch32-hf-linux
- aarch32-sf-linux
快速入门
下载SDK:
-
克隆仓库
git clone https://gitee.com/amovlab/amov-gimbal-libs.git
软件依赖
安装及使用云台库
本页教程适用于Tags
≥V2.0.0
的版本
由于库将根据实际情况进行更新,本文档仅作参照,最终以Gitee仓库的readme.md为准
Windows
- 无需安装,在编写程序时正确引入 /inc 目录下的头文件 以及/lib 目录下指定架构的dll文件
- 运行应用时将对应的dll文件复制至相同路径下即可
- 导入方式可参考
CMakeList.txt
文件的处理方式 如下所示
target_link_libraries(${PROJECT_NAME} libAMOV_Gimbal.dll) #链接 AMOV_Gimbal库
link_directories(${libAMOV_Gimbal_dir}) #指定库文件目录 libAMOV_Gimbal_dir即为库文件所在的目录
target_include_directories(${PROJECT_NAME} ${inc_dir}) #指定头文件目录 inc_dir即为库文件路径所在的目录
Linux
sudo cp lib/<对应CPU及系统架构>/libAMOV_Gimbal.so /usr/lib/ #库文件
sudo cp -r inc/amovGimbal /usr/include/ #头文件
C++ 例程
正确安装AmovGimbal库后即可尝试对例程进行编译。
构建例程
Windows
cmake -B build -G "MinGW Makefiles"
cmake --build build
Linux
cmake -B build
cmake --build build
运行例程
Windos
cp lib/<对应CPU架构>-win/libAMOV_Gimbal.dll build/ #复制运行库
cp build/example/serial/libserial.dll build/ #复制串行接口库
./build/example_test.exe COM1 G1 #以运行G1吊舱,使用COM1端口为例
Linux
sudo cp build/example/serial/libserial.so /usr/lib/ #安装串口库
chmod 777 /dev/ttyUSB0 #赋予串口权限
./build/example_test /dev/ttyUSB0 G1 #以运行G1吊舱,使用/dev/ttyUSB0端口为例
- 运行成功云台将间隔约2S向正方向与初始点间摆动并在控制台输出如下所示姿态信息
GIMBAL_CMD_RCV_POS
=============================================
HALL_yaw: 0.00
HALL_roll: 0.00
HALL_pitch: 0.00
GYRO_yaw: 0.00
GYRO_roll: 0.00
GYRO_pitch: 0.00
python 例程
- python例程通过调用ctypes中间层
/example/2py.cpp
中实现,该文件在构建C++例程时构建 - 因此使用python例程前必须完成C++例程的构建
修改云台种类及使用端口
修改example/example.py
文件的以下位置
# 运行的设备名
defname = b'G1' #设备类型为 G1
# 装载接口库
if (sys.platform == "linux"):
gimbal = CDLL("libAMOV_Gimbal_python.so")
defport = b'/dev/ttyUSB0' #使用/dev/ttyUSB0端口 linux下有效 根据实际情况修改
else:
gimbal = CDLL("libAMOV_Gimbal_python")
defport = b'COM3' #使用COM3端口 windos下有效 根据实际情况修改
启动云台控制 python 例程
Windos
cp lib/<对应CPU架构>-win/libAMOV_Gimbal.dll example/
cp build/example/serial/libserial.dll example/
cp build/libAMOV_Gimbal_python.dll example/
cd example/
python example.py
Linux
sudo cp build/libAMOV_Gimbal_python.so /usr/lib/
chmod 777 /dev/ttyUSB0 #赋予串口权限
sudo chmod +x example/example.py #赋予可执行权限
python3 example/example.py
这个例程实现了云台在20°(roll),30°(pitch),40°(yaw)姿态与初始姿态往复运动
构建中间层
- 下面提供一个用于构建
AMOV_Gimbal_python
库的CMakeList.txt
实现参考(位于根目录):
#构建前需正确安装库
add_subdirectory(example/serial) #添加串口子模块
add_library(AMOV_Gimbal_python SHARED example/2py.cpp) #指定构建目标
target_link_libraries(AMOV_Gimbal_python serial AMOV_Gimbal) #链接串口库、AMOV_Gimbal库
target_include_directories(AMOV_Gimbal_python #指定头文件
PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}
)
启动图像获取 python 例程
- 安装 opencv-python
- 替换
example/example_stream_cam_image.py
中的以下部分为控制器中的码流地址
pipline_str = "rtsp://192.168.2.64:/H264?W=1920&H=1080&FPS=30&BR=4900000"
- 运行
python3 example/example_stream_cam_image.py
关闭该python例程需要通过Ctrl+c
的方式关闭终端
库及构建信息
该库编译采用C++11标准,使用pthread库
该库采用交叉编译技术于 Ubuntu 20.04.6 LTS 系统中进行构建 下面是针对不同的平台采用的编译器信息
- x86_64-linux/i386-linux: gcc/g++ (version 9.3.0)
- x86_64-Windows/i386-Windows: w64-mingw32-gcc-posix/w64-mingw32-g++-posix (gcc version 9.3.0)
- arrch64-linux: aarch64-linux-gnu-gcc/aarch64-linux-gnu-g++ (gcc version 9.3.0)
- arm-hf-linux: arm-linux-gnu-gcc-hf/arm-linux-gnu-g++-hf (gcc version 9.3.0)
- arm-sf-linux: arm-linux-gnu-gcc-sf/arm-linux-gnu-g++-sf (gcc version 9.3.0)
用户可根据这些信息分析可能存在的兼容性问题