ROS之STM32来啦
mbed是ARM自己high的一个所谓IoT的平台, 甚至不惜做了一个巨难用的在线编译IDE, 蛋疼欲裂, 内个字体非常非常反人类, 唯一的解决办法是用chrome浏览器, 然后下一个叫mbedEditor++的插件, 修改编译器的代码字体, 不然你迟早要瞎.
OK, 进入正题, 我现在玩的ROS还是基于PC平台的, 如果要用PC来控制电机, 并收集电机的里程数据, 也就是说, 要将ROS跟模拟量之间连接起来, 有几个方案:
http://wiki.ros.org/rosserial:
用Aruino, 这个我玩过, 但是它的pwm只有255HZ, 这不是开玩笑么..
嵌入式Linux, 我只是用来驱动电机, 用嵌入式linux会不会太浪费了..
windows, 同上
mbed, 这个东西, 我在看那本印度哥们写的书的时候, 他就提到了mbed, 但是后来, 他自己做的机器人居然用的是下面这个:
tavic, 这个东西, 似乎是TI的一个launchpad board.
由于种种原因吧(其实是我只会搞STM32), 只能接受mbed的方案, 了解了一下大概概念, 意思是要用蛋疼的在线ide, 编译代码, 然后下载bin文件, 然后丢到指定的ST官方的开发板nucleo板子里面, 插usb就能跑啦.
首先, 去淘宝买一个F103/F40x的nucleo板子, 我只会F1,F0, 所以选择了F103RB, 大约100块包邮(其实挺黑的,成本他妈10块左右).
然后把一个helloworld代码, import到在线IDE:
https://developer.mbed.org/users/garyservin/code/ros_lib_indigo/
然后编译, 下载bin文件, 插了necleo的板子, bin文件拷进去, 重启, 就相当于烧录啦..
然后在ROS里面, 启动roscore, 再启动rosserial的节点:
$ rosrun rosserial_python serial_node.py /dev/ttyACM0
然后就用rostopic的命令echo一下chatter这个topic, 你就可以看到每秒钟输出的那句在STM32里面的hello world了.
其实我很想知道, 如果这玩意儿要移植, 从nucleo移植到自己的板子上, 应该接哪个口? 为啥我试了所有的口, 还都接了逻辑分析仪, 转不到包, 是不是这个通讯协议还得研究一下, 必须从ROS节点端发送点儿啥, 才能收到板子那边发过来的数据.