April 14, 2025
A solar panel harvests the most energy when pointing in the direction that maximizes the total illumination (irradiance) falling on it. Given an arbitrary panel orientation and an arbitrary environmental illumination, we address the problem of finding the direction of maximum total irradiance. We develop a minimal sensing approach where measurements from just four photodetectors are used to iteratively vary the tilt of the panel to maximize the irradiance. Many environments produce irradiance functions with multiple local maxima. As a result, simply measuring the gradient of the irradiance function and applying gradient ascent will not work. We show that a larger, optimized tilt between the detectors and the panel is equivalent to blurring the irradiance function. This has the effect of eliminating local maxima and turning the irradiance function into a unimodal one, whose maximum can be found using gradient ascent. We show that there is a close relationship between our approach and scale space theory. We collected a large dataset of high-dynamic range lighting environments in Manhattan, called UrbanSky. We use this dataset to conduct simulations to verify the robustness of our approach. Next, we simulate the energy harvested using our approach under dynamic illumination. Finally, we built a portable solar panel with four compact detectors and an actuator to conduct experiments in various real-world settings: direct sunlight, cloudy sky, urban settings with occlusions and shadows, and complex indoor lighting. In all cases, we show improvements in harvested energy compared to standard approaches for orienting a solar panel.
Solar Panel Orientation ,Photodifferential ,Minimal Sensing ,Scale Space Theory ,Urban Lighting Environment ,UrbanSky
Solar panels are widely deployed in open fields, on rooftops, and in urban settings to harvest energy from sunlight. Consider a panel in a desert on a sunny day. Since the sun is the dominant light source, the illumination from the entire sky can be approximated as coming from a single point (the sun). Thus, pointing the panel in the direction of the sun would maximize the irradiance1 of the panel and hence the energy harvested by it.2 In this case, the panel can track the sun as its trajectory is easily determined from the latitude and longitude of the panel, the date, and the time of day [1], [2].
But what is the optimal solar panel orientation on a cloudy day? Now, the sky is an extended light source with a possibly complex radiance function that includes multiple peaks in different directions. In this setting, since a solar panel aggregates light from an entire hemisphere, simply orienting it towards the brightest point in the sky is almost certain to not maximize the irradiance.
The problem gets even more interesting in urban settings. Consider a solar panel in the urban environment shown in 1 (a). In this case, the panel only sees the sun for a fraction of the day due to occlusions by nearby buildings. When the sun is occluded, the panel would only be illuminated by a patch of the sky and reflections from buildings and objects around it. As can be seen in 1 (a), even within a single day, the lighting may change dramatically due to shadows and reflections of the sun. Many cities have deployed large numbers of solar panels in dense urban environments to power sensors, lamps, and devices such as electric bikes. Currently, these panels are either fixed in orientation or simply track the sun.
Beyond dense urban environments, solar panels are increasingly used indoors to harvest energy from both the indoor and outdoor illumination to power environmental sensors and consumer devices. In this scenario, the illumination can be expected to vary significantly, causing the direction of maximum irradiance to shift dramatically throughout the day. Numerous smart city applications stand to benefit from indoor solar panels that can continuously track the direction of maximum irradiance. The market for indoor panels is growing rapidly and is projected to be $154 million by 2030 [3].
The goal of our work is to find the direction of maximum irradiance in any environment using minimal sensing resources. The first instinct may be to use a fisheye camera placed in the environment to measure the incoming radiance from every direction and compute the direction of maximum irradiance. Traditional cameras, however, not only add cost to the system but are also power-hungry—the image sensor alone consumes hundreds of milliwatts [4], which, in effect, reduces the energy harvested by the panel. While this cost and energy overhead can be ignored in the case of large arrays of panels, it would be prohibitive in the case of smaller stand-alone panels. For applications involving a single small panel, a minimal sensing approach that captures the fewest light measurements and requires negligible processing is highly desirable.
The goal of this work is not to propose a product, as there are existing products in the market that involve a single solar panel mounted on an actuator. Instead, our goal is to analyze a minimal sensing approach for orienting a solar panel in any lighting environment. Since our approach uses minimal sensing and processing, it can be directly applied to existing products with little additional complexity.
One approach would be to measure the gradient of the incident irradiance along each of the two dimensions of the panel using four photodetectors that are slightly tilted with respect to each other. The measurements can then be used to perform gradient ascent to iteratively tilt the panel towards the direction of maximum irradiance. Unfortunately, the irradiance function of a complex lighting environment, such the urban environment in 1 (a), is likely to have multiple local maxima, as shown in 1 (b). As a result, such a naive approach to orient a solar panel would produce sub-optimal panel orientations.
This brings us to our key result. Using Fourier analysis, we show that by using carefully chosen larger tilts between the four photodetectors, we can find the gradient of a function that is the original irradiance function convolved with a box filter of a specific width. Even when the original irradiance function has multiple modes, the convolved (blurred) function is almost certain to have a single mode that is close to the largest mode of the original function. This result is closely related to scale space theory [5], [6]. Therefore, by simply computing finite differences between the measurements produced by four carefully oriented detectors and using them to perform gradient ascent, the panel converges to the orientation that yields maximum irradiance.
To validate our approach in simulation, we have collected a large dataset of high-dynamic range (HDR) lighting environments in New York City. This dataset, called UrbanSky, consists of 1,067 lighting environments under various weather conditions and at different times of day. In each environment in UrbanSky, we capture the illumination using a \(360\unit{°}\) camera, we measure the global horizontal irradiance using a pyranometer, and we record the date, time of day, GPS location, and current weather conditions. Using UrbanSky, we simulate our approach for orienting a solar panel to identify the range of detector tilt angles that yield the best panel orientation. Next, we use UrbanSky to compare the energy harvested using our approach with alternative strategies that use minimal sensing to orient a solar panel. Across the 1,067 scenes in UrbanSky, orienting a solar panel using our approach increases the harvested energy. We have released the code to benchmark our approach against alternative strategies online. In addition, the UrbanSky dataset is available online to encourage future work both in solar energy and computer graphics.
We conduct simulations to evaluate the energy harvested using our approach under dynamic illumination. To this end, we used a physically based renderer and a 3D model of a city to simulate the illumination seen by a solar panel across 6,000 different locations in an urban environment. We compare the energy harvested using our approach with the energy harvested using two common strategies: (a) fixing the orientation of the panel, and (b) tracking the sun. Across the 6,000 solar panel locations, the panel oriented using our approach harvests more energy over an entire day.
We test our approach in real-world settings using a prototype system. Our prototype includes a single solar panel with four compact detectors attached to its periphery, and the panel is mounted on a two-axis actuator. We compare the energy harvested by our prototype with the energy harvested by a solar panel in a fixed orientation and another that tracks the sun. In diverse real-world settings—direct sunlight, cloudy sky, urban settings with occlusions, shadows, and reflections, and an indoor room with complex lighting—our approach increases the harvested energy.
Solar panels are either fixed at a specific orientation or mounted on actuators that vary their orientation to increase the harvested energy. With respect to fixed panel orientations [7]–[11], a widely used rule of thumb is to orient the panel towards the equator with an angle from the zenith equal to the panel’s latitude [7]. Panels that are mounted on actuators to move throughout the day almost exclusively track the sun [12]–[15]. Kelly and Gibson [16] observed that tracking the sun is sub-optimal on a cloudy day and suggested pointing the panel straight up at the sky when the sun is occluded by clouds. All of these prior works only consider outdoor environments with an unobstructed view of the sky. Our work considers a more general problem: we wish to find the panel orientation that yields maximum irradiance in an arbitrary environment. This problem has become highly relevant as panels are now being used in environments that include occlusions, shadows, and multiple dominant sources. We demonstrate that our approach increases the harvested energy in complex lighting environments compared to a panel that is fixed in orientation [7] or one that tracks the sun.
It is widely accepted that solar energy harvesting in urban environments, in particular, is an increasingly important application of photovoltaics. Orienting a solar panel in urban environments is a complex problem since one must consider not only the illumination from the sky but also reflections and shadows from nearby infrastructure. Prior work seeks to find the best fixed orientation in urban settings by using knowledge of the scene’s 3D structure and material properties to compute the irradiance falling on rooftops and building façades [17]–[22]. All of these works account for the complex illumination caused by city infrastructure. The goal of our work is different: given a solar panel in any lighting environment, which may include shadows and reflections in urban settings, we use an actuator to iteratively tilt the panel toward the direction of maximum irradiance using minimal sensor measurements. To encourage future work in the analysis of urban lighting environments, we have released UrbanSky, a dataset of 1,067 outdoor HDR lighting environments captured in New York City.
A variety of methods seek to find the optimal orientation of a solar panel by iteratively tilting the panel based on measurements produced by light sensors. Most closely related to our work are methods that use detectors mounted on the panel at an angle to produce differential measurements [23]–[27]. When the panel points toward the sun on a clear day, the detectors are illuminated equally, and the differential measurement is zero. Thus, the tracking algorithm seeks to minimize the differential measurement in order to track the sun. While this approach can orient a panel toward the sun on a clear day, its convergence in arbitrary lighting is not guaranteed. This is because, in all the previous work, the tilt angle between the detectors and the solar panel is chosen in an ad-hoc manner. We provide a detailed analysis of the differential measurements produced by tilted detectors. We first show that the measurement is equal to the derivative of a function that results from blurring the irradiance function with a box filter. When the detector tilt angle is carefully chosen, the blurred irradiance function is unimodal, regardless of the complexity of the illumination. This means that a panel oriented using our approach will converge at, or close to, the direction of maximum irradiance, even when the irradiance function has multiple modes.
Many other visual sensors have also been proposed to iteratively tilt a solar panel toward the orientation that yields maximum irradiance. Shading-based sensors [28]–[35] use a vertical wall to cast a shadow onto multiple photodetectors. A tracking system then orients the panel such that the shadow disappears, which occurs when the sun is directly above the panel on a clear day. Position-sensing diodes have also been used to find the direction of the sun [36], [37]. While a panel using either of these methods can be oriented toward the sun on a clear day, it is not guaranteed to find the orientation that yields maximum irradiance in arbitrary lighting. Pineda and Arredondo [38] approach the problem of finding the best panel orientation in a variety of sky conditions by using a large number of detectors with smaller fields-of-view to sample the irradiance at different orientations. The panel is then oriented in the direction of the detector that produces the largest measurement. Rather than sample the irradiance function, we iteratively tilt a panel toward the direction of maximum irradiance using differential measurements from just four detectors.
In this section, we derive an expression for the irradiance of a solar panel as a function of its orientation.
The illumination seen by a solar panel can be completely described as a 4D light field [39]. Since the distances of light sources in any environment are typically much larger than the size of the panel, we can assume that the light incident from a specific direction is uniform over the panel’s active area. Thus, as shown 2, the environmental illumination that the panel is exposed to can be represented as a 2D radiance function \(L(\vec{s})\), where \(\vec{s}\) denotes the direction as seen from the center of the panel.
In the context of solar energy harvesting, we are specifically interested in the irradiance of the panel. Let \(\vec{n}\) be the vector normal to the panel. Then, the directional irradiance \(dE\) from the direction \(\vec{s}\) and infinitesimal solid angle \(d\omega\) is \[dE(\vec{s};\,\vec{n})= L(\vec{s})\, \max (\vec{n}\cdot \vec{s}, 0) \, d\omega, \label{eq:Esn}\tag{1}\] where the \(\max\) operator accounts for the fact that the panel only receives light from the hemisphere of illumination that is visible to the panel (see 2).
We can now define the total irradiance \(E\) of the panel as the integral of the directional irradiance (1 ) over the visible hemisphere, \[E(\vec{n})= \int_{\vec{s}\in \mathbb{S}^2} L(\vec{s})\, \max (\vec{n}\cdot \vec{s}, 0) \, d\omega, \label{eq:ET}\tag{2}\] where \(\mathbb{S}^2\) is the set of points on the surface of the unit sphere. \(E(\vec{n})\) corresponds to the total power per unit area incident on the panel. The goal of our work is to find, for any given environment, the panel orientation \(\vec{n}\) that maximizes the irradiance \(E(\vec{n})\).
From 2 , we see that the irradiance function \(E(\vec{n})\) can be written as the convolution of the radiance function \(L(\vec{n})\) with a kernel defined as \[k(\vec{n})= \max (\vec{n}\cdot \hat{z}, 0). \label{eq:k}\tag{3}\] Note that the kernel \(k(\vec{n})\) is centered about the zenith vector \(\hat{z}\). A detailed derivation that shows that the irradiance function is a convolution on the sphere [40] is given in 8. Notice that the kernel is simply the cosine of the zenith angle, but clipped to be non-negative. Given that the kernel is a smooth and broad function, it serves to simply low-pass filter the radiance function corresponding to the environment. An equivalent result in computer graphics shows that Lambertian reflectance low-pass filters the radiance function [41], [42].
Since the irradiance function is the result of convolving the radiance function with a low-pass filter, it is guaranteed to be smooth. Consider the radiance function of a natural environment shown in 3 (a). Upon convolving it with the kernel in 3 (b), we get the irradiance function in 3 (c) which is very smooth. Despite its smoothness, however, the irradiance function may still have multiple modes, and hence multiple local maxima (red and green dots).
Imagine we had a method to measure the gradient of the irradiance function with respect to the solar panel orientation. Then, given any initial panel orientation, a naive approach would be to iteratively tilt the panel in the direction of the gradient and hope to converge at the direction of maximum irradiance. Unfortunately, this would not always work as we know that although the irradiance function is guaranteed to be smooth, it could have multiple local maxima (3 (c)). In short, naive gradient ascent would likely get stuck at a local maximum, causing the panel to harvest less energy. In this section, we introduce our approach which uses differential light sensing to iteratively tilt a panel to arrive at the global maximum of the irradiance function, irrespective of the initial orientation of the panel or the complexity of the environmental illumination.
Consider a one-dimensional irradiance function \(E(\theta)\), where the panel orientation is given by \(\theta\). Our sensing method, illustrated in 4, produces a finite difference of the irradiance function \(E(\theta)\) using just two photodetectors. The detectors are tilted by \(\Delta\theta\) in opposite directions with respect to the panel. Thus, the detectors measure the irradiance function at two different orientations: \(E(\theta+\Delta\theta)\) and \(E(\theta-\Delta\theta)\). The difference of these two measurements is proportional to a finite difference of the irradiance function. We refer to this difference as the “photodifferential,” which is defined as \[E_D(\theta;\Delta\theta)= \frac{E(\theta+\Delta\theta) - E(\theta-\Delta\theta)}{2\Delta\theta}.\label{eq:photodifferential}\tag{4}\]
When the tilt angle \(\Delta\theta\) between the detectors and the panel is very small, the photodifferential is equal to the derivative (gradient) of the irradiance function with respect to the panel orientation. As stated earlier, this derivative is not of much use in our context—iteratively tilting the panel in the direction of the derivative will cause the panel to get stuck at a local maximum. In the next section, we will show that the photodifferential produced by detectors with a large tilt angle is actually the derivative of a blurred version of the irradiance function.
We now analyze the effect of the detector tilt angle \(\Delta\theta\) on the photodifferential using Fourier analysis. Note that the photodifferential (4 ) can be written as the result of convolving the irradiance function \(E(\theta)\) with the function \[h(\theta) = \frac{1}{2\Delta\theta} \left( \delta(\theta + \Delta\theta) - \delta(\theta - \Delta\theta) \right). \label{eq:photodiff-impulse}\tag{5}\] The Fourier transform of \(h(\theta)\) is \[H(j\omega)= \frac{1}{2\Delta\theta} \left( e^{j\omega\Delta\theta} - e^{-j\omega\Delta\theta} \right). \label{eq:photodiff-freq-1}\tag{6}\] Using Euler’s formula, \(H(j\omega)\) can be written as \[H(j\omega)= \frac{j}{\Delta\theta} \sin(\omega\Delta\theta). \label{eq:photodiff-freq-2}\tag{7}\] By multiplying the numerator and denominator by \(\omega\), 7 can be rewritten as \[H(j\omega)= \begin{cases} j\omega \;\frac{\sin(\omega\Delta\theta)}{\omega\Delta\theta} & \omega \ne 0\\ 0 & \omega = 0 \end{cases}.\label{eq:photodiff-freq-3}\tag{8}\] Therefore, we get \[H(j\omega)= \underbrace{\textstyle j\omega}_{\mathclap{\text{ }}} \; \underbrace{\textstyle \mathop{\mathrm{sinc}}(\omega\Delta\theta)}_{\mathclap{\text{ }}}.\label{eq:photodiff-freq-final}\tag{9}\] 9 shows that convolving the irradiance function with \(h(\theta)\) is equivalent to first blurring the irradiance function with a box filter \(b(\theta;\Delta\theta)\), whose width is proportional to the detector tilt angle \(\Delta\theta\), and then taking the derivative.3 That is, \[E_D(\theta;\Delta\theta)= \frac{d}{d\theta} \left( L(\theta)* k(\theta)* b(\theta;\Delta\theta)\right).\label{eq:photodiff-full}\tag{10}\] Dumont [43] presents a similar result for discrete signals showing that a finite difference with a large step size implicitly filters the signal with a moving average. This brings us to our first observation:
Observation 1. The photodifferential \(E_D(\theta;\Delta\theta)\) is the derivative of a blurred irradiance function, where the degree of blur is proportional to the detector tilt angle \(\Delta\theta\).
We now analyze the effect of the box filter \(b(\theta;\Delta\theta)\) in 10 . Consider the one-dimensional radiance function \(L(\theta)\) in 5 (a). Convolving it with the kernel \(k(\theta)\) produces the irradiance function \(E(\theta)\) in 5 (b). This function has three modes: a global maximum (red dot) and two local maxima (green dots). In 10 , we denote the function to which the derivative is being applied as the blurred irradiance function: \[E_B(\theta;\Delta\theta)= L(\theta)* k(\theta)* b(\theta;\Delta\theta).\label{eq:EB}\tag{11}\] In 5 (c), we plot \(E_B\) for three different tilt angles: \(5\unit{°}\), \(20\unit{°}\), and \(45\unit{°}\). We know that increasing the tilt angle has the effect of blurring the irradiance function with a wider box filter. Consequently, as the tilt angle increases, the number of local maxima in \(E_B\) reduces. When the level of blur is sufficiently large (\(\Delta\theta=45\unit{°}\) for the example radiance function in 5 (a)), the local maxima disappear, rendering the blurred irradiance function unimodal. This brings us to our second observation:
Observation 2. When the detector tilt angle \(\Delta\theta\) is sufficiently large, the blurring induced by the photodifferential creates a blurred irradiance function that is unimodal, regardless of the complexity of the illumination.
Since the photodifferential measures the derivative of a blurred irradiance function \(E_B\) that has a single mode, our approach is to iteratively tilt the solar panel in the direction of the photodifferential to find the panel orientation that yields the global maximum of \(E_B\). This approach, in effect, is equivalent to applying gradient ascent to \(E_B\). However, we must ensure that the blurring from the detector tilt never introduces a new mode in \(E_B\) that was not present in the original irradiance function.
The detector tilt angle must satisfy two conditions: (a) The tilt angle should be large enough such that the blurred irradiance function \(E_B\) is unimodal for virtually any environmental illumination. (b) The tilt angle should not introduce new modes in the blurred irradiance function. This brings us to a well-known result in scale space theory: Blurring any function with a Gaussian cannot create new modes that were not present in the original function [44]–[46].
Recall that the irradiance function \(E(\theta)\) is the result of convolving the radiance function \(L(\theta)\) with the kernel \(k(\theta)\). 6 (a) shows the Fourier transform \(K(j\omega)\) of the kernel, which is close to zero for frequencies beyond the first zero-crossings, denoted by the two red lines. In other words, the kernel suppresses frequencies in the irradiance function that are outside the frequency band between the red lines. As a result, we are only concerned with frequencies of the irradiance function that lie within this band. 6 (b) shows the Fourier transform \(B(j\omega)\) of the box filter \(b(\theta;\Delta\theta)\) for a wide range of detector tilt angles. Within the frequency band of the red lines, \(B(j\omega)\) can be well-approximated as a Gaussian, even for the largest tilt angle of \(\Delta\theta=90\unit{°}\). This brings us to our third observation:
Observation 3. Due to the bandwidth of the kernel \(k(\theta)\), large detector tilt angles do not introduce new modes in the blurred irradiance function.
We have shown that large tilt angles are beneficial since they eliminate local maxima of the irradiance function and do not introduce new modes. In this section, we explore via simulations the range of detector tilt angles for which the irradiance of the panel (and hence the harvested energy) is at, or close to, the maximum. In addition, we conduct simulations to compare the energy harvested using our approach with alternative strategies for orienting a solar panel.
To simulate our approach in real-world lighting environments, we have collected a large dataset of 1,067 HDR lighting environments across New York City. A few of the lighting environments in the dataset are shown in 7 (a). 7 (b) shows the location of each captured environment overlaid on a map of New York City. At each location, we capture the environmental illumination using the \(360\unit{°}\) camera (Ricoh Theta Z1) shown in 7 (c). Since the dynamic range of outdoor scenes is very large, we capture \(7\times\) bracketed images to create a single, HDR panorama. Unfortunately, on a sunny day, the sun’s disk will be saturated in all of the captured images since the camera’s exposure cannot be lowered beyond a certain point [47]. To faithfully measure the radiance from the sun, we capture a second set of \(7\times\) bracketed images with an OD4 neutral density filter (Kodak Wratten 2) between the camera and the sun, as shown in 7 (d). We then use PTGui Pro [48] to merge and stitch the two sets of bracketed images into two \(7400 \times 3700\,\unit{\text{px}^2}\) HDR panoramas. Finally, we compute the radiance from the sun’s disk using the panorama with the neutral density filter and overlay those values onto the panorama without the neutral density filter. This process ensures that none of the measurements of the radiance function are saturated.
Alongside each captured environmental illumination, we also measure the global horizontal irradiance using a silicon pyranometer (EKO Instruments ML-01) placed directly on top of the \(360\unit{°}\) camera (see 7 (e)). For each environment in the dataset, we include metadata that specifies the global horizontal irradiance (in \(\unit{W\per m\squared}\)), the capture date, time of day, GPS location, and current weather conditions. In 9, we provide additional details about the pyranometer, the image capture process, and post-processing steps.
UrbanSky focuses specifically on capturing the complex illumination in dense urban settings caused by shadows, reflections, and changing weather conditions. To this end, we have chosen 49 specific locations on the campus of Columbia University at which we repeatedly capture the illumination at least 10 different times under varying weather conditions and at different times of day. We then used feature matching to automatically register the captured illumination at each location. In total, we have captured 526 lighting environments at specific locations at Columbia University, which comprise roughly half of UrbanSky. The remaining half of the dataset is comprised of 541 environments captured across New York City (see 7 (b)). The UrbanSky website includes an interactive viewer to explore the data captured at each environment. While there are existing datasets of \(360\unit{°}\) images of real environments [49], [50], UrbanSky focuses specifically on the illumination in urban environments. Furthermore, the pyranometer’s measurement of global horizontal irradiance captures the total power per unit area that would be received by a silicon photovoltaic placed in the scene. We have released the entire dataset online to encourage future work both in solar energy and computer graphics.
We divided the radiance functions in UrbanSky into two sets: one with 281 multimodal irradiance functions and the second with 786 unimodal irradiance functions. In our simulations, we assume the energy harvested by a panel to be proportional to its irradiance. For each of several tilt angles between \(0\unit{°}\) and \(90\unit{°}\), and for each radiance function within one of the two sets, we used gradient ascent to iteratively orient a panel starting from many initial orientations and then found the harvested energy as an average over the converged orientations. This energy is expressed as a percentage of the energy harvested using the optimal orientation (the global maximum). Once this is done for all the radiance functions in the set, and for each detector tilt angle, an average percentage harvested energy is computed.
For the multimodal set, the average percentage energy harvested by the panel as a function of the detector tilt angle is shown in 8 (a). A tilt angle of \(\Delta\theta=45\unit{°}\) (denoted by the gray line) harvests \(5.8\%\) more energy on average than the smallest tilt angle. In general, any tilt angle of \(\Delta\theta=45\unit{°}\) up to \(90\unit{°}\) performs best, achieving a similar average harvested energy. 8 (b) shows the percentage energy harvested as a function of the tilt angle for five radiance functions chosen from the multimodal set. As can be seen from the plots, the use of a large tilt angle results in a gain in harvested energy of up to \(41\%\) in some scenes when compared with the smallest tilt. For the unimodal set, the average percentage harvested energy as a function of the detector tilt angle is shown in 8 (c). Note that the harvested energy decreases ever so slightly with increasing detector tilt angles. This can be attributed to the fact that the global maximum of the irradiance function shifts as the level of blur increases, causing the panel to converge close to but not exactly at the global maximum.
These simulations indicate that the use of a large tilt angle increases the harvested energy in a diverse set of complex lighting environments. In all subsequent experiments reported in the paper, we use a tilt angle of \(\Delta\theta=45\unit{°}\) since that angle is large enough to significantly increase the harvested energy in multimodal scenes, but not so large that it shifts the global maximum. In general, however, any tilt angle of \(45\unit{°}\) or larger yields similar results.
Now that we have chosen a tilt angle, we use UrbanSky to compare the energy harvested using our approach with other minimal sensing strategies for orienting a solar panel. For this comparison, we benchmark our approach against prior work that specifically focus on finding the best panel orientation in arbitrary lighting environments. We compare the energy harvested using our approach with three other minimal sensing strategies: (a) three detectors arranged on a tetrahedron [27], (b) two pairs of detectors separated by a shading wall [30], and (c) forty detectors arranged on a geodesic dome [38]. The methods for orienting a solar panel using detectors on a tetrahedron [27] or separated by a shading wall [30] are iterative methods that tilt the solar panel based on the difference of measurements until the orientation converges. The approach using forty detectors on a geodesic dome [38] orients the panel in a single step in the direction of the detector that produces the largest measurement. In addition, we compare the energy harvested using these approaches with the energy harvested by a solar panel pointing straight up without any visual sensing. We do not compare against methods for tracking the sun within a very narrow field-of-view (e.g. using a position sensing diode [36]), as these approaches are not intended to orient a solar panel starting from any initial orientation (instead, they are typically used to refine the orientation of a solar panel whose initial orientation is given by the apparent position of the sun in the sky).
The performance of each method for orienting a solar panel is summarized in [tab:urbansky-benchmark]. For each approach, we report the average energy harvested, as a percentage of the energy that could be harvested at the global maximum, over all 1,067 scenes in UrbanSky. Our approach using just four tilted detectors harvests the most energy, on average, and provides up to a \(58\%\) increase in the average percent harvested energy compared to alternative methods. The code to benchmark all of these methods using UrbanSky is available online.
So far, we have simulated our approach using real radiance functions captured in New York City at single instances in time. We now conduct simulations with dynamic illumination to demonstrate the gain in harvested energy over an entire day using our approach compared to alternative strategies for orienting a solar panel.
To simulate dynamic illumination, we rendered physically accurate radiance functions that a solar panel would see throughout an entire day in an urban environment. Our simulation uses a physically based 3D model of a city, which includes complex geometry and physically accurate reflectance models. We selected 6,137 different solar panel locations by randomly sampling positions near the ground, on building walls, and on rooftops, which represent typical panel locations in a city. Our goal is to simulate the illumination that would be seen by each of the 6,137 solar panels throughout the day. To this end, we used Mitsuba [51], a physically based renderer, to generate the radiance function at each location every 10 minutes. To model the illumination from the sky at different times of day, we used the Ineichen and Perez model [52] to compute the radiance from the sun and the Preetham sky model [53] to compute the radiance from the sky. Each row in 9 shows rendered images at example locations at different times of day. Notice that as the sun moves through the sky, shadows move across the buildings, and some structures produce specular highlights.
At each of the 6,137 locations, we simulate our approach for orienting a solar panel. Every 10 minutes at each location, we use the photodifferential to iteratively tilt the panel until convergence (the orientation converges when the magnitude of the photodifferential is smaller than a threshold). We then assume the panel irradiance to be constant for the entire 10-minute interval. Given the panel irradiance, we estimate the energy that would be harvested by a small (roughly \(25\times25\,\unit{\cm\squared}\)) solar panel with a typical efficiency of \(20\%\). Furthermore, we also estimate the energy that would be consumed by the actuator.4 At each location, we compute the net energy harvested over the entire day, after subtracting the energy consumed by the actuator.
We compare the net energy harvested by a panel oriented using our approach with two panels oriented using common methods: one that tracks the sun (Sun Tracker) and another in a fixed orientation (Fixed). The fixed panel is oriented toward the equator, with the the zenith angle equal to the panel’s latitude [7]. In the images in 9, the colored dots indicate the orientation of each of the three panels, and the irradiances of the panels are listed below. Notice that the irradiance of the panel oriented using our approach (Proposed) is consistently higher than the irradiance of the panels oriented using alternative strategies.
The energy harvested by the three panels over the 6,137 locations is summarized in [tab:city-harvested-energy]. Over all the solar panel locations, our approach harvests \(17.3\%\) more energy on average than the sun tracker and \(39.7\%\) more energy on average than the fixed panel. The gain in harvested energy using our approach is due, in part, to the fact that the sun is often occluded by nearby buildings. In these cases, our approach orients the panel toward the sky and other well-illuminated buildings to increase the harvested energy (as an example, see the third image in the first row of 9). Furthermore, our approach harvests, on average, \(98.9\%\) of the energy that would by harvested by tracking the optimal orientation. Note that this is the net harvested energy after subtracting the energy consumed by the actuator. Before accounting for the actuator, our approach harvests \(99.7\%\) of the energy harvested by tracking the optimal orientation. These results indicates that our approach consistently orients the panel toward the best orientation, and the small disparity in harvested energy is mostly due to the energy consumed by the actuator (which is \(0.8\%\) of the total harvested energy, on average). Please refer to 10 for the full distributions of the gain in harvested energy using our approach over the fixed panel and sun tracker, along with the distribution of the energy harvested using our approach as a fraction of the optimal orientation.
We developed the prototype shown in 10 (a), which includes a solar panel (Voltaic Systems P107C) mounted on a two-axis actuator (\(2\times\) Miuezuth RDS3218). Four photodetectors (ams OSRAM BPW 34) are attached to the four sides of the panel with a tilt angle of \(\Delta\theta=45\unit{°}\), as seen in 10 (b). Since the illumination of outdoor environments generally varies slowly over the day, our prototype measures the photodifferential once every few minutes and then actuates the solar panel with a fixed step size of \(5\unit{°}\) along both axes. To avoid oscillations in the panel orientation, the panel is only actuated when the magnitude of the photodifferential is above a threshold. Our prototype also includes a measurement system that continuously monitors the energy harvested by the solar panel at its maximum power point and the energy consumed by the actuator. The harvested energy reported in all of our experiments is the net harvested energy after subtracting the energy consumed by the actuator.
The goal of these experiments is to demonstrate a variety of real-world illumination phenomena in which our approach for orienting a solar panel increases the harvested energy compared to standard approaches. We refer the reader to 5 to evaluate the performance of our approach in a diverse set of real and simulated lighting environments.
In 10 (c), we show results for five different scenarios. In each case, we compare the harvested energy using our approach (Proposed) with a solar panel that tracks the sun (Sun Tracker) and another in a fixed orientation (Fixed). The trajectory of the sun tracker is determined by the position of the sun in the sky, which is computed using the location (latitude and longitude) of the panel and the date and time of day. The fixed panel is oriented toward the equator, with the angle from the zenith equal to the panel’s latitude [7]. The plot in the first row of 10 (c) shows the harvested power by each panel as a function of time in direct sunlight. The fisheye image shown on the left corresponds to the time denoted by the dashed line in the harvested power plot. As expected, the panel oriented using our method tracks the sun, and thus it harvests the same amount of energy as the sun tracker and \(9.2\%\) more energy than the fixed panel over a one-hour period (see the table in 10 (d)). A video of the environmental illumination and moving panels is included on the project website.
On a cloudy day, orienting a solar panel toward the sun is almost certainly not the optimal orientation. In the second row of 10 (c), the panels are placed outside on a cloudy day. Since our panel points up toward the clouds, it harvested \(11.2\%\) more energy than the sun tracker and \(9.5\%\) more energy than the fixed panel over a one-hour period.
When a solar panel is deployed in a dense urban environment, the panel’s view of the sun is often obstructed by nearby buildings. This case is shown in the third row of 10 (c), where the panels are in the shadow cast by nearby buildings. The panel oriented using our approach, however, orients itself toward the unobstructed portion of the sky. In this example, over a one-hour period, our panel harvested \(10.6\%\) more energy than the sun tracker and \(12.9\%\) more energy than the fixed panel (see 10 (d)).
In urban settings, reflections of sunlight by nearby buildings can have a significant impact on the energy harvested by a panel. In the fourth row of 10 (c), the panels are placed in a shaded area that is briefly illuminated by strong reflections from a nearby building. The peaks in the plot of the harvested power correspond to times when the reflections were strong. At such times, our panel orients itself in the direction of the reflections. At the same time, the sun tracker points toward the wall of another building, as its orientation is determined by the position of the sun in the sky, regardless of nearby buildings that obstruct the panel’s view of the sun. As reported in 10 (d), in this setting, our panel harvested \(248.1\%\) more energy than the sun tracker and \(69.0\%\) more energy than the fixed panel over a one-hour period. During the strongest reflection, the instantaneous harvested power in our case is more than \(10\times\) that of the sun tracker (bottom two rows of 10 (d)). Please refer to the project website for a video of the environmental illumination and solar panels.
In our final example (the fifth row of 10 (c)), the panels are placed in an indoor environment. Throughout the day, people working in the space turn on and off different floor lamps. Unlike the outdoors, in indoor spaces, the lighting can vary dramatically over time. Hence, in this case, we programmed our panel to iteratively adjust its tilt until convergence every minute. Compared to a fixed panel oriented toward the center of the ceiling, our method harvested \(163.7\%\) more energy over a one-hour period. Please see the project website for a video of the indoor scene.
We have presented a minimal sensing method for iteratively orienting a solar panel to maximize its irradiance, thereby maximizing the energy harvested by it. There are two directions we plan to pursue as future work. First, we plan to deploy our method at a large scale by working with companies that install medium- and small-sized panels in cities and indoor environments. Second, we plan to explore the case in which it is preferable not to use any moving parts (actuators). In this case, we wish to find the optimal fixed orientation of a solar panel in any lighting environment while accounting for the complex, time-varying illumination seen from a particular location. This problem is particularly interesting for locations at which the scene’s 3D structure and material properties are unknown. The optimization would need to account for nearby infrastructure, the variation of the sun’s trajectory, and the historical weather conditions recorded for the location.
This work was supported by the Office of Naval Research (ONR) awards N00014-23-1-2096 and N00014-21-1-2378. Jeremy Klotz was supported by a National Defense Science and Engineering Graduate (NDSEG) Fellowship. The authors are grateful to Behzad Kamgar-Parsi at ONR for his support and encouragement. The authors also thank Mikhail Fridberg for his input on the prototype, Changxi Zheng for his feedback on the simulations, Bill Miller for his help with fabrication, Makoto Odamaki for technical discussions about the Ricoh Theta camera, and Jean-François Lalonde for sharing the Laval Indoor and Outdoor HDR datasets. Finally, the authors thank Joanne Chan for her help with collecting data for UrbanSky and Lulu Wang for her help in creating the UrbanSky website.
The irradiance function \(E(\vec{n})\) is defined in 2 as \[E(\vec{n})= \int_{\vec{s}\in \mathbb{S}^2} L(\vec{s})\, \max (\vec{n}\cdot \vec{s}, 0) \, d\omega. \label{eq:ET-supp}\tag{12}\] Here we show that \(E(\vec{n})\) can be written as the convolution of the radiance function \(L(\vec{n})\) with a kernel \(k(\vec{n})\), which is defined in 3 as \[k(\vec{n})= \max (\vec{n}\cdot \hat{z}, 0), \label{eq:k-supp}\tag{13}\] where \(\hat{z}\) is the zenith vector.
When convolving a function defined on the surface of the sphere with a kernel, the kernel is first rotated and then multiplied with the original function. Let \(R_{\vec{s}}\) be a rotation operator that rotates the zenith vector \(\hat{z}\) to \(\vec{s}\), i.e. \(\vec{s}= R_{\vec{s}}\hat{z}\). 12 can now be written as \[E(\vec{n})= \int_{\vec{s}\in \mathbb{S}^2} L(\vec{s})\, \max (\vec{n}\cdot R_{\vec{s}}\hat{z}, 0) \, d\omega. \label{eq:ET-2-supp}\tag{14}\] Using the fact that \(\vec{n}\cdot R_{\vec{s}}\hat{z}= R_{\vec{s}}^{-1} \vec{n}\cdot \hat{z}\), we can rewrite 14 as \[E(\vec{n})= \int_{\vec{s}\in \mathbb{S}^2} L(\vec{s})\, \max (R_{\vec{s}}^{-1} \vec{n}\cdot \hat{z}, 0) \, d\omega. \label{eq:ET-3-supp}\tag{15}\] Substituting 13 into 15 , \(E(\vec{n})\) becomes \[E(\vec{n})= \int_{\vec{s}\in \mathbb{S}^2} L(\vec{s})\, k(R_{\vec{s}}^{-1} \vec{n}) \, d\omega. \label{eq:ET-4-supp}\tag{16}\] 16 shows that the irradiance function \(E(\vec{n})\) is the convolution of the radiance function \(L(\vec{n})\) with the kernel \(k(\vec{n})\).5 Both Ramamoorthi and Hanrahan [42] and Basri and Jacobs [41] present a similar derivation showing that Lambertian reflectance has the effect of convolving the radiance function with the kernel defined in 13 . We refer the interested reader to Driscoll and Healy [40] for a detailed introduction to the convolution of two functions defined on the surface of the sphere.
For each scene in UrbanSky, we use a silicon pyranometer (EKO Instruments ML-01) to measure the global horizontal irradiance. We have chosen the pyranometer such that its spectral response and directional response closely match that of a silicon photovoltaic [54]. Thus, the irradiance measurement corresponds to the power per unit area that would be received by a silicon photovoltaic pointing up in the scene. During the capture process, the neutral density filter in 7 (d) is only needed to capture the radiance from the sun’s disk. On cloudy days, this filter is not needed since the camera can capture a single set of \(7\times\) bracketed images without any saturation. Thus, we only use the neutral density filter on sunny days. Finally, as a post-processing step, we used EgoBlur [55] to automatically detect and blur faces and license plates in the captured images. We then manually reviewed each image to blur faces and license plates that were not automatically detected by EgoBlur.
Here we include histograms of the results from simulating the energy harvested by solar panels at 6,137 different locations in an urban environment (as described in 5.4). 11 (a,b) show the histograms of the percentage gain in net energy harvested over the entire day using our approach compared to the sun tracker and fixed panel. The statistics of these distributions are summarized in the first two rows of [tab:city-harvested-energy]. 11 (c) shows the histogram of the percentage of energy harvested over the entire day using our proposed method compared to the energy that could be harvested using the optimal orientation, which corresponds to the last row of [tab:city-harvested-energy]. As explained in in 5.4, the harvested energy for each panel is the net harvested energy after subtracted the energy consumed by the actuator.
Unless otherwise specified, by irradiance we mean the total irradiance received by the panel from the entire hemisphere visible to it.↩︎
Due to non-idealities in the energy harvesting system, the harvested energy from a solar panel may be a non-linear function of its irradiance. However, since this function is monotonic, the orientation that maximizes the irradiance also maximizes the harvested energy.↩︎
Observe that \(\lim_{\Delta\theta\to0} H(j\omega)= j\omega\), which means \(H(j\omega)\) becomes the continuous-time differentiator in the limit as the finite difference step size approaches 0. This aligns with the intuition that a finite difference computed using a very narrow box filter (infinitesimally small detector tilt) approximates the gradient of the irradiance function.↩︎
The estimated energy consumed by the actuator is based on real measurements made using a solar panel of the same size.↩︎
Strictly speaking, the convolution on a sphere is defined by integrating over the three degrees of freedom of the rotation operator [40]. Even though 16 only integrates over two degrees of freedom, adding the third degree of freedom does not change the result in our context. Since the kernel \(k(\vec{n})\) is symmetric about the \(z\)-axis, \(k(\vec{n})\) is invariant to rotations about the \(z\)-axis. Thus, integrating over the rotation operator’s third Euler angle, \(\psi\), only scales the expression by a constant, leaving the convolutional form unchanged.↩︎