Yet Another Robot Platform

Example showing how to use the SerialServoBoard driver AND how to configure and use the IPositionControl interface./**

* Copyright (C) 2006-2019 Istituto Italiano di Tecnologia (IIT)
* Copyright (C) 2006-2010 RobotCub Consortium
* All rights reserved.
* This software may be modified and distributed under the terms of the
* BSD-3-Clause license. See the accompanying LICENSE file for details.
#include <yarp/os/Port.h>
#include <yarp/os/Bottle.h>
#include <yarp/os/Time.h>
#include <stdio.h>
#include <stdlib.h>
using namespace yarp::os;
using namespace yarp::dev;
int main(int argc, char *argv[]) {
if(argc!=7) {
printf(" Error: correct usage is %s --board BOARD --comport COM --baudrate BAUDRATE\n", argv[0]);
printf(" BOARD is one out of ssc32, minissc, pontech_sv203x, mondotronic_smi, pololu_usb_16servo, picopic\n");
printf(" COM is COMx or /dev/ttyS0\n");
printf(" BAUDRATE is the baud rate, eg: 38400");
return 1;
Property config;
config.fromCommand(argc, argv);
Property options;
//options.put("robot", "icub"); // typically from the command line.
options.put("device", "SerialServoBoard");
options.put("board", config.check("board", yarp::os::Value("ssc32")).asString().c_str());
options.put("comport", config.check("comport", yarp::os::Value("/dev/ttyS0")).asString().c_str());
options.put("baudrate", config.check("baudrate", yarp::os::Value(38400)).asInt32());
PolyDriver dd(options);
if(!dd.isValid()) {
printf("Device not available.\n");
return 1;
int jnts = 0;
//printf("axes: %d\n", jnts);
pos->positionMove(0, -45);
return 0;