talregev / android_cv_bridge

rosjava android cv_bridge
13 stars 8 forks source link

android_cv_bridge_tutorial not running #1

Closed kejriwalnishant1990 closed 9 years ago

kejriwalnishant1990 commented 9 years ago

I am trying to run your tutorial on android_cv_bridge but it is throwing following error. I am subscribing the image topic(/camera/rgb/image_color) from kinect in android phone. I ahve made my laptop as master and android phone as client.

org.ros.android.android_tutorial_cv_bridge E/roid_tutorial_cv_bridge﹕ cv_bridge exception: Unrecognized image encoding [bgr8] org.ros.android.android_tutorial_cv_bridge E/art﹕ No implementation found for void org.opencv.core.Mat.n_delete(long) (tried Java_org_opencv_core_Mat_n_1delete and Java_org_opencv_core_Mat_n_1delete__J) org.ros.android.android_tutorial_cv_bridge E/System﹕ Uncaught exception thrown by finalizer org.ros.android.android_tutorial_cv_bridge E/System﹕ java.lang.UnsatisfiedLinkError: No implementation found for void org.opencv.core.Mat.n_delete(long) (tried Java_org_opencv_core_Mat_n_1delete and Java_org_opencv_core_Mat_n_1delete__J) at org.opencv.core.Mat.n_delete(Native Method) at org.opencv.core.Mat.finalize(Mat.java:2475) at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:191) at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:174) at java.lang.Thread.run(Thread.java:818)

talregev commented 9 years ago

I will check it. Can you past an example code here?

kejriwalnishant1990 commented 9 years ago

@Override public void onStart(ConnectedNode connectedNode) { this.node = connectedNode; final org.apache.commons.logging.Log log = node.getLog(); imageSubscriber = node.newSubscriber("/camera/rgb/image_color", Image._TYPE); imageSubscriber.addMessageListener(new MessageListener() { @Override public void onNewMessage(Image message) { CvImage cvImage;

          try {
                cvImage = CvImage.toCvCopy(message,"bgr8");
              System.out.print(cvImage.encoding);
          } catch (Exception e) {
              log.error("cv_bridge exception: " + e.getMessage());
              return;
          }
          if (cvImage.image.rows() > 60 && cvImage.image.cols() > 60)
              Core.circle(cvImage.image, new Point(50, 50), 10, new Scalar(255,0,0));

          System.out.print("Size of the image subscribed \t");
          System.out.print(cvImage.image.rows());
          System.out.print(cvImage.image.cols());

          Imshow im = new Imshow("Subscribed image");
          im.showImage(cvImage.image);
          try {
              im.wait(200);
          } catch (InterruptedException e) {
              e.printStackTrace();
          }

     }
  });

  Log.i(TAG, "called onStart");

}

talregev commented 9 years ago

This code not finish yet :) I will check it.

kejriwalnishant1990 commented 9 years ago

Hi talregev,

I found that there is some problem with image encodings in cv_bridge. Any update on it?

kejriwalnishant1990 commented 9 years ago

Any update of image_encoding issue?

talregev commented 9 years ago

I have updated the cv_bridge library. the CvImage should work now. There still issues with CvCompressedImage. It will take time to solve.

kejriwalnishant1990 commented 9 years ago

Should i download the code again or i can do small change and it will work?

talregev commented 9 years ago

git pull?

kejriwalnishant1990 commented 9 years ago

okk... i will pull the repo again.

talregev commented 9 years ago

If you like my library, please help to update the wiki. thanks!

kejriwalnishant1990 commented 9 years ago

Once this subscriber works, i will work with you to update the code and wiki.

kejriwalnishant1990 commented 9 years ago

You have set android 23 as target sdk? Is it necessary to use 23 SDK version?

talregev commented 9 years ago

Not necessary, but i like to work on the latest SDK and compiler. But the program will work on older devise also. (from Gingerbread 2.3.* (sdk 10) and above. )

kejriwalnishant1990 commented 9 years ago

i am getting this error while subscribing the image:

