Section 4 of 5
Methods
Anton Bredenbeck, Anish Jadoenathmisier, and Salua Hamaza · about 13 minutes
Manufacturing the sensorized digits
Each digit of the compliant finger assembly comprises three integrated components: a rigid structural backbone, a soft frictional interface, and an embedded tactile sensing pad. For these elements to function as a unified phalange, they must be securely bonded. In biological soft-rigid composites, strong integration is often achieved through gradual material transitions; however, such graded interfaces are difficult to reproduce in engineered systems. Instead, we employ a carefully selected combination of materials and bonding procedures that provides robust adhesion while maintaining compliance at the contact surface.
The rigid backbone of each phalanx is fabricated from PLA using fused deposition modeling (FDM) 3D printing. Each segment incorporates dedicated through-holes sized to route 22 AWG wires from the tactile sensors through the finger structure. The soft tactile pads are cast from EcoFlex-30 silicone, selected for its low Shore hardness and durability under repeated contact.
The pad geometry is designed as a semi-ellipsoid to approximate the curvature of the human fingertip and maximize contact area. A negative mold of this geometry is 3D-printed in PLA. To integrate the tactile sensor, a square copper foil patch is prepared and a 22 AWG lead wire is soldered to it. This copper-foil assembly is placed flat at the base of the mold, with the lead routed upward. This configuration ensures strong bonding between the foil and the silicone during casting while keeping the wire accessible for subsequent integration.
The silicone mixture is then poured into the mold, fully encapsulating the copper foil such that, after curing, the sensing element lies just beneath the outer surface of the pad. Once cured, the thin silicone layer covering the foil is carefully removed by light surface abrasion, exposing the sensing area without compromising the embedded structure.
To assemble the composite phalanx, the attachment surface of the PLA backbone is first sanded to increase surface roughness and promote adhesion. A flexible, silicone-based adhesive compatible with both PLA and EcoFlex is then applied. The cured tactile pad is aligned and pressed onto the phalanx, with the sensor wire routed through the corresponding pass-through hole. After adhesive curing, this process yields a durable yet compliant interface capable of withstanding repeated loading during grasping tasks. Lastly, each wire is connected to an MPR121 capacitive sensing controller located at the base of the MAV. When a phalanx contacts a conductive object, the resulting change in capacitance provides a clear indication of touch, enabling the hand to detect interactions in real time.
All design files to realize our anthropomorphic tactile hand are publicly accessible through our repository (https://github.com/BioMorphic-Intelligence-Lab/feely_drone).
Integration with the aerial platform
Integrating the anthropomorphic tactile hand with an aerial platform requires a compact and lightweight electronics architecture. For this purpose, we use a SpeedyBee FS225 V2 5” quadrotor frame paired with a 45A BL32 4-in-1 ESC that drives four Emax ECO II Series 2207 motors. A Pixracer R15 flight controller running PX4 receives position trajectories from a RaspberryPi 5 companion computer, which also interfaces with a Teensy 4.0 responsible for controlling the three Feetec STS3032 servo motors that actuate the fingers. For position control, the MAV receives position measurements from a Motion Capture (MoCap) system as a proof of concept. It has been shown that the position estimate can also be achieved on-board the MAV using a single camera and an IMU43. The same companion computer processes the signals from the tactile sensors described in the following subsection. All components operate from a single 4S battery mounted on the underside of the MAV.
Processing tactile awareness
The nominal joint positions of the three revolute joints of each robotic finger are chosen such that, in the absence of actuation, the gripper naturally rests in a fully closed configuration due to the joints’ torsional stiffness. This enables the gripper to support the full weight of the MAV when perched without any energy consumption. Each finger is actuated by a tendon routed around a spool attached to the distal phalanx, at the fingertip. Each phalanx i is equipped with binary contact sensors that produce a contact signal \documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$${{\mathcal{C}}}_{i}$$\end{document}Ci upon touch.
In order to infer information about the environment from binary contact signals, the system requires knowledge of the location of the respective contact sensor. This information can be obtained by solving the steady-state dynamics of each robotic finger under a given actuation. Each robotic finger is modeled as a kinematic chain governed by the standard manipulator equations, which result from Lagrangian model analysis44. Therefore, the state of the j-th robotic finger ξj follows:where Table 1 defines all symbols. Under the assumption of quasi steady-state movement (i.e. \documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$${\ddot{{\boldsymbol{\xi }}}}{j}\approx 0$$\end{document}ξ¨j≈0 and \documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$${\dot{{\boldsymbol{\xi }}}}{j}\approx 0$$\end{document}ξ°j≈0) and no external forces (\documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$${{\bf{f}}}{j,{\mathcal{E}}}\approx 0$$\end{document}fj,E≈0) the above allows us to extract the steady state configuration ξj,s__s of the finger given some actuation \documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$${\tau }{j,{\mathcal{E}}}$$\end{document}τj,E by solvingGiven the non-linear nature of \documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$${{\bf{G}}}{j,{\mathcal{E}}}({{\boldsymbol{\xi }}}{j}{,}^{{\mathcal{W}}}{{\mathbf{\Omega }}}_{{\mathcal{B}}})$$\end{document}Gj,E(ξj,WΩB) this equation does not have a closed form solution. However, we can solve for ξj using a numerical approach, such as Newton’s method, where a few iterations are sufficient. For better readability, we define the function \documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$${\bf{g}}({\boldsymbol{\xi }})\in {{\mathbb{R}}}^{3}\to {{\mathbb{R}}}^{3}$$\end{document}g(ξ)∈R3→R3:Finding the roots of g(ξ) is then equivalent to finding the steady state configuration that satisfies Eq. (2). The Newton’s Method step then takes on the form:where J****g(ξj) is the Jacobian of the function with respect to the entries of ξj. In practice, a few iterations suffice to converge to the steady-state configuration ξj,s__s. Having obtained ξj,s__s for each finger, we can solve the forward kinematics problem for each of the sensing pads, yielding their positions in the body frame \documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$${\mathcal{B}}$$\end{document}B. When any contact sensor is active, the contact location is now known, enabling the system to realign with the target by repositioning toward the contact location.
1\documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$${{\bf{M}}}_{j,{\mathcal{E}}}({{\boldsymbol{\xi }}}_{j})\ddot{{{\boldsymbol{\xi }}}_{j}}+{{\bf{C}}}_{j,{\mathcal{E}}}({{\boldsymbol{\xi }}}_{j},\dot{{{\boldsymbol{\xi }}}_{j}})\dot{{{\boldsymbol{\xi }}}_{j}}+{{\bf{D}}}_{j,{\mathcal{E}}}\dot{{{\boldsymbol{\xi }}}_{j}}+{{\bf{G}}}_{j,{\mathcal{E}}}({{\boldsymbol{\xi }}}_{j}{,}^{{\mathcal{W}}}{{\mathbf{\Omega }}}_{{\mathcal{B}}})+{{\bf{K}}}_{j,{\mathcal{E}}}({{\boldsymbol{\xi }}}_{j}-{{\boldsymbol{\xi }}}_{j,0})={{\bf{A}}}_{j,{\mathcal{E}}}{\tau }_{j,{\mathcal{E}}}+{{\bf{J}}}_{j,{\mathcal{E}}}^{T}({{\boldsymbol{\xi }}}_{j}){{\bf{f}}}_{j,{\mathcal{E}}},$$\end{document}Mj,E(ξj)ξj¨+Cj,E(ξj,ξj°)ξj°+Dj,Eξj°+Gj,E(ξj,WΩB)+Kj,E(ξj-ξj,0)=Aj,Eτj,E+Jj,ET(ξj)fj,E,
2\documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$${{\bf{G}}}_{j,{\mathcal{E}}}({{\boldsymbol{\xi }}}_{j}{,}^{{\mathcal{W}}}{{\mathbf{\Omega }}}_{{\mathcal{B}}})+{{\bf{K}}}_{j,{\mathcal{E}}}({{\boldsymbol{\xi }}}_{j}-{{\boldsymbol{\xi }}}_{j,0})={{\bf{A}}}_{j,{\mathcal{E}}}{\tau }_{j,{\mathcal{E}}}\,.$$\end{document}Gj,E(ξj,WΩB)+Kj,E(ξj-ξj,0)=Aj,Eτj,E.
3\documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$${\bf{g}}({\boldsymbol{\xi }}):= {{\bf{G}}}_{j,{\mathcal{E}}}({{\boldsymbol{\xi }}}_{j}{,}^{{\mathcal{W}}}{{\mathbf{\Omega }}}_{{\mathcal{B}}})+{{\bf{K}}}_{j,{\mathcal{E}}}({{\boldsymbol{\xi }}}_{j}-{{\boldsymbol{\xi }}}_{j,0})-{{\bf{A}}}_{j,{\mathcal{E}}}{\tau }_{j,{\mathcal{E}}}$$\end{document}g(ξ):=Gj,E(ξj,WΩB)+Kj,E(ξj-ξj,0)-Aj,Eτj,E
4\documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$${{\boldsymbol{\xi }}}_{j,k+1}={{\boldsymbol{\xi }}}_{j,k}-{{\bf{J}}}_{{\bf{g}}}^{-1}({{\boldsymbol{\xi }}}_{j}){\bf{g}}({{\boldsymbol{\xi }}}_{j})\,,$$\end{document}ξj,k+1=ξj,k-Jg-1(ξj)g(ξj),
Symbol | Definition
\documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$${\boldsymbol{\zeta }}={\left[{{\bf{p}}}_{{\mathcal{B}}}{{\mathbf{\Omega }}}_{{\mathcal{B}}}\right]}^{T}\in {\mathbb{SE}}(3)$$\end{document}ζ=[pBΩB]T∈SE(3) | Quadrotor configuration (pose)
\documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$${{\boldsymbol{\tau }}}_{{\mathcal{B}}}\in {{\mathbb{R}}}^{4}$$\end{document}τB∈R4 | Quadrotors control inputs.
\documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$${{\boldsymbol{\xi }}}_{j}={\left[{\xi }_{i,1}\ldots {\xi }_{i,3}\right]}^{T}\in {{\mathbb{R}}}^{3}$$\end{document}ξj=[ξi,1…ξi,3]T∈R3 | Joint angles of the j-th robotic finger.
\documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$${{\bf{M}}}_{j,{\mathcal{E}}}({{\boldsymbol{\xi }}}_{j}),\,{{\bf{C}}}_{j,{\mathcal{E}}}({{\boldsymbol{\xi }}}_{j},{\dot{{\boldsymbol{\xi }}}}_{j})\in {{\mathbb{R}}}^{3\times 3}$$\end{document}Mj,E(ξj),Cj,E(ξj,ξ°j)∈R3×3 | j-th robotic finger’s mass-and Coriolis matrix.
\documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$${{\bf{K}}}_{j,{\mathcal{E}}},{{\bf{D}}}_{j,{\mathcal{E}}}\in {{\mathbb{R}}}^{3\times 3}$$\end{document}Kj,E,Dj,E∈R3×3 | j-th robotic finger’s joint stiffness and damping matrices of the robotic finger.
\documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$${{\bf{G}}}_{j,{\mathcal{E}}}({{\boldsymbol{\xi }}}_{j}{,}^{{\mathcal{W}}}{{\mathbf{\Omega }}}_{{\mathcal{B}}})\in {{\mathbb{R}}}^{4\times 1}$$\end{document}Gj,E(ξj,WΩB)∈R4×1 | Gravity contribution to the j-th finger joint.
\documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$${{\bf{A}}}_{j,{\mathcal{E}}}\in {{\mathbb{R}}}^{4\times 1}$$\end{document}Aj,E∈R4×1, \documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$${\tau }_{j,{\mathcal{E}}}\in {\mathbb{R}}$$\end{document}τj,E∈R | j-th input matrix and tendon tension
\documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$${\mathcal{B}}{{\bf{p}}}_{{\mathcal{E}}}\in {{\mathbb{R}}}^{3}$$\end{document}BpE∈R3 | End-Effector (EE) position in \documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$${\mathcal{B}}$$\end{document}B as computed by the forward kinematics f(ξ).
\documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$${{\bf{J}}}_{{\mathcal{E}}}({\boldsymbol{\xi }})\in {{\mathbb{R}}}^{3\times 4}$$\end{document}JE(ξ)∈R3×4 | ξ-dependent EE Jacobian matrix.
\documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$${{\bf{J}}}_{{\mathcal{B}},{\mathcal{E}}}({\boldsymbol{\xi }})\in {{\mathbb{R}}}^{3\times 6}$$\end{document}JB,E(ξ)∈R3×6 | ξ-dependent contact Jacobian matrix for the base.
\documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$${\mathcal{C}}=\left[{{\mathcal{C}}}_{1}\,\cdots \,{{\mathcal{C}}}_{i}\right]\in {{\mathbb{B}}}^{9}$$\end{document}C=[C1⋯Ci]∈B9 | Vector of all binary contact signals.
\documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$${{\bf{f}}}_{{\mathcal{E}}}\in {{\mathbb{R}}}^{3}$$\end{document}fE∈R3 | External force at the EE.
\documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$${{\boldsymbol{\zeta }}}_{{\mathcal{T}}}={\left[{{\bf{p}}}_{{\mathcal{T}}}{{\mathbf{\Omega }}}_{{\mathcal{T}}}\right]}^{T}\in {\mathbb{SE}}(3)$$\end{document}ζT=[pTΩT]T∈SE(3) | Perching target pose
In order to obtain binary contact signals from each phalanx, we mount copper foil on each phalanx and connect it to a capacitive sensing board that measures raw capacitance. The distal phalanx of each finger carries foil on both front and back surfaces, forming a single contact interface, while the middle and proximal phalanges carry foil only on the front. This layout allows touch detection regardless of whether contact occurs inside or outside the hand’s grasp.
Contact is detected by deviations from each phalanx’s nominal capacitance: when touching a conductive object, the object becomes part of the capacitor and decreases the measured value. Thresholding this deviation yields a binary contact signal \documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$${{\mathcal{C}}}_{i}$$\end{document}Ci for each phalanx i, as shown in Fig. 2.
Rejecting contact disturbances
Intentional contact during perching can cause disturbances that may destabilize the vehicle. Instead of directly controlling interaction forces, we limit the approach velocity so that any resulting disturbance remains within the attitude controller’s rejection capability. Considering a worst-case impact, i.e., contact at maximum moment arm \documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$${r}_{\max }$$\end{document}rmax with velocity aligned to the contact normal, the disturbance torque is conservatively estimated aswhere m is vehicle mass, v is velocity, and Δ__t is the impact duration. To stay within the controller’s maximum rejectable torque _τ_ctrl, we choose the command velocity of the search pattern vector field at 1.0 m/s. In practice, the compliant structure of the fingers further reduces peak impact forces, making this bound conservative.
5\documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$${\tau }_{\max }\approx {r}_{\max }\frac{mv}{\Delta t},$$\end{document}τmax≈rmaxmvΔt,
Search pattern selection
The search pattern strongly influences perching performance, requiring a trade-off between mean time-to-contact and robustness to large pose estimate uncertainties, a trade-off between coverage completeness and path efficiency common in coverage-path-problems45.
We consider three patterns: sinusoidal, spiral, and square raster scan visualized in Fig. 7. The problem of choosing a search pattern can be understood by casting the task as a coverage-path-problem45: hereby the sinusoidal pattern is a dynamically feasible, smooth approximation of the optimal boustrophedonic (zigzag) pattern for covering a rectangular cell. Compared to the square raster, it covers the interior of the search region rather than only its perimeter; compared to the spiral, which, while dense, revisits intermediate radii and thus reaches large offsets slowly, it expands outward more rapidly, which leads us to select the sinusoidal pattern as the best compromise between success rate and perching time for the expected uncertainty of the target estimate.

Fig. 7: Visualization of the three search patterns considered in this work: sinusoidal, spiral, and square raster scan.The sinusoidal pattern provides a smooth, dynamically feasible trajectory approximating an optimal boustrophedonic (zigzag) sweep across the target area. The spiral pattern densely fills the search region by expanding outward in a continuous curve, while the square raster scan follows a back-and-forth path along the perimeter of the search region. These patterns each represent different trade-offs between coverage efficiency and robustness to pose uncertainty.
Simulation environment
The simulation environment used to evaluate the proposed tactile perching strategy closely approximates the physical system while enabling rapid Monte-Carlo analysis. The simulation is implemented in the Genesis World simulator42, which automatically generates a dynamic model from a Unified Robot Description Format (URDF) description of both the MAV and the gripper, that includes all effects of inertia and gravity and implements a quadratic penalty formulation for enforcing rigid-body constraints. The MAV is modeled as a six-DoF system, and each finger as a three-link kinematic chain actuated by a single tendon. Additionally to the standard dynamic model we further add tendon based actuation and joint stiffness. The total additional torque \documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$${\tau }_{i,j}^{* }$$\end{document}τi,j* acting on joint j of finger i is given bywhere r__i,j is the distance from the tendon mounting point to the joint axis, f__i is the tendon tension, K__i,j is the joint stiffness (equal for all joints and measured from the real system), ξ__i,j is the joint angle, and ξ__i,j,0 is the nominal joint angle for a fully closed finger. For each link the geometry is represented as a collection of primitive shapes that can make and break contact with the environment.
6\documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$${\tau }_{i,j}^{* }={r}_{i,j}{f}_{i}+{K}_{i,j}({\xi }_{i,j}-{\xi }_{i,j,0})$$\end{document}τi,j*=ri,jfi+Ki,j(ξi,j-ξi,j,0)
The simulation represents tactile sensing through the known contact forces: if a phalanx experiences a contact force above a threshold ϵ, the sensor outputs a binary contact signal indicating whether any portion of its geometry intersects with the environment. Low-level position, attitude, and rate control is handled by a standard cascaded controller. These controllers receive noisy measurements of position, orientation, and their corresponding velocities. Gaussian measurement noise is injected independently for each DoF to mimic the noise of a motion capture system as employed in the real system46. The noise terms for the i-th DoF, w__i, follow:The simulator uses a fixed-step integrator with a timestep of 0.01 s to execute the Monte-Carlo trials. For each trial, the MAV is initialized with zero attitude and placed at a uniformly sampled position on a plane at 0.25 m above the origin, spanning a 2 m × 2 m area. The full simulation implementation, including the URDF models and control pipeline, is publicly available in our repository(https://github.com/BioMorphic-Intelligence-Lab/feely_drone).
7\documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$${w}_{x},\,{w}_{y},\,{w}_{z} \sim {\mathcal{N}}\left(0,\,{(0.02{\rm{m}})}^{2}\right),\quad {w}_{{\rm{rot}}} \sim {\mathcal{N}}\left(0,\,{(1.{0}^{\circ })}^{2}\right),$$\end{document}wx,wy,wz~N(0,(0.02m)2),wrot~N(0,(1.0∘)2),
8\documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$${w}_{{v}_{x}},\,{w}_{{v}_{y}},\,{w}_{{v}_{z}} \sim {\mathcal{N}}\left(0,\,{(0.01{\rm{m}}/{\rm{s}})}^{2}\right),\quad {w}_{{v}_{{\rm{rot}}}} \sim {\mathcal{N}}\left(0,\,{(0.{1}^{\circ }/{\rm{s}})}^{2}\right).$$\end{document}wvx,wvy,wvz~N(0,(0.01m/s)2),wvrot~N(0,(0.1∘/s)2).