技术分享 | 如何在ROS中使用Serial包?

2023-05-16

file 首先,这个Serial 是一个跨平台、简单易用的库,用于在计算机上使用串行端口。该库提供了一个 C++、面向对象的接口,用于与 Linux 和 Windows 上的类似 RS-232 的设备进行交互。但是这个没有API文档,接下来我将把我的使用经验呈现给大家。 http://wiki.ros.org/serial

Serial 的GitHub:https://github.com/wjwwood/serial

一、开始使用:

  • 操作系统:Ubuntu18.04
  • ROS版本:melodic

首先在命令行中输入如下命令,安装serial功能包:

sudo apt update sudo apt install ros-melodic-serial 创建功能包:打开终端 输入如下命令,创建功能包

mkdir -p catkin_ws/src cd catkin_ws/src catkin_create_pkg serial_example roscpp serial std_msgs 进入src,并创建serial_example_node.cpp 文件

cd src touch serial_example_node.cpp 复制如下代码到serial_example_node.cpp文件中,注意修改自己的端口号:

#include <ros/ros.h>#include <serial/serial.h>#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/ttyTHS0"); 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(5); while(ros::ok()){ 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(); }} 修改CMakeLists.txt文件中,在文件的底部加上如下语句:

add_executable(serial_example_node src/serial_example_node.cpp) target_link_libraries(serial_example_node ${catkin_LIBRARIES} ) 编译,输入如下命令开始编译

catkin_make source devel/setup.bash 运行节点:

roscore rosrun serial_example serial_example_node file

出现上图的时候,表示节点已经运行成功了~

二、如何测试呢? 1.短接串口的TX与RX引 2.使用rqt_publisher工具,rqt_publisher - ROS Wiki,发布信息 file 3.用rostopic list 命令查看当前的话题名称,然后用rostopic echo (话题名称)

以上就是我们常用的机器人开发中上位机与下位机通信的方式了,这个功能非常的好用,您也可以按照上面的教程来试一试哦!

作者:阿木实验室-梓衡

  • End -

技术发展的日新月异,阿木实验室将紧跟技术的脚步,不断把机器人行业最新的技术和硬件推荐给大家。看到经过我们培训的学员在技术上突飞猛进,是我们培训最大的价值。如果你在机器人行业,就请关注我们的公众号,我们将持续发布机器人行业最有价值的信息和技术。 阿木实验室致力于前沿IT科技的教育和智能装备,让机器人研发更高效!

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

