[ros-users] [Discourse.ros.org] [General] Why don't we use R…

Top Page
Attachments:
Message as email
+ (text/plain)
Delete this message
Reply to this message
Author: Bas de Bruijn via ros-users
Date:  
To: ros-users
CC: Bas de Bruijn
Subject: [ros-users] [Discourse.ros.org] [General] Why don't we use ROS?


Hi, long time lurker here :)

I think this remark of Chris Albertson about low level hardware control is spot on.

Allow me to shamelessly plug a project which addresses this issue :)
Ive been participating in another Open Source project called Machinekit, which is fills the gap of low level hardware control.
Machinekit is a real-time motion/io control stack. Forked from LinuxCNC a few years ago. It can be used in more applications than CNC control though.

The gem in Machinekit and LinuxCNC is the HAL layer, the Hardware Abstraction layer. Developing a system is done by configuring it, instead of programming/compiling. One basically wires components together and puts these functions on an execution thread.
The realtime thread typically has a cycle time of 1ms, but can be faster/slower depending on hardware.
This means that interfacing with a DC motor, or a stepper motor does not change the system other than choosing a different component and hardware.
One can change the running realtime system on the fly by adding/removing components and (re)wiring them.
Theres also are C/C++/Python API so one can interface from a (userland) application with the realtime HAL.

Machinekit runs on linux platforms, typically Debian, with ARM/x86/x64 hardware, an example would be a Beaglebone Black where the PRUs do the realtime tasks, a PC with Mesanet PCI FPGA card and daughterboard, or a De0 nano SOC which includes the PFGA. The Mesanet firmware (which is very stable) also runs on this. Making re-use of the industrial Mesanet daughterboards possible.

So instead of doing path planning in realtime, we can do off line" planning with ROS (ROS does the path planning) and we take this trajectory as input.
An example (prototype, proof of concept) is here: The trajectory is put into a HAL ringbuffer by a ROS node written in Python. Machinekit HAL components then read from the ringbuffer, interpolates the segments and gets the motors moving.
video: https://youtu.be/6Mzok9r9k88

We would love to one day have a generic ros_control node to interface with the HAL layer.





---
[Visit Topic](https://discourse.ros.org/t/why-dont-we-use-ros/3161/12) or reply to this email to respond.


If you do not want to receive messages from ros-users please use the unsubscribe link below. If you use the one above, you will stop all of ros-users from receiving updates.
______________________________________________________________________________
ros-users mailing list

http://lists.ros.org/mailman/listinfo/ros-users
Unsubscribe: <http://lists.ros.org/mailman//options/ros-users>