硬件:
- 树莓派3b
- 带编码器的减速电机(我的型号未知,但是相关参数可以手动测量观察)。
- Arduino MEGA2560 开发板一块:用于控制电机驱动,接收上位机指令。
- 蓝宙电子双路控制板,网上一般使用L298N,其实都大同小异。
- lidar激光雷达
- 3S电池
- 稳压模块
搭建
底盘及马达等的安装这里不做过多介绍,这里我仅仅介绍我的做法,你可以参考创客智造的相关介绍。
1.编码器的连接:编码器我使用的是双通道霍尔效应编码器,它分AB两相再加上GND,Vcc共4个接口。Arduino MEGA2560 有中断引脚,可以很方便的使用编码器。(中断引脚 2,3,21,20,19,18 中断号分别对应0~5)
这里我仅使用2,3,19,18引脚。这里要和之后的代码对应,我这里是左电机编码器的A相接2,B相接3。右电机编码器的A相接18,B相接19。只有这样接,我的才能正常工作。具体需要自己尝试。
马达控制需要根据你所选择的驱动板来连接,这里不做过多介绍。
准备
需要python-serial功能包
sudo apt-get install python-serial
你的Arduino很可能是通过接口/dev/ttyACM#
或者 /dev/ttyUSB#
来连接你的系统的。这里的#
可以是0,1,2等数字,当然这根据你连接的设备数量而定。得到这个数字#
最简单的方式就是拔掉所有的USB设备,然后插上你的Arduino,然后运行下面这个命令:
ls /dev/ttyACM*
或
ls /dev/ttyUSB*
总会有一个返回需要的信息 你可以看到:
运行:
ls /dev/ttyACM*
会显示下面
/dev/ttyACM0
然后你需要确保对这个接口有访问的权限。运行:
ls -l /dev/ttyACM0
会看到下面 只有 root dialout 组才有这个接口的访问权限
crw-rw---- 1 root dialout 166, 0 8月 10 11:54 /dev/ttyACM0
可以运行这个命令来将你的用户加入dialout组:
sudo usermod -a -G dialout 你的用户名
之后再注销一下,当你执行完上述操作后,可以运行:
groups
观察你的用户有么有加入dialout组(在那一串中找到dialout)
获得ros_arduino_bridge功能包
git clone https://github.com/hbrobotics/ros_arduino_bridge.git
之后为它创建一个工作空间 ,将他移动到src目录(记住catkin_make)
参考链接:https://blog.csdn.net/github_30605157/article/details/51344150/