# UWB --- #### Firmware (stm32) ###### rosserial_stm32: https://github.com/yoneken/rosserial_stm32 ###### rosserial_arduino:http://wiki.ros.org/rosserial_arduino ###### BPHero UWB manual: shorturl.at/efhA7 vscode_arduino :https://swf.com.tw/?p=1231 :+1: --- #### Circuit #### Floor Layout #### Positioning Source Code :+1:uwb_bphero_to_ros ``` #define SOP 'm' #define EOP '\r' bool started = false; bool ended = false; uint8_t inData[20]; byte index; void setup() { Serial.begin(115200); Serial1.begin(115200,SERIAL_8N1); Serial.println("Hello"); } void loop() { // Read all serial data available, as fast as possible while(Serial1.available() > 0) { uint8_t inChar = Serial1.read(); if(inChar == SOP) { Serial.print("SOP:"); Serial.println(inChar,HEX); index = 0; inData[index] = inChar; started = true; ended = false; index++; } else if(inChar == EOP) { Serial.print("EOP:"); Serial.println(inChar,HEX); Serial.println(index); inData[index] = inChar; ended = true; break; } else { if(index < 20) { inData[index] = inChar; index++; } } } if(started && ended) { // The end of packet marker arrived. Process the packet Serial.println(inData[0],HEX); Serial.println(inData[1],HEX); Serial.println(inData[2],HEX); Serial.println(inData[3],HEX); Serial.println(inData[4],HEX); Serial.println(inData[5],HEX); Serial.println(inData[6],HEX); Serial.println(inData[7],HEX); Serial.println(inData[8],HEX); Serial.println(inData[9],HEX); Serial.println(inData[10],HEX); Serial.println(inData[11],HEX); Serial.println(inData[12],HEX); Serial.println(inData[13],HEX); Serial.println(inData[14],HEX); Serial.println(inData[15],HEX); Serial.println(inData[16],HEX); Serial.println(inData[17],HEX); Serial.println(inData[18],HEX); Serial.println("------------"); // Reset for the next packet started = false; ended = false; index = 0; inData[index] = '\0'; } } ``` --- creating customed msg http://wiki.ros.org/ROS/Tutorials/CreatingMsgAndSrv make libraries into Arduino https://answers.ros.org/question/119031/rosserial_client-does-not-include-make_librarypy/ ``` rosrun rosserial_arduino make_libraries.py ~/Arduino/libraries ``` --- tentitive test rosseral_node: ``` roscore rosrun rosserial_python serial_node.py /dev/ttyACM0 _baud:=115200 ``` --- rosserial_arduino array limitation: http://wiki.ros.org/rosserial/Overview/Limitations#Arrays http://wiki.ros.org/rosserial/Overview/Messages :::info :bulb: [Kalman Filter論壇](http://51uwb.cn/forum.php?mod=viewthread&tid=213&highlight=kalman) :triangular_flag_on_post: [kalman code](https://drive.google.com/file/d/1qWq5Pm-JGak18pv1lI0cizIpvjLYaBTZ/view?usp=sharing) :triangular_flag_on_post: [bphero uwb源碼解析](http://51uwb.cn/forum.php?mod=viewthread&tid=203) ::: > todo: > 1. 更新hackMD上的arduino code(rosserial+pui_msg) > 2. 更新github pui-pkg > 3. Arduino Serial Plotter Multiple Graphs > 4. 先可視化三個距離的雜訊多不多 > 5. kalmann filter > 6. 濾波前後比較(視化三個距離) > 7. 更改位置算法(pdf/particle filter...轉至矩陣)