紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
小鱼 ROS 2 新书上线!点击链接查看, 新书配套视频点击链接查看。
提问前必看的发帖注意事项—— 提问前必看!不符合要求的问题拒绝回答!!
社区使用指南—如何添加标签修改密码
小鱼 ROS 2 新书上线!点击链接查看, 新书配套视频点击链接查看。
提问前必看的发帖注意事项—— 提问前必看!不符合要求的问题拒绝回答!!
社区使用指南—如何添加标签修改密码
手眼标定 眼在手上
-
目的:将相机获取的点云转变到机械臂基座标下
1.手眼标定:利用easy_handeye功能包进行手眼标定
配置的launch文件
标定结果
编写cpp
Quaterniond q1(-0.01212536541456388,-0.06630808814296718,0.9699827597086316,0.2336442997986779),q2(0.655395,-0.654873,-0.265976,0.266188);//q1为标定结果文件中四元数,q2为机械臂末端姿态四元数(通过机械臂控制demo文件直接打印获得) q1.normalize(); q2.normalize(); Vector3d t1(-0.07166787993510233,0.14375536022424967,0.09587844058930889),t2(-0.2,0.2,0.825),t3(-0.2,-0.25,0.825);//t1从标定结果中获得,t2、t3在机械臂控制文件中获得 Isometry3d T(q1),T1w(q2),T2w(q2);//T为手眼标定变换矩阵,T1为姿态1,T2为姿态二 T.pretranslate(t1); T1w.pretranslate(t2); T2w.pretranslate(t3); Matrix4d T0 = T.matrix(); Matrix4d T1 = T1w.matrix(); Matrix4d T2 = T2w.matrix(); Matrix4d T1t = T1.inverse() * T0; Matrix4d T2t = T2.inverse() * T0; pcl::PointCloud<pcl::PointXYZRGB>::Ptr align_cloud1(new pcl::PointCloud<pcl::PointXYZRGB>); pcl::PointCloud<pcl::PointXYZRGB>::Ptr align_cloud2(new pcl::PointCloud<pcl::PointXYZRGB>); pcl::transformPointCloud(*cloud1, *align_cloud1, T1t); pcl::transformPointCloud(*cloud2, *align_cloud2, T2t); visualize_pcd(align_cloud1,align_cloud2);
机械臂控制文件
位姿1
位姿2
-
想知道这样写有问题吗?特别是关于变换矩阵运算的过程 自己运行结果看起来很怪
-
你好兄弟,我也在做手眼标定,有几个问题想和你交流下,qq2518851723