tf-ros

2023-05-16

http://wiki.ros.org/cn/tf/Tutorials

https://www.ncnynl.com/archives/201708/1881.html


1、广播变换
发布坐标之间的坐标关系

#include <ros/ros.h>
#include <tf/transform_broadcaster.h>

int main(int argc, char** argv)
{
  ros::init(argc, argv, "robot_tf_publisher");
  ros::NodeHandle n;

  ros::Rate r(10);

  tf::TransformBroadcaster broadcaster;

  while(n.ok()){

//发布坐标变换
    broadcaster.sendTransform(tf::StampedTransform(tf::Transform(
                            tf::Quaternion(0, 0, 0, 1), //四元数
                            tf::Vector3(-0.25, 0.0, 0.0)), 
                            ros::Time::now(), 
                            "base_link", 
                            "laser"));
    r.sleep();
  }
}  

2、使用变换

通过监听到上面发布的坐标变换,把坐标中的一个点变换到另一个坐标中的坐标


#include <ros/ros.h>
#include <geometry_msgs/PointStamped.h>
#include <tf/transform_listener.h>


//我们将创建一个函数,给定一个TransformListener,在“base_laser”坐标系中取一点,并将其转换为“base_link”坐标系。
// 这个函数将作为在我们程序的main()中创建的ros::Timer的回调,并且每秒都会触发。
void transformPoint(const tf::TransformListener& listener){
  //we'll create a point in the base_laser frame that we'd like to transform to the base_link frame
  geometry_msgs::PointStamped laser_point;
  laser_point.header.frame_id = "base_laser";

  //we'll just use the most recent transform available for our simple example
  laser_point.header.stamp = ros::Time();//时间戳

  //just an arbitrary point in space
  laser_point.point.x = 1.0;
  laser_point.point.y = 0.2;
  laser_point.point.z = 0.0;

  try{
    geometry_msgs::PointStamped base_point;
    listener.transformPoint("base_link", laser_point, base_point);//坐标中的点的位置变换

    ROS_INFO("base_laser: (%.2f, %.2f. %.2f) -----> base_link: (%.2f, %.2f, %.2f) at time %.2f",
        laser_point.point.x, laser_point.point.y, laser_point.point.z,
        base_point.point.x, base_point.point.y, base_point.point.z, base_point.header.stamp.toSec());
  }
  catch(tf::TransformException& ex){
    ROS_ERROR("Received an exception trying to transform a point from \"base_laser\" to \"base_link\": %s", ex.what());
  }
}

int main(int argc, char** argv){
  ros::init(argc, argv, "robot_tf_listener");
  ros::NodeHandle n;

//我们需要创建一个tf::TransformListener。一个TransformListener对象自动订阅了ROS变换消息主题和管理所有将在网络中广播的变换数据。
  tf::TransformListener listener(ros::Duration(10));

  //we'll transform a point once every second
  ros::Timer timer = n.createTimer(ros::Duration(1.0), boost::bind(&transformPoint, boost::ref(listener)));

  ros::spin();

}  

 

转载于:https://www.cnblogs.com/long5683/p/11143440.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

