rosjava / android_apps Goto Github PK
View Code? Open in Web Editor NEWApplications built on top of the rosjava android libraries.
Applications built on top of the rosjava android libraries.
Bill pointed this out when talking about making sure we store released android app binaries.
https://github.com/blog/1547-release-your-software
Let's look into it for any releases of future versions.
Nothing getting through to the robot app to force stoppage.
For direct connections the app manager currently uses the default app hardcoded into the android app (e.g. https://github.com/ros-java/android_apps/blob/hydro-devel/teleop/src/main/res/values/strings.xml).
This information is not used when using the robot remocon. If at some points it turns out that direct connections are essential, we should find a way to configure default rapps for android apps in the app manager.
The new robot app manager is aware and controls access to remote controllers and has both Invite and Status services to reflect that.
The master checker should check the status handle and:
These Android apps here have been around for a while now and we got to a point where we need to start thinking about how to handle different versions of the same app in order to support multiple versions of ROS.
Currently we use Google Play and unfortunately it doesn't allow publishing of multiple versions of the same app (i.e. package name), unless it has to do with hardware requirements (It offers a fix amount of filters; look here for details: Android Developers).
So for now we probably have no other option then publishing multiple versions of the same app as different apps, e.g. Android Teleop Groovy, Android Teleop Hydro. For the package name - that's the important part - this answer from StackOverflow recommends to just append the version name to the existing package name, e.g. com.github.ros_java.android_apps.teleop.groovy.
Anyone knows a better solution than the above?
It would be very useful if the ranges of the topic "cmd_vel" should be customizable.
As far as I know, the virtual joypad emits normalized values for X and Y axis in the range [-1,+1]
It's ok for robots that have maximum forward speed of 1.0 m/sec and maximum rotation speed of 1 rad/sec, but there exists robots faster and robots slower.
What I'm suggesting is to add 2 text fields (or 2 sliders) to adjust the muximum forward and rotation values... the value from the two field (or sliders) must simply be multiplied to the value extracted by the movement of the joypad.
Values are calculated here:
https://github.com/ros-android/android_app_manager/blob/master/src/ros/android/views/JoystickView.java#L136
https://github.com/ros-android/android_app_manager/blob/master/src/ros/android/views/JoystickView.java#L137
I have rplidar A2. and I want use the APP: make a map?
I run gmapping in my ubuntu .
but in android is nothing map .
I want to save map. but have some Error:
No such service /save_map of type world_canvas_msgs/SaveMap
please help me thx.
Android apps cannot read diagnostics messages from concerts. This a known behavior, and cannot be fixed by now until reviewing concert working. So I label this as enhancement instead of bug
I am connected via wifi with the turtlebot. Enter the robot URI in the app and click connect. And the app crashes.. Anything? turtlebot is running hydro
Thanks
TODO:
I tried to clone 'indigo''s brach.
I noticed that the 'addLayer' part was removed from visualization view and I replaced the code
as stated in #42
However, after I replaced
mapView.addLayer(viewControlLayer);
mapView.addLayer(occupancyGridLayer);
mapView.addLayer(laserScanLayer);
mapView.addLayer(pathLayer);
mapView.addLayer(mapPosePublisherLayer);
mapView.addLayer(initialPoseSubscriberLayer);
to
mapView.onCreate(Lists.<Layer>newArrayList(viewControlLayer,occupancyGridLayer,laserScanLayer,pathLayer,mapPosePublisherLayer,initialPoseSubscriberLayer));
I get the following error:
Process: com.github.rosjava.android_apps.map_nav.indigo, PID: 10757
java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:309)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.IllegalStateException: setRenderer has already been called for this instance.
at android.opengl.GLSurfaceView.checkRenderThreadState(GLSurfaceView.java:1935)
at android.opengl.GLSurfaceView.setEGLConfigChooser(GLSurfaceView.java:470)
at android.opengl.GLSurfaceView.setEGLConfigChooser(GLSurfaceView.java:539)
at org.ros.android.view.visualization.VisualizationView.onCreate(VisualizationView.java:81)
at com.github.rosjava.android_apps.map_nav.MainActivity.init(MainActivity.java:161)
at org.ros.android.RosActivity$2.doInBackground(RosActivity.java:204)
at org.ros.android.RosActivity$2.doInBackground(RosActivity.java:201)
at android.os.AsyncTask$2.call(AsyncTask.java:295)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
Originally I assumed that it is because "mapview.oncreate(Lists.newArrayList());" was declared in oncreate method
After I erased that code, new error came up saying:
Process: com.github.rosjava.android_apps.map_nav.indigo, PID: 14839
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.opengl.GLSurfaceView$GLThread.surfaceCreated()' on a null object reference
at android.opengl.GLSurfaceView.surfaceCreated(GLSurfaceView.java:629)
at android.view.SurfaceView.updateWindow(SurfaceView.java:712)
at android.view.SurfaceView$3.onPreDraw(SurfaceView.java:209)
at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:1014)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2560)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1487)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7450)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:920)
at android.view.Choreographer.doCallbacks(Choreographer.java:695)
at android.view.Choreographer.doFrame(Choreographer.java:631)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:906)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7229)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
I tried checking every single libraries that are stated in error logs but I still cannot figure out what seems to be the problem.. Does any one have any idea?
Any suggestion would be appreciated..
If someone knows a directory that works, please do tell me.
My furthest and only assumption is that library is not directed properly..
Hi, I'm wondering whether ROS teleop can be used to control custom robots, instead of just the turtlebot? Because when I ran the app, I got the following error message:
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
It seems that it's looking for a turtlebot specific service /turtlebot/start_app. I'm wondering whether such dependency is needed. Thanks
Need a new idea for the dashboard so folks don't have to 'magically' download the dashboard they need.
Off the top:
Probably implement the latter with an option for the former if a robot implements a custom dashboard. What were kazuto's plans?
While demoing make a map & map nav apps, they were often crashing the apps.. Need an investigation.
As we drop the map_store and replace with world canvas database
Similar to robot_remocon's robot master chooser.
android_apps/map_nav/src/main/java/com.github.rosjava.android_apps.map_nav/MapPosePublisherLayer.java:10: error: package move_base_msgs does not exist
import move_base_msgs.MoveBaseActionGoal;
It doesn't recognize move_base_msgs, even i has at repository folder with jars: org/ros/rosjava_messges/move_base_msgs
and at build.gradle of map_nav i have this line:
compile 'org.ros.rosjava_messages:move_base_msgs:[1.11,1.12)'
and it compile and don't say that this package are missing.
For example, Willow maps.
OccupancyGridLayer, lines 104 and 105 it check for a maximum size of 1024x1024 with Preconditions.checkArgument, what throws an exception if the map is bigger.
Provide instead a polite message and ask to choose another map. Also, the hardcoded 1024 should be a parameter.
/opt/android/src/android_apps/map_nav/src/main/java/com/github/ros_java/android_apps/map_nav/MapPosePublisherLayer.java:119: error: method toPoseStampedMessage in class Transform cannot be applied to given types;
poseStamped = fixedPose.toPoseStampedMessage(
^
required: FrameName,Time,PoseStamped
Relevant update in rosjava_core: rosjava/rosjava_core@3e1bafa
Add this to the app manager so we can start retrieving icons and remove the redundant parameter requirements.
While I was trying to build map_nav, I noticed that add layer part has several errors.
As I touched mini view at upper right side (the occupancy layer preview), the map just disappears
and only arrows and paths appears.
I tried to fix this problem by loading separate "main activity" and two layouts.
Initially, the map appears in large scale and camera view appears in small scale (first layout, swaped view in xml file).
If I touch the camera preview at upper right side, MainActivity is loaded again with different layout (the one that is in git hub, camera view in larger scale and map in smaller scale).
This method succeeded in loading map, however, the arrow and paths did not appear.
If I press the map for a long time, arrows and paths appears and simultaneously, another arrow appears at the position I long pressed but map still disappears.
So far, I figured out that I cannot call "occupancylayout" class and "lase", "path", " initial pose" classes at the same time. In another words, if the GLsurfaceview draws laser, path and initial pose, occupancy class is not called.
However, occasionally, highly rarely, occupancylayer class is called and map is shown in a short amount of time.
Does anyone have solution to original problem or to my solution?
mapView.addLayer(occupancyGridLayer);
mapView.addLayer(laserScanLayer);
mapView.addLayer(pathLayer);
mapView.addLayer(mapPosePublisherLayer);
mapView.addLayer(initialPoseSubscriberLayer);
mapView.addLayer(viewControlLayer)
Thank you.
Cannot start listener directly with an app manager in pairing mode or standalone mode.
This is a probably by-product of the recent standalone-paired-concert overhaul by Jorge.
It only shows a black picture with occasional orange artefacts.
This error is happened when I start a App(Make A Map or others).I set ip and port,it can connected ,but one second it crashed. I find this code is at RosAppActivity line number 117.
How do we get those message into rosjava/android (@stonier any idea)?
Btw, map_store has been catkinized recently: https://github.com/ros-planning/map_store
In map_nav's MainActivity (and propably in the other apps, too) the call to VisualizationView.onCreate is made in the Activity's init method and not in onCreate, as demanded by the documentation of VisualizationView. Furthermore VisualizationView.init isn't called at all.
This might work under some circumstances, but when running the current head of the indigo branch on an Android 4.0 device, the app crashed every time on startup throwing a NullPointerException in SurfaceView.updateWindow. The stack didn't include any custom/rosjava methods.
Calling VisualzationView.onCreate and init in the designated methods fixed the problem.
I'd submit a pull request, but the fix needs some architectural changes in the layers, which you might want to do yourself.
@corot - this is the discussion thread we need to have about making this happen.
Hello!
I'm trying to test the android_tutorial_image_transport to receive video on my android. I've set up ROS_IP accordingly and I'm able to connect to the master but no video is received and I get the following error:
E/UpdatePublisherRunnable﹕ org.ros.internal.node.xmlrpc.XmlRpcTimeoutException: org.apache.xmlrpc.client.TimingOutCallback$TimeoutException: No response after waiting for 10000 milliseconds.
What could be causing this and is there as way to fix it? Thanks in advance!
All of the sudden I've started getting this error, when trying to compile/build android_apps:
Could not create plugin of type 'LibraryPlugin'.
I'm trying to add new activity called "SecondMainActivity"
This activity does exact same function as MainActivity in MainActivity except location of RosImageView and Visualization view are changed with each other.
Apparently, I have to register SecondMainActivity in Mainfest however, I failed because "SecondMainActivity" is not in the package "com.github.rosjava.android_apps.map_nav"
Could you please help..?
The reason why I am doing this is because when I click the visualization view(small rectangle shape on right upper part, AKA mapview) the map disappears and only an arrow is shown...
So rather than fixing the source library, I chose to make new activity which I think would be more easier.
Convert all the apps in this repo to use finish() instead of onDestroy().
Shouldn't call onDestroy() directly - all the apps in this repo are. This results in multiple calls to onDestroy() and subsequently multiple stop app calls. Refer to #3.
Currently, Make A Map
app and Map Nav
app show the robot pose via getting robot frame from tf message. This way is able to be useful in single robot environment. However, Using tf message is impossible in multi-robot environment like concert because tf message can not be sharable.
To more detail, when android app tries to show pose of specific robot among multi-robot using tf message, it can not know what robot pose should be shown from tf message because all robots publish the same frame name into tf message. Thus, we should use robot_pose_publisher to display robot pose in android app regardless of single robot and multi robot run time environments like qt_make_a_map.
Fixed in classes, but directories need to be moved too.
I got following errors in building map_nav module in Android Studio.
Error:(161, 16) error: cannot find symbol method addLayer(ViewControlLayer)
Error:(162, 16) error: cannot find symbol method addLayer(OccupancyGridLayer)
Error:(163, 16) error: cannot find symbol method addLayer(LaserScanLayer)
Error:(164, 16) error: cannot find symbol method addLayer(PathLayer)
Error:(165, 16) error: cannot find symbol method addLayer(MapPosePublisherLayer)
Error:(166, 16) error: cannot find symbol method addLayer(InitialPoseSubscriberLayer)
I post the same problem in ros answer as well. Plz help!! Thanks!!
http://answers.ros.org/question/220324/building-android_apps-errors-on-android-studio/
Most of the apps utilised the old Camera class which got updated for indigo. This stops map_nav
, make_a_map
, map_manager
from compiling.
draw(gl)
-> draw(view, gl)
onStart(node, handler, frametree, camera)
-> onStart(view, node)
camera
-> view.getCamera()
frameTransformTree
-> view.getFrameTransformTree()
view.addLayer()
-> view.onCreate(Lists.<Layer>newArrayList(layer_a, layer_b));
handler.post()
-> view.pose()
Alot of startup logic that redirects the flow depending on whether its an app or remocon - ultimately making the rosappactivity difficult to work with. Not much of it is correlated, so probably better to split the two.
This happens when the app manager is currently running something.
Master is a moving target that we can't commit development time to keep up with as we don't have anyone continuously working on the android code.
To avoid confusion, base our development branch off the core hydro branches and update to igloo when the cores have stable igloo branches as well.
We have to correct the apps naming.
Can't close properly when run in standalone mode.
Need to check this - I was setting the paired system up with an auto-invite earlier. Now that's not there, the direct application connections wont find start_app and stop_app.
Listener getting duplicate requests for both the listener and robot remocon.
Duplicate finish request for ActivityRecord...com.github.robotics_in_concert.rocon_android.robot_remocon/.RobotRemocon
Hi guys.
I'm working on the code structure of the teleop of turtlebot (hydro).
Is there anyway possible to find out what code is being sent out when i shift the joystick up, down, left, etc?
I understand that the joystick it self is being imported from:
import org.ros.android.view.VirtualJoystickView;
From the best of my knowledge, I can't really figure out which part of the whole source code actually has the code that I'm looking for
I would like to play around with GUI itself. Well, let's say just inserting a 4 directional buttons (up, down, left, right) to move to the turtlebot.
What is the code that is needed to be sent out here?
How may i go about doing this?
Any help will be greatly appreciated. Thank you! :)
I updated android apps because of upgrading android core into indigo. I found some strange code(following part). It led periodic socket error, however, its error did not make a trouble, so I commented this part because it annoyed me. I was wondering purpose of following part.
// NtpTimeProvider ntpTimeProvider = new NtpTimeProvider(
// InetAddressFactory.newFromHostString("192.168.0.1"),
// nodeMainExecutor.getScheduledExecutorService());
// ntpTimeProvider.startPeriodicUpdates(1, TimeUnit.MINUTES);
// nodeConfiguration.setTimeProvider(ntpTimeProvider);
Hello,
When following the tutorial , I got this error:
Error:Connection timed out: connect. If you are behind an HTTP proxy, please configure the proxy settings either in IDE or Gradle.
I'm not behind an HTTP proxy. Is the android_apps repository still available ?
Implement the full package string in the intent from a managing application of a RosAppActivity application.
This lets us hand back control without having to hardcode it to a single particular activity (I think).
Doesn't seem to get used anywhere, but its an important element.
Lots of code that was basically detecting its own instance (ros app or app chooser or app chooser returning from an application) and creating alot of forked pathways in the class itself. Since not much of it is actually shared, we decided to split the classes as it is a hell of alot easier to debug.
Now just have to trim out the fat that we're not using in RosAppActivity.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.