# Computer-Controlled 3D Freeform Surface Weaving

Xiangjia Chen  Lip M. Lai  Zishun Liu  Chengkai Dai  Isaac C.W. Leung  Charlie
C.L. Wang  Yeung Yam  Department of Mechanical and Automation Engineering, The
Chinese University of Hong Kong, Shatin, Hong Kong, China  Centre for
Perceptual and Interactive Intelligence (CPII) Limited, Hong Kong, China
Digital Manufacturing Lab, School of Engineering, The University of
Manchester, United Kingdom

###### Abstract

In this paper, we present a new computer-controlled weaving technology that
enables the fabrication of woven structures in the shape of given 3D surfaces
by using threads in non-traditional materials with high bending-stiffness,
allowing for multiple applications with the resultant woven fabrics. A new
weaving machine and a new manufacturing process are developed to realize the
function of 3D surface weaving by the principle of short-row shaping. A
computational solution is investigated to convert input 3D freeform surfaces
into the corresponding weaving operations (indicated as W-code) to guide the
operation of this system. A variety of examples using cotton threads,
conductive threads and optical fibres are fabricated by our prototype system
to demonstrate its functionality.

###### keywords:

3D surface weaving, non-traditional material, weaving hardware, computational
fabrication.

##  1 Introduction

The history of textile fabrication is probably as old as human history[1].
With the development of civilization, the function of textile products has
been extended from keeping warmth to smart wearable devices in applications
such as aerospace engineering [2] and biomedical engineering [3, 4]. There are
growing demands for 3D shaping new composite materials [5] and e-textile [6,
7], where the geometry of fabrics could possibly be formed by four different
methods including knitting [8, 9, 10, 11], weaving [12, 13, 14], felting[15]
and robotic deposition / winding [16, 17, 18].

In the fabrics formed by felting, threads / fibres are randomly distributed
(see the right of Fig.1) – i.e., not controllable. The approaches of robotic
direct deposition can only fabricate structures with weakly bonded threads /
fibres – i.e., the threads are ‘stitched together’ by chemical but not
mechanical bonding in a manner similar to filament based 3D printing [16, 17],
and the winding technique is mainly limited to the surfaces obtained by
revolution [18, 19]. To overcome these problems, a new technology needs to be
developed for fabricating woven structures with controllable locations of
threads on 3D surfaces. Note that, for the sake of explanation, we simply call
each unit structure of woven fabrics as a stitch in the rest of this paper.
Fig.1 shows the stitch structures in weaving (left), in knitting (middle), and
the unstructured threads in felting (right). Generally, all structured
stitches need to be mapped into the elements of a two-dimensional grid layout
to enable the manufacturing process. Such a map is named as weaving map (see
Fig.2(b) for an example). Weaving process results in interlaced warp and weft
threads that are nearly perpendicular to each other [1] – fabrics can
therefore be formed by threads with high bending-stiffness. This enables many
applications using threads with advanced physical functions such as carbon
fibres, optical fibres, and conductive wires (ref. [5, 6, 7]).

Figure 1: An illustrations of woven structures using non-traditional materials
with high bending-stiffness, which can neither be realized by the knitting
process (i.e., highly bent loops are formed) nor the felting process (i.e.,
none woven structure is formed). The width $s_{w}$ of a woven structure is
determined by the mechanical components as reed and the height $s_{h}$ can be
controlled by the motors & gears of warp beams.

Three-dimensional freeform shapes can be formed in knitting by the operations
to increase or decrease the number of stitches, which has been commonly
adopted in hand knitting for simple shapes such as a rounded cap since the
16th century [20]. Different from weaving, the inter-looped stitches in
knitting are formed by warping a continuous filling thread throughout the
whole fabric-forming process. More complicated geometry was considered in
computer graphics by employing increase-decrease shaping for hand knitting
[11] or short-row shaping for machine knitting [21]. Increase / decrease
shaping changes the local width of the fabric by adding an extra loop in a row
of stitches (or trapping a loop to more than one loop in the previous row).
Short-row shaping changes the local height of the fabric by knitting partial
rows in regions needing more stitches. Modern computational techniques have
been developed to generate knitting code for realizing desired shapes on
knitting machines, including the compiler [8], the visual programming tool
[22], and the algorithm for controlling the distribution of elasticity [21].
However, highly curved loops formed in knitting make it challenging to use
materials with high bending-stiffness (see the middle of Fig.1). An
alternative manufacturing method is needed.

We aim at developing a new technology for computer-controlled fabrication of
3D freeform shapes by woven structures. Different from the existing works on
weaving 3D solid geometry like height-fields (ref. [23]), the weaving
technique developed in our work focuses on producing 3D surface geometry. 3D
surface weaving products can be widely seen in our daily life (e.g., woven
baskets and woven chairs), which however are mainly hand-made. Ren et al.[14]
presented an optimization-based approach to design woven structures by an
algorithm to compute the ribbon’s planar geometry. However, the manufacturing
process has not been considered. The challenges for realizing a computer-
controlled 3D surface weaving process include:

  * 1.

To form a 3D surface patch, different numbers of stitches should be produced
in different rows on the resultant woven structures – therefore, a new
manufacturing process different from flat weaving needs to be developed.

  * 2.

A new machine to realize the 3D weaving process needs to be developed to
enable the length control of warp threads and weft threads in different
columns and rows.

  * 3.

A new algorithm is also demanded to convert an input 3D freeform surface into
the machine instruction of weaving operations.

To the best of our knowledge, these do not exist in literature although the
demanded algorithm shares some similarity to our earlier work of knitting map
generation (ref. [21]).

Figure 2: Given the 3D surface of a vest’s front piece, the 3D woven
structures (c) are formed by controlling (a) the lengths of warp threads in
different columns – e.g., $W_{i}$ and $W_{j}$ have different lengths and (b)
the different starting / ending positions of the weft thread to form short
rows – see the regions circled by dash lines. Fabricating the 3D woven
structures is supervised by a weaving map as shown in (d). The result of
fabrication by cotton threads are shown in (e, f) with red for warp threads
and blue for weft threads.

##  2 Weaving 3D Freeform Surface

To enable the new manufacturing process of 3D surface weaving, both the new
hardware and the new algorithm are developed in our work. Basically, a 3D
surface of woven structures can be formed by controlling the lengths of warp
threads in different columns and the different starting / ending positions of
the weft thread as illustrated in Fig.2(a, b).

