鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    手眼标定Python

    已定时 已固定 已锁定 已移动 未解决
    综合问题
    手眼标定 python
    2
    2
    610
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 2603581722
      郭振坤
      最后由 编辑

      https://zhuanlan.zhihu.com/p/388952714
      手眼标定时是需要带去自己的手和相机两个数据吗?这两个数据从哪来的?一个是机械手末端平移旋转?一个是相机平移旋转?手的是示教器得到,相机做相机标定得到?

      小鱼小 1 条回复 最后回复 回复 引用 0
      • 小鱼小
        小鱼 技术大佬 @260358172
        最后由 编辑

        @260358172 眼数据指的是相机到标定板的,这个数据可以用aruco获取。

        (图像+内参)->aruco->(输出相机到板子位置+姿态)

        具体参考这篇文章:

        @小鱼 在 二维相机能得到三维信息?机器人感知部分之Aruco标定板的使用 中说:

        大家好,我是小鱼,今天来介绍一下Aruco并是结合ROS来进行识别。

        aruco其实是opencv中的一个库,可以将特定的标记物转换成三维的坐标,所以它是可以脱离ROS进行使用的。

        aruco介绍:
        姿态估计(Pose estimation)在计算机视觉领域扮演着十分重要的角色:机器人导航、增强现实以及其它。这一过程的基础是找到现实世界和图像投影之间的对应点。这通常是很困难的一步,因此我们常常用自己制作的或基本的Marker来让这一切变得更容易。
        最为流行的一个途径是基于二进制平方的标记。这种Marker的主要便利之处在于,一个Marker提供了足够多的对应(四个角)来获取相机的信息。同样的,内部的二进制编码使得算法非常健壮,允许应用错误检测和校正技术的可能性。
        aruco模块基于ArUco库,这是一个检测二进制marker的非常流行的库,是由Rafael Muñoz和Sergio Garrido完成的。

        1. 安装

        Kinetic:

        sudo apt-get install ros-kinetic-aruco*
        

        Melodic:

        sudo apt-get install ros-melodic-aruco*
        

        其他版本

        sudo apt-get install ros-版本名称-aruco*
        

        noetic版本上好像没有,需要你编译安装,源码地址:https://github.com/pal-robotics/aruco_ros

        2. 修改参数

        2.1 launch文件

        因为使用aruco要结合相机来,所以你要先启动一个相机驱动节点,拿到图像数据,小鱼这里把相机驱动和aruco写在同一个launch文件里,文件内容如下:

        <launch>
            <arg name="camera_info_url"  default="file:///home/ros/.ros/camera_info/head_camera.yaml"/>
            <arg name="video_device"     default="/dev/video0"/>
            <arg name="image_width"      default="640"/>
            <arg name="image_height"     default="480"/>
        
            <arg name="markerId"        default="0"/>
            <arg name="markerSize"      default="0.107"/>    
            <arg name="eye"             default="left"/>
            <arg name="marker_frame"    default="aruco_marker_frame"/>
            <arg name="ref_frame"       default=""/>  
            <arg name="corner_refinement" default="LINES" /> 
        
            <node name="usb_cam" pkg="usb_cam" type="usb_cam_node" output="screen" >
                <param name="camera_info_url" type="string" value="$(arg camera_info_url)"/>
                <param name="video_device" value="$(arg video_device)" />
                <param name="image_width" value="$(arg image_width)" />
                <param name="image_height" value="$(arg image_height)" />
                <param name="pixel_format" value="yuyv" />
                <param name="camera_frame_id" value="usb_cam" />
                <param name="io_method" value="mmap"/>
            </node>
        
            <node pkg="aruco_ros" type="single" name="aruco_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="$(arg markerSize)"/>
                <param name="marker_id"          value="$(arg markerId)"/>
                <param name="reference_frame"    value="$(arg ref_frame)"/> 
                <param name="camera_frame"       value="stereo_gazebo_$(arg eye)_camera_optical_frame"/>
                <param name="marker_frame"       value="$(arg marker_frame)" />
                <param name="corner_refinement"  value="$(arg corner_refinement)" />
            </node> 
        
            <node name="image_view" pkg="image_view" type="image_view" respawn="false" output="screen">
                <remap from="image" to="/aruco_single/result"/>
                <param name="autosize" value="true" />
            </node>
        
        
        </launch>
        
        

        2.2 主要参数

        需要修改的参数如下:

        • camera_info_url 相机标定文件所在位置
        • video_device: 设备位置
        • image_width: 图片宽度
        • image_height: 图片高度
        • markerId: 标定板编号,就是你所用的标定板的id,可以通过在线生成标定板:https://chev.me/arucogen/进行生成并打印,注意选择origin类型。
        • markerSize:标定板的宽度 单位m

        2.3 开始运行

        直接运行对应launch文件即可

        roslaunch  aruco_start_usb_cam.launch
        

        识别成功会出现轴

        2.4 识别结果

        识别结果的位姿数据可以通过话题获取

        rostopic echo /aruco_signle/pose
        

        姿态数据

        新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

        1 条回复 最后回复 回复 引用 0
        • 第一个帖子
          最后一个帖子
        皖ICP备16016415号-7
        Powered by NodeBB | 鱼香ROS