目录
概要
这篇帖子记录了我开发机器人位姿反馈控制系统所碰到的问题
硬件
- KUKA KR 16 R1610机器人
- KUKA KR_C4控制柜
- API Radian激光跟踪仪
- 1.5英寸靶球
- Windows电脑
- 网线
前情提要
验证机器人和激光跟踪仪的属性页是否兼容
按照激光跟踪仪的属性页设置机器人的属性页,看看是否报错
结论:没问题
关于交互界面
可以用一个switch结构外加一个整形路径变量来做交互界面
apidevice.h与WinSock2.h冲突
由于apidevice.h中用到了winsock.h,会与WinSock2.h冲突,故需要把WinSock2.h放在前面
环境变量
API部分需要用到动态链接库,故需要设置环境变量
熟悉函数编写的一些规范
看其他人写的库大量会用到const,故了解了一下
Eigen代码编码保存问题
Eigen库使用中文编码保存时会报C4819警告,我用的解决方案如下
项目路径设置
由于项目每天都会备份一次,为了不每次都修改路径,于是了解了一点VS中宏的用法
API的库中connect函数用到的函数指针必须为static
对应的,函数内部的变量也需要为static
API的库导致的bind函数冲突
API库的头文件中不知道为什么用了
using namespace std
导致后面使用bind的时候其实用的是std::bind,导致问题
目前把头文件中的前述语句删了,貌似还可以正常用
线程控制需要给socket通讯的recv函数设置超时时间
由于控制线程是否结束是通过每次循环的开始处检查标志位实现的,因此如果recv函数一直卡着的话线程没法正确退出
所以这里给他设置了一个超时时间,主线程修改标志位之后,即使卡在了recv处,也会因为超时进入到下一个循环,并检查标志位