2026-Group 4


Caption:
Put a representative image
of your project here.

PickSense: A Haptic Lock-Picking Simulator

Project team members: Serena Liu, Liwen Fan, Run Shi, Chia-Ling Weng

Give a one-paragraph description/summary of the project, which includes information like the motivation for the project, the goals of the project, and the resulting implementation and success of the project.

Introduction

Lock picking is a highly tactile task that depends on subtle variations in force and stiffness rather than visual feedback. Inspired by this interaction, our project explores how haptic feedback can be used to recreate the experience of manipulating a pin tumbler lock in a virtual environment. The goal of this project is to design and implement a haptic lock-picking simulator that allows users to feel different pin resistances and interact with a simulated lock through real-time force feedback and visualization.

The system uses two degrees of freedom: insertion depth of the pick to select pins and rotational tilt of the pick to lift them. Each virtual pin is modeled with a different spring stiffness and target height, allowing the user to experience varying resistance while interacting with the lock. The project combines mechanical design, embedded sensing, haptic rendering, and graphical simulation into a single interactive platform. Through this project, we aim to demonstrate how haptic devices can create immersive and intuitive interactions for virtual mechanical systems.

Background

In force-feedback systems, user motion is measured and used to compute a response force from a virtual environment model. This is especially useful for tasks that require fine tool manipulation, where users rely on small changes in resistance to guide their motion.

Our project applies this idea to a pin-tumbler lock simulation. The lock pick is modeled as a tool that interacts with four virtual pin stacks, each with a different spring stiffness. As the user inserts and tilts the pick, the system renders continuous resistance from the active pin and discrete vibration cues when a pin is set or when the lock opens. Prior haptics work shows that combining kinesthetic feedback, tactile cues, and visual feedback can help users interpret hidden mechanical states during interactive tasks.

In this project, the 2D visualization displays the pick position, pin height, spring compression, and lock state in real time. The visual interface supports the haptic feedback by making the internal lock mechanism understandable to the user.

Methods

Provide a detailed description of your project, such that another student from the class could generally re-create your project/experiment from the report if necessary. (You don't need to document every screw, but the design should be clear.) Add images and videos as needed to support the description. You can refer to downloadable drawings and code in the "Files" section (later). You should divide this section into subsections, which can vary depending on your particular project. Here is an example set of subsections:

Hardware Design and Implementation

System Analysis and Control

Demonstration / Application

Results

Describe the results, which may include qualitative responses from users at the open house.

Future Work

Describe how your system could be tested (e.g., through experiments if you have not already done so), how it can be improved, and how it might be applied.

Acknowledgments

Here you can list any individuals or groups who helped you with your project. (e.g., another student in the class, a course assistant, or an especially helpful PRL TA). Optional, so delete this section if you aren't using it.

Files

Code and drawings should be linked here. You should be able to upload these using the Attach command. If you aren't willing to share these data on a public site, please discuss with the instructor. Also, in this section include a link to a file with a list of major components and their approximate costs.

References

List the referenced literature, websites, etc. here.


Appendix: Project Checkpoints

Checkpoint 1

Here you will write a few paragraphs about what you accomplished in the project so far. Include the checkpoint goals and describe which goals were met (and how), which were not (what were the challenges?), and any change of plans for the project based on what you learned. Include images and/or drawings where appropriate, using a command like this:

Goals:

1. Select the specific mechanism for horizontal movement (Rail vs. Capstan) and begin the 3D design of the pick handle and housing.

2. Order all necessary hardware components; begin 3D printing finalized structural components.

3. Write Pseudo-code for virtual lock picking and complete preliminary visualization.

4. Develop pipline to integrate visual, firmware and user interacition. Write the forward kinematics code to translate raw encoder counts from the 2-DOF setup into real-time Cartesian coordinates (x, y) for the virtual pick.

Goals met: 1. Deveop overall design and calculations of the whole pipeline:

2. Hardware setup: Here is the initial prototype we have developed, selecting a linear rail mechanism for horizontal x travel after evaluating the trade-offs against a capstan-based design. For vertical y displacement, we are utilizing a motor integrated with an encoder to provide high-resolution position feedback. Currently, we are finalizing the CAD models for the interface brackets and motor mounts to ensure a robust connection across the entire mechanical system.

3. Pseudo-code The user moves the pick inward or outward to position it under one of the pins, then tilts the pick up or down to lift that pin. Each pin is modeled as a spring with a different stiffness, so the user feels different resistance depending on which pin they are lifting. The visualization updates in real time to show the pick position, pin heights, and lock state. Once all 3–4 pins are lifted to their target heights, the lock unlocks.

loop() {

    // 1. Read pick motion
    pick_depth = read_in_out_position();   // selects pin
    pick_angle = read_tilt_angle();        // pushes pin up/down
    pick_angular_velocity = derivative(pick_angle);

    // 2. Select pin based on insertion depth
    current_pin = map_depth_to_pin(pick_depth);

    // 3. Convert pick tilt to vertical pin lift
    pin_lift = pick_length * sin(pick_angle);

    // 4. Update selected pin
    if (current_pin exists)
    {
        pin_height[current_pin] = max(0, pin_lift);

        if (pin_height[current_pin] >= target_height[current_pin])
        {
            pin_state[current_pin] = SET;
            trigger_click_vibration();
        }
    }

    // 5. Render stiffness feedback
    if (current_pin exists)
    {
        k = spring_k[current_pin];

        torque_feedback =
            -k * pin_height[current_pin] * pick_length
            - damping * pick_angular_velocity;
    }
    else
    {
        torque_feedback = 0;
    }

    // 6. Unlock condition
    if (all_pins_SET())
    {
        lock_state = UNLOCKED;
        trigger_unlock_feedback();
    }

    // 7. Output haptics + visuals
    output_pick_torque(torque_feedback);
    update_visualization(
        pick_depth,
        pick_angle,
        pin_height[],
        pin_state[],
        lock_state
    );

}

Preliminary Visualization

Next steps:

  1. Finalize the CAD design and 3D print the necessary mechanical parts for the lock-picking simulator.
  2. Assemble the physical system, including the pick mechanism, pin modules, sensors, and motorized haptic feedback components.
  3. Improve visual simulation interface with better UI and feedback, including real-time rendering of:
    • pick position and angle
    • pin heights
    • pin states (unset/set)
    • lock status (locked/unlocked)
  4. Tune the control parameters and force feedback for a stable and realistic interaction.

Checkpoint 2

Here you will write a few paragraphs about what you accomplished in the project so far. Include the checkpoint goals and describe which goals were met (and how), which were not (what were the challenges?), and any change of plans for the project based on what you learned. Include images and/or drawings where appropriate.

Example Video: https://www.youtube.com/watch?v=i_aLBql4Ufo