Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

[Bug]: Mutex group is accquired by other robot when first robot has already accquired it and performing action #375

Open
1 task done
techmanjeet opened this issue Jul 13, 2024 · 1 comment
Labels
bug Something isn't working

Comments

@techmanjeet
Copy link

Before proceeding, is there an existing issue or discussion for this?

OS and version

Ubuntu 24.04

Open-RMF installation type

Source build

Other Open-RMF installation methods

No response

Open-RMF version or commit hash

latest on jazzy

ROS distribution

Rolling

ROS installation type

Binaries

Other ROS installation methods

jazzy ros2

Package or library, if applicable

No response

Description of the bug

i am having ros2 jazzy on ubuntu 24.04. i installed the ros in binary and open rmf as source build.
My requirement is that on a waypoint where i am performing an action like conveyor dock and transfer, i dont want another robot to go to that place and kept waiting before certain waypoint.

I tried to simulate this using office demo launch file and assigned the task to perform teleop action on coe waypoint.
i gave command two bot ronot to go there.

I applied the mutex group to the waypoints going to the coe end.

What i faced is that upon reaching suppose tinyRobot1 to coe, after certain seconds the tinyRobot 2 is also accquiring the same spot and robot goes in deadlock scenario.

i am attaching the building.yaml files
office.building.zip

Steps to reproduce the bug

1.Launch Rmf using ros2 launch rmf_demos_gz office.launch.xml
2.ros2 run rmf_demos_tasks dispatch_action -F tinyRobot -R tinyRobot1 -a teleop -s coe --use_sim_time
3.ros2 run rmf_demos_tasks dispatch_action -F tinyRobot -R tinyRobot2 -a teleop -s coe --use_sim_time

Expected behavior

One robot should wait till the other finished the teleop operation and has mutex lock acquired.
i want to use this as a transfer use case via conveyor or any medium. need a custom action to dock and than finish request.

And i also found that after giving task request rmf takes a while to start task, some times one minute and sometimes give api response but dont start
Screencast from 2024-07-13 12-35-15.webm

Actual behavior

how can i achieve this use case in rmf framework.
i tried using mutes, let me know how can i achieve this, its a good project where i can use this.

Additional information or screenshots

No response

@techmanjeet techmanjeet added the bug Something isn't working label Jul 13, 2024
@luca-della-vedova
Copy link
Member

I'm not too familiar with the details of the mutex implementation but have you tried doing a composed task made of a simple goto place (for the coe waypoint) followed by a perform action (for the teleop)?

Generally, during the "perform_action" mode, RMF has minimal interactions with the robot and I wouldn't be surprised if that also means it won't lock any mutexes. By contrast, doing normal dispatch patrols should.

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants