rosjava / genjava

RosJava message definition and serialization artifact generators.
5 stars 32 forks source link

ROS Melodic release for rosjava #19

Open SomeshDaga opened 5 years ago

SomeshDaga commented 5 years ago

Hi.

I see that rosjava does not have support for ROS Melodic as of yet. Being a relative newbie to the java world and the gradle build system, from what I attempted, it seems that all that is required is an upgrade in the gradle version to >= 4.7.

For the ROS message generators to work, it seems that they might have to be pre-installed before the workspace is built. Installing genjava and rosjava_build_tools from source and building it together with the rest of the ROS workspace results in some message dependencies not having the jar files built, due to race conditions in which packages get compiled first.

Hence, should a melodic branch be created for the relevant rosjava repos. I can submit some PRs for the update of the gradle version. Not sure how the release process works, and how long after being accepted will these changes be obtainable using rosdep

SomeshDaga commented 5 years ago

@jubeira I have put together some code that seems to be working for me locally, with the inconvenience that genjava has to be built before the rest of my packages, since it is a message generator. I'd like to push these changes upstream, so that they can make it into the next release. Would a melodic branch need to be created in these repos by one of the administrators of this project for me to issue pull requests to?

Thanks

jubeira commented 5 years ago

Hi @SomeshDaga, sorry for the delay. Yes, we would need a melodic branch. In the past we've separated distro releases bumping the minor number of the packages, but since the differences between branches will be minimal I don't think it's necessary in this case. I'd say melodic could still use 0.3.x range of versions.

@drigz @ernestmc any thoughts about this?

@jubeira I have put together some code that seems to be working for me locally, with the inconvenience that genjava has to be built before the rest of my packages, since it is a message generator

Hmm I don't have that problem when building rosjava from source in the current kinetic branch. If your packages' dependencies are correct, genjava should be built beforehand and then used to build the rest.

drigz commented 5 years ago

@jubeira No strong feelings either way from me. Thanks for checking!

ernestmc commented 5 years ago

I think keeping releases in separate branches will help in keeping order and for future reference, even if changes are minimal.

SomeshDaga commented 5 years ago

@jubeira Thanks for the follow up. With regards to your suspicions about not needing genjava to be built beforehand, I require genjava to implicitly build messages within most packages in my workspace (hence, these packages don't have an explicit dependency on genjava). This creates an issue when a specific package depends on genjava and a bunch of custom messages which were built prior to genjava being built. I see that some of the java message artifacts are missing for some custom messages. However, all is fine if I specifically build genjava first, although it's a bit of an annoyance to do so

Like @ernestmc,I personally prefer the creation melodic branches, esp. since packages like rosjava_bootstrap contains references to the raw buildscript in rosjava_core which specifically references kinetic (although I don't see this file changing for melodic), which might be confusing to future users. Let me know if this works for you

Rezenders commented 5 years ago

I'm interested in using rosjava with ros melodic too, any updates on this?

jubeira commented 5 years ago

It's in my bucket list; I'll make the branches and releases when I grasp some more time.

Note that if you use source installations at kinetic branch it should be basically the same for Melodic. Please let me know if you have issues with that one so that we can correct them eventually.

Rezenders commented 5 years ago

Using the kinetic branch for source installation in Melodic I get the following error:

$ rosdep install --from-paths src -i -y
ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies:
rosjava_messages: Cannot locate rosdep definition for [world_canvas_msgs]

It's in my bucket list; I'll make the branches and releases when I grasp some more time.

Note that if you use source installations at kinetic branch it should be basically the same for Melodic. Please let me know if you have issues with that one so that we can correct them eventually.

EDIT: If I proceed with the minimal install I get the following error when running catkin_make:

> :gradle_plugins:processResources
geometry_experimental/tf2/CMakeFiles/tf2.dir/build.make:86: recipe for target 'geometry_experimental/tf2/CMakeFiles/tf2.dir/src/buffer_core.cpp.o' failed
make[2]: *** [geometry_experimental/tf2/CMakeFiles/tf2.dir/src/buffer_core.cpp.o] Error 1
CMakeFiles/Makefile2:10925: recipe for target 'geometry_experimental/tf2/CMakeFiles/tf2.dir/all' failed
warning: [options] source value 6 is obsolete and will be removed in a future release
warning: [options] target value 1.6 is obsolete and will be removed in a future release
warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
Note: /root/rosjava_minimal/src/rosjava_bootstrap/message_generation/src/main/java/org/ros/internal/message/MessageImpl.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
3 warnings
[ 93%] Built target gradle-rosjava_bootstrap
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2
Invoking "make -j8 -l8" failed
talregev commented 5 years ago

Vote 👍 for rosjava melodic.

orat commented 5 years ago

Hi,

Using the kinetic branch for source installation in Melodic I get the following error:

$ rosdep install --from-paths src -i -y
ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies:
rosjava_messages: Cannot locate rosdep definition for [world_canvas_msgs]

It is the same for me (Ubuntu18, ros meldodic, java8). Additionally "genjava_message_artifacts" fails with a strange message "Could not find any version that matches org.ors.rosjava_bootstrap:gradle_plugins:[0.4,0.5]". Yes, there is only version 0.3.3 available but why is 04;0.5 requested? Andy where can I change the request to the existing version?

best regards Oliver

joselpart commented 4 years ago

I notice the last post is quite old but this may help others... First of all, currently there is a melodic branch for some of the rosjava packages but if you try to follow the installation guide in the wiki replacing "kinetic" for "melodic", it will fail due to the packages that do not have the melodic branch. Hence, to keep things simple, I will assume you are installing the kinetic branch.

The error reported by @Rezenders is due to the fact that world_canvas_msgs is not supported in melodic:

Using the kinetic branch for source installation in Melodic I get the following error:

$ rosdep install --from-paths src -i -y
ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies:
rosjava_messages: Cannot locate rosdep definition for [world_canvas_msgs]

Removing the entry from the CMakeLists.txt and package.xml files in the rosjava_messages package should take care of that.

Then you may encounter errors relating to not being able to find files for actionlib and dynamic_reconfigure. Just add these packages in the CMakeLists.txt and package.xml files. Also, remember to add any missing package for which you would want to generate messages, including your own packages.

This applies for building the core sources (section 3.1 in the wiki) in Ubuntu 18.04 with ROS Melodic. I didn't try the minimal install.

khalidbourr commented 4 years ago

Hello guys,

Rosjava is always not supported by Ros Melodic, the only solution is to work with Java Ros_bridge, you can have a look on this https://github.com/h2r/java_rosbridge and http://wiki.ros.org/rosbridge_suite. It works quite well, the only issue is that the client-server communication is not supported.

dkati commented 3 years ago

any news on ros melodic?

talregev commented 3 years ago

Better to do rosjava for ROS Noetic Ninjemys

talregev commented 3 years ago

And to think about ros2 rosjava

ernestmc commented 3 years ago

And to think about ros2 rosjava

For Ros2 you can check this out.

talregev commented 3 years ago

I already try it and didn't succeded. Did you try it?

dkati commented 3 years ago

i build the source from http://wiki.ros.org/rosjava/Tutorials/kinetic/Source%20Installation

Whats next?

*had to fix some dependencies and such