Understanding Heliostats
ARTIST is a digital twin for concentrating solar tower power plants. One of the most important aspects of these plants
are the heliostats - the mirrors that reflect light onto the receiver. Heliostats aren’t just perfect flat mirrors; they are
complex structures that must be accurately modeled. In ARTIST, we model heliostats using three key components: a
surface, a kinematic model, and actuators. This page provides a brief overview of how we include heliostats
in ARTIST and details the specific models we support.
Surfaces
The surface is a crucial element of a heliostat, as it’s responsible for reflecting light onto the receiver. Accurately
modeling the surface is of utmost importance. In ARTIST, a surface consists of multiple facets, which can be canted
at an angle to improve sunlight concentration.
Most commonly, heliostats in ARTIST consist of four facets, as shown in the image below.
As you can see, each facet has a position relative to the heliostat’s center and canting direction vectors
(canting_e, canting_n) that define its orientation.
Kinematic
The heliostat’s kinematic model describes the motion of its mechanical system. It’s used to predict the final orientation of the heliostat surface based on variable inputs. The kinematic model is also used to calculate the aligned surface points and normals for a predicted orientation. The choice of kinematic type can depend on the type and number of actuators or the availability of a dataset on the positions, orientations, and movements of the heliostat’s mechanical system.
The abstract class Kinematic contains a method to align the heliostat surface, which internally first computes the
desired orientation for a given input. All derived kinematic types override this method.
ARTIST currently supports the following kinematic type:
RigidBody
This rigid body kinematic model uses a two-actuator structure, allowing movement in two directions. These actuators introduce mechanical offsets, described by translation vectors for three components: joint one, joint two, and the concentrator. These vectors point in the east, north, and up directions, as shown in the image below.
In ARTIST these translations, as well as possible rotations of each joint, are included in the translation_deviation_parameters
and rotation_deviation_parameters tensors (see artist.field.kinematic_rigid_body.RigidBody), allowing multiple rigid body
kinematics with slightly different translations and rotations to be effectively modeled.
Joint one and two and the concentrator all have translations in the east north and up direction, making the translation_deviation_parameters
a 9-dimensional tensor. Only joint one and two have rotation_deviation_parameters. Joint one has these deviations only in the north and
up direction, whereas joint two has them only in east and north, making this a 4-dimensional parameter for the rigid body kinematic.
Actuators
Heliostat actuators are the motors responsible for adjusting the heliostat’s surface orientation to direct sunlight onto
a defined aim point. The actuators are described by the actuator parameters, which may contain information on motor
turning direction, step size, or offsets. The actuator parameters are split into non_optimizable_parameters and optimizable_parameters
when initializing the actuators. The abstract class Actuators contains one method to map motor steps to angles and another
to map angles to motor steps. All derived actuator types override these methods.
ARTIST currently supports the following actuator types:
LinearActuatorsIdealActuators
The LinearActuator is modeled on the actuator used in the Jülich power plant and includes the following parameters:
Parameter Name |
Description |
|---|---|
type |
The type of actuator. |
clockwise_axis_movement |
A boolean indicating if the movement direction is clockwise. |
min_motor_pos |
The smallest motor position the actuator accepts. |
max_motor_pos |
The largest motor position the actuator accepts. |
increment |
The total number of increments per full stroke. |
offset |
The physical offset from the actuator axis to the pivot. (2) in the image above. |
pivot_radius |
The radius from the pivot center to the actuator anchor. (1) in the image above. |
Parameter Name |
Description |
|---|---|
initial_angle |
The starting angular position of the actuator. |
initial_stroke_length |
The initial extension length of the actuator. (3) in the image above. |
In ARTIST the linear actuator is physics-informed to prevent invalid values and NaNs during forward and backward
passes. The parameters increment, initial_stroke_length, offset and pivot_radius are defined strictly positive using
the softplus function, ensuring physically meaningful values throughout the optimizations. Additionally, the law of
cosines, is used in both methods of the linear actuator to compute angles or motor steps. This involves the stroke
length, offset, and pivot radius of each linear actuator. Together they make up a triangle, defining how far the actuator
is from the actual rotational center of the joint. To make the law of cosines applicable, the sides (offset and pivot
radius) of the triangle must satisfy the triangle inequality:
This ensures that a valid triangle can always be formed. With this physics-informed backbone, the linear actuator can accurately model real actuator behavior in an efficient manner.
The IdealActuator has no optimizable parameters. The non-optimizable parameters only include the type, clockwise_axis_movement,
min_motor_pos and max_motor_pos.