Jacquard device[24] on a flat weaving machine, which is originally used to
product flat embossed patterns on fabrics, is first modified to enable the
function of partial weaving by controlling different up and down states of
warp threads (i.e., those along the column directions). As a result, different
numbers of warp threads can be woven by the weft thread (i.e., along the row
direction) starting from / ending at different locations – see Fig.2(b, c) for
an example and Sec. 3.1 for more details. Secondly, considering that the shape
of 3D woven fabric is determined according to the lengths of the warp threads
in different columns, different warp threads need to be controlled to
‘tighten’ or ‘release’ individually (Sec. 3.2). A new mechanism as a matrix of
warp beams is developed to realize this function (see the right of Fig.3). How
to effectively form the desired pulling operation while keeping the warp
threads tight all the time during the weaving process is one of the most
challenging tasks. A weaving mechanism is designed for this purpose (Sec.
3.3). The other challenging task is weft length control, which is realized in
our system by dual robotic-arms equipped with cameras (Sec. 3.4).

Figure 3: Our computer-controlled 3D weaving system can fabricate woven
structures to form a target 3D surface shape and it mainly consists of four
hardware parts: 1) jacquard device, 2) warp beams, 3) weaving mechanism, and
4) shuttle moving mechanism. The weaving process can be completed
automatically with the help of two robotic arms equipped with cameras. The
weaving result as a hemisphere with embedded optical fibres is shown in the
right-upper corner.

In the software aspect, an algorithm is developed to generate weaving maps for
controlling the operations of our weaving machine (see Fig.2(d) for an
example). The algorithm is based on first generating a knittable stitch mesh
by using the geodesic field based method in [21]. The stitch mesh for knitting
is converted into a weaving map by considering the jacquard device and the
weaving mechanism employed in our system. Each weaving map is later converted
into a set of operations defined as W-code to govern the machine weaving.
Details of the algorithm can be found in Sec. 4.2.

In summary, the technical contributions of our work include:

  1. 1.

a new manufacturing process for three-dimensional surface weaving that can
employ warp / weft threads with high bending-stiffness;

  2. 2.

the novel design of a computer-controlled machine for 3D surface weaving that
enables the length control of warp and weft threads in different columns and
rows;

  3. 3.

a computational solution that can convert an input 3D freeform surface into
the corresponding weaving operations.

The performance of our technology has been tested and verified on a variety of
examples in 3D freeform shape. Its potential applications will be demonstrated
by woven surfaces fabricated by our prototype implementation with embedded
conductive threads and optical fibres.

##  3 Process and Hardware Design

We present the manufacturing process and the hardware design of our 3D surface
weaving system in this section. The following design parameters are adopted
for the prototype of our machine to aim at the proof-of-concept applications.
The dimensions of our machine are 1.0m (length) $\times$ 1.2m (width) $\times$
1.2m (height) – see Fig.3. The maximal width of fabrics supported by our
machine is designed as 198mm, which is formed by 100 warp threads with a fixed
stitch width $s_{w}$ as 2mm. The length of woven fabrics is theoretically
unlimited, and the stitch height $s_{h}$ can be controlled by the warp beams
in our design. The minimal stitch height is determined according to the
material and the dimension of the weft threads used in weaving.

Figure 4: The jacquard device (a, b) contains 13 components to lift the
selected warp threads under computer control. The parsing motions of two
heddle lifters with dropping and lifting commands are shown as: (c) the
initial state, (d) the hanging-up state, and (e) the lifted state.

###  3.1 Partial weaving by Jacquard device

One major idea for forming the woven structure on a 3D freeform surface is to
‘partially’ form stitches on different rows during the weaving process. Woven
structures are formed by lifting up and pulling down warp threads in an
interlaced way. Specifically, woven stitches will only be formed in the region
where different up / down statuses are given to the neighboring warp threads
so that they are inter-weaved with the weft thread. When neighboring warp
threads are in the same statue of up (or down), the weft thread will bypass
them to ‘skip’ the stitch. Stitches are selectively added into the resultant
fabrics by this partial weaving process – therefore 3D surface can be form in
a way similar to the short-row shaping technique in knitting.

A jacquard device is employed in our system to selectively lift up warp
threads to form a shed so that the shuttle holding the weft thread can travel
through. Such a device is commonly found in traditional flat weaving machines
to realize embossed patterns on woven fabrics. Differently, a jacquard device
is introduced in our system to realize partial weaving on our machine. As
illustrated in Fig.4, a lifting platform with 10 knives is driven by a pair of
screws to move up and down to lift (or drop) the selected heddle threads
synchronously (the red arrows in Fig.4(c) and (d)). Each hook can be
individually controlled by a push or a pull motion (as indicated by the green
arrow in Fig.4(c)) with the help of a needle connected to an electronic
solenoid. This controls whether a hook will be hung on the corresponding knife
to move together. The solenoid can become shortened when receiving a control
command. As a result, the attached needle will position the corresponding hook
to the location to be lifted by a knife.

The parsing motions are given in Fig.4(c)-(e) to illustrate how to form a shed
by two hooks holding two neighboring warp threads. In this example, the right
hook is selected to lift its corresponding warp thread while the left hook
keeps dropping. First of all, the hooks are all hanging on their corresponding
needles when the lifting platform is at a higher level in the initial state
(see Fig.4(c)). When a command is received, the lifting platform moves down to
the height where the hooks can hang over the knives by shortening the
solenoids to move the needles (as indicated by the green arrow in Fig.4(c)).
After pulling the right hook to the hanging position (as Fig.4(d)), the
lifting platform moves up. As a result, the knife has lifted the right hook
together with the warp thread. A shed is formed by the lifted warp thread and
the warp thread held by the left hook (see Fig.4(e)).

Figure 5: Each warp beam is compounded of a frame ⓐ, a coil of warp thread ⓑ,
a motor ⓒ, and a pair of driving gears ⓓ and ⓔ.

###  3.2 Warp beams for thread length control

