利用奥比中光astra mini和ar_trck_alvar在ubuntu20.04环境下实现识别二维码功能【保姆级教程】

工作环境:(1)ubuntu20.04 (2)ROS1 noetic

难点:在没有官方ar_track包和例程的情况下,使用低配置的摄像头实现二维码识别定位

1.安装astra驱动包:参考:

3D视觉AI开放平台icon-default.png?t=N7T8https://vcp.developer.orbbec.com.cn/documentation?doc=doc-83

(1)官网上下载驱动OpenNI_SDK_ROS_v1.1.4_20220927_e5a9dc_Linux.zip

3D视觉AI开放平台icon-default.png?t=N7T8https://vcp.developer.orbbec.com.cn/resourceCenter?defaultSelectedKeys=70

然后将包解压到任意文件夹中,记好路径

(2)准备工作:安装依赖

  1. sudo apt install libgflags-dev ros-$ROS_DISTRO-image-geometry ros-$ROS_DISTRO-camera-info-manager\
  2. ros-$ROS_DISTRO-image-transport ros-$ROS_DISTRO-image-publisher libgoogle-glog-dev libusb-1.0-0-dev libeigen3-dev
  • 安装libuvc
  1. git clone https://github.com/libuvc/libuvc.git
  2. cd libuvc
  3. mkdir build && cd build
  4. cmake .. && make -j4
  5. sudo make install
  6. sudo ldconfig
  • (3)新建 ros workspace
  1. mkdir -p ~/ros_ws/src
  • 将 OpenNISDK_ROS_xxx.tar.gz 解压并复制到 ~/ros_ws/src
  • 编译
  1. cd ~/ros_ws
  2. catkin_make
  • 安装libusb rules
  1. cd ~/ros_ws
  2. source ./devel/setup.bash
  3. roscd astra_camera
  4. ./scripts/create_udev_rules
  5. sudo udevadm control --reload && sudo udevadm trigger

发布的时候最好 Release 编译

启动相机

  • 在terminal 1,注意:在这一步大概率会报错。
  1. source ./devel/setup.bash
  2. roslaunch astra_camera astra.launc
  • 在terminal 2
  1. source ./devel/setup.bash
  2. rviz
  • 查看 topics / services/ parameters (新开一个终端)
  1. rostopic list
  2. rosservice list
  3. rosparam list

如果在启动步骤有报错,新开一个窗口

运行:rqt_image_view

查看是否有图像消息,如果有,则不用管报错。

运行到这一步,/ws/src/ros_astra_camera文件夹可以作为astra mini的启动模版来使用

在rviz中的效果:打开图像消息:

 2.在这一步正式开始我们的目的:实现二维码识别

先创建一个新的工作空间,创建src文件夹,将ros_astra_camera文件复制到src中,

然后,在src目录下安装ar_trck功能包:注意catkin_make要在ws目录下进行

# cd ~ 安装colcon
sudo apt install python3-colcon-common-extensions
# 在ws/src目录下
git clone https://github.com/machinekoder/ar_track_alvar.git -b noetic-devel
# colcon
colcon build
# cd ..
catkin_make -DCMAKE_BUILD_TYPE=Release 

编译完后,检验是否安装成功:

在ws目录下运行source ./devel/setup.bash

在功能包中运行:

rosrun ar_track_alvar createMarker 0

如果生成了二维码,则说明安装成功!

3.最关键的一步:修改ar_track中的launch文件:

参考博客:【学习笔记】AR码(二维码)识别_ar识别-CSDN博客

以原来的默认文件pr2_indiv_no_kinect.launch为例:

<launch>
	<arg name="marker_size" default="4.4" />
	<arg name="max_new_marker_error" default="0.08" />
	<arg name="max_track_error" default="0.2" />
	<arg name="cam_image_topic" default="/wide_stereo/left/image_color" />
	<arg name="cam_info_topic" default="/wide_stereo/left/camera_info" />
	<arg name="output_frame" default="/torso_lift_link" />

	<node name="ar_track_alvar" pkg="ar_track_alvar" type="individualMarkersNoKinect" respawn="false" output="screen">
		<param name="marker_size"           type="double" value="$(arg marker_size)" />
		<param name="max_new_marker_error"  type="double" value="$(arg max_new_marker_error)" />
		<param name="max_track_error"       type="double" value="$(arg max_track_error)" />
		<param name="output_frame"          type="string" value="$(arg output_frame)" />

		<remap from="camera_image"  to="$(arg cam_image_topic)" />
		<remap from="camera_info"   to="$(arg cam_info_topic)" />
	</node>
</launch>

主要进行以下几点修改:

1)添加world与camera之间的TF坐标转换

2)检测的代码使用individualMarkersNoKinect(若想使用其他检测代码,可参考ar_track_alver包下的node文件夹),修改订阅图像数据的话题名(若不清楚相应话题名,可启动摄像头后,使用rostopic list来查看),还有实际使用的AR码大小尺寸,单位为厘米

3)rviz:在启动识别程序后,新终端中启动rviz,可根据下文订阅的话题名进行配置,保存后修改launch文件中的路径

修改完后:

<launch>
    <node pkg="tf" type="static_transform_publisher" name="world_to_cam" 
	 args="0 0 0.5 0 1.57 0 world camera_link 10" />
	<arg name="marker_size" default="4.4" />
	<arg name="max_new_marker_error" default="0.08" />
	<arg name="max_track_error" default="0.2" />
	<arg name="cam_image_topic" default="/camera/color/image_raw" />
	<arg name="cam_info_topic" default="/camera/color/camera_info" />
	<arg name="output_frame" default="/camera_link" />

	<node name="ar_track_alvar" pkg="ar_track_alvar" type="individualMarkersNoKinect" respawn="false" output="screen">
		<param name="marker_size"           type="double" value="$(arg marker_size)" />
		<param name="max_new_marker_error"  type="double" value="$(arg max_new_marker_error)" />
		<param name="max_track_error"       type="double" value="$(arg max_track_error)" />
		<param name="output_frame"          type="string" value="$(arg output_frame)" />

		<remap from="camera_image"  to="$(arg cam_image_topic)" />
		<remap from="camera_info"   to="$(arg cam_info_topic)" />
	</node>
	<node pkg="rviz" type="rviz" name="rviz" args="-d /home/robot/test4_ws/src/use.rviz"  />
</launch>

4.运行:

先打开一个终端运行:(1)开启摄像头

source ./devel/setup.bash

roslaunch astra_camera astra.launch 

(2)开启识别二维码launch文件:

roslaunch ar_track_alvar pr2_indiv_no_kinect.launch 
(3)另开一个终端运行rviz:

接下来介绍一下我的rviz配置:

a)Fixed Frame:选择world,添加tf

b)camera:订阅/camera/color/image_raw topic

c)marker:在Displays窗口左下角选择add,添加marker

在marker中选择话题/visualization_marker

如此,应该就能看见AR码显示在图像中,并且能够看到AR码的位姿状态

同时,我们可以使用ROS命令查看AR话题中的信息

第一个ar_pose_maker就是二维码的位姿信息

最终实现效果:

有问题欢迎评论区交流~~~

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

神筆&『馬良』

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

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

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

打赏作者

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

抵扣说明:

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

余额充值