首先标定要确定机械手和相机的安装方式选择平台属性。
一:眼在手上即标定的对象是相机
二:眼在手外即标定的对象是平台
输入原点坐标即机械手拍照点位置(X,Y,C,R)
选择X,Y,R轴方向及运动步长(写入整形)
点击【点位生成】输出数据表报。
附上界面效果展示

   //加密狗访问private void button1_Click(object sender, EventArgs e){System.Diagnostics.Process.Start("Explorer.exe", "http://localhost:1947/");}//退出事件private void button2_Click(object sender, EventArgs e){Process[] pc=Process.GetProcesses();foreach (var item in pc)//{try{if (item.ProcessName =="iexplore"){item.Kill();}}catch (System.Exception ex){Console.WriteLine( ex.Message  );}}this.Close();}//生成文件private void button3_Click(object sender, EventArgs e){string path=@"D:\Luster";string files=textBox2.Text;if(files==""){files="1.工程;2.软件;3.数据;4.图片;5.文档;6.标定;7.其他";textBox2.Text=files;}textBox1.Text = Directory.Exists(path).ToString();if (textBox1.Text=="False"){string[] filepaths=files.Split(';');for (int i = 0; i < filepaths.Length; i++){Directory.CreateDirectory(path + "\\" + filepaths[i]);}textBox2.Text = files;MessageBox.Show("文件创建完成!!");}else{MessageBox.Show("文件已创建!!");}}//点击按钮生成标定坐标//需要 原点坐标   轴方向   步长   输出文件位置 private void button4_Click(object sender, EventArgs e){if (Reasult()){StringBuilder sb = new StringBuilder();int stepX=int.Parse(textBox5.Text);int stepY=int.Parse(textBox8.Text);int stepR=int.Parse(textBox6.Text);int selectnum=SelcetNums();List<List<double>> A = CalibrationPointList(stepX, stepY, stepR, selectnum);for (int i = 0; i < A.Count; i++){for (int j = 0; j < A[i].Count; j++){sb.Append(A[i][j]);sb.Append(",");}sb.Append("\r\n");}textBox7.Text=sb.ToString();string fileName = @"C:\Users\至尊宝\Desktop\标定文件.csv";using (FileStream fsw = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.Write)){byte[] buffer = Encoding.Default.GetBytes(textBox7.Text);fsw.Write(buffer,0, buffer.Length);} }else{MessageBox.Show("请填入正确的参数信息!");}}//判断条件符合要求private bool Reasult(){if (textBox3.Text.Count() > 4 && (comboBox4.Text == "顺时针" || comboBox4.Text == "逆时针") && (comboBox3.Text == "平台" || comboBox3.Text == "相机") && (comboBox1.Text == "向左" || comboBox1.Text == "向右") && (comboBox2.Text == "向上" || comboBox2.Text == "向下") && Regex.IsMatch(textBox5.Text, @"^\d+$") && Regex.IsMatch(textBox6.Text, @"^\d+$")){return true;}else{return false;}}private List<List<double>> CalibrationPointList(int X,int Y,int R,int SelcectNum){double X1=0;double Y1=0;double C1=0;double R1=0;List<List<double>> L = new List<List<double>>();string[] ArrayPoint = textBox3.Text.Split(',');double XPoint =Convert.ToDouble(ArrayPoint[0]);  //Xdouble Ypoint = Convert.ToDouble(ArrayPoint[1]); //Ydouble Cpoint = Convert.ToDouble(ArrayPoint[2]);double Rpoint = Convert.ToDouble(ArrayPoint[3]);  //Rint Num = SelcectNum > 0 ? 1 : -1;SelcectNum = Math.Abs(SelcectNum);if (SelcectNum == 1 ){for (int i = 0; i < 8; i++){if (i ==0){X1 = XPoint;Y1 = Ypoint;C1 = Cpoint;R1 = Rpoint;}if (i == 1){X1 = XPoint+X;Y1 = Ypoint+Y;C1 = Cpoint;R1 = Rpoint;}if (i == 2){X1 = XPoint - X;Y1 = Ypoint - Y;C1 = Cpoint;R1 = Rpoint;}if (i == 3){X1 = XPoint - X;Y1 = Ypoint + Y;C1 = Cpoint;R1 = Rpoint;}if (i == 4){X1 = XPoint + X;Y1 = Ypoint - Y;C1 = Cpoint;R1 = Rpoint;}if (i == 5){X1 = XPoint;Y1 = Ypoint;C1 = Cpoint;R1 = Rpoint;}if (i == 6){X1 = XPoint;Y1 = Ypoint;C1 = Cpoint;R1 = Rpoint + R * Num;}if (i == 7){X1 = XPoint;Y1 = Ypoint;C1 = Cpoint;R1 = Rpoint - R * Num;}L.Add(Rownums(X1, Y1, C1, R1));}}if (SelcectNum == 2){for (int i = 0; i < 8; i++){if (i == 0){X1 = XPoint;Y1 = Ypoint;C1 = Cpoint;R1 = Rpoint;}if (i == 1){X1 = XPoint + X;Y1 = Ypoint - Y;C1 = Cpoint;R1 = Rpoint;}if (i == 2){X1 = XPoint - X;Y1 = Ypoint + Y;C1 = Cpoint;R1 = Rpoint;}if (i == 3){X1 = XPoint - X;Y1 = Ypoint - Y;C1 = Cpoint;R1 = Rpoint;}if (i == 4){X1 = XPoint + X;Y1 = Ypoint + Y;C1 = Cpoint;R1 = Rpoint;}if (i == 5){X1 = XPoint;Y1 = Ypoint;C1 = Cpoint;R1 = Rpoint;}if (i == 6){X1 = XPoint;Y1 = Ypoint;C1 = Cpoint;R1 = Rpoint + R * Num;}if (i == 7){X1 = XPoint;Y1 = Ypoint;C1 = Cpoint;R1 = Rpoint - R * Num;}L.Add(Rownums(X1, Y1, C1, R1));}}if (SelcectNum == 3){for (int i = 0; i < 8; i++){if (i == 0){X1 = XPoint;Y1 = Ypoint;C1 = Cpoint;R1 = Rpoint;}if (i == 1){X1 = XPoint - X;Y1 = Ypoint + Y;C1 = Cpoint;R1 = Rpoint;}if (i == 2){X1 = XPoint + X;Y1 = Ypoint - Y;C1 = Cpoint;R1 = Rpoint;}if (i == 3){X1 = XPoint + X;Y1 = Ypoint + Y;C1 = Cpoint;R1 = Rpoint;}if (i == 4){X1 = XPoint - X;Y1 = Ypoint - Y;C1 = Cpoint;R1 = Rpoint;}if (i == 5){X1 = XPoint;Y1 = Ypoint;C1 = Cpoint;R1 = Rpoint;}if (i == 6){X1 = XPoint;Y1 = Ypoint;C1 = Cpoint;R1 = Rpoint + R * Num;}if (i == 7){X1 = XPoint;Y1 = Ypoint;C1 = Cpoint;R1 = Rpoint - R * Num;}L.Add(Rownums(X1, Y1, C1, R1));}}if (SelcectNum == 4){for (int i = 0; i < 8; i++){if (i == 0){X1 = XPoint;Y1 = Ypoint;C1 = Cpoint;R1 = Rpoint;}if (i == 1){X1 = XPoint - X;Y1 = Ypoint - Y;C1 = Cpoint;R1 = Rpoint;}if (i == 2){X1 = XPoint + X;Y1 = Ypoint + Y;C1 = Cpoint;R1 = Rpoint;}if (i == 3){X1 = XPoint + X;Y1 = Ypoint - Y;C1 = Cpoint;R1 = Rpoint;}if (i == 4){X1 = XPoint - X;Y1 = Ypoint + Y;C1 = Cpoint;R1 = Rpoint;}if (i == 5){X1 = XPoint;Y1 = Ypoint;C1 = Cpoint;R1 = Rpoint;}if (i == 6){X1 = XPoint;Y1 = Ypoint;C1 = Cpoint;R1 = Rpoint + R * Num;}if (i == 7){X1 = XPoint;Y1 = Ypoint;C1 = Cpoint;R1 = Rpoint - R * Num;}L.Add(Rownums(X1, Y1, C1, R1));}}if (SelcectNum == 5){for (int i = 0; i < 8; i++){if (i == 0){X1 = XPoint;Y1 = Ypoint;C1 = Cpoint;R1 = Rpoint;}if (i == 1){X1 = XPoint - X;Y1 = Ypoint - Y;C1 = Cpoint;R1 = Rpoint;}if (i == 2){X1 = XPoint + X;Y1 = Ypoint + Y;C1 = Cpoint;R1 = Rpoint;}if (i == 3){X1 = XPoint + X;Y1 = Ypoint - Y;C1 = Cpoint;R1 = Rpoint;}if (i == 4){X1 = XPoint - X;Y1 = Ypoint + Y;C1 = Cpoint;R1 = Rpoint;}if (i == 5){X1 = XPoint;Y1 = Ypoint;C1 = Cpoint;R1 = Rpoint;}if (i == 6){X1 = XPoint;Y1 = Ypoint;C1 = Cpoint;R1 = Rpoint - R * Num;}if (i == 7){X1 = XPoint;Y1 = Ypoint;C1 = Cpoint;R1 = Rpoint + R * Num;}L.Add(Rownums(X1, Y1, C1, R1));}}if (SelcectNum == 6){for (int i = 0; i < 8; i++){if (i == 0){X1 = XPoint;Y1 = Ypoint;C1 = Cpoint;R1 = Rpoint;}if (i == 1){X1 = XPoint - X;Y1 = Ypoint + Y;C1 = Cpoint;R1 = Rpoint;}if (i == 2){X1 = XPoint + X;Y1 = Ypoint - Y;C1 = Cpoint;R1 = Rpoint;}if (i == 3){X1 = XPoint + X;Y1 = Ypoint + Y;C1 = Cpoint;R1 = Rpoint;}if (i == 4){X1 = XPoint - X;Y1 = Ypoint - Y;C1 = Cpoint;R1 = Rpoint;}if (i == 5){X1 = XPoint;Y1 = Ypoint;C1 = Cpoint;R1 = Rpoint;}if (i == 6){X1 = XPoint;Y1 = Ypoint;C1 = Cpoint;R1 = Rpoint - R * Num;}if (i == 7){X1 = XPoint;Y1 = Ypoint;C1 = Cpoint;R1 = Rpoint + R * Num;}L.Add(Rownums(X1, Y1, C1, R1));}}if (SelcectNum == 7){for (int i = 0; i < 8; i++){if (i == 0){X1 = XPoint;Y1 = Ypoint;C1 = Cpoint;R1 = Rpoint;}if (i == 1){X1 = XPoint + X;Y1 = Ypoint - Y;C1 = Cpoint;R1 = Rpoint;}if (i == 2){X1 = XPoint - X;Y1 = Ypoint + Y;C1 = Cpoint;R1 = Rpoint;}if (i == 3){X1 = XPoint - X;Y1 = Ypoint - Y;C1 = Cpoint;R1 = Rpoint;}if (i == 4){X1 = XPoint + X;Y1 = Ypoint + Y;C1 = Cpoint;R1 = Rpoint;}if (i == 5){X1 = XPoint;Y1 = Ypoint;C1 = Cpoint;R1 = Rpoint;}if (i == 6){X1 = XPoint;Y1 = Ypoint;C1 = Cpoint;R1 = Rpoint - R * Num;}if (i == 7){X1 = XPoint;Y1 = Ypoint;C1 = Cpoint;R1 = Rpoint + R * Num;}L.Add(Rownums(X1, Y1, C1, R1));}}if (SelcectNum == 8){for (int i = 0; i < 8; i++){if (i == 0){X1 = XPoint;Y1 = Ypoint;C1 = Cpoint;R1 = Rpoint;}if (i == 1){X1 = XPoint + X;Y1 = Ypoint + Y;C1 = Cpoint;R1 = Rpoint;}if (i == 2){X1 = XPoint - X;Y1 = Ypoint - Y;C1 = Cpoint;R1 = Rpoint;}if (i == 3){X1 = XPoint - X;Y1 = Ypoint + Y;C1 = Cpoint;R1 = Rpoint;}if (i == 4){X1 = XPoint + X;Y1 = Ypoint - Y;C1 = Cpoint;R1 = Rpoint;}if (i == 5){X1 = XPoint;Y1 = Ypoint;C1 = Cpoint;R1 = Rpoint;}if (i == 6){X1 = XPoint;Y1 = Ypoint;C1 = Cpoint;R1 = Rpoint - R * Num;}if (i == 7){X1 = XPoint;Y1 = Ypoint;C1 = Cpoint;R1 = Rpoint + R * Num;}L.Add(Rownums(X1, Y1, C1, R1));}}return L;}private List<double> Rownums(double X,double Y,double C,double R){List<double> a = new List<double>();a.Add(X);a.Add(Y);a.Add(C);a.Add(R);return a;}//返回指定类型private int SelcetNums(){int index = 0;string attribute = comboBox3.Text;string Xattribute = comboBox1.Text;string Yattribute = comboBox2.Text;string Rattribute = comboBox4.Text;if (attribute=="平台"){if (Rattribute=="顺时针"){if (Xattribute == "向右" && Yattribute == "向下"){index=1;}else if (Xattribute == "向右" && Yattribute == "向上"){index = 2;}else if (Xattribute == "向左" && Yattribute == "向下"){index = 3;}else if (Xattribute == "向左" && Yattribute == "向上"){index = 4;}}else{if (Xattribute == "向右" && Yattribute == "向下"){index = -1;}else if (Xattribute == "向右" && Yattribute == "向上"){index = -2;}else if (Xattribute == "向左" && Yattribute == "向下"){index = -3;}else if (Xattribute == "向左" && Yattribute == "向上"){index = -4;}}}else{if (Rattribute == "顺时针"){if (Xattribute == "向右" && Yattribute == "向下"){index = 5;}else if (Xattribute == "向右" && Yattribute == "向上"){index = 6;}else if (Xattribute == "向左" && Yattribute == "向下"){index = 7;}else if (Xattribute == "向左" && Yattribute == "向上"){index = 8;}}else{if (Xattribute == "向右" && Yattribute == "向下"){index = -5;}else if (Xattribute == "向右" && Yattribute == "向上"){index = -6;}else if (Xattribute == "向左" && Yattribute == "向下"){index = -7;}else if (Xattribute == "向左" && Yattribute == "向上"){index = -8;}}}return index;}private void Form1_Load(object sender, EventArgs e){}//实时显示世间private void timer1_Tick(object sender, EventArgs e){label9.Text = DateTime.Now.ToString();}private void groupBox1_Enter(object sender, EventArgs e){}

