1. 程式人生 > >ROS之STM32來啦

ROS之STM32來啦

插件 指定 edi 模擬 tps wiki pic nbsp window

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節點端發送點兒啥, 才能收到板子那邊發過來的數據.

ROS之STM32來啦