ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Cleanest way to add a ROS interface to an existing codebase (CentOS)

asked 2014-11-12 07:23:56 -0500

techno74 gravatar image

I have an existing project based on CentOS 6.5 that controls a vehicle. It has no external interfaces currently and I would like to expose some of the functionality in a ROS node. I am expecting that the ROS master and all the other nodes would run on a separate Ubuntu machine.

To begin with 'all I need' is the ability to publish/subscribe to topics containing custom message types and offer one or two services (with the intentions to offer actions in the future). What is the 'proper' way to go about this? Can I build a subset of the ROS libraries manually and then just include some ROS header files in my own application? How difficult is this likely to be on CentOS (I'm not having much luck so far)? Will I need to get catkin working eventually or can I do this without it?

I have looked at rosbridge as a way round having to build any ROS stuff on the CentOS machine. I love the idea of a defined interface that I can implement one end of. Unfortunately from what I have read I won't be able to advertise services and if we wanted to extend the interface for access to the vehicles cameras at a later date this would be a strange way to do it?

I have a feeling this is going to be a long and painful road and I was hoping someone could point me in the right direction to get me started.

I know similar questions have been asked before but the answers I could find were 2 year+ old (pre catkin?) and I am hoping something might have changed :)

edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted

answered 2014-11-12 07:30:47 -0500

dornhege gravatar image

I believe the cleanest way (as in least amount of restrictions for the future) is to build ROS on CentOS. I have no experience with that, but I would guess that this should not be that hard. The important thing to note is that for the things that you want to do, you only need the core ROS libraries, i.e. middleware, build system (catkin), message generation.

edit flag offensive delete link more



CentOS should have some level of compatibility with Fedora. The latter is currently supported by Bloom, and there is even a buildserver for it (at SDSM&T). I think that could make it slightly less of an effort to get things going.

gvdhoorn gravatar image gvdhoorn  ( 2014-11-12 10:10:28 -0500 )edit

I managed to build the ros_comm stuff and get the talker/listener tutorial working on CentOS 7.0. The problems I had been having were python version (2.6 in CentOS 6) and lack of support for centos/rhel in rosdep. I'll keep hitting my head on this particular wall for now I think, thanks!

techno74 gravatar image techno74  ( 2014-11-14 10:36:22 -0500 )edit

If you can make use of the rosdep rules of another OS (say Fedora), you can probably use ROS_OS_OVERRIDE in combination with the --os= option for rosdep. Otherwise it is probably easiest to add a local CentOS rule db to your rosdep install and populate that.

gvdhoorn gravatar image gvdhoorn  ( 2014-11-14 11:13:09 -0500 )edit

answered 2014-11-12 08:17:16 -0500

Wolf gravatar image

Alternatively you could use the embedded_linux part of rosserial; if you just what to exchange messages that should work out-of-the-box....

edit flag offensive delete link more



I think this is certainly something to check out: this would make it possible to quickly do what the OP wants, with minimal dependencies to install on the CentOS machine / to integrate into the existing system.

gvdhoorn gravatar image gvdhoorn  ( 2014-11-13 01:39:15 -0500 )edit

Nice idea, I hadn't seen that. If I hit more problems trying to build what I need on CentOS then I'll probably go down this road. Thanks.

techno74 gravatar image techno74  ( 2014-11-14 10:29:07 -0500 )edit

Question Tools

1 follower


Asked: 2014-11-12 07:23:56 -0500

Seen: 314 times

Last updated: Nov 12 '14