基于ROS的机械臂手眼标定-注意事项

2023-11-11 14:50

本文主要是介绍基于ROS的机械臂手眼标定-注意事项,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

基于ROS的机械臂手眼标定-注意事项

手眼标定的结果准确与否严重取决于数据的准确性。根据标定原理我们可以得知,输入数据由机械臂位姿和相机中标定板的位姿共同决定,接下来我们来讲一下如何提高标定结果的准确性的几个方向。

开源地址

github: https://github.com/aiotrobot/handeye-calib
gitee: https://gitee.com/ohhuo/handeye-calib

机械臂位姿
手眼标定程序
相机中标定板位姿
末端与相机位姿关系

本教程一共包含五个部分:

  • 手眼标定-基础使用
  • 手眼标定-JAKA机械臂
  • 手眼标定-AUBO机械臂
  • 手眼标定-Aruco使用与相机标定
  • 手眼标定-注意事项

如果上述程序使用过程中遇到问题,可以参考:

  • 手眼标定-常见问题排查

如果你对手眼标定原理感兴趣,可以参考以下文章:

  • 机器人手眼标定原理介绍(含详细推导过程)使用Tsai-Lenz算法
  • 手眼标定算法TSAI_LENZ,眼在手外python代码实现
  • 手眼标定算法Tsai-Lenz代码实现(Python、C++、Matlab)

1.机械臂数据的准确性

机械臂的数据一般从厂家所给的SDK或者中可以很方便的获取到,而且精度还是非常精准的,但这所说的只是末端的角度,对于我们实际使用来说,一定会在机械臂上安装夹爪和吸盘等,所以机械臂的末端标定要准确才行,这个标定可以使用机械臂厂家所给的标定程序。

2.相机标定的准确性

  • 如果使用的标定目标板是类似于棋盘格式的平面标定板,请使用加工精度相对较高的标定板
  • 尽量多的角点数和图片数量。这里推荐角点数比较多的标定板。10x10是原作者认为应该采用标定板的-最小尺寸,通常使用20x20。
  • 拍照时使用较大的拍照范围。确保在某些图片中,聚焦轴以较大的倾斜对准标定板
  • 减少晃动和拍照时的运动模糊(使用ros标定过程中容易出现这个情况)一定要注意。

3.相机识别结果的准确性

参考:https://blog.csdn.net/sandy_wym_/article/details/83996479

  • 两次运动的旋转轴的夹角:越大越好
  • 每次运动的旋转矩阵对应的旋转角度:越大越好
  • 相机中心到标定板的距离: 距离越小越好
  • 每次运动机械臂末端运动的距离:距离越小越好
  • 机械臂精度影响

提高精度的几个方向

  • 不管采集多少组用于标定的运动数据,每组运动使运动角度最大。
  • 使两组运动的旋转轴角度最大。
  • 每组运动中机械臂末端运动距离尽量小,可通路径规划实现该条件。
  • 尽量减小相机中心到标定板的距离,可使用适当小的标定板。
  • 尽量采集多组用于求解的数据。
  • 使用高精度的相机标定方法。
  • 尽量提高机械臂的绝对定位精度,如果该条件达不到,至少需要提高相对运动精度。

如果有不明白和有错误的地方可以留言~

作者介绍:

我是小智,机器人领域资深玩家,现深圳某独脚兽机器人算法工程师一枚

初中学习编程,高中开始学习机器人,大学期间打机器人相关比赛实现月入2W+(比赛奖金)

目前在输出机器人学习指南、论文注解、工作经验,欢迎大家关注小智,一起交流技术,学习机器人
在这里插入图片描述

这篇关于基于ROS的机械臂手眼标定-注意事项的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/390837

相关文章

Spring Cloud Hystrix原理与注意事项小结

《SpringCloudHystrix原理与注意事项小结》本文介绍了Hystrix的基本概念、工作原理以及其在实际开发中的应用方式,通过对Hystrix的深入学习,开发者可以在分布式系统中实现精细... 目录一、Spring Cloud Hystrix概述和设计目标(一)Spring Cloud Hystr

SpringBoot中使用 ThreadLocal 进行多线程上下文管理及注意事项小结

《SpringBoot中使用ThreadLocal进行多线程上下文管理及注意事项小结》本文详细介绍了ThreadLocal的原理、使用场景和示例代码,并在SpringBoot中使用ThreadLo... 目录前言技术积累1.什么是 ThreadLocal2. ThreadLocal 的原理2.1 线程隔离2

Idea调用WebService的关键步骤和注意事项

《Idea调用WebService的关键步骤和注意事项》:本文主要介绍如何在Idea中调用WebService,包括理解WebService的基本概念、获取WSDL文件、阅读和理解WSDL文件、选... 目录前言一、理解WebService的基本概念二、获取WSDL文件三、阅读和理解WSDL文件四、选择对接

python安装完成后可以进行的后续步骤和注意事项小结

《python安装完成后可以进行的后续步骤和注意事项小结》本文详细介绍了安装Python3后的后续步骤,包括验证安装、配置环境、安装包、创建和运行脚本,以及使用虚拟环境,还强调了注意事项,如系统更新、... 目录验证安装配置环境(可选)安装python包创建和运行Python脚本虚拟环境(可选)注意事项安装

JAVA中while循环的使用与注意事项

《JAVA中while循环的使用与注意事项》:本文主要介绍while循环在编程中的应用,包括其基本结构、语句示例、适用场景以及注意事项,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录while循环1. 什么是while循环2. while循环的语句3.while循环的适用场景以及优势4. 注意

使用Spring Cache时设置缓存键的注意事项详解

《使用SpringCache时设置缓存键的注意事项详解》在现代的Web应用中,缓存是提高系统性能和响应速度的重要手段之一,Spring框架提供了强大的缓存支持,通过​​@Cacheable​​、​​... 目录引言1. 缓存键的基本概念2. 默认缓存键生成器3. 自定义缓存键3.1 使用​​@Cacheab

bytes.split的用法和注意事项

当然,我很乐意详细介绍 bytes.Split 的用法和注意事项。这个函数是 Go 标准库中 bytes 包的一个重要组成部分,用于分割字节切片。 基本用法 bytes.Split 的函数签名如下: func Split(s, sep []byte) [][]byte s 是要分割的字节切片sep 是用作分隔符的字节切片返回值是一个二维字节切片,包含分割后的结果 基本使用示例: pa

ROS - C++实现RosBag包回放/提取

文章目录 1. 回放原理2. 回放/提取 多个话题3. 回放/提取数据包,并实时发布 1. 回放原理 #include <ros/ros.h>#include <rosbag/bag.h>#include <std_msgs/String.h>int main(int argc, char** argv){// 初始化ROS节点ros::init(argc, argv,

ROS - C++实现RosBag包录制

文章目录 1. 录制原理2. 录制多个话题3. 订阅ROS消息,实时录制 1. 录制原理 #include <ros/ros.h>#include <rosbag/bag.h>#include <std_msgs/String.h>int main(int argc, char** argv){// 初始化ROS节点ros::init(argc, argv, "reco

Vue项目开发各种注意事项

1、eCharts引入方式(单页面) import * as echarts from 'echarts'Vue.prototype.$echarts = echarts 2、Sass引入 sass和node-sass 中 node-sass不要引入最新版本  引入@7.x 否则会报错 可能是语法规则改变 3、严格模式不要随意开启、将eslint文件中 extends: 中的vue去除