Run two or more pressure controllers as if they are one big pressure control system. Right now the pressure control functions work for one single pressure control system over serial, but it would be nice to chain several system together for more channels.
The ideal solution
This is conceptually simple: define how many channels each pressure controller has, what order they should be controlled in, and split up trajectories to be sent to both controllers, and synchronize the run and stop commands.
Inputs:
Controller definition file - describes the comms properties of each controller and how many channels each one has
Trajectory of any length - if too many channels for controller 1, send the remaining channels to controller 2, etc.
Proposed Functionality:
Use the new controller definition file to create several "controller" objects
Update "_send_prebuilt.py" to create these controller objects and split the trajectory into several parts to send to each controller.
Update "_run_prebuilt.py" to communicate with all controllers. We need to start/stop trajectories in a synchronized way, and save data from all pressure controllers. We also need to stitch the data back together into one set, as if the multiple controller are just one big controller.
Alternatives?
This functionality is partially-implemented when using the ROS driver for this system. In ROS, you can spawn several controller nodes, one for each physical device you're controlling. If you split up your trajectory into two parts, you can send it simultaneously to several pressure controllers.
Pros:
Actually real-time pressure control - computer communicates with controller in real time rather than loading pre-defined trajectories and running them later.
Easy to set up several devices, and the communication separation is already working (provided you use ROS).
Cons:
This is only tested with a pressure controller and a servo controller (running my servo_control firmware).
So far the names of devices are hard-coded ("_pressurecontroller" and "servo").
Have to use ROS...
Will this require substantial changes to the codebase?
Yes - This requires a fundamental redesign of how we handle communication, since right now it's just assumed we are using only one controller. We will need to implement an array of controllers. In addition, the controller setup file changes form as well.
Feature description
Run two or more pressure controllers as if they are one big pressure control system. Right now the pressure control functions work for one single pressure control system over serial, but it would be nice to chain several system together for more channels.
The ideal solution
This is conceptually simple: define how many channels each pressure controller has, what order they should be controlled in, and split up trajectories to be sent to both controllers, and synchronize the run and stop commands.
Inputs:
Proposed Functionality:
Alternatives?
This functionality is partially-implemented when using the ROS driver for this system. In ROS, you can spawn several controller nodes, one for each physical device you're controlling. If you split up your trajectory into two parts, you can send it simultaneously to several pressure controllers.
Pros:
Cons:
Will this require substantial changes to the codebase?
Yes - This requires a fundamental redesign of how we handle communication, since right now it's just assumed we are using only one controller. We will need to implement an array of controllers. In addition, the controller setup file changes form as well.