ROS串口连接不上

使用的是ros自带的serial包,下面是代码


#include <ros/ros.h>
#include <serial/serial.h>  //ROS已经内置了的串口包
#include <std_msgs/String.h>
#include <std_msgs/Empty.h>
 
serial::Serial ser; //声明串口对象
 
//回调函数
void write_callback(const std_msgs::String::ConstPtr& msg)
{
    ROS_INFO_STREAM("Writing to serial port" <<msg->data);
    ser.write(msg->data);   //发送串口数据
}
 
int main (int argc, char** argv)
{
    //初始化节点
    ros::init(argc, argv, "serial_example_node");
    //声明节点句柄
    ros::NodeHandle nh;
 
    //订阅主题,并配置回调函数
    ros::Subscriber write_sub = nh.subscribe("write", 1000, write_callback);
    //发布主题
    ros::Publisher read_pub = nh.advertise<std_msgs::String>("read", 1000);
 
    try
    {
    //设置串口属性,并打开串口
        ser.setPort("/dev/ttyUSB0");
        ser.setBaudrate(9600);
        serial::Timeout to = serial::Timeout::simpleTimeout(1000);
        ser.setTimeout(to);
        ser.open();
    }
    catch (serial::IOException& e)
    {
        ROS_ERROR_STREAM("Unable to open port ");
        return -1;
    }
 
    //检测串口是否已经打开,并给出提示信息
    if(ser.isOpen())
    {
        ROS_INFO_STREAM("Serial Port initialized");
    }
    else
    {
        return -1;
    }
 
    //指定循环的频率
    ros::Rate loop_rate(50);
    while(ros::ok())
    {
 
        //处理ROS的信息,比如订阅消息,并调用回调函数
        ros::spinOnce();
 
        if(ser.available()){
            ROS_INFO_STREAM("Reading from serial port");
            std_msgs::String result;
            result.data = ser.read(ser.available());
            ROS_INFO_STREAM("Read: " << result.data);
            read_pub.publish(result);
        }
        loop_rate.sleep();
 
    }
}


编译过程没有问题,运行时连接不上

roswiki BOSS 沙发

2016-06-02 05:27

如果程序没问题,建议检测下。设备链接,

defry 初代型 板凳

2016-06-03 19:29

请问需要在Cmakelists里加什么?为什么我编译时提示没有找到#include <serial/serial.h>这个包?怎么解决呢?

blacksnow 魔改型 地板

2016-06-16 22:45

roswiki:如果程序没问题,建议检测下。设备链接,
已经连接成功了,发现是设备的问题

JinluoChen 原型机 4楼

2016-06-19 21:32

blacksnow:已经连接成功了,发现是设备的问题
请问ROS的serial包在哪找哦?

blacksnow 魔改型 5楼

2016-06-20 09:39

JinluoChen:请问ROS的serial包在哪找哦?
通过sudo apt-get install ros-版本-serial下载,然后在包文件配置就可以了

s201761315 原型机 6楼

2018-11-05 08:58

defry:请问需要在Cmakelists里加什么?为什么我编译时提示没有找到#include <serial/serial.h>这个包?怎么解决呢?
请问解决了吗
游客
登录后才可以回帖,登录 或者 注册