The TROLLER 1D Prototype

The TROLLER 1D is the current prototype version and the result of a successful Kickstarter effort.  This page will continue to document the ongoing development of the TROLLER robot project.  For background info about this new type of robot project, checkout the TROLLER 1D project on Kickstarter.

Spring 2013

Below is video showing a test of the prototype TROLLER 1D!  The robot changes the angles of each link to become an oval shape, and then performs a ‘TreadRoll’, while maintaining the angles between links

The motor & hardware has room for improvement in the future.  Additional concepts will be further reviewed before the next iteration is started.

The hardware is now fully functional and software development will continue over the next year.




Electrical & Controls


The TROLLER 1D Uses the following components:

· Mega Pro (Arduino) - Main Processor

· Pololu Maestro - Servo Controller

· Pololu Wixel Pair - Wireless Communication


I did some research and comparison into wireless options (WiFi, BlueTooth & Wixel) and decided to try out a Wixel pair.  For less than $50,  I easily added the ability to wirelessly reprogram my Arduino, and also have high-speed serial communication to a host PC with a USB port.  So far the Wixel is working great!


The Maestro Servo Controller is also reasonably priced for it’s capabilities,  the small controller offloads the motion tasks so the Mega can focus on controlling the whole thing.  Motion sensing will be added into the mix at some point too.


Example code for an Arduino communicating with a Maestro can be found here:






















TROLLER 1D—Development Code


Developed in Arduino IDE, Version 1.0.1.


Download TROLLER 1D Development Code: Download INO File Here


Additional Arduino libraries are required: Download Libraries Here

                                       (place these in: your_path/arduino-1.0.1/library folder)





The current version of code uses a command messenger & serial interface to send commands to The TROLLER (wirelessly).  Basic functions like trimming/reversing the servos, can be saved in the Arduino’s EEPROM.  Support for three distributed Maestro controllers is included.  Some rudimentary Motion Algorithms are being developed. 






List of commands and descriptions for the Serial Command Messenger to control the TROLLER 1D


  dispIMUdata,                      // 4 - command to toggle Display of IMU data (Format: 4; Example Type "4;<enter/Send>")

  SetRev,                               // 5 - command to set Servo Reversing for a servo (Format: 5,Servo#,0or1;  Example: "5,1,1;")

  setTrim,                              // 6 - command to set Servo Trim for a servo (Format: 6,Servo#,0-500;  Example: "6,13,226;")

  setAllTargets,                     // 7 - Set All servos to value passed to it.  (Format: 7,-45 to 45 deg;  Example: "7,-10;")

  setServoTarget,                   // 8 - Set a servo to value passed to it.  (Format: 8,Servo#,-45 to 45 deg;  Example: "8,4,-10;")

  setAllSpd,                           // 9 - Set Speed of ALL servos (Format: 9,0-255;  Example: "9,60;")

  setSpd,                                // 10 - Set Speed of a servo (Format: 10,Servo#,0-255;  Example: "10,0,60;")

  setAllAcc,                           // 11 - Set Accels of ALL servos (Format: 11,0-255;  Example: "11,60;")

  setAcc,                                // 12 - Set Accels of a servo (Format: 12,Servo#,0-255;  Example: "12,0,60;") 

  SaveServoData,                 // 13 - Saves the Servo Data to the EEPROM (Format: 13; Example Type "13;<enter/Send>") 

  LoadServoData,                 // 14 - Reloads the Servo Data from the EEPROM (Format: 14; Example Type "14;<enter>")   

  RunMotionSeq,                  // 15 - Runs a predefined motion sequences (Format: 15,0-255;  Example: "15,3;") 

  dispCMDlist,                      // 16 - Displays a list of valid command & numbers (use "16;")

  ResetMaestro,                    // 17 - Issues pulse to reset the Maestro's (optional, if wired)

  GetMovingStatus,              // 18 - Reads back Moving Status data from Maestro

  GetPos,                               // 19 - Reads back position data from Maestro

  chngTimer,                         // 20 - Used to set timer value (for testing)

  chngTimer2,                       // 21 - Used to set timer value (for testing) 

  chngeRange,                      // 22 -  Used to change limit ranges (for testing)




Below are the connection diagrams for the Master Control  Link Unit & Slave Servo Drive Like Unit. 


Download as PDF


Mechanical Design


Download/View the TROLLER Assembly Guide:


TROLLER 1D Assembly Guide (Preliminary)



Initial TROLLER design goals/plans/notes:



Every other link is servo drive link

Servo Drive Link – has a mounting  location for a Maestro Micro Servo Controller

Cargo Link -- can carry a battery,  a master controller, or other cargo.


Distributed servo control links allow motion processing and control to be offloaded from the Master Controller Link.


A basic TROLLER 1D will consist of :

12 initial links (but has ability to expand)

Qty 1:  Master Control Link

Qty 6:  Servo Drive Links

Qty 5:  Cargo Links (3 will hold LiPo battery packs)


Built as 3 Groups with 4 links each


Each TROLLER 1D  must have 1 Master Control Link Group (MLU)

and a minimum o two Slave Servo Link Groups (SLU)




Below:  Drawing for TROLLER 1D mechanical parts.

Below2:  TROLLER 1D Master Control Link Unit.

free website hit counter code

Fall 2012:

Below is a video of the initial full servo controls test.  I plan to verify and finalize the controls design before joining the three units together, and developing the rolling algorithms.