[Other issue]: Unable to Control ROS1 Simulation with Free Fleet without Running RMF Simulation (#481)

Posted by @[Missing data]:

I am experiencing an issue while trying to control a robot in a ROS1 simulation using Free Fleet and Open RMF. Below is a detailed description of the problem:

Setup Details:
    I am using Free Fleet with a ROS1 simulation.
    Open RMF is being used to control the robot via Free Fleet.

Steps Taken:
    Modified the server and client launch files in Free Fleet to connect to my robot.
    Passed commands via terminal to move the robot, and it worked successfully.
    Created a fleet_adapter for a fleet named agv (same fleet name as used in Free Fleet).
    Ran RMF demos with the agv map created using Traffic Editor for the agv fleet.
    Both Open RMF simulation and ROS1 simulation have robots that move when an RMF task is assigned.

Problem:
    When I run RMF without the simulation, aiming to command my ROS1 simulation with Free Fleet,
     it does not work.
    I am forced to run the RMF simulation to control the external ROS1 simulation.

Expected Behavior

I should be able to control the ROS1 simulation using Free Fleet and Open RMF ,
without the need to run the RMF simulation.

Actual Behavior

RMF simulation needs to be running to control the ROS1 simulation.

Steps to Reproduce

Setup Free Fleet and Open RMF to control a ROS1 robot.
Modify server and client launch files in Free Fleet for connectivity.
Create a fleet adapter for a fleet named agv and run RMF demos with agv map.
Attempt to control the ROS1 simulation without running RMF simulation.

Environment

Free Fleet(client ros noetic,server ros galactic on host machine)
Open RMF(ros humble in a docker container)

Additional Context

The agv map and fleet were created using Traffic Editor.
Commands passed via terminal to Free Fleet successfully move the robot.
Control of the ROS1 robot is only functional when RMF simulation is running.

Request for Help

What steps should I take to enable control of the ROS1 simulation using Free Fleet without needing to run the RMF simulation?

Posted by @Yadunund:

Hi @Oussamadal,

Have you looked at our documentation here: Legacy - free fleet - Programming Multiple Robots with ROS 2 ?

Create a fleet adapter for a fleet named agv and run RMF demos with agv map.

When using free_fleet, you don’t have to implement your own fleet adapter. Instead you should be running an instance of the legacy full_control fleet adapter which you can launch via rmf_ros2/rmf_fleet_adapter/launch/fleet_adapter.launch.xml at main · open-rmf/rmf_ros2 · GitHub

Please give this a shot and report back if you run into any issues.

Posted by @[Missing data]:

i tried to run the full_control node i get this :

:/rmf_ws/rmf_ws# ros2 launch rmf_demos agv1_adapter.launch.xml config_file:=/rmf_ws/rmf_ws/src/rmf_demos/config/robots/agv_config.yaml nav_graph_file:=/rmf_ws/rmf_ws/install/rmf_demos_maps/share/rmf_demos_maps/maps/buvette/nav_graphs/0.yaml
[INFO] [launch]: All log files can be found below /root/.ros/log/2024-06-19-15-51-04-207051-osd-Dell-G15-5510-304016
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [full_control-1]: process started with pid [304017]
[full_control-1] [INFO] [1718812264.460050465] [agv_fleet_adapter]: Parameter [discovery_timeout] set to: 10.000000
[ERROR] [full_control-1]: process has died [pid 304017, exit code 1, cmd ‘/opt/ros/humble/lib/rmf_fleet_adapter/full_control --ros-args -r _node:=agv_fleet_adapter --params-file /tmp/launch_params_dxfj1_s8 --params-file /tmp/launch_params_ucc4p95c --params-file /tmp/launch_params_k8fv838e --params-file /tmp/launch_params_ynttd_6n --params-file /tmp/launch_params_na79b6jw --params-file /tmp/launch_params_eh7ly727 --params-file /tmp/launch_params_5z9jtsxf --params-file /tmp/launch_params_r2io3y9i --params-file /tmp/launch_params_kon6xz9b --params-file /tmp/launch_params_wbk7_lki --params-file /tmp/launch_params_lfz9uetf --params-file /tmp/launch_params_we3ty9yy --params-file /tmp/launch_params_g_3jtogq --params-file /tmp/launch_params_u7f_mur9 --params-file /tmp/launch_params_aoiayrwk --params-file /tmp/launch_params_rx0cjxhc --params-file /tmp/launch_params_2eec29zd --params-file /tmp/launch_params_be1q67lw --params-file /tmp/launch_params_y9_9dmc7 --params-file /tmp/launch_params_sw93rep5 --params-file /tmp/launch_params_w2rqnaqf --params-file /tmp/launch_params_i3xln36f --params-file /tmp/launch_params_b7v3ymk --params-file /tmp/launch_params_ay0w_t43 --params-file /tmp/launch_params_lbwh6v62 --params-file /tmp/launch_params_m5zjpt39 --params-file /tmp/launch_params__56g7pzx --params-file /tmp/launch_params_zttjmc5c --params-file /tmp/launch_params_usn8u8hr --params-file /tmp/launch_params_c6cagqej --params-file /tmp/launch_params_nr5370vl --params-file /tmp/launch_params_iwb7o1md’].
/rmf_ws/rmf_ws#

Posted by @[Missing data]:

Hello yadu,so i managed to connect rmf to ros1 robot using free fleet successfully thanks to you guys .
I just have a little problem now,when i send a go_to_place mission free fleet takes some time to respond and when the robot start moving it don’t stick to the traffic lanes perfectly plus when it reach way point in it’s way it takes more time to pass through it,
Please let me know if there’s any additional informations to provide so you can assist me.

Posted by @aaronchongth:

Hey @Oussamadal! The behavior sounds accurate and as expected, as the full control fleet adapter is only managing the high level navigation commands (path comprised of many waypoints), whereas the navigation stack is in charge of point-to-point navigation, and will most likely be freespace navigation hence it will not strictly adhere to the traffic lanes that were drawn up

with the full control fleet adapter issuing commands to move from one point to another, it will also wait until the robot has completely reached the waypoint before issuing the next target waypoint, hence there would be some delay.

Posted by @[Missing data]:

thank you !

is there anything i can do to make it more accurate and fast ?

Posted by @[Missing data]:

with the full control fleet adapter issuing commands to move from one point to another, it will also wait until the robot has completely reached the waypoint before issuing the next target waypoint, hence there would be some delay.

also when it reaches it’s destination ,it starts acting like a car that’s trying to park but slowly

Posted by @aaronchongth:

I would recommend getting acquainted with the navigation stack and perhaps tuning it. Check out navigation/Tutorials/RobotSetup - ROS Wiki and https://wiki.ros.org/base_local_planner, depending on which local planner you are using.

As for the behavior of the car trying to park but very slowly, I assume you mean the robot slowing down when approaching the waypoint? That can also be tuned from the navigation stack, I don’t know which parameter off the top of my head though