关于机器视觉机械手与相机标定走位点位的计算模块相关推荐

  1. 机器视觉篇之相机标定

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|新机器视觉 在图像测量过程以及机器视觉应用中,为确定空间 ...

  2. 《机器视觉算法与应用》第3章 机器视觉算法之相机标定——学习笔记

    文章目录 3.9 相机标定 3.9.1 面阵相机的摄像机模型 针孔摄像机模型的透视投影关系 3.9.2 线阵相机的相机模型 3.9.3 标定过程 第一个需求 第二个需求 3.9.4 从单幅图像中提取世 ...

  3. OpenCV-Python相机标定

    OpenCV-Python相机标定--张正友标定法为例(待更新) 写在前面 数学/物理原理(不更新) 编程实现 参考与致谢 写在前面 为什么机器视觉要用相机标定:直接目的是求出相机的内.外参数,以及畸 ...

  4. 立体视觉入门指南:相机标定之Zhang式标定法

    作者丨李迎松@知乎 来源丨https://zhuanlan.zhihu.com/p/378819083 编辑丨3D视觉工坊 亲爱的同学们,我们的世界是3D世界,我们的双眼能够观测三维信息,帮助我们感知 ...

  5. 立体视觉入门指南(3):相机标定之张式标定法【超详细值得收藏】

    亲爱的同学们,我们的世界是3D世界,我们的双眼能够观测三维信息,帮助我们感知距离,导航避障,从而翱翔于天地之间.而当今世界是智能化的世界,我们的科学家们探索各种机器智能技术,让机器能够拥有人类的三维感 ...

  6. 机器视觉的相机标定到底是什么?

    转载:https://www.zhihu.com/question/29448299 之前做识别算法现在开始学习标定.用matlab. 刚开始看标定,先从单个相机开始看.标定板为何需要在不同角度拍20 ...

  7. 机器视觉-相机标定及畸变矫正

    摘要:本文首先介绍了针孔相机模型(线性模型),然后推导四个坐标轴变换的关系,引出R.T.K.D中包含相机的5个内参,6个外参.然后介绍相机畸变的原因以及畸变模型(非线性模型),引出相机的5个畸变参数. ...

  8. Halcon学习笔记——机器视觉应用工程开发思路及相机标定

    机器视觉应用工程开发思路 机器视觉应用工程主要可划分为两大部分,硬件部分和软件部分. 1.硬件部分,硬件的选型至关重要,决定了后续工作是否可以正常开展,其中关键硬件部分包括:光源,相机以及镜头. 2. ...

  9. 工业现场相机坐标系和机械手坐标系的标定

    原文:https://blog.csdn.net/kaychangeek/article/details/73878994 参考:https://blog.csdn.net/qq_16481211/a ...

