位置: IT常识 - 正文

在ROS下使用Cartographer的纯定位模式,并实时获取定位位姿数据(ros call)

编辑:rootadmin
在ROS下使用Cartographer的纯定位模式,并实时获取定位位姿数据 文章目录前言一、Cartographer纯定位模式的配置1.启动纯定位模式配置2.加载定位地图,并删除cartographer生成地图节点二、实时获取定位数据1.新建一个节点发布定位数据2.修改makelist文件并编译3.启动仿真环境并启动节点总结前言

推荐整理分享在ROS下使用Cartographer的纯定位模式,并实时获取定位位姿数据(ros call),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:ros calibration,ros launch type,ros怎么运行,ros 使用,ros call,ros key,ros call,ros calibration,内容如对您有帮助,希望把文章链接给更多的朋友!

Cartographer提供了一种纯定位模式,在实际工程中有很多应用。本文记录在Gazebo仿真环境下,使用turtlebot3在cartographer的纯定位模式下,发布实时定位数据的过程。

一、Cartographer纯定位模式的配置1.启动纯定位模式配置

修改你的.lua文件,添加以下橙色内容颜色显示内容。

2.加载定位地图,并删除cartographer生成地图节点在ROS下使用Cartographer的纯定位模式,并实时获取定位位姿数据(ros call)

在你的.launch文件中添加map_server 节点,并删除cartographer_occupancy_grid_node节点,如下

<node name="map_server" pkg="map_server" type="map_server"args="/home/{yourname}/catkin_ws/map/{yourmapname}.yaml" /> <!-- cartographer_node --> <node pkg="cartographer_ros" type="cartographer_node" name="cartographer_node" args="-configuration_directory $(find turtlebot3_slam)/config -configuration_basename turtlebot3_lds_2d_pureLocation.lua -load_state_filename /home/{yourname}/catkin_ws/map/{yourmapname}.pbstream" output="screen"> <!-- cartographer_occupancy_grid_node <node pkg="cartographer_ros" type="cartographer_occupancy_grid_node" name="cartographer_occupancy_grid_node" args="-resolution 0.05 " />-->二、实时获取定位数据

cartographer纯定位模式下获取定位数据,就是获取map坐标到base_link的tf。

1.新建一个节点发布定位数据

在你的工作区间的软件包的src文件夹下添加一个CartoTransferPose_main.cc文件,内容如下。

#include <ros/ros.h>#include <tf/transform_listener.h>#include <geometry_msgs/Pose2D.h>#include <fstream>#include <iostream>#include <cmath>using namespace std;double x,y,z, qx,qy,qz, qw;double theta;geometry_msgs::Pose2D pos_now;int main(int argc, char** argv){ ros::init(argc, argv, "tf_Pose_Publisher"); ros::NodeHandle node; ros::Publisher _pose_pub=node.advertise<geometry_msgs::Pose2D>("pose_data", 10); tf::StampedTransform transform; tf::TransformListener listener; ros::Rate rate(10.0); while (ros::ok()){ ros::Time start = ros::Time::now(); cout << "StartTime:"<< start << endl; tf::StampedTransform transform; try{ //得到坐map和坐标base_link之间的关系 listener.waitForTransform("map","base_link", ros::Time(0), ros::Duration(3.0)); listener.lookupTransform("map", "base_link", ros::Time(0), transform); } catch (tf::TransformException &ex) { ROS_ERROR("%s",ex.what()); ros::Duration(1.0).sleep(); } x=transform.getOrigin().x(); y=transform.getOrigin().y(); z=transform.getOrigin().z();tf::Quaternion q = transform.getRotation(); qx = q.x(); qy = q.y(); qz = q.z(); qw = q.w(); pos_now.x = transform.getOrigin().x(); pos_now.y =transform.getOrigin().y(); pos_now.theta = tf::getYaw(q); _pose_pub.publish(pos_now);printf("x: %f, y: %f, z: %f, qx: %f,qy: %f,qz: %f, qw: %f, theta: %f\n",x,y,z,qx,qy,qz,qw,pos_now.theta); rate.sleep(); ros::Time end = ros::Time::now(); cout << "EndTime:"<<end << endl; } return 0;};2.修改makelist文件并编译

