用串列埠控制kobuki, 繞過ROS系統
介紹:
下面所做的事情, 用串列埠來控制kobuki底座運動, 繞過ros系統, 首先測試一下串列埠命令是否可用
硬體裝置
- kobuki: turtlebot的底座:kobuki
- usb連線: 用usb線將kobuki和電腦連線起來, 不是25針的介面
- windows系統: 這裡我用的是window7
軟體
- window下面, 串列埠除錯工具 下載地址
文件
測試
用usb線連線kobuki和電腦
我的電腦-> 管理 -> 裝置管理器 -> 埠, 然後檢視kobuki用的哪一個埠。
我這裡用的是:COM3
開啟串列埠除錯工具, 設定串列埠, 如下圖所示:
設定串列埠號, 波特率等等, 然後點選開啟, 如果正常的話, 右邊串列埠資料接收處, 應該會接收到很多資料, 並且一直接收資料。
4 . 測試kobuki串列埠協議
例如:
直行命令: AA 55 06 01 04 80 00 00 00 00
- AA: header0, 固定的
- 55: header1,固定的
- 06: length, 計算有效長度, 有效長度是幾位, 就填幾
- 01: 命令包的id
- 04: 資訊的長度
- 80 00: 速度, 速度佔兩位, 所以, 80 00 這兩個其實是一起的, 但是協議上說是反序列化, 所以80 00的速度其實是0X80mm/s, 80是16進位制的
- 00 00: 運動半徑,其實就是轉彎, 下面重點討論速度和運動半徑。
- 00: 校驗位, 隨便填, 我發現其實並沒有進行校驗, 但不能不填
5 . 點擊發送, kobuki就能運動起來了
6 . 其他命令
- 提示音AA 55 03 04 01 00 00
下面我們重點討論一下速度和半徑是怎麼讓小車前進和後退, 以及左轉和右轉的。
前進: 小車速度V取值從0X0000開始, V增大, 小車速度增大, 並且方向向前。當V達到0X0650左右時, 小車速度達到上限, 不在運動。
後退: 小車速度V取值從0XFFFF開始, V減小, 小車速度增大, 同樣,速度不能無限增大, 到達的極值我沒有測試, 有興趣的可以自己去測試。
左轉: 運動半徑R取值從0X0000開始,R增大, 轉彎半徑增大
右轉: 運動半徑R取值從0XFFFF開始,R減小, 轉彎半徑增大
記住,協議說的反序列化, 因此V等於0X0080時, 當改寫成0X80, 0X00