ROS中二维码定位

ROS中二维码定位

一、环境相关

系统:

  • ROS-Kinetic + ubuntu16.04

相关功能包:

  • 摄像头:usb-cam
  • 摄像头标定:camera-calibration
  • 二维码:ar-teack-alvar

二、方法一

(1)usb_cam摄像头的标定

  • 安装usb-cam功能包
sudo apt-get install ros-kinetic-usb-cam
  • 安装camera-calibration功能包
sudo apt-get install ros-kinetic-camera-calibration
  • 下载robot_vision
    将文件robot_vision下载 解压 到catkin_ws/src下面

​ 链接:https://pan.baidu.com/share/init?surl=ay0Wv1XboX19yHdeke1xpQ 提取码:csic

catkin_make  & rospack profile 
  • 启动摄像头
roslaunch robot_vision usb_cam.launch
  • 启动标定包
rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.0245 image:=/usb_cam/image_raw camera:=/usb_cam

注意:相关参数解析

size :标定棋盘个的内部角点个数,这里实用的棋盘一共有6行,每行有8个内部角点(不包括最外围的一圈棋盘格)。

squre:这个参数对应每一个棋盘格的边长,单位是米,棋盘格打印出来以后要自己再测量一下打印的是或否准确然后自己更改。

image和camera:设置摄像头发布的图像话题。

  • 相机标定步骤

将打印好的棋盘格放入摄像头的视野范围内,不断调整与摄像头的距离,慢慢旋转棋盘格,左右移动棋盘格,不断变换位置。(左右、上下、旋转,反复几次)。

当标定靶移动测试成功后,在可视化页面中的第一个按键将从灰色变为深绿色,说明标定已经结束。

当第一个按键变为绿色的时候表示这个参数已经标定成功。可以在命令窗口中看到当前标定的数据。

接下来点击深绿色的CALIBRATE按键,等待程序计算出相机的标定参数(此时界面会卡顿,千万不要关掉,要等待后台进行计算),直到三个按键都变为深绿色。

点击SAVE可以讲标定的数据保存,在命令终端上可以看到保存到的文件路径,同时命令终端上也会显示标定的结果。此时摄像头的标定已经结束。

解压缩生成的文件压缩包,可以看到当中有很多采集到的图像的照片,其中最重要的是ost.yaml文件,为该相机的标定文件。

  • 参考
https://blog.csdn.net/zzu_seu/article/details/89278698

(2)二维码识别

  • 安装ar-teack-alvar功能包
 sudo apt-get install ros-kinetic-ar-track-alvar
  • 创建二维码
rosrun ar_track_alvar createMarker

eg: 创建三个二维码,大小为边长5cm,二维码的内容分别为0、1、2.

roscd robot_vision/config
rosrun ar_track_alvar createMarker -s 5 0
rosrun ar_track_alvar createMarker -s 5 1
rosrun ar_track_alvar createMarker -s 5 2

这样就在catkin_ws/src/robot_vision/config文件夹下面创建了三个二维码。

  • 二维码识别

    • 启动相机
roslaunch robot_vision usb_cam_with_calibration.launch 
#该launch文件一定要更改为自己相机的标定文件,上面提到过。
    • 启动二维码设别功能包
roslaunch robot_vision ar_track_camera.launch
    • 将二维码打印出来放置到 摄像头前面进行识别

  • 查看二维码识别结果
rostopic echo /ar_pose_marker
  • 查看消息结构
 rosmsg show ar_track_alvar_msgs/AlvarMarker
std_msgs/Header header
  uint32 seq
  time stamp
  string frame_id
uint32 id
uint32 confidence
geometry_msgs/PoseStamped pose
  std_msgs/Header header
    uint32 seq
    time stamp
    string frame_id
  geometry_msgs/Pose pose
    geometry_msgs/Point position
      float64 x
      float64 y
      float64 z
    geometry_msgs/Quaternion orientation
      float64 x
      float64 y
      float64 z
  • 参考
 https://blog.csdn.net/zzu_seu/article/details/89289556

三、方法二

介绍: VISP(visual servoing platform library )是一个开源的视觉伺服平台。

官网:http://visp.inria.fr/

功能包:visp_auto_tracker

系统:ubuntu16.04

sudo apt-get install ros-kinetic-visp-auto-tracker

例子:

<1> roslaunch launch/tutorial.launch
<2> roslaunch launch/tracklive_usb.launch

优点:精度高。

缺点:不宜识别。

参考:

http://wiki.ros.org/visp_auto_tracker

  • 11
    点赞
  • 112
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白茶-清欢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值