最新文章

  1. WCF 4.0 进阶系列 – 第十二章 实现单向操作和异步操作(中)
  2. caffe-cuda测试
  3. 更新ubuntu软件源
  4. (转载)Android性能优化典范
  5. Sdk Manager.exe 闪退问题的解决
  6. harbor镜像清理:使用registry:2.6.2-photon garbage-collect
  7. jenkins搭建_自动化测试系列之jenkins配置搭建环境
  8. python弹出窗口 闪烁_Python。得到闪烁/闪烁的窗口
  9. puppet变量、数据类型及类(03)
  10. android 音乐播放器----歌词在线下载
  11. powerpoint 2016表格中添加行
  12. distcp集群迁移问题总结
  13. 为什么开发环境如此之乱
  14. kubernetes Container、Pod、Replicaset、Service、Deployment、Lable、Statefulset关系和区别
  15. vs 执行单个文件,如cpp
  16. 邮件客户端 gmail hotmail
  17. 华东师范大学计算机考研专业,2017年华东师范大学计算机科学与软件工程学院考研专业目录...
  18. ssm+Vue计算机毕业设计益学(程序+LW文档)
  19. Angular2属性绑定
  20. sklearn代码11 1-熵

热门文章

  1. Back-off restarting failed container报错
  2. CS231n的第三次作业之循环神经网络
  3. 华脉智联电力行业技术解决方案
  4. Oracle查询CLOB类型字段的内容:
  5. pymol安装与分子对接前预处理蛋白质
  6. 湮没在赞誉之中,科学史上鲜为人知的五大“败笔”
  7. 2022年版中国制冷设备市场深度分析与投资调研评估报告报告
  8. 前端的你,必须知道这些前端的坑!
  9. ChinaSoft 论坛巡礼 | 编译器与编程语言
  10. MAC地址的正则表达式