Climbing Robot

Climbing Robot

This is a fun little 3D print that might be interesting for newcomers to the 3D printing game. The design is based on the mechanical principle of a traditional wooden toy that lets the robot climb up the string if you pull on it.

Parts List

The STL files are available for download here on github.

Besides the printed parts you will need an elastic band and the robots “rope”.
The elastic band is one as used in textile work. A normal rubber band might work too but is not as long lasting. The band can’t be wider than 5mm (0.19 in) and thicker than 1mm (0.04 in).
For the rope not everything will work as the correct amount of friction in the robots “hand” is crucial for the climbing action to work. The model is optimised for a ca. 3mm (0.1 in) string. There are two versions of the clamp the tighter one should work with a ca. 2mm string. From my experience a braided string works best.

Additional materials

Printing

The model is optimised for printing with a 0.4mm nozzle. The sloped surfaces look best with a 0.2 layer height but larger layer height wont be a problem. Most of the models parts are optimised for printing without support and all are oriented correctly in the STL files for optimal printing.
The following parts need extended settings.

STLsupportbrim
body-lx
body-rx
arm-lx
arm-rx
headx

Assembly

The video above contains step by step assembly instructions.

If you printer is tuned to produce precise dimensioned part the robot should friction fit together without glue. Otherwise just use glue or tune up the fit with a file or sanding paper if the parts are too large.

Explosion dagram
  1. Clean out all supports.
  2. Feed the elastic band through the slot in the axis. Tie a knot and let it slip into the hole in the center.
  3. Break apart the three dowel pins and push them into the holes in the left body half.
  4. Press the shoe into the left leg.
  5. Place the left body over the left leg. Press the axis into the leg leaving the hole along the center of the axis pointing outwards. The slot that excepts the elastic band should point exactly upwards away from the foot.
  6. Press the right body onto the left. Make sure to wrap the the elastic band around the axis and place it in the slot so that it is not clamped between the two body halves. Check also the explosion diagram in the video for reference. The axis should be able to rotate freely in the body.
  7. Press the leg connector into the left leg.
  8. Press the right leg onto the axis and the parts connected to the left leg.
  9. Feed the elastic band through the head and secure it with a knot. Make sure to stretch the band far enough so that the legs springs back completely when you let it go.
  10. Press the left arm into the body.
  11. Assemble the clamp. Feed the string through it and plug it into the left arm. Make sure that it aligns as shown in the explosion diagram.
  12. Attach the right arm to the body and clamp.
  13. Close the hole in the head with the cap.

Tuning the clamping mechanism

In general the clamp should clamp just hard enough to hold up the robots own weight. Use a round file to smooth the bottom of the groove the rope runs through in clamp-p1.stl’ to remove all the printing striations. Apart from that it’s important that the hole through the “shoe” is large and smooth enough to let the rope slide through without friction. A good way to achieve this is to bore out the hole with a fitting drill. I chose a 3.5mm drill for the 3mm rope I used.

You’re done. Have fun

Ergonomic Hacksaw Grip

I designed this 3d-printable hacksaw grip that accepts a standard 12mm / 1/2 inch wide metal hacksaw blade. It’s very useful to get into small spaces and for flush cutoffs. Last but not least it allows to recycle broken or partially worn blades.

The blade is mounted best to cut in pull direction like a Japanese wood saw, this helps to straighten the blade while cutting.

The STLs are on thingiverse, Fusion360 sources on github.

OctoPrint Plugin for Klipper

I made a OctoPrint plugin for the Klipper 3D printer firmware. It’s on GitHub at: github.com/mmone/OctoprintKlipperPlugin.

Features so far:
  • Simplified connection dialog.
  • Restart Host and MCU processes.
  • User definable macro buttons with optional parameter dialogs.
  • Assisted bed leveling wizard with user definable probe points.
  • Dialog to set a coordinate offset for future GCODE move commands.
  • PID Tuning Dialog.
  • Message log displaying messages from Klipper prepended with “//” and “!!”.
  • Basic Klipper configuration editor.
  • Performance graph displaying key parameters extracted from the Klipper logs.

Installation

Access the Plugin Manager by clicking the wrench icon in the header. This opens the OctoPrint settings. Select “Plugin Manager” in the sidebar. Search for “Klipper” and click the “Install” button.

or install  manually using this URL:
https://github.com/mmone/OctoPrintKlipper/archive/master.zip

Update

OctoPrint will inform you when a new version of this plugin becomes available.

Some screenshots:

Open Source Brushless Servo

The odrive is a open source high performance brushless servo platform based on RC BLDC motors. Great Stuff!

Key Specs

  • Two motor channels.
  • 24V, designed for more than 100A peak current.
    • 48V version just released.
  • DC-DC converter, for brake resistor or energy storage.
  • Encoder feedback for arbitrarily precise movements.
  • Supports power regeneration.
  • Optional use of a high power density battery means you can achieve >1kW peak power output with only a modest power supply.
  • Open source: HardwareSoftware

