How to use android ROS teleop to control custom robot?
It seems that ROS teleop (https://play.google.com/store/apps/details?id=com.github.rosjava.android_apps.teleop) is designed to control turtlebot only. I wonder whether anyone knows how to have it control a custom robot (as only Twist message is needed)?
The developer, OSRF, has several other apps that are useful to control other robot as well. It will be great if anyone knows how to use them on custom robots. Thanks
[Edit] Btw, the reason I asked is that when I run the app on android, the following error occurs. It seems that it is looking for turtlebot specific service /turtlebot/start_app. So I'm wondering how to get around it. Appreciated.
03-20 09:11:42.048: E/AndroidRuntime(20661): Process: com.github.rosjava.android_apps.teleop, PID: 20661
03-20 09:11:42.048: E/AndroidRuntime(20661): org.ros.exception.RosRuntimeException: org.ros.exception.ServiceNotFoundException: No such service /turtlebot/start_app of type rocon_app_manager_msgs/StartApp
03-20 09:11:42.048: E/AndroidRuntime(20661): at com.github.rosjava.android_apps.application_management.AppManager.startApp(AppManager.java:138)
03-20 09:11:42.048: E/AndroidRuntime(20661): at com.github.rosjava.android_apps.application_management.AppManager.onStart(AppManager.java:202)
03-20 09:11:42.048: E/AndroidRuntime(20661): at org.ros.internal.node.DefaultNode$5.run(DefaultNode.java:506)
03-20 09:11:42.048: E/AndroidRuntime(20661): at org.ros.internal.node.DefaultNode$5.run(DefaultNode.java:503)
03-20 09:11:42.048: E/AndroidRuntime(20661): at org.ros.concurrent.EventDispatcher.loop(EventDispatcher.java:43)
03-20 09:11:42.048: E/AndroidRuntime(20661): at org.ros.concurrent.CancellableLoop.run(CancellableLoop.java:56)
03-20 09:11:42.048: E/AndroidRuntime(20661): Caused by: org.ros.exception.ServiceNotFoundException: No such service /turtlebot/start_app of type rocon_app_manager_msgs/StartApp
03-20 09:11:42.048: E/AndroidRuntime(20661): at org.ros.internal.node.DefaultNode.newServiceClient(DefaultNode.java:356)
03-20 09:11:42.048: E/AndroidRuntime(20661): at org.ros.internal.node.DefaultNode.newServiceClient(DefaultNode.java:372)
03-20 09:11:42.048: E/AndroidRuntime(20661): at com.github.rosjava.android_apps.application_management.AppManager.startApp(AppManager.java:134)
03-20 09:11:42.048: E/ActivityManager(643): App crashed! Process: com.github.rosjava.android_apps.teleop
Asked by PT on 2015-03-19 15:35:19 UTC
Answers
The documented interface for android_teleop, using a Twist on the topic 'cmd_vel' is the standard control command for all ROS platforms. It's the default output for move_base and all telop tools provide that same output such as joystick and keyboard.
Asked by tfoote on 2015-03-19 16:30:35 UTC
Comments
@PT: So, just to clarify: any robot (driver) that can accept Twist
messages should be compatible with the teleop app, not just the turtlebot.
Asked by gvdhoorn on 2015-03-20 06:58:34 UTC
@gvdhoorn: Thanks for your explanation. That's what I thought too. However, when I ran the app, some error occurred (see edited post). So, I'm wondering how to get around it.
Asked by PT on 2015-03-20 08:24:46 UTC
Hm, that seems like a rather strong dependency. Perhaps you could report this as an issue on the android_apps tracker?
Asked by gvdhoorn on 2015-03-20 08:43:13 UTC
Just did so. Thanks
Asked by PT on 2015-03-20 09:07:54 UTC
Comments