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