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:
- 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
Asked by cbj34 on 2022-09-05 16:58:50 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
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