Different from the flat weaving machines, all warp threads in our system can
be individually pulled and released by the warp beams (see a matrix of warp
beams shown at the right of Fig.3. As a result, the length of each individual
warp thread can be precisely controlled according to the stitch height $s_{h}$
to form the desired 3D freeform shape of fabrics.

The mechanical design of a warp beam is as shown in Fig.5. A warp thread is
held by a pair of driving gears and can be released from the coil through the
two spacing holes. The releasing and pulling motions of the warp thread are
precisely controlled by the engaged step motor with the help of the driving
gears. To control 100 warp threads, a matrix of 100 warp beams is used in our
prototype machine. This is a scalable design that can be extended to many more
warp beams when needed.

###  3.3 Weaving mechanism

Figure 6: A novel weaving mechanism (a) is invented in our system to form
required ‘push’ of weaved stitches on the fabric by operating 15 components
together. Specifically, the front piece \tiny{12}⃝ and the back piece
\tiny{14}⃝ of the reed are fixed while the middle piece \tiny{13}⃝ can shift a
bit along the weft direction driven by a pair of eccentric wheels \tiny{15}⃝.
The detailed structure of the reed is given in (b).

As the most important part of our hardware system, the weaving mechanism
presented in this sub-section involves more parts and complicated motions.
After forming the shed by the jacquard device and releasing the corresponding
threads by the warp beams, the weaving machine completes the rest operations
to form the required woven structures on the fabric.

During the weaving process, the newly formed woven stitches are pushed to the
previous rows. With the strategy of short-row shaping, the desired 3D surface
can be realized effectively. Note that the woven structures are formed
partially on each row for realizing the 3D surface shape. This pushing
function for woven stitches is jointly realized by the new reed design with
three pieces and the weaving motions for shifting the different lengths of
threads, where the warp threads in different lengths are released by the warp
beams according to the designed weaving map (from the beam side to the fabric
side). The components of our weaving mechanism and the detailed structure of
the reed with three pieces of blades are as shown in Fig.6. The other
important components include the limiters and the fabric clamp. The two
limiters work like a ‘sliding door’ that moves up and down. When the ‘door’ is
closed, all warp threads are fixed at the same level. Located above the
collection platform, the fabric clamp can move down to press and hold the
already completed woven structures on the fabric.

Figure 7: The change of the woven fabric and the configurations of the weaving
mechanism while fabricating a few rows as indicated by the weaving map (i.e.,
the colorful grids – the meaning of different color can be found in Sec. 4.2):
(a) the status after weaving the first row, (b-i) the parsing motions for
weaving the second row, (j, k) the states when and after weaving the third
row, and (l) the state after weaving the fourth row.

The parsing motions for weaving a row of woven stitches are explained below
with the help of Fig.7.

  * 1.

After weaving one row (see Fig.7(a)), we are about to lift / drop the heddle
threads to realize a new jacquard pattern of warp threads according to the
second row of the weaving map. The changed up / down states of warp threads
are as shown in Fig.7(b). At the same time, we release the warp threads by the
warp beams according to the pattern shown in the second row of the weaving
map.

  * 2.

The reed is placed to a location near the heddle board while the limiters are
open and the fabric clamp is pressing the fabric on the collection platform.
This forms a shed with the largest area to ease the travel of the shuttle that
carries the weft thread moving from one side to the other side of the loom
(see Fig.7(c, d)).

  * 3.

After the shuttle’s travel, woven structures of the second row in the weaving
map have already been formed on the fabric but in a loose way. We move the
reed to the middle position that is slightly ahead of the limiters (see
Fig.7(d, e) – indicated by the red arrow).

  * 4.

The limiters are then closed to ensure all warp threads are fixed at the same
height before catching them by the reed (see Fig.7(e, f) – indicated by the
blue arrows). Meanwhile, the loosely formed woven structures are ‘pushed’ onto
the previously produced fabric by (i) shifting the middle blade of the reed to
hold all warp threads (Fig.7(f)), (ii) lifting up the fabric clamp(Fig.7(f,
g)), and (iii) tightening the loosely formed woven structures by pushing the
reed forward to the position below the fabric clamp (Fig.7(g, h)).

  * 5.

Lastly, as shown in Fig.7(h), the fabric clamp is dropped to hold the newly
formed stitches on the fabric (shown as the green arrow), the reed releases
the warp threads (indicated by the orange arrows), and the limiters are opened
(see the blue arrows). The reed is moved back to the initial position to
prepare for weaving the next row (Fig.7(i, j)).

These motions are repeatedly applied for every row to complete the weaving
process – e.g., see Fig.7(j, k) for the third row and Fig.7(l) for the fourth
row. As a result, the woven fabric can be formed according to the designed 3D
shape after weaving all rows.

###  3.4 Weft length control with the help of robotic manipulation

After using the warp beams and the weaving mechanism to control the lengths of
warp threads, we now start to tackle the other challenge of weft length
control for 3D weaving. When the weft threads are longer than the length
determined by the number of demanded stitches, loose loops will be formed at
the end of a row. If the weft threads are too short, it will lead to unwanted
distortion and lateral tension on the warp threads (also the formed stitches)
at the end of a row.

First of all, a shuttle moving mechanism (see Fig.8(b)) is designed for moving
the shuttle of weft thread automatically. Two linear guide rails are installed
on the left and right sides of the reed. Two rods driven by stepper motors are
mounted on these guide rails to push the shuttle from left to right (by the
left rod) or from right to left (by the right rod). The heads of the rods are
designed in a hexagonal shape so that can engage with the shuttle and drive
its rotation. While pushing the shuttle from one side to the other side by a
rod, the motor of the rod will drive to rotate the shuttle so that the length
of weft thread is changed. Shuttle limiters are designed to capture the
shuttle at both ends, which enables the return of a rod.

Figure 8: Our system employs two robotic arms (a) to realize the length
control of weft thread by working together with the shuttle moving mechanism
(b). The loosely formed loop of weft thread at the end of a row will be
tightened by the hook driven by a robotic arm – see (c) and (d) for the weft
thread before and after tightening. The tightening operation is driven by a
camera mounted on the top of fabric clamp. The camera captured images and
their results of edge extraction represented by binary images – as vision-
feedback of robotic manipulation are shown in the window views at the upper-
left corner of (c) and (d), where the blue dash line indicates the target
turning position of weft thread after tightening.

Although the rotation of shuttle while traveling can release the weft thread
and control its length, the resultant weft thread used for a row can be
imprecise considering the diameter change of shuttle by wrapped thread. To
solve this problem, we employed two robotics arms with vision-feedback control
to hook onto the weft thread and pull its turning point to a demanded position
as illustrated in Fig.8(c) and (d).

In our implementation, we mount a camera on the top of fabric clamp to capture
the position of the weft thread using the edge extraction based algorithm –
see the window views at the upper-left corner of Fig.8(c) and (d). Two TM900
robotic arms are used to drive the slender hooks as their end effector, where
the camera mounted on a robotic arm can help to successfully capture the weft
thread by the hook. This robot-assisted tightening operation can help form
stitches with better dimension control on the resultant fabrics.

###  3.5 Control system

The prototype of our 3D surface weaving system consists of 112 step motors
(100 for warp beams, 1 for the jacquard device, and 11 for the weaving
mechanism), 100 electronic solenoids (for the warp threads), and 6 position
sensors. It is important to control these actuators and sensors in a stable
and synchronized way. As over 300 IO channels are required, the IO extension
chip (i.e., PCA9535) is employed to connect the sensors / actuators to the
Micro Control Unit (MCU – i.e., F103ZET6) through the Inter-Integrated Circuit
(IIC). The diagram is as shown in Fig.9, where we use three sets of IIC to
communicate with 24 PCA9535 to complete the control tasks – considering that
the maximal number of chips for each IIC is 8. The firmware of our control
system was developed in C programming language and all circuits are designed
by using EasyEDA. Detailed schematics and PCB layouts have been provided in
Appendix A.

Figure 9: A diagram of the control system used in our approach. Figure 10:
Given a target surface, we first generate a geodesic distance-field by using
the central line of the piece as source (a). A stitch mesh for short-row
shaping based knitting as shown in (b) can be generated from the isocurves of
the geodesic distance-field by optimized quadrangles / triangles (details can
be found in [21]). The stitch mesh can directly map into (c) a knitting map
$K(\cdot,\cdot)$, which is converted into (d) a weaving map $W(\cdot,\cdot)$
and the machine code with its structure / syntax as explained in (e) to
supervise the operations of our weaving machine.

##  4 Machine Code Generation

Given a 3D freeform surface to be fabricated by our weaving machine, we first
generate a short-row based stitch mesh that can result in a knitting map.
After that, the knitting map is converted into machine code including both the
information of jacquard pattern and the instructions for weaving operations.
The whole pipeline of machine code generation has been illustrated in Fig.10.

###  4.1 Knitting map generation

A geodesic distance-field is first computed from the user-defined source
(point or curve) on the input surface, where the isocurves of the field with
the distance as the target stitch width $s_{w}$ are extracted to serve as the
column boundaries of stitches (see Fig.10(a) for an example). The isocurves
are then sampled into segments with lengths equal to the target stitch height
$s_{h}$. Lastly, the stitch meshes are constructed by connecting segments on
neighboring isocurves with optimized quadrangles / triangles. The following
rules are applied to generate the knitting maps considering manufacturing
constraints:

  1. 1.

The stitches are organized row by row;

  2. 2.

All stitches in the same row are neighboring connected;

  3. 3.

Stitches in the same row are formed in an alternating left-to-right and right-
to-left order;

  4. 4.

The ending stitch of the current row should be neighboring to the starting
stitch of the next row.

The stitch mesh generated by the algorithm in [21] can satisfy all these
requirements. As a result, every stitch can be mapped to a location in the 2D
knitting map by its row index and its location in the row – see Fig.10(b, c)
for an example.

A knitting map presents the operational information about how to form stitches
while traveling in the alternated left-to-right and right-to-left ways by the
carriers holding yarns. Three different blocks displayed in different colors
are defined in a knitting map (see Fig.10(c)). The cyan / yellow blocks are
the stitches formed by loops of yarns in knitting, where the cyan ones are
stitches formed by the carrier traveling from right to left and the yellow
blocks represent those formed by traveling from left to right. No stitch will
be formed for the white or the gray blocks. That means the carrier will not
travel into the white / gray regions. Due to the short-row shaping technique,
the stitches below and above the gray blocks will be connected to locally
change the length of fabrics. As a result, 3D surfaces are produced by the
connected stitches.

###  4.2 Converting knitting map into weaving code

Different from knitting, every stitch of the woven structure is formed
together by two neighboring warp threads and two neighboring weft threads.
Therefore, for a knitting map $K(\cdot)$ with $M$ columns and $N$ rows, it
will be converted into a weaving map $W$ with $(M+1)$ columns and $(N+1)$
rows. When fabricating the $i$-th row of the woven structure, $W_{i,j}$
provides information for both the Jacquard configuration of the $j$-th warp
thread and the corresponding warp beam’s operation.

Unlike the short-row shaping of knitting that the carrier’s travel is only
conducted in a limited range for each row (e.g., only the region with yellow
or cyan blocks in Fig.10(c)), the carrier holding the weft thread always
travels from the head to the tail of each row on the loom. When two
neighboring warp threads have the same Jacquard configuration (i.e., both up
or both down as $W_{i,j}=W_{i,j+1}$), no woven structure can be formed between
them. On the other aspect, two different results can be obtained by using
different operations of the warp beam for the $j$-th thread when
$W_{i,j}=W_{i+1,j}$:

  * 1.

If the beam releases the $j$-th thread with a unit length $s_{h}$ (i.e., woven
stitch height) as usual, it will become a floating thread between the $i$-th
row and $(i+1)$-th row;

  * 2.

If the beam keeps holding the thread, the already formed woven stitch before
the $i$-th row will be tightly ‘sewn’ to the later stitch after the $(i+1)$-th
row.

The first situation happens for the white regions in the knitting map, and the
second case occurs in the gray regions.

An algorithm is developed to generate $W(\cdot)$ from $K(i,j)$ with
$i=1,\ldots,N$ as row index (starting from the bottom) and $j=1,\ldots,M$ as
column index (starting from the left). For the sake of explanation, colors are
used while introducing the algorithm below (with Fig.10(c, d) as an example).

  * 1.

Step 1: Create a new weaving map as $W(i,j)$ with $(N+1)$ rows and $(M+1)$
columns and fill all blocks of $W(i,j)$ by green.

  * 2.

Step 2: We check the color of every block $K(i,j)$ in the knitting map so that
1) $W(i+1,j)$ is assigned as magenta when $K(i,j)$ is yellow or cyan or 2)
$W(i+1,j)$ is assigned as blue when $K(i,j)$ is gray.

  * 3.

