-
Notifications
You must be signed in to change notification settings - Fork 0
Software Requirements & Design Specification Document for Base station to Rover Communications System
- Project: Communication System between Rover and Base Station for UVic Robotics
- Version: 0.1
- Prepared by: Anton Nikitenko
- Date Created: Jan 28th, 2022
The purpose of this document is to outline the context, purpose, problem, functionality, and proposed solution to develop a communication system between the base station and rover that will be used by UVic Robotics at CIRC 2022. We first describe the high-level functionality the system must implement, distinguish between critical functionality (without which the rover cannot complete tasks) and non-critical functionality, the operating environment the system shall be implemented in, and a more detailed set of functional and non-functional requirements for the system. Finally, we propose a solution to implement the required functionality of the communication system.
The primary audience of this document includes software team members. Furthermore, all members of the club have access to the document as the specification and design of the communications system may impact their team’s design work. Furthermore, as stated by CIRC, This document is intended to be adapted and submitted as the team’s communications report (Rover heading, section 6, point 3) which shall fulfill the requirements described in the competition’s rules.
The scope of this document includes the software context, problem, and proposed solution to implement a communication system between the rover and base station. We do not consider other aspects such as the power requirements of the transceivers, or mechanical or electrical constraints on this system, as the scope of the project will not entail considerable interference with the functioning of other parts of the rover system. Furthermore, we consider the base station interface in this document, as its operation is integral to the functionality of the communication system.
[1] CIRC, “CIRC 2022 Rules and Guidelines,” CIRC. [Online]. Available: https://circ.cstag.ca/2022/rules/. [Accessed: Jan. 28th, 2022].
[2] Newegg, “Ubiquiti Rocket M M2 Ieee 802.11n 150 Mbit/s Wireless Access Point,” Newegg. [Online]. Available: https://www.directdial.com/ca/item/ubiquiti-rocket-m-m2-ieee-802-11n-150-mbit-s-wireless-access-point/rocketm2-us-. [Accessed: Jan 28th, 2022].
[3] https://dl.ubnt.com/datasheets/rocketm/RocketM_DS.pdf
[4] Newegg, “Ubiquiti Networks AMO-2G10 2Ghz , Airmax Dual Omni 10DBI- with Rocket Kit,” Newegg. [Online]. Available: https://www.newegg.ca/p/1B4-01ZE-00009?Description=ubiquiti%20rocket&cm_re=ubiquiti_rocket-_-1B4-01ZE-00009-_-Product. [Accessed: Jan 28th, 2022].
At the CIRC competition, we must communicate with the rover from a base station which will be located at a variable distance from it. It is expected that the rover will travel up to but no farther from a radius of 3km (reference TBD) from the base station, with non-line-of-sight communication required (NLOS). To send commands and data to the rover and receive data back (e.g., telemetry), we must implement a wireless communication system which will successfully enable communication between the base station and the rover with maximum availability and reliability. This is a new communication system, as we do not have an existing system to improve on. The following diagram illustrates the data flow that must be enables between the rover and base station:
The base station computer is controlled by team members who must communicate with the rover. The base station transceiver is a networking device which shall send and receive data to and from the rover respectively. Similarly, the rover transceiver is a networking device which shall send and receive data to and from the base station respectively. The rover’s transceiver shall be physically installed to the rover and linked with a physical data link connection.
We summarize at the highest level the major functions that the communication system shall achieve and are considered critical point of failures for the communication system. We furthermore outline several non-critical functions that are not necessary to achieve the minimum required communication functions, but which reduce the risk of unforeseen event which may in turn reduce the base station team’s ability to control the rover.
Critical functions:
- The base station shall be able to send commands to the rover, such as to move, actuate arms, or control other rover systems (i.e., packets).
- The base station shall be able to receive replies from the rover, indicating that commands previously sent from the base station have been acknowledged/acted on.
- The base station shall be able to determine in a reliable manner if the rover is receiving data correctly, or if communication is lost (i.e., connection status).
- The rover shall be able to send data including but not limited to: GPS position, actuator parameters, system state, and other essential statistics
- The rover shall be able to send video data at a resolution and frame rate such that the base station is able to receive it.
- The communication between the base station and rover shall exhibit minimal data loss/interference such that data integrity is maintained.
Base Station Laptop: We assume that a laptop or other computer is used as part of the base station. The laptop must run a UNIX system such as MacOS or a Linux distribution. The laptop must have an Ethernet port such that a physical connection to the base station transceiver is achieved.
Base Station Transceiver: The transceiver refers to 2 products used together to achieve the functions required to communicate with the rover. The 1st is the Ubiquiti Rocket M M2 IEEE 802.11n 150Mbit/s WAP [2], which hosts an RJ-45 port to connect with the base station laptop. It also hosts an RP-SMA RF connector which allows for an antenna to be connected. Second, the Ubiquiti Networks AMO-2G10 2Ghz Airmax Dual Omni 10DBI [4], an omni-directional antenna operating at the 2.4GHz range. It is connected to the Rocket M2 with the RF connector cables.
Rover Transceiver: See setup above of Base Station Transceiver. Identical setup except that the RJ-45 port from the Rocket M2 shall be connected to the onboard computer on the rover, which allows the rover’s software to communicate with the base station.
Rover Computer: The rover computer (e.g., Raspberry PI, Nvidia Jetson) is responsible for controlling the rover’s various modules, such as wheel movement, actuator movement, and communications.
The diagram below visualizes the physical attachment between the antenna, M2 Rocket WAP, and the computer that would be connected, either on the base station or the rover.
TBD: Rover Distance from Base Station
TBD
It must be clarified that given access to the hardware specified above that transmits and receives in the 2.4GHz range, the solution will most likely be only software-based, as the Rocket M2 and antenna are configured to run with minimal intervention (i.e., out-of-the-box). The communication system must be implemented at both the base station and rover, which implies two separate software applications, which are described below.
The primary software that controls the rover is the ROS (Robot Operating System) application, hosted here (https://github.com/Uvic-Robotics-Club/ROS-runt-rover) (NOTE: This link will be moved to another repository which represents the running system). In the context of the communication system, a new node must be created that is dedicated to that system. This new node’s responsibility will be as follows:
- Ensure that the RJ-45 Ethernet cable is connected to the Rocket M2. It publishes a topic which indicates the state of the connection.
- Given that the Ethernet cable is connected to the computer, it determines whether it is connected to the base station. It publishes the state of the connection to the base station as a topic.
- Ensure that the computer is connected to the base station’s network. The 802.11n specification must be followed to ensure that a successful wireless connection is achieved. An IP address assignment policy shall be specified and implemented by the node.
- Listen for incoming packets from the base station at pre-specified port, parse incoming packets, and convert commands and/or data in such a way that it can be used by other ROS nodes. For commands coming from the rover, TCP (Transmission Control Protocol) shall be used. (TBD: Does UDP ensure data within a packet is correct?)
- When receiving data such as telemetry, the node shall convert the data into packets that can be sent over a TCP connection to the base station.
- When receiving video data, the node shall send the video data to the base station using a video streaming protocol (TBD).
The node will most likely be written in Python, as the required functionality can be implemented without considerable difficulties.
There is currently no base station software. The responsibility for the base station software is to allow users to connect to, send commands, and receive telemetry and video data from the rover. Given we are implementing a 2.4GHz range system with an 802.11n compatible device, implementing a Wireless Local Area Network (LAN) is the most straightforward option which minimizes development efforts. The Base Station will therefore act as the router.
The following design is to be implemented:
- A Web application that presents the user with an interface allowing them to interact with the rover
- NodeJS server which forwards HTTP requests to the appropriate IP address (connected rover), and manages the wireless hotspot, which is the Wi-fi network the rover will connect to.
- Network interface which is configured by the NodeJS Server to create a WLAN
The responsibility of the base station software is as follows:
- Web Application Interface: Present the user with a friendly, intuitive web application interface which allows them to send commands to the rover, receive & visualize rover telemetry and video data, and manage the communication system
- NodeJS Server: Receive requests from the web application interface, forward those requests to the rover, receive requests and data from the rover and forwards it to the web application interface. Creates and manages the wireless hotspot the rover connects to.
If the WLAN is implement as specified above, no further hardware is expected to provide the necessary functionality for the communication system.
It will be challenging to test and validate system behavior with the Ubiquiti equipment for each code change. Therefore, we can luckily simulate the wireless network equipment with simply a development machine that supports the software stack mentioned above for the base station, and a computer with the same software stack that will be located on the rover (e.g., Raspberry Pi).
- ROS workflow
- Guide to Relevant Motors
- Base Station to Rover Comms System Design Doc (v0.1)
- VM Ubuntu 20.04 Installation
- GPS Software Setup
- ROS on Rasberry Pi
- Runt Rover
- Computer Vision
- Tutorials
- System Diagrams
- Scheduler Documentation