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

How can I get a Clearpath Jackal to receive HDL-32 data?

asked 2017-06-21 18:21:14 -0600

M@t gravatar image

updated 2017-06-22 21:15:05 -0600

This may be more of a general networking question but because it's relevant to the ROS community I felt like this was the most appropriate place to discuss it.

The Problem (TL;DR)

I have a Velodyne HDL-32 connected to a Clearpath Jackal over LAN. I'm using the ROS Velodyne drivers. When I run the commands on a laptop running Ubuntu, everything works as expected and I can see the data in RViz and in the ROS topic /velodyne_points When I run the same commands on the Jackal, the drivers launch as normal but I get nothing.

The Problem (full explanation)

I have an HDL-32, one Ethernet switch (not router), one Windows PC, one Ubuntu PC and one Clearpath Jackal connected over LAN as shown (note: on each device all WiFi connections and firewalls are disabled):

image description

The HDL-32 publishes it's data as UDP packets to the IP address 192.168.3.255. Any device with an IP device on subnet "3" can listen to and display the data using either Veloview for Windows or RViz and the ROS drivers for Linux.

  • If the Windows PC is configured as shown, I can view the data in real-time in Veloview
  • If the Ubuntu PC is configured as shown, and I run the Velodyne drivers, I can view the data in real-time in RViz. I can also see the raw data on the velodyne_points rostopic.
  • BUT if I run the same drivers on the Jackal, the drivers launch but never receive any data and nothing is published to the velodyne_points rostopic.

How can I make drivers on the jackal work? Any advice or help will be greatly appreciated.


Some specifics about the setup with Jackal:

  1. The Jackal has one static Ethernet port "br0" and one DHCP port "eth0". There is also a "eth1" port which I haven't placed yet.
  2. I access the jackal via SSH on the static port with the IP address 192.168.1.11.
  3. After getting in with SSH, the "br0" connection has the IP 192.168.11 and the "eth0" connection appears un-initialized. After running the "ifconfig" commands as stated on the Velodyne driver page the "eth0" connection is configured as shown in the diagram above.
  4. The "eth0" connection on the Ubuntu PC (when everything works) appears as follows:

    image description

    Note that the "RX Packets' show that the connection is receiving data.

  5. If I also plug the DHCP into the network (adding it to the connections in the diagram above) and run the driver commands I get the same configuration on the "eth0" port:

    sdfsadf

    And the port seems to be receiving the HDL data (hence the high volume of RX packets - 1+ GB). But the drivers still don't seem to be getting the data from the port as nothing is published to the /veoldyne_points topic.

  6. As a side note, the connection via SSH suffers from significant latency when the DHCP port is plugged into the network.
  7. Unfortunately I'm not the first person to use ...
(more)
edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted
0

answered 2017-07-31 18:51:29 -0600

M@t gravatar image

updated 2017-07-31 19:06:55 -0600

The Solution (TL;DR)

Contact Clearpath customer support or edit the /etc/network/interfaces file as shown below.

The Solution (full explanation)

The Jackal UGV has two physical Ethernet ports, but they are both tied to the same IP address (which defaults to 192.168.1.11). This is done (I assume) so that even if something goes wrong on one port, you can still plug into the other one and access your robot.

However, this also complicates the connection if you want the Jackal to talk to a sensor over Ethernet and talk to it via a separate device (such as a laptop) at the same time. In my setup, as described above, this causes issues because the Velodyne drivers don't know how to deal with this interface, and because the shear amount of data coming from the HDL-32 floods the channel with data, creating latency issues.

To fix this, you need to separate the two ports. Note that this solution works for a 2016 Clearpath Jackal UGV. If you are using another one of Clearpath's robots, or using a Jackal produced more recently, this may not be a problem or the solution may be different. If in doubt, contact Clearpath customer support directly.

To separate the two ports, edit the /etc/network/interfaces file:

sudo nano /etc/network/interfaces

And change it to look like this:

auto lo br0 br0:0 eth0 eth1
iface lo inet loopback

