First of all thanks a lot KartEck for responding back. Because of some people like you, we get to know the proper direction.
Back to the steps I followed after going through the forum updates.

Originally Posted by
KurtEck
Ability for Odroid to talk to Arbotix-pro (/dev/ttyUSB0)
a) Permissions: In order to talk to the Arbotix, I believe that the /dev/ttyUSB0 device will be created in the dialup group.
So I would make sure you are a member of the dialup group something like: sudo adduser odroid dialout
(assuming your user odroid)..
Ans: Checked in XU4 terminal ie.
Code:
$ sudo adduser odroid dialout
#The user `odroid' is already a member of `dialout'.
So I am in diaout group and you are correct in guessing my user is odroid. So that is not an issue.

Originally Posted by
KurtEck
Now getting it to properly talk. There were several conversations about some of earlier threads. But basically the communications are timing out, when trying to do read operations.
So, to have better luck with this, I had/have a version of the HROS1 framework that does a real logical flush output (tcdrain), which helped.
....
Anyway you might look at some of the things in some of the other forks of the framework. Like Renees (r3n33) or mine:
https://github.com/KurtE/HROS1-Frame...-other-devttys
Ans:
I saw your changes by comparing the main repo with yours. It looks nice the tcdrain part. So I decided to give a try after cloning your repo on XU4. Compiled darwin.a OK and compiled dxl_monitor.a OK.
Next I connected a 4 pin wire to Arbotix Pro parallel port next to micro USB port and through the USB breakout board with 4 pin female port added that to one of the 2 USB3 ports of XU4.
Unfortunately my noobness might not figure out some more so the result I received was somewhat improved but similar.
The scan on ./dxl_monitor is confused with the id value of AX12. When I am connecting a servo with ID 19 alone it mostly says 19 OK but some times a re scan says it is ID 20 / 21.
And with multiple AX12/AX18 servos connected it mostly fails to recognize the proper id for a servo.
Code:
[ID:200(ARBOTIX_PRO)] scan
Check ID:1(R_SHOULDER_PITCH) ... FAIL
Check ID:2(L_SHOULDER_PITCH) ... FAIL
Check ID:3(R_SHOULDER_ROLL) ... FAIL
Check ID:4(L_SHOULDER_ROLL) ... FAIL
Check ID:5(R_ELBOW) ... FAIL
Check ID:6(L_ELBOW) ... FAIL
Check ID:7(R_HIP_YAW) ... FAIL
Check ID:8(L_HIP_YAW) ... FAIL
Check ID:9(R_HIP_ROLL) ... FAIL
Check ID:10(L_HIP_ROLL) ... FAIL
Check ID:11(R_HIP_PITCH) ... FAIL
Check ID:12(L_HIP_PITCH) ... FAIL
Check ID:13(R_KNEE) ... FAIL
Check ID:14(L_KNEE) ... FAIL
Check ID:15(R_ANKLE_PITCH) ... FAIL
Check ID:16(L_ANKLE_PITCH) ... FAIL
Check ID:17(R_ANKLE_ROLL) ... FAIL
Check ID:18(L_ANKLE_ROLL) ... FAIL
Check ID:19(HEAD_PAN) ... OK
Check ID:20(HEAD_TILT) ... FAIL
Check ID:200(ARBOTIX_PRO) ... FAIL
Check ID:202(UNKNOWN) ... OK
On Fail
[ID:200(ARBOTIX_PRO)] scan
Check ID:1(R_SHOULDER_PITCH) ... FAIL
Check ID:2(L_SHOULDER_PITCH) ... FAIL
Check ID:3(R_SHOULDER_ROLL) ... FAIL
Check ID:4(L_SHOULDER_ROLL) ... FAIL
Check ID:5(R_ELBOW) ... FAIL
Check ID:6(L_ELBOW) ... FAIL
Check ID:7(R_HIP_YAW) ... FAIL
Check ID:8(L_HIP_YAW) ... FAIL
Check ID:9(R_HIP_ROLL) ... FAIL
Check ID:10(L_HIP_ROLL) ... FAIL
Check ID:11(R_HIP_PITCH) ... FAIL
Check ID:12(L_HIP_PITCH) ... FAIL
Check ID:13(R_KNEE) ... FAIL
Check ID:14(L_KNEE) ... FAIL
Check ID:15(R_ANKLE_PITCH) ... FAIL
Check ID:16(L_ANKLE_PITCH) ... FAIL
Check ID:17(R_ANKLE_ROLL) ... FAIL
Check ID:18(L_ANKLE_ROLL) ... FAIL
Check ID:19(HEAD_PAN) ... FAIL
Check ID:20(HEAD_TILT) ... FAIL
Check ID:21(UNKNOWN) ... OK
Check ID:200(ARBOTIX_PRO) ... OK
And if I try to talk to that servo it fails for sure.
Code:
[ID:200(ARBOTIX_PRO)] id 19
Invalid ID(19)!
[ID:200(ARBOTIX_PRO)]

Originally Posted by
KurtEck
a) Make sure that the calls to tcdrain were done as to force the output of the packet before it tries to get a response.
b) Find the timeouts and increase them.
Ans:
a> I hape this has been taken care of in @KartEck's HROS1-Framework repo, right?
b> How to increase timeouts, or has been taken care of in @KartEck's HROS1-Framework repo?

Originally Posted by
KurtEck
d) I punted using USB... That is I instead used a hardware Serial port on the ODroid (likewise could be for RPI), to talk to a USART on Arbotix Pro. I had a WIP version of the firmware for Arbotix-pro (
https://github.com/KurtE/ArbotixPro/...usart2-talk-pc), that allowed me to talk to using the UARTS... I also updated the framework:
https://github.com/KurtE/HROS1-Frame...-other-devttys
To allow this. The framework would look for the logical device: /dev/ttyDXL and if found would use it. This could be setup to be a link the the hardware serial port (either manually or using udev rules).
One main problem with d) is that in order to reprogram the Arbotix-Pro, you need to spend another $50 to get a programmer setup:
http://www.trossenrobotics.com/pro-programming-kit . Also if you have one of the original HROS1 kits, the Arbotix Pro did not have easy to install programmer pins, so you might need to build a simple programmer adapter... I think is in the Arbotix-pro github... But again warning, last time I touched any of this was two years ago!
With RPI and maybe Odroid, I know with at least hexapod, that some had better luck when they installed a real time kernel... So you might search for that thread.
Ans: d> Do you @KartEck think that I need to get the programmer and re flash Arbotix Pro with your frimwire?
In this case I have to order it and will take some time to reach for sure.
By this time as you also prefer Teensy 3.6 can I make use of it?
I must confess that I am little noob in porting Arbotix Or Teensy with XU4. But definitely wanted to give any possible try.
I feel Teensy 3.6 will be faster in communicating with Dynamixel AX12/18 than Arbotix Pro.
Any step by step guide for Odroid XU4/ Teensy/ AX12 will be superb help.
Again Thanks KurtEck for your time.
NicoX
Bookmarks