Robotics StackExchange | Archived questions

ros_canopen, homing stopping after short time

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:

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

Asked by cbj34 on 2022-09-05 16:58:50 UTC

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?

Asked by NitLesovon on 2022-12-01 07:41:24 UTC

Answers

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

Asked by sgermanserrano on 2022-12-02 10:17:09 UTC

Comments