# How to control UR bots through ROS?

**URL:** <https://forum.universal-robots.com/t/how-to-control-ur-bots-through-ros/5969>\
**Category:** ROS\
**Created:** [January 3, 2020, 9:36am UTC](https://forum.universal-robots.com/t/how-to-control-ur-bots-through-ros/5969 "2020-01-03T09:36:45Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![anon24941150](https://avatars.discourse-cdn.com/v4/letter/a/a9a28c/32.png) [@anon24941150](https://forum.universal-robots.com/u/anon24941150)\
**Post date:** [January 3, 2020, 9:36am UTC](https://forum.universal-robots.com/t/how-to-control-ur-bots-through-ros/5969/1 "2020-01-03T09:36:45Z")

</div>

Hi

I am new to your robots and trying to understand how they are used via ROS. I see there is the driver, however what would be the ROS interface to send motion commands / trajectories? Would this be via moveit, and if so would a moveit package need to be created by the end user?

Additionally I have been looking at the driver page and it mentions utilising ROS Control and that this enables use of position based control. Does this mean that velocity based control is unavailable, or is this what is meant by “speed scaling” on the ur\_controllers page?

Thanks

---

<div class="post-metadata">

**Author:** ![mauch](https://avatars.discourse-cdn.com/v4/letter/m/71e660/32.png) [@mauch](https://forum.universal-robots.com/u/mauch)\
**Post date:** [January 7, 2020, 11:06am UTC](https://forum.universal-robots.com/t/how-to-control-ur-bots-through-ros/5969/2 "2020-01-07T11:06:27Z")

</div>

Phew, that’s a lot of questions. I’ll try to quickly answer them to my knowledge.

> what would be the ROS interface to send motion commands / trajectories?

By default, a trajectory controller is loaded. It exposes a ROS action server of the type [control\_msgs/FollowJointTrajectory](http://docs.ros.org/api/control_msgs/html/action/FollowJointTrajectory.html). You can either create trajectories on your own (which is a bit of work if you’re not familiar with the interface) or one option is to use MoveIt!

> would a moveit package need to be created by the end user?

There already exist moveit packages inside the [universal\_robot](https://github.com/ros-industrial/universal_robot) repository which currently has to be cloned from [my fork](https://github.com/fmauch/universal_robot), as written in the [installation instruction](https://github.com/UniversalRobots/Universal_Robots_ROS_Driver#building). Currently, there is a manual step necessary to use the driver with MoveIt! See [issue #55](https://github.com/UniversalRobots/Universal_Robots_ROS_Driver/issues/55) for details and the discussion on this.

> Does this mean that velocity based control is unavailable, or is this what is meant by “speed scaling”

Velocity control is currently being added to the driver (see [this Pull Request](https://github.com/UniversalRobots/Universal_Robots_ROS_Driver/pull/1)). “Speed scaling” on the other hand is a UR feature where the robot limits commanded motions to setup constraints and therefore virtually reducing execution speed. The implemented controller is capable of being aware of this, nothing more.