9271-9580/org.ros.android.android_tutorial_cv_bridge E/art﹕ No implementation found for long org.opencv.core.Mat.n_Mat(int, int, int) (tried Java_org_opencv_core_Mat_n_1Mat and Java_org_opencv_core_Mat_n_1Mat__III) 08-21 23:13:27.490 9271-9580/org.ros.android.android_tutorial_cv_bridge E/AndroidRuntime﹕ FATAL EXCEPTION: pool-1-thread-14 Process: org.ros.android.android_tutorial_cv_bridge, PID: 9271 java.lang.UnsatisfiedLinkError: No implementation found for long org.opencv.core.Mat.n_Mat(int, int, int) (tried Java_org_opencv_core_Mat_n_1Mat and Java_org_opencv_core_Mat_n_1Mat__III) at org.opencv.core.Mat.n_Mat(Native Method)

talregev commented 9 years ago

Did you change the target sdk?

kejriwalnishant1990 commented 9 years ago

yes i made it 15 for android_tutorial_cv_bridge.

talregev commented 9 years ago

please leave the target sdk as is.

kejriwalnishant1990 commented 9 years ago

ok let me check.

talregev commented 9 years ago

please pull from git the changes and not do it by yourself.

kejriwalnishant1990 commented 9 years ago

If i dont make any change, i get following error : Unfotunately. cv_bridge Tutorial has stopped. In logcat, following error is displayed: 13084-13115/org.ros.android.android_tutorial_cv_bridge E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #1 Process: org.ros.android.android_tutorial_cv_bridge, PID: 13084 java.lang.RuntimeException: An error occured while executing doInBackground() at android.os.AsyncTask$3.done(AsyncTask.java:304) at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355) at java.util.concurrent.FutureTask.setException(FutureTask.java:222) at java.util.concurrent.FutureTask.run(FutureTask.java:242) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) at java.lang.Thread.run(Thread.java:818) Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() at android.os.Handler.(Handler.java:200) at android.os.Handler.(Handler.java:114) at android.app.Dialog.(Dialog.java:108) at android.app.AlertDialog.(AlertDialog.java:125) at android.app.AlertDialog$Builder.create(AlertDialog.java:973) at org.opencv.android.BaseLoaderCallback.onPackageInstall(BaseLoaderCallback.java:90) at org.opencv.android.AsyncServiceHelper.InstallService(AsyncServiceHelper.java:116) at org.opencv.android.AsyncServiceHelper.initOpenCV(AsyncServiceHelper.java:32) at org.opencv.android.OpenCVLoader.initAsync(OpenCVLoader.java:89) at org.ros.android.android_tutorial_cv_bridge.MainActivity.onResume(MainActivity.java:160) at org.ros.android.android_tutorial_cv_bridge.MainActivity.init(MainActivity.java:96) 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:292)

talregev commented 9 years ago

Try to make every sub-module to target sdk 15, and tell me what you get.

kejriwalnishant1990 commented 9 years ago

If i comment this part, then code does not exit suddenly. // try { // cvImage = CvImage.toCvCopy(message); // } catch (Exception e) { // log.error("cv_bridge exception: " + e.getMessage()); // return; // }

For which module should i made target sdk 15? cv_bridge_tutorial???

kejriwalnishant1990 commented 9 years ago

android_cv_bridge_tutorial has already targetSdk as 15.

talregev commented 9 years ago

for every sub-moudle: android_cv_bridge_tutorial already in 15.

talregev commented 9 years ago

opencv, opencv3, cv_bridge, module and the rest.

kejriwalnishant1990 commented 9 years ago

Still same error:

