ROS串口通信

$ sudo chmod 666 /dev/ttyUSB0


方式2:创建ttyUSB权限规则文件(一劳永逸)



$ sudo gedit /etc/udev/rules.d/70-ttyusb.rules


文件中写入下列代码:



KERNEL==“ttyUSB*”, OWNER=“root”, GROUP=“root”, MODE=“0666”


保存,重新登录后即生效




---


### 2. ROS安装serial包


安装指令:



sudo apt-get install ros-melodic-serial


不同版本的ROS,有对应的ROS包,melodic版本的ROS,serial包名称为  
 “ ros-melodic-serial ”




---


### 3. ROS实现串口通信


(1)创建串口对象  
 (2)设置串口属性,打开串口  
 (3)串口数据收发


#### 3.1 编写串口通信程序


##### 3.1.1 创建工作空间,编译,将工作空间添加到环境变量\*\*



$ mkdir -p test_serial_ws/src
$ cd test_serial_ws
$ catkin_make

$ source devel/setup.bash


##### 3.1.2 创建软件包,添加依赖 serial包,编辑程序文件\*\*



$ cd src
$ catkin_create_pkg serial_demo roscpp serial


src文件下,创建serial\_demo.cpp的c++程序



$ serial_demo
$ cd src
& touch serial_demo.cpp


编辑serial\_demo.cpp文件



#include <ros/ros.h>
#include <serial/serial.h>
#include

int main(int argc,char**argv)
{
setlocale(LC_ALL,“”);
//ros显示中文
ros::init(argc,argv,“serial_port”);
//创建节点,节点名唯一
ros::NodeHandle nh;
//创建句柄 ,向ros master注册节点信息

serial::Serial sp;
//创建窗口对象

try
{
	sp.setPort("/dev/ttyUSB0");
	//设置要打开串口名称
	sp.setBaudrate(9600);
	//设置波特率
	serial::bytesize_t bytesize = serial::eightbits;
	sp.setBytesize(bytesize);
	//设置数据位
	serial::parity_t parity = serial::parity_none;
	sp.setParity(parity);
	//设置奇偶检验
	serial::stopbits_t stopbits = serial::stopbits_one;
	sp.setStopbits(stopbits) ;
	//设置停止位
	serial::Timeout to = serial::Timeout::simpleTimeout(100);
	sp.setTimeout(to);
	//设置接收字节间隔的超时时间
	sp.open();	
	//打开串口
}
catch(serial::IOException &e)
{
	ROS\_ERROR\_STREAM("打开串口失败");//串口设备的权限不够
}
if(sp.isOpen())
{
	sp.flushInput();
	//清空输入的缓存区
	ROS\_INFO\_STREAM("串口打开成功");	
}
else
{
	return -1;
}
ros::Rate loop\_rate(500);
while(ros::ok())
{
	size_t n = sp.available();
	//缓冲区中数据的字节数,函数返回值作为接收字符的长度
	if(n!=0)
	{
		std::string rev;
		rev = sp.read(n);//n为字节数
		//读取缓冲区数据
		std::cout<<rev<<std::endl;
		sp.write(rev.c\_str());;
		//发送读取到的数据
	}
	loop_rate.sleep();
}
sp.close();
return 0;

}


修改CMakeList文件



**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数嵌入式工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

**因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**

![img](https://img-blog.csdnimg.cn/img_convert/8fce057d786fde4fd6cbfdb0822c5299.png)

![img](https://img-blog.csdnimg.cn/img_convert/7e3493b22d606829d21402f17dd4a4bf.jpeg)

![img](https://img-blog.csdnimg.cn/img_convert/491e939a2a8098b4a1984de8a0b0f8e9.png)

 **既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!**

![img](https://img-blog.csdnimg.cn/img_convert/42298b0109e197139c61668f8fb021d8.png)

![img](https://img-blog.csdnimg.cn/img_convert/5ac348a72aa3b957e795cf73c43ee0d8.png)

 

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以+V:Vip1104z获取!!! (备注:嵌入式)**

<img src="https://img-community.csdnimg.cn/images/73bb5de17851459088c6af944156ee24.jpg" alt="img" style="zoom: 67%;" />



# 最后

**资料整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~**

**你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!**

img src="https://img-community.csdnimg.cn/images/73bb5de17851459088c6af944156ee24.jpg" alt="img" style="zoom: 67%;" />



# 最后

**资料整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~**

**你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!**

**[更多资料点击此处获qu!!](https://bbs.csdn.net/topics/618376385)**
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值