3.ROS串口实例

#include <iostream>
#include <ros/ros.h>
#include <serial/serial.h>
#include<geometry_msgs/Twist.h>
using namespace std;//运行打开速度控制插件:  rosrun rqt_robot_steering rqt_robot_steering
//若串口访问权限不够:    sudo chmod 777 /dev/ttyTHS1//发送和接受数组
uint8_t  senddata[5] = {0x01, 0x02, 0x03, 0x04,0x05};
uint8_t  recdata[100] = {0};//回调函数
void rc_cmdvel_callback(geometry_msgs::Twist vel_msg)
{ROS_INFO("lx:%.2f",vel_msg.linear.x);//相当于带时间戳的printROS_INFO("ly:%.2f",vel_msg.linear.y);ROS_INFO("lz:%.2f",vel_msg.linear.z);ROS_INFO("ax:%.2f",vel_msg.angular.x);ROS_INFO("ay:%.2f",vel_msg.angular.y);ROS_INFO("az:%.2f",vel_msg.angular.z);ROS_INFO("\n");
}int main(int argc,  char** argv) {ros::init(argc,argv,"serial_node");//初始化ROS节点//*********************************话题订阅配置*************************************ros::NodeHandle nh;//ros::Subscriber sub=nh.subscribe("/cmd_vel",5,rc_cmdvel_callback);//订阅者1       >订阅abc_test话题      缓冲区长度5   回调函数为rc_callback1//ros::Subscriber sub2=nh.subscribe("s2_test",5,rc_callback2); //订阅者2    订阅abc2_test话题//*****************************************串口配置***********************************serial::Serial sp;//定义串口对象try{sp.setPort("/dev/ttyTHS1");//设置串口名称sp.setBaudrate(9600);//波特率sp.setBytesize(serial::bytesize_t::eightbits);//数据位--8位sp.setParity(serial::parity_t::parity_none);//校验位--无sp.setStopbits(serial::stopbits_t::stopbits_one);//停止位--1位sp.setFlowcontrol(serial::flowcontrol_t::flowcontrol_none);//无串口流控serial::Timeout to=serial::Timeout::simpleTimeout(1000);sp.setTimeout(to);//设置Timeoutsp.open();//打开串口}catch(serial::IOException& e){ROS_ERROR_STREAM("Unable to open port.");return -1;}if(sp.isOpen())//判断串口是否打开{ROS_INFO_STREAM("Com is initialized");}else{ROS_ERROR_STREAM("Unable to open port.");return -1;}//******************************************************************************************ros::Rate loop_rate(1);while(ros::ok()){//******************************************串口相关********************************************//发送数据sp.write(senddata,5);//将u8类型的数组的前x个数据写入缓冲区//获取缓存区数据size_t sn=sp.available();//获取缓冲区字节数if(sbrk != 0)//如果缓冲区有字节{sn = sp.read(recdata, sn);//从缓冲区读n个字节到u8数组中for(int i = 0; i < sn; i++){//16进制显示接受到的数据//cout << std::hex << (recdata[i] & 0xff) << " ";ROS_INFO("%d",recdata[i] & 0xff );}}//*******************************************ROS话题相关*************************************ros::spinOnce();//监听消息包//	以1HZ的频率loop_rate.sleep();}sp.close();return 0;
}

常用API说明:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/37146.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

详解PEFT库中LoRA源码

前言 GitHub项目地址Some-Paper-CN。本项目是译者在学习长时间序列预测、CV、NLP和机器学习过程中精读的一些论文&#xff0c;并对其进行了中文翻译。还有部分最佳示例教程。如果有帮助到大家&#xff0c;请帮忙点亮Star&#xff0c;也是对译者莫大的鼓励&#xff0c;谢谢啦~本…

读书笔记-《Spring技术内幕》(三)MVC与Web环境

前面我们学习了 Spring 最核心的 IoC 与 AOP 模块&#xff08;读书笔记-《Spring技术内幕》&#xff08;一&#xff09;IoC容器的实现、读书笔记-《Spring技术内幕》&#xff08;二&#xff09;AOP的实现&#xff09;&#xff0c;接下来继续学习 MVC&#xff0c;其同样也是经典…

Spring底层原理之bean的加载方式八 BeanDefinitionRegistryPostProcessor注解

BeanDefinitionRegistryPostProcessor注解 这种方式和第七种比较像 要实现两个方法 第一个方法是实现工厂 第二个方法叫后处理bean注册 package com.bigdata1421.bean;import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.…

解决idea中git无法管理项目中所有需要管理的文件

点击文件->设置 选择版本控制—>目录映射 点击加号 设置整个项目被Git管理

【python入门】自定义函数

文章目录 定义自定义函数的基本语法参数类型示例代码函数作用域匿名函数&#xff08;Lambda&#xff09;闭包装饰器 Python中的自定义函数允许你编写一段可重用的代码块&#xff0c;这段代码可以带参数&#xff08;输入&#xff09;&#xff0c;并可能返回一个值&#xff08;输…

MySQL高级-事务-并发事务演示及隔离级别

文章目录 0、四种隔离级别1、创建表 account2、修改当前会话隔离级别为 read uncommitted2.1、会出现脏读 3、修改当前会话隔离级别为 read committed3.1、可以解决脏读3.2、会出现不可重复读 4、修改当前会话隔离级别为 repeatable read&#xff08;默认&#xff09;4.1、解决…

解决docker镜像pull失败的有效