tf-ros 的相关文章

  • 双系统ubuntu20.04(neotic版本)从0实现Gazebo仿真slam建图

    双系统ubuntu20 04 neotic版本 从0实现Gazebo仿真slam建图 昨晚完成了ROS的多机通讯 还没来得及整理相关操作步骤 在进行实际小车的实验之前 还是先打算在仿真环境中进行测试 熟悉相关的操作步骤 计划通过虚拟机 笔记
  • ROS:开机自启动

    Ubuntu14 04 网上很多资料说在 etc rc local中添加脚本 实验之后完全没用 可能是系统版本不对 解决 Ubuntu14 04 开机项命令 gnome session properties 点击 add name 名字 c
  • ROS multi-master——multimaster_fkie配置

    多主站ROS配置和mutimaster fkie ROS版本 kinetic 操作系统 Ubuntu 16 04 multimaster fkie github 1网络配置 1 1路由器 设置无线路由器并连接两台计算机 机器人 为这两台计算
  • ROS之QtCreator开发环境搭建

    文章目录 系统环境 官方教程 安装 卸载 使用 导入工作空间 构建与运行 编写测试程序 系统环境 操作系统 Ubuntu20 04 ROS版本 Noetic 官方教程 按照官方教程或者下面笔记中的内容均能进行环境搭建 笔记中另外做了部分补充
  • Webots小车与Gampping建图仿真与ORB3算法实践

    此篇博客转自本作者在古月居的博客 https www guyuehome com 34537 前言 在研一的时候 由于XXX项目的需要 其中一项就是需要测试Gmapping建图 自然也要求使用ROS系统 由于之前经常在webots中进行仿真
  • SLAM-hector_slam 简介与使用

    hector slam功能包使用高斯牛顿方法 不需要里程计数据 只根据激光信息便可构建地图 所以他的总体框架如下 hector slam功能包 hector slam的核心节点是hector mapping 它订阅 scan 话题以获取SL
  • 无人飞行器智能感知竞赛--模拟器安装

    开发环境 win11 wsl2 注意事项 请配合视频使用 如果不看视频会对下面的配置过程迷惑 因为一开始我是想安装在ubuntu18 04的 中途发现ubuntu18 04没有ros noetic 所以转入ubuntu20 04配置 视频链
  • ROS诸多调试工具总结1

    ROS有许多调试工具来为ROS调试你的工具 1 rosnode 参数 用法 作用 list rosnode list 查看当前运行了哪些节点 info rosnode info node name 查看该节点发布 接受哪些话题以及服务 ki
  • rosrun 和 roslaunch 的时候 TAB 的自动补全出现问题

    rosrun 和 roslaunch 的时候 TAB 的自动补全出现问题 rospack Warning error while crawling home sun boost filesystem status Permission de
  • Ubuntu镜像下载地址

    镜像地址https launchpad net ubuntu cdmirrors
  • GG-CNN代码学习

    文章目录 1 源码网址 https github com dougsm ggcnn 2 数据集格式转化 下载后的康奈尔数据集 解压完之后里面的格式 里面的 tiff图像通过 txt文件转化得到 python m utils dataset
  • Ubuntu16.04安装ROS Kinetic详细步骤

    文章目录 ROS安装 配置Ubuntu软件仓库 设置sources list 设置密钥 更新Debian软件包索引 安装ROS 初始化 rosdep 环境配置 构建工厂依赖 测试安装 开发环境 ROS安装 ROS Kinetic只支持Wil
  • Raspberry Pi 上 ROS 服务器/客户端通过GPIO 驱动硬件

    ROS 服务 现在 想象一下你在你的电脑后面 你想从这个服务中获取天气 你 在你身边 被认为是客户端 在线天气服务是服务器 您将能够通过带有 URL 的 HTTP 请求访问服务器 将 HTTP URL 视为 ROS 服务 首先 您的计算机将
  • (ros/qt报错) FATAL: ROS_MASTER_URI is not defined in the environment

    安装qt之后 明明打开roscore但是qt运行跟ros有关的节点时报错 FATAL 1450943695 306401842 ROS MASTER URI is not defined in the environment Either
  • 如何将从 rospy.Subscriber 数据获得的数据输入到变量中?

    我写了一个示例订阅者 我想将从 rospy Subscriber 获得的数据提供给另一个变量 以便稍后在程序中使用它进行处理 目前 我可以看到订阅者正在运行 因为当我使用 rospy loginfo 函数时 我可以看到打印的订阅值 虽然我不
  • 无法在 ROS 中使用本地安装的 Protocol Buffer

    我已经安装了协议缓冲区 https developers google com protocol buffers 本地 ROS包的目录结构如下 CMakeLists txt package xml include addressbook p
  • catkin_make后找不到ROS包

    我根据 ROS 的 Wiki 页面创建了一个 ROS 工作区 我还使用创建了一个包catkin create pkg在我刚刚创建的工作区下 然后 按照 ROS Wiki 中的步骤使用以下命令构建包catkin make 构建包后 我插入命令
  • ROS安装错误(Ubuntu 16.04中的ROS Kinetic)

    中列出的步骤顺序http wiki ros org kinetic Installat 已被关注 尝试在Ubuntu 16 04中安装ROSkinetic 输入以下命令时出错 sudo apt get install ros kinetic
  • 如何使用 PyQT5 连接和分离外部应用程序或对接外部应用程序?

    我正在使用 ROS 为多机器人系统开发 GUI 但我对界面中最不想做的事情感到困惑 在我的应用程序中嵌入 RVIZ GMAPPING 或其他屏幕 我已经在界面中放置了一个终端 但我无法解决如何向我的应用程序添加外部应用程序窗口的问题 我知道
  • 使用 CMake 链接 .s 文件

    我有一个我想使用的 c 函数 但它是用Intel编译器而不是gnu C编译器 我在用着cmake构建程序 我实际上正在使用ROS因此rosmake但基础是cmake所以我认为这更多是一个 cmake 问题而不是ROS问题 假设使用构建的文件

