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

diff between Ros driver and normal linux driver

asked 2014-12-18 06:30:11 -0500

shah shufi gravatar image

updated 2014-12-18 07:17:35 -0500

Hello, i am very new in ROS

i have a coupled of questions,

What is the difference between linux driver and ROS driver?

Application code should be in c++ or in C works?

How 2d and 3d sensor works?

i have to capture specific object, how can i do it without using kinet?

Thanks in Advance

please answer as i am stuck badly, i will keep you in prayer

edit retag flag offensive close merge delete


please help

shah shufi gravatar image shah shufi  ( 2014-12-18 07:16:55 -0500 )edit

Your project sounds really complex to me. I think yu should have already clear which hardware, devices, and already existing frames exist to develop such a robot. Since your target seems very high, I cannot judge whether ROS is ok for you or not

Andromeda gravatar image Andromeda  ( 2014-12-19 06:06:41 -0500 )edit

2 Answers

Sort by ยป oldest newest most voted

answered 2014-12-18 07:17:22 -0500

Andromeda gravatar image

updated 2014-12-19 01:24:16 -0500

Usually you don't have to take care about that. ROS is a framework in which you write C++ (C++03) applications which dialog with the underlyind drivers. Take as an example a joystick. You plug the joystick in the PC and it will be recognized by the linux kernel. If you want to use the joystick In ROS then you write an application which commnicates with those drivers. So you don't touch the hardware directly. Simply look for a linux driver for that device and don't care about it anymore. The main idea behind this concept is that ROS takes care about communication betweens many nodes, that's all. In this way you install a sensor/hardwware/device in linux as you never heard about ROS. The related device's drivers usually let you to speak directly to the hardware or provides some useful functions, that can be called from your code. The next step is then writing a code in ROS which dialogs with those drivers but doesn't touch your device/sensors... and for this you must use C++

In a rare case, where you need to write C or to create an interface for a device, which has/has no C++ support, you can use the following C++ directive in your surce file:

extern "C" {
// code

and write C code.

Or we can have the following situation. You have bought a new device, let's say a 9 DOF accelerometers, gyroscope and magnetometer ( ). And for this device you don't have any driver yet. The only thing you want is to get data from the device for your application. What you can do is getting the serial raw data output from the device into ROS though serial interface (with rosserial) and there write your application for working with that datas. In this case you didn't need specifically a driver for that device. In the same manner you could plug your camera, a sensor, a I2C interface, and so on.

For many motor drivers, interfaces and so on there are ready to use ROS-packages available. On the next level you need (maybe) a package to work with that datas and...for example, implement a Kalman filter for your application. Even in that case you have many available ROS-packages raedy to use. So you don't need to write and debug your Kalman filter, spending 2 months of your life debbing that code. Some other people wrote already a stable application (package) and share it with others. Another example could be kinematic transformation for a robot arm. If you look in a book about robotics you understand very fast, that writing a code for that is too expansive.

Why ROS: the main idea behind ROS concept's is: we have many applications (nodes) which differents tasks. What I need is a way to let them to comunicate (publishing and listening) each other those streams (topics) of informations. Thats all.


edit flag offensive delete link more



shah shufi gravatar image shah shufi  ( 2014-12-19 00:34:37 -0500 )edit

@shah shufi Please try to ask smaller more concrete questions in the future that can have concrete answers and don't couple several questions together so different people can answer the different questions.

tfoote gravatar image tfoote  ( 2014-12-23 22:25:05 -0500 )edit

answered 2014-12-19 00:35:23 -0500

shah shufi gravatar image

but i am confused why i need ROS..? i can work with sensors without ROS right?

edit flag offensive delete link more


it depends not on ROS. It depends on what you want to do. For the same project one can use Matlab, Scilab or what else. Please update your original question with your target, idea or concept. Otherwise is very difficult to help you

Andromeda gravatar image Andromeda  ( 2014-12-19 01:22:04 -0500 )edit

Actually i want to make robot, which can identify some specific object and want to move my robot at their location, Lets say i want to identify bomb, then my robot should identify that and then go to bomb to defuse it. for that with embedded board which thing (sensor or anything else) i have to use?

shah shufi gravatar image shah shufi  ( 2014-12-19 04:51:51 -0500 )edit

Question Tools


Asked: 2014-12-18 06:30:11 -0500

Seen: 609 times

Last updated: Dec 19 '14