技术分享 | 如何在ROS中使用Serial包? 的相关文章

  • PX4-Vision 自主无人机开发平台测评

    对于目前的自主无人机开发平台上 xff0c 国内的用户除了我们阿木实验室出品的自主无人机开发平台上 xff0c 又多了一种选择 xff0c 就是这个 PX4 Vision 自主无人机开发平台 硬件上是 pixhawk 4 一个 UP Boa
  • Matlab的GUI的slider滑动条和edit动态文本框联合使用例程

    代码链接 xff1a https download csdn net download benchuspx 12404653 今天想用matlab的plot画个函数的曲线图 xff0c 函数有一个参数a可以调 xff0c 不同的a对应不同的
  • 【收藏备用】控制理论结构图——一目了然全面了解控制理论

    中国自动化学会会员 System control xff0c 通过整合各种资源以及IEEE控制系统协会 国内外控制领域同仁的建议 历时12天 xff0c 迭代6个版本 xff0c 最终绘制而成的控制理论结构图 强烈建议收藏备用 xff01
  • 工程开发利器-Homer高带宽 多接口 可组网数据传输链路

    我们阿木实验室经常做各种无人系统的实验 xff0c 比如需要从远端无线采集视频图像 xff0c 本地给远端一个串口控制量 xff0c 采集远端的各种传感器数据等 有的时候需要支持TCP IP的网络数据 xff0c 有的时候需要串口透明传输数
  • 开源自主无人机软件平台—Prometheus

    Prometheus xff0c 在希腊神话中 xff0c 是最具智慧的神明之一 xff0c 希望Prometheus项目能为无人机研发工作带来无限的智慧与光明 同时电影普罗米修斯里面的无人机在黑洞中自由穿越 xff0c 也是我们在技术层面
  • 课程学习 | 开源水下机器人地面站软件开发

    鳌海海洋 xff08 AOHI Ocean xff09 是一家由国内著名高校博士 海归博士等人创立 xff0c 长期致力于以水下机器人技术为核心的海洋装备研究与开发 xff0c 正在为国家海洋局 国家电网 中船集团 蓝天救援队 千岛湖消防队
  • 阿木实验室技术课程和项目科研招募,分享知识获取收益

    阿木实验室专注于无人化系统开发平台的研发与生产 xff0c 并致力于推广前沿IT科技技术及其教育 希望通过整合优质资源 xff0c 提升研发效率 xff0c 从而促进整个技术生态的发展 为了达成这一宏伟愿景 xff0c 单靠我们是不够的 因
  • 技术专栏|阿木无人机室内避障

    之前阿木实验室提供了一系列室内定位的方案 xff0c 以及对各自的特点进行了介绍 本期我们采用T265的视觉定位方案 xff0c Matlab ROS Toolbox进行了VFH室内避障测试 Matlab ROS Toolbox 众所周知
  • 大疆览沃浩界(Livox Horizon)激光雷达测评

    测评人 董小胖 Livox Horizon xff08 览沃浩界 xff09 介绍 Livox Horizon xff08 览沃浩界 xff09 是大疆专为L3 L4自动驾驶打造的一款激光雷达 与传统的采用机械旋转结构的激光雷达不同 xff
  • 大疆Payload SDK开发火热来袭!

    DJI SDK开发课程之 大疆Payload SDK xff08 PSDK xff09 开发今日正式上线 本课程由 铂贝学院 xff08 阿木实验室 xff09 联合DJI 大疆共同推出 xff01 大疆PSDK开发课程介绍 DJI 为支持
  • 技术专栏 | 关于吊舱你了解多少?

    01 背景及预期目标 在无人机航拍领域中 xff0c 为了实现追踪拍摄 xff0c 目标检测和追踪必不可少 xff0c 因此 xff0c 目标检测和追踪技术是无人机航拍领域的重要研究方向 在本项目中 xff0c 我们将yolov3目标检测方
  • PX4官方动态 | 通过WSL2在AirSim下实现PX4仿真

    支持PX4仿真的开源项目AirSim PX4作为主流的开源飞控 xff0c 为无人机开发者们提供了一个优秀的平台 PX4用户可以将飞控板作为核心 xff0c 构建属于自己的无人机 但开源无人机的初学者很难避免炸机的惨剧 xff0c 轻则螺旋
  • P200阿木无人机学习笔记--二维码引导着陆

    目录 我手上的阿木实验室的P200无人机配置 现阶段目标 xff1a 实现二维码引导着陆 项目理解 进度 更新中 踩坑经验 初次设置时没有显示器如何远程连接TX2 xff1f 虚拟机和双系统谁更好 xff08 ubuntu xff09 无人
  • 技术分享 | 基础知识干货,带你走进PX4的世界

    上期我们讲解了PX4的基础知识 xff08 上 xff09 大家可以回顾一下 xff0c 本期继续为大家带来PX4基础知识下半部分内容的讲解 1 PX4的开发流程 飞控简单来讲 xff0c 就是通过控制电机速度从而控制飞机飞行状态 xff0
  • 新品发布 | 无人机集群编队全套方案来啦!

    无人机集群编队开发平台 当我们研究集群算法或相关应用时 xff0c 一般情况下 xff0c 都会先开发仿真 xff0c 仿真开发完毕后 xff0c 常常因为找不到合适的无人机平台验证自己的集群算法或代码而发愁 xff0c 好不容易找到接近的
  • 技术分享 | P450-二维码降落

    原理说明 二维码降落原理 ArUco a minimal library for Augmented Reality applications based on OpenCV xff0c 是科尔多瓦大学 34 人工视觉应用 34 研究小组
  • 技术分享 | P450 ego-planner的干货分享

    原理说明 传统的基于梯度的运动规划算法需要构建所需的ESDF地图 xff0c 然而构建地图花费了整个规划算法70 的时间 xff0c 从而限制了在有限资源情况下的运动规划方法的使用 ESDF的构建方式有全局增量式和批量本地计算两种方式 xf
  • 技术分享 | 关于Prometheus自主无人机开发你需要懂得一些“小事”(上)

    最近学习了关于Prometheus课程 xff0c 以下是我对该课程的大致了解 xff0c 写的可能有点偏基础 xff0c 但是想和大家一起分享一下学习经验 顺便想鼓励一下想学无人机的盆友们 xff0c 如果你想接触但却担心没有基础感觉手足
  • 技术分享 | 关于Prometheus自主无人机开发你需要懂得一些“小事”(下)

    上期我们讲解了关于 xff08 Prometheus自主无人机开发课程的学习心得 xff09 xff0c 大家可以回顾一下 xff0c 本期继续为大家带来Prometheus自主无人机 xff0c 开发的流程和控制模块的讲解 3 开发流程
  • 新品发布 | P600准行业无人机研发平台,室外视觉识别跟踪、激光雷达避障、多机组网!

    P600 准行业无人机研发平台 Prometheus 600 xff08 P600 xff09 是阿木实验室推出的一款准行业级无人机研发平台 xff0c 适用于无人机行业应用开发与室外环境下的无人机算法验证 P600可轻易地搭载云台吊舱 激

随机推荐