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

Revision history [back]

click to hide/show revision 1
initial version

everything happens locally through http and ports

I'm not sure I follow here: what 'ports' are you referring to specifically?

In any case: I'm not an iPhone dev (so I'm not too aware of the limitations that you are faced with) but you could take a look at rosbridge_suite. It essentially provides a JSON interface into a ROS application that you can then communicate with using anything that can work with JSON (which is just about anything these days). There are various implementations of rosbridge clients, but probably not in languages that are interesting when developing on iOS, such as Rosbridge .NET Client and h2r/java_rosbridge, and the 'minimal Python client' that is available as part of rosbridge_library in rosbridge_suite itself.

And there are some projects that implement a plain HTTP REST interface to a ROS application, such as rostful.

All of the above will require a bridge node running in your ROS application, they do not implement a native ROS client library.

If you'd like to avoid the bridging approach, an alternative might be rosnodejs, which is a Node JS based ROS client library that foregoes the JSON serialisation of rosbridge.

If you are not limited to ROS 1, you might be interested in esteve/ros2_objc, which is an Obj-C client library for ROS 2. Using ROS 2 is probably a good idea with mobile devices anyway, due to the fact that they typically use (lossy) wireless networks.


There have been some efforts in the past to implement Obj-C native client libraries, such as younata/rosobjc and a Obj-C rosbridge client wesgood/RBManager. But afaik those projects are abandoned or no longer compatible.

everything happens locally through http and ports

I'm not sure I follow here: what 'ports' are you referring to specifically?

In any case: I'm not an iPhone dev (so I'm not too aware of the limitations that you are faced with) but you could take a look at rosbridge_suite. It essentially provides a JSON interface into a ROS application that you can then communicate with using anything that can work with JSON (which is just about anything these days). There are various implementations of rosbridge clients, but probably not in languages that are interesting when developing on iOS, such as Rosbridge .NET Client and h2r/java_rosbridge, and the 'minimal Python client' that is available as part of rosbridge_library in rosbridge_suite itself.

And there are some projects that implement a plain HTTP REST interface to a ROS application, such as rostful.

All of the above will require a bridge node running in your ROS application, they do not implement a native ROS client library.

If you'd like to avoid the bridging approach, an alternative might be rosnodejs, which is a Node JS based ROS client library that foregoes the JSON serialisation of rosbridge.

If you are not limited to ROS 1, you might be interested in esteve/ros2_objc, (Discourse announcement here), which is an Obj-C client library for ROS 2. Using ROS 2 is probably a good idea with mobile devices anyway, due to the fact that they typically use (lossy) wireless networks.


There have been some efforts in the past to implement Obj-C native client libraries, such as younata/rosobjc and a Obj-C rosbridge client wesgood/RBManager. But afaik those projects are abandoned or no longer compatible.

everything happens locally through http and ports

I'm not sure I follow here: what 'ports' are you referring to specifically?

In any case: I'm not an iPhone dev (so I'm not too aware of the limitations that you are faced with) but you could take a look at rosbridge_suite. It essentially provides a JSON interface into a ROS application that you can then communicate with using anything that can work with JSON (which is just about anything these days). There are various implementations of rosbridge clients, but probably not in languages that are interesting when developing on iOS, such as Rosbridge .NET Client and h2r/java_rosbridge, and the 'minimal Python client' that is available as part of rosbridge_library in rosbridge_suite itself.

And there are some projects that implement a plain HTTP REST interface to a ROS application, such as rostful.

All of the above will require a bridge node running in your ROS application, they do not implement a native ROS client library.

If you'd like to avoid the bridging approach, an alternative might be rosnodejs, which is a Node JS based ROS client library that foregoes the JSON serialisation of rosbridge.

If you are not limited to ROS 1, you might be interested in esteve/ros2_objc (Discourse announcement here), which is an Obj-C client library for ROS 2. Using ROS 2 is probably a good idea with mobile devices anyway, due to the fact that they typically use (lossy) wireless networks.networks. Note that I don't know what the status is of ros2_objc, you'd have to ask Esteve.


There have been some efforts in the past to implement Obj-C native client libraries, such as younata/rosobjc and a Obj-C rosbridge client wesgood/RBManager. But afaik those projects are abandoned or no longer compatible.

Edit: wesgood/RBManager seems to have been upgraded. New repo: wesgood/RBSManager. From the readme:

A Swift-native library for handling the WebSocket connection to a Robot Operating System (ROS) master running ROSBridge. Control your robots with a mobile phone.


Old answer:

everything happens locally through http and ports

I'm not sure I follow here: what 'ports' are you referring to specifically?

In any case: I'm not an iPhone dev (so I'm not too aware of the limitations that you are faced with) but you could take a look at rosbridge_suite. It essentially provides a JSON interface into a ROS application that you can then communicate with using anything that can work with JSON (which is just about anything these days). There are various implementations of rosbridge clients, but probably not in languages that are interesting when developing on iOS, such as Rosbridge .NET Client and h2r/java_rosbridge, and the 'minimal Python client' that is available as part of rosbridge_library in rosbridge_suite itself.

And there are some projects that implement a plain HTTP REST interface to a ROS application, such as rostful.

All of the above will require a bridge node running in your ROS application, they do not implement a native ROS client library.

If you'd like to avoid the bridging approach, an alternative might be rosnodejs, which is a Node JS based ROS client library that foregoes the JSON serialisation of rosbridge.

If you are not limited to ROS 1, you might be interested in esteve/ros2_objc (Discourse announcement here), which is an Obj-C client library for ROS 2. Using ROS 2 is probably a good idea with mobile devices anyway, due to the fact that they typically use (lossy) wireless networks. Note that I don't know what the status is of ros2_objc, you'd have to ask Esteve.


There have been some efforts in the past to implement Obj-C native client libraries, such as younata/rosobjc and a Obj-C rosbridge client wesgood/RBManager. But afaik those projects are abandoned or no longer compatible.