In this profile, the controller runs on a workstation attached to the same (usually wireless) network. This allows the use of more computationally-demanding controllers than the on-board computer can handle. Other than that the controller runs on a different computer (rather than the built-in Raspberry Pi) this profile is used in the same way as "on-board".

Getting Started

To get started with this profile, you need first to connect your robot to a network. Use MiRoapp to note down the network address ("IP address") at which MiRo has connected.

Now, on a workstation on the same network, install ROS, then install the MDK (the MDK version you install must match the version of the MDK on your robot, which you can view using MiRoapp).

Connecting to the robot

Before you can communicate with your robot (and run any control client) you need to provide its IP address to the MDK.

When you installed the MDK, a command was added to the bottom of your .bashrc file that sources the setup script at ~/mdk/setup.bash. You can provide the IP address by setting MIRO_ROBOT_IP above this line in your .bashrc.

To connect to the robot, set the value of MIRO_ROBOT_IP before you source ~/mdk/setup.bash in your .bashrc, as follows.

# MDK export MIRO_ROBOT_IP=x.x.x.x (your robot's IP address here!) source ~/mdk/setup.bash

Now when you open a new terminal you will see the following.

________________________________________________________________ Sourcing mdk/setup.bash... ... Local network address: (set from miro_get_dynamic_address()) Robot network address: x.x.x.x (set explicitly) ROS master address: http://x.x.x.x:11311 (set from MIRO_ROBOT_IP) ... ________________________________________________________________

You can see above that the network address provided in MIRO_ROBOT_IP has been used to determine the address of the ROS master. You should replace the token x.x.x.x with the network address of your robot recovered from MiRoapp.

If you prefer not to add these commands to your .bashrc, you can equally well type them at the terminal prompt, but you will have to type both commands every time you open a new terminal to talk to the robot.
You can set up your ROS network manually, or in a more sophisticated way, if you need to—you can use a networked ROS master rather than the one on the robot, for instance.
See ROS Network to configure the network interfaces of the robot.
See Configure Network to configure your workstation and the MDK.


You can now control MiRo as follows—the robot will swing its head from side to side. Press CTRL+C to stop the controller.

$ cd ~/mdk/bin/shared $ ./ yaw ...

There are various example clients provided—see Examples for more details.

GUI client

The provided GUI client is a great way to familiarize yourself with your robot's sensors and actuators. Proceed as follows to start it.

$ cd ~/mdk/bin/shared $ ./ ...