Skip to content

Communications

Communications Subsystem

comms overview

There are 3 main networks within our communications subsystem:

  1. Wi-Fi based ROS Communications

Our system leverages the ROS framework to simplify the communications of messages, commands and visual information. The user computer and the robot’s on-board Wi-Fi module are both connected to a common Wi-Fi access point. To reduce latency and improve the reliability of remote access, we have set up a local Wi-Fi network in our lab, with a static IP address assigned to the robot.

The robot is also designated as the ROS Master, and all other user computers or workstations can access messages on the ROS server by setting the ROS_MASTER_URI environment variable to the hostname/IP address of the robot, allowing for ease of logging and debugging.

2. RF-based Kill Switch

While a 1/10th-scale RC car is unlikely to cause any serious harm or damage to humans or objects (other than itself), we would still like to be able to remotely disable the robot in case things do not go as expected. This is mostly to protect the robot from damaging itself, which is a major risk to our project requirements. To that end, we have implemented a RF-based wireless kill switch using a 315 MHz band wireless transmitter/receiver pair. We chose this specific option as it operates in a different frequency band, which reduces any problem with interference on the often congested 2.4 GHz band. The circuit is also easy to implement, with each button on the key-fob transmitter mapping to a +5V/0V I/O pin on the receiver, which can then be used to switch digital pins on the microcontroller or a relay that cuts off the power supply to the motors once activated.

3. Logitech Controller Wireless Teleoperation

Rather than sticking with the RC controller/receiver that comes with most hobby RC cars, we decided to implement a teleoperation control interface using a Logitech F710 Gamepad at the SBC/ROS level. This gives us plenty of options of mapping the variety of buttons/axes inputs on the gamepad to possible actions on the robot, compared to the usual 2/3 channels available on RC wireless systems. For instance, the axes on the gamepad can be used to control the steering and throttle of the robot, while the buttons can be used to activate certain sequences of motions or act as a enable/disable switch.

This design choice also allows us to simplify the Teensy firmware to only take in one input from ROS, rather than having to multiplex between inputs from ROS and a separate RC receiver.

 

The figure below presents a high-level view of the various ROS nodes and topics that runs our system:

 

rosgraph