基于ros_arduino_bridge的智能小车----下位机篇
参考文章:
基于ros_arduino_bridge的智能小车----上位机篇
基于ros_arduino_bridge的智能小车----硬件篇
下位机部分实际上可以视作完全独立的一部分,我们从Github下载ros_arduino_bridge后,可以从它的文件中得到小车的下位机部分:
git clone https://github.com/hbrobotics/ros_arduino_bridge.git
下载后你可以得到一个文件夹ros_arduino_bridge
在文件夹这个位置就是arduino的下位机程序,内容是:
我对内容作了一定的修改,使之能够可以被我自己的小车使用,毕竟我的小车驱动部分并没有按照ros_arduino_bridge作者的来。实际上,作者的项目已经很老了,一些东西又贵
又难买,性能还不咋地。
这里我给出了修改版的下位机代码,是在[https://blog.csdn.net/qq_29735067/article/details/81561261]的基础上稍微又修改了一下,主要是修改了控制电机的部分,下面给出下载链接:
https://pan.baidu.com/s/1my9Xh-1gGzufPR_cZpov7w
提取码:ibqk
可以打开ROSArduinoBridge.ino来上传程序,也可以加入arduino库中
请注意,程序默认串口波特率57600,上传好程序后,打开串口监视器
其中左上角是你自己arduino连接主机后显示的串口号,windows下一般是COM*,如COM5,ubuntu下一般是
/dev/tty*,例如/dev/ttyUSB0。
上传好程序后就可以测试了,你可以手动为串口输入控制命令,毕竟上位机是通过相同的命令来控制小
车,这在arduino程序中被定义了:
#ifndef COMMANDS_H
#define COMMANDS_H
#define ANALOG_READ 'a'
#define GET_BAUDRATE 'b'
#define PIN_MODE 'c'
#define DIGITAL_READ 'd'
#define READ_ENCODERS 'e'
#define MOTOR_SPEEDS 'm'
#define PING 'p'
#define RESET_ENCODERS 'r'
#define SERVO_WRITE 's'
#define SERVO_READ 't'
#define UPDATE_PID 'u'
#define DIGITAL_WRITE 'w'
#define ANALOG_WRITE 'x'
#define READ_PIDOUT 'f'
#define READ_PIDIN 'i'
#define LEFT 0
#define RIGHT 1
#define FORWARDS true
#define BACKWARDS false
#endif
例子:
输入e:
可以看到下位机回传了编码器信息(原谅我的图片如此糟糕,毕竟我的真实上位机是树莓派,博客又是在电脑上编辑了,只能通过拍照获取图片)
输入m 44 44:
下位机返回OK,表示接收到控制信号,同时小车轮子开始转动,两秒后中停止,修改ROSArduinoBridge.ino中的这一段
#define AUTO_STOP_INTERVAL 2000
可以改变每一个控制命令的作用时间,单位是毫秒
我的小车:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)