apriltag_ros 订阅节点,订阅位姿消息

本文档详细介绍了如何在Ubuntu 18.04和ROS Melodic环境下,使用C++编写一个apriltag_ros订阅节点。通过`rostopic list`和`rostopic type`命令找到并识别`/tag_detections`话题,该话题类型为`apriltag_ros/AprilTagDetectionArray`。代码中展示了如何订阅此话题并解析消息,提取标签位置信息。在CMakeLists.txt中添加必要的依赖项以解决头文件找不到的问题。

关于apriltag_ros订阅内容网上参考资料较少,整理了一下过程中踩的坑,给大家排一下雷。
参考文章古月居 参考链接

1.环境

ubuntu 18.04
ROS  melodic

2.代码

#include "ros/ros.h"
#include "apriltag_ros/AprilTagDetectionArray.h"
#include "iostream"

using namespace std;

ros::Subscriber ar_sub_;
 
class Localizer
{
public:
  Localizer(ros::NodeHandle& nh)
  {
      ar_sub_ = nh.subscribe<apriltag_ros::AprilTagDetectionArray>("/tag_detections", 1, &Localizer::number_callback, this);
  }

  void number_callback(const apriltag_ros::AprilTagDetectionArray::ConstPtr& msg)
  {
      if(msg->detections.size()>0)
      {
             float getX = msg->detections[0].pose.pose.pose.position.x;
	    	 cout<<"Point position:"<<endl;
	    	 cout<<"cam_getX: "<<getX<<endl;    }
    	 else 
  	{cout<<"未检测到tag"<<endl;}
  	 }
};

int main(int argc, char **argv)
{
    ros::init(argc, argv,"apriltag_detector_subscriber");
    ros::NodeHandle node_obj;
    Localizer localizer(node_obj);    
    ROS_INFO("节点开始");
    ros::spin();
    return 0;
}

3.代码解析,CMake配置

头文件

#include "ros/ros.h"
#include "apriltag_ros/AprilTagDetectionArray.h" //apriltag_ros 头文件要包含
#include "iostream"

此时如果报找不到相关头文件
要去改CMakeLists.txt 文件
在find_package处加入相关的功能包即可
除此之外,其他配置如下所示

find_package(catkin REQUIRED COMPONENTS
  roscpp
  rospy
  std_msgs
  apriltag_ros//需加入的ros包
)
add_executable(apriltag_sub src/apriltag_sub.cpp)
add_dependencies(apriltag_sub  ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
target_link_libraries(apriltag_sub
  ${catkin_LIBRARIES}
)

4.小结

总结了一下订阅节点的笔记
首先找到想到订阅的话题
通过

rostopic list

topic
找到/tag_detections 话题
查看话题的消息类型

 rostopic type /tag_detections

发现是apriltag_ros/AprilTagDetectionArray类型
就可以写订阅节点了

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值