文章目录
前言
最近之前的项目结项了,于是想自己做一辆ROS小车来玩玩,奈何本人技术薄弱,两眼一抹黑,遂参考了百度和ROS-wiki上的很多材料,才完成了一辆基于Arduino的ROS小车,现将各个过程分享出来,留作纪念。
一、硬件搭建
笔者手头只有一辆亚博智能的Arduino两轮平衡车,于是拆了自己搭建了一辆三轮小车,各项参数如下。
- Arduino UNO R3开发板一块
- GM37 编码电机和轮子一对,万向轮一个![(https://img-blog.csdnimg.cn/f567258438ef43cf9db1415259184367.png)
- 亚博智能平衡车驱动板一块(基于TB6612FNG)
- 一块小车底板,各种螺丝固定件若干
- 一块12V的18650锂电池
具体搭建过程:略,不得不说,在这一块商家做得不错,只需要把拓展板插到Arduino上,把电机和电机线固定好就行了。(方便的同时也为后续埋下了隐患,所以建议大家在使用拓展板的时候要先详细了解他的原理图啊,哭)
二、软件环境搭建
- Ubuntu 16.04 64位
- #Python 2.7.12
- #Arduino IDE 1.8.8-Linux
- #ROS kinetic version: 1.12.17
- 参考了wiki上ros_arduino_bridge的包和亚博智能的平衡车代码。
1.在window下安装VMware和Ubuntu 16.04
略,因为笔者用的是ROS-kinetic,需要注意的是Ubuntu的版本。
2.安装ROS-kinetic(各种坑)
安装过程:略,网上很多,笔者这边分享一篇安装教程,需要注意的是最后一步更新ROS时 经常会出现更新失败,多试几次就行了。
3.在Ubuntu下安装Arduino IDE
参考:https://blog.csdn.net/weixin_44747675/article/details/98764397
- tar -xvf arduino-1.8.8-linux64.tar.xz
- cd arduino-1.8.8/
- chmod +x install.sh
- ./install.sh
4.将Arduino连接到电脑
将Arduino连接到电脑,在这里可以更改USB设备,连接到虚拟机还是主机。
5.Linux安装串口驱动
- 1.安装串口驱动 sudo apt-get install python-serial
- 2.查询接口: ls /dev/ttyACM* 或 ls /dev/ttyUSB* #我的是/dev/ttyACM0 chmod 777 /dev/ttyACM0
- 3.查询访问权限 ls -l /dev/ttyACM0
- 4.运行这个命令来加入dialout组 sudo usermod -a -G dialout user_name #其中user_name为登录的用户名
- 5.打开Arduino IDE sudo arduino
- 6.在arduino自带的库管理器搜索并安装MsTimer2.h和PinChangeInterrupt.h这两个包。
- 7.将下位机代码烧录到Adrduino中,略。
6.启用ROS节点
- 1.开一个终端,启用总节点: roscore
- 2.再新开一个终端,将我的src/ros_arduino_bridge移到自己的工作空间/src中,然后在工作空间中。 cd … catkin_make source devel/setup.bash roslaunch ros_arduino_python arduino.launch
- 3.最后再开一个终端启动键盘 sudo apt-get install ros-kinetic-teleop-twist-keyboard rosrun teleop_twist_keyboard teleop_twist_keyboard.py
附Arduino原理图和代码和ROS上位机代码
链接:https://pan.baidu.com/s/1HYhKTkT7klrl5TyOY6M0cQ
提取码:1234--来自百度网盘超级会员V4的分享
#更新:2021.12.30 校正PID:可以看到实时的速度曲线,方便进行pid参数的调整
#操作方式,启用新的终端,然后输入以下指令
#rqt_plot /Lencoder /Lpidout /Lvel#rqt_plot /Rencoder /Rpidout /Rvel
#详细介绍,详见https://www.ncnynl.com/archives/201612/1208.html
- [2022.06.04] 使用思岚的激光雷达,由于时间原因暂且搁置。
版权归原作者 xhwy123 所有, 如有侵权,请联系我们删除。