ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
1

ros_canopen with lwa4p initialization fails

asked 2015-02-18 08:41:52 -0500

Marcel Usai gravatar image

updated 2015-02-19 08:06:23 -0500

Hi,

I am trying to initialize my lwa4p arm as described on the ros_canopen wiki page, but it seems that I am missing something.

When calling

rosservice call /arm/driver/init

I get

success: 
  data: False
error_message: 
  data: CAN init failed

Also, I constantly receive

[ INFO] [1424269803.902373134]: waitForService: Service [/arm/controller_manager/load_controller] has not been advertised, waiting...

with arm/joint_state_controller_spawner restarting after some time. Is this expected behaviour? What am I missing?

Note: I also failed to run

sudo ip link set can0 up type can bitrate 500000

as it returns

Cannot find device "can0"

But I have peak-linux-driver-7.12 installed on my machine, configured as chardev device and I am able to access my arm with another program, so I do not know if this really is a problem. (Same result when using pcanusb0 instead of can0, which is my actual pcan device name.)

Thank you for your support!

Edit: It seems that I had to rebuild my driver as netdev and configure it correctly.

sudo ip link set can0 up type can bitrate 500000

did not work for me, instead I used

sudo ip link set up can0
echo "i 0x001C e" > /dev/pcan32

to set baudrate to 500k. When calling the init service, the arm now initializes correctly.

edit retag flag offensive close merge delete

Comments

i got the same error and tried your way but cant solve it. can i contact you private?

felixwatzlawik gravatar image felixwatzlawik  ( 2015-06-23 07:08:01 -0500 )edit

Which driver do you use? I had to compile the PEAK PCan USB driver as a netdev. And I always have to set the bitrate to 500k before initializing, which is a bit annyoing...

Marcel Usai gravatar image Marcel Usai  ( 2015-06-23 08:33:52 -0500 )edit

1 Answer

Sort by » oldest newest most voted
0

answered 2015-02-19 02:28:59 -0500

Mathias Lüdtke gravatar image

Hi, we do not support the chardev driver anymore. Please use either the SocketCAN driver built into the linux kernel or recompile the PEAK driver for netdev support.

I have added some more documentation at http://wiki.ros.org/socketcan_interface

edit flag offensive delete link more

Comments

Thanks for your answer! I now loaded the peak_usb driver and can find device can0. But I still fail to initalize, with could not reset node '3' as error message.

Marcel Usai gravatar image Marcel Usai  ( 2015-02-19 07:03:42 -0500 )edit

Updated my question. Problem is solved, thank you! But do you have any idea why I could not set the baudrate as described in the documentation?

Marcel Usai gravatar image Marcel Usai  ( 2015-02-19 08:08:20 -0500 )edit

Have you verified the bitrate (500k in the example)? What are you node ID (default: 3 to 9)? The driver is still under development, so please make sure, that you use source code overlays for https://github.com/ipa320/ros_canopen and https://github.com/ipa320/ros_control

Mathias Lüdtke gravatar image Mathias Lüdtke  ( 2015-02-19 08:13:06 -0500 )edit

The PEAK netdev driver does not support the netlink bitrate setting, but uses a custom chardev interface. In additon you can pass a default bitrate to the driver module. However, the mainline kernel driver might be a better choice, especially with recent kernels..

Mathias Lüdtke gravatar image Mathias Lüdtke  ( 2015-02-19 08:17:23 -0500 )edit

Question Tools

3 followers

Stats

Asked: 2015-02-18 08:41:52 -0500

Seen: 1,606 times

Last updated: Feb 19 '15