Functional Architecture
The functional architecture displayed above shows the functions and the flow of information, energy, and material for the Spraybot. The material input to the system is an herbicide, and the energy input to the system is the battery. The visual and pose sensors sense respective inputs from the environment. The GPS signal and annotated maps are information inputs. A joystick is provided for manual tele-operation for situations where the robot is stuck or needs troubleshooting. The outputs from the system include movement of the robot for row and block traversal, the herbicide application, and information about the pose of the robot, robot status, herbicide, and battery levels. The functional architecture is broken down into six functional blocks:
Sense
The sense block contains all the functions related to processing the raw sensor data from Lidars, cameras, and pose sensors. It also involves the extraction of rows, detecting obstacles, and other functions related to perception. This block also contains functionality to sense herbicide and battery levels.
Localize
The localize block handles the functions related to determining the robot pose and status. It has local (inside block) and global (outside block) localization blocks that are fused to estimate the robot pose. The input to this block is from pose sensors and GPS. It will output this information to the navigate block and the process block.
Navigate
The navigate block performs all functions related to the traversal of the robot within rows and outside the block. The ‘Navigate Inside Block’ subsystem takes the robot pose, rows extracted from perception, and outputs torque commands to be actuated on the base motors. The ‘Navigate Outside Block’ subsystem takes the robot pose, obstacle status, the input annotated map, and output torque commands to be actuated on the base motors.
Actuate
The actuate block performs the functions related to driving the wheels. It takes input from the navigate block. It also actuates the sprayer when triggered by the process block.
Process
The process block is the central controller which controls the system’s behavior. It takes in status input from all the functional blocks, aggregates the information, and decides which block should be triggered.
Communicate
This block tackles all the functions related to communication with the user. It takes in user input, namely, start and stop commands, marked blocks to spray and communicate the robot status (current location, battery, and herbicide level), and provide the user with a report of its progress.