ROS Resources: Documentation | Support | Discussion Forum | Service Status | Q&A answers.ros.org

Declaring a ROS2 port of the driver for the Marvelmind Indoor GPS system

This is a fairly small and straightforward package, a direct port from ROS to ROS2 of the driver for the Marvelmind Indoor GPS system. I recently starting working with it on ROS1 and saw potential use in ROS2 as well. As there was no driver available for ROS2, and since I wanted to practice package development with ROS2 (which is still quite new to me) as well, I decided to port the driver myself.

I have tried to make it transparent that this is a port only, and that all original rights belong to Marvelmind Robotics. As this is the first package I am opening to the public, I would appreciate any constructive criticism.

Link to my port : https://github.com/ipa-kut/ros_marvelmind_package
Link to original driver: https://bitbucket.org/marvelmind_robotics/ros_marvelmind_package/src/master/
Link to the specific device I tested this on: https://marvelmind.com/product/starter-set-hw-v4-9-nia/

Out of curiosity, how long did the port take you and how difficult was it? What was the most difficult part of porting the project? Is there anything that would have made the process easier? Looking at the commit log it looks like you did the initial port over a weekend and then spent a few weeks getting CI working and doing final testing.

@Katherine_Scott You are right in assuming that the coding part of the port took about 2 days. CI is new to me, so I just spent some time experimenting with it in between other projects.

Porting code was overall rather easy. I spent most of my time logically splitting up the sequential flow of the ROS1 driver into the state machine flow of ROS2 Lifecycle nodes and testing it. I was able to do this just by referring to the demos which are actually quite well documented. If I had opted for a regular ROS2 node, I am sure it would have been easier still.

The most challenging part was actually to get the launch file working correctly, since there is very little documentation available at the moment, and I had to piece together working parts from various other packages. I still have an open issue for the same that I have not been able to figure out.

Better documentation, especially for launch files, could possibly have made this easier.

2 Likes