Step 3: For every row $W(i,\cdot)$ ($i\neq 1$), if the last non-green block is
located at $W(i,j^{\prime})$, we assign $W(i,j^{\prime}+1)=W(i,j^{\prime})$ –
i.e., one column is extended.

  * 4.

Step 4: For the first row $W(1,\cdot)$, we copy it from the second row as
$W(1,j)=W(2,j)$ for every blocks.

  * 5.

Step 5: For a magenta block $W(i,j)$, we convert its color to green when 1)
both $i$ and $j$ are odd numbers or 2) both $i$ and $j$ are even numbers.

After running this algorithm, we can generate a weaving map with information
stored for both the Jacquard pattern and the warp beams’ operations.
Specifically, we have

  1. 1.

$W(i,j)=\mathrm{blue}$: the $j$-th warp beam will not release the warp thread
and the Jacquard pattern of the $j$-th warp thread is kept as ‘down’ state;

  2. 2.

$W(i,j)=\mathrm{magenta}$: the $j$-th warp beam will release the thread for a
length $s_{h}$ as woven stitch height and the Jacquard pattern of the $j$-th
thread is changed to ‘up’ state if it is not;

  3. 3.

$W(i,j)=\mathrm{green}$: the $j$-th warp beam will release the thread and the
$j$-th thread is dropped to the ‘down’ state for its Jacquard pattern.

