ROS:订阅话题并发布(订阅amcl_pose数据并发布)

一、创建节点

 cd ~/catkin_ws/src
 catkin_create_pkg amcl_pose_sub_pub message_generation std_msgs roscpp
 roscd amcl_pose_sub_pub/src 	// → 移至src目录,该目录是功能包的源代码目录
 gedit amcl_pose_sub_pub.cpp 		// → 新建源文件并修改内容

amcl_pose_sub_pub.cpp

#include <ros/ros.h>
#include <geometry_msgs/PointStamped.h>
#include <geometry_msgs/PoseWithCovarianceStamped.h>
#include <iostream>
class amcl_pose_sub_pub {
private:
    ros::NodeHandle nh_;  // 定义ROS句柄
    ros::Publisher msgPointPub; 
    ros::Subscriber sub;

public:
    amcl_pose_sub_pub()
    {
    msgPointPub = nh_.advertise<geometry_msgs::PointStamped>("amcl_pose_", 1000);
    sub = nh_.subscribe("/amcl_pose", 1, &amcl_pose_sub_pub::amcl_pose_CallBack,this);
    }

    ~amcl_pose_sub_pub(){}

    void amcl_pose_CallBack(const geometry_msgs::PoseWithCovarianceStampedConstPtr& msg)
    {
        geometry_msgs::PointStamped msgPointStamped;
        msgPointStamped.point=msg->pose.pose.position;
        msgPointStamped.header.stamp = msg->header.stamp;
        msgPointStamped.header.frame_id = "map";
        msgPointPub.publish(msgPointStamped);
        std::cout<<"amcl"<<std::endl;
    }
};
int main(int argc, char** argv)
{
    ros::init(argc, argv,"amcl_pose_sub_pub");
    amcl_pose_sub_pub obj;
    ros::spin();
    return 0;
}

在CMakeLists.txt文件中添加以下选项来生成可执行文件。add_executable(amcl_pose_sub_pub src/amcl_pose_sub_pub.cpp)也就是说,通过构建amcl_pose_sub_pub.cpp文件来创建amcl_pose_sub_pub可执行文件。

修改CMakeLists.txt

cmake_minimum_required(VERSION 3.0.2)
project(amcl_pose_sub_pub)
find_package(catkin REQUIRED COMPONENTS
  message_generation
  roscpp
  std_msgs
)
catkin_package()
include_directories(include ${catkin_INCLUDE_DIRS} ${PCL_INCLUDE_DIRS})

include_directories(
# include
  ${catkin_INCLUDE_DIRS}
)
add_executable(amcl_pose_sub_pub src/amcl_pose.cpp)
target_link_libraries(amcl_pose_sub_pub ${catkin_LIBRARIES})

二、rviz显示结果

运行导航:

roslaunch turtlebot3_gazebo turtlebot3_world.launch 
roslaunch turtlebot3_navigation turtlebot3_navigation.launch

运行节点:

rosrun amcl_pose_sub_pub amcl_pose_sub_pub 

记得在rviz中添加pointstanted订阅发布的amcl结果,其实已有对应于amcl结果的数据,这里只是和订阅发布结合看看效果

结果:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值