Control Ned with MoveIt and ROS Multi-Machines

Niryo Moveit! multimachines banner


This tutorial is working from:
The version v3.2.0 of the ned_ros_stack

This tutorial explains how to control Ned with Rviz through the MoveIt plugin, in Multi-machines.

Before going further, please refer to our Multi-machines, and our Connect to Ned via SSH tutorials. You can also refer to the ROS Multi-machines tutorial: Running ROS across multiple machines.

What you will need

  • A Ned,

  • A computer with Ubuntu (we used Ubuntu 18.04),

  • To have Rviz installed on your computer,

  • To have the niryo_robot_bringup ROS package on your computer, a part of the Ned ROS Stack that you can download here.


In each terminal you’ll use, you have to setup the ROS_MASTER_URI and ROS_IP environment variables. The master is hosted on Ned.


We recommend to use an ethernet connection between your computer and Ned to optimize the communication speed.

On Ned

First, in a terminal, connect to Ned in SSH, with the command line:

ssh niryo@<ned_static_ip_address>

We use the hardware_interface_standalone.launch file, which only launches on Ned:

  • The Hardware Stack (which publishes on the /joint_state topic), with the motor’s drivers,

  • The controllers,

  • The robot description (loads the urdf file of the robot),

  • The robot state publisher.

Launch it on Ned with:

roslaunch niryo_robot_hardware_interface hardware_interface_standalone.launch

On your computer

We use the moveit_multimachines.launch file, which launches:

  • The command validation group (which checks that commands are not out of bounds)

  • The Moveit! move group interface

This file is in the niryo_robot_bringup package on the Ned ROS Stack. Launch it with:

roslaunch niryo_robot_bringup moveit_multimachines.launch

Finally, in a third terminal, launch Rviz with:

rosrun rviz rviz

Control Ned through Rviz

After opening Rviz, make sure that the “fixed frame” is set to “world”. Add the MotionPlanning to the visualization. You should now have:


Ned in Rviz


In order to make Ned move, you’ll have to:

  • Make sure Ned is well calibrated with:

    rosservice call /niryo_robot/joints_interface/calibrate_motors "value: 1"
  • Deactivate the Learning Mode with:

    rosservice call /niryo_robot/learning_mode/activate "value: false"

You should now be able to move the goal position and orientation of the end effector thanks to the differents arrows:


Define a new goal

Once the goal position is defined, click Plan and Execute so Moveit! calculate the path to the goal and execute it. You are now able to visualize Ned’s current state in Rviz, and to control its movements through Rviz.


Plan and execute path

You can also play with the many options provided by MotionPlanning, like making Ned move along a Cartesian path!