Modbus TCP Connectivity for Fully Automated Greenhouse
Canopii is a small startup developing fully automated greenhouse farms and has just completed construction for its first full-scale prototype. This project hopes to integrate and demonstrate Modbus TCP communications between Canopii's custom robotics control software and off-the-shelf Modbus devices, such as the greenhouse controller and various IO modules.
Objectives
- Establish a ROS2 node in Python for sending and receiving Modbus TCP data between Canopii's robotics control software and off-the shelf devices. The node will ideally rely on the pymodbus Python library and will require an in-depth understanding of ROS2 and Canopii's robotic control software architecture.
- Establish a software representation of a Stride Field I/O module. The representation will include functions/interfaces for reading and writing to specified IO ports by relying on the lower level ROS2 node established in Objective #1. Demonstrate the ability to read an input port and write to an output port on the physical Stride I/O module.
- Establish a software representation of the Agrowtek GCX greenhouse controller. The representation will include functions/interfaces for reading data (i.e. temperature from the environmental controller, pH from the nutrient doser, wind direction from the weather station). This initial implementation will only need to be able to read data from the greenhouse controller, not write to it, but will also rely on the lower-level Modbus TCP interface established in Objective #1.
- Establish automated tests for the Modbus TCP interface from Objective #1 to help ensure future developments do not negatively impact the performance of the established interface.
Motivations
Canopii has developed all software for controlling its custom robotics devices using C++ and Python while relying heavily on the ROS2 framework and a custom cross-platform TCP communication library. However, the farm contains numerous off-the-shelf Modbus TCP devices that the robotic control software is currently not able to communicate with. Establishing a Modbus TCP communication interface would enable, for example, data from the greenhouse controller to be presented in the farm's robotics control user interface. Another example the Modbus TCP link would support is allowing the farm's control software to read and write to digital IOs on a Stride Field I/O module. A reliable Modbus TCP interface will streamline any future adaptation of Modbus TCP devices in the future, providing greater flexibility for selected hardware and capabilities.
Qualifications
Minimum Qualifications:
- Experience with Python
- Comfortable using Linux (Ubuntu 22.04 ideally)
- Understanding of proper source control using git and GitHub
- Willingness to properly document software developments
- Experience with C++
- Experience compiling software
- Automated test development experience
- VS Code experience preferred
- Knowledge and experience with ROS2
- A basic understanding of Modbus TCP and Ethernet communication networks
Details
Project Partner:
Justin Gravett
NDA/IPA:NDA/IP Required
Number Groups:1
Project Status:Accepting Applicants
Website:www.canopii.us
Keywords:
CPythonLinuxEmbedded SystemsNetworkingROS2Consultancy
