Difference between pages "Networking" and "Field Service Menu (FSM)"

(Difference between pages)
Jump to: navigation , search
(Confirm that Sawyer is running in SDK mode on the robot)
 
 
Line 1: Line 1:
  
 
<div class="title-block">
 
<div class="title-block">
<span style="font-size:120%;">'''The Sawyer Research Robot uses ROS to communicate with the user's Development Workstation.  This requires an ethernet network to be established between Sawyer and the Workstation with full bi-directional connectivity.  If you have trouble connecting to your Sawyer, see this page for our Recommended Network Setup and other common network debugging steps.'''</span>
+
<span style="font-size:120%;">'''The Field Service Menu (FSM) is a pre-boot configuration menu that allows the user to do advanced tasks such as check network interface configuration, change the robot computer's hostname, and run low-level hardware checks.'''</span>
 
</div>
 
</div>
 
 
{{TOClimit|limit=2}}
 
 
  
 
<div class="content-block">
 
<div class="content-block">
== Confirm that Sawyer is running in SDK mode on the robot ==
 
  
In order to network with the robot, be sure that the robot is in SDK mode.  You can confirm this by booting the robot and seeing this image on the screen:
 
  
 +
== Overview ==
 +
The primary purpose of the Field Service Menu (FSM) is to give the user access to low-level, computer configuration options on the robot, especially:
 +
* Edit Hostname
 +
* Edit Network Configuration
 +
** Set Static IP/DNS
 +
** Set NTP Servers
 +
** Set ROS naming convention
 +
* Edit Timezone
 +
* Change Run Mode (RSDK vs Demo Mode)
  
[[File:Sawyer_SDK_Robot_Screen.png|400px]]
+
The FSM also provides the ability to run low-level hardware tests to do light-weight verification of hardware components that sit below the robot application software level.
 
 
 
 
If you boot the robot and it is running Intera, please follow [[Upgrade Sawyer to Intera SDK|these instructions]] to update the robot.
 
  
 
</div>
 
</div>
Line 23: Line 23:
 
<div class="content-block">
 
<div class="content-block">
  
== Basics ==
+
== Quickstart - FSM Activation / Deactivation ==
These Network Configuration settings are available in the [[Field Service Menu (FSM)]]
+
=== Accessing the FSM ===
 +
The FSM can only be accessed by hitting a specific key combination during robot boot-up:
  
=== Basic Requirements ===
+
#  Turn off Baxter with the Power button. Wait for complete shutdown (no lights, no noise).
Sawyer must be connected to a development workstation which uses ROS over an ethernet network to communicate bi-directionally.
+
#  Plug in a USB keyboard to Baxter's USB port (on rear).
 +
#  You will need to hit <code><Alt+FF></code> on the keyboard during the boot-up to trigger the FSM:
 +
#* Turn Baxter back on by hitting the Power button.
 +
#* Once you see the Rethink Animation ... 
 +
#* ... on your keyboard, start repeatedly hitting the key combination <code><Alt+FF></code> 
 +
#*:      ''(Hit and hold the <code>Alt</code> key, press down on the <code>F</code> key, release, press down on the <code>F</code> key again, release both and repeat)''.
 +
#  Repeat this key combination until you see the FSM screen come up: 
 +
#* If you hit a screen that says "Loading...", you missed your chance.
  
Sawyer's [[Robot Hostname|hostname]] can be configured using the [[Field Service Menu (FSM)]] if you do not like the one given out at the factory which matches its [[Serial Number|serial number]].
+
Use the Up/Down arrow keys to change menu selections, and the Enter key to go into a menu or select an option.
  
=== Network address assignment ===
+
==== Exiting: Disabling the FSM ====
 +
'''Important:''' Once the FSM is activated, it will come up every boot thereafter -- unless Disabled before exiting the menu.
  
Sawyer supports IPV4 addressing for the following network configurations:
+
To disable the FSM from reappearing next boot:
* Automatic address assignment (“Automatic” mode)
 
** If a DHCP server is present in the network, the DHCP server automatically assigns a network address to the robot, and may (or may not) assign a DNS server for host name resolution.
 
** If no DHCP server is present, the robot will use the Autoip protocol to assign itself a link-local address in the 169.254.0.0/16 address block.
 
** All assignments in this mode are automatic, and no options can be configured manually.
 
* Manual address assignment from the Field Service Menu (“Manual” mode)
 
** The user must specify a valid IPV4 address for the robot, and may optionally specify a network mask, default gateway address, and DNS server address. All network options are configured manually.
 
  
=== Host name resolution ===
+
#  Select the 'Disable field service menu' option and hit Enter. 
 +
