工作环境:(1)ubuntu20.04 (2)ROS1 noetic
难点:在没有官方ar_track包和例程的情况下,使用低配置的摄像头实现二维码识别定位
3D视觉AI开放平台https://vcp.developer.orbbec.com.cn/documentation?doc=doc-83
(1)官网上下载驱动OpenNI_SDK_ROS_v1.1.4_20220927_e5a9dc_Linux.zip
3D视觉AI开放平台https://vcp.developer.orbbec.com.cn/resourceCenter?defaultSelectedKeys=70
然后将包解压到任意文件夹中,记好路径
(2)准备工作:安装依赖
sudo apt install libgflags-dev ros-$ROS_DISTRO-image-geometry ros-$ROS_DISTRO-camera-info-manager\
ros-$ROS_DISTRO-image-transport ros-$ROS_DISTRO-image-publisher libgoogle-glog-dev libusb-1.0-0-dev libeigen3-dev
git clone https://github.com/libuvc/libuvc.git
cd libuvc
mkdir build && cd build
cmake .. && make -j4
sudo make install
sudo ldconfig
mkdir -p ~/ros_ws/src
cd ~/ros_ws
catkin_make
cd ~/ros_ws
source ./devel/setup.bash
roscd astra_camera
./scripts/create_udev_rules
sudo udevadm control --reload && sudo udevadm trigger
发布的时候最好 Release 编译
启动相机
source ./devel/setup.bash
roslaunch astra_camera astra.launc
source ./devel/setup.bash
rviz
rostopic list
rosservice list
rosparam list
如果在启动步骤有报错,新开一个窗口
运行:rqt_image_view
查看是否有图像消息,如果有,则不用管报错。
运行到这一步,/ws/src/ros_astra_camera文件夹可以作为astra mini的启动模版来使用
在rviz中的效果:打开图像消息:
先创建一个新的工作空间,创建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
如果生成了二维码,则说明安装成功!
参考博客:【学习笔记】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文件中的路径
修改完后:
先打开一个终端运行:(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就是二维码的位姿信息
最终实现效果:
有问题欢迎评论区交流~~~