实际的机械臂控制(7)USB相机与小强机械臂Lobot机械臂的标定方法
引言
本文是针对一个实际的机械臂来控制的,而且这个机械臂很便宜,即使是平民玩家也玩得起。
在前面两章,我们介绍了对机械手臂的开环控制,主要是让初学者明白一些简单的东西。
第一章,根据小强给的少的可怜的教程简单的驱动机械手臂。
第二章,自己写一个publisher和一个launch文件,实现对动作的发布和执行,让机械手臂不停地动起来。
下面,我们将进入实际的人工智能模式,利用opencv PCL等工具实现对机械手臂的控制。
一、相关工作
- 这个手眼标定是相机在机械手臂上的,但是他介绍了很多理论知识,我们在这部分的理论知识也是照搬他们了,。
- 这里有更多的参考,反正在准备之前需要大量阅读资料,想吃现成的基本不可能。
- 这个是关于Halcon标定的教学,就4分钟,英文的,但是说的很慢,可以听得懂,主要是人家有字母。
二、数学原理
手眼标定实际上是求解矩阵方程:AX = XB ;
A是摄像机(单目或双目)前后两次空间变换的齐次矩阵 ; B是机械臂末端坐标系前后两次变换的齐次矩阵 ; X为待求解的手眼矩阵;通过多次求解该方程,即可解出X(A 、B矩阵求法如下)
三、基于easy_handeye的相机标定的准备工作
aruco_ros安装
安装这个是为了识别ArUco marker
cd ~/catkin_ws/src
git clone -b melodic-devel https://github.com/pal-robotics/aruco_ros.git
cd ..
catkin_make
vision_visp / visp_hand2eye_calibration安装
cd ~/catkin_ws
sudo apt-get install ros-melodic-visp
cd src
git clone -b melodic-devel https://github.com/lagadic/vision_visp.git
cd ..
catkin_make --pkg visp_hand2eye_calibration
easy_handeye安装
cd ~/catkin_ws/src
git clone https://github.com/IFL-CAMP/easy_handeye
cd ..
catkin_make
打印ArUco marker
在线生成地址:https://chev.me/arucogen/
注意,一定要在Dictionary中选择而Original Arcuo
然后找个打印机按照原尺寸打印下来,注意,打印下来要自己用尺寸量一下尺寸,后面有用。
同样,把这个码贴在一个硬纸板上。
四、基于easy_handeye的相机标定的准备工作
首先看看进行 手眼标定的机械臂的启动文件
<?xml version="1.0"?>
<launch>
<!-- start action server node --><node pkg="probot_grasp" name="qidong_robot" type="myrobot_driver" />
<!-- start robot model and rviz --><include file="$(find lobot_arm_moveit_config)/launch/demo.launch"/>
<!-- srart the USB Serial port --><node pkg="rosserial_python" name="qidong_chuankou" type="serial_node.py" args="/dev/ttyUSB0"/><!-- start USB camera --><!-- start the calibration publish--></launch>
写一个luanch文件,直接启动所有程序
文件名:calib_usb_lot.launch
<?xml version="1.0"?>
<launch><arg name="namespace_prefix" default="lobot_arm_usb_handeyecalibration" /><!--arg name="robot_ip" doc="The IP address of the UR5 robot" /--><arg name="marker_size" doc="Size of the ArUco marker used, in meters" default="0.1"/><arg name="marker_id" doc="The ID of the ArUco marker used" default="100"/><arg name="eye" default="left"/> <!-- start the usb camera --><!--include file="$(find freenect_launch)/launch/freenect.launch" ><arg name="depth_registration" value="true" /></include--><include file="$(find detection_color)/launch/usb_cam.launch" /><!-- start ArUco --><node name="aruco_tracker" pkg="aruco_ros" type="single"><remap from="/camera_info" to="/usb_cam/camera_info" /><remap from="/image" to="/usb_cam/image_raw" /><param name="image_is_rectified" value="true"/><param name="marker_size" value="0.0967"/><param name="marker_id" value="200"/><param name="reference_frame" value="camera_link"/><param name="camera_frame" value="camera_link"/><param name="marker_frame" value="camera_marker" /></node><!-- start the robot --><include file="$(find probot_grasp)/launch/startup_robot.launch" /><!--arg name="limited" value="true" /><arg name="robot_ip" value="192.168.0.21" /--><!--/include><include file="$(find ur5_moveit_config)/launch/ur5_moveit_planning_execution.launch"><arg name="limited" value="true" /></include--><!-- start easy_handeye --><include file="$(find easy_handeye)/launch/calibrate.launch" ><arg name="namespace_prefix" value="$(arg namespace_prefix)" /><arg name="eye_on_hand" value="false" /><arg name="tracking_base_frame" value="camera_link" /><arg name="tracking_marker_frame" value="camera_marker" /><arg name="robot_base_frame" value="base_link" /><arg name="robot_effector_frame" value="link5" /><arg name="freehand_robot_movement" value="false" /><arg name="robot_velocity_scaling" value="0.5" /><arg name="robot_acceleration_scaling" value="0.2" /></include></launch>
我们采集的二维码的ID是200,尺寸大小是9.6厘米。
<param name="marker_size" value="0.0967"/><param name="marker_id" value="200"/>
说明一点
在采集数据是,可以自动控制机械臂的位姿,也可以自己手动调节位姿。
由于我的程序无法自动调节机械臂位姿,也就是没法用Next pose。所以我在rviz中自己调节了。
数据采集最少17个点,我的原则是越多越好。
启动标定程序
roslaunch probot_grasp calib_usb_lot.launch
启动之后,除了rviz之外,还有两个窗口,如下:
正常来讲,在那个大的窗口上是可以打开
/aruco_tracker/result的,从而显示识别二维码的窗口。但是我这个没有,因此我们需要手动打开。
在工作空间下打开一个终端,输入:
rosrun image_view image_view image:=/aruco_tracker/result
然后就出现如下窗口了
首先,对于这个窗口,我没法使用next pose。因此我就不操作这个窗口了。
我们主要在在rviz下面,通过这个选择窗口,控制机械臂位姿,从容选择合适的位姿。
在选择合适的位姿后,合适的位姿就是摄像头可以识别出二维码ID。
然后点击take sample
点击一次,移动一次机械臂
采集第一个样本是这样的
然后依次移动机械臂运动,在点击take sample
我最终采集了35个位姿
然后点击compute
右侧计算出了最终的坐标转换关系。
然后点击save
这个时候,我们到终端看一下,可以找到转换矩阵的保存位置
这个时候,我们需要到home文件夹下面的,ros下面去寻找文件。由于.ros是隐藏文件,因此我们需要按Ctrl+H显示隐藏文件。
进入.ros下面
找到lobot_arm_usb_handeyecalibration_eye_on_base.yaml文件
这时,我们在机械臂的启动文件里添加启动摄像头和发布标定信息的节点
修改后的相机启动文件startup_robot.launch如下:
<?xml version="1.0"?>
<launch>
<!-- start action server node --><node pkg="probot_grasp" name="qidong_robot" type="myrobot_driver" />
<!-- start robot model and rviz --><include file="$(find lobot_arm_moveit_config)/launch/demo.launch"/>
<!-- srart the USB Serial port --><node pkg="rosserial_python" name="qidong_chuankou" type="serial_node.py" args="/dev/ttyUSB0"/><!-- start USB camera --><include file="$(find detection_color)/launch/usb_cam.launch" /><!-- start the calibration publish--><node name="link1_broadcaster" pkg="tf" type="static_transform_publisher" args="-0.0038246100436423597 -0.0023318449115560143 0.13466109184238712 0.9882889926593997 -0.09317833339710963 0.0527325627198183 -0.10872875425850478 base_link camera_link 100"/></launch>
至此,相机外参标定成功
实际的机械臂控制(7)USB相机与小强机械臂Lobot机械臂的标定方法相关推荐
- 绝了!多个激光雷达和相机的快速且鲁棒的外参标定方法(代码开源)
文章:Fast and Accurate Extrinsic Calibration for Multiple LiDARs and Cameras 作者:Xiyuan Liu , Chongjian ...
- 机械臂控制C语言程序,51单片机的6自由度机械臂 16路舵机控制 源码
/*************************************************************************************************** ...
- 内参、外参、畸变参数三种参数与相机的标定方法与相机坐标系的理解
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/yangdashi888/article/details/51356385 1. 相机参数是三种不同的 ...
- 【从零开始的ROS四轴机械臂控制】(四)- ros、gazebo与opencv,图像处理节点
[从零开始的ROS四轴机械臂控制(四)] 七.图像处理节点 1.节点功能与实现方法 2.iamge_process 相关程序 部分程序解释 3.节点运行与测试 七.图像处理节点 1.节点功能与实现方法 ...
- 【从零开始的ROS四轴机械臂控制】(三) - 为机械臂添加摄像头和夹爪、解决gazebo模型抖动、使用gazebo建立sdf模型
[从零开始的ROS四轴机械臂控制(三)] 五.在gazebo中添加摄像头 1.修改arm1.gazebo.xacro文件 2.修改arm1.urdf.xacro文件 3.查看摄像头图像 六.为模型添加 ...
- 【从零开始的ROS四轴机械臂控制】(二) - ROS与Gazebo连接,Gazebo仿真及urdf文件修改
[从零开始的ROS四轴机械臂控制(二)] 四.urdf文件及gazebo仿真 1.simple_arm示例 (1)config文件夹 (2)launch文件夹 (3)meshes文件夹 (4)urdf ...
- Ubuntu18.04 + kinova joca2机械臂 + RealSense D435i深度相机进行eye to hand手眼标定
文章目录 前言 一.前期准备 1. RealSense D435i安装 2. Kinova-ROS安装 二.手眼标定环境配置 1. visip 2. aruco_ros 3. easy_handeye ...
- 六轴机械臂与单目相机的标定和视觉伺服的理解
参考: 六轴机械手与相机的手眼标定https://blog.csdn.net/Isaac320/article/details/80078579 最详细.最完整的相机标定讲解https://blog. ...
- aubo机械臂控制方式
操作aubo机械臂的方法主要有三种: 一.使用aubo官方提供的示教器来操作.示教操作的本质是,先演示一遍操作过程,过程中机械臂在必要的路径节点时记录机械臂各个joint的关节角的值.用这记录的一系列 ...
最新文章
- php 结构体_PHP底层原理知其然知其所以然
- js new Date()不带时分秒时,时间变了 问题解决
- B-Tree索引在sqlserver和mysql中的应用
- 医院信息化建设历程(5)互联互通的数字化医院阶段
- android倒计时功能,Android 实现列表倒计时功能
- java清理语句,java – 如何在不使用准备语句的情况下对SQL进行清理
- 刷新SOTA ! 视频恢复的重中之重:时间对齐!
- 攻防世界逆向——key
- 以图搜图:Python实现dHash算法
- 使用supervisor / systemctl nginx uwsgi 运行odoo
- hdu 1394 Minimum Inversion Number(树状数组)
- PS制作gif表情包
- 电商宝:做最懂电商卖家的财务管理“小秘书”
- 企业联合体的形式_企业组织形式的概念与类型怎么分?
- 台式计算机快捷键大全,台式电脑截图快捷键是哪一个?(电脑快捷键使用大全)...
- Axure RP9 水平滑动效果制作
- 等保是强制的吗?企业不办等保有啥处罚?
- Oracle学习笔记:使用replace、regexp_replace实现字符替换、姓名脱敏
- 软件设计的基本原理和流程
- 保健中的深度学习nlp技术用于决策