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

Revision history [back]

I think the fundamentally, ROSJava and its android derivative are not references to a ros package. They are natively developed in JAVA. ROSJAVA is primarily been developed to allow ros on android devices.

The link above also describes how ROSJAVA nodes work. In android, an activity is the "program", that has a different structure to a cpp program in particular there is no main() function. As a result nodes are classes that run on a NodeMainExecutor Service which allows a main() type of program flow using the onStart method and a cancellable loop. Therefore in one activity you can have multiple nodes running each on their own thread, simply by initialising different classes and launching them on the NodeMainExecutor service.

These nodes, have pretty much all the basic features of normal c++ nodes. The notable exception are any ActionLib functions or types that dont work, but which are really only required in some of the more complex higherlevel stacks of ROS.

ROSJAVA also has a selection possible for a newMaster to be launched on application startup which will run a roscore element. This eliminates the need for any roscpp core to be launched. Your nodes will be registered with that core_node.

Hope this helps,

I think the fundamentally, ROSJava and its android derivative are not references to a ros package. They are natively developed in JAVA. ROSJAVA is primarily been developed to allow ros on android devices.

The link above also describes how ROSJAVA nodes work. In android, an activity is the "program", that has a different structure to a cpp program in particular there is no main() function. As a result nodes are classes that run on a NodeMainExecutor Service which allows a main() type of program flow using the onStart method and a cancellable loop. Therefore in one activity you can have multiple nodes running each on their own thread, simply by initialising different classes and launching them on the NodeMainExecutor service.

These nodes, have pretty much all the basic features of normal c++ nodes. The notable exception are any ActionLib functions or types that dont work, that arent implemented, but which are really only required in some of the more complex higherlevel stacks of ROS.

ROSJAVA also has a selection possible for a newMaster to be launched on application startup which will run a roscore element. This eliminates the need for any roscpp core to be launched. Your nodes will be registered with that core_node.

Hope this helps,

I think the fundamentally, ROSJava and its android derivative are not references to a ros package. They are natively developed in JAVA. ROSJAVA is primarily been developed to allow ros on android devices.

The link above also describes how ROSJAVA nodes work. In android, an activity is the "program", that has a different structure to a cpp program in particular there is no main() function. As a result nodes are classes that run on a NodeMainExecutor Service which allows a main() type of program flow using the onStart method and a cancellable loop. Therefore in one activity you can have multiple nodes running each on their own thread, simply by initialising different classes and launching them on the NodeMainExecutor service.

These nodes, have pretty much all the basic features of normal c++ nodes. The notable exception are any ActionLib functions or types that arent implemented, but which are really only required in some of the more complex higherlevel stacks of ROS. to implement these you may need to write a proxy node in another language that can communicate via a pub or sub to your rosjava node

ROSJAVA also has a selection possible for a newMaster to be launched on application startup which will run a roscore element. This eliminates the need for any roscpp core to be launched. Your nodes will be registered with that core_node.

Hope this helps,