基于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

相关文章

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去除

Exchange 服务器地址列表的配置方法与注意事项

Exchange Server 是微软推出的一款企业级邮件服务器软件,广泛应用于企业内部邮件系统的搭建与管理。配置 Exchange 服务器地址列表是其中一个关键环节。本文将详细介绍 Exchange 服务器地址列表的配置方法与注意事项,帮助系统管理员顺利完成这一任务。 内容目录 1. 引言 2. 准备工作 3. 配置地址列表 3.1 创建地址列表 3.2 使用 Exchange

API28_OKgo_get注意事项

1: implementation 'com.lzy.net:okgo:2.1.4' 2:在BaseApplication中onCreate()中初始化initOKgo() private void initOKgo() {//---------这里给出的是示例代码,告诉你可以这么传,实际使用的时候,根据需要传,不需要就不传-------------//HttpHeaders headers

有关机械硬盘的基础知识

1,机械硬盘的品牌   目前市场中常见的笔记本电脑的机械硬盘品牌主要有希捷、西部数据、三星等。   2,机械硬盘的容量   硬盘容量,即硬盘所能存储的最大数据量。虽然笔记本电脑硬盘的容量会因单位密度的提升而增加,不过和台式电脑的大容量比起来,笔记本电脑硬盘的容量仍然落后许多。笔记本电脑的硬盘除了对磁盘有体积较小和数量较少的要求之外,对功耗、耐用程度、抗震性及成本等的考虑,也让笔记

hector_quadrotor编译总结 | ubuntu 16.04 ros-kinetic版本

hector_quadrotor编译总结 | ubuntu 16.04 ros-kinetic版本 基于Ubuntu 16.04 LTS系统所用ROS版本为 Kinetic hector_quadrotor ROS包主要用于四旋翼无人机的建模、控制和仿真。 1.安装依赖库 所需系统及依赖库 Ubuntu 16.04|ros-kinetic|Gazebo|gazebo_ros_pkgs|ge

hector_quadrotor编译总结 | ubuntu 14.04 ros-indigo版本

hector_quadrotor编译总结 | ubuntu 14.04 ros-indigo版本 基于Ubuntu 14.04 LTS系统所用ROS版本为 Indigo hector_quadrotor ROS包主要用于四旋翼无人机的建模、控制和仿真。 备注:两种安装方式可选:install the binary packages | install the source files

解析apollo纵向控制标定表程序

百度apollo采用标定表描述车辆速度、加速度与油门/刹车之间的关系。该表可使无人车根据当前车速与期望加速度得到合适的油门/刹车开合度。除了文献《Baidu Apollo Auto-Calibration System - An Industry-Level Data-Driven and Learning based Vehicle Longitude Dynamic Calibrating