ros-industrial / ros_canopen

CANopen driver framework for ROS (http://wiki.ros.org/ros_canopen)
GNU Lesser General Public License v3.0
336 stars 271 forks source link

Motor jitter when init. #369

Closed clm330 closed 4 years ago

clm330 commented 4 years ago

When drivers init, the motor which specified to position mode jitter.

When init. The mode of operation(0x6060) set to 0, and target position(0x607a) jitter. I set homing method(0x6098) to 0 in eds and yaml. It occurs always.

The following is information about the issues.

version:kinetic-devel

This is graph. Screenshot from 2019-12-17 11-28-19

Update: Getting mode of operation in 0x6061 . It is from 6 to 1. Screenshot from 2019-12-17 17-00-59


This is config.yaml. bus: device: can0 master_allocator: canopen::SimpleMaster::Allocator sync: interval_ms: 200 overflow: 0

defaults: eds_pkg: motor_control eds_file: "launch/base/config/DCHCAN.eds" pos_to_device: "rint((pos)1592)" pos_from_device: "obj60640.000628" vel_to_device: "rint((vel)15923)" vel_from_device: "obj606C0.0000628" publish: ["6060","607a","60ff","6098"] dcf_overlay: "1017": "100"

nodes: axis1_to_base_link: id: 1 dcf_overlay: "6098": "0" # homing method wheel1_to_axis1: id: 2


This is part of eds.

[6098] ParameterName=Homing method ObjectType=7 DataType=2 AccessType=RW PDOMapping=1 DefaultValue=0

[1602] ParameterName=Receive PDO Mapping Parameter 2 ObjectType=0x9 SubNumber=9

[1602sub0] ParameterName=Number of entries ObjectType=0x7 DataType=0x0005 AccessType=rw PDOMapping=0 LowLimit=0 HighLimit=8 ParameterValue=2

[1602sub1] ParameterName=PDO Mapping Entry ObjectType=0x7 DataType=0x0007 AccessType=rw PDOMapping=0 ParameterValue=0x607a0020

[1602sub2] ParameterName=PDO Mapping Entry_2 ObjectType=0x7 DataType=0x0007 AccessType=rw PDOMapping=0 ParameterValue=0x60ff0020


This is candump information about RPDO3 when init. bit0-bit3 is mapping 0x607a bit4-bit7 is mapping 0x60ff Screenshot from 2019-12-17 11-29-55

Expecting solution. Thanks.

mathias-luedtke commented 4 years ago

0x607a should not be used (or sent) if the mode is not 1. What is your position (0x6064)?

Which controller are you using? Why is your velocity factor 10 times bigger?

clm330 commented 4 years ago

Thanks.

Which controller are you using?

My controller is position_controllers/JointPositionController.

Why is your velocity factor 10 times bigger?

Because velocity unit is 10 times bigger than position unit.

What is your position (0x6064)?

In this graph, the mode of operation (0x6060) was set to 1. the homing method(0x6098) was set to 0. But in begining, the mode of operation display(0x6061) was not same with mode. it was 6(homing mode). After mode of operation display(0x6061) switch to 1, 0x607A received position message.

Screenshot from 2019-12-18 10-54-35

This graph is about 0x6061 and 0x6060 when init. Screenshot from 2019-12-18 16-57-22

This graph is about candump RPDO1 which bit4-bit5 is (0x6061) when init.

Screenshot from 2019-12-18 17-07-20

Why 0x6061 was from 1 to 6?

[1A00sub2] ParameterName=PDO Mapping Entry_2 ObjectType=0x7 DataType=0x0007 AccessType=rw PDOMapping=0 ParameterValue=0x60610008

clm330 commented 4 years ago

I set 0x607A to 0, and then init normally. But still dont konw why 0x6061 from 1 to 6 when init.

mathias-luedtke commented 4 years ago

But still dont konw why 0x6061 from 1 to 6 when init.

This is just part of init, as it will try to home the device.

clm330 commented 4 years ago

But still dont konw why 0x6061 from 1 to 6 when init.

This is just part of init, as it will try to home the device.

Thanks for reply. Sorry for my careless. I forgot said I also set 0x6098 to 0, the driver always try to home the device.

My question: Normally, if 0x6098 set to 0, should 0x6061 be from 1 to 6 when init? Expecting your reply.