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_cb( const std_msgs::UInt16& cmd_msg) {
    //servo.position(cmd_msg.data); //set servo angle, should be from 0-180
    myled = !myled;  //toggle led
}

ros::Subscriber<std_msgs::UInt16> sub("servo", servo_cb);

int main() {

    nh.initNode();
    nh.subscribe(sub);

    while (1) {
        nh.spinOnce();
        wait_ms(1);
    }
}

ros这边:

$ roscore

$ rosrun rosserial_python serial_node.py _port:=/dev/ttyACM0

$ rostopic pub servo std_msgs/UInt16  <angle>

测试了一下, 多个订阅者也是ok的, 不过会不会在ROS端看起来比较乱?

时间: 2024-08-28 21:00:33

ROS+mbed 订阅者的相关文章

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+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&quo

ROS + STM32 + mbed

目前的进度是, 首先, 用mbed, 在stm32 f103RB nucleo板子上, 跑一个简单的publisher, 然后用usb连接到PC上的ROS. mbed的main.cpp: /* * rosserial Publisher Example * Prints "hello world!" */ /* * left_forward PC_0 * left_backward PC_3 * right_forward PC_2 * right_backward PC_1 * le

ros中NodeHandle类的subscribe()函数使用报错问题

在使用ros写订阅者时,代码如下: #include "ros/ros.h" #include "std_msgs/String.h" #include <boost/thread.hpp> #include <sensor_msgs/PointCloud2.h> #include <nav_msgs/Odometry.h> #include <typeinfo> class multiThreadListener {

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 发布节点和订阅节点

1 发布节点: #include "ros/ros.h" #include "std_msgs/String.h" #include <sstream> /** * This tutorial demonstrates simple sending of messages over the ROS system. */ int main(int argc, char **argv) { /** * The ros::init() function nee

ROS学习(十二)—— 编写简单的消息发布器和订阅器(C++)

一.创建发布器节点 1 节点功能: 不断的在ROS网络中广播消息 2 创建节点 (1)打开工作空间目录 cd ~/catkin_ws/src/beginner_tutorials p { margin-bottom: 0.25cm; line-height: 120% } a:link { } 创建一个发布器节点("talker"),它将不断的在ROS网络中广播消息. --> { } (2)创建src文件夹 mkdir -p ~/catkin_ws/src/beginner_tu

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 将下面的内容复制进去: