1. 程式人生 > >KOBUKI 除錯記錄

KOBUKI 除錯記錄

所有內容都是基於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節中有具體的解釋。