An example weaving map can be found in Fig.10(d).

Based on the above definitions for different colors, we convert the weaving
map into a W-code file with a structure as shown in Fig.10(e) to supervise the
operations of our 3D surface weaving machine. The syntax of W-code consists of
five commands:

  * 1.

A: The initialization command to reset the hardware for the coming weaving
process.

  * 2.

B: The command is given together with $(M+1)$ binary numbers to instruct the
Jacquard device to selectively lift the corresponding warp threads (e.g.,
Fig.7(b)).

  * 3.

C: A command followed by $(M+1)$ binary numbers is used to instruct the warp
beams for selectively releasing the corresponding warp threads, where the
length of release is defined according to the target woven stitch’s height
$s_{h}$.

  * 4.

D: A command followed by a boolean value for driving the shuttle (i.e., D0 –
from left to right and D1 – from right to left). The command completes the
operations of weaving one row as described in Sec. 3.3 (see also
Fig.7(c)-(i)).

  * 5.

E: The end command to stop the weaving process.

Note that this W-code in general can be employed on weaving machines in
different configurations with carefully designed controllers. An example
W-code file for the weaving map shown in Fig.10(d) can be found in Appendix B.

Figure 11: We tested our 3D surface weaving machine on four different
examples, where their weaving maps are given in (a). The results of physical
fabrication are shown in (b). Our weaving system enables the flow of electric
current over the freeform surfaces of fabrics by using conductive threads in
(c).  Table 1: Statistics of Computation

| Trgl. |  |  Thread Num.† |  Comp. Time‡ (sec.)
---|---|---|---|---
Model | Num. | Fig. | Weft | Warp | Knit Map | W-Code
Hemisphere | $4000$ | 3 | $138$ | $72$ | $1.64$ | $0.38$
|  | - | $276$ | $144$ | $1.67$ | $1.71$
Vest-Front | $26593$ | 2 | $170$ | $71$ | $1.78$ | $0.49$
|  | - | $340$ | $142$ | $7.01$ | $2.01$
Vest-Back | $28763$ | 11 | $173$ | $72$ | $1.97$ | $0.52$
|  | - | $346$ | $144$ | $7.75$ | $2.19$
Triple-Peak | $10016$ | 11 | $190$ | $58$ | $0.97$ | $0.45$
|  | - | $380$ | $116$ | $3.85$ | $1.98$

† Tests with different number of threads were conducted to demonstrate the
scalability of our computational method although the maximally allowed number
of warp threads on our prototype machine is only 100.

‡ The computing time of W-code generation includes both the step of weaving
map generation and the step for converting it into W-code.

##  5 Results and Discussion

We have made a prototype machine by using off-the-shelf electrical /
mechanical components, motors, and 3D printed parts. The software of our
system was developed by Python. The experimental tests reported in this
section were all run on a desktop PC with AMD Ryzen 7 5800X 3.8GHz CPU and
32GB RAM. Different materials are employed to fabricate examples with a
variety of freeform 3D shapes. A supplementary video to demonstrate the
function of our work can be accessed at: https://youtu.be/mzdlq5Sk8NQ.

###  5.1 Statistics of computation and fabrication

We have tested our prototype system in physical experiments by fabricating
models as shown in Fig.11. The testing results are quite encouraging although
both the machine and the weaving-map generation algorithm can be further
optimized. The limitations of our current implementation are discussed in Sec.
5.7

The computational statistics of these examples have been listed in Table 1,
where the examples are tested by using threads in two different resolutions.
As it can be observed, the computation on all tests can be completed within 10
seconds and the major bottleneck is the step of knitting map generation [21].
The complexity of the knitting map generation algorithm is $O(AB\log B)$ with
$A$ and $B$ being the maximal number of stitches along the row and the column
directions on the knitting map respectively.

Figure 12: Examples to demonstrate the functionality of 3D surface weaving
with optical fibres.

We have physically fabricated these example models on our prototype machine by
using different materials. While the waxed threads with cotton core are
employed for warp threads, both the cotton thread (waxed) and the conductive
threads (bare copper with silicone rubber insulation) have been used for weft
threads in our tests (see Fig.11). The fabrication of all models can be
completed within a reasonable time as listed in Table 2. We have tested the
examples by replacing a few warp threads with optical fibres – named as
‘hybrid’ warp threads in Table 2 with the results shown in Figs. 3 & 12. Our
weaving process and machine do not have special requirements on the materials
to be used as threads for forming woven structures as 3D surfaces. A material
can be used as long as it can be successfully extruded by the warp beams and
winded by the shuttle.

Figure 13: Examples to demonstrate the problems caused by manual deformation on the fabrics made by flat weaving, where the height of woven stitches $s_{h}$ cannot be well controlled. The heights are non-uniformly distributed – i.e., larger at the fixed end while shorter at the pushing side.  Figure 14: Comparison of shape approximation error by the distribution of distances between sample points on the given surfaces to the 3D point clouds scanned from the fitting results of flat woven fabric (2D) and those by our surface weaving (3D), where the errors are displayed by the color maps and the error histograms. From top to bottom, the models are hemisphere (6,575), vest-front (8,220), vest-back (7,989) and triple-peak (4,057), where the numbers of samples for each model are given in the bracket. Regions with large error on the 2D results and their corresponding regions on the 3D results are highlighted by rectangles drawn in red dash lines.  Table 2: Statistics of Physical Fabrication | Thread # | Thread Materials | Weaving
---|---|---|---
Model | Weft | Warp | Weft | Warp | Time (min.)
|  |  | Cotton | Cotton | $140$
Hemisphere | $138$ | $72$ | Conductive | Cotton | $152$
|  |  | Cotton | Hybrid | $145$
|  |  | Cotton | Cotton | $170$
Vest-Front | $170$ | $71$ | Conductive | Cotton | $181$
|  |  | Cotton | Hybrid | $173$
|  |  | Cotton | Cotton | $174$
Vest-Back | $173$ | $72$ | Conductive | Cotton | $183$
|  |  | Cotton | Cotton | $195$
Triple-Peak | $190$ | $58$ | Conductive | Cotton | $211$

