当前位置: 首页 > article >正文

ROS的STM32电机驱动

哈哈哈, 相信很多人在搜索这个标题吧?

如我一个月折腾的经过, 参考我之前的那篇mbed的博客, 折腾一个月之后, 我决定放弃mbed, 原因不是mbed不好, 也不是在线IDE有多慢, 原因其实是..

 

我的C++很烂.....

忏悔1分钟...

直接搬家去STM32, 分析协议, 重写驱动, 也就花了我4,5天而已, 不过在这之前的一个月里, 我无意之中, 学了点儿python, 竟然对我分析ROS_Serail的代码起了一定作用, 再次可见, 艺多不压身啊, 啥都会点儿, 不坏...

 

总之, 第一步, 分析协议, 发现这个ROS_Serial真日怪, 最起码indigo的版本是这样, 举个例子

上位机发过来的时钟/同步帧, 顺序是:

起始/版本号/内容长度/内容长度验证/topic_id/内容/内容CHK

0xFF/0xFE/0x08/0x00/CHK/0x0A/0x00/8个bytes/CHK

干净利落对吧,

好, topic_id的包跟结束会话的包是这样的:

开始/版本号/长度/长度校验/topic_id/内容校验

0xFF/0xFE/0x00/0x00/0xFF/0x00/0x00/0xFF

开始/版本号/长度/长度校验/topic_id/内容校验

0xFF/0xFE/0x00/0x00/0xFF/0x0B/0x00/0xE3

这么说, topic_id也是内容了?

OK, 下面是更诡异的,

上位机如果publish一个message, 是stm32要订阅的topic的时候, 包是nie样的:

0xFF/0xFE/0x0E/0x00/0xF1/0x64/0x00/0x0A/0x00/0x00/0x00/10个bytes的消息/CHK

开始/版本/长度/长度检验/topic(0x64=100, 是订阅主题的编码)/这4个字节是个什么鬼?/内容/CHK

这个跟一开始给上位机传的消息是一样的, 回顾一下

看, 这个表示在内容部分表示内容长度的部分也是4个字节...

我大胆猜测一下, 是不是msg里面如果有多种数据类型, 可以用这种方法, 分隔不同的数据类型用???

 

哦对了, 最后我都用了string做消息类型, 这很不合理, 但是, whatever, 哪天我真的蛋疼了, 再改吧...

 

再说电机驱动跟编码器的部分.

如果你是一个熟练的stm32玩家, 电机嘛, 就是pwm咯, 搞个频率控制一下, 对了, 昨天犯了一个低级错误, 用了我最少三个小时, 说明我的基础还是不扎实, STM32引脚, 所谓默认功能, 其实也是AF的, 跟remap是没有关系的...一个是重定向, 一个是复用....反正我发现之后, 是扇了自己一个耳光...3个小时啊...

编码器就更简单了, 就是一个外部中断, 我没做什么差异化, 1乘4什么的, 蛋疼么, 直接就是下降沿触发, 完事.

 

另外, 如果这是一个分工详细的公司, 我会花时间, 把通讯的部分跟控制的部分分开, 会把代码写得更有层次感, HAL层, APP层, 哈哈哈哈.....

 

STM32部分的代码如下:

 https://github.com/MontaukLaw/ROS_STM32_SERIAL_MOTOR_ENCODER

转载于:https://www.cnblogs.com/Montauk/p/7200696.html

http://www.lryc.cn/news/2420602.html

相关文章:

  • 背包问题之回溯法
  • dell灵越笔记本后盖怎么拆_dell笔记本拆机详解【图文教程】
  • jQuery hover事件鼠标滑过图片半透明标题文字滑动显示隐藏
  • [ArcPy] 遥感影像去黑边-第六届全国大学生GIS技能大赛试题
  • 分享17个微信创新应用案例 应用场景的不同应用
  • DAVINCI DM3730开发攻略——xload-1.51移植
  • _desktop.ini病毒的清除
  • 开机启动项怎么设置
  • 「网络设备模拟器」EVE-NG安装操作指导
  • CRT常见故障问答
  • 实验二 基于MATLAB的离散时间系统的响应
  • 中国微电机行业需求规模与竞争格局研究报告2022版
  • google地图网页版_网站地图(Sitemap)的制作方法
  • Flex的itemRenderer属性使用例子
  • Internet Explorer 无法打开该 Internet 站点。请求的站点不可用
  • 在Python中如何使用模块进行代码组织
  • rootkit原理与编写教程
  • 中兴手机android版本升级包下载,刷机
  • 打造全新的Windows Live™ Spaces
  • AutoJs学习-天天爱消除脚本
  • 属兔的人今日运势-360星座网_【12月10日】 十二生肖明日运势
  • 属兔的人今日运势-360星座网_第一运程 2021年1月4日十二生肖运势解析
  • 如何制作优质的YouTube视频
  • Stream常用方法
  • 英语论文关于计算机网络,COMPUTER NETWORK 计算机网络(英语论文).doc
  • 联邦学习介绍
  • ospf动态路由协议——(最详解)
  • jQuery绑定事件的四种方式:bind、live、delegate、on
  • 三款企业必备企业上网监控软件盘点|上网行为监控软件有哪些
  • 用c语言实现二分法