随机推荐

  • IDEA下同时使用Git和svn

    使用Git时将文件改成Git Svn时改成svn 修改项目下 idea目录的vcs xml配置文件 lt xml version 61 34 1 0 34 encoding 61 34 UTF 8 34 gt lt project vers
  • springboot启动报错:Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualif...

    Caused by org springframework beans factory NoSuchBeanDefinitionException No qualifying bean of type 39 com zxkj lockser
  • 例解 Linux 下 Make 命令

    Linux 下 make 命令是系统管理员和程序员用的最频繁的命令之一 管理员用它通过命令行来编译和安装很多开源的工具 xff0c 程序员用它来管理他们大型复杂的项目编译问题 本文我们将用一些实例来讨论 make 命令背后的工作机制 Mak
  • 颜色代码对应表

    颜色代码表 http www knowsky com tools advancedColorPicker swf width 61 900 height 61 500 先用鼠标左键在左边大的方框内移动获取颜色 xff08 黑色三角上下移动调
  • 小草1.3.0

    VERSION 转载于 https www cnblogs com llw87 p 10149903 html
  • go gorm获取数据库报错:goexit: BYTE $0x90 // NOP

    报错内容很多 xff0c 其实看下来有用的其实就几条 runtime error invalid memory address or nil pointer dereference goexit BYTE 0x90 NOP 我按照官方示例和
  • chrome浏览器开发者工具F12中某网站的sources下的源码如何批量保存?

    目录 chrome浏览器 开发者工具F12中某网站的sources下的源码如何批量保存1 常用保存Sources源码的两种方法 1 1单个文件1 2 单个页面2 问题3 解决方案 chrome浏览器 开发者工具F12中某网站的sources
  • GlobalExceptionHandler 捕获抛出的异常,返回特定值给前端

    64 author hhh 64 date 2019 1 17 16 28 64 Despriction 64 ResponseBody 64 ControllerAdvice 64 Log4j2 public class GlobalEx
  • 获取百度地图POI数据一(详解百度返回的POI数据)

    POI是一切可以抽象为空间点的现实世界的实体 xff0c 比如餐馆 xff0c 酒店 xff0c 车站 xff0c 停车场等 POI数据具有空间坐标和各种属性 xff0c 是各种地图查询软件的基础数据之一 百度地图作为国内顶尖的地图企业 x
  • c/c++ linux epoll系列3 利用epoll_wait设置timeout时间长度

    linux epoll系列3 利用epoll wait设置timeout时间长度 epoll wait函数的第四个参数可以设置 xff0c epoll wait函数的等待时间 xff08 timeout时间长度 xff09 例子1 xff0
  • socket编程原理

    socket编程原理 1 问题的引入 1 普通的I O操作过程 UNIX系统的I O命令集 xff0c 是从Maltics和早期系统中的命令演变出来的 xff0c 其模式为打开一读 写一关闭 xff08 open write read cl
  • linux考试题答案2016,2016年4月全国自主考试(网络操作系统)真题

    2016年4月全国自主考试 网络操作系统 真题及答案解析 2016年4月全国自主考试 网络操作系统 真题及答案 xff0c 计算机网络自主考试历年真题 一 单项选择题 本大题共20小题 xff0c 每小题2分 xff0c 共40分 在每小题
  • (14)嵌入式软件开发工程师技能要求总结

    找准一个行业方向 xff1a 音视频 人工智能 深度学习 视觉识别 机器学习 嵌入式软件开发工程师 xff1a 技能要求 xff1a 熟悉 Linux操作系统 shell 脚本语言 mysql 的开发 xff0c 部署 xff0c 优化优先
  • 原来bug解决了,是这样的感觉

    终于过了 xff0c 感觉好想哭啊 xff0c 又莫名其妙的爽 xff0c 原来这就是bug 转载于 https www cnblogs com allison aichipingguo p 10018117 html
  • 闲话handle和handler

    虽然handle和handler只有一个字符之差 xff0c 但在计算机的世界里 xff0c 含义却大相径庭 1 先说说handle 北京话说 34 一边儿玩儿去 xff0c 玩勺子把儿去 34 xff0c 34 勺子把儿 34 说的就是h
  • 大数据发展前沿 期末总结复习

    其实就是简单的在网上搜了一下每个重要词条的基本概念 1 对抗学习 xff08 含Pytorch最简单的深度学习命令 xff09 生成对抗网络 xff08 GAN xff09 是非监督式学习的一种方法 xff0c 透过两个神经网络相互博弈的方
  • 出租车Jt/T 905协议与部标1078协议融合的网约车视频监控平台

    出租车 jt t 905协议 xff0c 是 jt t 808 协议的一个变种 xff0c 设计者将部标 808 协议拿过来 xff0c 并不是单纯的增加网约车相关的指令集 xff0c 而且对原有的指令如定位 0 0200 指令也进行了修改
  • 几款Git GUI客户端工具

    工欲善其事 xff0c 必先利其器 作为一名开发人员 xff0c 你不可能不知道git xff0c 无论你是开发自己的开源项目还是和团队一起进行大规模产品的开发 xff0c git都已经是源代码管理工具的首选 当然 xff0c 那些hard
  • 毕设(一)C#的百度api调用

    这个学期就要毕业了 xff0c 选了一个无人机地面站软件设计的题目 xff0c 这几天也开始着手做 xff0c 首先做了一个百度地图的调用 xff0c 这里因为是上位机的开发 xff0c 所有就不介绍Javascript的 调用方法 xff
  • tf-ros

    http wiki ros org cn tf Tutorials https www ncnynl com archives 201708 1881 html 1 广播变换 发布坐标之间的坐标关系 include lt ros ros h