• 大小: 6KB
    文件类型: .gz
    金币: 1
    下载: 0 次
    发布日期: 2021-06-05
  • 语言: 其他
  • 标签: ROS  

资源简介

程序版本Ubuntu16.04+kinetic 该package利用订阅控制小海龟运动的cmd_vel话题,读取键盘方向键。 然后通过串口发送控制指令到电机控制器,控制电机前进后退转向。 是学习ROS控制机器人运动的一个基础例程。 使用前需安装ros的serial工具包 sudo apt-get install ros-kinetic-serial 关于串口: 程序使用的是电脑主板自带的9针232串口,可以根据自己具体串口调整程序 查看设备dmesg,如果使用USB转串口一般设备号是ttyUSB0 我用的是Ubuntu16.04实际测试USB转串口芯片ch340和PL2302都可以直接识别 可以先安装cutecom进行串口调试,看看是否可用,该工具是窗口界面,比较方便 安装sudo apt-get install cutecom 安装完成运行要root权限才能读取串口 sudo cutecom 程序使用的是serial_example_node1节点,另外一个节点listen1没有用到 将代码解压到自己的工作空间后编译 然后启动serial_example_node1节点和turtle_teleop_key节点 rosrun serial_msgs serial_example_node1 rosrun turtlesim turtle_teleop_key 保证当前窗口在key读取命令窗口,按键盘方向键,串口节点会收到数据,并串口发送数据。 如果串口启动提示失败,提示Unable to open port,可能是权限问题需运行命令 sudo chmod 666 /dev/ttyS0 节点读取串口做了5个字节的测试 发多个字节需自己修改读取字节数

资源截图

代码片段和文件信息

#include “ros/ros.h“
#include “std_msgs/String.h“
#include “serial_msgs/serial.h“
#include 
#include 

#define sBUFFERSIZE     25
unsigned char s_buffer[sBUFFERSIZE];
unsigned char r_buffer[5];
serial::Serial ser;

void chatterCallback(const serial_msgs::serial::ConstPtr& msg)
{
     ROS_INFO_STREAM(“Writing to serial port“);
    for(int i=0;iserial.size();++i)
       {
     ROS_INFO(“Writing: [0x%02x]“ msg->serial[i]);
     s_buffer[i]=msg->serial[i];
       }
     ser.write(s_buffersBUFFERSIZE);
}

int main(int argc char **argv)
{
    ros::init(argc argv “listen1“);
    ros::NodeHandle n;
    //订阅read主题(即接受串口数据)

     try
    {
        ser.setPort(“/dev/ttyS0“);
        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::Subscriber sub = n.subscribe(“read1“ 1000 chatterCallback);

    ros::spin();

    return 0;
}

评论

共有 条评论