方程形式为:W = T*C 其中C为相机坐标系上的点构成的矩阵, W为世界坐标系上点构成的矩阵。
在空间中放置一块各棋盘点不在同一平面的棋盘图,获取其角点在双目相机坐标系中的位置。并手动计算世界坐标(以棋盘上某点为原点)。由此获得了由棋盘各点的世界坐标矩阵和相机坐标矩阵,利用cv::solve()函数求解方程。
本项目使用了C++11的一些特性,所以在不支持C++11的编译器上不能编译成功。在Ubuntu 命令行下输入:
mkdir build
cd build
cmake ..
make
./arm_robot_track
当看到创建了三个窗口时,可以选择工作模式。
- 按下p键可以进行求解转换矩阵。
在左右两个视图分别选取棋盘所在区域,当棋盘上各点被画上标记点后,按任意键确认
请确认标记连线的方向,并对DataProcess::prepareChessBoardMatrix()作相应调整
- 按下t键进入track mode
鼠标依次选取各个包含有标记点的区域(如棋盘格)