Drivers implementation for ROS - rtt_soem

More
02 Aug 2021 07:39 #216670 by juniorfi
Hello,


I'm looking forward to implement few of the drivers you have made for LinuxCNC to work with ROS.
Actually I got working many of the Beckhoff EtherCAT terminals, but I have some issues to get working the x9xx (TwinSAFE).

I'm working based on this rtt_soem . I know that the drivers aren't made in same way. But looking to try to get the information needed to get working: EL6900 and EL2904.

Maybe @sittner know about it?.


Regards

Please Log in or Create an account to join the conversation.

More
03 Aug 2021 07:17 #216788 by andypugh
You might need to make your question more obviously about EtherCAT, and ask it in the EtherCAT section.

Please Log in or Create an account to join the conversation.

More
03 Aug 2021 07:40 #216793 by juniorfi
I had not seen that section. I will put the message there.

Thanks

Please Log in or Create an account to join the conversation.

More
03 Aug 2021 10:00 #216799 by andypugh

I had not seen that section. I will put the message there.

I just looked, and there isn't an EtherCAT section. Sorry about that. 

There are EtherCAT threads in "Driver Boards", "HAL" and "Advanced Configuration". 

I think that there probably should be an EtherCAT section, but I am not sure where to put it. 

 

Please Log in or Create an account to join the conversation.

More
03 Aug 2021 12:28 #216805 by tommylight
Probably in "Configuring LinuxCNC" or in "Hardware and Machines".
I am partial to first.

Please Log in or Create an account to join the conversation.

More
03 Aug 2021 12:46 #216809 by andypugh
Done. In fact we are there.

Please Log in or Create an account to join the conversation.

More
03 Aug 2021 17:18 #216854 by db1981
Hello,

i don't know if the soem already supports FSOE communication, i can't find anything about that... (Fail Safe Over Ethernet).

In an Fsoe System the FSOE Master of the Twinsafe Group (EL69XX) talks directly to the other TwinSafe Cards which are added to this group. (FSOE StateMachine, CRCs etc.) Your Master or your driver implementation has to do this packet routing. You can find the implementation of this in linuxcnc-ethercat in lcec.c and el6900.c .

A Twinsafe configuration has to be done in Twincat, and you can map external Bits to the status and control bits of the Twinsafe Group (run, error, reset ...)

Have a look at the pdo configuration in twincat to get an overview of this.

Please Log in or Create an account to join the conversation.

More
11 Aug 2021 09:41 - 11 Aug 2021 09:45 #217497 by juniorfi
Hello thanks for the reply.
I already saw a company that provides the FSOE implementation at some cost. But that will be not the way to go.

We turn a bit our research and we are looking forward to implement ROS with LinuxCNC.

I'm now trying to understand the code, see how HAL works to implement it with Orocos.
I put here the link in case someone want to have a look: github.com/orocos/rtt_ros_integration


I case someone knows about HAL code and how implementation can be done. I will glad to see those messages or hints.

I'm looking to interact right now, with the HAL configuration like in this example with ROS topics: github.com/grotius-cnc/hal-kinematics/blob/main/README.md

Any information is more than welcome.

Edit: With the last GitHub example I wanted to show the image. That process will be a good start point.

Regards
Last edit: 11 Aug 2021 09:45 by juniorfi.

Please Log in or Create an account to join the conversation.

More
11 Aug 2021 11:26 #217521 by andypugh

I case someone knows about HAL code and how implementation can be done. I will glad to see those messages or hints.

Basically your HAL driver needs to export pins to exchange data (in effect these are simply shared memory locations that map to different internal variables in more than one software module) and at least one function that will be polled every servo thread cycle. 

It might be easiest to start with the .comp preprocessing language. 

linuxcnc.org/docs/2.8/html/hal/comp.html

It is probable that with a complex driver you will run up against the limits of Halcompile, but it's a decent starting point. 

There are complete drivers written in .comp too, here is one for an ISA card:
github.com/LinuxCNC/linuxcnc/blob/master.../drivers/pcl720.comp

Please Log in or Create an account to join the conversation.

More
11 Aug 2021 12:43 #217537 by Roiki
You need to use a message buffer like hal_streamer to communicate from the userspace to rt space and back. So you would use hal_streamer to create a shared memory queue and then write a program that writes messages to that queue. C and python can be used.

Please Log in or Create an account to join the conversation.

Time to create page: 0.209 seconds
Powered by Kunena Forum