Edit on GitHub

Step 4: OMX Teleoperation Example

NOTE: It assumes that you have already installed and built the SDK.

Make cpp file

Check the Port Names

Source Code Description

#include "dynamixel_easy_sdk/dynamixel_easy_sdk.hpp"

int main(){
  dynamixel::Connector connector_leader("/dev/ttyACM1", 1000000);
  dynamixel::Connector connector_follower("/dev/ttyACM0", 1000000);

  std::unique_ptr<dynamixel::Motor> leader_motor1 = connector_leader.createMotor(1);
  std::unique_ptr<dynamixel::Motor> leader_motor2 = connector_leader.createMotor(2);
  std::unique_ptr<dynamixel::Motor> leader_motor3 = connector_leader.createMotor(3);
  std::unique_ptr<dynamixel::Motor> leader_motor4 = connector_leader.createMotor(4);
  std::unique_ptr<dynamixel::Motor> leader_motor5 = connector_leader.createMotor(5);
  std::unique_ptr<dynamixel::Motor> leader_motor_gripper = connector_leader.createMotor(6);

  std::unique_ptr<dynamixel::Motor> follower_motor1 = connector_follower.createMotor(11);
  std::unique_ptr<dynamixel::Motor> follower_motor2 = connector_follower.createMotor(12);
  std::unique_ptr<dynamixel::Motor> follower_motor3 = connector_follower.createMotor(13);
  std::unique_ptr<dynamixel::Motor> follower_motor4 = connector_follower.createMotor(14);
  std::unique_ptr<dynamixel::Motor> follower_motor5 = connector_follower.createMotor(15);
  std::unique_ptr<dynamixel::Motor> follower_motor_gripper = connector_follower.createMotor(16);

  follower_motor1->enableTorque();
  follower_motor2->enableTorque();
  follower_motor3->enableTorque();
  follower_motor4->enableTorque();
  follower_motor5->enableTorque();
  follower_motor_gripper->enableTorque();

  while (true) {
    int present_position1 = leader_motor1->getPresentPosition().value();
    int present_position2 = leader_motor2->getPresentPosition().value();
    int present_position3 = leader_motor3->getPresentPosition().value();
    int present_position4 = leader_motor4->getPresentPosition().value();
    int present_position5 = leader_motor5->getPresentPosition().value();
    int present_position_gripper = leader_motor_gripper->getPresentPosition().value();

    follower_motor1->setGoalPosition(present_position1);
    follower_motor2->setGoalPosition(present_position2);
    follower_motor3->setGoalPosition(present_position3);
    follower_motor4->setGoalPosition(present_position4);
    follower_motor5->setGoalPosition(present_position5);
    follower_motor_gripper->setGoalPosition(present_position_gripper);
  }
}

Add Header Files

Create Connector and Motor Object

Enable Follower Torque

Leader and Follower Control Loop

Error Handling

Compile and Run