Skip to content

01binary/str1ker

Repository files navigation

Str1ker: The Drumming Mech

This repository contains source code, mechanical parts, and printed circuit boards for Str1ker drumming robot.

body

Overview

Striker is a human-scale teleoperated mech built with metal casting, CNC machining, 3D printing, sheet metal parts, tube frame chassis, and pre-made components.

This open-source educational project features custom electronics and Robot Operating System integration, demonstrating how to design and build a large robot that combines mobility, sensing, and manipulation.

The robot moves on a mecanum base, articulates its head and arms, and visualizes live lidar and RGB-D perception in Robot Visualization tool (RViz).

The arms terminate in percussive end-effectors, designed for future live drum performance.

More details on my blog and media on instagram. Say hello at the next Portland Area Robotics Society monthly meetup!

Details

Mechanical Design

Autodesk Inventor mechanical parts available in ./cad.

mechanical

Electrical Design

KiCad schematics and boards available in ./boards.

pcb

Fabrication

The arms were cast out of Aluminum 356 in the metal foundry at Ctrl^H Hackerspace and welded together by skorndaap, then polished.

casting

arm

Tube frame chassis welding by skorndaap.

aframem

The CNC, sheet metal, tube frame, and 3D-printed parts were ordered from Xometry online service.

cnc

sheet metal

The PCB's were ordered from JLCPCB using JLCPCB KiCad plugin.

electrical

Pre-made components sourced from GoBilda, Pololu, McMaster-Carr, Robot Shop, and Amazon.

Software

Hardware

System Requirements

The high-level controllers (Ubuntu 20.04/ROS Noetic) can run on any mini PC, NUC, a low-end Single Board Computer (SBC) like Raspberry Pi or a high-end SBC like Latte Panda 3 Delta.

The low-level serial nodes that run motors and sensors were designed for Arduino Mega, and are currently being ported to Teensy 4.0 because its more powerful specs make it a better choice for robotics.

Teleoperation and simulation requires 3D visualization software like RViz and Gazebo, which like NVidia cards.

Setup

Follow the official guide to install ROS Noetic and configure the ROS environment.

Clone the projects:

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src

git clone https://github.com/01binary/str1ker.git
git clone https://github.com/01binary/str1ker_moveit_config.git

cd ./str1ker
git sparse-checkout init --cone
git sparse-checkout set .vscode src config launch description msg

Install Packages from Source

Follow the official guide to build MoveIt from source using catkin_ws as the workspace name instead of moveit_ws.

Prepare Gazebo plugins to be built from source:

cd ~/catkin_ws/src
git clone https://github.com/roboticsgroup/roboticsgroup_gazebo_plugins

Install Packages

cd ~/catkin_ws/src
rosdep install -y --from-paths . --ignore-src --rosdistro noetic

Build

To invoke the build command while in ~/catkin_ws use catkin_make with no parameters. Otherwise use -C to specify the workspace directory:

catkin_make -C ~/catkin_ws

To build only this package and its dependencies:

catkin_make --only-pkg-with-deps str1ker

To build only this package:

catkin_make --pkg str1ker

To clear the build filter:

catkin_make -DCATKIN_WHITELIST_PACKAGES=""

To switch between Debug and Release

catkin_make -DCMAKE_BUILD_TYPE=Debug | Release

Environment

One-time setup after the first build.

catkin_make install
source /opt/ros/noetic/setup.bash

echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc

Upload

The low-level hardware is handled by an Arduino ROS node in src/drivers/arm.ino.

To build it, first generate ROS message headers for Arduino:

sudo apt-get install ros-${ROS_DISTRO}-rosserial-arduino
sudo apt-get install ros-${ROS_DISTRO}-rosserial

rosrun rosserial_arduino make_libraries.py ~/Arduino/libraries

If you installed Arduino IDE as a snap plugin, Arduino libraries are likely in ~/snap/arduino (the exact location is specific to your system).

Compile and upload the ROS node. The default launch configuration in robot.launch will connect to /dev/ttyACM0 automatically.

VSCode + Arduino CLI

This workspace includes VSCode tasks for compiling and uploading the Teensy firmware without Arduino IDE 2.

Install arduino-cli:

curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | BINDIR="$HOME/.local/bin" sh
arduino-cli version

Then in VSCode:

  1. Open the Command Palette and run C/C++: Select a Configuration...
  2. Pick Arduino Teensy 4.0
  3. Run Tasks: Run Task
  4. Use Arduino: Compile Arm or Arduino: Upload Arm

The checked-in VSCode configuration targets teensy:avr:teensy40 on /dev/ttyACM0 and uses the PJRC package index through .vscode/arduino-cli.yaml.

Launch

Hardware

To launch only the serial bridge to the arm firmware:

roslaunch str1ker hardware.launch

Controllers

To launch ROS control nodes (URDF + controllers + state publisher):

roslaunch str1ker controllers.launch

Full Stack

To launch both high-level and low-level nodes:

roslaunch str1ker robot.launch

PrimeSense Carmine 1.09

To launch Carmine with OpenNI2 (recommended on ROS Noetic):

roslaunch str1ker vision.launch

To use legacy OpenNI instead:

roslaunch str1ker vision.launch use_openni2:=false

Laser Scanner (Hokuyo UTM-30LX)

Install the Hokuyo ROS driver:

sudo apt-get install -y ros-${ROS_DISTRO}-urg-node

The default launch path uses the stable built-in udev symlink under /dev/serial/by-id.

If you still want a custom short alias (for example /dev/str1ker_laser), create one with:

# Example when Hokuyo appears as /dev/ttyACM0
./scripts/alias.sh /dev/ttyACM0 str1ker_laser --install

To launch the laser scanner driver:

roslaunch str1ker laserscan.launch

If you want to bypass by-id and use the current kernel device path:

roslaunch str1ker laserscan.launch serial_port:=/dev/ttyACM0

Teleoperation

To teleoperate the robot:

roslaunch str1ker_moveit_config demo.launch

Simulation

To simulate the robot:

roslaunch str1ker_moveit_config gazebo.launch

Configuration

The low-level configuration is in YAML format at config.

To launch the MoveIt wizard for custom robot arm setup:

roslaunch moveit_setup_assistant setup_assistant.launch

Logging

Logging level can be specified in $ROS_ROOT/config/rosconsole.config, either globally or for a specific package.

About

MIDI Drumming Robot

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors