位置: 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)(马哈拉施特拉邦人口)

  • 钉钉怎么切换学生账号(钉钉怎么切换学校)

    钉钉怎么切换学生账号(钉钉怎么切换学校)

  • 网易云音乐听歌排行怎么删(网易云音乐听歌排行怎么删除)

    网易云音乐听歌排行怎么删(网易云音乐听歌排行怎么删除)

  • 手机qq3g在线是什么意思(手机qq3g在线几种可能)

    手机qq3g在线是什么意思(手机qq3g在线几种可能)

  • 神州租车的尊享服务有什么用(神州租车的尊享服务用买吗?)

    神州租车的尊享服务有什么用(神州租车的尊享服务用买吗?)

  • 荣耀5和m5青春版对比(荣耀5和m5青春版哪个好)

    荣耀5和m5青春版对比(荣耀5和m5青春版哪个好)

  • 计算机病毒寄生方式(计算机病毒寄生方式分类)

    计算机病毒寄生方式(计算机病毒寄生方式分类)

  • 微信删除加拉黑对方还能加吗(微信删除加拉黑怎么加回来)

    微信删除加拉黑对方还能加吗(微信删除加拉黑怎么加回来)

  • 电脑的下面一栏点不了是为什么(电脑的下面一栏不见了)

    电脑的下面一栏点不了是为什么(电脑的下面一栏不见了)

  • 高危漏洞有必要修复吗(一个高危漏洞多少钱)

    高危漏洞有必要修复吗(一个高危漏洞多少钱)

  • 小米9和小米8指纹版区别(小米8 小米9)

    小米9和小米8指纹版区别(小米8 小米9)

  • 快手极速版苹果怎么下载(快手极速版苹果手机为什么不能赚钱)

    快手极速版苹果怎么下载(快手极速版苹果手机为什么不能赚钱)

  • 苹果手机为什么下载不了软件(苹果手机为什么连不上wifi)

    苹果手机为什么下载不了软件(苹果手机为什么连不上wifi)

  • ppt怎么点一个出现一个(ppt怎么点一个出来别的页面)

    ppt怎么点一个出现一个(ppt怎么点一个出来别的页面)

  • 苹果手机充电后黑屏无法开机怎么办(苹果手机充电后黑屏了,怎么样能打开)

    苹果手机充电后黑屏无法开机怎么办(苹果手机充电后黑屏了,怎么样能打开)

  • 为什么ipad登录不了id(为什么ipad登录王者是新用户)

    为什么ipad登录不了id(为什么ipad登录王者是新用户)

  • 小米8的充电接口在哪(小米8充电接触不好怎么办)

    小米8的充电接口在哪(小米8充电接触不好怎么办)

  • excel 的主要用途(excel的主要用途是什么)

    excel 的主要用途(excel的主要用途是什么)

  • cellular一z有什么用(cellular一z都有什么功能)

    cellular一z有什么用(cellular一z都有什么功能)

  • vivox30截图怎么截(vivoy30手机截图)

    vivox30截图怎么截(vivoy30手机截图)

  • 高德地图如何查看海拔(高德地图如何查海拔高度)

    高德地图如何查看海拔(高德地图如何查海拔高度)

  • 把微博视频保存到手机(把微博视频保存到本地)

    把微博视频保存到手机(把微博视频保存到本地)

  • 光纤有信号但不能上网(光纤无信号的解决办法)

    光纤有信号但不能上网(光纤无信号的解决办法)

  • 7p有无线充电功能吗(苹果7p有无线充电)

    7p有无线充电功能吗(苹果7p有无线充电)

  • efi系统分区能删除吗详细介绍(efi系统分区能删除吗win10)

    efi系统分区能删除吗详细介绍(efi系统分区能删除吗win10)

  • 电商后台管理系统简介

    电商后台管理系统简介

  • 机器学习——果蔬分类

    机器学习——果蔬分类

  • 其他权益工具投资借贷方向
  • 买新车时旧车置换新车划算吗
  • 房地产企业预缴增值税如何申报
  • 多开的增值税发票交多少税
  • 账户未认证
  • 公司往来款现金流量表
  • 股权收购的好处
  • 自然人股权转让涉税信息怎么填
  • 营改增后还要交企业所得税吗
  • 园林绿化工程税点
  • 如何确定赊销额度
  • 采用支付手续费方式委托代销商品
  • 建立账套的简单操作
  • 制造费用如何分摊到产品的成本
  • 小型微利企业要交残保金吗
  • 奖金扣税标准税率表
  • 其他现代服务包括哪些税目
  • 结转已售材料成本600元会计分录
  • 期货交易的会计分录
  • 支付的测试报告怎么查
  • win10电脑记事本在哪
  • php mysql_real_escape_string函数用法与实例教程
  • 现金流量表中收入是含税收入还是不含税
  • php 设计模式 鸟哥
  • php中通过什么属性可以获取数组中元素的个数
  • 正则表达式u4e00
  • 房产自用改出租房产税如何申报
  • echarts右侧y轴
  • PHP:JewishToJD()的用法_日历函数
  • PHP:imageellipse()的用法_GD库图像处理函数
  • 企业注销清算需要交什么税
  • 同步和异步的关系
  • 购买仓库计入什么科目
  • 建行e信通怎么提现怎么操作
  • vue 路由
  • win11更新71
  • yii2高级应用之自定义组件实现全局使用图片上传功能的方法
  • 购买货物对方代付怎么办
  • 购进来的样品怎么账务处理
  • 怎么修改手机的地理位置
  • 网商贷企业贷款条件
  • mongodb官方文档中文
  • 收据入帐
  • 购入项目用仪器怎么做账
  • microsoft SQL server 2014可以删吗
  • 预收账款退款的会计处理
  • 银行汇票转入银行分录
  • 土地需要摊销嘛?
  • 跨年的费用怎么调整
  • 什么是资金结存,它具体包括哪些内容
  • 购买天然气进项税额
  • 做好成本会计的基础工作主要对企业成本管理有什么意义
  • 成本利润率计算销售价格
  • 盈余公积必须提折旧吗
  • 会计循环属于什么流程
  • 企业代购是什么意思
  • 用SQL统计SQLServe表存储空间大小的代码
  • solaris 磁盘管理
  • linux vim
  • Linux mysql如何更改root密码以及忘记root密码的修改方法
  • 如何设置win10默认程序
  • win8文件夹打不开
  • unity 3d
  • android canvas scale
  • perl常用函数
  • perl 获取数据库查询结果
  • node.js中用什么方法处理get、post请求的参数
  • css中边界margin的多种定义方法
  • 简述jquery的优势
  • jquery get(0)
  • jquery 模态框实现
  • android 监听事件
  • android简单app实例
  • 国税怎么打印发票
  • 单位发的一次性奖励如何扣税
  • 安徽省历任书记
  • 长春市医保社保什么时候年检
  • 杭州市电子税务局官网登录
  • 鄞江在哪里
  • 草地耕地占用税征收标准
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设