###  5.2 Automatic vs. manual deformation based shape forming

One of the major contributions of our hardware design is the warp beams and
the weaving mechanism that can precisely control the lengths of warp threads
therefore also the height of woven stitch $s_{h}$. This is also the reason why
our machine can form 3D surfaces automatically. We demonstrate this automatic
3D forming function by comparing with examples that are fabricated by
conventional flat weaving.

The weaving map can still be implemented on a commercial flat weaving machine
with a jacquard device. Gaps (actually floating threads) will be formed on the
fabrics between rows (see the zoom view in the left of Fig.13). Although we
can manually pull the end of the warp threads to eliminate these gaps and
deform the fabric, these operations cannot accurately control the height
distribution of woven stitches along the pulled warp threads. For manual 3D
shape forming, we fix one end of the flat woven fabrics while pulling warp
threads and pushing weft thread on the other side (see also Fig.13). Note that
the pushing force is applied everywhere along the same warp thread and the
gaps are eliminated by squeezing neighboring stitches. The result of manual
form generally shows larger stitch height at the fixed end but smaller stitch
height near the pushing side. As a consequence, the target 3D shape of woven
fabrics cannot be accurately formed.

Additionally, for the surface boundary that are next to the large green
regions in the weaving map (e.g.,, the bottom left one shown in Fig.11(a)),
the manual operation will lead to large distortions – see the waist region for
the vest-front model in Fig.13. In short, the manual 3D shape forming cannot
well control the boundary shape of fabrics.

###  5.3 Analysis of geometric errors: 3D shape

One of the most important purposes of this work is to reach a high level of
geometric accuracy on the 3D surface shape of the produced woven fabrics. In
the conventional textile industry, a flattening algorithm (e.g., [25, 26]) was
employed to compute a (trimmed) 2D panel shape to fit onto the desired 3D
object (e.g., human bodies in the apparel industry). However, as 3D surfaces
are in general not flattenable (or named as developable in geometric
modeling), wrinkles will appear at regions where the curvature is large and
leftovers are inevitable. For a better fit, smaller pieces of the flat-woven
fabric are generated and stitched together, which involved time-consuming
sewing processes that are labor-intensive (e.g., [27, 28, 29]).

We conducted experimental tests to study the shape approximation errors on a
variety of models. Both the skinned shape by flat woven fabrics and the shape
from 3D surface weaving are compared with the target shape (as the ground
truth). A structured light based 3D scanner [30] is employed to generate the
point clouds for each surface, which is also placed into a well-registered
pose w.r.t. the ground truth shape. The shortest distances between the sampled
points on the given surface to the scanned point clouds are employed as shape
approximation errors, which are visualized as color maps and histograms in
Fig.14. From the results of error analysis, we can easily conclude that models
fabricated by our 3D surface weaving have much smaller errors in all examples
– i.e., mainly less than 1mm as can be observed from the histograms. When the
surface to be fabricated becomes more and more complex, the geometric error on
fitting results by flat woven fabrics will increase significantly (see the
triple-peak model in Fig.14 for an example).

Figure 15: Experimental test to study the length accuracy of warp / weft
threads on the resultant 3D fabrics, where the lengths of every warp and weft
threads are measured and compared with the demanded lengths. The error
analysis as distribution has been given for both the results with vs. without
the robotic tightening manipulations.

###  5.4 Analysis of geometric errors: lengths of threads

Experiments are conducted to evaluate the performance of our method in the
length control for both the warp threads and the weft threads on the resultant
3D fabrics produced by our system. We measure the lengths of every warp and
weft threads and compare their lengths with the demanded lengths, which are
specified by the weaving map. The tests are given for the hemisphere model as
it does not have concave boundaries, considering the lengths of warp threads
across concave boundary are difficult to measure accurately.

Ablation study has been conducted to fabricate two hemispherical fabrics with
vs. without the robotic manipulation based tightening process after weaving
the stitches of each row. Specifically, the fabrics made by our 3D weaving
machines are cut into threads at the end of each row and column to measure the
lengths of all threads. From the error analysis shown in Fig.15, we find that
large variations of length errors for weft threads are observed on the fabric
without the robotic tightening process. At the same time, slightly worse
length control can also be observed on warp threads. This is mainly because
that, without the robotic tightening, the uncontrolled weft lengths near the
end of a row will also lead to distorted stitches with varied warp lengths.

###  5.5 Analysis of geometric errors: thread-paths

Besides of accurate 3D shape, our 3D surface weaving approach has another
intrinsic advantage – the warp threads naturally preserve the geodesic
distance between each other. This enables the capability to embed functional
threads at equal distances when employing them as warp threads. We demonstrate
this by using optical fibres in our experiment and comparing them to the
results obtained from flat weaving.

As shown in Fig.16, we aim to insert optical fibres with equal distance on the
hemisphere and the vest-back models. The ground-truth distribution / locations
of these curves are illustrated as blue curves on the 3D models with the
distance as $7s_{w}$ between neighboring curves. For weaving such fabrics, we
replace 7 among all warp threads with optical fibres while remaining 6 warp
threads between every neighboring optical fibres. Note that the distribution
of fibres is selected in a symmetric way with the middle fabric coincident to
the symmetric plane of the models. The same setup of fabrication is applied to
both flat weaving (2D) and surface weaving (3D). After fitting the resultant
fabrics onto the target models (registered by the central-line curve), we
measure the light distribution of the optical fibres by photos to evaluate the
distribution of the corresponding thread-paths.

Specifically, for each optical fibre, a B-spline curve is fit onto the
lighting points extracted from photos and the curve is re-sampled into $1,000$
points. The distances between these sample points and the target ground-truth
curves are measured and analyzed as shown in the histogram. The tests are
conducted on results obtained from both 2D and 3D weaving. Apparently, the
fitting from 2D fabrics onto 3D models generates uncontrolled distortion –
i.e., the resultant thread-paths of optical fibres present much larger errors.