机器环境 本实践将在 Ubuntu 22.04.3LTS 系统上进行测试 docker 版本Docker Engine - Community 24.0.6 &#xff0c;原则上docker版本无影响 本实践进仅学习研究使用&#xff0c;无作他用途。 背景 曾几何时&#xff0c;docker镜像的拉去会失败&#xff0c;网速会慢&#xff0…

代码随想录算法训练营第五十三天| 739. 每日温度、 496.下一个更大元素 I、503.下一个更大元素II

LeetCode 739. 每日温度 题目链接&#xff1a;https://leetcode.cn/problems/daily-temperatures/description/ 文章链接&#xff1a;https://programmercarl.com/0739.%E6%AF%8F%E6%97%A5%E6%B8%A9%E5%BA%A6.html 思路 * 单调栈的本质是空间换时间&#xff0c;因为在遍历的过…

【论文阅读】transformer及其变体

写在前面&#xff1a; transformer模型已经是老生常谈的一个东西&#xff0c;以transformer为基础出现了很多变体和文章&#xff0c;Informer、autoformer、itransformer等等都是顶刊顶会。一提到transformer自然就是注意力机制&#xff0c;变体更是数不胜数&#xff0c;一提到…

【目标检测】DN-DETR

一、引言 论文&#xff1a; DN-DETR: Accelerate DETR Training by Introducing Query DeNoising 作者&#xff1a; IDEA 代码&#xff1a; DN-DETR 注意&#xff1a; 该算法是在DAB-DETR基础上的改进&#xff0c;在学习该算法前&#xff0c;建议掌握DETR、DAB-DETR等相关知识…

TCP和UDP的区别以及应用场景

TCP&#xff08;传输控制协议&#xff09;和UDP&#xff08;用户数据报协议&#xff09;是两种不同的传输层协议 区别 TCP是面向连接的&#xff0c;UDP是无连接的&#xff1b; TCP是可靠的&#xff0c;UDP是不可靠的&#xff1b; TCP是面向字节流的&#xff0c;UDP是面向数据…

如何高效配置与使用Pip换源

目录 1. Pip源的基本概念 1.1 常见的国内镜像源 2. 临时换源 2.1 使用命令行参数指定镜像源 2.2 安装多个包时指定镜像源 3. 永久换源 3.1 修改用户级配置文件 3.1.1 创建和编辑配置文件 3.2 修改全局配置文件 3.2.1 创建和编辑全局配置文件 4. 验证换源配置 5. 切…

VMamba: Visual State Space Model论文笔记

文章目录 VMamba: Visual State Space Model摘要引言相关工作Preliminaries方法网络结构2D-Selective-Scan for Vision Data(SS2D) VMamba: Visual State Space Model 论文地址: https://arxiv.org/abs/2401.10166 代码地址: https://github.com/MzeroMiko/VMamba 摘要 卷积神…

防火墙共性检测技术

防火墙共性检测技术 防火墙共性检测技术是指防火墙在监控和控制网络流量时&#xff0c;共同采用的一些检测和过滤方法。无论是哪种类型的防火墙&#xff0c;这些技术都可以用于识别和阻止恶意流量&#xff0c;确保网络安全。以下是防火墙共性检测技术的详细介绍&#xff0c;包…

axios的基本使用和vue脚手架自带的跨域问题解决

axios的基本使用和vue脚手架自带的跨域问题解决 1. axios 1.1 导入axios npm i axios1.2 创建serve1.js serve1.js const express require(express) const app express()app.use((request,response,next)>{console.log(有人请求服务器1了);console.log(请求来自于,re…

go Channel 原理 (一)

Channel 设计原理 不要通过共享内存的方式进行通信&#xff0c;而是应该通过通信的方式共享内存。 在主流编程语言中&#xff0c;多个线程传递数据的方式一般都是共享内存。 Go 可以使用共享内存加互斥锁进行通信&#xff0c;同时也提供了一种不同的并发模型&#xff0c;即通…

npm ci vs npm i

npm ci vs npm i 几个关键区别&#xff1a;该选择哪个&#xff1f; 通过 npm ci 和 npm i 两个命令&#xff0c;都可安装项目的依赖。那么这两个命令有什么区别呢&#xff1f; 几个关键区别&#xff1a; 目的和用途&#xff1a; npm ci &#xff1a;根据项目中的 package-lock…

AI奏响未来乐章:音乐界的革命性变革

AI在创造还是毁掉音乐 引言 随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;正在逐渐渗透到我们生活的每一个角落&#xff0c;音乐领域也不例外。AI技术的引入&#xff0c;不仅为音乐创作、教育、体验带来了革命性的变革&#xff0c;更为整个音乐产业注入了…

顺序表应用——通讯录

在本篇之前的顺序表专题我们已经学习的顺序表的实现&#xff0c;了解了如何实现顺序表的插入和删除等功能&#xff0c;那么在本篇当中就要学习基于顺序表来实现通讯录&#xff0c;在通讯录当中能实现联系人的增、删、查改等功能&#xff0c;接下来就让我们一起来实现通讯录吧&a…

grpc学习golang版( 五、多proto文件示例 )

系列文章目录 第一章 grpc基本概念与安装 第二章 grpc入门示例 第三章 proto文件数据类型 第四章 多服务示例 第五章 多proto文件示例 第六章 服务器流式传输 第七章 客户端流式传输 第八章 双向流示例 文章目录 一、前言二、定义proto文件2.1 公共proto文件2.2 语音唤醒proto文…