搭建ROS小车——下位机篇(基于arduino mega2560,L298N)

ROS与arduino的通讯使用了ros_arduino_bridge,代码也是根据学校师兄的代码进行修改的,师兄说直接烧录就可以使用了但我还是遇到了很多问题,Debug的很难受,以下操作仅供参考,需要根据实际情况自行调整

L298N的使用

在这里插入图片描述

连接方式
  1. 不调速:直接与IN1、IN2连接,ENA、ENB键帽不动(键帽的作用是让ENA、ENB默认与5V连接,这样才能驱动电机转动,只有ENA、ENB处于高电平时对应的电机才能转动)
  2. 调速:IN1.2.3.4与arduino连接后,将ENA、ENB在IN平行一侧的针脚与arduino的PWM输出引脚连接,对ENA和ENB使能端输入PWM脉冲
    • 也有文章说可以直接arduino的pwm输出直接连接IN1、IN2来调速,但是在多次尝试后发现不行
与arduino的连接

这里要注意L298N与arduino一定要共地,直接GND与arduino的GND连接,调试的时候可以将L298N的5V口与arduino连接供电(因为供电口键帽没有拔掉的时候5V可以用来输出)

附上接线部分代码

//电机定义,ENCODER_1代表编码器正极,A标号为左侧电机
#define  PWMA  10
#define  AIN1  4
#define  AIN2  5
#define  AENCODER_1     3    //INT1--中断号 只能读取B相的
#define  AENCODER_2     2    //INT0
#define  PWMB  11
#define  BIN1  6
#define  BIN2  7
#define  BENCODER_1     18   //INT5
#define  BENCODER_2     19   //INT4
//需要注意arduino mega的中断引脚以及引脚号,后边会用到,如果进行修改的话需要按照自己的接线来修改

arduino

使用mega的原因如下

  • 引脚比较多,也是ros_arduino_bridge原代码中使用的板子
  • 中断引脚比较多,将来如果要做四轮或者三轮小车可以使用
  • 电源引脚也比较多,不用在外部焊接排针

注:原版比较贵,这里我用的是国产板

已经将代码上传到github上,同步进行更新,文末附带连接,下边说明一下代码(代码中已经有大量注释,这里只讲一些自己觉得重要的)以及项目进行过程中遇到的问题,有遇到相同问题的小伙伴可以一起讨论

  • 代码中使用了大量的宏定义,阅读代码时需要留意这部分代码,上下文结合
  • communication这部分是上下位机通讯用的,可以根据自己需要进行修改
  • 中断:中断这个地方有个隐藏技巧,因为编码器的正负极的方向是一样的,但是装到轮子上后就是方向相反的了,所以如果编码器1进入正极引脚对应的中断,那么编码器2就进入负极对应的中断,这样做当机器人向某个方向走的时候,才能两个编码器同时进入中断。如果都让两个编码器的正极对应的线进入中断,那么前几个数值可能会有正负值跳变
  • pid调试:这里可以参考这篇文章,不过ros_arduino_bridge的pid代码感觉有点奇怪,因为我曾经遇到一个问题,不上电的时候,pid.out会慢慢增加到255,全速转动,推测是pid问题

代码:https://github.com/LinErTe/roscar

  • 7
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
ROS器人操作系统)是一款成熟的器人操作系统,具有完备的生态体系,未来的发展意义可以成为器人届中的”Linux、Android“。器人的开发学习要综合软硬件的协同开发,硬件开发有些部分倾向于底层的设计和使用。软件开发可以依托C++、PYTHON等高级语言进行ROS接口应用开发,或者兼容ROS系统。本系列的ROS开发课程包含下位开发、上位开发、基于MBD(基于模型设计的开发)等。下位作为器人设计的基础部分是学习器人操作系统必经之路,下位我们通常会选择Arduino(适合学习不适合工程,代码执行效率差)、STM32系列产品(工程应用广泛,适合学习和工程开发,代码针对性强),当然还有NXP系列、51系列、TI DSP等,后期可以根据产品的性能和成本要求去考虑;上位部分,主要是基于工控、树莓派Raspberry、英伟达Jetson等可以运行操作系统的嵌入式设备再基于ROS操作系统进行实训学习。网络上对于ROS类的教学比较多,但是系统化从底层向高阶层层递升的教学方法偏少,知识碎片化严重,对器人开发工程师深远的发展有负面影响,基于此本人通过多年自身的学习和工程实践,将器人开发课程系统化、具象化、模块化地引导式学习,每节课程都有相应的课件和代码引导。对致力于器人事业的学生有推动作用,且增强信心,系统化自己的器人知识。为自己的职业规划和事业发展奠定坚实基础。最后,你们的支持,就是老师不断创作的动力!老师会不断更新器人类相关知识,希望”与子同裳“。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值