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

  • 小规模纳税人企业所得税计算
  • 金税三期是什么时候投入使用的
  • 待报解预算收入计入什么科目
  • 结转结余属于什么科目
  • 个人独资企业可以投资有限公司吗
  • 附加税减半征收政策从什么时候开始
  • 高铁票抵扣进项税
  • 企业所得税预缴计算方法
  • 盈余公积属于什么类账户
  • 拍卖的商铺过户费怎么算
  • 记账凭证的填写示例
  • 会计分录怎么确认借贷方向
  • 红字发票冲销的销项税怎么处理
  • 简易征收和简易计税的区别
  • 专项资金可以存定期吗
  • 第三方佣金及成本还是费用
  • 自产农产品加工后仍属于附注的农产品,免税吗?
  • 支付给客户的货款叫什么
  • 税交多了退税走到哪一流程了问谁
  • 一般纳税人的账户是基本账户吗
  • 增值税普通发票税率
  • 金银首饰消费税怎么算
  • 增值税附加税减半征收政策
  • 预付账款可以用应付账款借方
  • 营改增文化体育服务包括哪些
  • 结转与结余
  • 计提印花税会计分录怎么写
  • 没有成本票怎么做成本
  • 税前合同价包含附加税金吗?
  • 代账代税与自行核算申报应从哪几个角度考虑
  • win10怎么启动双系统
  • bios咋进入
  • 刚毕业的学生可以买学生票吗
  • 如何设置win10电脑开机不黑屏
  • ph是什么文件
  • 外购货物用于职工福利进项税额可以抵扣吗
  • php中??
  • php实战
  • php文件上传技术
  • 应收票据其他应收款都需要提取坏账准备么
  • zabbix server端口
  • vue定时调用方法
  • thinkphp如何连接数据库
  • 调整税率后增值税发票的开具正确的有
  • 什么不计入税金及附加
  • 小型微利企业税收
  • 自然人所属税务机关怎么选
  • 500元以下开收据要交税吗
  • 制造费用转入什么
  • Simple Slug Translate 把WordPress固定链接自动翻译成英文
  • 建筑企业工程结算账务处理
  • 固定资产折旧会影响净利润吗
  • sqlserver强制转换为字符
  • 使用正则表达式提取文本(888)555
  • 核定征收和查账征收可以自己选择吗
  • 设计公司成本核算分录
  • 税法的个人所得税
  • 管理费用主要核算哪些内容
  • 电费发票未到怎么入账
  • 幼儿园增值税优惠政策
  • 收购溢价会计处理
  • 母公司和子公司是两个完全独立的法人
  • 向投资者分配利润或股利为什么减少所有者权益?
  • 借款利息计入哪个科目
  • 个人为什么不能购买永续债
  • 母公司及子公司增资
  • sqlserver代理无法启动怎样办
  • win10的win+tab
  • windows2003 64位注册码 序列号 激活码
  • mac打不了字什么原因
  • 如何延迟windows更新
  • linux内核驱动开发书籍
  • hke是什么意思
  • win8如何更改用户名字?
  • win10 20h2 微软账户
  • android新手入门
  • 济南高新区地税局地址
  • 小规模企业开通税务几天生效啊
  • 陕西省电子税务局手机app
  • 专家咨询费包括哪些内容
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设