19717-19948/org.ros.android.android_tutorial_cv_bridge E/art﹕ No implementation found for long org.opencv.core.Mat.n_Mat(int, int, int) (tried Java_org_opencv_core_Mat_n_1Mat and Java_org_opencv_core_Mat_n_1MatIII) 08-21 23:40:32.422 19717-19948/org.ros.android.android_tutorial_cv_bridge E/AndroidRuntime﹕ FATAL EXCEPTION: pool-1-thread-13 Process: org.ros.android.android_tutorial_cv_bridge, PID: 19717 java.lang.UnsatisfiedLinkError: No implementation found for long org.opencv.core.Mat.n_Mat(int, int, int) (tried Java_org_opencv_core_Mat_n_1Mat and Java_org_opencv_core_Mat_n_1Mat__III) at org.opencv.core.Mat.n_Mat(Native Method) at org.opencv.core.Mat.(Mat.java:477) at cv_bridge.CvImage.matFromImage(CvImage.java:351) at cv_bridge.CvImage.toCvCopy(CvImage.java:111) at org.ros.android.android_tutorial_cv_bridge.MainActivity$1.onNewMessage(MainActivity.java:134) at org.ros.android.android_tutorial_cv_bridge.MainActivity$1.onNewMessage(MainActivity.java:128) at org.ros.internal.transport.queue.MessageDispatcher$1.run(MessageDispatcher.java:94) at org.ros.internal.transport.queue.MessageDispatcher$1.run(MessageDispatcher.java:91) at org.ros.concurrent.EventDispatcher.loop(EventDispatcher.java:43) at org.ros.concurrent.CancellableLoop.run(CancellableLoop.java:56) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) at java.lang.Thread.run(Thread.java:818) 08-21 23:40:32.934 19717-19729/org.ros.android.android_tutorial_cv_bridge E/art﹕ No implementation found for void org.opencv.core.Mat.n_delete(long) (tried Java_org_opencv_core_Mat_n_1delete and Java_org_opencv_core_Mat_n_1deleteJ) 08-21 23:40:32.935 19717-19729/org.ros.android.android_tutorial_cv_bridge E/System﹕ Uncaught exception thrown by finalizer 08-21 23:40:32.935 19717-19729/org.ros.android.android_tutorial_cv_bridge E/System﹕ java.lang.UnsatisfiedLinkError: No implementation found for void org.opencv.core.Mat.n_delete(long) (tried Java_org_opencv_core_Mat_n_1delete and Java_org_opencv_core_Mat_n_1delete__J) at org.opencv.core.Mat.n_delete(Native Method) at org.opencv.core.Mat.finalize(Mat.java:2475) at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:191) at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:174) at java.lang.Thread.run(Thread.java:818)

kejriwalnishant1990 commented 9 years ago

is it working fine on your machine?

talregev commented 9 years ago

yes. is working good on my phones.

try to find this line: classpath "com.android.tools.build:gradle:1.3.1" to this line: classpath "com.android.tools.build:gradle:1.2.3"

there is 3 lines like this in the code.

talregev commented 9 years ago

are you using real phone or simulator?

kejriwalnishant1990 commented 9 years ago

real phone Nexus 4 Lollipop

talregev commented 9 years ago

I also use Lollipop, on HTC one m7

kejriwalnishant1990 commented 9 years ago

Still i am getting same error:

8-21 23:46:41.904 23832-23832/org.ros.android.android_tutorial_cv_bridge D/CameraBridge﹕ Attr count: 5 08-21 23:46:41.939 23832-23880/org.ros.android.android_tutorial_cv_bridge D/OpenGLRenderer﹕ Use EGL_SWAP_BEHAVIOR_PRESERVED: true 08-21 23:46:41.948 23832-23832/org.ros.android.android_tutorial_cv_bridge D/Atlas﹕ Validating map... 08-21 23:46:42.034 23832-23880/org.ros.android.android_tutorial_cv_bridge I/Adreno-EGL﹕ : QUALCOMM Build: 01/15/15, ab0075f, Id3510ff6dc 08-21 23:46:42.036 23832-23880/org.ros.android.android_tutorial_cv_bridge I/OpenGLRenderer﹕ Initialized EGL, version 1.4 08-21 23:46:42.078 23832-23880/org.ros.android.android_tutorial_cv_bridge D/OpenGLRenderer﹕ Enabling debug mode 0 08-21 23:46:45.321 23832-23842/org.ros.android.android_tutorial_cv_bridge W/art﹕ Suspending all threads took: 82.649ms 08-21 23:46:45.618 23832-24154/org.ros.android.android_tutorial_cv_bridge I/Registrar﹕ MasterXmlRpcEndpoint URI: http://192.168.1.6:11311/ 08-21 23:46:45.648 23832-24164/org.ros.android.android_tutorial_cv_bridge I/Registrar﹕ Registering publisher: Publisher<PublisherDefinition<PublisherIdentifier<NodeIdentifier</android_tutorial_cv_bridge, http://192.168.1.4:52410/>, TopicIdentifier>, Topic<TopicIdentifier, TopicDescription<rosgraph_msgs/Log, acffd30cd6b6de30f120938c17c593fb>>>> 08-21 23:46:45.936 23832-24167/org.ros.android.android_tutorial_cv_bridge I/Registrar﹕ Response<Success, Registered [/android_tutorial_cv_bridge] as publisher of [/rosout], [http://192.168.1.6:58640/]> 08-21 23:46:45.938 23832-24165/org.ros.android.android_tutorial_cv_bridge I/DefaultPublisher﹕ Publisher registered: Publisher<PublisherDefinition<PublisherIdentifier<NodeIdentifier</android_tutorial_cv_bridge, http://192.168.1.4:52410/>, TopicIdentifier>, Topic<TopicIdentifier, TopicDescription<rosgraph_msgs/Log, acffd30cd6b6de30f120938c17c593fb>>>> 08-21 23:46:45.942 23832-24157/org.ros.android.android_tutorial_cv_bridge I/Registrar﹕ Registering publisher: Publisher<PublisherDefinition<PublisherIdentifier<NodeIdentifier</android_tutorial_cv_bridge, http://192.168.1.4:52410/>, TopicIdentifier</image/pub>>, Topic<TopicIdentifier</image/pub>, TopicDescription<sensor_msgs/Image, 060021388200f6f0f447d0fcd9c64743>>>> 08-21 23:46:45.955 23832-24157/org.ros.android.android_tutorial_cv_bridge I/Registrar﹕ Registering subscriber: Subscriber<Topic<TopicIdentifier</usb_cam/image_raw>, TopicDescription<sensor_msgs/Image, 060021388200f6f0f447d0fcd9c64743>>> 08-21 23:46:45.956 23832-24200/org.ros.android.android_tutorial_cv_bridge I/Registrar﹕ Response<Success, Registered [/android_tutorial_cv_bridge] as publisher of [/image/pub], []> 08-21 23:46:45.957 23832-24167/org.ros.android.android_tutorial_cv_bridge I/DefaultPublisher﹕ Publisher registered: Publisher<PublisherDefinition<PublisherIdentifier<NodeIdentifier</android_tutorial_cv_bridge, http://192.168.1.4:52410/>, TopicIdentifier</image/pub>>, Topic<TopicIdentifier</image/pub>, TopicDescription<sensor_msgs/Image, 060021388200f6f0f447d0fcd9c64743>>>> 08-21 23:46:45.961 23832-24157/org.ros.android.android_tutorial_cv_bridge I/cv_bridge Tutorial﹕ called onStart 08-21 23:46:45.971 23832-24206/org.ros.android.android_tutorial_cv_bridge I/Registrar﹕ Response<Success, Subscribed to [/usb_cam/image_raw], [http://192.168.1.6:43357/]> 08-21 23:46:45.973 23832-24203/org.ros.android.android_tutorial_cv_bridge I/DefaultSubscriber﹕ Subscriber registered: Subscriber<Topic<TopicIdentifier</usb_cam/image_raw>, TopicDescription<sensor_msgs/Image, 060021388200f6f0f447d0fcd9c64743>>> 08-21 23:46:46.255 23832-23842/org.ros.android.android_tutorial_cv_bridge W/art﹕ Suspending all threads took: 16.053ms 08-21 23:46:46.917 23832-24208/org.ros.android.android_tutorial_cv_bridge E/art﹕ No implementation found for long org.opencv.core.Mat.n_Mat(int, int, int) (tried Java_org_opencv_core_Mat_n_1Mat and Java_org_opencv_core_Mat_n_1MatIII) 08-21 23:46:46.918 23832-24208/org.ros.android.android_tutorial_cv_bridge E/AndroidRuntime﹕ FATAL EXCEPTION: pool-1-thread-18 Process: org.ros.android.android_tutorial_cv_bridge, PID: 23832 java.lang.UnsatisfiedLinkError: No implementation found for long org.opencv.core.Mat.n_Mat(int, int, int) (tried Java_org_opencv_core_Mat_n_1Mat and Java_org_opencv_core_Mat_n_1Mat__III) at org.opencv.core.Mat.n_Mat(Native Method) at org.opencv.core.Mat.(Mat.java:477) at cv_bridge.CvImage.matFromImage(CvImage.java:351) at cv_bridge.CvImage.toCvCopy(CvImage.java:111) at org.ros.android.android_tutorial_cv_bridge.MainActivity$1.onNewMessage(MainActivity.java:134) at org.ros.android.android_tutorial_cv_bridge.MainActivity$1.onNewMessage(MainActivity.java:128) at org.ros.internal.transport.queue.MessageDispatcher$1.run(MessageDispatcher.java:94) at org.ros.internal.transport.queue.MessageDispatcher$1.run(MessageDispatcher.java:91) at org.ros.concurrent.EventDispatcher.loop(EventDispatcher.java:43) at org.ros.concurrent.CancellableLoop.run(CancellableLoop.java:56) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) at java.lang.Thread.run(Thread.java:818) 08-21 23:46:47.231 23832-23845/org.ros.android.android_tutorial_cv_bridge E/art﹕ No implementation found for void org.opencv.core.Mat.n_delete(long) (tried Java_org_opencv_core_Mat_n_1delete and Java_org_opencv_core_Mat_n_1deleteJ) 08-21 23:46:47.231 23832-23845/org.ros.android.android_tutorial_cv_bridge E/System﹕ Uncaught exception thrown by finalizer 08-21 23:46:47.232 23832-23845/org.ros.android.android_tutorial_cv_bridge E/System﹕ java.lang.UnsatisfiedLinkError: No implementation found for void org.opencv.core.Mat.n_delete(long) (tried Java_org_opencv_core_Mat_n_1delete and Java_org_opencv_core_Mat_n_1delete__J) at org.opencv.core.Mat.n_delete(Native Method) at org.opencv.core.Mat.finalize(Mat.java:2475) at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:191) at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:174) at java.lang.Thread.run(Thread.java:818)

