Roboprotos / maxon_epos4_ros1

ROS metapackage example on how to use maxon EPOS4 motor controllers with ros_canopen
22 stars 11 forks source link

"Internal limit active" when $rosservice call /maxon/driver/init #3

Closed Qualot closed 10 months ago

Qualot commented 11 months ago

Thank you for the handy packages! Our group made a robot manipulator with four EPOS4-EC Flat 90 combinations, and the boot sequence sometimes encounters the "internal limit active" error/warning messages. If the issue is suitable for other forums such as maxon official forum, please let me know.

The booting sequence is composed of the following procedures.

  1. setting the robot to the rest position,
  2. roslaunch canopen motor node just like the package's examples. our launch file overwrites the encoder position using dcf_overlay: 30B0: "xxx". "xxx" is from the external potentiometer angles.  The controllers' mode are "csp" and "hm".
  3. $rosservice call /maxon/driver/init.

When 3. succeeded without any errors, the robot basically moves successfully. However, we often have the following messages which makes the servo unavailable. Roughly speaking, when the robot link touches the joint limit, we have the message more often. What does the message "Internal limit active" mean?

NODES
  /maxon/
    canopen_motor (canopen_motor_node/canopen_motor_node)
    controller_spawner (controller_manager/controller_manager)

ROS_MASTER_URI=http://localhost:11311

process[maxon/canopen_motor-1]: started with pid [38619]
process[maxon/controller_spawner-2]: started with pid [38620]
[ INFO] [1700117843.230044875]: Using fixed control period: 0.010000000
[ INFO] [1700117848.180201963]: Initializing...
[ INFO] [1700117848.180320192]: Current state: 1 device error: system:0 internal_error: 0 (OK)
[ INFO] [1700117848.180393302]: Current state: 2 device error: system:0 internal_error: 0 (OK)
[ERROR] [1700117848.181530521]: Received error frame: 20000004#0040000000000000
[ERROR] [1700117848.203415500]: Received error frame: 20000004#0040000000000000
[ WARN] [1700117856.940592789]: Internal limit active
[ERROR] [1700117857.630613450]: EMCY received: 81#0000000000000000
[ERROR] [1700117857.633218855]: EMCY received: 82#0000000000000000
[ERROR] [1700117857.634483992]: EMCY received: 83#0000000000000000
[ERROR] [1700117857.636063648]: EMCY received: 84#0000000000000000
[ INFO] [1700117857.636302807]: Initializing successful
Loaded '/maxon/canopen_motor/joint_state_controller'
Loaded '/maxon/canopen_motor/joint_trajectory_controller'
Started ['/maxon/canopen_motor/joint_state_controller'] successfully
Started ['/maxon/canopen_motor/joint_trajectory_controller'] successfully
[ERROR] [1700117857.975236097]: EMCY received: 84#1186800000000000
[ERROR] [1700117857.980561466]: Node has emergency error
[maxon/controller_spawner-2] process has finished cleanly
log file: /xxxxxx/.ros/log/53da76ee-844d-11ee-8d76-3d1625fdc6f7/maxon-controller_spawner-2*.log

Lastly, I happened to see the similar problem here, https://robotics.stackexchange.com/questions/105356/ros-canopen-and-epos4-internal-limit-active so please let me know if my issue is an inappropriate cross-posting. In that case, I would withdraw the issue. Sorry for such a long message.

Roboprotos commented 11 months ago

Hi, thanks for reporting this issue. The first things you need to do is to decode the error frame and the emergency frame (EMCY). The documentation I wrote and official maxon firmware documentation should help you with that. Please post what you found here. If according to the other post the issue comes from the ROS side, I'll try to dig to find out where the problem comes from.

Qualot commented 11 months ago

Hi @Roboprotos Thanks for the reply. OK, I would investigate the frame especially [ERROR] [1700117857.975236097]: EMCY received: 84#1186800000000000 and whether the same frame appears in our case.

Qualot commented 10 months ago

Hi @Roboprotos

Happy new year and thank you for your suggestions. I referred the documents you introduced. After several trials, I found that most EMCY packets were actually "0x738A: Hall angle detection error", which appears due to the disorders around Hall sensor and encoder. https://www.maxongroup.co.jp/medias/sys_master/root/8994700591134/EPOS4-Firmware-Specification-En.pdf#G9.2423498

I assume that they were due to noisy output of potentiometer during the homing process now. Further investigation using $candump would be required, but I do not think that the problem comes from ROS side. Therefore, the issue would be closed for a moment. Please let me repost when I encounter the further issue regarding the package.

Many thanks!