In this activity, you will configure network settings and conduct communication tests between the JetBot and the Ubuntu Virtual Machine running on your computer. After completing these steps, you will be able to configure ROS to coordinate Nodes across multiple devices, as required by SLAM.
Network Diagram - Communication Between JetBot and Ubuntu VM
All computer-side steps should be completed with the Terminal and Web Browser within the Ubuntu Virtual Machine to fully test the network communication.
Part 1: Ubuntu Virtual Machine Network Configuration
One of the strengths of ROS is its distributed architecture, which allows different Nodes (or programs) to communicate and operate across multiple devices. For ROS communication between the JetBot and the Ubuntu Virtual Machine, they need to share the same network and subnet.
There are two main options to achieve this for your setup:
Option 1: Use a dedicated USB Wireless Network Adapter for the Ubuntu Virtual Machine.With a dedicated USB Wireless Network Adapter, the Ubuntu Virtual Machine can have its own IP address, independent from the host computer.
Option 2: Enable a Bridged Network Connection in the VMWare software. This causes the Ubuntu Virtual Machine to appear as an independent device on the network, obtaining its own IP address within the same subnet as the host computer and JetBot.
If you haven't already done so, you may need to check with your Network Administrator to determine which option is most appropriate for your environment.
Begin by launching the VMWare software on your computer and starting the Ubuntu for JetBot Virtual Machine. The login password is: cmra
Open Ubuntu VM in VMWareLog into Ubuntu VM
Follow along with the steps under Option 1 or Option 2 to continue.
Option 1: USB Wireless Network Adapter
Option 2: Bridged Network Connection
Part 2: Network Ping Test
In this part of the activity, you will test the general network connectivity and communication between the Ubuntu Virtual Machine and the Jetson Nano by using the ping command.
<
Step 1: Power On the Jetson Nano and Note its IP Address
An IP address is a unique numerical label assigned to each device connected to a computer network that uses the Internet Protocol for communication. Every ROS “Node” (JetBots, Computers) has a unique IP address.OLED IP Address
>
Try It! Ping Another JetBot
Make note of the IP Address of another JetBot running on your network, and ping it instead.
Type a Different IP Address
Part 3: Netcat Test
In this step, you will use Netcat to establish a TCP connection between your Ubuntu Virtual Machine and the JetBot, testing that you are able to securely send and receive messages over the network.
<
Step 1: Launch Jupyter Labs
Open a web browser within the Ubuntu Virtual Machine and go to the JetBot’s IP Address + :8888
IP Address in Web Browser
>
Try It! Message a Colleague
Coordinate with one or more colleagues to start up the netcat service listening on a JetBot on a port of your choice (but remember to choose a port higher than 1024). Also connect to the netcat service running on that JetBot and on the chosen port. Start sending messages and observe what happens!Message a Colleague
Did You Know? Network Layers
Many systems need to be in place for computers (and robots!) to talk to each other. These are often organized into “layers” to make it easier to think about and troubleshoot them. System Layers
Application Layer: The software on the two computers needs to make sense of the data coming over the connection.
Example Failure: An old version of a web browser doesn’t correctly display the data from a website.
Example Failure: A software bug causes a drone to send video with the wrong resolution, resulting in corrupted images on the operator station.
Example Failure: Two different programs are running on the robot at the same time and are issuing conflicting commands.
Network Layer: Both systems, as well as everything along that path, need to be set up to get each piece of data to its destination.
Example Failure: A laptop computer configured to connect to its WiFi router at home will be looking to communicate with that router, ignoring the one in the conference room where it is now.
Example Failure: A replacement robot is not registered on the wireless network’s access control list, and therefore is not allowed to connect.
Physical Layer: There needs to be a physical path for data to get from the sender to the receiver – over wires, radio waves, sound waves, or a combination of those.
Example Failure: If a network cable comes unplugged, there is no longer a physical path for the data to make the trip along, and communication will fail
Example Failure: If a drone flies inside a warehouse, the metal walls may block the drone’s wireless signal from reaching the operator station
Generally, “higher” layers depend on “lower” layers. If there is no physical connection, it doesn’t matter whether the network or application layers are set up correctly or not; you may not even be able to check them.
On the other hand, if you can see an application working, you don’t have to check the lower (e.g., physical) layers, because they must be working for the highest layer to function. Even so, every layer represents a part of the system that can be attacked, and therefore needs cybersecurity.
OSI Network Model and TCP/IP Network Model Note that there are actually more layers (the most common has 7) involved in a network. However, the distinctions between the additional categories are generally not critical for field configuration and troubleshooting.
Did You Know? Cybersecurity and Defense-in-Depth
Cybersecurity has emerged as a significant concern in automation and robotics, particularly with the growing prevalence of AI and IoT. As robots become more networked and autonomous, the risk of cyberattacks increases, including potential safety hazards, data breaches, and production delays.
Large Material Handling RobotMission Support Robot
Cybersecurity is a shared responsibility among device manufacturers, integrators, and operators. It's crucial to incorporate security measures at every stage, from design and implementation to the operational phases.
Defense-in-Depth is an effective cybersecurity strategy that employs multiple layers of protection to secure information and thwart cyber-attacks. This approach ensures that if one layer fails, others are still active to provide defense.
Defense-in-Depth Layers of Protection
In the field of robotics, employing this strategy is vital to protect critical system components, firmware, and software from cyber threats.
Check Your Understanding: What is the purpose of the ping <JetBot IP address> command?
Check Your Understanding: What does the command ssh jetbot@localhost do in Jupyter Labs Terminal?
Check Your Understanding: What is the result of executing netcat -l 1234 on the JetBot?