ROS Integration via roslibjs


#1

There are multiple efforts to integrate ROS with OpenROV. This approach leverages the roslibjs package supported by the ROS community to speak over websockets to the rosbridge. In this approach we use a OpenROV plugin to tap the cockpit messaging abstraction and translate the OpenROV API to and from ROS Topics.

ROS is the Robot Operating System that came from Willow Garage. Heavily used in academia and many industrial applications. Primarily written in C++ or python.

roslibjs is a javascript library that uses websockets to establish a communication channel with other ROS nodes via the rosbridge.

Status

This project is in the proposal stage. I am working on a quick proof of concept at the moment when I have spare time. Assuming I get it working I’ll open a github repo for more detailed tracking.

How to Contribute

  • Setup a working dockerized version of ROS that includes the rosbridge module.
  • List the ROS topics and parameters that the OpenROV hardware should be subscribing to.
  • Map the existing messages emitted by the ROV to ROS messages.
  • Identify use cases for using ROS nodes with OpenROV. Identify the ROS packages and the topic/msg and commands that will be used to communicate.
  • Volunteer to write documentation
  • Volunteer to be a tester
  • Any other way you can think of! It will all be appreciated.

Looking for

  • Programmers familiar with ROS
  • Javascript/Node.js programers
  • Project coordinator

Reference

Working Docker File with the openrov node for the plugin by the UCSD team:

Working Docker File:

FROM  quantumobject/docker-ros-base
MAINTAINER Brian Adams "brian@openrov.com"

RUN apt-get update && apt-get install -y ros-jade-rosbridge-suite

EXPOSE 9090

ENTRYPOINT ["/opt/ros/jade/bin/roslaunch", "rosbridge_server", "rosbridge_websocket.launch"]

Ross Cheat Sheet: http://services.informatik.hs-mannheim.de/~ihme/robotik_2014ws/01_ROScheatsheet.pdf


MOOS and ROS
OpenROV Controller Board API
Project: A fully autonomous OpenROV
ROS Integration with OpenROV
#2

Brian, I can assist. Give me the weekend to digest and have a look at the bridge.


#3

I’d be happy to work on this! I’ve been thinking about this for some time, and thanks Brian for actually writing up what needs to be done XD. I’m currently pretty booked until mid may, but I’d be happy to throw alot of cycles at it over the summer!
ROS would really enable the OpenROV platform to be more than an ROV; it would enable it to become a fully autonomous vehicle!


#4

It will help for sure. I’ve been praising the controller electronics as a good brain to kick into land ROVs and auvs.


#5

This sounds like a great project to me. I have quite some ROS experience with research AUVs and recently acquired a OpenROV. I would love to contribute to this!


#6

I have been working on using ros with raspberry pi and arduino in Openrov. I will be happy to help.

Currently I have a teleop node running. I also plan to use imu and stereo cameras for localization in the coming weeks.


#7

Very interesting. Any chance we can peer into the code?


#8

I do not have it in git yet. I will try to get it up by next week and post a link.


#9

I did want to let folks know that Brian and I are working with two UC San Diego CS students (David and Connor) to get the rosbridge working with the OpenROV event stream. The approach is to have the JS client code running as a plug-in running on Node.js sending/receiving socket-io messages to a rosbridge server running on the laptop as part of a ROS instance. JSON messages would be converted to ROS topics and visa-versa.

Will update folks when we have something to share.

Jim


#10

Fair enough lol awesome hope it comes together well. Looking forward to it!


#11

So good news. The UCSD team has the integration with rosbridge up and running. Hopefully we can get them to share the code soon!


#12

Here is a video of the first results from this project. More to follow from Connor and David on how to install/implement, etc. Congrats to them for this valuable work!

Jim

https://www.youtube.com/watch?v=5aW-hfu1LAk&ab_channel=ConnorBrew


#13

That’s spectacular, @Jim!, congrats to the team. A large set of resources have been opened to the community. To name a few…

EKFs
SLAM/VO
Autonomy in a more apt sense (geeking out about the possibilities here)
Easier payload integration
plug-n-play add-ons

This actually opens up the ROV as a tool for research in many many ways.

Please post the repository once the code is in a consumable state! I already have four use cases out here on the east coast waiting for this type of enabling dev.

Excellent work!


#14

Hi everyone this is Connor,

I came in to OpenROV today and got some more stuff working. We now have motor control through ROS working. We also have some preliminary documentation and a docker container to get people set up. I will work with Brian and Jim to set up access to the documentation.


#15

Brian has updated his docker file with the ROS side of this code:

More to follow,

Jim


#16

Are there any updates on the installation? I’m thinking a installation guide for dummies :stuck_out_tongue:

Thanks in advance,
Reinhout


#17

I have tried to build the docker file but it seems that the packages ros-indigo-rosbridge-suite, ros-indigo-image-transport, ros-indigo-camera-calibration-parsers and ros-indigo-camera-info-manager are not located. Strange thing is…if I try to install those packages directly via sudo apt-get install, they are found. What coud be the reason for this?


#18

Hi, i am new to ubuntu and have never used docker before. How do i build the docker file? I have installed docker by following the docker installation guide


#19

Hey man!

I didn’t have a great experience with the docker file. I’ll send you a link
on how to install it manually.
My OpenROV had water damage so I wasn’t able to test it all together but
others had a go with it and it worked.


#20

Thank you, that will be helpful