Abstract
How do you practice docking a spacecraft with the International Space Station or landing on Mars? With a room-sized cable-driven spacecraft motion simulator! In this project, you will build your own miniature, motorized version of a full-sized motion simulator scientists are developing that can move model spacecraft around in a controlled manner.
Summary
Previous Arduino experience is recommended. See our How to Use an Arduino page for tutorials.
A kit is available from our partner Home Science Tools®. See the Materials section for details.
No issues
Thanks to Ryan Caverly and James Flaten at the University of Minnesota for help developing this project.
Objective
Build a motorized cable-driven spacecraft motion simulator.
Introduction
Docking a spacecraft with the International Space Station (ISS) or landing it on another planet is hard. You only get one chance to get it right! Scientists can practice docking and landing maneuvers here on Earth using a spacecraft motion simulator, but it is difficult to move a large, heavy object around in three-dimensional space in Earth's gravity. One solution to this problem is to use a cable-driven simulator. The payload (spacecraft or other object) is suspended in the middle of a large, empty room by cables instead of a traditional robotic arm (which resembles a human arm with joints). These cables are attached to winches driven by powerful motors that can rapidly wind or unwind the cables. Watch this video for an example of a human-sized, cable-driven motion simulator:
By building artificial terrain on the floor or mounting a model docking port on the wall (Figure 1), scientists can use a cable-driven motion simulator to practice landing and docking maneuvers.

Designing these systems is complicated. For example, the motions of all of the motors must be synchronized so that two cables do not try to pull in opposite directions at the same time, and scientists must make sure the cables do not collide with each other or the spacecraft as they move around. In this project, you will start out with a simpler motorized system that only has three cables (Figure 2). That way, the three motors can move independently (one motor can spin while the other two hold still), and you do not have to worry about cable collisions. Your motors will each be controlled by two buttons (six total) that let you manually wind and unwind each cable. However, you can also pre-program automatic maneuvers. Can you practice steering your spacecraft manually and then design a program for an automatic landing or docking maneuver?

