配置树莓派4B的自带的串口引脚实现串口通信和小车的远程键盘控制
1:如果您的树莓派上没有安装Ubuntu和ROS Melodic,请按照前面两篇博客进行安装
2:此实验将会使用树莓派的串口引脚、分别为TXD(8)、RXD(10)、3.3V(1)、GND(39)(括号内为其物理引脚),树莓派的串口默认为串口终端调试使用,如要正常使用串口传输数据则需要修改树莓派设置。(关闭串口终端调试功能后则不能再通过串口登陆访问树莓派,需从新开启后才能通过串口控制树莓派)
操作教程:
2.1:释放串口:在终端输入
sudo raspi-config
选择 Interfacing Options ->Serial ->Select->no -> Yes -> ok -> Finish->Yes重启,此时便关闭了串口调试功能,打开了串口。
2.2:打开/boot/config.txt文件sudo gedit /boot/config, 找到这条语句
"enable_uart=1"
如果没有可添加在文件最后面
2.3:安装Ubuntu下的串口助手sudp apt-get install minicom(此步骤可以不做)
2.4:打开串口调试助手:minicom -D /dev/ttyAMA0,(注:如果是树莓派3B或4B,板载的串口ttyAMA0作为蓝牙使用,用户串口端口改为ttyS0,即输入minicom -D /dev/ttyS0;默认波特率为115200,如需设置波特率为9600加参数 -b 9600,-D代表端口),通过windows的串口调试工具,并且使用USB转TTL模块,便可以和树莓派的串口通信(此步骤可以不做)
3:利用ROS和串口实现键盘控制
打开终端输入
cd ~/catkin_ws/src
创建功能包:
catkin_creat_pkg telepcontrol std_msgs rospy roscpp
cd telepcontrol
添加scripts文件夹:
mkdir scripts
cd scripts
sudo gedit UartCommunicate.py
添加以下串口通信内容
#!/usr/bin/env python
###########use serial library
##添加与串口通信相关的库文件
import serial
import struct
import rospy
from geometry_msgs.msg import Twist
class ArtOmnibotDriver():
def __init__(self):
##ROS节点
rospy.init_node('art_rosMove')
##订阅键盘控制有关的话题teleop_keyboard/cmd_vel,可以根据自己的键盘控制代码修改
rospy.Subscriber('teleop_keyboard/cmd_vel', Twist, self.cmd_cb)
##配置串口,