机械臂抓到摄像头检测目标需要进行一个坐标变换,将工件在摄像头下的坐标转化为机械臂的抓取物体的坐标值,如A物体在摄像头的坐标为(500,200),但相对于机械臂的坐标值可能为(50,20),此时我们需将将摄像头的坐标转化为机械臂的坐标。
本文所用资料:
下位机程序:
Arduino_Receive.zip
坐标记录和公式生成表格:
机械臂与摄像头坐标数据变换表.xlsx
一、首先获取物体的坐标
物体在机械臂的坐标
1.固定好机械臂和摄像头位置;
2.将程序烧
Arduino_Receive.zip录到下位机单片机中,并且给机械臂写一个坐标值并运动到相应位置(注意这里z轴的高度尽量跟最后运行的保持一致,如这里为-50,单位为mm):
注意:这个程序的初始位置和运动学公式的方向要参考机械臂初始位置调试进行调整。
3.将工件放置到夹爪末端;
4.此时程序中指定的坐标值即为工件在机械臂坐标系的坐标值;
物体在摄像头下的坐标
1.参考功能运行 《功能运行》中的“启动机械臂和摄像头程序”,打开摄像头检测画面查看工件在摄像头下的坐标值:
2.将机械臂的坐标值和摄像头的坐标值记录到一个电子表格中;
| 摄像头x | 摄像头y | 机械臂x | 机械臂y |
|---|---|---|---|
| xc | yc | xa | ya |
| -10 | 21 | 50 | 0 |
| -11 | 40 | 60 | 0 |
| -9 | 52 | 70 | 0 |
| -14 | 63 | 80 | 0 |
| -11 | 69 | 90 | 0 |
| -14 | 82 | 100 | 0 |
注意:每次移动机械臂只向一个方向移动,如上表中机械臂y=0,等距的增加x的值,从50-100,此时可以观察到摄像头的y值会随着机械臂x的变化而变化。
3.每个方向取至少等距10组数据;
二、获取坐标变化公式
1.从上面的步骤中我们将获取到2组数据:
a:摄像头y与机械臂x的一组关联数据;
| 摄像头y | 机械臂x |
|---|---|
| yc | xa |
| 21 | 50 |
| 40 | 60 |
| 52 | 70 |
| 63 | 80 |
| 69 | 90 |
| 82 | 100 |
b:摄像头x与机械臂y的一组关联数据;
| 摄像头x | 机械臂y |
|---|---|
| xc | ya |
| -9 | 0 |
| 26 | 10 |
| 53 | 20 |
| 89 | 30 |
| -45 | -10 |
| -78 | -20 |
| -108 | -30 |
2.接下来我们通过视频了解如何使用电子表格图表工具获得对应变换公式:
点击链接查看:20260323-1526.mp4
四、将公式导入到程序中
找到坐标变换公式所在位置:
cd Proj_Intelligent-Vision-Arm-Control/vision_arm_mcp/core/arm_control
找到文件夹下arm_move.py 文件并打开,将新的公式进行更新:
进行相应保存。
五、运行测试
参考功能运行完成一个绿色工件定位抓取。
点击链接查看:飞书20260323-153608.mp4




