Open david-paltech opened 3 months ago
We are experiencing the same issue, this is our bus.yml
package: "canopen_master_driver"
revision_number: 0
sync_period: 100000
defaults:
dcf: "CANedsGoldV005_0_without_buffer_overflow.dcf"
driver: "ros2_canopen::Cia402Driver"
package: "canopen_402_driver"
revision_number: 0
period: 100000
polling: true
switching_state: 5
scale_pos_to_dev: 31831
scale_pos_from_dev: 0.00003141
scale_vel_to_dev: 31831
scale_vel_from_dev: 0.00003141
nodes:
front_left_steer_joint:
node_id: 2
serial_number: 22320XXX
front_right_steer_joint:
node_id: 3
serial_number: 22320XXX
and the error is:
[device_container_node-1] [INFO] [1722512047.682393729] [canopen_402_driver]: Init: Read State
[device_container_node-1] [INFO] [1722512047.682552726] [canopen_402_driver]: Init: Enable
[device_container_node-1] [INFO] [1722512047.692108828] [canopen_402_driver]: Fault reset
[device_container_node-1] [INFO] [1722512052.682891861] [canopen_402_driver]: Transition timed out.
[device_container_node-1] Could not enable motor
Did you figure out, what was wrong @david-paltech ?
Hi, Just for checking could you guys try to set Homing Method to 35 using sdos in bus.yml. we have not extensively tested other Homing methods due to lack of available hardware. Maybe that's the issue.
The error displayed by the device could also hint at a switching state issue. E.g. operating mode is switched in the wrong state.
Setting homing to 35 did not make any change....
We added the heartbeats and we get 05 so that we are in operational state, and then we do
ros2 service call /front_left_steer_joint/init std_srvs/srv/Trigger
requester: making request: std_srvs.srv.Trigger_Request()
response:
std_srvs.srv.Trigger_Response(success=False, message='')
This is the candump message:
can1 703 [1] 05
can1 702 [1] 05
can1 703 [1] 05
can1 602 [8] 40 02 65 00 00 00 00 00
can1 582 [8] 43 02 65 00 ED 03 00 00
can1 602 [8] 40 02 65 00 00 00 00 00
can1 582 [8] 43 02 65 00 ED 03 00 00
can1 602 [8] 40 02 65 00 00 00 00 00
can1 582 [8] 43 02 65 00 ED 03 00 00
can1 602 [8] 40 02 65 00 00 00 00 00
can1 582 [8] 43 02 65 00 ED 03 00 00
can1 602 [8] 40 02 65 00 00 00 00 00
can1 582 [8] 43 02 65 00 ED 03 00 00
can1 602 [8] 40 02 65 00 00 00 00 00
can1 582 [8] 43 02 65 00 ED 03 00 00
can1 602 [8] 40 02 65 00 00 00 00 00
can1 582 [8] 43 02 65 00 ED 03 00 00
can1 602 [8] 40 02 65 00 00 00 00 00
can1 582 [8] 43 02 65 00 ED 03 00 00
can1 602 [8] 40 02 65 00 00 00 00 00
can1 582 [8] 43 02 65 00 ED 03 00 00
can1 702 [1] 05
can1 703 [1] 05
can1 702 [1] 05
can1 703 [1] 05
Why is this service returning success=False
@cschindlbeck @david-paltech I'm seeing the same at the moment with my drive. Also have both my master node and drive node returning 05 heartbeats and I'm reading data from the drive.
Have you made any progress on your end?
I'm seeing my desired TPDOs configured in bus.yml
on the bus with candump
but I have no data coming in to my device node's /tpdo
topic.
I do have RPDOs on the /rpdo
topic and the drive's position seems to be correctly reported and updates as I turn the motor by hand, but I can't enable the motor with the device node's /init
service call.
I'm using CiA402 lifecycle nodes for both master and device node (I use /lifecycle_manager
to step through the configure
and activate
steps which are both successful and result in the device sending data).
I tried homing method 35 and also homing method 37 which seems to be the "current position" homing mode actually supported by my drive.
I got my drive to spin. In my case, I dug into the candump
output and found a repeated emergency message about motor overtemperature (actually a disconnected temperature sensor). This was putting the drive in a fault state.
The node tried several times to clear that fault after I called /init
, but with the missing temperature sensor, it would just fault again until timeout.
I do ALSO to get the issues related to the [6502]
supported drive modes with the same symptom: repeated sdo transactions like above. My EDS file does have a supported drive modes entry supplied by the manufacturer, but it seems like something is still going wrong there.
Despite that, once I cleared my "over temperature" fault by disabling the temperature sensor it didn't have, I could init the motor and use the driver.
I had this issue as well, I resolved it by adding fault reset in the beginning. I can spin the motor in the velocity mode but not in position mode.
options:
dcf_path: "@BUS_CONFIG_PATH@"
master:
node_id: 5
driver: "ros2_canopen::MasterDriver"
package: "canopen_master_driver"
baudrate: 1000
nodes:
pd4_x:
node_id: 1
dcf: "PD4_2.eds"
driver: "ros2_canopen::Cia402Driver"
package: "canopen_402_driver"
sdo:
- {index: 0x6040, sub_index: 0, value: 0x80} # Fault reset
- {index: 0x6040, sub_index: 0, value: 0x06} # Shutdown
- {index: 0x6040, sub_index: 0, value: 0x07} # Switch on
- {index: 0x6060, sub_index: 0, value: 1} # Set operation mode to Profile Position
- {index: 0x6040, sub_index: 0, value: 0x0F} # Enable operation
Describe the bug I am trying to control the motor iSV2-CAN but I'm experiencing issues when calling the service /init. The configuration I'm using is almost the same as in the Trinamic Stepper Motor control example (launch and yml file display below). When I launched the file everything seems ok until I call the service /init. When I do, the library tries to read the dictionary 6502h (according to the CAN messages) many times for some reason, and while this happens, three things occur simultaneously.
Any idea what might be happening? I've checked and the motor supports the OD 6502h, and it is defined in the EDS file:
Logs Launch file
YAML file
Launch terminal
CAN messages
Setup: