最近实验室买了个云台,于是想要利用之前写的一个CUDA加速KCF的程序进行目标跟踪,同时利用PID控制云台,使云台能够实时跟踪目标运动,也就是目标框总是处于摄像头画面的中心。 首先要解决的问题就是如何实现上位机与云台之间的通信,串口利用的是RS485通信协议,关于RS485通信协议详解可以参见:https://blog.csdn.net/weixin_46251230/article/details/126684223 云台的控制是基于PELCO-D协议,具体协议指南参见:https://blog.csdn.net/u014436243/article/details/107639901 在python上解决串口通信的问题很简单,可以直接调用serial库,而在C++中就有些困难,尝试了很多办法,也有使用开源的C++编写的serial.h库,但是没有成功(可能是发送的数据类型的问题,而且当时编译的时候没有导入pthread库应该也是失败的原因,感兴趣的同学可以尝试一下),最终利用boost.asio库实现了串口通信。boost.asio库安装 一个简单的示例代码来检验boost.asio库是否安装成功
#include
#include
int main()
{
boost::asio::io_context io;
boost::asio::steady_timer t(io, boost::asio::chrono::seconds(5));
t.wait();
std::cout |