• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

Apriltags+Ros+Ur5项目–Apriltags位姿输出

人工智能 光头明明 2476次浏览 0个评论

进入课题组的初期,老师分配了一个实际项目,下面写一下搭的项目的大致框架及其心得感悟,因为现在已经越发浮躁,想踏下心来好好做一些回顾一下自己的新手上路。需要准备材料:apriltags下tag标签,usb摄像头,标定板,ur5(也可以用gazebo模型代替)   大致流程如下:  
Apriltags+Ros+Ur5项目--Apriltags位姿输出   针对于这个项目想实现的是通过apriltags算法能够识别空间中指定标号的tag,从而能够算出apriltags相对于相机的位姿,并作为话题发布出去,因为这里apriltags算法已经是成熟的源码包,所以这里只是跑通了这个包,但这里本身包发布的话题很多,不单单包含位姿输出,为了减少实时传输量,所以创建了一个订阅节点(atnode_vision),订阅此位姿。然后将此位姿作为服务器服务端消息发布,在另一个节点(apriltags2_client)上,进行机械臂UR5的轨迹规划。   整个项目的github链接:https://github.com/harrycomeon/apriltags2_ros-and-ur5   上面介绍了整个项目的大致流程: 下面先分析一下Apriltags位姿输出部分:   首先自己先是找到了Apriltags官网,官网上有很多论文,如果想深入研究算法,这里绝对有很好的资料。自己先根据此博客在非ROS下利用opencv实现了具体的位姿输出,当然要移植成自己的需要对以下部分进行修改: github链接https://github.com/harrycomeon/apriltags  

 apriltag_detection_info_t info;
            info.tagsize = 0.0535;   //打印的qrcode(二维码)尺寸大小,单位米
            info.fx = 931.4964;	   //单位像素
            info.fy = 935.2657;
            info.cx = 352.2813;
            info.cy = 315.9761;      //初始化对应的相机参数

 

 for (int i = 0; i < zarray_size(detections); i++) {
            apriltag_detection_t *det;
            zarray_get(detections, i, &det);
            info.det = det;             //将det赋给info用于计算
            apriltag_pose_t pose;
            double err = estimate_tag_pose(&info, &pose);
            //double err=estimate_pose_for_tag_homography(&info, &pose);
	    //其中pose.R、pose.t分别表示Tag相对于相机坐标系的旋转矩阵和平移向量
            cout<<"平移向量t:"<<endl;
            cout<<" x="<<pose.t->data[0]<<"  "<<"y="<<pose.t->data[1]<<" "<<"z="<<pose.t->data[2]<<endl;//输出t

            cout<<"旋转矩阵R="<<endl;  //输出R,
            cout<<pose.R->data[0]<<"  "<<pose.R->data[1]<<"  "<<pose.R->data[2]<<endl;
            cout<<pose.R->data[3]<<"  "<<pose.R->data[4]<<"  "<<pose.R->data[5]<<endl;
            cout<<pose.R->data[6]<<"  "<<pose.R->data[7]<<"  "<<pose.R->data[8]<<endl;

  这一块是在ubuntu上建立工程项目实现了位姿的输出,那末我们向将位姿传给UR5,就必须在ros上实现此功能,并发布位姿话题。这部分也是以后点云识别位姿要实现了的,算法这部分也是主要出论文的部分。   那麽现在说一下自己在ros上实现Apriltags位姿输出的过程。 在github上我们可以找到很多相关的代码,我用的是https://github.com/shijiwensjw/apriltags2_ros 下的代码实现了Apriltags位姿输出,既然有了算法,那麽我们需要通过摄像头输入图像,既然有了摄像头引入,我们便需要进行相机内参的标定,只有这样才可以保证精度。   具体实现: 首先下载usb_cam的包,然后在在launch文件修改如下: “/dev/video1” /是插入usb摄像头具体的设备口 相机标定实现参考网址:https://blog.csdn.net/harrycomeon/article/details/91126256   然后在ros下,建立工作空间,将apriltags2,apriltags2_ros,camera_calibration,usb_cam文件夹复制到所建的工作空间的src目录下。catkin_make编译通过后,便可以依次运行  

roslaunch usb_cam usb_cam-test.launch
roslaunch apriltags2_ros continuous_detection.launch

  然后自己将两个launch文件整合到一起,只需要运行一个就可以  

 roslaunch apriltags2_ros continuous_detection.launch

  此时已经发布了话题,然后我们便可以查看话题下的内容,其中在/tag_detections和/tf话题下,发布了tag相对于相机的相对位姿。  
Apriltags+Ros+Ur5项目--Apriltags位姿输出   注意下面文件下有指定识别tag的标号和实际大小  
Apriltags+Ros+Ur5项目--Apriltags位姿输出  
Apriltags+Ros+Ur5项目--Apriltags位姿输出


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明Apriltags+Ros+Ur5项目–Apriltags位姿输出
喜欢 (0)

您必须 登录 才能发表评论!

加载中……