Interfaces

  • USB Serial port — PC, BeagleBone, RaspberryPi, etc.
  • CAN — CANOpen and CiA 402 is a possibility.
  • UART — Arduino, mBed, etc.
  • PWM — RC Recievers, Arduino, etc.
  • Step/direction — Existing motion controllers
  • Some general purpose digital and analogue pins

Protocols

  • Many types of command modes
    • Goto (position control with trajectory planning)
    • Position commands
    • Velocity command
    • Torque command

HowTo Enable the RaspiCam in Octoprint

First, if you haven’t already, activate the camera in raspi-config. Login via SSH type “sudo raspi-config” select “Interfacing Options” and enable the camera.

Configuring the camera

Now edit “sudo nano /boot/octopi.txt” uncomment the camera=”auto” line and change it to camera=”raspi”. Uncomment camera_raspi_options=”-fps 10″. These settings configure the camera to provide and image in the format 640×480@10fps. If you would like to change that check the available options in the official forum: discourse.octoprint.org/t/available-mjpg-streamer-configuration-options

Enabling the camera in the octoprint browser interface

In the browser click on the little wrench in the top bar to open the settings dialog. Select “Webcam & Timelapse”. Set the “Stream URL” parameter to “http://octopi.local:8080/?action=stream”. Obviously change the hostname if you have configured it to something different.

Finally restart octoprint for the changes to take effect.

HowTo build the Marlin 3D Printer Firmware on the Raspberry Pi

If you are already running the excellent octoprint as a printserver on a Raspberry Pi it is very convenient to also build Marlin on it.

I made a script that sets up the necessary build environment and provides commands for building and uploading. It uses the official Arduino toolchain. Everything is standalone, nothing is installed outside the marlintool directory.

Code

here on github: https://github.com/mmone/marlintool

or download directly as a zip: https://github.com/mmone/marlintool/archive/master.zip

Build configuration

Before first use: Rename the marlintool.params.example file to “marlintool.params”

In its default configuration the script is setup to build the official “Marlin” firmware  but can be easily reconfigured to build any Marlin variant.

Several additional parameters in the “marlintool.params” file allow to adapt the script to your needs.

parameter description
marlinRepositoryUrl The marlin git repository.
marlinRepositoryBranch The branch of the configured repo to use.
marlinDependencies A list of dependencies to download in the format:
[name],[repo url],[library directory](optional).
A library directory should only be specified if the library is not in the root of the repository.
hardwareDefinitionRepo If you build for the Anet board this downloads the necessary hardware definition for the Arduino build environment. If you dont need this set it to an empty string.
boardString The Anet board identifier.
arduinoToolchainVersion The Arduino toolchain version to use. The build platform and architecture are auto detected. At the moment Linux 32 Bit, 64 Bit, ARM and OS X are supported.
port The serialport to use for uploading.
arduinoDir Where to put the Arduino toolchain.
marlinDir Where to checkout Marlin sources.
buildDir The build directory.

Reminder: If you are running octopi on you Raspberry you need to disconnect it from your printer before uploading, otherwise the serial port is blocked.

Note: On OS X due to how the Arduino toolchain is packaged the Arduino splash screen will be displayed even when the toolchain is used from the commandline. This will cause the terminal window you launch marlintool from to lose focus. It also means that a build cannot be launched from a remote ssh session.

Building for Anet Hardware

If you are building the firmware for the Anet A6/A8 you can find suitable example configurations in the Marlin sources at: github.com/MarlinFirmware/Marlin/tree/1.1.x/Marlin/example_configurations/Anet. Just replace the “Configuration.h” and “Configuration_adv.h” in the marlin directory with the files your find there for a good starting point of your configuration.

 

Commandline parameters

-s  — setup

Download and configure the toolchain and the necessary libraries for building Marlin. Also fetches the Anet board hardware definition from github if specified.

-m  — marlin

Download Marlin sources.

-f –fetch

Update an existing Marlin clone.

-v  — verify

Build without uploading.

-u  — upload

Build and upload Marlin. If you are running octopi on you Raspberry you need to disconnect it before uploading otherwise the serial port is blocked.

-b  –backupConfig  [name]

Backup the Marlin configuration to the named backup.

-r  –restoreConfig [name]

Restore the given configuration into the Marlin directory.

-c  — clean

Cleanup everything. Remove Marlin sources and Arduino toolchain.

-p  — port [port]

Set the serialport for uploading the firmware. Overrides the default set in the script.

-h  — help

Show help.

Browserbased 3D CAD

coffeescad.org. is a parametric 3D CAD solution for the web browser powered by coffee script. It’s currently in its early development stages. Still interesting if you think of online 3D printing.

Another CAD solution for the browser is the javascript based openjscad.