ROS+mbed 发布tf里程信息

#include "mbed.h"
#include <ros.h>
#include <ros/time.h>
#include <tf/transform_broadcaster.h>

ros::NodeHandle  nh;

geometry_msgs::TransformStamped t;
tf::TransformBroadcaster broadcaster;

char base_link[] = "/base_link";
char odom[] = "/odom";

int main() {
    nh.initNode();
    broadcaster.init(nh);

    while (1) {
        t.header.frame_id = odom;
        t.child_frame_id = base_link;
        t.transform.translation.x = 1.0;
        t.transform.rotation.x = 0.0;
        t.transform.rotation.y = 0.0;
        t.transform.rotation.z = 0.0;
        t.transform.rotation.w = 1.0;
        t.header.stamp = nh.now();
        broadcaster.sendTransform(t);
        nh.spinOnce();
        wait_ms(100);
    }
}

用rosrun rosserial_python serial_node.py _port:=/dev/ttyACM0 运行ROS端节点

查看tf:

rosrun tf tf_echo odom base_link

时间: 2024-07-30 22:12:32

ROS+mbed 发布tf里程信息的相关文章

ROS+mbed

试了一下, 用stm32F103RB nucleo的板子, 跑mbed, 跟ros的库, 发布一个std_msg/String, 为什么不直接发布里程? 因为经常报message比buffer大的错误. 没办法, 只好先用stm32通过串口, 发布有用的x, y, 跟yaw值, string格式, 然后ROS端起一个节点去解析string, 转成里程跟tf. stm32端: /* * rosserial Publisher Example * Prints "hello world!"

编写第一个ROS程序-发布器(Publisher)

在上一篇文章中我们安装好了ROS环境.本篇文章我们将熟悉ROS中的一些概念(Concept),并尝试使用C++来实现一个发布器(Publisher)和一个订阅器(Subscriber). 该文章是个人学习ROS的过程记录,参考的书是中文版<ROS机器人编程:原理与应用>,英文版为A Systematic Approach to Learning Robot Programming with ROS,该书代码托管在作者wsnewman的github上,感谢作者的辛苦付出. 该篇文章分为以下几个部

在ros下使用tf

tf真是一个好东西,把坐标变换都简化了 首先tf需要有一个broadcaster #include <ros/ros.h> #include <tf/transform_broadcaster.h> #include <nav_msgs/Odometry.h> void poseCallback(const nav_msgs::OdometryConstPtr& msg){ static tf::TransformBroadcaster br; ROS_INFO

ROS 自定义消息发布器和订阅器测试 +代码详解(入门级)

既对ros tutorial 上的例子有了一定的了解之后,今天对发布器和订阅器代码(http://wiki.ros.org/cn/ROS/Tutorials/WritingPublisherSubscriber%28c%2B%2B%29)进行了研究,同时稍作改动进行了验证, 发布器-------------------------------------------------------------------------------------------------------------

ROS主题发布订阅

节点是一个可执行程序,它连接到了ROS的网络系统中.我们将会创建一个发布者,也就是说话者节点,它将会持续的广播一个信息. 改变目录到之前所建立的那个包下: cd ~/catkin_ws/src/beginner_tutorials 在beginner_tutorials包下面建立一个src文件夹: mkdir -p ~/catkin_ws/src/beginner_tutorials/src 创建文件src/talker.cpp: gedit src/talker.cpp 将下面的内容复制进去:

ROS主题发布订阅控制真实的机器人下位机

先模拟控制小乌龟 新建cmd_node.ccpp文件: #include"ros/ros.h" #include"geometry_msgs/Twist.h" //包含geometry_msgs::Twist消息头文件 #include <stdlib.h> #include<stdlib.h> int main(int argc, char **argv) { ros::init(argc, argv, "cmd_node&quo

ROS+mbed 订阅者

从ROS端如果要发送消息给mbed, 聪明的我知道了, 估计要用订阅者, 让mbed去订阅一个制定的topic, 问题来了, 能否订阅两个topic? 稍后再试. mbed上面是这样的: #include "mbed.h" #include <ros.h> #include <std_msgs/UInt16.h> ros::NodeHandle nh; //Servo servo(D8); DigitalOut myled(LED1); void servo_c

ROS探索总结(十九)——如何配置机器人的导航功能

1.概述 ROS的二维导航功能包,简单来说,就是根据输入的里程计等传感器的信息流和机器人的全局位置,通过导航算法,计算得出安全可靠的机器人速度控制指令.但是,如何在特定的机器人上实现导航功能包的功能,却是一件较为复杂的工程.作为导航功能包使用的必要先决条件,机器人必须运行ROS,发布tf变换树,并发布使用ROS消息类型的传感器数据.同时,为了让机器人更好的完成导航任务,开发者还要根据机器人的外形尺寸和性能,配置导航功能包的一些参数. 2.硬件要求 尽管导航功能包设计得尽可能通用,但是仍然对机器人

Odometry的发布和发布odom到base_link的tf变换

转载自http://www.ncnynl.com/archives/201702/1328.html ROS发布nav_msgs/Odometry消息,以及通过tf从"odom"坐标系到"base_link"坐标系的转换. 在ROS上发布Odometry信息 导航包使用tf来确定机器人在世界中的位置,并将传感器数据与静态地图相关联.然而,tf不提供关于机器人的速度的任何信息.因此,导航包要求任何odometry源通过ROS发布包含速度信息的transform和nav