#: 
 +
#: You should now see a line near the top saying: <code>On next boot FSM will be disabled</code>
 +
#: [[File: fsm_disabled.png|link=]]
 +
#  You can now leave the FSM through any of the normal [[Field Service Menu (FSM)#exit-actions|Exit Actions]], such as Reboot Robot.
  
In all addressing modes, Sawyer provides link-local advertising of the robot’s host name as “<robot name>.local” using the Avahi mDNS service. Computers that are located in the same subnet as the robot and that support mDNS can always resolve the robot’s host name as “<robot name>.local” even if no other host name resolution service is present. Sawyer will also be able to communicate with these computers using their host names.
 
 
In “Automatic” addressing mode, Sawyer will be able to resolve external host names only if the network’s DHCP server supplies a DNS server address. If the DHCP server does not provide a DNS server address, Sawyer will only be able to communicate with external computers by their IP addresses.
 
 
In “Manual” addressing mode, Sawyer will be able to resolve external host names only if the user specifies a DNS server address (and a default gateway address if computers in a different subnet are involved). If the user does not provide a DNS server address, Sawyer will only be able to communicate with computers by their IP addresses.  If the user does not provide a default gateway address, Sawyer will only be able to communicate with computers within the same subnet.
 
</div>
 
<div class="content-block">
 
== ROS Naming Conventions ==
 
 
Intera robots supports 3 ROS naming conventions.  These control how the ROS Master publishes the access information for the individual nodes published by the robot.  Regardless of how you connect to the robot, you will need to be able to reach it by the address configured by its ROS naming convention if you want to be able to interact with it. (i.e. if you can reach the robot by its IP, but it is configured with the ROS_HOSTNAME convention and you can't reach it by its hostname, then you will be unable to do meaningful work with the robot)
 
* '''ROS_HOSTNAME.local:''' This publishes the nodes at <code><robot hostname>.local</code>
 
** This is the least versatile, but the most stable configuration, and is our recommended when it is available.
 
** This convention only works in a local setup, where your robot and development machine are on the same subnet, but will '''almost always''' work in that network configuration.
 
** This will only break if
 
*** A naming conflict is introduced on the local network or
 
*** You manually change the hostname of the robot.
 
* '''ROS_IP:'''  This publishes the nodes at the IP4 Address associated with the robot
 
** This is the most versatile naming convention, but also the most fragile.
 
** It will work in any network configuration where you have connectivity to the robot, but will break if the IP of the robot changes
 
* '''ROS_HOSTNAME:''' This publishes the nodes at the hostname of the robot.
 
** This configuration has medium versatility and stability.
 
** It only works if there is a working DNS running on your network, and pointed at the robot.
 
** This will only break if
 
*** A naming conflict is introduced in the network or
 
*** If the the DNS-resolved hostname of the robot is changed, which can be done by the Server admin, but is unlikely to happen.
 
 
</div>
 
</div>
  
 
<div class="content-block">
 
<div class="content-block">
  
== Network Configuration through a Router ==
+
== Menu Functions ==
 
+
After [[Field Service Menu (FSM)#accessing-the-fsm|Activating the FSM]], the top level of the Field Service Menu provides access to three sub-menus and shutdown/reboot options.
=== Recommended Network Configuration ===
 
 
 
The recommended network configuration is to connect your development workstation and your Sawyer to an all in one SOHO (Small Office/Home Office) router/firewall similar to the Linksys EA-Series routers. This type of router provides DHCP and other networking services, and has the benefit of keeping the network traffic off of your main network. It also allows the development workstation access to internet in particular, the Rethink Robotics github repo for code and documentation.
 
  
=== Router Configuration Diagram ===
+
=== Configuration Menu ===
 +
This menu provides access to Baxter's hostname, timezone, and network configuration information.  Information here is useful for setting up Baxter on your [[Networking|Network]]. 
  
[[File:Router_Config.png|800px]]
 
  
* Sawyer and the user's computer can both be set to "Automatic" addressing mode, which will draw IP information directly from the router.
+
* '''Hostname''' - Rename your Baxter (i.e. change robot computer's hostname)
 +
*: Changing the Hostname will also change Baxter's network identity name.
 +
*: Upon reboot, Baxter will then be accessible via the new name followed by '.local', rather than by the serial number (default hostname).  In the case shown in the screenshot, Baxter's new [[avahi]] address would be <code>test.local</code>.
 +
* '''Addr Type''' - Change the network addressing method from DHCP to Custom
 +
*: Toggling this will set '''Address''', '''Netmask''', '''Gateway''', and '''DNS Server''' to blank, and enable editing them
 +
* '''ROS Naming''' - Change how the master publishes node locations
 +
*: Options are:
 +
** ROS-Hostname
 +
** ROS-Hostname.local
 +
** ROS-IP
 +
*: See the [[Networking]] page for more information on network configurations.
 +
* '''Delete stored task data''' is a flag for the Production version of Baxter, and has no impact on the BRR.
  
=== Sawyer ===
+
''Tip:'' Make sure to Save Changes after editing any Configuration options, and then Shutdown or Reboot Baxter from the FSM main menu to apply the changes.
  
* Sawyer can be set to use either ROS_IP or ROS_HOSTNAME.local:
+
===='''Date, Time, Timezone, NTP Servers'''====
*# ROS_HOSTNAME.local is our '''recommended''' ros naming protocol for the robot in this setup.  It is very stable in this network configuration, and would only need to be adjusted if you switch to a separate subnet from the robot.
 
*#* If you can <code>ping <robot hostname>.local</code>, then the network is working correctly
 
*# ROS_IP is the most reliable naming method, if you know that the robot is going to keep its .IP.  This naming protocol works across all network configurations as long as you have reliable routing to the robot.
 
*#* If you can <code> ping <robot ip></code> then the network is working correctly.
 
*#* '''Note:''' You can set the robot to use a Static IP if you are interested in using this naming convention because you are unsure of your future network configurations, but be sure to talk to your network administrator if you are hooking your router up to a larger network.
 
  
=== Dev Machine ===
 
  
* In this network configuration, you will want to have your [[RSDK Shell|intera.sh]] script point to either:
+
* '''Timezone''' - Set the robot's clock to your local timezone.
*# ROS_IP = "<your development machine's IPV4 Address>"
+
*: This will primarily affect the time listed in the log files.
*#* Verify connectivity by attempting to <code>ping <your development machine's IPV4 Address></code>
+
* '''NTP Servers''' - Set your pool of NTP servers.
*# ROS_HOSTNAME = "<your development machine's hostname>.local"
 
*#* Verify connectivity attempting to <code>ping <your development machine's hostname>.local</code>
 
  
=== Connect Directly To Corporate Or University Network ===
+
=== Applications Menu ===
 +
The Applications menu launches the RSDK software application from the FSM. 
  
Another viable networking configuration is to connect Sawyer directly to your corporate or university network. Here you need to make sure that a DHCP server is available, and that your name server can resolve Sawyer's hostname to an IP address. If you plan on using DHCP reservation using Sawyer's MAC address, you can get the MAC address by using [[TTY#TTY3 - Network Info Display|TTY3]].
 
  
You can set Sawyer to use either "Automatic" addressing or a static IP configuration in this configuration.
+
* The 'Robot GUI' action will launch the xdisplay on Baxter and display the Baxter Research Robot logo.
 +
* The 'RSDK Demo Mode' action will launch the [[Demo Mode]]
  
'''Note:''' If you want to set a static IP, you will need to talk to your network administrator to get an appropriate IP for you to assign, in order to avoid network collisions.
+
=== Tests Menu ===
 +
The Tests menu provides a number of low-level hardware tests that can be run to verify the embedded hardware throughout Baxter.
  
=== Sawyer ===
 
  
In this network configuration, you can use either ROS_IP or ROS_HOSTNAME ROS naming conventions
 
* In this setup, we recommend using the ROS_HOSTNAME convention.  This will rely on your DNS and on not having someone else register a duplicate of your hostname (so pick a unique one), but will be very stable in this network configuration.
 
** If you can <code>ping <robot hostname></code> then the network is working.
 
* As mentioned in the previous section, ROS_IP is the most versatile ROS naming convention that works across the most network configurations, but is susceptible to automatic IP changes when a lease is exceeded.
 
** If you can <code>ping <robot IP></code> then the network is working.
 
  
=== Dev Machine ===
+
* To run a test, select the test from the menu and follow the on-screen instructions.
  
* In this network configuration, you will want to have your [[RSDK Shell|intera.sh]] script point to either:
+
=== Exit Actions ===
*# ROS_IP = "<your development machine's IPV4 Address>"
+
* '''Disable field service menu'''
*#* Verify connectivity by attempting to <code>ping <your development machine's IPV4 Address></code>
+
*: Select to disable the FSM from appearing at boot-up.
*# ROS_HOSTNAME = "<your development machine's hostname>"
+
*: ''Note:'' By default, accessing the FSM will enable it for future boots.
*#* Verify connectivity by attempting to <code>ping <your development machine's hostname></code>
+
* '''Reboot Robot'''
 +
*: Shuts down the robot computer and hardware, then restarts the robot, reflashing the controller boards and configurations if needed.
 +
* '''Shutdown Robot'''
 +
*: Shuts down the entire robot.  Use to power off the robot, or do a hard-restart of the robot to ensure new configurations or firmware are written to the hardware.
 +
   
 +
''Note: You can also leave the FSM via the Applications menu to go directly to normal RSDK operation.''
  
 
</div>
 
</div>
  
 
<div class="content-block">
 
<div class="content-block">
 
== Direct Network Configuration ==
 
 
If you do not have a DHCP server or other networking infrastructure, or would just prefer to connect your development workstation directly to Sawyer, you can do so using the following network configuration and steps.
 
 
=== Switch Configuration Diagram ===
 
 
[[File:Switch_Config.png|600px]]
 
 
=== Robot ===
 
 
In this setup, you will need to set your robot to use "Automatic" addressing, and can choose between ROS_IP and ROS_HOSTNAME.local for your ROS naming convention.
 
# ROS_HOSTNAME.local is our '''recommended''' ros naming protocol for the robot in this setup.  It is very stable in this network configuration, and would only need to be adjusted if you switch to a separate subnet from the robot.
 
#* If you can <code>ping <robot hostname>.local</code>, then the network is working correctly
 
# ROS_IP is the most reliable naming method, if you know that the robot is going to keep its .IP.  This naming protocol works across all network configurations as long as you have reliable routing to the robot.
 
#* If you can <code> ping <robot ip></code> then the network is working correctly.
 
#* '''Note:''' You can set the robot to use a Static IP if you are interested in using this naming convention because you are unsure of your future network configurations, but be sure to talk to your network administrator if you are hooking your router up to a larger network.
 
 
=== Dev Machine ===
 
 
* In this network configuration, you will want to have your [[RSDK Shell|intera.sh]] script point to either:
 
*# ROS_IP = "<your development machine's IPV4 Address>"
 
*#* Verify connectivity by attempting to <code>ping <your development machine's IPV4 Address></code>
 
*# ROS_HOSTNAME = "<your development machine's hostname>.local"
 
*#* Verify connectivity by attempting to <code>ping <your development machine's hostname>.local</code>
 
 
=== Avahi Configuration Steps: ===
 
 
These steps assume your ethernet connection to the robot is on <code>eth0</code>.
 
* Shutdown Sawyer and disconnect ethernet cable.
 
* Connect the laptop/workstation to Sawyer using a Category-5 ethernet cable.
 
* Power up Sawyer.
 
* Disable firewall on laptop if necessary:
 
<source lang="bash">
 
    $ sudo ufw disable 
 
</source>
 
 
* Turn off the Ubuntu Network-Manager to prevent interference:
 
* Go to the Networking Icon drop-down menu in the top-right of the Desktop.
 
* Make sure 'Enable Networking' is '''unchecked''' (if checked, select the option in the menu to disable)
 
 
* Check status of eth0:
 
<source lang="bash">
 
    $ ifconfig eth0 
 
</source>
 
''You should not see any IP addresses under 'inet'.''
 
 
* Use Avahi to designate an IP address to eth0 (do not close the terminal after running avahi-autoipd):
 
<source lang="bash">
 
    $ sudo avahi-autoipd eth0 
 
</source>
 
 
* Make sure an IP address is successfully claimed. eg:
 
<source lang="bash">
 
    Found user 'avahi-autoipd' (UID 104) and group 'avahi-autoipd' (GID 111).
 
    Successfully called chroot().
 
    Successfully dropped root privileges.
 
    Starting with address 169.254.8.16
 
    Callout BIND, address 169.254.8.16 on interface eth0
 
    Successfully claimed IP address 169.254.8.16
 
</source>
 
''Keep this Terminal running in the background.''
 
 
* Open a '''New Terminal''' to continue.
 
* Find the local hostname of the robot by running avahi-browse:
 
 
<source lang="bash">
 
    $ avahi-browse -a -r 
 
</source>
 
    The default local hostname of the robot is the [[Serial Number]] followed by local. Ex: '011303P0017.local'.
 
</div>
 
 
<div class="content-block">
 
 
 
== Troubleshooting ==
 
== Troubleshooting ==
 
+
For common issues related to core dumps or files on Baxter, check out the [[Contact|Troubleshooting page]].
See the [http://www.ros.org/wiki/ROS/NetworkSetup ROS Network Setup Guide] for common ROS network issues and helpful debugging steps to check your base ROS connectivity.
 
  
 
</div>
 
</div>

Revision as of 19:44, 7 December 2016

The Field Service Menu (FSM) is a pre-boot configuration menu that allows the user to do advanced tasks such as check network interface configuration, change the robot computer's hostname, and run low-level hardware checks.


Overview

The primary purpose of the Field Service Menu (FSM) is to give the user access to low-level, computer configuration options on the robot, especially:

  • Edit Hostname
  • Edit Network Configuration
    • Set Static IP/DNS
    • Set NTP Servers
    • Set ROS naming convention
  • Edit Timezone
  • Change Run Mode (RSDK vs Demo Mode)

The FSM also provides the ability to run low-level hardware tests to do light-weight verification of hardware components that sit below the robot application software level.

Quickstart - FSM Activation / Deactivation

Accessing the FSM

The FSM can only be accessed by hitting a specific key combination during robot boot-up:

  1. Turn off Baxter with the Power button. Wait for complete shutdown (no lights, no noise).
  2. Plug in a USB keyboard to Baxter's USB port (on rear).
  3. You will need to hit <Alt+FF> on the keyboard during the boot-up to trigger the FSM:
    • Turn Baxter back on by hitting the Power button.
    • Once you see the Rethink Animation ...
    • ... on your keyboard, start repeatedly hitting the key combination <Alt+FF>
      (Hit and hold the Alt key, press down on the F key, release, press down on the F key again, release both and repeat).
  4. Repeat this key combination until you see the FSM screen come up:
    • If you hit a screen that says "Loading...", you missed your chance.

Use the Up/Down arrow keys to change menu selections, and the Enter key to go into a menu or select an option.

Exiting: Disabling the FSM

Important: Once the FSM is activated, it will come up every boot thereafter -- unless Disabled before exiting the menu.

To disable the FSM from reappearing next boot:

  1. Select the 'Disable field service menu' option and hit Enter.
    You should now see a line near the top saying: On next boot FSM will be disabled
    File:Fsm disabled.png
  2. You can now leave the FSM through any of the normal Exit Actions, such as Reboot Robot.

Menu Functions

After Activating the FSM, the top level of the Field Service Menu provides access to three sub-menus and shutdown/reboot options.

Configuration Menu

This menu provides access to Baxter's hostname, timezone, and network configuration information. Information here is useful for setting up Baxter on your Network.


  • Hostname - Rename your Baxter (i.e. change robot computer's hostname)
    Changing the Hostname will also change Baxter's network identity name.
    Upon reboot, Baxter will then be accessible via the new name followed by '.local', rather than by the serial number (default hostname). In the case shown in the screenshot, Baxter's new avahi address would be test.local.
  • Addr Type - Change the network addressing method from DHCP to Custom
    Toggling this will set Address, Netmask, Gateway, and DNS Server to blank, and enable editing them
  • ROS Naming - Change how the master publishes node locations
    Options are:
    • ROS-Hostname
    • ROS-Hostname.local
    • ROS-IP
    See the Networking page for more information on network configurations.
  • Delete stored task data is a flag for the Production version of Baxter, and has no impact on the BRR.

Tip: Make sure to Save Changes after editing any Configuration options, and then Shutdown or Reboot Baxter from the FSM main menu to apply the changes.

Date, Time, Timezone, NTP Servers

  • Timezone - Set the robot's clock to your local timezone.
    This will primarily affect the time listed in the log files.
  • NTP Servers - Set your pool of NTP servers.

Applications Menu

The Applications menu launches the RSDK software application from the FSM.


  • The 'Robot GUI' action will launch the xdisplay on Baxter and display the Baxter Research Robot logo.
  • The 'RSDK Demo Mode' action will launch the Demo Mode

Tests Menu

The Tests menu provides a number of low-level hardware tests that can be run to verify the embedded hardware throughout Baxter.


  • To run a test, select the test from the menu and follow the on-screen instructions.

Exit Actions

  • Disable field service menu
    Select to disable the FSM from appearing at boot-up.
    Note: By default, accessing the FSM will enable it for future boots.
  • Reboot Robot
    Shuts down the robot computer and hardware, then restarts the robot, reflashing the controller boards and configurations if needed.
  • Shutdown Robot
    Shuts down the entire robot. Use to power off the robot, or do a hard-restart of the robot to ensure new configurations or firmware are written to the hardware.

Note: You can also leave the FSM via the Applications menu to go directly to normal RSDK operation.

Troubleshooting

For common issues related to core dumps or files on Baxter, check out the Troubleshooting page.