Real robot is not moving with moveit

I am connected to a UR3e over the network, working on ROS2 Foxy, on Ubuntu 20.04, via docker.

  • I set up the right host IP on the robot and robot’s IP in the launch file
  • I installed the external control urcap
  • I tried with both enable/disable remote control, and with both local/remote control on teach pendant
  • I tried calibrating the robot (with ur_calibration)

Then I run

ros2 launch ur_bringup ur_control.launch.py ur_type:=ur3e robot_ip:=192.168.0.4 launch_rviz:=false reverse_ip:=192.168.0.2 limited:=true

on one terminal and

ros2 launch ur_bringup ur_moveit.launch.py ur_type:=ur3e robot_ip:=192.168.0.4 launch_rviz:=true reverse_ip:=192.168.0.2

on another terminal.

After that, I run the program on the teach pendant of the robot with the external control (with the correct IP).

Rviz starts with the robot at the right position.
I plan and execute a random trajectory.

I get this outputs in terminal 1:

Received new action goal
Accepted new action goal
Goal reached, success!

and these on terminal 2:

Completed trajectory execution with status SUCCEEDED
Solution was found and executed.
Plan and Execute request complete!

However the real robot does not move.
There is no error in the terminals.

Any clue what could be the problem here?

Thank you in advance

I cannot really reproduce the problem. Could you please tell us a bit more about your network setup? Your docker host is windows or linux? what is the IP of your host, what is the IP of your container? Did you setup any port forwarding for your container?

To answer your question, yes, this is the follow-up of my question at UR3e does not respond to ROS.
I also calibrated the robot and still it does not work (For this, bear in mind that there is no ur_calibration in the Foxy branch)

I attach the terminal outputs for the two launch files.
terminal.zip (9.0 KB)

My network setup is:
UR3e (192.168.0.4) > router > PC (Ubuntu (Dual boot) with IP 192.168.0.5 and another network for docker with IP 172.17.0.1) > docker (IP 172.17.0.2) > ROS2 Foxy.

I set up port forwarding in docker with -p 50001-50003

It looks like the reverse_ip parameter is not yet supported by the ROS2 driver. Hence, the URScript code generated by the driver contains the wrong IP address from your docker machine.

I’ve added an issue in the driver, but until this is being addressed, you can use a workaround and replace the {{SERVER_IP_REPLACE}} with the actual IP of your docker host (192.168.0.5 in your case). This should get you running, as then the port forwarding will do the rest.

1 Like

Thank you for your reply.
Could you please explain exactly which files should have changed?
I see that the SERVER_IP_REPLACE variable is instantiated in ur_driver.cpp, external_control.urscript and ros_control.urscript. But the external_control.urscript is part of the externalcontrol-1.0.5.urcap that is installed on the real UR. So shall I change the installation urcap? or will the ur_driver.cpp be enough?

Inside the file that I linked. If you build the driver from source, it lies inside the workspace.

Edit: Inside the file that i wanted to link: Universal_Robots_ROS2_Driver/ros_control.urscript at 55cb0979decea2cfd98ac1523c4d6c97f972621e · UniversalRobots/Universal_Robots_ROS2_Driver · GitHub

This worked :slight_smile: . Finally I got the UR move. Thank you for the support @mauch