vscode开发ROS(20)-ros与arduino串口通信(python)


写在最前

这篇文章是上一篇中, arduino与ros进行串口通信的python实现版本. 可以对照查看, vscode开发ROS(19)-ros与arduino串口通信(c++).

安装pyserial

python中比较常用的串口通信的工具就是pyserial. 安装方法也比较简单:

sudo pip install pyserial -i https://pypi.tuna.tsinghua.edu.cn/simple

这里使用的是清华大学的源, 速度快一点, 虽然pyserial好像也没多大.

修改vscode配置文件

在.vscode文件夹下, 打开settings.json文件, 加入系统的python包路径.

"python.autoComplete.extraPaths": [
        "/opt/ros/kinetic/lib/python2.7/dist-packages",
        "/usr/lib/python2.7/dist-packages"
    ]

在这里插入图片描述

创建ros节点

1, 在scripts文件夹中, 新建pySerialTest.py文件.
2, 粘贴以下代码

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import serial #导入serial包
import rospy
import time

def node():
    rospy.init_node("serial_test") #初始化ros节点
    ser = serial.Serial("/dev/ttyUSB0", 9600, timeout=1) #打开串口, 端口号:"/dev/ttyUSB0". 波特率:9600. 延时等待1s
    if ser.isOpen(): #判断串口是否打开
        print("串口打开成功")
    else:
        print("串口打开失败")
        quit()
    while not rospy.is_shutdown():
        ser.write('hello')#发送hello
        time.sleep(1)#等待1s
        cnt = ser.inWaiting() #等待接受数据
        if cnt > 0 : #接受数据量大于0
            rev = ser.read(cnt) #读数据
            print(str(rev)) #打印

if __name__ == '__main__':
    try:
        node()
    except rospy.ROSInterruptException:
        pass

3, 具体介绍请看注释, 代码是超级简单.
4, 使用vscode的终端中cd命令,定位到pySerialTest.py文件

cd src/ros_test/scripts/

5, 执行指令, 这一步是为了让pySerialTest.py文件具有可执行权限, 不可缺少

chmod 0777 pySerialTest.py

运行ROS节点

1, 使用快捷键Ctrl + Shift + T 弹出系统终端,输入roscore,启用整个ROS总节点。
2, 使用快捷键Ctrl + Shift + T 弹出系统终端,输入rosrun ros_test pyCalRectAreaRes.py,启用pyCalRectAreaRes.py节点。 在这里插入图片描述
可以看到ros的python节点与arduino通信成功.
如果提示"串口打开失败", 请确认串口权限已经配置好, 且没有被其他程序占用.
如果提示"文件不存在", 请确认插入了arduino且arduino的端口号没有改变, arduino在插拔中是可能改变的.

后记

更多机器人ROS相关,公-众-号搜索 ”机器人小站", 关注我们吧。

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值