Recent Posts

Archive

Tags

[Project] Control a Dog-Like Creature with Linkbot


Introduction:

Each Linkbot is a building block. Multiple Linkbots and accessories can be easily snapped together, without special tools, to form various Linkbot systems for different tasks and projects. In this project, 2 Linkbot-I, 1 Linkbot-L, Cube Connectors, and other accessories are used to form a dog-like creature. The project demonstrates that Linkbot can be used as a building block in a complex Linkbot system.

(Project Description and Program in PDF File)

Information:

Grades: 6 – 12

Duration: 1-4 Hours

Level: Intermediate

Parts Used in the Project:

2 Linkbot-I

1 Linkbot-L (used for a mouth, you can replace it by Linkbot-I)

1 Linkbot Dongle (or another Linkbot as Dongle)

2 4” wheels

11 Cube Connectors

1 Gripper Pair

4 Bridge Connectors

1 Ball Caster

23 Snap Connectors

Setup:

Joint 3 of robot1 and joint 1 of robot2 are connected to the Cube Connector as shown in the figure. A pair of grippers are used as a mouth for the dog.

dog-like creature

Programming the dog in Ch:

A Ch program dog.ch can be used to control this dog creature. The member function robot.moveJoint() is used to control the movement of a joint. The non-blocking member function robot.moveJointNB() is used to control two join motions at once, with the member function robot.moveWait() for synchronization of motions for two joints.

/* File: dog.ch

Drive a dog robot with two linkbots

and use a gripper as a mouth.

Joint 3 of robot1 and joint 1 of robot2

are connected to the Cube Connector */

#include <linkbot.h>

CLinkbotI robot1, robot2;

CLinkbotI mouth; // you can replace Linkbot-L by Linkbot-I

// move dog forward

robot1.moveJointNB(JOINT1, 180);

robot2.moveJoint(JOINT3, -180);

robot1.moveWait();

// turn dog to right

robot1.moveJointNB(JOINT1, 120);

robot2.moveJoint(JOINT3, 120);

robot1.moveWait();

// move dog forward

robot1.moveJointNB(JOINT1, 180);

robot2.moveJointNB(JOINT3, -180);

robot1.moveWait();

// turn head side to side

mouth.moveJoint(JOINT2, 45);

mouth.moveJoint(JOINT2, -90);

mouth.moveJoint(JOINT2, 45);