Interbotix / interbotix_ros_rovers

ROS Packages for Interbotix Rovers
BSD 3-Clause "New" or "Revised" License
32 stars 31 forks source link

[Bug]: Can't find Dynamixel ID '11' #2

Closed VenkataramanSubramanian closed 2 years ago

VenkataramanSubramanian commented 3 years ago

What happened?

I am using the Locobot wx200. when i am launching the robot control xslocobot_control.launch I am getting the following error

Can't find Dynamixel ID '11' I traced by the error to the code in the path https://github.com/Interbotix/interbotix_ros_core/blob/main/interbotix_ros_xseries/interbotix_xs_sdk/src/xs_sdk_obj.cpp line 549

bool InterbotixRobotXS::robot_ping_motors(void)
{
  bool success = true;
  for (auto const& motor:motor_map)
  {
    uint16_t model_number = 0;
    bool result = dxl_wb.ping(motor.second.motor_id, &model_number);
    if (result == false)
    {
      ROS_ERROR("[xs_sdk] Can't find Dynamixel ID '%d', joint name '%s'", motor.second.motor_id, motor.first.c_str());
      success = false;
    }
    else 
      ROS_INFO("[xs_sdk] ID : %d, Model Number : %d", motor.second.motor_id, model_number);
    dxl_wb.torque(motor.second.motor_id, false);
  }
  return success;
}

The control lauch file launches the config/locobot_wx200.yaml which has ID 11 for Tilt ( refer link: https://github.com/Interbotix/interbotix_ros_rovers/blob/main/interbotix_ros_xslocobots/interbotix_xslocobot_control/config/locobot_wx200.yaml). The controller are connected to the system but still the error is coming.

Robot Model

locobot_wx200

Operating System

ubuntu 20.04

Steps To Reproduce

roslaunch interbotix_xslocobot_control xslocobot_control.launch robot_model:=locobot_wx200 use_base:=true use_lidar:=true use_camera:=true

Relevant log output

rocess[locobot/joint_state_publisher-2]: started with pid [1525]
process[locobot/robot_state_publisher-3]: started with pid [1526]
process[locobot/xs_sdk-4]: started with pid [1531]
process[locobot/mobile_base_nodelet_manager-5]: started with pid [1532]
process[locobot/mobile_base-6]: started with pid [1533]
process[locobot/diagnostic_aggregator-7]: started with pid [1534]
process[locobot/rplidarNode-8]: started with pid [1540]
process[locobot/camera/realsense2_camera_manager-9]: started with pid [1549]
[ INFO] [1633950354.348140428]: Successfully retrieved motor configs from /home/locobot/interbotix_ws/src/interbotix_ros_rovers/interbotix_ros_xslocobots/interbotix_xslocobot_control/config/locobot_wx200.yaml.
process[locobot/camera/realsense2_camera-10]: started with pid [1560]
[ INFO] [1633950354.408273414]: RPLIDAR running on ROS package rplidar_ros. SDK Version:1.12.0
[ INFO] [1633950354.418664011]: Initializing nodelet with 4 worker threads.
[ERROR] [1633950354.428259872]: Can't find Dynamixel ID '11'
[ INFO] [1633950354.836129161]: RealSense ROS v2.3.1
[ INFO] [1633950354.836175337]: Built with LibRealSense v2.48.0
[ INFO] [1633950354.836361236]: Running with LibRealSense v2.48.0
[ INFO] [1633950354.859547212]:  
RPLIDAR S/N: A5E1EE8BC8E792D6B1E39BF02C374C6C

Anything Else

No response

lukeschmitt-tr commented 3 years ago

Hi @VenkataramanSubramanian. You're getting this error because the xs_sdk node is unable to find (at least) the servo with ID 11. You have correctly identified this as the tilt motor in the pan/tilt camera mechanism. Please check the following items:

  1. Make sure that all 3-pin cables running between the controller and power distribution board and up to the pan/tilt mechanism are pushed all the way in on both ends.
  2. Use Dynamixel Wizard 2.0 to check if you can see all 11 servos. Follow this guide for how to download the Wizard and configure your search.

We recently released a new version of the xs_sdk with more verbose error reporting that may help diagnose this issue. You can pull from the interbotix_ros_core remote and rebuild your workspace for these updates. Make sure to back up or stash any changes you have made to the core packages before doing so.

lukeschmitt-tr commented 3 years ago

Closed due to lack of activity. Feel free to reopen if you have more questions.

VenkataramanSubramanian commented 2 years ago

Hi,

I used the Dynamixel Wizard 2.0 to fix the baudrate issue with the ID '11' . After doing so now, three of my motor's in the robot arm is not getting detected. I Checked for ID conflict still those motor's are not getting picked.

Previously when i start all the motor's LED will blink once. Now for these 3 motor when starting the LED's doesn't blink even once.

Are these motor physically damaged. Please let me know if there is a way to find if the motor not getting detected by "Dynamixel Wizard 2.0 " is due to harware or software issue.

lukeschmitt-tr commented 2 years ago

Hi @VenkataramanSubramanian. Usually, when the LEDs don't flash on startup, it means that there is some issue when providing power.

Make sure that the cables leading to those servos are plugged all the way in and not visually damaged. You could also run continuity checks between the cables with a multimeter to make sure that there are no interruptions in data or power transfer.

lukeschmitt-tr commented 2 years ago

@VenkataramanSubramanian Do you have any further questions on this? Otherwise, this issue will be closed.

VenkataramanSubramanian commented 2 years ago

@LSinterbotix Still the issue is not solved. Have ordered a new servo. closing the ticket for now. If any issue re-raise will open the ticket!!!!