voxl Tmotor f55 esc
-
Hello @ErezI,
Can you please describe your setup? Specifically, in your first test, how are you connecting to the Tmotor ESC and where are you running voxl-esc tools? (on your PC or VOXL2 ?). Did you make your own cable for UART communication?
./voxl-esc-scan.py
command will automatically try all typical baud rates, including 2Mbit and should detect the Tmotor ESC.Alex
-
@Alex-Kushleyev
Hi Alex,Using the same system (PC with Ubuntu OS & voxl-esc-tools, connected directly via FTDI 3.3v to the previous ESC V2, Seeker_V1_tmotor_f2203_1500kv_Param_Rev_A) we succeed to connect, control (spin for example), calibrate and update the xml parameters in the ESC.
The differences are the ESC connectors & relevant pins (RX, TX, GND). and the BAUD rate.The same system connected to the f2203 ESC - works,
while connected to the F55A - fails.So we know (succeed) how to work and to configure ESCs using your ESC tools.
Using a Wireshark sniffer (USB sniffer) I see transactions (command and response) between the two sides (PC & F55A ESC), but no ESC identified.
Can you send the interface protocol between the two sides, so I can understand the transactions?
Is it possible that we got ESCs without any firmware?
I tried to update the firmware/parameters also - but with a failure.Thanks,
Erez
Do you have
-
Do the ESCs make motor sounds when powered on? Should be similar sound as our standard ESCs. If so, then there is ESC firmware loaded.
Can you please share which FTDI adapter you are using?
I can add a debug mode to voxl-esc tools to print out what it is sending and receiving, this may help. I will follow up tomorrow.
There is also C++ code example you can use for basic testing, i will share that shortly.
Alex
-
-
Hello @ErezI ,
I have added a debug functionality to a new feature branch which i have been working on. https://gitlab.com/voxl-public/voxl-sdk/utilities/voxl-esc/-/tree/add-new-params . This branch has some changes to support upcoming ESC param updates, but it is also functional to test the ESCs (except reading and writing params - don't try it ). We can use it to help debug your issue.
You can checkout the code from the
add-new-params
branch and try the following test with your Tmotor ESC. You will see that the ESCs are queried twice, but that is ok, it is part of the procedure (kind of redundant, but it's fine ).Each data packet (outgoing and incoming starts with a header 0xAF) and ends with a two-byte checksum.
In my case i am using a STLInk-V3 dongle as a serial to USB adapter.
./voxl-esc-scan.py --enable-debug 1 Detected Python version : 3.10.6 (main, Mar 10 2023, 10:55:28) [GCC 11.3.0] Found voxl-esc tools bin version: 1.2 INFO: All COM ports: /dev/ttyACM0 : STLINK-V3 - ST-Link VCP Ctrl INFO: UART Port Candidates: /dev/ttyACM0 Found previous connection information in .voxl_esc_cache .. Prioritizing /dev/ttyACM0 @ 2000000 INFO: Scanning for ESC firmware: /dev/ttyACM0, baud: 2000000 UART TX: AF 06 00 00 91 C1 UART TX: AF 06 18 00 9B C1 UART RX: AF 0E 6D 00 25 00 21 00 00 00 00 00 64 DE AF 30 83 00 25 00 21 00 5D 00 46 00 17 50 32 53 34 35 34 20 62 61 36 64 31 39 33 61 2A 00 00 00 37 61 30 31 61 37 38 30 00 00 00 00 00 00 1B C5 PACKET CRC OK: AF 0E 6D 00 25 00 21 00 00 00 00 00 64 DE PACKET CRC OK: AF 30 83 00 25 00 21 00 5D 00 46 00 17 50 32 53 34 35 34 20 62 61 36 64 31 39 33 61 2A 00 00 00 37 61 30 31 61 37 38 30 00 00 00 00 00 00 1B C5 Got Short Version Response from ID 0 Got Extended Version Response from ID 0 UART TX: AF 06 00 01 50 01 UART TX: AF 06 18 01 5A 01 UART RX: AF 0E 6D 01 25 00 21 00 00 00 00 00 UART RX: 69 4E AF 30 83 01 25 00 21 00 5D 00 38 00 17 50 32 53 34 35 34 20 64 38 32 35 63 37 38 63 00 00 00 00 37 61 30 31 61 37 38 30 00 00 00 00 00 00 14 2B PACKET CRC OK: AF 0E 6D 01 25 00 21 00 00 00 00 00 69 4E PACKET CRC OK: AF 30 83 01 25 00 21 00 5D 00 38 00 17 50 32 53 34 35 34 20 64 38 32 35 63 37 38 63 00 00 00 00 37 61 30 31 61 37 38 30 00 00 00 00 00 00 14 2B Got Short Version Response from ID 1 Got Extended Version Response from ID 1 UART TX: AF 06 00 02 10 00 UART TX: AF 06 18 02 1A 00 UART RX: AF 0E 6D 02 25 00 21 00 00 00 00 00 7D BE AF 30 83 02 25 00 21 00 5E 00 3E 00 17 50 32 53 34 35 34 20 64 38 32 35 63 37 38 63 00 00 00 00 37 61 30 31 61 37 38 30 00 00 00 00 00 00 62 BF PACKET CRC OK: AF 0E 6D 02 25 00 21 00 00 00 00 00 7D BE PACKET CRC OK: AF 30 83 02 25 00 21 00 5E 00 3E 00 17 50 32 53 34 35 34 20 64 38 32 35 63 37 38 63 00 00 00 00 37 61 30 31 61 37 38 30 00 00 00 00 00 00 62 BF Got Short Version Response from ID 2 Got Extended Version Response from ID 2 UART TX: AF 06 00 03 D1 C0 UART TX: AF 06 18 03 DB C0 UART RX: AF 0E 6D 03 25 00 21 00 00 00 00 00 70 2E AF 30 83 03 25 00 21 00 55 00 40 00 17 50 32 53 34 35 34 20 64 38 32 35 63 37 38 63 00 00 00 00 37 61 30 31 61 37 38 30 00 00 00 00 00 00 1D DE PACKET CRC OK: AF 0E 6D 03 25 00 21 00 00 00 00 00 70 2E PACKET CRC OK: AF 30 83 03 25 00 21 00 55 00 40 00 17 50 32 53 34 35 34 20 64 38 32 35 63 37 38 63 00 00 00 00 37 61 30 31 61 37 38 30 00 00 00 00 00 00 1D DE Got Short Version Response from ID 3 Got Extended Version Response from ID 3 INFO: ESC(s) detected on port: /dev/ttyACM0, baud rate: 2000000 INFO: Detected protocol: firmware UART TX: AF 06 00 00 91 C1 UART TX: AF 06 18 00 9B C1 UART RX: AF 0E 6D 00 25 00 21 00 00 00 00 00 64 DE AF 30 83 00 25 00 21 00 5D 00 46 00 17 50 32 53 34 35 34 20 62 61 36 64 31 39 33 61 2A 00 00 00 37 61 30 31 61 37 38 30 00 00 00 00 00 00 1B C5 PACKET CRC OK: AF 0E 6D 00 25 00 21 00 00 00 00 00 64 DE PACKET CRC OK: AF 30 83 00 25 00 21 00 5D 00 46 00 17 50 32 53 34 35 34 20 62 61 36 64 31 39 33 61 2A 00 00 00 37 61 30 31 61 37 38 30 00 00 00 00 00 00 1B C5 Got Short Version Response from ID 0 Got Extended Version Response from ID 0 UART TX: AF 06 00 01 50 01 UART TX: AF 06 18 01 5A 01 UART RX: AF 0E 6D 01 25 00 21 00 00 00 00 00 69 4E AF 30 83 01 25 00 21 00 5D 00 38 00 17 50 32 53 34 35 34 20 64 38 32 35 63 37 38 63 00 00 00 00 37 61 30 31 61 37 38 30 00 00 00 00 00 00 14 2B PACKET CRC OK: AF 0E 6D 01 25 00 21 00 00 00 00 00 69 4E PACKET CRC OK: AF 30 83 01 25 00 21 00 5D 00 38 00 17 50 32 53 34 35 34 20 64 38 32 35 63 37 38 63 00 00 00 00 37 61 30 31 61 37 38 30 00 00 00 00 00 00 14 2B Got Short Version Response from ID 1 Got Extended Version Response from ID 1 UART TX: AF 06 00 02 10 00 UART TX: AF 06 18 02 1A 00 UART RX: AF 0E 6D 02 25 00 21 00 00 00 00 00 7D BE AF 30 83 02 25 00 21 00 5E 00 3E 00 17 50 32 53 34 35 34 20 64 38 32 35 63 37 38 63 00 00 00 00 37 61 30 31 61 37 38 30 00 00 00 00 00 00 62 BF PACKET CRC OK: AF 0E 6D 02 25 00 21 00 00 00 00 00 7D BE PACKET CRC OK: AF 30 83 02 25 00 21 00 5E 00 3E 00 17 50 32 53 34 35 34 20 64 38 32 35 63 37 38 63 00 00 00 00 37 61 30 31 61 37 38 30 00 00 00 00 00 00 62 BF Got Short Version Response from ID 2 Got Extended Version Response from ID 2 UART TX: AF 06 00 03 D1 C0 UART TX: AF 06 18 03 DB C0 UART RX: AF 0E 6D 03 25 00 21 00 00 00 00 00 70 2E AF 30 83 03 25 00 21 00 55 00 40 00 17 50 32 53 34 35 34 20 64 38 32 35 63 37 38 63 00 00 00 00 37 61 30 31 61 37 38 30 00 00 00 00 00 00 1D DE PACKET CRC OK: AF 0E 6D 03 25 00 21 00 00 00 00 00 70 2E PACKET CRC OK: AF 30 83 03 25 00 21 00 55 00 40 00 17 50 32 53 34 35 34 20 64 38 32 35 63 37 38 63 00 00 00 00 37 61 30 31 61 37 38 30 00 00 00 00 00 00 1D DE Got Short Version Response from ID 3 Got Extended Version Response from ID 3 INFO: Additional Information: INFO: --------------------- ID : 0 Board : version 33: Blheli32 4-in-1 ESC Type B (Tmotor F55A PRO G071) UID : 0x20343534533250170046005D Firmware : version 37, hash ba6d193a* Bootloader : version 0, hash 7a01a780 ID : 1 Board : version 33: Blheli32 4-in-1 ESC Type B (Tmotor F55A PRO G071) UID : 0x20343534533250170038005D Firmware : version 37, hash d825c78c Bootloader : version 0, hash 7a01a780 ID : 2 Board : version 33: Blheli32 4-in-1 ESC Type B (Tmotor F55A PRO G071) UID : 0x2034353453325017003E005E Firmware : version 37, hash d825c78c Bootloader : version 0, hash 7a01a780 ID : 3 Board : version 33: Blheli32 4-in-1 ESC Type B (Tmotor F55A PRO G071) UID : 0x203435345332501700400055 Firmware : version 37, hash d825c78c Bootloader : version 0, hash 7a01a780 ---------------------
Additionally, there is an open source implementation of the basic communication protocol here : https://gitlab.com/voxl-public/support/esc-driver . I am able to use it to query the Tmotor ESC:
git clone git@gitlab.com:voxl-public/support/esc-driver.git cd esc-driver/examples make ./qc_esc_test 0 /dev/ttyACM0 2000000 #this will send zero power command to 4 ESCs and query feedback qc_esc_test version 1.0 build date May 31 2023 Usage: qc_esc_test <test_mode> <device path> <baud_rate> Available test modes: 0: detect esc response 1: detect esc versions 2: open-loop test 3: closed-loop RPM test Trying device /dev/ttyACM0, baud rate 2000000 Starting Test #0 Detecting ESC response (sending zero RPM commands and requesting feedback).. ESC response: id 1, state 0, cntr 90, pwr +000, 0RPM, 12.135V, 0.000A, 27.840C ESC response: id 2, state 0, cntr 154, pwr +000, 0RPM, 12.158V, 0.000A, 27.970C ... got esc feedback (out of 15 packets each): 15 15 15 15 0 0 0 0 Found 4 ESCs
Another thing i can think of.. Maybe FTDI chip latency is too high, you can try to reduce it to 1ms with the following command (for appropriate device, such as
ttyUSB0
:echo 1 > /sys/bus/usb-serial/devices/ttyUSB0/latency_timer
Please try these out and let me know your results!
Alex
-
@mzahana , we have a limited availability of Tmotor ESC with ModalAI firmware. It is officially not supported. We are working on our own version of a 6S Racing ESC, but it is not yet ready for release. If you can describe your application, perhaps one of our existing official ESCs could work for you.
-
@Alex-Kushleyev
AlexThanks for your fast & helpful support..
The motors sound like 3-4 successive rings when powered on.Erez
-
@ErezI , OK that means the firmware is loaded. All of our ESCs come programmed and tested before shipping.
Alex
-
Hello @ErezI , did the debugging mode help you figure out the issue?
-
Hi Alex,
No change.
I can't reduce the latency:
user@ubuntu18-VBox:/mnt/ushare/voxl-esc-add-new-params/voxl-esc-tools$ sudo echo 1 > /sys/bus/usb-serial/devices/ttyUSB0/latency_timer
bash: /sys/bus/usb-serial/devices/ttyUSB0/latency_timer: Permission denied
user@ubuntu18-VBox:/mnt/ushare/voxl-esc-add-new-params/voxl-esc-tools$ echo 1 > /sys/bus/usb-serial/devices/ttyUSB0/latency_timer
bash: /sys/bus/usb-serial/devices/ttyUSB0/latency_timer: Permission deniedand no ESCs identified:
user@ubuntu18-VBox:/mnt/ushare/voxl-esc-add-new-params/voxl-esc-tools$ ./voxl-esc-scan.py --enable-debug 1
Detected Python version : 3.8.16 (default, Dec 7 2022, 01:12:13)
[GCC 7.5.0]
Found voxl-esc tools bin version: 1.2
INFO: All COM ports:
/dev/ttyUSB0 : C232HD-DDHSP-0 - C232HD-DDHSP-0
INFO: UART Port Candidates:
ERROR: No ESC(s) detected, exiting. -
Hi Alex,
I am working with Erez ad Ben on this project and it seems that we are hitting a wall which I assume that you are the only one who can help.
I would appreciate if we will be able to contact you directly in regards to the issue in hand, I don't know if this is a setup issue, wiring issue, FTDI issue or etc - but I do hope that in a quick conference chat we will be able to overcome this.I would appreciate if you will be able to contact me through my E-mail Yariv.l@pearls.org.il to schedule a quick chat to resolve this whole issue.
Appreciate your help and support,
Yariv
-
Hi Alex,
I added my tests' info using wsl2 (no success)
on windows
#process0
C:\Program Files\usbipd-win>usbipd serveron wsl (f55a-cyclic.sh)
#!/bin/bash
sudo echo 1 > /sys/bus/usb-serial/devices/ttyUSB0/latency_timer
sleep 5#proces1
sudo nome-terminal -x ./auto-attach.sh 172.24.192.1 3-2
sleep 3#process2
sudo gnome-terminal -x watch "ls -al /dev | egrep ttyU"
sleep 3#process3
sudo gnome-terminal -x dmesg -W
sleep 3#process4
sudo gnome-terminal --working-directory=/data/voxl-esc-add-new-params/voxl-esc-tools/ -x watch "python /data/voxl-esc-add-new-params/voxl-esc-tools/voxl-esc-scan.py --enable-debug 1"sleep 30
ps -a
sleep 3
sudo pkill -9 gnome-terminal
pkill -9 gnome-terminal
sleep 5#process0 output
C:\Program Files\usbipd-win>usbipd server
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Production
info: Microsoft.Hosting.Lifetime[0]
Content root path: C:\Program Files\usbipd-win
info: Usbipd.ConnectedClient[1]
Client 172.24.199.17 claimed device at 3-2 (USB\VID_0403&PID_6001\FT4TW3LE).
info: Usbipd.ConnectedClient[2]
Client 172.24.199.17 released device at 3-2 (USB\VID_0403&PID_6001\FT4TW3LE).
info: Usbipd.ConnectedClient[1]
Client 172.24.199.17 claimed device at 3-2 (USB\VID_0403&PID_6001\FT4TW3LE).
info: Usbipd.ConnectedClient[2]
Client 172.24.199.17 released device at 3-2 (USB\VID_0403&PID_6001\FT4TW3LE).
info: Usbipd.ConnectedClient[1]
Client 172.24.199.17 claimed device at 3-2 (USB\VID_0403&PID_6001\FT4TW3LE).#process1 output
usbip: error: Attach Request for 3-2 failed - Device not found
Attached
Detached
usbip: error: Attach Request for 3-2 failed - Device not found
Attached
Detached
Attached#process2 output
Every 2.0s: ls -al /dev | egrep ttyU PW-CONTROL07: Wed Jun 21 17:06:16 2023
crw------- 1 root root 188, 0 Jun 21 2023 ttyUSB0
#process3 output
[ 1892.623021] vhci_hcd vhci_hcd.0: pdev(0) rhport(0) sockfd(3)
[ 1892.628241] vhci_hcd vhci_hcd.0: devid(196610) speed(2) speed_str(full-speed)
[ 1892.630748] vhci_hcd vhci_hcd.0: Device attached
[ 1892.914403] vhci_hcd: vhci_device speed not set
[ 1892.984269] usb 1-1: new full-speed USB device number 18 using vhci_hcd
[ 1893.084280] vhci_hcd: vhci_device speed not set
[ 1893.164250] usb 1-1: SetAddress Request (18) to port 0
[ 1893.604492] usb 1-1: New USB device found, idVendor=0403, idProduct=6001, bcdDevice= 6.00
[ 1893.606748] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1893.609072] usb 1-1: Product: TTL232RG-VREG3V3
[ 1893.609980] usb 1-1: Manufacturer: FTDI
[ 1893.610659] usb 1-1: SerialNumber: FT4TW3LE
[ 1893.623736] ftdi_sio 1-1:1.0: FTDI USB Serial Device converter detected
[ 1893.625770] usb 1-1: Detected FT232RL
[ 1893.632497] usb 1-1: FTDI USB Serial Device converter now attached to ttyUSB0
[ 1895.017816] vhci_hcd: unlink->seqnum 81017
[ 1895.018495] vhci_hcd: the urb (seqnum 81017) was already given back
[ 1895.019313] vhci_hcd: unlink->seqnum 81019
[ 1895.019856] vhci_hcd: the urb (seqnum 81019) was already given back
[ 1895.163809] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1895.164874] vhci_hcd: unlink->seqnum 81055
[ 1895.165354] vhci_hcd: the urb (seqnum 81055) was already given back
[ 1895.310820] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1895.311921] vhci_hcd: unlink->seqnum 81089
[ 1895.312494] vhci_hcd: the urb (seqnum 81089) was already given back
[ 1895.461562] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1895.464395] vhci_hcd: unlink->seqnum 81123
[ 1895.466541] vhci_hcd: the urb (seqnum 81123) was already given back
[ 1895.628411] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1895.630861] vhci_hcd: unlink->seqnum 81158
[ 1895.632078] vhci_hcd: the urb (seqnum 81158) was already given back
[ 1895.784242] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1895.785161] vhci_hcd: unlink->seqnum 81193
[ 1895.785654] vhci_hcd: the urb (seqnum 81193) was already given back
[ 1896.349788] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1896.350886] vhci_hcd: unlink->seqnum 81521
[ 1896.351526] vhci_hcd: the urb (seqnum 81521) was already given back
[ 1896.914474] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1896.915333] vhci_hcd: unlink->seqnum 82125
[ 1896.915797] vhci_hcd: the urb (seqnum 82125) was already given back
[ 1899.267100] vhci_hcd: unlink->seqnum 82295
[ 1899.267747] vhci_hcd: the urb (seqnum 82295) was already given back
[ 1899.268576] vhci_hcd: unlink->seqnum 82297
[ 1899.269365] vhci_hcd: the urb (seqnum 82297) was already given back
[ 1899.416402] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1899.417294] vhci_hcd: unlink->seqnum 82468
[ 1899.417874] vhci_hcd: the urb (seqnum 82468) was already given back
[ 1899.561474] vhci_hcd: unlink->seqnum 82634
[ 1899.562043] vhci_hcd: the urb (seqnum 82634) was already given back
[ 1899.562994] vhci_hcd: unlink->seqnum 82636
[ 1899.563598] vhci_hcd: the urb (seqnum 82636) was already given back
[ 1899.708527] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1899.710263] vhci_hcd: unlink->seqnum 82802
[ 1899.711258] vhci_hcd: the urb (seqnum 82802) was already given back
[ 1899.859324] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1899.860214] vhci_hcd: unlink->seqnum 82958
[ 1899.860859] vhci_hcd: the urb (seqnum 82958) was already given back
[ 1900.003321] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1900.004322] vhci_hcd: unlink->seqnum 83123
[ 1900.004759] vhci_hcd: the urb (seqnum 83123) was already given back
[ 1900.567465] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1900.568335] vhci_hcd: unlink->seqnum 83730
[ 1900.568811] vhci_hcd: the urb (seqnum 83730) was already given back
[ 1901.130609] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1901.131840] vhci_hcd: unlink->seqnum 84335
[ 1901.132850] vhci_hcd: the urb (seqnum 84335) was already given back
[ 1903.459054] vhci_hcd: unlink->seqnum 84493
[ 1903.460300] vhci_hcd: the urb (seqnum 84493) was already given back
[ 1903.461365] vhci_hcd: unlink->seqnum 84495
[ 1903.462478] vhci_hcd: the urb (seqnum 84495) was already given back
[ 1903.611008] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1903.611918] vhci_hcd: unlink->seqnum 84668
[ 1903.612309] vhci_hcd: the urb (seqnum 84668) was already given back
[ 1903.757928] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1903.758831] vhci_hcd: unlink->seqnum 84837
[ 1903.759266] vhci_hcd: the urb (seqnum 84837) was already given back
[ 1903.904994] vhci_hcd: unlink->seqnum 85001
[ 1903.905570] vhci_hcd: the urb (seqnum 85001) was already given back
[ 1903.906408] vhci_hcd: unlink->seqnum 85003
[ 1903.906866] vhci_hcd: the urb (seqnum 85003) was already given back
[ 1904.055495] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1904.056528] vhci_hcd: unlink->seqnum 85174
[ 1904.057186] vhci_hcd: the urb (seqnum 85174) was already given back
[ 1904.199584] vhci_hcd: unlink->seqnum 85340
[ 1904.200320] vhci_hcd: the urb (seqnum 85340) was already given back
[ 1904.201153] vhci_hcd: unlink->seqnum 85342
[ 1904.201755] vhci_hcd: the urb (seqnum 85342) was already given back
[ 1904.770065] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1904.771215] vhci_hcd: unlink->seqnum 85941
[ 1904.793412] vhci_hcd: the urb (seqnum 85941) was already given back
[ 1905.378980] vhci_hcd: unlink->seqnum 86540
[ 1905.379524] vhci_hcd: the urb (seqnum 86540) was already given back
[ 1905.380213] vhci_hcd: unlink->seqnum 86542
[ 1905.380672] vhci_hcd: the urb (seqnum 86542) was already given back
[ 1907.712779] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1907.713839] vhci_hcd: unlink->seqnum 86708
[ 1907.714369] vhci_hcd: the urb (seqnum 86708) was already given back
[ 1907.856827] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1907.857885] vhci_hcd: unlink->seqnum 86873
[ 1907.858613] vhci_hcd: the urb (seqnum 86873) was already given back
[ 1908.000380] vhci_hcd: unlink->seqnum 87037
[ 1908.000990] vhci_hcd: the urb (seqnum 87037) was already given back
[ 1908.001894] vhci_hcd: unlink->seqnum 87039
[ 1908.002283] vhci_hcd: the urb (seqnum 87039) was already given back
[ 1908.144051] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1908.145049] vhci_hcd: unlink->seqnum 87203
[ 1908.145540] vhci_hcd: the urb (seqnum 87203) was already given back
[ 1908.287037] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1908.287877] vhci_hcd: unlink->seqnum 87365
[ 1908.288349] vhci_hcd: the urb (seqnum 87365) was already given back
[ 1908.429762] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1908.430658] vhci_hcd: unlink->seqnum 87530
[ 1908.431205] vhci_hcd: the urb (seqnum 87530) was already given back
[ 1908.985317] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1908.986189] vhci_hcd: unlink->seqnum 88127
[ 1908.986661] vhci_hcd: the urb (seqnum 88127) was already given back
[ 1909.548749] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1909.549567] vhci_hcd: unlink->seqnum 88733
[ 1909.550019] vhci_hcd: the urb (seqnum 88733) was already given back
[ 1911.260690] vhci_hcd: connection closed
[ 1911.261065] vhci_hcd: stop threads
[ 1911.269459] vhci_hcd: release socket
[ 1911.270215] vhci_hcd: disconnect device
[ 1911.270792] usb 1-1: USB disconnect, device number 18
[ 1911.271620] ftdi_sio ttyUSB0: FTDI USB Serial Device converter now disconnected from ttyUSB0
[ 1911.272759] ftdi_sio 1-1:1.0: device disconnected
[ 1919.686333] vhci_hcd vhci_hcd.0: pdev(0) rhport(0) sockfd(3)
[ 1919.694426] vhci_hcd vhci_hcd.0: devid(196610) speed(2) speed_str(full-speed)
[ 1919.695445] vhci_hcd vhci_hcd.0: Device attached
[ 1919.974230] vhci_hcd: vhci_device speed not set
[ 1920.054310] usb 1-1: new full-speed USB device number 19 using vhci_hcd
[ 1920.134299] vhci_hcd: vhci_device speed not set
[ 1920.204355] usb 1-1: SetAddress Request (19) to port 0
[ 1920.271386] usb 1-1: New USB device found, idVendor=0403, idProduct=6001, bcdDevice= 6.00
[ 1920.272654] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1920.276426] usb 1-1: Product: TTL232RG-VREG3V3
[ 1920.283974] usb 1-1: Manufacturer: FTDI
[ 1920.284659] usb 1-1: SerialNumber: FT4TW3LE
[ 1920.290771] ftdi_sio 1-1:1.0: FTDI USB Serial Device converter detected
[ 1920.294102] usb 1-1: Detected FT232RL
[ 1920.302218] usb 1-1: FTDI USB Serial Device converter now attached to ttyUSB0
[ 1921.677956] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1921.678813] vhci_hcd: unlink->seqnum 88782
[ 1921.679423] vhci_hcd: the urb (seqnum 88782) was already given back
[ 1921.876417] vhci_hcd: unlink->seqnum 88820
[ 1921.879762] vhci_hcd: the urb (seqnum 88820) was already given back
[ 1921.881034] vhci_hcd: unlink->seqnum 88822
[ 1921.882547] vhci_hcd: the urb (seqnum 88822) was already given back
[ 1922.043477] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1922.044895] vhci_hcd: unlink->seqnum 88857
[ 1922.047776] vhci_hcd: the urb (seqnum 88857) was already given back
[ 1922.198003] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1922.199267] vhci_hcd: unlink->seqnum 88892
[ 1922.201613] vhci_hcd: the urb (seqnum 88892) was already given back
[ 1922.347202] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1922.348165] vhci_hcd: unlink->seqnum 88926
[ 1922.348714] vhci_hcd: the urb (seqnum 88926) was already given back
[ 1922.499077] vhci_hcd: unlink->seqnum 88960
[ 1922.501091] vhci_hcd: the urb (seqnum 88960) was already given back
[ 1922.502717] vhci_hcd: unlink->seqnum 88962
[ 1922.503551] vhci_hcd: the urb (seqnum 88962) was already given back
[ 1923.072953] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1923.073985] vhci_hcd: unlink->seqnum 89043
[ 1923.074516] vhci_hcd: the urb (seqnum 89043) was already given back
[ 1923.635175] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1923.636452] vhci_hcd: unlink->seqnum 89124
[ 1923.639462] vhci_hcd: the urb (seqnum 89124) was already given back
[ 1925.988300] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1925.989173] vhci_hcd: unlink->seqnum 89294
[ 1925.989803] vhci_hcd: the urb (seqnum 89294) was already given back
[ 1926.134048] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1926.135052] vhci_hcd: unlink->seqnum 89463
[ 1926.135819] vhci_hcd: the urb (seqnum 89463) was already given back
[ 1926.278682] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1926.279729] vhci_hcd: unlink->seqnum 89630
[ 1926.280229] vhci_hcd: the urb (seqnum 89630) was already given back
[ 1926.421818] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1926.422654] vhci_hcd: unlink->seqnum 89795
[ 1926.423078] vhci_hcd: the urb (seqnum 89795) was already given back
[ 1926.564779] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1926.565697] vhci_hcd: unlink->seqnum 89960
[ 1926.566098] vhci_hcd: the urb (seqnum 89960) was already given back
[ 1926.708525] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1926.709465] vhci_hcd: unlink->seqnum 90126
[ 1926.709876] vhci_hcd: the urb (seqnum 90126) was already given back
[ 1927.274337] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1927.275263] vhci_hcd: unlink->seqnum 90734
[ 1927.275660] vhci_hcd: the urb (seqnum 90734) was already given back
[ 1927.845187] vhci_hcd: unlink->seqnum 91344
[ 1927.850883] vhci_hcd: the urb (seqnum 91344) was already given back
[ 1927.851973] vhci_hcd: unlink->seqnum 91345
[ 1927.852996] vhci_hcd: the urb (seqnum 91345) was already given back
[ 1930.171018] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1930.171928] vhci_hcd: unlink->seqnum 91510
[ 1930.172363] vhci_hcd: the urb (seqnum 91510) was already given back
[ 1930.314139] vhci_hcd: unlink->seqnum 91677
[ 1930.314704] vhci_hcd: the urb (seqnum 91677) was already given back
[ 1930.315339] vhci_hcd: unlink->seqnum 91678
[ 1930.315820] vhci_hcd: the urb (seqnum 91678) was already given back
[ 1930.459077] vhci_hcd: unlink->seqnum 91844
[ 1930.459613] vhci_hcd: the urb (seqnum 91844) was already given back
[ 1930.460384] vhci_hcd: unlink->seqnum 91846
[ 1930.460758] vhci_hcd: the urb (seqnum 91846) was already given back
[ 1930.604012] vhci_hcd: unlink->seqnum 92012
[ 1930.604595] vhci_hcd: the urb (seqnum 92012) was already given back
[ 1930.605499] vhci_hcd: unlink->seqnum 92014
[ 1930.605943] vhci_hcd: the urb (seqnum 92014) was already given back
[ 1930.749651] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1930.750537] vhci_hcd: unlink->seqnum 92180
[ 1930.750994] vhci_hcd: the urb (seqnum 92180) was already given back
[ 1930.892499] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1930.893423] vhci_hcd: unlink->seqnum 92342
[ 1930.893815] vhci_hcd: the urb (seqnum 92342) was already given back
[ 1931.450515] vhci_hcd: unlink->seqnum 92942
[ 1931.451036] vhci_hcd: the urb (seqnum 92942) was already given back
[ 1931.451855] vhci_hcd: unlink->seqnum 92943
[ 1931.452310] vhci_hcd: the urb (seqnum 92943) was already given back
[ 1932.005934] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1932.007079] vhci_hcd: unlink->seqnum 93538
[ 1932.008051] vhci_hcd: the urb (seqnum 93538) was already given back
[ 1934.344638] vhci_hcd: unlink->seqnum 93705
[ 1934.345318] vhci_hcd: the urb (seqnum 93705) was already given back
[ 1934.346020] vhci_hcd: unlink->seqnum 93707
[ 1934.346914] vhci_hcd: the urb (seqnum 93707) was already given back
[ 1934.492421] vhci_hcd: unlink->seqnum 93877
[ 1934.493007] vhci_hcd: the urb (seqnum 93877) was already given back
[ 1934.493725] vhci_hcd: unlink->seqnum 93879
[ 1934.494085] vhci_hcd: the urb (seqnum 93879) was already given back
[ 1934.635685] vhci_hcd: unlink->seqnum 94043
[ 1934.636305] vhci_hcd: the urb (seqnum 94043) was already given back
[ 1934.637020] vhci_hcd: unlink->seqnum 94045
[ 1934.637408] vhci_hcd: the urb (seqnum 94045) was already given back
[ 1934.781906] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1934.782873] vhci_hcd: unlink->seqnum 94212
[ 1934.783484] vhci_hcd: the urb (seqnum 94212) was already given back
[ 1934.928139] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1934.929093] vhci_hcd: unlink->seqnum 94374
[ 1934.929506] vhci_hcd: the urb (seqnum 94374) was already given back
[ 1935.072487] vhci_hcd: unlink->seqnum 94540
[ 1935.073073] vhci_hcd: the urb (seqnum 94540) was already given back
[ 1935.073747] vhci_hcd: unlink->seqnum 94542
[ 1935.074123] vhci_hcd: the urb (seqnum 94542) was already given back
[ 1935.636666] vhci_hcd: unlink->seqnum 95136
[ 1935.637325] vhci_hcd: the urb (seqnum 95136) was already given back
[ 1935.638064] vhci_hcd: unlink->seqnum 95137
[ 1935.638408] vhci_hcd: the urb (seqnum 95137) was already given back
[ 1936.206561] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1936.207426] vhci_hcd: unlink->seqnum 95734
[ 1936.207861] vhci_hcd: the urb (seqnum 95734) was already given back
[ 1938.546194] vhci_hcd: unlink->seqnum 95901
[ 1938.547045] vhci_hcd: the urb (seqnum 95901) was already given back
[ 1938.547876] vhci_hcd: unlink->seqnum 95902
[ 1938.548267] vhci_hcd: the urb (seqnum 95902) was already given back
[ 1938.693577] vhci_hcd: unlink->seqnum 96071
[ 1938.694092] vhci_hcd: the urb (seqnum 96071) was already given back
[ 1938.835928] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1938.836732] vhci_hcd: unlink->seqnum 96236
[ 1938.837195] vhci_hcd: the urb (seqnum 96236) was already given back
[ 1938.987705] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1938.988677] vhci_hcd: unlink->seqnum 96353
[ 1938.989499] vhci_hcd: the urb (seqnum 96353) was already given back
[ 1939.135970] vhci_hcd: unlink->seqnum 96522
[ 1939.136689] vhci_hcd: the urb (seqnum 96522) was already given back
[ 1939.137357] vhci_hcd: unlink->seqnum 96523
[ 1939.137810] vhci_hcd: the urb (seqnum 96523) was already given back
[ 1939.281588] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1939.282484] vhci_hcd: unlink->seqnum 96689
[ 1939.282888] vhci_hcd: the urb (seqnum 96689) was already given back
[ 1939.845544] vhci_hcd: unlink->seqnum 97291
[ 1939.846182] vhci_hcd: the urb (seqnum 97291) was already given back
[ 1939.846917] vhci_hcd: unlink->seqnum 97292
[ 1939.847364] vhci_hcd: the urb (seqnum 97292) was already given back
[ 1940.417903] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1940.418750] vhci_hcd: unlink->seqnum 97899
[ 1940.419149] vhci_hcd: the urb (seqnum 97899) was already given back
[ 1942.755591] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1942.756589] vhci_hcd: unlink->seqnum 98066
[ 1942.757790] vhci_hcd: the urb (seqnum 98066) was already given back
[ 1942.911059] vhci_hcd: unlink->seqnum 98221
[ 1942.922839] vhci_hcd: the urb (seqnum 98221) was already given back
[ 1942.924368] vhci_hcd: unlink->seqnum 98222
[ 1942.925054] vhci_hcd: the urb (seqnum 98222) was already given back
[ 1943.070474] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1943.071268] vhci_hcd: unlink->seqnum 98389
[ 1943.071663] vhci_hcd: the urb (seqnum 98389) was already given back
[ 1943.214148] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1943.215327] vhci_hcd: unlink->seqnum 98555
[ 1943.216018] vhci_hcd: the urb (seqnum 98555) was already given back
[ 1943.357497] vhci_hcd: unlink->seqnum 98720
[ 1943.358063] vhci_hcd: the urb (seqnum 98720) was already given back
[ 1943.358735] vhci_hcd: unlink->seqnum 98721
[ 1943.359371] vhci_hcd: the urb (seqnum 98721) was already given back
[ 1943.500841] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1943.501779] vhci_hcd: unlink->seqnum 98886
[ 1943.502181] vhci_hcd: the urb (seqnum 98886) was already given back
[ 1944.063008] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1944.064232] vhci_hcd: unlink->seqnum 99489
[ 1944.064739] vhci_hcd: the urb (seqnum 99489) was already given back
[ 1944.632563] vhci_hcd: unlink->seqnum 100100
[ 1944.633273] vhci_hcd: the urb (seqnum 100100) was already given back
[ 1944.634220] vhci_hcd: unlink->seqnum 100102
[ 1944.634954] vhci_hcd: the urb (seqnum 100102) was already given back
[ 1946.987708] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1946.988507] vhci_hcd: unlink->seqnum 100265
[ 1946.988882] vhci_hcd: the urb (seqnum 100265) was already given back
[ 1947.131863] vhci_hcd: unlink->seqnum 100433
[ 1947.132557] vhci_hcd: the urb (seqnum 100433) was already given back
[ 1947.133420] vhci_hcd: unlink->seqnum 100435
[ 1947.133848] vhci_hcd: the urb (seqnum 100435) was already given back
[ 1947.277502] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1947.278353] vhci_hcd: unlink->seqnum 100601
[ 1947.278806] vhci_hcd: the urb (seqnum 100601) was already given back
[ 1947.421364] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1947.422139] vhci_hcd: unlink->seqnum 100766
[ 1947.422522] vhci_hcd: the urb (seqnum 100766) was already given back
[ 1947.564322] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1947.565243] vhci_hcd: unlink->seqnum 100931
[ 1947.565648] vhci_hcd: the urb (seqnum 100931) was already given back
[ 1947.708369] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1947.709290] vhci_hcd: unlink->seqnum 101096
[ 1947.709646] vhci_hcd: the urb (seqnum 101096) was already given back
[ 1948.271305] vhci_hcd: unlink->seqnum 101700
[ 1948.271907] vhci_hcd: the urb (seqnum 101700) was already given back
[ 1948.272566] vhci_hcd: unlink->seqnum 101701
[ 1948.272967] vhci_hcd: the urb (seqnum 101701) was already given back
[ 1948.836005] vhci_hcd: unlink->seqnum 102308
[ 1948.836530] vhci_hcd: the urb (seqnum 102308) was already given back
[ 1948.837297] vhci_hcd: unlink->seqnum 102310
[ 1948.837803] vhci_hcd: the urb (seqnum 102310) was already given back
[ 1951.221720] vhci_hcd: unlink->seqnum 102476
[ 1951.222227] vhci_hcd: the urb (seqnum 102476) was already given back
[ 1951.223094] vhci_hcd: unlink->seqnum 102478
[ 1951.223494] vhci_hcd: the urb (seqnum 102478) was already given back
[ 1951.366078] vhci_hcd: unlink->seqnum 102645
[ 1951.366657] vhci_hcd: the urb (seqnum 102645) was already given back
[ 1951.507570] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1951.508420] vhci_hcd: unlink->seqnum 102809
[ 1951.508825] vhci_hcd: the urb (seqnum 102809) was already given back
[ 1951.649614] vhci_hcd: unlink->seqnum 102972
[ 1951.650215] vhci_hcd: the urb (seqnum 102972) was already given back
[ 1951.650835] vhci_hcd: unlink->seqnum 102973
[ 1951.651252] vhci_hcd: the urb (seqnum 102973) was already given back
[ 1951.793651] vhci_hcd: unlink->seqnum 103135
[ 1951.794324] vhci_hcd: the urb (seqnum 103135) was already given back
[ 1951.795432] vhci_hcd: unlink->seqnum 103137
[ 1951.795971] vhci_hcd: the urb (seqnum 103137) was already given back
[ 1951.945607] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1951.946650] vhci_hcd: unlink->seqnum 103266
[ 1951.947846] vhci_hcd: the urb (seqnum 103266) was already given back
[ 1952.526231] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1952.527052] vhci_hcd: unlink->seqnum 103855
[ 1952.527565] vhci_hcd: the urb (seqnum 103855) was already given back
[ 1953.086825] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1953.087673] vhci_hcd: unlink->seqnum 104455
[ 1953.088135] vhci_hcd: the urb (seqnum 104455) was already given back
[ 1955.428797] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1955.429715] vhci_hcd: unlink->seqnum 104623
[ 1955.430191] vhci_hcd: the urb (seqnum 104623) was already given back
[ 1955.572786] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1955.573645] vhci_hcd: unlink->seqnum 104791
[ 1955.574106] vhci_hcd: the urb (seqnum 104791) was already given back
[ 1955.716720] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1955.717641] vhci_hcd: unlink->seqnum 104957
[ 1955.718139] vhci_hcd: the urb (seqnum 104957) was already given back
[ 1955.862343] vhci_hcd: unlink->seqnum 105123
[ 1955.862955] vhci_hcd: the urb (seqnum 105123) was already given back
[ 1955.863721] vhci_hcd: unlink->seqnum 105125
[ 1955.864233] vhci_hcd: the urb (seqnum 105125) was already given back
[ 1956.025327] vhci_hcd: unlink->seqnum 105299
[ 1956.025921] vhci_hcd: the urb (seqnum 105299) was already given back
[ 1956.026807] vhci_hcd: unlink->seqnum 105301
[ 1956.027397] vhci_hcd: the urb (seqnum 105301) was already given back
[ 1956.168997] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1956.169933] vhci_hcd: unlink->seqnum 105466
[ 1956.170407] vhci_hcd: the urb (seqnum 105466) was already given back
[ 1956.730264] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 1956.731121] vhci_hcd: unlink->seqnum 106071
[ 1956.731612] vhci_hcd: the urb (seqnum 106071) was already given back#process4 output
Every 2.0s: python /data/voxl-esc-add-new-params/voxl-esc-tools/voxl-esc-scan.py --enable-debug 1 PW-CONTROL07: Wed Jun 21 17:11:43 2023
Detected Python version : 3.8.0 (default, Jun 18 2023, 12:37:59)
[GCC 11.3.0]
Found voxl-esc tools bin version: 1.2
INFO: All COM ports:
/dev/ttyUSB0 : TTL232RG-VREG3V3 - TTL232RG-VREG3V3
INFO: UART Port Candidates:
/dev/ttyUSB0
INFO: Scanning for ESC firmware: /dev/ttyUSB0, baud: 2000000
UART TX: AF 06 00 00 91 C1
UART TX: AF 06 18 00 9B C1
UART TX: AF 06 00 01 50 01
UART TX: AF 06 18 01 5A 01
UART TX: AF 06 00 02 10 00
UART TX: AF 06 18 02 1A 00
UART TX: AF 06 00 03 D1 C0
UART TX: AF 06 18 03 DB C0
INFO: Scanning for ESC firmware: /dev/ttyUSB0, baud: 250000
UART TX: AF 06 00 00 91 C1
UART TX: AF 06 18 00 9B C1
UART TX: AF 06 00 01 50 01
UART TX: AF 06 18 01 5A 01
UART TX: AF 06 00 02 10 00
UART TX: AF 06 18 02 1A 00
UART TX: AF 06 00 03 D1 C0
UART TX: AF 06 18 03 DB C0
INFO: Scanning for ESC firmware: /dev/ttyUSB0, baud: 921600
UART TX: AF 06 00 00 91 C1
UART TX: AF 06 18 00 9B C1
UART TX: AF 06 00 01 50 01
UART TX: AF 06 18 01 5A 01
UART TX: AF 06 00 02 10 00
UART TX: AF 06 18 02 1A 00
UART TX: AF 06 00 03 D1 C0
UART TX: AF 06 18 03 DB C0
INFO: Scanning for ESC firmware: /dev/ttyUSB0, baud: 230400
UART TX: AF 06 00 00 91 C1
UART TX: AF 06 18 00 9B C1
UART TX: AF 06 00 01 50 01
UART TX: AF 06 18 01 5A 01
UART TX: AF 06 00 02 10 00
UART TX: AF 06 18 02 1A 00
UART TX: AF 06 00 03 D1 C0
UART TX: AF 06 18 03 DB C0
INFO: Scanning for ESC firmware: /dev/ttyUSB0, baud: 57600
UART TX: AF 06 00 00 91 C1
UART TX: AF 06 18 00 9B C1
UART TX: AF 06 00 01 50 01
UART TX: AF 06 18 01 5A 01
UART TX: AF 06 00 02 10 00
UART TX: AF 06 18 02 1A 00
UART TX: AF 06 00 03 D1 C0
UART TX: AF 06 18 03 DB C0
INFO: Scanning for ESC firmware: /dev/ttyUSB0, baud: 115200
UART TX: AF 06 00 00 91 C1
UART TX: AF 06 18 00 9B C1
UART TX: AF 06 00 01 50 01
UART TX: AF 06 18 01 5A 01
UART TX: AF 06 00 02 10 00
UART TX: AF 06 18 02 1A 00
UART TX: AF 06 00 03 D1 C0
UART TX: AF 06 18 03 DB C0
INFO: Scanning for ESC bootloader: /dev/ttyUSB0, baud: 38400
UART TX: AF 06 00 00 91 C1
UART TX: AF 06 18 00 9B C1
UART TX: AF 06 00 01 50 01
UART TX: AF 06 18 01 5A 01
UART TX: AF 06 00 02 10 00
UART TX: AF 06 18 02 1A 00
UART TX: AF 06 00 03 D1 C0
UART TX: AF 06 18 03 DB C0
UART TX: FA FA 00 05 64 32 3E 65 1A
UART TX: FA FA 00 05 64 32 3E 65 1A
UART TX: FA FA 00 05 64 32 3E 65 1A
UART TX: FA FA 00 05 64 32 3E 65 1A
UART TX: FA FA 00 05 64 32 3E 65 1A
UART TX: FA FA 00 05 65 B5 92 BD 1B
UART TX: FA FA 00 05 65 B5 92 BD 1B
UART TX: FA FA 00 05 65 B5 92 BD 1B
UART TX: FA FA 00 05 65 B5 92 BD 1B
UART TX: FA FA 00 05 65 B5 92 BD 1B
UART TX: FA FA 00 05 66 3C 67 D4 19 -
@ErezI sorry i missed your earlier message. Please email me at akushley @ modalai . com and we will discuss via email. No need to re-send the previous information. Thank you.
-
@Alex-Kushleyev
OK
Thanks -
Hi Alex
When we try to verify or update ESC params (xml file) to the F5A esc,
we get the following error:data/voxl-esc-add-new-params/voxl-esc-tools$ sudo ./voxl-esc-verify-params.py
Detected Python version : 3.8.10 (default, May 26 2023, 14:05:08)
[GCC 9.4.0]
Found voxl-esc tools bin version: 1.2
INFO: All COM ports:
/dev/ttyS4 : n/a
/dev/ttyUSB0 : TTL232R
INFO: UART Port Candidates:
/dev/ttyUSB0
Found previous connection information in .voxl_esc_cache ..
Prioritizing /dev/ttyUSB0 @ 2000000
INFO: Scanning for ESC firmware: /dev/ttyUSB0, baud: 2000000
INFO: ESC(s) detected on port: /dev/ttyUSB0, baud rate: 2000000
Exception in thread uartserial:
Traceback (most recent call last):
File "/usr/lib/python3.8/threading.py", line 932, in _bootstrap_inner
self.run()
File "./tmp/voxl-esc-tools-bin-export-1.2/libesc/uarttransceiver.py", line 100, in run
File "./tmp/voxl-esc-tools-bin-export-1.2/libesc/escmanager.py", line 135, in handle_packets
File "./tmp/voxl-esc-tools-bin-export-1.2/libesc/escmanager.py", line 270, in handle_config_data
File "./tmp/voxl-esc-tools-bin-export-1.2/libesc/esc.py", line 84, in set_params
File "./tmp/voxl-esc-tools-bin-export-1.2/libesc/params.py", line 268, in parse_params
File "./tmp/voxl-esc-tools-bin-export-1.2/libesc/params.py", line 394, in parse_tune_params
Exception: Tune length got: 136, expected: 180
Tune config CRC mismatch 42914 != 0
ERROR: Params for ID 0 are invalid!
ID config CRC mismatch 60163 != 0
ERROR: Params for ID 1 are invalid!
ID config CRC mismatch 60163 != 0
ERROR: Params for ID 2 are invalid!
ID config CRC mismatch 60163 != 0
ERROR: Params for ID 3 are invalid!
ERROR: Params from ID 0 and 1 are not the same
ERROR: Params from ID 0 and 2 are not the same
ERROR: Params from ID 0 and 3 are not the same
ERROR: Some params are invalid or not the same!
Number of ESCs expected : 4
Number of ESCs found : 4
Number of invalid params : 4
Number of matched params : 1
user@user-CF-54-3:/data/voxl-esc-add-new-params/voxl-esc-tools$[sudo] password for user:
Starting WizardWhat do you want to do?
- scan 3) spin 5) upload_params
- detect 4) upgrade_firmware
#? 5
Which ?
-
starling_v2 3) fpv_revB 5) MPD
-
sentinel_v1 4) starling_m129
#? 5
uploading params file ../voxl-esc-params/MPD/mpd_params.xml
enabling bridge
Failed to get unit file state for voxl-px4.service: No such file or directory
bridge enabled
Detected Python version : 3.8.10 (default, May 26 2023, 14:05:08)
[GCC 9.4.0]
Found voxl-esc tools bin version: 1.2
INFO: All COM ports:
/dev/ttyS4 : n/a
/dev/ttyUSB0 : TTL232R
INFO: UART Port Candidates:
/dev/ttyUSB0
Found previous connection information in .voxl_esc_cache ..
Prioritizing /dev/ttyUSB0 @ 2000000
INFO: Scanning for ESC firmware: /dev/ttyUSB0, baud: 2000000
INFO: ESC(s) detected on port: /dev/ttyUSB0, baud rate: 2000000
INFO: Detected protocol: firmware
INFO: Additional Information:
INFO: ---------------------
ID : 0
Board : version 33: Blheli32 4-in-1 ESC Type B (Tmotor F55A PRO G071)
UID : 0x203135385631500200730034
Firmware : version 37, hash ba6d193a*
Bootloader : version 0, hash 7a01a780ID : 1
Board : version 33: Blheli32 4-in-1 ESC Type B (Tmotor F55A PRO G071)
UID : 0x203135385631500200320035
Firmware : version 37, hash ba6d193a*
Bootloader : version 0, hash 7a01a780ID : 2
Board : version 33: Blheli32 4-in-1 ESC Type B (Tmotor F55A PRO G071)
UID : 0x203135385631500200340033
Firmware : version 37, hash ba6d193a*
Bootloader : version 0, hash 7a01a780ID : 3
Board : version 33: Blheli32 4-in-1 ESC Type B (Tmotor F55A PRO G071)
UID : 0x203135385631500200710034
Firmware : version 37, hash ba6d193a*
Bootloader : version 0, hash 7a01a780
successfully pinged ESCs
Detected Python version : 3.8.10 (default, May 26 2023, 14:05:08)
[GCC 9.4.0]
Found voxl-esc tools bin version: 1.2INFO: Params file name : ../voxl-esc-params/MPD/mpd_params.xml
INFO: Params file size : 6959 bytesINFO: All COM ports:
/dev/ttyS4 : n/a
/dev/ttyUSB0 : TTL232R
INFO: UART Port Candidates:
/dev/ttyUSB0
Found previous connection information in .voxl_esc_cache ..
Prioritizing /dev/ttyUSB0 @ 2000000
INFO: Scanning for ESC firmware: /dev/ttyUSB0, baud: 2000000
INFO: ESC(s) detected on port: /dev/ttyUSB0, baud rate: 2000000
INFO: ESCs detected:
INFO: ---------------------
ID: 0, SW: 37, HW: 33: Blheli32 4-in-1 ESC Type B (Tmotor F55A PRO G071)
ID: 1, SW: 37, HW: 33: Blheli32 4-in-1 ESC Type B (Tmotor F55A PRO G071)
ID: 2, SW: 37, HW: 33: Blheli32 4-in-1 ESC Type B (Tmotor F55A PRO G071)
ID: 3, SW: 37, HW: 33: Blheli32 4-in-1 ESC Type B (Tmotor F55A PRO G071)INFO: Loading XML config file...
Traceback (most recent call last):
File "voxl-esc-upload-params.py", line 114, in <module>
esc.params.parse_xml_string( xml_string )
File "./tmp/voxl-esc-tools-bin-export-1.2/libesc/params.py", line 518, in parse_xml_string
File "./tmp/voxl-esc-tools-bin-export-1.2/libesc/params.py", line 935, in set_packet_metadata
File "./tmp/voxl-esc-tools-bin-export-1.2/libesc/params.py", line 249, in update_crc
File "./tmp/voxl-esc-tools-bin-export-1.2/libesc/params.py", line 165, in get_param_bytes_for_crc
File "./tmp/voxl-esc-tools-bin-export-1.2/libesc/params.py", line 85, in byteify
struct.error: pack expected 12 items for packing (got 4)
disabling bridge
bridge disabledwe use the following xml file for the f40 pro 2400kv:
sudo cat ./mpd_params.xml
<?xml version="1.0" encoding="UTF-8"?><!-- Copyright (c) 2020 ModalAI Inc.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:-
Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer. -
Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution. -
Neither the name of the copyright holder nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission. -
The Software is used solely in conjunction with devices provided by
ModalAI Inc.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.For a license to use on non-ModalAI hardware, please contact license@modalai.com -->
<EscParameters>
<IdParams>
<param name="id" value="127"/> <!-- 0-7 .. 127 means use hardware ID pins to read ID-->
<param name="dir" value="2"/> <!-- 0=fwd, 1=rev, 2=fwd id-based, 3=rev id-based -->
</IdParams><BoardParams>
<param name="id_map" value="[0, 1, 2, 3, 4, 5, 6, 7]"/> <!-- reserved for future use -->
<param name="vsense_scale" value="6.0"/> <!-- voltage_mv = adc_val_mv * vsense_mult / vsense_ div -->
<param name="isense_scale" value="18.25"/> <!-- Ima * 0.001 * 50 = Vmv, so mult is 1 / (0.001 * 50) = 20 . Note that actual gain is a bit off -->
<param name="isense_zero_mv" value="550"/> <!-- voltage offset of current sensor when current is zero (0.55V by design) -->
</BoardParams><UartParams>
<param name="protocol_version" value="2"/> <!-- reserved for future use -->
<param name="input_mode" value="0"/> <!-- reserved for future use -->
<param name="baud_rate" value="2000000"/> <!-- communication bit rate -->
<param name="char_timeout_ns" value="0"/> <!-- not used -->
<param name="cmd_timeout_ns" value="100000000"/> <!-- timeout for incoming commands before ESC will stop the motor -->
</UartParams><TuneParams>
<param name="pwm_frequency" value="48000"/> <!-- switching freqency of PWM signal going to motors. 24Khz and 48Khz are only options for now -->
<param name="vbat_nominal_mv" value="14800"/> <!-- used for sanity checking and limiting of voltage-dependent funcions -->
<param name="num_cycles_per_rev" value="7"/> <!-- number of pole pairs in the motor. used for converting electrical frequency to mechanical rpm -->
<param name="min_rpm" value="1000"/> <!-- minimum RPM that will be attempted, otherwise capped -->
<param name="max_rpm" value="25000"/> <!-- maximum RPM that will be attempted, otherwise capped -->
<param name="min_pwm" value="50"/> <!-- cap for minimum power to be ever applied. max is 999 -->
<param name="max_pwm" value="999"/> <!-- cap for maximum power to be ever applied. max is 999 -->
<param name="pwm_vs_rpm_curve_a0" value="870.0"/> <!-- this is actually motor_voltage vs rpm curve.. using legacy naming -->
<param name="pwm_vs_rpm_curve_a1" value="0.5"/> <!-- Emax RS1306 3300KV with tri-blade 3x3x3 -->
<param name="pwm_vs_rpm_curve_a2" value="3.0e-06"/>
<param name="kp" value="250"/> <!-- RPM controller proportional gain -->
<param name="ki" value="30"/> <!-- RPM controller proportional gain -->
<param name="max_kpe" value="300"/> <!-- maximum proportional erorr term (max is 999) -->
<param name="max_kie" value="100"/> <!-- maximum integral error term (max is 999) -->
<param name="max_rpm_delta" value="3000"/> <!-- cap for maximum rpm error used in RPM controller --><param name="alignment_time_ns" value="0"/> <param name="spinup_power" value="70"/> <!-- power used to give the motor initial kick (out of 999) --> <param name="latch_power" value="80"/> <!-- power used during latching stage of spin-up (out of 999)--> <param name="min_num_cross_for_closed_loop" value="50"/> <!-- exit latching mode of fixed power after this number of zero crossings --> <param name="brake_to_stop" value="0"/> <!-- apply brake when stopping motor (or not) --> <param name="stall_timeout_ns" value="20000000"/> <!-- after spin-up, if no zero crossing is not detected for this amount of time, motor is considered stalled --> <param name="require_reset_if_stalled" value="0"/> <!-- require sending an array of zero commands to reset before next spin-up, if motor stalled -->
<!-- <param name="tone_freqs_10hz" value="[200, 215, 225, 250]"/> --> <!-- 200 is 2000Hz, max 255 -->
<!-- <param name="tone_times_ms" value="[10, 10, 10, 10]"/> --> <!-- duration of each tone in units of 10 milli-seconds. Poor naming!!! -->
<param name="tone_powers" value="[100, 100, 100, 100]"/> <!-- max is 255 --><param name="dt_threshold_ns" value="150000"/> <!-- during start up, ignore inter-commutation times less than this val, probably noise --> <param name="max_dt_ns" value="2500000"/> <!-- min and max values for time between two commutations. these are used as caps --> <param name="min_dt_ns" value="10000"/> <param name="dt_bootstrap_ns" value="2000000"/> <!-- filter bootstrap value for commutation dt during start up --> <param name="spinup_stall_dt_ns" value="6000000"/> <!-- during spin-up, if no zero crossing is not detected for this amount of time, motor is considered stalled --> <param name="spinup_stall_check_ns" value="30000000"/> <!-- time after beginning of spinup to start checking for spinup stall --> <param name="timing_advance" value="0"/> <param name="sense_advance" value="0"/> <param name="demag_timing" value="0"/> <!-- unused -->
</TuneParams>
</EscParameters>Thanks,
Erez
-
We recently updated the parameter structure in the ESC params. The ESCs you have are using older params. If you wanted to verify or update those params, please use the following version of voxl-esc tools : https://gitlab.com/voxl-public/voxl-sdk/utilities/voxl-esc/-/tree/v1.1.1
If you want to use the latest params, a firmware update and param update is required.
You can use the latest voxl-esc tools : https://gitlab.com/voxl-public/voxl-sdk/utilities/voxl-esc/-/tree/v1.2.2update the firmware on all ESCs:
./voxl-esc-upload-firmware-all.sh firmware/modalai_esc_firmware_tmotor_f55a_revc_v0_38_9b6d54b6.bin
At this point the ESCs will make a sad tone because the params will be invalid. Now update the params to the latest default params for the tmotor ESC.
./voxl-esc-upload-params.py --params-file ../voxl-esc-params/FPV_RevB/FPV_RevB.xml
After this, you should have the ESC updated firmware and params to the latest. Next you can diff your desired params against the latest params you just loaded, and create a new version of your params.
I noticed that you have pretty high kp and ki values. If you are just starting out, i would suggest setting kp=0 and ki=0, this will result in performance close to a off-the-shelf ESC. having gains set too high could result in vibrations or motors heating up, it will require some more careful testing.
Additionally, i noticed that your tuning params do not have a lot of precision, which will result in incorrect curve. You should have at least 3 or preferably 6 decimal places for each of a0, a1, a2 to avoid any error. You can copy paste them directly from the calibration procedure.
<param name="pwm_vs_rpm_curve_a0" value="870.0"/>
<param name="pwm_vs_rpm_curve_a1" value="0.5"/>
<param name="pwm_vs_rpm_curve_a2" value="3.0e-06"/>Alex
-
Alex Hi
Thanks for your fast & supporting respond.
1.We got negative values for a0 (-500 to -1000) and not your recommended positive value
<param name="pwm_vs_rpm_curve_a0" value="870.0"/>
<param name="pwm_vs_rpm_curve_a1" value="0.5"/>
<param name="pwm_vs_rpm_curve_a2" value="3.0e-06"/>Should a0 be a negative value (-870) or a positive on (a correctness value?)?
2.We got different parameter values to the curves while running multiple calibration tests t
o the same ESCx-Motx couples,
and of course different values testing a different ESCx-Motx couples.What should be (how to choose/ calculate) the right a0,a1 & a2 values for the single uploaded parameters file (avg?)
Thanks Erez
ps
New voxl-esc-calibrate.py with a0-a2 inside the graphs and
created under the logs foldercat ./voxl-esc-calibrate2.py
Copyright (c) 2020 ModalAI Inc.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
4. The Software is used solely in conjunction with devices provided by
ModalAI Inc.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
For a license to use on non-ModalAI hardware, please contact license@modalai.com
from voxl_esc_setup_paths import *
voxl_esc_setup_paths()from libesc import *
from esc_scanner import EscScanner
import time
import numpy as np
import argparseparser = argparse.ArgumentParser(description='ESC Calibration Script')
parser.add_argument('--device', required=False, default=None)
parser.add_argument('--baud_rate', required=False, default=None)
parser.add_argument('--id', type=int, required=False, default=0)
parser.add_argument('--pwm-min', type=int, required=False, default=10)
parser.add_argument('--pwm-max', type=int, required=False, default=90)
parser.add_argument('--pwm-step', type=int, required=False, default=1)
parser.add_argument('--pwm-step-duration', type=float, required=False, default=0.5) #seconds
args = parser.parse_args()devpath = args.device
baudrate = args.baud_rate
esc_id = args.id
PWM_MIN = args.pwm_min
PWM_MAX = args.pwm_max
PWM_STEP = args.pwm_step
STEPDURATION = args.pwm_step_durationquick scan for ESCs to detect the port
scanner = EscScanner()
(devpath, baudrate) = scanner.scan(devpath, baudrate)if devpath is not None and baudrate is not None:
print('INFO: ESC(s) detected on port: ' + devpath + ', baud rate: ' + str(baudrate))
else:
print('ERROR: No ESC(s) detected, exiting.')
sys.exit(1)#check input arguments
if PWM_MIN < 10 or PWM_MIN > 50:
print('ERROR: Minimum power must be between 10 and 50')
sys.exit(1)if PWM_MAX < 10 or PWM_MAX > 100:
print('ERROR: Maximum power must be between 10 and 100')
sys.exit(1)if PWM_MAX < PWM_MIN:
print('ERROR: Maximum power must be greater than minimum power')
sys.exit(1)TRANSITIONTIME = 0.40
create ESC manager and search for ESCs
try:
esc_manager = EscManager()
esc_manager.open(devpath, baudrate)
except Exception as e:
print('ERROR: Unable to connect to ESCs :')
print(e)
sys.exit(1)wait a little to let manager find all ESCs
time.sleep(0.25)
num_escs = len(esc_manager.get_escs())
if num_escs < 1:
print('ERROR: No ESCs detected--exiting.')
sys.exit(1)esc = esc_manager.get_esc_by_id(esc_id)
if esc is None:
print('ERROR: Specified ESC ID not found--exiting.')
sys.exit(1)warn user
print('WARNING: ')
print('This test requires motors to spin at high speeds with')
print('propellers attached. Please ensure that appropriate')
print('protective equipment is being worn at all times and')
print('that the motor and propeller are adequately isolated')
print('from all persons.')
print('')
print('For best results, please perform this test at the')
print('nominal voltage for the battery used.')
print('')
response = input('Type "Yes" to continue: ')
if response not in ['yes', 'Yes', 'YES']:
print('Test canceled by user')
sys.exit(1)get ESC software version. sw_version < 20 means gen1 ESC, otherwise gen2
sw_version = esc.get_versions()[0]
esc_manager.enable_protocol_logging()
spin up
esc_manager.set_highspeed_fb(esc_id) #tell ESC manager to only request feedback from this ID (so we get feedback 4x more often)
esc.set_target_power(10)
t_start = time.time()
while time.time() - t_start < 1.0:
time.sleep(0.05)
esc_manager.send_pwm_targets()measurements = []
t_test_start= time.time()ramp up from min to max
pwm_now = PWM_MIN #10
while pwm_now <= PWM_MAX:
esc.set_target_power(pwm_now)
t_start = time.time()
print('')
while time.time() - t_start < STEPDURATION:
time.sleep(0.01)
esc_manager.send_pwm_targets()
if pwm_now >= PWM_MIN and time.time() - t_start >= TRANSITIONTIME:
measurements.append(
[esc.get_power(), esc.get_rpm(), esc.get_voltage(), esc.get_current()])
print('POW: %d, RPM: %.2f, Voltage: %.2fV, Current: %.2fA' % (esc.get_power(), esc.get_rpm(), esc.get_voltage(), esc.get_current()))
pwm_now += PWM_STEPclose the manager and UART thread
esc_manager.close()
t_test_stop= time.time()
print ('INFO: Test took %.2f seconds' % (t_test_stop-t_test_start))#d_date=datetime.datetime.now()
d_date="{:%Y%m%d-%H%M%S}".format(datetime.now())
print ("date="+str(d_date))parse measurements
pwms = [data[0] for data in measurements]
rpms = [data[1] for data in measurements]
voltages = [data[2] for data in measurements]
currents = [data[3] for data in measurements]#reported power is 0-100, but in ESC firmware it is 0-1000
motor_voltages = [pwms[i]10.0/999.0(voltages[i]*1000) for i in range(len(pwms))]linear fit or quadratic fit
ply = np.polyfit(rpms, motor_voltages, 2)
motor_voltages_fit = np.polyval(ply, rpms)print corresponding params
print('Quadratic fit: motor_voltage = a2rpm_desired^2 + a1rpm_desired + a0')
print(' a0 = ' + str(ply[2]))
print(' a1 = ' + str(ply[1]))
print(' a2 = ' + str(ply[0]))
print('ESC Params (after scaling):')
print(' pwm_vs_rpm_curve_a0 = ' + str(ply[2]))
print(' pwm_vs_rpm_curve_a1 = ' + str(ply[1]))
print(' pwm_vs_rpm_curve_a2 = ' + str(ply[0]))plot results if possible
try:
import matplotlib.pyplot as plt
except:
print('WARNING: In order to plot the results, install the Python "matplotlib" module')
sys.exit(0)plot the results
plt.plot(rpms, motor_voltages, 'bo')
plt.tight_layout()
plt.plot(rpms, motor_voltages_fit)
print ('Motor Voltage vs. RPM Test')
plt.xlabel('Measured RPM')
plt.ylabel('Commanded Motor Voltage (mV)')
plt.title('Motor Voltage vs. RPM Test')
plt.legend(['Data', 'Fit'], loc=2)
plt.ylim([0, np.max(motor_voltages)+1000])
plt.tight_layout()
print ('Motor Voltage vs. RPM Test')
plt.tight_layout()plot corresponding params
plt.figtext(0.5, 0.01, "Quadratic fit: motor_voltage = a2rpm_desired^2 + a1rpm_desired + a0", ha="center", fontsize=10, bbox={"facecolor":"orange", "alpha":0.5, "pad":5})
plt.figtext(0.2, 0.97, 'a0=%.8f' % ply[2], ha="center", fontsize=10, bbox={"facecolor":"green", "alpha":0.5, "pad":5})
plt.figtext(0.5, 0.97, 'a1=%.8f' % ply[1], ha="center", fontsize=10, bbox={"facecolor":"green", "alpha":0.5, "pad":5})
plt.figtext(0.8, 0.97, 'a2=%.8f' % ply[0], ha="center", fontsize=10, bbox={"facecolor":"green", "alpha":0.5, "pad":5})
plt.tight_layout()plt.savefig('./logs/'+str(d_date)+'ESC#'+str(esc_id)+'_Volt_vs_RPM.jpg',bbox_inches='tight')
#time.sleep(2)plt.figure()
plt.plot(pwms, rpms, 'bo')
print ('RMP vs. PWM Test')
plt.xlabel('Commanded PWM (x/100)')
plt.ylabel('Measured RPM')
plt.title('RPM vs. PWM Test')
plt.tight_layout()plot corresponding params
plt.figtext(0.5, 0.01, "ESC Params (after scaling):", ha="center", fontsize=10, bbox={"facecolor":"orange", "alpha":0.5, "pad":5})
plt.figtext(0.3, 0.97, 'a0=%.8f' % ply[2], ha="center", fontsize=10, bbox={"facecolor":"yellow", "alpha":0.5, "pad":5})
plt.figtext(0.6, 0.97, 'a1=%.8f' % ply[1], ha="center", fontsize=10, bbox={"facecolor":"yellow", "alpha":0.5, "pad":5})
plt.figtext(0.9, 0.97, 'a2=%.8f' % ply[0], ha="center", fontsize=10, bbox={"facecolor":"yellow", "alpha":0.5, "pad":5})plt.savefig('./logs/'+str(d_date)+'ESC#'+str(esc_id)+'_RPM_vs_PWM.jpg',bbox_inches='tight')
plt.show()
plt.close() -
Hi Alex,
I replaced the F55A ESCs firmware from version 33 to version 38
(modalai_esc_firmware_tmotor_f55a_revc_v0_38_9b6d54b6.bin),
and used he new code version (v1.2.2) &
also used the new XML file (FPV_RevB.xml renamed to mpd_params.xml)
but I got the same errors:user@user-CF-54-3:/data/voxl-esc-v1.2.2/voxl-esc-tools$ sudo python3 ./voxl-esc-upload-params.py --params-file ../../voxl-esc-add-new-params/voxl-esc-params/MPD/mpd_params.xml
Detected Python version : 3.8.10 (default, May 26 2023, 14:05:08)
[GCC 9.4.0]
Found voxl-esc tools bin version: 1.2INFO: Params file name : ../../voxl-esc-add-new-params/voxl-esc-params/MPD/mpd_params.xml
INFO: Params file size : 6835 bytesINFO: All COM ports:
/dev/ttyS4 : n/a
/dev/ttyUSB0 : TTL232R
INFO: UART Port Candidates:
/dev/ttyUSB0
INFO: Scanning for ESC firmware: /dev/ttyUSB0, baud: 2000000
INFO: Scanning for ESC firmware: /dev/ttyUSB0, baud: 250000
INFO: Scanning for ESC firmware: /dev/ttyUSB0, baud: 921600
INFO: Scanning for ESC firmware: /dev/ttyUSB0, baud: 230400
INFO: Scanning for ESC firmware: /dev/ttyUSB0, baud: 57600
INFO: ESC(s) detected on port: /dev/ttyUSB0, baud rate: 57600
INFO: ESCs detected:
INFO: ---------------------
ID: 0, SW: 38, HW: 33: Blheli32 4-in-1 ESC Type B (Tmotor F55A PRO G071)
ID: 1, SW: 38, HW: 33: Blheli32 4-in-1 ESC Type B (Tmotor F55A PRO G071)
ID: 2, SW: 38, HW: 33: Blheli32 4-in-1 ESC Type B (Tmotor F55A PRO G071)
ID: 3, SW: 38, HW: 33: Blheli32 4-in-1 ESC Type B (Tmotor F55A PRO G071)INFO: Loading XML config file...
WARNING: Tune Parameter "tone_freqs_10hz" incompatible
WARNING: Tune Parameter "tone_times_ms" incompatible
Traceback (most recent call last):
File "./voxl-esc-upload-params.py", line 124, in <module>
esc.params.parse_xml_string( xml_string )
File "./tmp/voxl-esc-tools-bin-export-1.2/libesc/params.py", line 518, in parse_xml_string
File "./tmp/voxl-esc-tools-bin-export-1.2/libesc/params.py", line 935, in set_packet_metadata
File "./tmp/voxl-esc-tools-bin-export-1.2/libesc/params.py", line 249, in update_crc
File "./tmp/voxl-esc-tools-bin-export-1.2/libesc/params.py", line 165, in get_param_bytes_for_crc
File "./tmp/voxl-esc-tools-bin-export-1.2/libesc/params.py", line 85, in byteify
struct.error: pack expected 12 items for packing (got 4)Erez
-
Alex,
more info
/data/voxl-esc-v1.2.2/voxl-esc-tools$ sudo ./voxl-esc-verify-params.py
Detected Python version : 3.8.10 (default, May 26 2023, 14:05:08)
[GCC 9.4.0]
Found voxl-esc tools bin version: 1.2
INFO: All COM ports:
/dev/ttyS4 : n/a
/dev/ttyUSB0 : TTL232R
INFO: UART Port Candidates:
/dev/ttyUSB0
Found previous connection information in .voxl_esc_cache ..
Prioritizing /dev/ttyUSB0 @ 57600
INFO: Scanning for ESC firmware: /dev/ttyUSB0, baud: 57600
INFO: ESC(s) detected on port: /dev/ttyUSB0, baud rate: 57600
ID config CRC mismatch 60163 != 0
ERROR: Params for ID 0 are invalid!
ID config CRC mismatch 60163 != 0
ERROR: Params for ID 1 are invalid!
ID config CRC mismatch 60163 != 0
ERROR: Params for ID 2 are invalid!
ID config CRC mismatch 60163 != 0
ERROR: Params for ID 3 are invalid!
ERROR: Some params are invalid or not the same!
Number of ESCs expected : 4
Number of ESCs found : 4
Number of invalid params : 4
Number of matched params : 4 -
Alex,
With the new file it works:
sudo python3 ./voxl-esc-upload-params.py --params-file ../voxl-esc-params/FPV_RevB/FPV_RevB.xml
Detected Python version : 3.8.10 (default, May 26 2023, 14:05:08)
[GCC 9.4.0]
Found voxl-esc tools bin version: 1.2INFO: Params file name : ../voxl-esc-params/FPV_RevB/FPV_RevB.xml
INFO: Params file size : 7663 bytesINFO: All COM ports:
/dev/ttyS4 : n/a
/dev/ttyUSB0 : TTL232R
INFO: UART Port Candidates:
/dev/ttyUSB0
Found previous connection information in .voxl_esc_cache ..
Prioritizing /dev/ttyUSB0 @ 57600
INFO: Scanning for ESC firmware: /dev/ttyUSB0, baud: 57600
INFO: ESC(s) detected on port: /dev/ttyUSB0, baud rate: 57600
INFO: ESCs detected:
INFO: ---------------------
ID: 0, SW: 38, HW: 33: Blheli32 4-in-1 ESC Type B (Tmotor F55A PRO G071)
ID: 1, SW: 38, HW: 33: Blheli32 4-in-1 ESC Type B (Tmotor F55A PRO G071)
ID: 2, SW: 38, HW: 33: Blheli32 4-in-1 ESC Type B (Tmotor F55A PRO G071)
ID: 3, SW: 38, HW: 33: Blheli32 4-in-1 ESC Type B (Tmotor F55A PRO G071)INFO: Loading XML config file...
INFO: Uploading params...
-- board config
-- id config
-- uart config
-- tune config
DONE
INFO: Resetting ESCs...
DONEI'll change the relevant parameters to fit our motor's type.
Thanks
Erez