# Bridge together physical ports on machine, assign standard Clearpath Robot IP.
iface br0 inet static
  bridge_ports regex eth0
  address 192.168.1.11
  netmask 255.255.255.0

# Also seek out DHCP IP on those ports, for the sake of easily getting online,
# maintenance, ethernet radio support, etc.
iface br0:0 inet dhcp

iface eth1 inet static
  address <broadcast IP>
  netmask 255.255.255.0

Where <broadcast IP> is the IP that the sensor is broadcasting to. If you are using a Velodyne sensor like I am, this should be 192.168.3.XXX where 'XXX' can be any 2 or 3 digit number you like. You should then be able to plug your sensor into one Ethernet port, plug your laptop into the other, and have the Jackal talk to both just fine, as per this diagram:

image description

As a side note, if you are using a Velodyne sensor and these Velodyne drivers, the drivers won't see the data by default. You will also need to add a static route with this command:

route add 192.168.1.201 eth1

(or use eth0 depending on your setup). To make this configuration permanent, add the same command to the /etc/rc.local file.

edit flag offensive delete link more
0

answered 2017-06-21 18:38:20 -0600

ahendrix gravatar image

tl;dr: It looks like the Jackal has a fairly complex network setup; you should contact clearpath support and ask for their advice.

longer answer and thoughts:

br0 is part of the linux network bridging subsystem; it looks like the Jackal is running some kind of network bridge that spans multiple interfaces. I can't really tell how it's used from your limited description.

On the jackal, I see that eth0 is UP but not RUNNING, which indicates that linux doesn't think there's a cable plugged into that interface. Are you sure eth0 is the interface you're using?

In general if you only access your robot over SSH, changing its network configuration is a good way to get locked out, and playing around with a network configuration that you don't understand is a great way to break things.

It may be easier to change the IP address on the velodyne so that its source address is on the same subnet as the Jackal (try 192.168.1.12) , and the destination address is the broadcast address for that subnet (looks like that's 192.168.1.255) ; and then configure the velodyne driver to match that.

edit flag offensive delete link more

Comments

Contacting us would be best. As a note, ethernet ports that are bridged shouldn't get IP address. However, the way the velodyne works, it broadcasts data so the idea would be to have it on a contained network of (192.168.3.X). So eth0 is probably out of the bridge. Can you ping the velodyne?

tonybaltovski gravatar image tonybaltovski  ( 2017-06-22 16:00:21 -0600 )edit

Also, try switching which port is used.

tonybaltovski gravatar image tonybaltovski  ( 2017-06-22 16:00:38 -0600 )edit

@tonybaltovski. No I can't ping the HDL, but I'm having trouble accessing the web interface on it so there may be other issues at play here. I've already sent a support email to Clearpath with a link to this page, request #4572.

M@t gravatar image M@t  ( 2017-06-22 17:15:34 -0600 )edit

@ahendrix. (1/2) Yup, already emailed Clearpath. I wish I could give you a better description of the Jackal network, but I don't understand it well enough yet. I am painfully aware that I could get locked out by messing with the network configuration which is why I've posted here sooner than normal.

M@t gravatar image M@t  ( 2017-06-22 17:19:07 -0600 )edit

@ahendrix (2/2) An no, I'm not sure that eth0 is the interface I'm using. I'll do more research to try and answer that. I fully intend to change the source IP of the HDL, unfortunately I can't access the web interface ATM.

M@t gravatar image M@t  ( 2017-06-22 17:22:31 -0600 )edit

Plugged the DHCP connection into the LAN (forgot it existed - very embarrassing). And that is the physical port that corresponds to the "eth0" connection. I've updated the question accordingly. Unfortunately the drivers still don't work.

M@t gravatar image M@t  ( 2017-06-22 21:17:03 -0600 )edit

Question Tools

2 followers

Stats

Asked: 2017-06-21 18:21:14 -0600

Seen: 1,072 times

Last updated: Jul 31 '17