Apriltag_ros安装教程和使用以及无人机定位识别降落的应用

简介

Apriltag是一种视觉基准系统,应用于机器视觉领域,如机器人导航,无人机定位等。Apriltag由一系列的二维码标签组成,每个标签都有一个唯一的ID,识别效率挺高的。

配置环境

机载电脑 ubuntu18.04/20.04

px4固件飞控

飞行平台

机载电脑需配置ROS+mavros+apriltag_ros

mavros安装参考: https://blog.csdn.net/2301_76165902/article/details/132591112?spm=1001.2014.3001.5502

配置流程分为源码安装和二进制(apt)安装

主要安装相机驱动和apriiltag 推荐二进制安装,简单省时!

源码安装

相机安装

cd catkin_ws/src #安装在一个ROS工作空间上

git clone https://github.com/bosch-ros-pkg/usb_cam.git #下载源码

cd .. #回到工作空间

ctakin_make #进行编译

cd usb_cam

mkdir build

cd build

cmake ..

make

测试

roslaunch usb_cam usb_cam.launch #启动launch文件

打开rqt,测试相机图像

rqt_image_view

apriltag安装

先安装依赖

git clone https://github.com/AprilRobotics/apriltag.git # 这个不是ros的功能包

cd apriltag

mkdir build

cd build

cmake ..

make

sudo make install

克隆功能包

git clone https://github.com/AprilRobotics/apriltag_ros.git

在工作空间编译

catkin_make

二进制安装

sudo apt install ros-$ROS_DISTRO-usb-cam

sudo apt install ros-$ROS_DISTRO-apriltag-ros

在终端用roscd进入apriltag_ros

输入ls查看目录!

这里提供了launch文件,不需要自己再次编写

可以修改config配置文件和launch文件

在tags.yaml中修改要识别的ID

tag_bundles:
  [
   {
      name: 'my_bundle',
      layout:
        [
          {id: 0, size: 0.05, x: 0.0000, y: 0.0000, z: 0.0, qw: 1.0, qx: 0.0, qy: 0.0, qz: 0.0}
        ]
     } 

  ]

在最里面添加id即可

修改continuous_detection.launch文件

<launch>
  <arg name="launch_prefix" default="" /> <!-- set to value="gdbserver localhost:10000" for remote debugging -->
  <arg name="node_namespace" default="apriltag_ros_continuous_node" />
  <arg name="camera_name" default="/usb_cam" />
  <arg name="image_topic" default="/image_raw" />

  <!-- Set parameters -->
  <rosparam command="load" file="$(find apriltag_ros)/config/settings.yaml" ns="$(arg node_namespace)" />
  <rosparam command="load" file="$(find apriltag_ros)/config/tags.yaml" ns="$(arg node_namespace)" />
  
  <node pkg="apriltag_ros" type="apriltag_ros_continuous_node" name="$(arg node_namespace)" clear_params="true" output="screen" launch-prefix="$(arg launch_prefix)" >
    <!-- Remap topics from those used in code to those on the ROS network -->
    <remap from="image_rect" to="$(arg camera_name)/$(arg image_topic)" />
    <remap from="camera_info" to="$(arg camera_name)/camera_info" />

    <param name="publish_tag_detections_image" type="bool" value="true" />      <!-- default: false -->
  </node>
</launch>

改成对应的相机图像话题

测试使用

roslaunch usb_cam usb_cam.launch  #打开相机
roslaunch apriltag_ros continuous_detection.launch #开启识别

打开rqt

rqt_image_view

可以订阅/tag_detections话题获取相机坐标

无人机辅助定位

模拟无人机在高空中失去GPS信号,依靠地面上的apriltag码辅助定位。

如何订阅话题/tag_detections

apriltag_ros::AprilTagDetection marker;
void apriltag_cb(const apriltag_ros::AprilTagDetectionArray::ConstPtr &msg)
{
    int count = msg->detections.size();
	if(count!=0)
	{
		for(int i = 0; i<count; i++)
		{
			marker = msg->detections[i];			
			if(marker.id == current_target_id)
			{
				marker_found = true;
				detec_x = marker.pose.pose.pose.position.x;
        		detec_y = marker.pose.pose.pose.position.y;
        		detec_z = marker.pose.pose.pose.position.z; 
			}
		}
	//ROS_INFO("detec_x=%.2f,detec_y=%.2f,detec_z=%.2f",detec_x,detec_y,detec_z);
	}
	else
	{
		marker_found = false;
	}

}

其中current_target_id为想要识别的ID

进入/opt/ros/melodic/share/apriltag_ros/msg,查看AprilTagDetection.msg

注意这里的id数据类型为vector,不是int型,注意定义。

可以查看源码,如有错误请指正。

github网址icon-default.png?t=O83Ahttps://github.com/jiezz12/apriltag_location.git

如果有帮助请点一个star,感谢。

补充

本人为二进制下载的,因为源码下载依赖存在报错,遂二进制下载。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值