Setting Up Warthog’s Network¶
Warthog is equipped with an 802.11b/g/n compatible Wi-Fi module. On currently-shipping units, this is a Microhard PX2. Warthog does not come equipped with a bluetooth module by default, though an adapter can be connected to the onboard Advantech ARK-3520P PC.
First Connection¶
By default, Warthog’s wireless is in client mode, looking for the wireless network at the Clearpath factory. In
order to set it up to connect to your own network, you’ll have to open up the chassis and connect a network cable to
the PC’s STATIC
port. The other end of this cable should be connected to your laptop, and you should give yourself an IP address in the 192.168.131.x
space, such as 192.168.131.50
. Then, make the connection to Warthog’s default
static IP:
ssh administrator@192.168.131.1
The default password is clearpath
. You should now be logged into Warthog as the administrator user.
Changing the Default Password¶
Note
All Clearpath robots ship from the factory with their login password set to clearpath
. Upon receipt of your
robot we recommend changing the password.
To change the password to log into your robot, run the
passwd
command. This will prompt you to enter the current password, followed by the new password twice. While typing the
passwords in the passwd
prompt there will be no visual feedback (e.g. “*” characters).
To further restrict access to your robot you can reconfigure the robot’s SSH service to disallow logging in with a password and require SSH certificates to log in. This tutorial covers how to configure SSH to disable password-based login.
Connecting to Wifi Access Point¶
Warthog’s standard wireless network manager is wicd. To connect to an access point in your lab, run:
wicd-curses
You should see a browsable list of networks which the robot has detected. Use arrow keys to select the one you
would like to connect to, and then press the right arrow to configure it. You can enter your network’s password
near the bottom of the page, and note that you must select the correct encryption scheme; most modern networks
use WPA1/2 Passphrase
, so if that’s you, make sure that option is selected. You also likely want to select
the option to automatically reconnect to this network, so that Warthog will be there for you on your wireless
automatically in the future.
When you’re finished, press F10 to save, and then C to connect.
Wicd will tell you in the footer what IP address it was given by your lab’s access point, so you can now log out, remove the network cable, and reconnect over wireless. When you’ve confirmed that all this is working as expected, close up Warthog’s chassis.
Remote ROS Connection¶
To use ROS desktop tools, you’ll need your computer to be able to connect to Warthog’s ROS master. This can be a tricky process, but we’ve tried to make it as simple as possible.
In order for the ROS tools on your computer to talk to Warthog, they need to know two things:
How to find the ROS master, which is set in the
ROS_MASTER_URI
environment variable, andHow processes on the other computer can find your computer, which is the
ROS_IP
environment variable.
The suggested pattern is to create a file in your home directory called remote-warthog.sh
with the following
contents:
export ROS_MASTER_URI=http://cpr-warthog-0001:11311 # Warthog's hostname
export ROS_IP=10.25.0.102 # Your laptop's wireless IP address
If your network doesn’t already resolve Warthog’s hostname to its wireless IP address, you may need to add
a corresponding line to your computer’s /etc/hosts
file:
10.25.0.101 cpr-warthog-0001
Then, when you’re ready to communicate remotely with Warthog, you can source that script like so, thus defining those two key environment variables in the present context.
source remote-warthog.sh
Now, when you run commands like rostopic list
, rostopic echo
, rosnode list
, and others, the output
you see should reflect the activity on Warthog’s ROS master, rather than on your own machine. Once you’ve
verified the basics (list, echo) from the prompt, try launching some of the standard visual ROS tools:
roslaunch warthog_viz view_robot.launch
rosrun rqt_robot_monitor rqt_robot_monitor
rosrun rqt_console rqt_console
If there are particular rqt widgets you find yourself using a lot, you may find it an advantage to dock them together and then export this configuration as the default RQT perspective. Then, to bring up your standard GUI, you can simply run:
rqt
Configuring Network Bridge¶
Warthog is configured to bridge its physical ethernet ports together. This allows any ethernet port to be used as a
connection to the internal 192.168.131.1/24
network – for connecting sensors, diagnostic equipment, or
manipulators – or for connecting the robot to the internet for the purposes of installing updates.
Depending on which version of Clearpath’s OS installer was used to install the OS on the robot, the bridge can be configured in one of two ways:
Netplan
Netplan is the default network configuration tool for Ubuntu 18.04 onward. Instead of using the /etc/network/interfaces
file, as was done in Ubuntu 16.04 and earlier, netplan uses YAML-formatted files located in /etc/netplan
. The
default configuration file, /etc/netplan/50-clearpath-bridge.yaml
, is below:
# /etc/netplan/50-clearpath-bridge.yaml
network:
version: 2
renderer: networkd
ethernets:
# bridge all wired interfaces together on 192.168.131.x
bridge_eth:
dhcp4: no
dhcp6: no
match:
name: eth*
bridge_en:
dhcp4: no
dhcp6: no
match:
name: en*
bridges:
br0:
dhcp4: yes
dhcp6: no
interfaces: [bridge_eth, bridge_en]
addresses:
- 192.168.131.1/24
To enable network configuration using netplan you must install the netplan.io
package:
sudo apt-get install netplan.io
Ifupdown & Interfaces
Upon release, Warthog was configured to use the same networking tools on Ubuntu 16.04 running ROS Kinetic. This was done
to ensure compatibility with Clearpath’s other platforms, and to ease the transition to 18.04 and ROS Melodic. As-of
December 2021, configuration using /etc/network/interfaces
on Ubuntu 18.04 should be considered deprecated; the
configuration using netplan
described above is the preferred method of configuring the network.
For reference, the default /etc/network/interfaces
file for Warthog is below:
auto lo br0 br0:0
iface lo inet loopback
# Bridge together physical ports on machine, assign standard Clearpath Robot IP.
iface br0 inet static
bridge_ports regex (eth.*)|(en.*)
address 192.168.131.1
netmask 255.255.255.0
bridge_maxwait 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
To enable network configuration using /etc/network/interfaces
you must install the ifupdown
package:
sudo apt-get install ifupdown
Advanced: Hosting a Wifi Access Point¶
The default network manager, wicd
, only supports joining existing networks. It does not support creating its own wireless AP.
However, there is experimental support in Warthog for a modern network manager called connman, which does.
Warning
You are unlikely to damage your hardware by switching Warthog from wicd to connman, but it’s possible you could end up with a platform which will need to be reflashed back to the factory state in order to be usable. If you’re comfortable with this and have backed up your data, proceed.
Connman is available through the Ubuntu software repositories, and can be installed by running the following command:
sudo apt-get install connman
Note that there is a similarly-named conman
package, which is a serial console manager, not a network manager. Be
sure to include two N’s in connman
.
Once connman is installed, edit the upstart job file in /etc/init/connman.conf
. Suggested configuration:
description "Connection Manager"
start on started dbus
stop on stopping dbus
console log
respawn
exec connmand --nobacktrace -n -c /etc/connman/main.conf -I eth1 -I hci0
And edit connman’s general configuration in /etc/connman/main.conf
. Suggested:
[General]
TetheringTechnologies = wifi
PersistentTetheringMode = true
Now, use the connmanctl command-line interface to set up an AP, which connman calls “tethering” mode:
$ connmanctl
connmanctl> enable wifi
connmanctl> tether wifi on Warthog clearpath
If you want to use connman to connect to another AP rather than host:
$ connmanctl
connmanctl> tether wifi off
connmanctl> agent on
connmanctl> scan wifi
connmanctl> services
connmanctl> connect wifi_12345_67890_managed_psk
Use as the argument to connect
one of the services listed in the services
output. You will be interrogated for
the network’s password, which is then cached in /var/lib/connman/
.