# No kinematics plugins defined. Fill and load kinematics.yaml!

**URL:** <https://forum.universal-robots.com/t/no-kinematics-plugins-defined-fill-and-load-kinematics-yaml/35834>\
**Category:** ROS\
**Created:** [August 28, 2024, 11:06am UTC](https://forum.universal-robots.com/t/no-kinematics-plugins-defined-fill-and-load-kinematics-yaml/35834 "2024-08-28T11:06:21Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![pedromoreo](https://avatars.discourse-cdn.com/v4/letter/p/ce73a5/32.png) [@pedromoreo](https://forum.universal-robots.com/u/pedromoreo)\
**Post date:** [August 28, 2024, 11:06am UTC](https://forum.universal-robots.com/t/no-kinematics-plugins-defined-fill-and-load-kinematics-yaml/35834/1 "2024-08-28T11:06:21Z")

</div>

Continuing the discussion from [Move UR with a MoveIt2 Script](https://forum.universal-robots.com/t/move-ur-with-a-moveit2-script/24497):

Hello, I tried this solution and it doesnt work for me.

We are trying to move a Universal Robot arm and we want to move it through URSIM beforehand. To do this we are trying to adapt the hello\_moveit\_ur project (configured for panda) [Your First C++ MoveIt Project — MoveIt Documentation: Humble documentation](https://moveit.picknik.ai/humble/doc/tutorials/your_first_project/your_first_project.html) to ur5e or ur3e.

In this project they explain how to make a launch file for this purpose: [simple\_moveit2\_universal\_robots\_movement/README.md at main · LucaBross/simple\_moveit2\_universal\_robots\_movement · GitHub](https://github.com/LucaBross/simple_moveit2_universal_robots_movement/blob/main/README.md)  
I cannot make it works

### Steps to reproduce

According to the README provided for Luca Bross in the same github mentioned before:

Shell 1: run the driver  
`ros2 launch ur_robot_driver ur_control.launch.py ur_type:=ur3e robot_ip:=172.17.0.2 launch_rviz:=false initial_joint_controller:=joint_trajectory_controller to connect to the Universal Robot.`

Start the external control urcap on the UR to allow external control (172.17.0.2 )  
whose answer is :

```auto
[ur_ros2_control_node-1] [INFO] [1724836702.880117247] [UR_Client_Library:]: Robot requested program
[ur_ros2_control_node-1] [INFO] [1724836702.880196920] [UR_Client_Library:]: Sent program to robot
[ur_ros2_control_node-1] [INFO] [1724836702.909041735] [UR_Client_Library:]: Robot connected to reverse interface. Ready to receive control commands.

```

Shell 2: run the moveit controller

```auto
ros2 launch ur_moveit_config ur_moveit.launch.py ur_type:=ur3e launch_rviz:=true 
to cofigure moveit.

```

whose anser is :

```auto
[rviz2-2] [INFO] [1724836802.044574767] [interactive_marker_display_95582728855616]: Sending request for interactive markers
[rviz2-2] [INFO] [1724836802.078529470] [interactive_marker_display_95582728855616]: Service response received for initialization
[rviz2-2] [INFO] [1724836862.032627211] [move_group_interface]: Ready to take commands for planning group ur_manipulator.

```

Shell 3: launch the program hello  
`Start the hello_moveit_ur file with a launchfile ros2 launch hello_moveit_ur hello_moveit_ur_launch.py.`  
whose anser is:

```auto
[INFO] [launch]: All log files can be found below /home/pedro/.ros/log/2024-08-28-11-36-43-385497-pedro-B650-AORUS-ELITE-AX-11823
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [hello_moveit_ur-1]: process started with pid [11826]
[hello_moveit_ur-1] [INFO] [1724837803.703205261] [moveit_rdf_loader.rdf_loader]: Loaded robot model in 0.00261015 seconds
[hello_moveit_ur-1] [INFO] [1724837803.703235167] [moveit_robot_model.robot_model]: Loading robot model 'ur'...
[hello_moveit_ur-1] [INFO] [1724837803.703242611] [moveit_robot_model.robot_model]: No root/virtual joint specified in SRDF. Assuming fixed joint
[hello_moveit_ur-1] [WARN] [1724837803.770902047] [moveit_ros.robot_model_loader]: No kinematics plugins defined. Fill and load kinematics.yaml!

```

### Expected behaviour

The robot to move in the UR SIM, to the selected point.

### Actual behaviour

It gives a warning about the kinematics and keep waiting.

Thanks a lot.

---

<div class="post-metadata">

**Author:** ![pedromoreo](https://avatars.discourse-cdn.com/v4/letter/p/ce73a5/32.png) [@pedromoreo](https://forum.universal-robots.com/u/pedromoreo)\
**Post date:** [September 12, 2024, 9:40am UTC](https://forum.universal-robots.com/t/no-kinematics-plugins-defined-fill-and-load-kinematics-yaml/35834/2 "2024-09-12T09:40:39Z")

</div>

We solved it.  
The problem was a conflict of ‘sourcing’

---

<div class="post-metadata">

**Author:** ![thantharate](https://avatars.discourse-cdn.com/v4/letter/t/a4c791/32.png) [@thantharate](https://forum.universal-robots.com/u/thantharate)\
**Post date:** [September 17, 2024, 2:16pm UTC](https://forum.universal-robots.com/t/no-kinematics-plugins-defined-fill-and-load-kinematics-yaml/35834/3 "2024-09-17T14:16:38Z")

</div>

Can you specify, how you did it? I am facing the same problem!!

---

<div class="post-metadata">

**Author:** ![pedromoreo](https://avatars.discourse-cdn.com/v4/letter/p/ce73a5/32.png) [@pedromoreo](https://forum.universal-robots.com/u/pedromoreo)\
**Post date:** [September 20, 2024, 11:04am UTC](https://forum.universal-robots.com/t/no-kinematics-plugins-defined-fill-and-load-kinematics-yaml/35834/4 "2024-09-20T11:04:17Z")

</div>

Hello, at the end we did nothing special but start from scratch. We realize probably we were sourcing it wrongly

Download again `simple_moveit2_universal_robots_movement-main/` , in fact we dowloand the zip package.  
We used the source version of UR5 driver and move it. So we had to build them. The workspace for this is ur\_ros2\_ws.

You need to use 4 terminals (or shells), to execute the UR5 DRIVER, the URSIM, the MOVE IT framework, and the program hello\_moveit itself.

**T1 (: driver\_ur)**

cd ~/ur\_ros2\_ws  
source /opt/ros/humble/setup.bash  
source install/setup.bash  
ros2 launch ur\_robot\_driver ur\_control.launch.py ur\_type:=ur3e robot\_ip:=172.17.0.2 launch\_rviz:=false

**NOW launch the URSIM / URCAP in other terminal (this is going to be your 2nd terminal, if you launch it from a shell).**  
Now Terminal 1 should answer:

[ur\_ros2\_control\_node-1] [INFO] [1724661734.114233192] [UR\_Client\_Library:]: Robot connected to reverse interface. Ready to receive control commands.

**T2 (: move\_it) → in fact is 3rd terminal**

cd ~/ur\_ros2\_ws  
source /opt/ros/humble/setup.bash  
source install/setup.bash  
ros2 launch ur\_moveit\_config ur\_moveit.launch.py ur\_type:=ur3e launch\_rviz:=true

Terminal 2 should answer:  
[rviz2-2] [INFO] [1724770119.055652176] [interactive\_marker\_display\_95051914406416]: Sending request for interactive markers

[rviz2-2] [INFO] [1724770119.087438542] [interactive\_marker\_display\_95051914406416]: Service response received for initialization

**[rviz2-2] [INFO] [1724169912.926740615] [move\_group\_interface]: Ready to take commands for planning group ur\_manipulator.**

Last line it will take more time.

**T3 Last terminal (in fact is 4th)- to launch hello\_moveit\_ur**  
Now depending where you unzipped the simple\_moveit2\_universal\_robots\_movement-main/ , you can have two options.

First option. You can just unzip it in /home, just go to the folder and execute:

**T3 (:hello…)**  
Build the package:

cd simple\_moveit2\_universal\_robots\_movement-main/  
colcon build

To execute the hello\_moveit:

cd simple\_moveit2\_universal\_robots\_movement-main/  
source /opt/ros/humble/setup.bash  
source install/setup.bash  
ros2 launch hello\_moveit\_ur hello\_moveit\_ur\_launch.py

The other option is to build it inside a workspace, ==\> ~/ws\_UR3e/src/simple\_moveit2\_universal\_robots\_movement-main/

Then you should build it from the WS.

**T3 (:hello…)**

cd ~/ws\_UR3e  
source /opt/ros/humble/setup.bash  
colcon build

To execute the hello\_moveit:

cd ~/ws\_UR3e  
source /opt/ros/humble/setup.bash  
source install/setup.bash  
ros2 launch hello\_moveit\_ur hello\_moveit\_ur\_launch.py

then should be accepted and executed and the node should exit.  
[hello\_moveit\_ur-1] [INFO] [1726138386.006110493] [move\_group\_interface]: MoveGroup action client/server ready

[hello\_moveit\_ur-1] [INFO] [1726138386.006299472] [move\_group\_interface]: Planning request accepted

[hello\_moveit\_ur-1] [INFO] [1726138386.051726588] [move\_group\_interface]: Planning request complete!

[hello\_moveit\_ur-1] [INFO] [1726138386.052507462] [move\_group\_interface]: time taken to generate plan: 0.0311912 seconds

[hello\_moveit\_ur-1] [INFO] [1726138386.052972034] [move\_group\_interface]: Execute request accepted

[hello\_moveit\_ur-1] [INFO] [1726138402.711349299] [move\_group\_interface]: Execute request success!

[INFO] [hello\_moveit\_ur-1]: process has finished cleanly [pid 22634]

WARNINGS about the kinematicks _No kinematics plugins defined. Fill and load kinematics.yaml!_ will still be there, but the program should works.

hope it helps

🙂

---

<div class="post-metadata">

**Author:** ![thantharate](https://avatars.discourse-cdn.com/v4/letter/t/a4c791/32.png) [@thantharate](https://forum.universal-robots.com/u/thantharate)\
**Post date:** [September 20, 2024, 12:07pm UTC](https://forum.universal-robots.com/t/no-kinematics-plugins-defined-fill-and-load-kinematics-yaml/35834/5 "2024-09-20T12:07:39Z")

</div>

Thank you so much for your detailed explanation. I am following exactly all the steps you mentioned above, still if I define  
geometry\_msgs::msg::Pose msg;  
msg.orientation.w = 1.0;  
msg.position.x = 0.300;  
msg.position.y = 0.300;  
msg.position.z = 0.300;

It is going to (-0.3,-0.3,0.05) with tcp RX= 0 RY = 0 and RZ= 3.143

Also getting this warning

Error: Semantic description is not specified for the same robot as the URDF  
at line 664 in ./src/model.cpp  
[INFO] [1726832308.485516353] [moveit\_rdf\_loader.rdf\_loader]: Loaded robot model in 2.95336 seconds  
[INFO] [1726832308.486186709] [moveit\_robot\_model.robot\_model]: Loading robot model ‘ur5e’…  
[INFO] [1726832308.486495040] [moveit\_robot\_model.robot\_model]: No root/virtual joint specified in SRDF. Assuming fixed joint  
[WARN] [1726832308.649051192] [moveit\_ros.robot\_model\_loader]: No kinematics plugins defined. Fill and load

Also tried rotating the quaternions  
ms.orientation.x = 0.0;  
msg.orientation.y = 0.0;  
msg.orientation.z = 0.0;

Still not going to the desired TCP location.

I even inspected the launch.py everything seems correct. It would be great if you can suggest some means for correction.  
Did you change anything other than changing the name of the robot?  
And how it is different if I run it as a ros2 node and not as ros2 launch file?

---

<div class="post-metadata">

**Author:** ![pedromoreo](https://avatars.discourse-cdn.com/v4/letter/p/ce73a5/32.png) [@pedromoreo](https://forum.universal-robots.com/u/pedromoreo)\
**Post date:** [September 23, 2024, 10:24am UTC](https://forum.universal-robots.com/t/no-kinematics-plugins-defined-fill-and-load-kinematics-yaml/35834/6 "2024-09-23T10:24:54Z")

</div>

> [@thantharate](#):
>
> Still not going to the desired TCP location.
> 
> I even inspected the launch.py everything seems correct. It would be great if you can suggest some means for correction.  
> Did you change anything other than changing the name of the robot?  
> And how it is different if I run it as a ros2 node and not as ros2 launch file?

Sorry. **Now we are at the same page.** 😄 We couldn’t change neither in the minimum, the position of the example. The hello example is written :

// Set a target Pose  
auto const target\_pose = {  
geometry\_msgs::msg::Pose msg;  
msg.orientation.w = 1.0;  
**msg.position.x = 0.28;**  
msg.position.y = -0.2;  
msg.position.z = 0.5;  
return msg;  
}();

the change of the postion x in

// Set a target Pose  
auto const target\_pose = {  
geometry\_msgs::msg::Pose msg;  
msg.orientation.w = 1.0;  
**msg.position.x = 0.30;**  
msg.position.y = -0.2;  
msg.position.z = 0.5;  
return msg;  
}();

Turns into a robot error. We couldn’t achieve this movement, so in addition we are afraid to leave the simulator and work with the real robot. Although we tried the default target pose, and the robot moved but was too slow.

We didn’t change anything but the robot name.

Broadly speaking, what I can tell you is that the difference between working with a launch file or not (i.e. launching only one node with the ros2 command) is whether you launch a single node or multiple nodes. The launch file is a configuration file that allows you to launch multiple nodes and configure their parameters. In this case, I think it is used more for parameter configuration.

We could do a meeting if you want.

---

<div class="post-metadata">

**Author:** ![pedromoreo](https://avatars.discourse-cdn.com/v4/letter/p/ce73a5/32.png) [@pedromoreo](https://forum.universal-robots.com/u/pedromoreo)\
**Post date:** [September 24, 2024, 11:43am UTC](https://forum.universal-robots.com/t/no-kinematics-plugins-defined-fill-and-load-kinematics-yaml/35834/7 "2024-09-24T11:43:57Z")

</div>

We achieved to move it, but the problem is, it always move, no matter if you execute the same script, and the target pose was reached, it tries to find a new path and a new plan to reach the same pose in another way

---

<div class="post-metadata">

**Author:** ![thantharate](https://avatars.discourse-cdn.com/v4/letter/t/a4c791/32.png) [@thantharate](https://forum.universal-robots.com/u/thantharate)\
**Post date:** [September 25, 2024, 2:17pm UTC](https://forum.universal-robots.com/t/no-kinematics-plugins-defined-fill-and-load-kinematics-yaml/35834/8 "2024-09-25T14:17:52Z")

</div>

Hi Pedromoreo,

It is still not working for me. It would be great if you can explain how you figured it out?

P.S please reply to my email.  
TIA

---

<div class="post-metadata">

**Author:** ![pedromoreo](https://avatars.discourse-cdn.com/v4/letter/p/ce73a5/32.png) [@pedromoreo](https://forum.universal-robots.com/u/pedromoreo)\
**Post date:** [September 26, 2024, 8:54am UTC](https://forum.universal-robots.com/t/no-kinematics-plugins-defined-fill-and-load-kinematics-yaml/35834/9 "2024-09-26T08:54:07Z")

</div>

Cant find any email. I sent you a message , please check your inbox.

best.

---

<div class="post-metadata">

**Author:** ![thantharate](https://avatars.discourse-cdn.com/v4/letter/t/a4c791/32.png) [@thantharate](https://forum.universal-robots.com/u/thantharate)\
**Post date:** [September 26, 2024, 10:43am UTC](https://forum.universal-robots.com/t/no-kinematics-plugins-defined-fill-and-load-kinematics-yaml/35834/10 "2024-09-26T10:43:51Z")

</div>

Hi @pedromoreo  
I have emailed you. If you did not find any email. Please let me know here.