Figure 16: Results to demonstrate the accuracy of warp thread-paths that are
formed on the fabrics produced by the flat weaving (2D) vs. the surface
weaving (3D). We target on distributing optical fibres on a given freeform
surface at an equal distance. The statistical errors are shown in the
histogram with the unit as pixels in the image space (i.e., in the resolution
of $652\times 850$ for an area of $150\mathrm{mm}\times 195\mathrm{mm}$).

###  5.6 Continuity of Threads

Our 3D surface weaving machine can help produce functional fabrics with many
interesting applications in mechatronics. When conductive threads are used (as
already demonstrated in Fig.11(c)), our 3D surface weaving approach enables
the flow of electric current over the surfaces of fabrics so that they can
work like soft PCBs. This has many potential applications such as functional
garments [31], motion sensing [32], and ‘skin’ of cobot [33]. To enable this
function, continuity on both the warp and the weft threads is required. While
forming a 3D freeform shape by our surface weaving technique, we use a single
thread for weft and multiple continuous threads for warp directions.
Continuity is preserved on the resultant woven fabrics.

The following experiment is to demonstrate the problem of discontinuity when
flat woven fabrics are employed. First of all, a piece of woven fabric is made
by flat weaving by using a conductive thread for weft directions (the left of
Fig.17). Because there are excess boundaries and winkle regions when fitting
onto the mold (see the middle of Fig.17), the 2D fabric has to be trimmed for
a better fit. After fitting and trimming, most of the weft threads are cut and
the circuits within the fabric are open which leads to infinity as the
measured electrical resistance (the right of Fig.17). Differently, our surface
weaving technique can generate a perfect fitting shape while preserving the
continuity of the conductive weft thread (see the back-vest example shown in
Fig.11).

Figure 17: Experiment to demonstrate the flat weaving technique cannot achieve
both the continuity of conductive thread and the perfect fitting 3D shape
together. An infinity is measured as the electrical resistance after trimming
the flat fabrics to form a target 3D shape for the vest-back – i.e., the
conductive weft thread has been broken.

###  5.7 Limitations

One major limitation of our current implementation is that two robotic arms
are employed for realizing the length control of weft threads. This
significantly increases the cost and the complexity of the manufacturing
system. A possible future work is to design a special mechanism equipped with
force sensors to complete the tightening step for weft threads.

At present, the weaving speed of our prototype machine is much slower than
those flat weaving machines used in industry. We choose very conservative
speeds in many steps of motions on our prototyping machine, which can be
further tuned and optimized. Although 3D weaving involves steps and motions
much more complicated than flat weaving, the mechatronics design of our
machine can still be further optimized for improving the efficiency of 3D
weaving.

Figure 18: An example of embedding optical fibres along the weft directions by
the technique of in-lay.  Figure 19: An example of vest-front fabric made by
using 1) bare stainless steel wire for warp threads and 2) silicone insulated
copper wire for weft threads (left), which can be developed into a touch
sensing interface by capacitance [34]. (Middle) the distribution of touch that
is sensed by the grid of conductive threads, and (right) the corresponding
touch visualized on the 3D surface.

In the examples listed above, the threads with high stiffness (such as optical
fibres) are only employed as warp threads. This is because the weft thread
needs to form U-turn at the end of each row. However, we can employ the in-lay
technique to ‘insert’ an additional thread (with high bending-stiffness)
between those neighboring rows formed by a continuous weft thread. An example
can be found in Fig.18. Note that the in-lay fabrication needs manual
operations on our prototype machine in our current experiment. However, when
the U-turn at the end of each row is tolerable on materials with high bending-
stiffness (e.g., metal wires), our method can produce fabrics by using these
stiff materials in both warp and weft threads – see Fig.19 for an example by
using these conductive grids to form a capacitance-based touch sensing
interface [34]. Lastly, the abrasion of warp threads caused by the reed’s
motion requires the threads to be waxed to prevent damage to its ‘core’.

There are also some limitation on the software aspect. Our current method of
weaving-map generation heavily relies on selecting a good curve as source to
generate geodesic distance-field. Different maps including failure cases can
be generated when using different sources. One possible future research is to
automate the source selection while preventing the failure cases and reducing
the distortion of stitch meshes constructed from the geodesic distance-field.

##  6 Conclusion

This paper presents a new computer-controlled 3D surface weaving method, which
is the first approach that automates the fabrication of 3D freeform woven
fabrics by using threads in non-traditional materials with high bending-
stiffness. The major contributions of this work come from the new process, the
mechatronic system design and the computational algorithm to enable the
computer-controllable 3D surface weaving process. The performance of our
technology has been tested and verified on a variety of 3D freeform models and
different applications.

## References

