Robotics StackExchange | Archived questions

FALHABER MCBL 3006 with canopen_motor_node. Homing failed

Hello,

I'm trying to use the motion controller FAULHABER MCBL 3006 S AES with ros_canopen. It seems there is no tutorial on how to use roscanopen, the closest i've found is : https://answers.ros.org/question/250174/how-to-control-maxon-motor-by-using-roscanopen/

I use a raspberry pi 3 with a PICAN hat. The hat works fine : with candump and cansend I can communicate, send PDO request or commands.

This is the continuation of a previous question.

I launched the canopen_motor_node with the same configuration as in this post.

When I call the service /driver/init. I get this result :

rosservice call /driver/init
success: False
message: "could not prepare homing; Homing failed"

The output of canopen_motor_node :

SUMMARY
========

PARAMETERS
 * /motor/bus/device: can0
 * /motor/bus/master_allocator: canopen::SimpleMa...
 * /motor/defaults/eff_from_device: 0
 * /motor/defaults/eff_to_device: rint(eff)
 * /motor/defaults/motor_allocator: canopen::Motor402...
 * /motor/defaults/motor_layer/switching_state: 5
 * /motor/defaults/pos_from_device: deg2rad(obj6064)/...
 * /motor/defaults/pos_to_device: rint(rad2deg(pos)...
 * /motor/defaults/vel_from_device: deg2rad(obj606C)/...
 * /motor/defaults/vel_to_device: rint(rad2deg(vel)...
 * /motor/nodes/node1/eds_file: config/605.3150.7...
 * /motor/nodes/node1/eds_pkg: can_test
 * /motor/nodes/node1/id: 3
 * /motor/sync/interval_ms: 10
 * /motor/sync/overflow: 0
 * /robot_description: <robot name="test...
 * /rosdistro: kinetic
 * /rosversion: 1.12.12

NODES
  /
    motor (canopen_motor_node/canopen_motor_node)

auto-starting new master
process[master]: started with pid [2262]
ROS_MASTER_URI=http://localhost:11311

setting /run_id to 44e412be-1e62-11e8-bf02-b827eb24e870
process[rosout-1]: started with pid [2275]
started core service [/rosout]
process[motor-2]: started with pid [2291]
[ INFO] [1520026806.993282054]: Using fixed control period: 0.010000000
[ INFO] [1520026811.247544240]: Initializing XXX
[ INFO] [1520026811.248136323]: Current state: 1 device error: system:0 internal_error: 0 (OK)
[ INFO] [1520026811.250120750]: Current state: 2 device error: system:0 internal_error: 0 (OK)
abort6060#0, reason: Invalid value for parameter (download only).
Could not process message
[ INFO] [1520026814.326695801]: Current state: 0 device error: system:0 internal_error: 0 (OK)
[ INFO] [1520026814.327013249]: Current state: 0 device error: system:0 internal_error: 0 (OK)
Did not receive a response message
[ERROR] [1520026815.327043770]: /tmp/binarydeb/ros-kinetic-canopen-master-0.7.6/src/sdo.cpp(429): Throw in function void canopen::SDOClient::transmitAndWait(const canopen::ObjectDict::Entry&, const canopen::String&, canopen::String*)
Dynamic exception type: boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<canopen::TimeoutException> >
std::exception::what: SDO
[canopen::tag_objectdict_key*] = 6061sub0

I investigated the CAN communications and it seems that canopen_motor_node change automatically the drive mode to homing.

  can0  603   [8]  40 61 60 00 00 00 00 00 # Mode request
  can0  583   [8]  4F 61 60 00 01 00 00 00 # Controller in position mode
  can0  603   [8]  2F 60 60 00 06 00 00 00
  can0  583   [8]  60 60 60 00 00 00 00 00
  can0  183   [2]  37 00
  can0  283   [6]  37 00 4C 00 00 00
  can0  383   [6]  37 00 00 00 00 00
  can0  080   [0]
  can0  603   [8]  40 61 60 00 00 00 00 00 # Mode request
  can0  583   [8]  4F 61 60 00 06 00 00 00 # Controller in homing mode

As you can see above the mode is changed from 01 to 06. On the FAULHABER function manual it seems it's not possible to set the homing method (0x6098) to zero. I tried on FAULHABER Motion Manager to set it to zero but the operation is forbidden. So I think it's not a good idea to bypass this security.

How can I make it stay in position mode ?

Thank you

Asked by simchanu on 2018-03-09 12:04:55 UTC

Comments

Hello. Did you manage to solve the issues and drive the faulhaber motor correctly? Can you share your github repo with us? Would be nice to have your solution as a reference for other custom setups. Thank you in advance. Best regards.

Asked by akosodry on 2018-06-07 03:33:25 UTC

Hi, I haven't been able to use canopen_motor_node for this driver. However I managed to drive the motor accurately but I had to adapt an internal proprietary software from my company. Unfortunately I am not allowed to share it.

Asked by simchanu on 2018-06-07 03:54:36 UTC

Hi! Thats OK, no problem. Thanks for the answer though.

Asked by akosodry on 2018-06-07 03:57:09 UTC

Answers