...
POST No. 2406802
MX-64T with OpenCM 9.04 + 485 Exp Board
2018-05-14 10:17:31 digiware

Hi, does MX-64T need special library to make it can works together with OpenCM 9.04 + OpenCM 485 Expansion Board?
Because MX-64T can't move to goal position when i'm using programmed OpenCM 9.04 + OpenCM 485 Expansion Board, while AX-12 can working well in this case.

1. I've flashed "a_DXL_Position" sketch from OpenCM IDE to OpenCM 9.04.
2. I can move MX-64T to goal position when i'm using USB2Dynamixel (via R+ Manager GUI) but it doesnt't works on OpenCM 9.04 + OpenCM 485 Expansion Board
3. I've make sure that the servo ID match with the program that i wrote.
4. On program, I choose DXL_BUS_SERIAL3 

Can you advise me about this? Thanks. 

2018-05-14 10:17:31
digiware
2018-05-14 11:23:42 Kurt

I know that @Will Son can/will probably give you some more definitive suggestions.


But If I were guessing, I would check to see if the Baud rate is correct.  That is I believe the AX12 default to 1mbs where I think the MX-64T default baud is 57600.


Also wondering if your servo is Protocol 1 or Protocol 2?  If protocol 2 than goal position registers  would be different.


I assume you have external power connected?




2018-05-14 11:23:42
Kurt
2018-05-14 12:27:54 DigiWare

Hi, thanks for your quick reply.


My servo ID is 001, and i set it correctly on my program.

I'm using MX-64T with 2.0 protocol.


I've tried your suggestion to change the baudrate from 1 Mbps to 57600 bps on OpenCM IDE sketch, but it still doesn't works. I got new error when changing the baudrate, the servo LED blinking continously. I've checked it on R+ manager, it indicate that MX-64T is getting over temperature. 

It very unusual, because current temperature is about 30 degree celcius. Actually the default temperature limit of MX-64T is 80 degree celsius, but i dont know why every time i change the baudrate, temperature limit automatically switched to 0 degree celsius so it makes my servo send over temperature error.

2018-05-14 12:27:54
DigiWare
2018-05-14 21:32:39 Kurt

Again I am probably missing some stuff,  but:


As I mentioned, if it is using protocol 2, than the Goal Position register (plus lots of other stuff) is different!.  You should look at the e-manual: http://emanual.robotis.com/docs/en/dxl/mx/mx-64-2/

Also you need to tell it that you are using Protocol 2.   That is you need to use the protocol2 packet handler:  I have test program that can read both:

So I have it do:

dynamixel::PacketHandler *packetHandler1;
dynamixel::PacketHandler *packetHandler2;
...

  packetHandler1 = dynamixel::PacketHandler::getPacketHandler(PROTOCOL_VERSION);
  packetHandler2 = dynamixel::PacketHandler::getPacketHandler(PROTOCOL_VERSION2);


Should also mention that OpenCM IDE is being replaced by installing Arduino and their board stuff into it..  If you have not already install Arduino I would do so:

http://emanual.robotis.com/docs/en/software/arduino_ide/


Then if you look at the examples installed, you will see a Protocol 1 example for the Dynamixel SDK and there are some others for the Dynamixel SDK for Protocol 2.

Take a look at those examples and see if any of them help you.


Good luck

2018-05-14 21:32:39
Kurt
2018-05-15 10:00:40 Will Son

Hello,


First of all, as Kurt mentioned, OpenCM IDE will not be updated anymore as we are moving onto Arduino IDE.

In order to use the latest Dynamixel SDK and support, please use Arduino IDE.

You can find the instruction in the eManual.

In the Arduino Example, please find read_write example as shown below and modify Control table address and Default settings for your Dynamixel setting based on the MX-64T protocol 2.0 control table.


 


 


You also need to modify the data size for Position as MX-64 protocol 2.0 use 4byte Position data as below


int32_t dxl_present_position = 0;               // Present position


// Write goal position

dxl_comm_result = packetHandler->write4ByteTxRx(portHandler, DXL_ID, ADDR_PRO_GOAL_POSITION, dxl_goal_position[index], &dxl_error);


// Read present position

dxl_comm_result = packetHandler->read4ByteTxRx(portHandler, DXL_ID, ADDR_PRO_PRESENT_POSITION, (uint32_t*)&dxl_present_position, &dxl_error);

2018-05-15 10:00:40
Will Son
2018-05-15 13:40:28 DigiWare

[SOLVED]


Hi, thank you for all of your advice. Now my MX-64T is working well.


Have a good day..

2018-05-15 13:40:28
DigiWare
Reply
웹에디터 시작 웹 에디터 끝