添加以下代码到Cmakelist文件

find_package(catkin REQUIRED COMPONENTS roscpp rospy std_msgs tf)add_executable(CartoTransferPose_main src/CartoTransferPose_main.cc)target_link_libraries(CartoTransferPose_main ${catkin_LIBRARIES})

保存并编译。

3.启动仿真环境并启动节点

首先打开gazebo环境并按之前修改配置启动纯定位模式。 在命令行输入rostopic echo /pose_data。 这里发布的即位姿数据。 在命令行用rosrun启动CartoTransferPose_main节点,出现以下界面。其中x,y,theta即为位姿数据,频率为10hz。

总结

本文配置了Cartographer的纯定位模式,并获取了定位数据,为后续应用做好了铺垫。

本文链接地址:https://www.jiuchutong.com/zhishi/284121.html 转载请保留说明!

上一篇:cuda与torch的安装匹配(cuda torch)

下一篇:马哈拉施特拉邦的Varandha Ghat,印度 (© AmitRane1975/iStock/Getty Images Plus)(马哈拉施特拉邦人口)

  • cr2和jpg有什么区别(cr2与jpg)

    cr2和jpg有什么区别(cr2与jpg)

  • 无线热点设置(无线热点)(无线热点设置在哪里)

    无线热点设置(无线热点)(无线热点设置在哪里)

  • 荣耀60se耳机插口在哪里(荣耀60se耳机插口在哪里图片)

    荣耀60se耳机插口在哪里(荣耀60se耳机插口在哪里图片)

  • 微信领红包提醒怎么删除(微信领红包提醒怎么关闭)

    微信领红包提醒怎么删除(微信领红包提醒怎么关闭)

  • 华为Nova5怎么取消锁屏壁纸(华为nova5怎么取出卡槽)

    华为Nova5怎么取消锁屏壁纸(华为nova5怎么取出卡槽)

  • 顺风车可以取消订单吗(顺风车可以取消订单扣钱吗)

    顺风车可以取消订单吗(顺风车可以取消订单扣钱吗)

  • 抖音注销后别人搜我显示什么(抖音注销后别人还能看到聊天记录吗)

    抖音注销后别人搜我显示什么(抖音注销后别人还能看到聊天记录吗)

  • 呼叫转移有通话记录吗(呼叫转移通话记录算谁的)

    呼叫转移有通话记录吗(呼叫转移通话记录算谁的)

  • 华为nova6防水吗(华为nova6防不防水)

    华为nova6防水吗(华为nova6防不防水)

  • 表格标签在哪里找(表格标签怎么写)

    表格标签在哪里找(表格标签怎么写)

  • 小天才z5a是z5的升级款吗(小天才z5a是第几代)

    小天才z5a是z5的升级款吗(小天才z5a是第几代)

  • 抖音里求回关是什么意思(抖音里求回关是什么人)

    抖音里求回关是什么意思(抖音里求回关是什么人)

  • 不是原装的充电器对手机有影响吗(不是原装的充电器对充电器有影响吗)

    不是原装的充电器对手机有影响吗(不是原装的充电器对充电器有影响吗)

  • 恢复出厂设置伤手机吗(恢复出厂设置伤硬盘吗)

    恢复出厂设置伤手机吗(恢复出厂设置伤硬盘吗)

  • 为什么oppo没有小爱同学(为什么oppo没有体验店)

    为什么oppo没有小爱同学(为什么oppo没有体验店)

  • 投屏可以倍速播放吗(投屏可以倍速播放吗bilibili)

    投屏可以倍速播放吗(投屏可以倍速播放吗bilibili)

  • iphone怎么找本地音乐(苹果手机本地在哪里)

    iphone怎么找本地音乐(苹果手机本地在哪里)

  • 手机qq怎么一键退群(手机qq怎么一键清好友)

    手机qq怎么一键退群(手机qq怎么一键清好友)

  • oppo手机总是闪屏怎么办(oppo手机总是闪退怎么办)

    oppo手机总是闪屏怎么办(oppo手机总是闪退怎么办)

  • 快手解除绑定的手机号(快手解除绑定的实名认证需要多久可以重新绑定)

    快手解除绑定的手机号(快手解除绑定的实名认证需要多久可以重新绑定)

  • a320主板支持什么cpu(a320主板支持什么固态)

    a320主板支持什么cpu(a320主板支持什么固态)

  • mde6什么型号(mde65)

    mde6什么型号(mde65)

  • 三星s105g版本什么时候上市(三星s105g版值得入手吗)

    三星s105g版本什么时候上市(三星s105g版值得入手吗)

  • 陌陌发不了视频,在哪里设置(陌陌发不了视频怎么办)

    陌陌发不了视频,在哪里设置(陌陌发不了视频怎么办)

  • vivox23怎么屏蔽广告(vivo手机屏蔽功能在哪里设置)

    vivox23怎么屏蔽广告(vivo手机屏蔽功能在哪里设置)

  • 荣耀20有没有红外线功能(荣耀20有没有红包助手)

    荣耀20有没有红外线功能(荣耀20有没有红包助手)

  • 股东分红交税税率
  • 所得税会计与财务会计比较研究
  • 复合计征消费税例题
  • 怎么恢复自然人个人信息
  • 外购商品发给职工如何做账
  • 生产设备改扩建会计分录
  • 收到发票未收到款
  • 职工薪酬会计准则
  • 实收资本需要计提印花税吗
  • 河道工程维护管理费征收
  • 企业支付的产品广告费应计入什么账户借方
  • 企业转增股本要交税吗
  • 一般纳税人净利润300万企业所得税怎么算
  • 超市预付卡开票内容
  • 会计报表上总资产怎么填
  • 社保支付账号是什么
  • 小型微利企业预缴
  • 去年的管理费用怎么冲
  • win都是10 怎么办
  • 银行的贷款损失准备会计分录
  • mac桌面的文件夹怎么换到别的地方
  • cmos密码和bios密码
  • 新职工工资从什么时候起算
  • php自学
  • 公司过户费用怎么入账
  • 如何查询税务完税证明
  • 雷尼尔国家公园攻略
  • php中实现文件上传需要用到哪几个函数
  • nginx连接超时时间设置多少
  • 网站伪静态有什么用
  • background-size 之 背景图的尺寸设置
  • 进项税额转出会造成增值税应纳税额
  • 油卡预付卡发票能入费用吗怎么入账
  • php use关键字
  • 增值税附加税减免政策2022年
  • 购买的烟酒怎么入账
  • 非货币性资产交换是企业经常发生的
  • 哪些发票可以抵扣?
  • sql分组计算
  • 企业一般存款账户和基本存款账户的区别
  • 补缴纳税款
  • 逾龄资产对企业的影响
  • 专项应付款的核算
  • 收到外币收入怎么处理
  • 实收资本入账需要算设备安装费吗
  • 申报残保金是不是交医保
  • 中标费用入什么科目
  • 收到定期存款怎么做分录
  • 应付账款明细账怎么登记
  • 销项发票导出为什么是乱码
  • 开发软件应采用
  • 存货期末计量按什么分类
  • 设备的验证服务包括
  • 研发支出的帐务处理
  • 账务处理程序和财务处理程序
  • 通过SQL Server的位运算功能巧妙解决多选查询方法
  • linux中进程在运行时的基本状态
  • mac怎么添加桌面
  • macza
  • diy组装电脑前置怎么样
  • linux 限制内存
  • neoDVD.exe - neoDVD是什么进程 有什么用
  • win8系统的应用程序在哪里
  • linux解密
  • unity unity3d
  • node.js基础入门
  • nodejs入门教程
  • js中的$是什么意思
  • 如何解决eclipse非正常关闭重打开编译代码
  • 怎么连接w乚an
  • js null,undefined,字符串小结
  • javascript中函数的作用域分为全局作用域
  • js随机生成一个整数
  • JavaScript程序设计形考任务第一次任务
  • 安卓刷屏神器
  • 安卓权限管理app
  • 软件和集成电路企业税收优惠
  • 税务分局长级别
  • 土地增值税清算退税涉及企业所得税补缴
  • 机动车检测属于哪个税收
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设