Yet Another Robot Platform

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

* SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT)
* SPDX-FileCopyrightText: 2006-2010 RobotCub Consortium
* SPDX-License-Identifier: BSD-3-Clause
#include <yarp/os/Time.h>
#include <cstdio>
int main(int argc, char* argv[])
Network yarp;
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());
options.put("comport", config.check("comport", yarp::os::Value("/dev/ttyS0")).asString());
options.put("baudrate", config.check("baudrate", yarp::os::Value(38400)).asInt32());
PolyDriver dd(options);
if (!dd.isValid()) {
printf("Device not available.\n");
return 1;
IPositionControl* pos;
int jnts = 0;
pos->positionMove(0, -45);
return 0;
Interface for a generic control board device implementing position control.
A container for a device driver.
Definition: PolyDriver.h:24
Utilities for manipulating the YARP network, including initialization and shutdown.
Definition: Network.h:783
A class for storing options and configuration information.
Definition: Property.h:34
A single value (typically within a Bottle).
Definition: Value.h:45
void delay(double seconds)
Wait for a certain number of seconds.
Definition: Time.cpp:111
The main, catch-all namespace for YARP.
Definition: dirs.h:16
int main(int argc, char *argv[])
Definition: yarpros.cpp:264