To do this project, you will need to understand how to use a continuous rotation servo motor with an Arduino. Continuous rotation servo motors are different from positional servo motors. Positional servo motors can rotate to a fixed angle between 0 and 180 degrees, and the Arduino allows you to control the angle. However, they cannot go through a full revolution or rotate continuously. Continuous rotation servo motors can rotate continuously in either direction, but the Arduino lets you control their speed, not their exact angle. This video further explains the difference between positional and continuous rotation servo motors:
This video walks you through using a continuous rotation servo with an Arduino:
We recommend starting this project with just three motors and three cables. If you want to add more, you need to understand the concept of degrees of freedom. An object's number of degrees of freedom determines how many independent motions it can make in different directions. Degrees of freedom can be translational (back and forth in a line) or rotational (rotating about an axis). For example:
- An object that is constrained to move back and forth on a rail, like a train, only has one degree of freedom. It cannot move sideways or up and down, and it cannot rotate at all. So, it has one translational degree of freedom and zero rotational degrees of freedom.
- An object that is constrained to slide around on a surface has three degrees of freedom. Imagine sliding a magnet around on a refrigerator or whiteboard. You can slide the magnet in two different directions: horizontal or vertical. Any diagonal motion can be done as a combination of these two motions, so the magnet has two translational degrees of freedom. The magnet also has one rotational degree of freedom. You can twist it about a single axis, but in order to remain flat against the surface, it cannot rotate about the other two axes. The magnet has three degrees of freedom in total.
- An object that is free to move in three-dimensional space has six degrees of freedom: three translational (typically called X, Y, and Z) and three rotational (typically called roll, pitch, and yaw). Flying objects like birds and helicopters have six degrees of freedom.
Terms and Concepts
- Motion simulator
- Cable-driven
- Payload
- Winch
- Continuous rotation servo motor
- Positional servo motor
- Degrees of freedom
- Translational
- Rotational
Questions
- What are the differences between a cable-driven robotic system or simulator and a "traditional" robotic arm?
- What are some advantages and disadvantages of cable-driven systems?
- How could you synchronize motions between three motors to control your model spacecraft's motion? For example, what happens if you unwind all three cables at once?
Bibliography
- Adams, D. et. al. (2023, January 23). Entry, Descent, and Landing GN&C System Evaluation via Cable-Driven Emulation Robotics. AIAA SciTech Forum 2023. Retrieved December 11, 2024
- Science Buddies (n.d.). The Engineering Design Process. Retrieved December 11, 2024
Materials and Equipment 
Recommended Project Supplies
- Materials to construct the frame and cable system
- 1/2" diameter PVC pipe (12 feet total - you can purchase smaller pieces; they will be cut into 12 one-foot pieces)
- 3-way PVC 90° elbow connectors (8)
- Small screw eyes (at least 3)
- String (at least 10 feet). String that will glide smoothly will work better than rough material like twine or yarn. Diameter must be small enough to fit through your screw eyes and tie to your model spacecraft.
- Tape measure
- An object to use as your spacecraft that you can tie, tape, or glue strings to, or materials to build one (building toys such as LEGO® or K'Nex®, etc.)
- An object or surface for your spacecraft to land on or "dock" with, such as a target drawn on a piece of paper or the side of a cardboard box
- Wooden dowel to make spools for the string, approximately 1/2 inch diameter and at least 3 inches long
- Cardboard
- Saw for cutting PVC pipe and wooden dowel
- Scissors
- Hot glue gun
- Drill with drill bits
- Small eyeglass or jewelry screwdriver set
- Electronics
-
Electronics Kit for Arduino, available from our partner Home Science Tools®.
- Note: This project will work with the Arduino UNO R3, UNO R4 Minima, UNO R4 WiFi, and compatible third-party boards.
- Continuous rotation servo motors (at least 3). Make sure you buy continuous rotation servo motors
- Additional pushbuttons (the Science Buddies kit comes with two; you need at least six)
- Servo extension cables
- Male-male header pins
-
Electronics Kit for Arduino, available from our partner Home Science Tools®.
- Windows or Mac computer. See this page if you have a Chromebook. Your computer will need:
- Access to the Arduino IDE, either installed local version or web-based editor. Watch this video for a comparison of the two options.
- USB port. The Science Buddies kit comes with a USB-A to C cable. The "C" end plugs into the Arduino, and the "A" end plugs into your computer. You will need an adapter or different cable if your computer only has USB-C ports. Watch this video to learn about the different types of cables and adapters.
Disclaimer: Science Buddies participates in affiliate programs with Home Science Tools®, Amazon.com, Carolina Biological, and Jameco Electronics. Proceeds from the affiliate programs help support Science Buddies, a 501(c)(3) public charity, and keep our resources free for everyone. Our top priority is student learning. If you have any comments (positive or negative) related to purchases you've made for science projects from recommendations on our site, please let us know. Write to us at [email protected].
Experimental Procedure

- Follow the instructions in the procedure of the Make a Spacecraft Motion Simulator! project. That project will show you how to build a PVC pipe frame, run cables through screw eyes attached to the frame, and use the cables to control your model spacecraft manually. In this project, you will add motors to control the spacecraft either with buttons or automatically.
- Prototype your Arduino circuit before you connect your motors to the frame and cables. This will make it easier to ensure that everything works. Assemble the circuit as shown in Figures 3 and 4. You can also access a Tinkercad Circuits model of the circuit here.
- Put six buttons in the breadboard.
- Make sure the buttons straddle the gap in the middle of the breadboard.
- Use a short jumper wire to connect one pin from each button (the bottom left pins in Figure 3) to the breadboard's ground (-) bus.
- Use a longer jumper wire to connect one pin from each button (the top left pins in Figure 3) to Arduino pins 2-7 as shown.
- Connect the three servo motors.
- Use the male-male header pins to connect the servo motor cables to the breadboard. Make sure each pin goes into a different row.
- Use a short jumper wire to connect each servo's brown (ground) wire to the breadboard's ground (-) bus.
- Use a short jumper wire to connect each servo's red (power) wire to the breadboard's power (+) bus.
- Use a longer jumper wire to connect each servo's orange (signal) wire to Arduino pins 8-10 as shown.
- Connect power to the breadboard.
- Connect one of the Arduino's GND pins to the breadboard's ground (-) bus.
- Connect the Arduino's 5V pin to the breadboard's power (+) bus.
- Put six buttons in the breadboard.


- Test your circuit.
- Download our servo control example code or copy and paste the code from Tinkercad into the Arduino IDE.
- Read through the commented code so you understand how it works.
- Connect the Arduino to your computer with the USB cable. Make sure you have the proper board selected in the IDE; then upload the code.
- When none of the buttons are pressed, none of the servo motors should spin. If you notice one or more of the servos spinning slowly, use a small screwdriver to slowly turn the adjustment screw on the bottom of the servo (Figure 5). This screw helps you calibrate the servo's neutral position so it will not move. This adjustment is important to make sure your spacecraft does not drift around slowly when you are not pressing the buttons.
- Try pressing each button one at a time. Make sure you can make each motor spin in both directions. If any of the buttons do not work, carefully double-check all of your wiring.
- By default, the motors are set to run at full speed. This may be too fast to easily control your spacecraft. Look at the code and notice how you can make the
forwardspeedandbackwardspeedvariables closer to 90 to slow the motors down. For example, to slow the motors down slightly, you could change the values from 180 to 175 and from 0 to 5 respectively. If you do not understand how this works, go back and review the videos about continuous servos in the introduction.

- Connect your servos to your cable-driven assembly.
- Build a winch to hold the string for each servo. Figure 6 shows an example.
- Attach a servo horn to the servo's shaft.
- Cut a short piece (about 1 inch long) of a wooden dowel.
- Drill a hole radially through the center of the dowel.
- Glue one end of the dowel to the servo horn.
- Cut a small circle from cardboard and glue it to the other end of the dowel (this prevents the string from sliding off).
- Cut a piece of string about 2 feet long. The exact length will depend on the size of your frame, but it should at least be long enough to go from the servo, up through a screw eye, and down to the far side of the frame.
- Pass one end of the string through the hole you drilled in the wooden dowel, loop the string around, and tie it in a knot to secure the string to the dowel.
- Use hot glue to attach the servos to the frame (Figure 7). One servo should be positioned at the bottom of the frame below each of the three screw eyes you will use (refer back to Figure 2).
- Pass the free ends of each string through one of the screw eyes, and tie them to your model spacecraft.
- Manually wind any excess string around each spool so all the strings are tight.
- Build a winch to hold the string for each servo. Figure 6 shows an example.


- Try controlling your model spacecraft's motion with buttons.
- Hold down each button one at a time. Confirm that the motors spin in the correct directions and that you know which button tightens each cable and which button loosens it.
- If you want to reverse the behavior of a pair of buttons for one motor, unwind the string completely from the spool, and then wind it in the opposite direction.
- Try holding the buttons down in pairs.
- What happens if you tighten two cables at once?
- What happens if you loosen two cables at once?
- What happens if you tighten one cable while loosening another?
- Try holding three buttons down at a time.
- What happens if you tighten all three cables at once?
- What happens if you loosen all three cables at once?
- What happens if you try a combination of tightening and loosening cables at the same time?
- Now for the challenging part: based on your observations in step 5, can you write a new program that makes your model spacecraft follow a pre-programmed path by automatically controlling the motors? You will need to figure out how to do this part of the project on your own - Science Buddies will not provide the code! Here are some suggestions, roughly in order of increasing difficulty:
- Start by simulating a vertical landing maneuver. Start your spacecraft in the top center area of your frame with all strings tightened equally. Can you make your spacecraft move straight down to land gently on the surface?
- Try a more complicated landing maneuver. Can you make your spacecraft land off-center, closer to one side of the frame?
- Try a horizontal docking maneuver. Can you make your spacecraft move horizontally from one side of the frame to the other without moving up or down?
- Can you simulate an "orbit" and make your spacecraft move in a continuous circular or elliptical path, or trace out another shape in midair?
Ask an Expert
Global Goals
The United Nations Sustainable Development Goals (UNSDGs) are a blueprint to achieve a better and more sustainable future for all.
Variations
- Can you add more motors to control more degrees of freedom? Be careful - as you add more motors, you may need to automatically loosen some strings as you pull on others, or else the motors will be pulling against each other. You may want to practice moving your spacecraft manually first with additional strings and screw eyes before you try using more motors.
- Can you use stepper motors instead of continuous rotation servo motors? Unlike continuous rotation servo motors, stepper motors can rotate continuously and you can control their exact angle. You will need to look up instructions for using stepper motors with Arduino.
Careers
If you like this project, you might enjoy exploring these related careers:
Contact Us
Our kits are developed in partnership with Home Science Tools®. If you have purchased a kit for this project, Home Science Tools® is pleased to answer any questions.In your email, please follow these instructions:
- Include your Home Science Tools® order number.
- Please describe how you need help as thoroughly as possible:
Examples
Good Question I'm trying to do Experimental Procedure step #5, "Scrape the insulation from the wire. . ." How do I know when I've scraped enough?
Good Question I'm at Experimental Procedure step #7, "Move the magnet back and forth . . ." and the LED is not lighting up.
Bad Question I don't understand the instructions. Help!
Good Question I am purchasing my materials. Can I substitute a 1N34 diode for the 1N25 diode called for in the material list?
Bad Question Can I use a different part?
Contact Support














