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

rosserial between two computers running full ros

asked 2014-05-22 11:36:11 -0500

ConsciousCode gravatar image

I'd like to communicate over serial between two computers running full ros. All the tutorials are for embedded devices and arduinos. I feel like this has to be simple, but I'm clearly missing something and your help is greatly appreciated.

I've tried running the "rosrun rosserial_python serial_node.py" on both computers simultaneously, but the serial nodes are unable to establish a connection and instead throwing an error. I'm guessing that this is because you need the roscore on one computer to run the rosserial host, while the other computer is the client? I've tried having just one computer run the rosserial_python serial_node.py, assuming the other computer automatically generates the client library upon initialization of any new nodes once you've installed rosserial, but alas this doesn't work (a.k.a. I am unable to publish/ subscribe to topics across computers). Do I need to write custom code for the client computer or something?

My setup: A pc running Ubuntu 12.04 with full ROS, a Beaglebone Black running Ubuntu 12.04 with full ROS, serial communication via 3DR Radios (USB0 on the pc and UART ttyO1 on the Beaglebone Black). rosserial is installed in both computers.

edit retag flag offensive close merge delete

Comments

must you use the serial for communication? I met a similar problem and my solution is using your pc to host a hotpoint then let your BB join the network, then just treat them as http://wiki.ros.org/ROS/Tutorials/MultipleMachines but it will take an extra USB port. Maybe you can use the LAN bridge

lanyusea gravatar image lanyusea  ( 2014-05-22 12:20:15 -0500 )edit

So to enable wireless communication, I assume you're talking about using Wifi 802.11? I was hoping to take advantage of the additional range offered by a 3DR radio I have that communicates via a serial connection. Wifi certainly would be an alternative solution.

ConsciousCode gravatar image ConsciousCode  ( 2014-06-09 12:27:39 -0500 )edit

if you are using the Radio module from 3DR, I suggest you try the package RosCopter because of the MAVLink protocal

lanyusea gravatar image lanyusea  ( 2014-06-09 12:46:45 -0500 )edit

Thank you for the suggestion. I'm attempting a non-standard configuration in which the 3DR radio is connected to a BeagleBone rather than the Ardupilot. Therefore, I'm no longer using the MAVLink protocol, but instead trying to send ROS messages through the beaglebone serial port via the radio.

ConsciousCode gravatar image ConsciousCode  ( 2014-06-09 13:41:53 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted
1

answered 2014-05-22 12:21:45 -0500

fergs gravatar image

updated 2014-05-22 12:22:49 -0500

The problem here is that the serial_node.py is trying to get the configuration information of what topics you are publishing/subscribing from the "client". Thus, if you wanted a two-way tunnel, on each machine you would have to run the serial_node.py AND an instance of a "client", which would be a program built on one of rosserial_arduino or more likely rosserial_embeddedlinux. The program does need to know what topics are going to be pub/sub, so that it can negotiate the channels being used for each topic.

EDIT: this has a further complication, that the client and serial_node really can't both open the same serial port. So I'm guessing that serial_node will need to be revised in order to have it basically act as a client internally.

edit flag offensive delete link more

Comments

So ROS doesn't currently support serial communication between two full roscores? Would it be possible to build a client library like rosserial_embeddedlinux for full ros? One computer runs serial_node.py and the other initializes subscr/pub nodes as in embeddedlinux examples using the client library

ConsciousCode gravatar image ConsciousCode  ( 2014-06-09 12:51:15 -0500 )edit
1

There is no out of the box solution to this, but with some effort it is certainly possible.

fergs gravatar image fergs  ( 2014-06-10 00:54:14 -0500 )edit

Question Tools

1 follower

Stats

Asked: 2014-05-22 11:36:11 -0500

Seen: 1,398 times

Last updated: May 22 '14