ESP32 + DXL Shield MKR Mashup in ARDUINO

Update 2/17/2023

I settled on a “wire-wrapping” solution, but I previously made the mistake of cutting the header pins on my ESP32 board TOO SHORT, so it was such a chore to perform the needed wire wrapping tasks. At the end, I had to JUMP the RX Pins using a 20 AWG wire from the TOP SIDE of my COMBO MODULE. See picture below:

WireWrappingSolution

If any reader wants to repeat this project, please keep the header pins at their regular lengths, so that you can feed them through a pre-perforated PCB and this will result in a better MODULE than mine :grimacing:. With this “wire-wrapping” approach, I do not get random DXL packet losses anymore.

So next, I set out to modify my previous single-core SyncReadWrite code into an “independent-core” code based on simple FreeRTOS TASKs. Essentially, let Core 0 do SyncReadWrite on DXLs 1 and 2 set in Position Control mode, and let Core 1 do SyncReadWrite on DXLs 11 and 12 set in Velocity Control mode. And WOW, it was so easy to use in ESP32: KUDOS to FreeRTOS. See my picture below and note the interleaving of the TASKs.

SyncReadWrite_IndependentCores

Although “physically” all 4 DXLs did their jobs as programmed, but Packet Error=128 always showed up. Maybe @willson or @Jonathon have some ideas on this issue.

If you already read my recent Arduino book or ran across my old post regarding Portenta H7 Lite, where I did not have such successes with Core M4 regarding SyncRead:

In conclusion, I have a suggestion for ROBOTIS to consider ( @Aaron ). On the next OpenRB Arduino variant board (may be OpenRB-200?), please combine an ESP32 and the DXL Shield Hardware into a single module with the MKR format (or may be a slightly bigger format). So far my “hacking” progresses have shown that this is a very feasible project! :grinning: