Source code for isaac.KayaBaseDriver

Hello Isaac Team,

I just finished building up my Kaya platform, very cool platform! I’m excited to get it running. Unfortunately I built the base around Dynamixel XL430-W250-T servos not the MX-12W. I modified the Kaya_Motor_Bottom_Plate to accept the XL430-W250-T. As expected the joystick application will not run and has the follow errors in the log:

2019-08-31 13:07:24.578 ERROR   packages/dynamixel/gems/dynamixel.cpp@33: Dynamixel error (-3001): [RxPacketError] Input voltage error!

I have verified the correct that the servos are powered correctly using dmx_monitor. So it is clear that I will need to modify the KayaBaseDriver to work correctly with my build. Where can I find the source to the isaac.KayaBaseDriver component?

Cheers,
Stephen

Hi Stephen,

That’s an awesome Kaya project! Happy to hear you’ve taken initiative to customize some of the physical parts.

We don’t currently provide source access for KayaBaseDriver. However, I’ve inquired about making this available.

Thanks!

Any progress on releasing the KayaBaseDriver?

Cheers,
Stephen

Hi Stephen,

Relevant team members are traveling this week, so unfortunately not yet.

Hi kmaclean,

I faced similar issue as stephen.

2019-09-26 11:26:11.470 ERROR   packages/dynamixel/gems/dynamixel.cpp@33: Dynamixel error (-3001): [RxPacketError] Input voltage error!

2019-09-26 11:26:11.504 ERROR   packages/dynamixel/gems/dynamixel.cpp@33: Dynamixel error (-3001): [RxPacketError] Input voltage error!

2019-09-26 11:26:11.538 ERROR   packages/dynamixel/gems/dynamixel.cpp@33: Dynamixel error (-3001): [RxPacketError] Input voltage error!

But I use MX-12W instead.
3 MX-12W are configured as expected, and confirmed 12V input at Dynamixel hub.

Any idea please?

Thanksx

updated!

I installed to test Dynamixel SDK [3.7.21].
With python example, MX-12W does not answer at all.

DynamixelSDK/python/tests/protocol1_0$ ./read_write.py
Succeeded to open the port
Succeeded to change the baudrate
[TxRxResult] There is no status packet!
Press any key to continue! (or press ESC to quit!)
[TxRxResult] There is no status packet!
[TxRxResult] There is no status packet!
[ID:001] GoalPos:010  PresPos:000
Press any key to continue! (or press ESC to quit!)
[TxRxResult] There is no status packet!
[TxRxResult] There is no status packet!
[ID:001] GoalPos:4000  PresPos:000
[TxRxResult] There is no status packet!
[ID:001] GoalPos:4000  PresPos:000
[TxRxResult] There is no status packet!
[ID:001] GoalPos:4000  PresPos:000
[TxRxResult] There is no status packet!

any further jobs to do for U2D2?

Thanks,

Stephen

We are okay with opening isaac.KayaBaseDriver source, but I’m not currently sure when you’ll be able to access it.


ddpx2

The Dynamixel voltage error (3001) will typically appear when you first start the app, and then disappear once everything is initialized. It should only be a concern if it continues to appear.

Are you able to use the Dynamixel app on your PC to actuate the motors while they are receiving power from Kaya? (ie. disconnect the U2D2 from the Nano, and plug it into a PC which can run the Dynamixel apps) You should be able to see the current motor voltage show up in the app as well. It may be easier to isolate the Dynamixels for troubleshooting this way.

The only extra piece related to the U2D2 is ensuring that you have configured the usb_port parameter correctly, as detailed in the Kaya assembly instructions and quoted below:

ddpx2

Did you change the control table values? The constants (https://github.com/ROBOTIS-GIT/DynamixelSDK/blob/master/python/tests/protocol1_0/read_write.py#L51) need to be modified for the MX-12W according to the documentation (http://emanual.robotis.com/docs/en/dxl/mx/mx-12w/#control-table-data-address).

This is exciting! I’ve been stuck with the issues that I’ve explained in another thread. I’ve begun writing my own, with the intent of sharing it with the community, but would love to see the NVIDIA code. I’ve got a general Dynamixel library working and am now working through the 3-wheel holonomic kinematics. I can’t wait to see this opened up.

bluecamel8fusr:

Thanks ! It works as you said.
read_write.py runs pretty well.

kmaclean:
Each MX-12W motors work by Dynamixel Wizard which is connected to x86 Linux or Windows.
But Kaya cannot drive them at all.

  • Input voltage at Dynamixel hub keeps 12.10 ~ 12.20 V.
  • U2D2 USB configuration has correct value, /dev/ttyUSB0

To move Kaya with FollowMe and Gmapping examples,

Thanks

Virtual gamepad is an optional step which you don’t need if you have a an actual josytick connected.

Could you try the following please:

  1. Did you follow the steps at https://docs.nvidia.com/isaac/isaac/packages/sensors/doc/joystick.html ? Is your joystick working?
  2. See “I am running my app on Kaya. Everything runs fine, but the joystick does not move the robot.” at https://docs.nvidia.com/isaac/isaac/doc/faq.html
  3. Through sight, can you enable debug_mode explained at https://docs.nvidia.com/isaac/isaac/doc/component_api.html#isaac-kayabasedriver ?

@OguzSaglam,

  1. Yes it is.
  2. deadman_switch. When I press 4 [basic jstest-gtk display], I got following message:
2019-10-01 08:07:38.533 INFO    engine/alice/backend/failsafe_backend.cpp@46: Reanimating failsafe 'robot_failsafe'
2019-10-01 08:07:38.912 WARNING engine/alice/backend/failsafe_backend.cpp@34: Failsafe triggered for 'robot_failsafe' because heartbeat 'deadman_switch' stopped beating
2019-10-01 08:07:43.109 INFO    engine/alice/backend/failsafe_backend.cpp@46: Reanimating failsafe 'robot_failsafe'
2019-10-01 08:07:43.109 INFO    engine/alice/backend/failsafe_backend.cpp@46: Reanimating failsafe 'robot_failsafe'
2019-10-01 08:07:43.560 WARNING packages/kaya_base/KayaBaseDriver.cpp@39: Sideway speed command is out of safe bounds. Clamped from 0.750000 to 0.500000.
2019-10-01 08:07:43.660 WARNING packages/kaya_base/KayaBaseDriver.cpp@39: Sideway speed command is out of safe bounds. Clamped from 0.750000 to 0.500000.

To test, ‘v’ checked at “disable_deadman_switch” in “Application Configuration” of Host side.
then following messages on the Kaya for the same button:

2019-10-01 08:43:13.763 INFO    packages/navigation/RobotRemoteControl.cpp@63: Entering autonomous mode
2019-10-01 08:43:16.725 INFO    packages/navigation/RobotRemoteControl.cpp@92: Entering manual mode

Should I modify somewhere of Application Configuration on the Host to move servos?
Because a channel “follow_me/control.lqr/isaac.planner.HolonomicBaseLqrPlanner/plan” is red color.

Thanks,

Dear,

My kaya does not move yet.
Even simple joystick example.

MX-12W motors work via Dynamixel SDK on Kaya.
Then I’m wondered that isaac.KayaBaseDriver works as expected.

Any kind of hints?

Thanks,

Hey, ddpx2.

  1. Can you share your Kaya config (apps/kaya/robots/kaya_v2.config.json)?

  2. Are you running joystick-pkg (apps/kaya/joystick.app.json)? If not, have you tried it?

  3. Can you share full logs from running joystick-pkg?

  4. Can you share your version of the Dynamixel read_write.py that’s working?

You can share links to the above on something like pastebin.com.

Hi bluecamel8fusr,

  1. attached

  2. tested it, but not work

  3. attached

  4. protocol 1.0 and works pretty well.
    I tested each motor from ID 1 to 3,
    And attached the python file here.

Would you advise where I run something wrong?

Thanks,
read_write.py.txt (5.73 KB)
log_joystick-pkg.txt (26.4 KB)

kaya_v2.config.json.txt (967 Bytes)

I don’t see your kaya_v2.config.json attached.

I also shared my alternate driver if you want to give it a go (https://devtalk.nvidia.com/default/topic/1064356/sdk/alternate-kaya-driver/). If you set debug_mode to true, you’ll get some more verbose debug logs that could help here.

Hi bluecamel8fusr,

Sorry for your inconvenience, cause of file extension, it might be blocked.
I attach a json file to the previous post again.

And I will test your driver shortly.

Thanks,

thanks bluecamel8fusr. Sorry it’s been a while, but we’ll open source our driver very soon. Your input will be very valuable if you get a chance to check it out.

ddpx2, “disable_deadman_switch” is useful in autonomous mode, which doesn’t help the simple joystick application, where we need manual control. As mentioned in https://docs.nvidia.com/isaac/isaac/doc/faq.html, you need to L1 on the joystick if you are using a playstation 4 controller. Otherwise, you can check which button needs to be pressed through jstest-gtk application.

Did you get a chance to enable “debug_mode” flag through Sight? Did wheels move with that?

Hi OguzSaglam,

When I press L1 of my controller, ISAAC examples do not respond at all.
However, pressing triangle button of F returns following messages;
(controller parts name: https://manuals.playstation.net/document/en/ps4/basic/pn_controller.html)

2019-10-08 15:47:52.807 INFO    engine/alice/backend/failsafe_backend.cpp@46: Reanimating failsafe 'robot_failsafe'
2019-10-08 15:47:53.942 WARNING engine/alice/backend/failsafe_backend.cpp@34: Failsafe triggered for 'robot_failsafe' because heartbeat 'deadman_switch' stopped beating
2019-10-08 15:48:10.087 INFO    engine/alice/backend/failsafe_backend.cpp@46: Reanimating failsafe 'robot_failsafe'
2019-10-08 15:48:10.492 WARNING engine/alice/backend/failsafe_backend.cpp@34: Failsafe triggered for 'robot_failsafe' because heartbeat 'deadman_switch' stopped beating

disable_deadman_switch is cleared and debug_mode is checked.
And wheels do not move at all.


At same button with disable_deadman_switch is checked:

2019-10-08 15:48:19.407 INFO    packages/navigation/RobotRemoteControl.cpp@63: Entering autonomous mode
2019-10-08 15:48:20.507 INFO    packages/navigation/RobotRemoteControl.cpp@92: Entering manual mode
2019-10-08 15:48:20.677 INFO    packages/navigation/RobotRemoteControl.cpp@63: Entering autonomous mode
2019-10-08 15:48:21.217 INFO    packages/navigation/RobotRemoteControl.cpp@92: Entering manual mode

FYI,
system log dumps following messages when I move something in front of depth camera:

Oct  8 15:46:08 nvidia-desktop kernel: [ 4917.648158] uvcvideo: Failed to query (GET_CUR) UVC control 1 on unit 3: -32 (exp. 1024).
Oct  8 15:46:08 nvidia-desktop kernel: [ 4917.707144] uvcvideo: Failed to query (GET_CUR) UVC control 1 on unit 3: -32 (exp. 1024).
Oct  8 15:46:08 nvidia-desktop kernel: [ 4917.766222] uvcvideo: Failed to query (GET_CUR) UVC control 1 on unit 3: -32 (exp. 1024).
Oct  8 15:46:08 nvidia-desktop kernel: [ 4918.048774] uvcvideo: Failed to query (GET_CUR) UVC control 1 on unit 3: -32 (exp. 1024).
Oct  8 15:46:08 nvidia-desktop kernel: [ 4918.107356] uvcvideo: Failed to query (GET_CUR) UVC control 1 on unit 3: -32 (exp. 1024).

Thanks,

When debug_mode is checked, it bypasses the joystick and the disable_deadman_switch flag. If your wheels don’t move in debug_mode, our driver is not working for your Dynamixel XL430-W250-T servos. This is not surprising since our code assumes MX-12W, but hopefully it will be an easy change for you once we open source the driver.

The issue you are having with the joystick is interesting. Did you pair over bluetooth or are you using a cable? Can you connect screen/keyboard/mouse to your Kaya and open jstest-gtk application as show in https://docs.nvidia.com/isaac/isaac/packages/sensors/doc/joystick.html When you press L1 and triangle, which buttons toggle in jstest-gtk? You can match the numbers with RobotRemoteControl component. I’m surprised the defaults don’t work for your ps4 controller though.

Hi OguzSaglam,

  1. MX-12W motors are installed on Kaya.

  2. Joystick, under testing, is a bundle wireless gamepad, https://www.waveshare.com/jetbot-ai-kit-acce.htm
    joystick-gtk application works pretty well on Kaya.
    L1 is mapped to 6, and triangle is 4.
    Would you let me know what number L1 + triangle should have?

Thanks,

OguzSaglam,

With this gamepad, pressing L1+triangle + left/right stick, I’ve got following messages:

2019-10-10 13:27:20.515 WARNING packages/kaya_base/KayaBaseDriver.cpp@39: Forward speed command is out of safe bounds. Clamped from 0.530330 to 0.500000.
2019-10-10 13:27:20.515 WARNING packages/kaya_base/KayaBaseDriver.cpp@39: Sideway speed command is out of safe bounds. Clamped from -0.530330 to -0.500000.
2019-10-10 13:27:20.615 WARNING packages/kaya_base/KayaBaseDriver.cpp@39: Forward speed command is out of safe bounds. Clamped from 0.530330 to 0.500000.
2019-10-10 13:27:20.615 WARNING packages/kaya_base/KayaBaseDriver.cpp@39: Sideway speed command is out of safe bounds. Clamped from -0.530330 to -0.500000.
2019-10-10 13:27:20.715 WARNING packages/kaya_base/KayaBaseDriver.cpp@39: Sideway speed command is out of safe bounds. Clamped from -0.750000 to -0.500000.
2019-10-10 13:27:20.815 WARNING packages/kaya_base/KayaBaseDriver.cpp@39: Sideway speed command is out of safe bounds. Clamped from -0.750000 to -0.500000.
2019-10-10 13:27:22.415 WARNING packages/kaya_base/KayaBaseDriver.cpp@39: Turning rate is out of safe bounds. Clamped from 3.000000 to 2.000000.
2019-10-10 13:27:22.515 WARNING packages/kaya_base/KayaBaseDriver.cpp@39: Turning rate is out of safe bounds. Clamped from 3.000000 to 2.000000.
2019-10-10 13:27:22.615 WARNING packages/kaya_base/KayaBaseDriver.cpp@39: Turning rate is out of safe bounds. Clamped from 3.000000 to 2.000000.
2019-10-10 13:27:22.715 WARNING packages/kaya_base/KayaBaseDriver.cpp@39: Turning rate is out of safe bounds. Clamped from 3.000000 to 2.000000.
2019-10-10 13:27:22.815 WARNING packages/kaya_base/KayaBaseDriver.cpp@39: Turning rate is out of safe bounds. Clamped from 3.000000 to 2.000000.
2019-10-10 13:27:22.915 WARNING packages/kaya_base/KayaBaseDriver.cpp@39: Turning rate is out of safe bounds. Clamped from 3.000000 to 2.000000.
2019-10-10 13:27:23.615 WARNING packages/kaya_base/KayaBaseDriver.cpp@39: Turning rate is out of safe bounds. Clamped from -3.000000 to -2.000000.

Thanks,