KOBUKI 除錯記錄
阿新 • • 發佈:2018-11-26
所有內容都是基於link:http://wiki.ros.org/kobuki/Tutorials
1 安裝kobuki的燒錄工具stm32flash(刷機工具)
ROS提供的下載連結打不開,可以從這下載:https://sourceforge.net/projects/stm32flash/files/
選擇stm32flash-0.5.tar.gz (這是linux版本的)
1.1 安裝stm32flash
解壓進入目錄,執行
make
提示如下:
$ make cc -Wall -g -c -o dev_table.o dev_table.c cc -Wall -g -c -o i2c.o i2c.c cc -Wall -g -c -o init.o init.c cc -Wall -g -c -o main.o main.c cc -Wall -g -c -o port.o port.c cc -Wall -g -c -o serial_common.o serial_common.c cc -Wall -g -c -o serial_platform.o serial_platform.c cc -Wall -g -c -o stm32.o stm32.c stm32.c: In function ‘stm32_mass_erase’: stm32.c:758:2: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation] if (port->flags & PORT_STRETCH_W ^~ stm32.c:761:3: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’ return STM32_ERR_UNKNOWN; ^~~~~~ cc -Wall -g -c -o utils.o utils.c cd parsers && make parsers.a make[1]: Entering directory '/home/simileciwh/Downloads/kobuki-Download-Firmware/stm32flash-v0.5/parsers' cc -Wall -g -c -o binary.o binary.c cc -Wall -g -c -o hex.o hex.c ar rc parsers.a binary.o hex.o make[1]: Leaving directory '/home/simileciwh/Downloads/kobuki-Download-Firmware/stm32flash-v0.5/parsers' cc -o stm32flash dev_table.o i2c.o init.o main.o port.o serial_common.o serial_platform.o stm32.o utils.o parsers/parsers.a
這個warnning導致構建失敗,檢視原因是因為,if語句的花括號缺少導致的,通過提示,定位到函式stm32.c的758行,改為:
if (s_err != STM32_ERR_OK) { fprintf(stderr, "Mass erase failed. Try specifying the number of pages to be erased.\n"); } if (port->flags & PORT_STRETCH_W && stm->cmd->er != STM32_CMD_EE_NS){ stm32_warn_stretching("mass erase"); return STM32_ERR_UNKNOWN; }
重新構建
$ make cc -Wall -g -c -o stm32.o stm32.c cd parsers && make parsers.a make[1]: Entering directory '/home/simileciwh/Downloads/kobuki-Download-Firmware/stm32flash-v0.5/parsers' make[1]: 'parsers.a' is up to date. make[1]: Leaving directory '/home/simileciwh/Downloads/kobuki-Download-Firmware/stm32flash-v0.5/parsers' cc -o stm32flash dev_table.o i2c.o init.o main.o port.o serial_common.o serial_platform.o stm32.o utils.o parsers/parsers.a
接著進行安裝
$ sudo make install
[sudo] password for simileciwh:
cd parsers && make parsers.a
make[1]: Entering directory '/home/simileciwh/Downloads/kobuki-Download-Firmware/stm32flash-v0.5/parsers'
make[1]: 'parsers.a' is up to date.
make[1]: Leaving directory '/home/simileciwh/Downloads/kobuki-Download-Firmware/stm32flash-v0.5/parsers'
install -d /usr/local/bin
install -m 755 stm32flash /usr/local/bin
install -d /usr/local/share/man/man1
install -m 644 stm32flash.1 /usr/local/share/man/man1
成功。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2018-08-22更新....
2 距離上次第一次和kobuki連結除錯大約2周的時間,這次再次連線kobuki除錯時,提示如下錯誤資訊:
[ERROR] [1534922261.832456467]: Kobuki : malformed sub-payload detected. [140][170][8C AA 55 4D 01 0F 38 4B 00 00 00 ]
[ERROR] [1534922263.291631232]: Kobuki : malformed sub-payload detected. [48][170][30 AA 55 4D 01 0F EC 50 00 00 ]
[ERROR] [1534922268.388104501]: Kobuki : malformed sub-payload detected. [60][170][3C AA 55 4D 01 0F D8 64 ]
[ERROR] [1534922269.127826450]: Kobuki : malformed sub-payload detected. [18][170][12 AA 55 4D 01 0F ]
[ERROR] [1534922271.446582618]: Kobuki : malformed sub-payload detected. [28][170][1C AA 55 4D 01 0F CC 70 00 00 ]
這很可能是電池電量很低導致的,充滿電後,
如果仍然沒有解決,
查閱過kobuki的使用資料後,發現這個錯誤是在一定條件下會出現的bug,但是不會影響kobuki的除錯演示情況,資料連結如下:
link:https://download.csdn.net/download/simileciwh/10619974
在第9節中有具體的解釋。