Welcome to Synthiam!

The easiest way to program the most powerful robots. Use technologies by leading industry experts. ARC is a free-to-use robot programming software that makes servo automation, computer vision, autonomous navigation, and artificial intelligence easy.

Get Started
Asked — Edited
Resolved Resolved by DJ Sures!

Ez-Sdk Sample Code For Jd :)

i am playing around with an JD-Robot and wanted to rogramm it in Linux. And found this link:
the small code works, and it print "HelloWorld" in the Terminal. But how can i make my JD move? Are there librarys, or just an sample code for movin JD would be enough:)
Thanks in advance, Patrick.


Upgrade to ARC Pro

Synthiam ARC Pro is a cool new tool that will help unleash your creativity with programming robots in just seconds!

OpenBot is a third party product and not supported by ez-robot. I have never actually used it, although I have seen some projects built with it. I have not seen a JD built with it because the code does not contain the Auto Position GAIT module.

If you are using Linux, I would recommend using the EZ-Mono SDK. The Mono SDK for EZ-Robot contains the Auto Position GAIT module, which will allow you to make JD walk. Here is a link to the Mono SDK: http://synthiam.com/Products/ARC
DJ, That is what he is trying to use. You posted the same link Patrick did.

@ thetechguru, thanks, just wanted to say that:)

I want an sample code which moves my JD-Robot that i know how to use Mono with my EZ-Robot,
Alan, he edited the post - it was originally about OpenBot.

Looks like he answered his own question:D
To use the Auto Position, this is a cut and paste of how to move servos..


string ActionGUID1 = string.Empty;
string ActionGUID2 = string.Empty;

void InitPositions() {

// These are events from the auto positions
ezb.AutoPosition.OnComplete += AutoPosition_OnComplete;
ezb.AutoPosition.OnStartAction += AutoPosition_OnStartAction;
ezb.AutoPosition.OnStartFrame += AutoPosition_OnStartFrame;

// First we define the servos
ezb.AutoPosition.Config.AddServo(Servo.ServoPortEnum.D0); // 0
ezb.AutoPosition.Config.AddServo(Servo.ServoPortEnum.D1); // 1
ezb.AutoPosition.Config.AddServo(Servo.ServoPortEnum.D2); // 2
ezb.AutoPosition.Config.AddServo(Servo.ServoPortEnum.D3); // 3

// Add a frame. The number of positions must match the number of servos. First position is for the first servo, second position is for the second servo, etc..
// In this example, this frame sets all servos to position 90
string frame1 = ezb.AutoPosition.Config.AddFrame("Frame #1", new int[] { 90, 90, 90, 90 });

// Now we will add more frames...
string frame2 = ezb.AutoPosition.Config.AddFrame("Frame #1", new int[] { 70, 20, 40, 10 });
string frame3 = ezb.AutoPosition.Config.AddFrame("Frame #1", new int[] { 170, 140, 80, 160 });
string frame4 = ezb.AutoPosition.Config.AddFrame("Frame #1", new int[] { 20, 70, 150, 100 });

// Create an action by assigning a bunch of frames to it.
// Rather than a frame being assigned to an action directly, it gets wrapped in an ActionFrame which allows you to specify parameters
// the parameters are Delay, Steps and Speed
// The Delay is how long in MS to delay between steps
// The Steps is how large of a step to take (1 moves the servo 1 position per step, 2 moves the servo 2 positions per step, etc..)
// The Speed is how fast to set the ServoSpeed. A -1 means do not change the speed. 0 means move the speed to 0, etc...
ActionGUID1 = ezb.AutoPosition.Config.AddAction(new EZ_B.Classes.AutoPositionAction(
"Test Action 1",
new EZ_B.Classes.AutoPositionActionFrame[] {
new EZ_B.Classes.AutoPositionActionFrame(frame1, 25, 3, -1),
new EZ_B.Classes.AutoPositionActionFrame(frame2, 25, 3, -1),
new EZ_B.Classes.AutoPositionActionFrame(frame3, 25, 3, -1),
new EZ_B.Classes.AutoPositionActionFrame(frame4, 25, 3, -1),
new EZ_B.Classes.AutoPositionActionFrame(frame3, 35, 1, -1),
new EZ_B.Classes.AutoPositionActionFrame(frame2, 35, 1, -1),
new EZ_B.Classes.AutoPositionActionFrame(frame1, 35, 1, -1),

// Let's create a second action
ActionGUID2 = ezb.AutoPosition.Config.AddAction(new EZ_B.Classes.AutoPositionAction(
"Test Action 2",
new EZ_B.Classes.AutoPositionActionFrame[] {
new EZ_B.Classes.AutoPositionActionFrame(frame1, 25, 3, -1),
new EZ_B.Classes.AutoPositionActionFrame(frame3, 25, 3, -1),
new EZ_B.Classes.AutoPositionActionFrame(frame3, 25, 5, -1),
new EZ_B.Classes.AutoPositionActionFrame(frame2, 25, 5, -1),

void AutoPosition_OnStartFrame(AutoPosition sender, EZ_B.Classes.AutoPositionFrame frame, EZ_B.Classes.AutoPositionActionFrame actionFrame) {

Console.WriteLine("Frame {0} (Steps: {1}, Speed: {2}, Delay: {3})", frame.Title, actionFrame.Steps, actionFrame.ServoSpeed, actionFrame.Delay);

void AutoPosition_OnStartAction(AutoPosition sender, EZ_B.Classes.AutoPositionAction action) {

Console.WriteLine("Action Started: {0}", action.Title);

void AutoPosition_OnComplete(AutoPosition sender) {

Console.WriteLine("Action Stopped");

void StartAction1() {


void StartAction2() {


void StopAction() {

Can you pls give me a complete code?


Alan, he edited the post - it was originally about OpenBot.

Not when I read it 4 hours ago:)

Maybe you opened it in a tab and only got to it after an edit? That sometimes happens when I am reading a bunch of new posts.

@ Dj Sures,
can you please me an complete code for moving my robot? Not only pieces of it? *confused*