talregev commented 9 years ago

you download this? https://play.google.com/store/apps/details?id=org.opencv.engine you need opencv on your phone.

kejriwalnishant1990 commented 9 years ago

But you have provided opencv in this library. Do i need to install separately?

talregev commented 9 years ago

yes. of course. my program provide connect to the library, not the opencv itself. Maybe you can add this to the Wiki ...

kejriwalnishant1990 commented 9 years ago

should i revert the changes?

talregev commented 9 years ago

mmm yes, and if it not work then change again. slowly.

kejriwalnishant1990 commented 9 years ago

Ok now code is running, but when i am trying to see image on pc from this command: $ rosrun image_view image_view image:=/image/pub I am getting following error: Unable to convert 'rgb8' image to bgr8: 'Image is wrongly formed: step < width * byte_depth * num_channels or 640 != 640 * 1 * 3'

kejriwalnishant1990 commented 9 years ago

/image/pub is rostopic for publisher

talregev commented 9 years ago

you have rviz?

kejriwalnishant1990 commented 9 years ago

yes

talregev commented 9 years ago

check on rviz.

talregev commented 9 years ago

did you change the code, or is the original?

kejriwalnishant1990 commented 9 years ago

I have checked on changed code.... Should i try with original code?

talregev commented 9 years ago

yes. but this message will not gone. It other problem.

kejriwalnishant1990 commented 9 years ago

Does this message comes on your machine also?

talregev commented 9 years ago

I check on rviz, not with image_view

kejriwalnishant1990 commented 9 years ago

In rviz, the image is coming out correctly. Now i am checking everything with original code.

talregev commented 9 years ago

thanks.

kejriwalnishant1990 commented 9 years ago

It works with original code too.. thanks a lot. Currently frame speed is slow, i think compress image will work on higher frame per second.