(1)连线依据
使用开源项目ros_arduino_bridge。从名字上来看,ros_arduino_bridge是建立了ROS(机器人操作系统)和Arduino之间的桥梁。也就是建立了机器人上位机与下位机之间的通讯。它是一个ROS功能包集,包括了Arduino库(ROSArduinoBridge)和一系列用来控制基于Arduino的ROS功能包。
参考:https://wiki.ros.org/ros_arduino_bridge
a)下载
可直接在https://github.com/hbrobotics/ros_arduino_bridge下载。一般下载在“/home/下载”文件夹下。
注:也可以使用以下命令
git clone https://github.com/hbrobotics/ros_arduino_bridge
进行下载。本教程采用上一种下载方法进行介绍。
b)解压缩
双击下载的文件,点击提取,即可将文件解压缩。
c)打开ros_arduino_bridge/ros_arduino_firmware/src/libraries/ROSArduinoBridge/文件夹,用Arduino IDE软件打开ROSArduinoBridge.ino(双击即可)。
d)打开encoder_driver.h,如下图所示。从图中可知,左电机的编码器正极(OA)和负极(OB)分别接“Arduino”控制板的D2、D3脚。右电机的编码器正极(OA)和负极(OB)分别接“Arduino”控制板的A4、A5脚。
e)打开motor_driver.h,如下图所示。从图中可知,左电机的前后控制,使用的是“Arduino”控制板的D10和D6脚。右电机的前后控制,使用的是“Arduino”控制板的D9和D5脚。
但是“Arduino”控制板的I/O口,不能直接驱动电机。需要连接电机驱动器,因此需要将D10和D6脚分别接电机驱动器的AIN1、AIN2脚,D9和D5脚分别接驱动器的BIN1、BIN2脚。再结合3.2节-(2)-2)电机驱动器部分中的真值表。分别对各脚置“1”或“0”,即可控制电机转动。
接口 |
值 |
值 |
值 |
AIN1 |
0 |
0 |
1 |
AIN2 |
0 |
1 |
0 |
BIN1 |
0 |
0 |
1 |
BIN2 |
0 |
1 |
0 |
电机 |
停止 |
正转 |
反转 |
(2)连线图
根据以上原理,结合电机和电机驱动器等硬件说明,连线图如下。
1)打开ros_arduino_bridge/ros_arduino_firmware/src/libraries/ROSArduinoBridge/文件夹,用Arduino IDE软件打开ROSArduinoBridge.ino(双击即可)。
2)修改程序。打开ROSArduinoBridge。
下翻,找到以下程序段。
将程序进行修改,如下图所示。
修改完之后,点击菜单栏工具,在下拉菜单中,开发板选择“Arduino Nano”,处理器选择:“ATmega328P(Old Bootloader)”,端口选择/dev/ttyUSB0。
点击“验证”、“上传”。将程序上传到“Arduino”控制板。
3)打开端口权限。
打开终端,输入
sudo chmod 666 /dev/ttyUSB0
回车。
4)打开串口监视器,调试电机。
点击“串口监视器”,弹出对话框,如下图所示。
修改波特率为57600,输入命令m 30 30。电机即可旋转。