[ros-users] [Discourse.ros.org] [ROS-Industrial] Fully Open Source (Industrial) Robotics Controller

Alexander Rössler via Discourse.ros.org ros.discourse at gmail.com
Wed Jan 9 13:02:42 UTC 2019

[quote="vmayoral, post:29, topic:5832"]

Im not familiar with the Borunte BRTIRUS0805A robot but it sounds like youre running the controller directly in the FPGAs, right? If thats the case, its rather similar to what were doing with the [ORC ](https://acutronicrobotics.com/products/orc/) (it has a big FPGA inside). Could you share a bit more about the difficulties you found while interfacing with the Borunte arm?


Yes, the Mesa-Electronics Anything I/O cards use Xilinx Spartan 6 FPGA for step generation and to process encoder feedback. The cards themselves are connected via Ethernet to the Linux host computer. The driver is called [hostmot2](http://www.machinekit.io/docs/man/man9/hostmot2/) and works via an open protocol called "TRAM". In short, the cards communicate with the host PC via a best-effort UDP connection/ No problem since there is a direct connection between the MESA card and the PC.

The hostmot2 source code, both from the [FPGA](https://github.com/LinuxCNC/hostmot2-firmware) and the [driver](https://github.com/machinekit/machinekit/tree/master/src/hal/drivers/mesa-hostmot2) are open-source. Some devs from the Machinekit community ported the FPGA code to [SoC platforms](https://github.com/machinekit/mksocfpga). A group from Germany created a fully open source AC servo drive also using the protocol but implemented on a uC (see [STMBL](https://github.com/rene-dev/stmbl)).

The greatest difficulty I faced was wiring up the new controller cards. Every AC servo has at least 10 I/O connections that times six gives a lot of wires to connect. Not a problem, but half of my cables harnesses where wired incorrectly, so I had to do at least twice... If I built a productions system, I would go for a solution that either uses EtherCAT or hostmot2 to interface with the AC servo drives, saving lot's work wiring up the electric cabinet.

The Machinekit part of the setup was relatively straight-forward for me. A challenge was the emergency stop and following error detection implementation.

The ROS part with hal_ros_control is straightforward, it's just a matter of connecting the robot HAL pins to the exposed ros_control HAL pins.


[Visit Topic](https://discourse.ros.org/t/fully-open-source-industrial-robotics-controller/5832/30) or reply to this email to respond.

More information about the ros-users mailing list