0
$\begingroup$

Rosanswers logo

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.


Originally posted by ConsciousCode on ROS Answers with karma: 11 on 2014-05-22

Post score: 1


Original comments

Comment by lanyusea on 2014-05-22:
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

Comment by ConsciousCode on 2014-06-09:
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.

Comment by lanyusea on 2014-06-09:
if you are using the Radio module from 3DR, I suggest you try the package RosCopter because of the MAVLink protocal

Comment by ConsciousCode on 2014-06-09:
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.

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

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.


Originally posted by fergs with karma: 13902 on 2014-05-22

This answer was ACCEPTED on the original site

Post score: 1


Original comments

Comment by ConsciousCode on 2014-06-09:
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

Comment by fergs on 2014-06-10:
There is no out of the box solution to this, but with some effort it is certainly possible.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.