利用奥比中光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中的效果:打开图像消息:

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

 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为例:


	
	
	
	
	
	

	
		
		
		
		

		
		
	

主要进行以下几点修改:

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

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

3)rviz:在启动识别程序后,新终端中启动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

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

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

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

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

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

最终实现效果:

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

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

你可能感兴趣的:(ubuntu,c++,linux,机器人,经验分享)