Robotics StackExchange | Archived questions

Cannot import Image message for rosjava

Hi everyone,

I have gotten rosjava to work with String messages, and I am now trying to make it work with Image messages. Unfortunately, when I try to import Image messages, I get the following error when I build:

package org.ros.message.sensormsgs does not exist import org.ros.message.sensormsgs.Image;

Here is my Java code:

import java.awt.image.BufferedImage;
import java.awt.image.ComponentSampleModel;
import java.awt.image.DataBuffer;
import java.awt.image.DataBufferByte;
import java.awt.image.Raster;
import java.awt.image.SampleModel;

import org.ros.message.MessageListener;
import org.ros.message.sensor_msgs.Image;

import src.main.java.com.github.hsmrs_gui.project.controller.VideoController;

public class ImageListener implements MessageListener<Image> {
    long time;

    @Override
    public void onNewMessage(Image img) {
        time = System.currentTimeMillis();
        String cameraName = img.header.frame_id;

        BufferedImage buffImg = messageToBufferedImage(img);
        VideoController.getInstance().receiveNewImage(cameraName, buffImg);    
    }

    public static BufferedImage messageToBufferedImage(Image imgMsg){
        int width = (int) imgMsg.width;
        int height = (int) imgMsg.height;       
        DataBuffer buffer = new DataBufferByte(imgMsg.data, width*height);
        SampleModel sampleModel = new ComponentSampleModel(DataBuffer.TYPE_BYTE, width, height, 3, width*3, new int[]{2,1,0});
        Raster raster = Raster.createRaster(sampleModel, buffer, null);
        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR);
        image.setData(raster);
        return image;
    }
}

and my gradle files look like this:

task wrapper(type: Wrapper) {
    gradleVersion = '1.11'
}

buildscript {
    def rosMavenPath = "$System.env.ROS_MAVEN_PATH".split(':').collect { 'file://' + it }
    def rosMavenRepository = "$System.env.ROS_MAVEN_REPOSITORY"
    repositories {
        rosMavenPath.each { p ->
            maven {
                url p
            }
        }
        mavenLocal()
        maven {
            url rosMavenRepository
        }
    }
    dependencies {
        classpath group: 'org.ros.rosjava_bootstrap', name: 'gradle_plugins', version: '[0.1,0.2)'
    }
}


apply plugin: 'catkin'
apply plugin: 'eclipse'

allprojects {
    group 'com.github.rosjava.hsmrs_gui'
    group 'org.ros.rosjava_core'
    version = project.catkin.pkg.version
}

subprojects {
    apply plugin: 'ros-java'
}
defaultTasks 'tasks'

and

apply plugin: 'application'
mainClassName = 'org.ros.RosRun'

dependencies {
  compile 'org.ros.rosjava_core:rosjava:[0.1,)'
}

apply plugin:'java'

repositories{
  mavenCentral()
}

dependencies{
  compile 'com.miglayout:miglayout-swing:4.2'
}

Any idea whats going wrong? Your help is appreciated!

Asked by Robocop87 on 2014-12-13 14:24:56 UTC

Comments

For the record, you should add org.ros.rosjava_messages:sensor_msgs to your compile dependencies

Asked by jubeira on 2017-04-11 13:56:24 UTC

Answers