## References

  * [1] S. Adanur, Handbook of weaving, CRC press, 2020.
  * [2] A. D. Kelkar, J. S. Tate, R. Bolick, Structural integrity of aerospace textile composites under fatigue loading, Materials Science and Engineering: B 132 (1-2) (2006) 79–84.
  * [3] M. Di Rienzo, F. Rizzo, G. Parati, G. Brambilla, M. Ferratini, P. Castiglioni, Magic system: A new textile-based wearable device for biological signal monitoring. applicability in daily life and clinical setting, in: 2005 IEEE engineering in medicine and biology 27th annual conference, IEEE, 2006, pp. 7167–7169.
  * [4] S. J. Park, K. Choi, H. Rodrigue, C. H. Park, Soft exosuit based on fabric muscle for upper limb assistance, IEEE/ASME Transactions on Mechatronics (2022) 1–12doi:10.1109/TMECH.2022.3194975.
  * [5] A. P. Mouritz, M. K. Bannister, P. Falzon, K. Leong, Review of applications for advanced three-dimensional fibre textile composites, Composites Part A: applied science and manufacturing 30 (12) (1999) 1445–1461.
  * [6] A. Komolafe, B. Zaghari, R. Torah, A. S. Weddell, H. Khanbareh, Z. M. Tsikriteas, M. Vousden, M. Wagih, U. T. Jurado, J. Shi, et al., E-textile technology review–from materials to application, IEEE Access 9 (2021) 97152–97179.
  * [7] A. Levitt, D. Hegh, P. Phillips, S. Uzun, M. Anayee, J. M. Razal, Y. Gogotsi, G. Dion, 3D knitted energy storage textiles using mxene-coated yarns, Materials Today 34 (2020) 17–29.
  * [8] J. McCann, L. Albaugh, V. Narayanan, A. Grow, W. Matusik, J. Mankoff, J. Hodgins, A compiler for 3D machine knitting, ACM Transactions on Graphics 35 (4) (2016) 1–11.
  * [9] V. Narayanan, L. Albaugh, J. Hodgins, S. Coros, J. McCann, Automatic machine knitting of 3D meshes, ACM Transactions on Graphics 37 (3) (2018) 1–15.
  * [10] Y. Liu, L. Li, P. F. Yuan, A computational approach for knitting 3D composites preforms, in: The International Conference on Computational Design and Robotic Fabrication, Springer, 2019, pp. 232–246.
  * [11] Y. Igarashi, T. Igarashi, H. Suzuki, Knitting a 3D model, Computer Graphics Forum 27 (7) (2008) 1737–1743.
  * [12] K. Bilisik, Multiaxis 3D weaving: Comparison of developed two weaving methods (tube-rapier weaving versus tube-carrier weaving) and effects of bias yarn path to the preform properties, Fibers and Polymers 11 (1) (2010) 104–114.
  * [13] R. Wu, C. Harvey, J. X. Zhang, S. Kroszner, B. Hagan, S. Marschner, Automatic structure synthesis for 3D woven relief, ACM Transactions on Graphics 39 (4) (2020) 102–1.
  * [14] Y. Ren, J. Panetta, T. Chen, F. Isvoranu, S. Poincloux, C. Brandt, A. Martin, M. Pauly, 3D weaving with curved ribbons, ACM Transactions on Graphics 40 (2021) 127.
  * [15] X. Chen, Advances in 3D textiles, Elsevier, 2015.
  * [16] B. Shirinzadeh, G. Alici, C. W. Foong, G. Cassidy, Fabrication process of open surfaces by robotic fibre placement, Robotics and Computer-Integrated Manufacturing 20 (1) (2004) 17–28.
  * [17] B. Shirinzadeh, G. Cassidy, D. Oetomo, G. Alici, M. H. Ang Jr, Trajectory generation for open-contoured structures in robotic fibre placement, Robotics and Computer-Integrated Manufacturing 23 (4) (2007) 380–394.
  * [18] L. Sorrentino, M. Marchetti, C. Bellini, A. Delfini, F. Del Sette, Manufacture of high performance isogrid structure by robotic filament winding, Composite Structures 164 (2017) 43–50.  doi:https://doi.org/10.1016/j.compstruct.2016.12.061.
URL https://www.sciencedirect.com/science/article/pii/S026382231632726X

  * [19] H. Li, S. Sueda, J. Keyser, Computation of filament winding paths with concavities and friction, Computer-Aided Design 141.  doi:10.1016/j.cad.2021.103089.
  * [20] D. J. Spencer, Knitting technology: a comprehensive handbook and practical guide, CRC press, 2001.
  * [21] Z. Liu, X. Han, Y. Zhang, X. Chen, Y.-K. Lai, E. L. Doubrovski, E. Whiting, C. C. Wang, Knitting 4D garments with elasticity controlled for body motion, ACM Transactions on Graphics 40 (4) (2021) 1–16.
  * [22] V. Narayanan, K. Wu, C. Yuksel, J. McCann, Visual knitting machine programming, ACM Transactions on Graphics 38 (4) (2019) 1–13.
  * [23] R. Wu, C. Harvey, J. X. Zhang, S. Kroszner, B. Hagan, S. Marschner, Automatic structure synthesis for 3D woven relief, ACM Trans. Graph. 39 (4).  doi:10.1145/3386569.3392449.
URL https://doi.org/10.1145/3386569.3392449

  * [24] Y. Miura, Y. Nakajyo, K. Suzuki, The jacquard machine, Journal of the Textile Machinery Society of Japan 10 (4) (1964) 159–164.
  * [25] Y. Zhang, C. C. Wang, Wirewarping++: Robust and flexible surface flattening with length control, IEEE Transactions on Automation Science and Engineering 8 (1) (2011) 205–215.
  * [26] C. C. Wang, K. Tang, B. M. Yeung, Freeform surface flattening by fitting a woven mesh model, Computer-Aided Design 37 (8) (2005) 799–814.
  * [27] Z.-Y. Zhao, M. Li, Z. Zhang, Q. Fang, L. Liu, X.-M. Fu, Evolutionary piecewise developable approximations, ACM Transactions on Graphics 42 (4) (2023) 1–13.
  * [28] X. Zhang, G. Fang, G. G. Melina Skouras, C. C. Wang, E. Whiting, Computational design of fabric formwork, ACM Transactions on Graphics 38 (4) (2019) 1–13.
  * [29] C. C. Wang, Computing length-preserved free boundary for quasi-developable mesh segmentation, IEEE Transactions on Visualization and Computer Graphics 14 (1) (2008) 25–36.
  * [30] K. He, C. Sui, T. Huang, Y. Zhang, W. Zhou, X. Chen, Y. LIU, 3d surface reconstruction of transparent objects using laser scanning with a four-layers refinement process, Optics Express 30.  doi:10.1364/OE.449300.
  * [31] H. Krauss, K. Takemura, Stretchable optical waveguide sensor capable of two-degree-of-freedom strain sensing mediated by a semidivided optical core, IEEE/ASME Transactions on Mechatronics 27 (4) (2022) 2151–2157.  doi:10.1109/TMECH.2022.3175205.
  * [32] E. Zheng, Y. Li, Z. Zhao, Q. Wang, H. Qiao, An electrical impedance tomography based interface for human–robot collaboration, IEEE/ASME Transactions on Mechatronics 26 (5) (2021) 2373–2384.  doi:10.1109/TMECH.2020.3039017.
  * [33] G. Pang, G. Yang, W. Heng, Z. Ye, X. Huang, H.-Y. Yang, Z. Pang, CoboSkin: Soft robot skin with variable stiffness for safer human–robot collaboration, IEEE Transactions on Industrial Electronics 68 (4) (2021) 3303–3314.  doi:10.1109/TIE.2020.2978728.
  * [34] J. Lotters, W. Olthuis, P. Veltink, P. Bergveld, A sensitive differential capacitance to voltage converter for sensor applications, IEEE Transactions on Instrumentation and Measurement 48 (1) (1999) 89–96.  doi:10.1109/19.755066.