ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
0

ros_canopen, homing stopping after short time

asked 2022-09-05 16:58:50 -0500

cbj34 gravatar image

updated 2022-09-06 11:46:50 -0500

Hi,

I'm very new to ros_canopen and I am trying to home motors for usage in profile position mode in a robotic arm. During the homing process the homing fails after a few seconds (method 17) Multiple attempts successfully home the motors, but this isn't an option, since one of the motors has to overcome gravity during homing and can not reach the hall sensor.

Additional information:

  • The time after which the homing process is aborted seems to be always the same
  • Almost every time no error frames are reported
  • Homing via plug n drive studio works perfectly fine
  • Even after homing the motors seem to not have any holding torque, but single motors could be controlled
  • I am using mostly cl-4, pd2 and pd4 controllers all of which display the same behavior
  • I am using NOE2 encoders an closed loop mode

I will update my question with the config files tomorrow, since I'm not able to access them at the moment. Maybe someone has experienced a similar behavior and knows what could be wrong regardless.

Update:

Here is a sample of the one motor in the config file:

name: arm
defaults:
  eds_pkg: robot_driver
  dcf_overlay:
    "1400sub2" : "0x00"             
    "1401sub2" : "0x00"          
    "1402sub2" : "0x00"            
    "1800sub2" : "0x01"            
    "1801sub2" : "0x01"           
    "1802sub2" : "0x01"         


....
  link_4_link_5_joint:
    id: 11
    eds_file: "/config/CL4-E-1-12.eds" # the parser reads EDS and DCF
    dcf_overlay:
      "2031" : "2400"                
      "203Bsub1" : "2400"             
      "203Bsub2" : "1000"             
      "6060" : "0x01"            
      "607E" : "1"                
      "60E8sub1" : "0x0000000A"      
      "60EDsub1" : "0x00000001"     
      "60A8" : "0xFF410000"          
      "60A9" : "0xFF410300"        
      "607Dsub1" : "-3000"           
      "607Dsub2" : "3000"        
      "6081" : "180"               
      "6083" : "36"               
      "60C5" : "360"               
      "60C6" : "360"                
      "6098" : "17"                   
      "3240sub1" : "1"                
      "3240sub2" : "1"                
      "6099sub1" : "180"                
      "6099sub2" : "45"           
    motor_allocator: canopen::Motor402::Allocator 
    pos_to_device: "rint(rad2deg(pos)*10)" 
    pos_from_device: "deg2rad(obj6064)/10" 
    vel_to_device: "rint(rad2deg(vel)" 
    vel_from_device: "deg2rad(obj606C)"
    eff_to_device: "rint(eff)" 
    eff_from_device: "0"

An here from the controller conifg:

joint_state_controller:
  type: joint_state_controller/JointStateController
  publish_rate: 100

arm_controller:
  type: position_controllers/JointTrajectoryController
  joints:
    - link_4_link_5_joint
  required_drive_mode: 1
  constraints:
    goal_time: 0.5
    link_4_link_5_joint:
      trajectory: 0.05
      goal: 0.01
  gains:
    base_link_1_joint:
      p: 600
      d: 500
      i: 100
      i_clamp: 100

And the correspoding joint in the urdf/xacro:

    <joint name="link_4_link_5_joint" type="revolute">
        <parent link="link_4" />
        <child link="link_5" />
        <axis xyz="1 0 0" />
        <origin xyz="0 0 0.0501" rpy="0 0 1.571" />
        <limit effort="100.0" lower="-3000" upper="3000" velocity="0.5" />
        <dynamics damping="0.0" friction="0.0"/>
    </joint>
    <transmission name="trans_joint_5">
        <type>transmission_interface/SimpleTransmission</type>
        <joint name="link_4_link_5_joint">
            <hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface>
        </joint>
        <actuator name="motor_link_4_link_5_joint">
            <mechanicalReduction>100</mechanicalReduction>
        </actuator>
    </transmission>

When I use this setup the error becomes:

[ERROR] [1662456649.290314214]: Initializing failed: could not prepare homing; Homing failed

When I delete all the object entrys in the motor config (which I checked on the controller with plug and drive and they should be the same as in the standard confgiuration) the error becomes:

[ERROR] [1662456880.016842991]: Initializing failed: homing not attained; Homing failed
edit retag flag offensive close merge delete

Comments

Same thing is happening to me. Every time after 10 second if homing(method: -3) position is not reached, the whole process is aborted. Is there any update from your side?

NitLesovon gravatar image NitLesovon  ( 2022-12-01 06:41:24 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted
0

answered 2022-12-02 09:17:09 -0500

sgermanserrano gravatar image

ros_canopen has a fixed 10sec homing timeout. This PR adds a configurable timeout option, you can check out the branch and use it.

https://github.com/ros-industrial/ros_canopen/pull/442

edit flag offensive delete link more

Question Tools

3 followers

Stats

Asked: 2022-09-05 16:58:50 -0500

Seen: 76 times

Last updated: Dec 02 '22