Giter Club home page Giter Club logo

free_fleet's Issues

Package 'ff_examples_ros2' not found

Distributor ID: Ubuntu
Description: Ubuntu 20.04.1 LTS
Release: 20.04
Codename: focal

ROS1 noetic
ROS2 foxy
branch: fix/focal-docs

oto@moov:~/server_ws$ source ~/server_ws/install/setup.bash
ROS_DISTRO was set to 'foxy' before. Please make sure that the environment does not mix paths from different distributions.
ROS_DISTRO was set to 'noetic' before. Please make sure that the environment does not mix paths from different distributions.
oto@moov:~/server_ws$ ros2 launch ff_examples_ros2 fake_server.launch.xml
Package 'ff_examples_ros2' not found: "package 'ff_examples_ros2' not found, searching: ['/home/oto/server_ws/install/rmf_traffic_msgs', '/home/oto/server_ws/install/rmf_lift_msgs', '/home/oto/server_ws/install/rmf_fleet_msgs', '/home/oto/server_ws/install/rmf_door_msgs', '/home/oto/server_ws/install/rmf_dispenser_msgs', '/home/oto/server_ws/install/rmf_cmake_uncrustify', '/home/oto/server_ws/install/ament_cmake_catch2', '/home/oto/rmf_demos_ws/install/demos', '/home/oto/rmf_demos_ws/install/visualizer', '/home/oto/rmf_demos_ws/install/traffic_editor_assets', '/home/oto/rmf_demos_ws/install/traffic_editor', '/home/oto/rmf_demos_ws/install/test_maps', '/home/oto/rmf_demos_ws/install/rviz2_plugin', '/home/oto/rmf_demos_ws/install/rmf_workcell_msgs', '/home/oto/rmf_demos_ws/install/rmf_schedule_visualizer', '/home/oto/rmf_demos_ws/install/rmf_fleet_adapter', '/home/oto/rmf_demos_ws/install/rmf_traffic_ros2', '/home/oto/rmf_demos_ws/install/rmf_rviz_plugin', '/home/oto/rmf_demos_ws/install/fleet_state_visualizer', '/home/oto/rmf_demos_ws/install/rmf_traffic_msgs', '/home/oto/rmf_demos_ws/install/rmf_demo_tasks', '/home/oto/rmf_demos_ws/install/rmf_task_msgs', '/home/oto/rmf_demos_ws/install/building_systems_visualizer', '/home/oto/rmf_demos_ws/install/rmf_schedule_visualizer_msgs', '/home/oto/rmf_demos_ws/install/rmf_demo_assets', '/home/oto/rmf_demos_ws/install/building_ignition_plugins', '/home/oto/rmf_demos_ws/install/building_gazebo_plugins', '/home/oto/rmf_demos_ws/install/building_sim_common', '/home/oto/rmf_demos_ws/install/rmf_lift_msgs', '/home/oto/rmf_demos_ws/install/rmf_gazebo_plugins', '/home/oto/rmf_demos_ws/install/rmf_ingestor_msgs', '/home/oto/rmf_demos_ws/install/rmf_fleet_msgs', '/home/oto/rmf_demos_ws/install/rmf_door_msgs', '/home/oto/rmf_demos_ws/install/rmf_dispenser_msgs', '/home/oto/rmf_demos_ws/install/rmf_demos_dashboard_resources', '/home/oto/rmf_demos_ws/install/rmf_demo_maps', '/home/oto/rmf_demos_ws/install/rmf_cmake_uncrustify', '/home/oto/rmf_demos_ws/install/building_map_tools', '/home/oto/rmf_demos_ws/install/building_map_msgs', '/home/oto/rmf_demos_ws/install/ament_cmake_catch2', '/opt/ros/foxy']"
oto@moov:~

[Feature request]: Add /robot_state topic published from free_fleet_server

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

Description

Hi All!

As mentioned in #121, free_fleet seems not to be compatible with rmf_demos_fleet_adapter.

As a consequence, I guesses that also the implementation of fleet_adapter_template shouldn't be compatible with free_fleet.

Are there any update on that? Something changed in the last 2 years?

Implementation Considerations

Taking into account the Description part, I still tried to implement a pipeline that includes both free_fleet and rmf_demos_fleet_adapter.

One possible solution that I found is the implementation of a publisher in free_fleet_server. This will allow us to update the location and path of each robot in the topic /robot_state, in order to keep publishing waypoints sequentially and respecting the execution time.

Thank you to take into consideration this request and let me know if you are open to a PR to fix this.

Alternatives

No response

Additional information

No response

launch.invalid_launch_file_error.InvalidLaunchFileError:

oto@moov:~/server_ws$ ros2 launch ff_examples_ros2 fake_server.launch.xml
[INFO] [launch]: All log files can be found below /home/oto/.ros/log/2020-11-27-15-22-24-850433-moov-59337
[INFO] [launch]: Default logging verbosity is set to INFO
/opt/ros/foxy/lib/python3.8/site-packages/launch/frontend/expose.py:39: UserWarning: The parameter 'node_name' is deprecated, use 'name' instead
  return action_type(**kwargs)
Task exception was never retrieved
future: <Task finished name='Task-2' coro=<LaunchService._process_one_event() done, defined at /opt/ros/foxy/lib/python3.8/site-packages/launch/launch_service.py:271> exception=InvalidLaunchFileError('xml')>
Traceback (most recent call last):
  File "/opt/ros/foxy/lib/python3.8/site-packages/launch/launch_description_sources/any_launch_file_utilities.py", line 53, in get_launch_description_from_any_launch_file
    return loader(launch_file_path)
  File "/opt/ros/foxy/lib/python3.8/site-packages/launch/launch_description_sources/frontend_launch_file_utilities.py", line 35, in get_launch_description_from_frontend_launch_file
    return parser.parse_description(root_entity)
  File "/opt/ros/foxy/lib/python3.8/site-packages/launch/frontend/parser.py", line 102, in parse_description
    actions = [self.parse_action(child) for child in entity.children]
  File "/opt/ros/foxy/lib/python3.8/site-packages/launch/frontend/parser.py", line 102, in <listcomp>
    actions = [self.parse_action(child) for child in entity.children]
  File "/opt/ros/foxy/lib/python3.8/site-packages/launch/frontend/parser.py", line 85, in parse_action
    return instantiate_action(entity, self)
  File "/opt/ros/foxy/lib/python3.8/site-packages/launch/frontend/expose.py", line 39, in instantiate_action
    return action_type(**kwargs)
  File "/opt/ros/foxy/lib/python3.8/site-packages/launch_ros/actions/node.py", line 174, in __init__
    raise RuntimeError(
RuntimeError: Passing both 'node_name' and 'name' parameters. Only use 'name'.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/opt/ros/foxy/lib/python3.8/site-packages/launch/launch_service.py", line 273, in _process_one_event
    await self.__process_event(next_event)
  File "/opt/ros/foxy/lib/python3.8/site-packages/launch/launch_service.py", line 293, in __process_event
    visit_all_entities_and_collect_futures(entity, self.__context))
  File "/opt/ros/foxy/lib/python3.8/site-packages/launch/utilities/visit_all_entities_and_collect_futures_impl.py", line 45, in visit_all_entities_and_collect_futures
    futures_to_return += visit_all_entities_and_collect_futures(sub_entity, context)
  File "/opt/ros/foxy/lib/python3.8/site-packages/launch/utilities/visit_all_entities_and_collect_futures_impl.py", line 45, in visit_all_entities_and_collect_futures
    futures_to_return += visit_all_entities_and_collect_futures(sub_entity, context)
  File "/opt/ros/foxy/lib/python3.8/site-packages/launch/utilities/visit_all_entities_and_collect_futures_impl.py", line 38, in visit_all_entities_and_collect_futures
    sub_entities = entity.visit(context)
  File "/opt/ros/foxy/lib/python3.8/site-packages/launch/action.py", line 108, in visit
    return self.execute(context)
  File "/opt/ros/foxy/lib/python3.8/site-packages/launch/actions/include_launch_description.py", line 125, in execute
    launch_description = self.__launch_description_source.get_launch_description(context)
  File "/opt/ros/foxy/lib/python3.8/site-packages/launch/launch_description_source.py", line 84, in get_launch_description
    self._get_launch_description(self.__expanded_location)
  File "/opt/ros/foxy/lib/python3.8/site-packages/launch/launch_description_sources/any_launch_description_source.py", line 53, in _get_launch_description
    return get_launch_description_from_any_launch_file(location)
  File "/opt/ros/foxy/lib/python3.8/site-packages/launch/launch_description_sources/any_launch_file_utilities.py", line 56, in get_launch_description_from_any_launch_file
    raise InvalidLaunchFileError(extension, likely_errors=exceptions)
launch.invalid_launch_file_error.InvalidLaunchFileError: Caught exception when trying to load file of format [xml]: Passing both 'node_name' and 'name' parameters. Only use 'name'.

Multi Turtlebot3 Simulation error

[ WARN] [1606706810.527861522, 5.085000000]: Timed out waiting for transform from tb3_0/base_footprint to map to become available before running costmap, tf error: canTransform: target_frame map does not exist.. canTransform returned after 0.1 timeout was 0.1.
[ WARN] [1606706810.530239571, 5.088000000]: Timed out waiting for transform from tb3_1/base_footprint to map to become available before running costmap, tf error: canTransform: target_frame map does not exist.. canTransform returned after 0.1 timeout was 0.1.
[ WARN] [1606706810.532104488, 5.090000000]: Timed out waiting for transform from tb3_2/base_footprint to map to become available before running costmap, tf error: canTransform: target_frame map does not exist.. canTransform returned after 0.101 timeout was 0.1.
[ WARN] [1606706815.559972618, 10.091000000]: Timed out waiting for transform from tb3_0/base_footprint to map to become available before running costmap, tf error: canTransform: target_frame map does not exist.. canTransform returned after 0.1 timeout was 0.1.
[ WARN] [1606706815.566345546, 10.097000000]: Timed out waiting for transform from tb3_1/base_footprint to map to become available before running costmap, tf error: canTransform: target_frame map does not exist.. canTransform returned after 0.1 timeout was 0.1.
[ WARN] [1606706815.566663835, 10.098000000]: Timed out waiting for transform from tb3_2/base_footprint to map to become available before running costmap, tf error: canTransform: target_frame map does not exist.. canTransform returned after 0.1 timeout was 0.1.
[ERROR] [1606706815.662991978, 10.193000000]: timed out waiting for action server: tb3_0/move_base
[ERROR] [1606706815.664283608, 10.195000000]: timed out waiting for action server: tb3_2/move_base
[ERROR] [1606706815.667046855, 10.197000000]: timed out waiting for action server: tb3_1/move_base
[ERROR] [1606706815.681482736, 10.212000000]: free_fleet_client_ros1: unable to initialize.
[tb3_2_free_fleet_client_node-19] process has died [pid 12208, exit code 1, cmd /home/oto/client_ws/install/free_fleet_client_ros1/lib/free_fleet_client_ros1/free_fleet_client_ros1 __name:=tb3_2_free_fleet_client_node __log:=/home/oto/.ros/log/dd19bc8a-32bb-11eb-a603-81ac4c0d4f1c/tb3_2_free_fleet_client_node-19.log].
log file: /home/oto/.ros/log/dd19bc8a-32bb-11eb-a603-81ac4c0d4f1c/tb3_2_free_fleet_client_node-19*.log
[ERROR] [1606706815.738687614, 10.269000000]: free_fleet_client_ros1: unable to initialize.
[ERROR] [1606706815.749154487, 10.279000000]: free_fleet_client_ros1: unable to initialize.
[tb3_0_free_fleet_client_node-17] process has died [pid 12195, exit code 1, cmd /home/oto/client_ws/install/free_fleet_client_ros1/lib/free_fleet_client_ros1/free_fleet_client_ros1 __name:=tb3_0_free_fleet_client_node __log:=/home/oto/.ros/log/dd19bc8a-32bb-11eb-a603-81ac4c0d4f1c/tb3_0_free_fleet_client_node-17.log].
log file: /home/oto/.ros/log/dd19bc8a-32bb-11eb-a603-81ac4c0d4f1c/tb3_0_free_fleet_client_node-17*.log
[tb3_1_free_fleet_client_node-18] process has died [pid 12204, exit code 1, cmd /home/oto/client_ws/install/free_fleet_client_ros1/lib/free_fleet_client_ros1/free_fleet_client_ros1 __name:=tb3_1_free_fleet_client_node __log:=/home/oto/.ros/log/dd19bc8a-32bb-11eb-a603-81ac4c0d4f1c/tb3_1_free_fleet_client_node-18.log].
log file: /home/oto/.ros/log/dd19bc8a-32bb-11eb-a603-81ac4c0d4f1c/tb3_1_free_fleet_client_node-18*.log

client running ROS1 melodic and mobot code on kinetic

I am aware that free fleet client requires ROS1 melodic. For a mobot that is running the code on ROS1 kinetic, will that be a problem. If that is, can you provide any advice or suggestion on how to deal with this? Thanks.

Support perform_action feature of the fleet adapter

The 22.02 release of RMF introduced a perform_action activity that forwards a custom command to the robot. Any users that depend on free fleet won't have access to this feature unless we integrate it into the free fleet pipeline.

One aspect of this feature that will be very tricky is allowing custom logic to decide whether or not to accept a task with a custom action. We may need to introduce a plugin system to free fleet for the task approval feature to be fully leveraged.

Issue with multiple turtlebot3 on Noetic ROS1

There is an issue with running multiple turtlebot3 on ROS1 Noetic.
Everything works well with single turtlebot3 but with multiple turtlebot3 gazeo shows multiple turtlebot3, but in rviz it shows only one with no navigation. I have attached the picture below,
I think there are some issue with TF for multiple turtlebot3
image
,
Please someone help me how to resolve this issue?
thank you

1 package had stderr output: rmf_traffic

Distributor ID: Ubuntu
Description: Ubuntu 18.04.5 LTS
Release: 18.04
Codename: bionic

oto@moov:~/server_ws$ CXX=g++-8 colcon build --packages-select rmf_traffic
Starting >>> rmf_traffic
--- stderr: rmf_traffic                               
/home/oto/server_ws/src/rmf_core/rmf_traffic/src/rmf_traffic/schedule/Negotiation.cpp: In static member function ‘static rmf_utils::optional<rmf_traffic::schedule::Negotiation> rmf_traffic::schedule::Negotiation::make(std::shared_ptr<const rmf_traffic::schedule::Viewer>, std::vector<long unsigned int>)’:
/home/oto/server_ws/src/rmf_core/rmf_traffic/src/rmf_traffic/schedule/Negotiation.cpp:897:10: error: could not convert ‘negotiation’ from ‘rmf_traffic::schedule::Negotiation’ to ‘rmf_utils::optional<rmf_traffic::schedule::Negotiation> {aka std::optional<rmf_traffic::schedule::Negotiation>}’
   return negotiation;
          ^~~~~~~~~~~
make[2]: *** [CMakeFiles/rmf_traffic.dir/src/rmf_traffic/schedule/Negotiation.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [CMakeFiles/rmf_traffic.dir/all] Error 2
make: *** [all] Error 2
---
Failed   <<< rmf_traffic [11.8s, exited with code 2]

Summary: 0 packages finished [12.0s]
  1 package failed: rmf_traffic
  1 package had stderr output: rmf_traffic

ros1 robot without multi-level support

Hi, my robot does not have any mutli-level management. Hence, its location does not have level_name parameter. How do I overcome this by setting the level_name to a default level in my free fleet client? Tried to indicate in my launch file for free fleet client node using

<param name="level_name" type="string" value="L7"/>

Currently experiencing error from fleet_adapter:

Robot named [] belonging to fleet [] is lost because we cannot figure out what floor it is on. Please publish the robot's current floor name in the level_name field of its RobotState.

Free fleet client fails to handle aborted navigation goals

Bug report

Required information:

  • Free Fleet: main
  • Operating system and version: Any
  • ROS distribution and version: Any

Description of the bug

When move_base fails to navigate to the goal or recover from localization errors, and decides to abort the goal, the free fleet client does not have the capability to handle that scenario.

Steps to reproduce the bug

  1. Start entire setup with the client running and performing a navigation goal
  2. Cancel the action goal by calling, rostopic pub /move_base/cancel actionlib_msgs/GoalID -- {}

Screenshots

IMG_20210817_171920604

Question on launching free_fleet_example_ros2

i am trying to execute the tutorial from readme and while executing ros2 launch
ros2 launch free_fleet_examples_ros2 fake_server.launch.xml
i am getting this error.

[INFO] [launch]: All log files can be found below /home/user/.ros/log/2020-03-04-15-49-12-343851-user-Latitude-E5570-26745
[INFO] [launch]: Default logging verbosity is set to INFO
[ERROR] [launch]: Caught exception in launch (see debug for traceback): The launch file may have a syntax error, or its format is unknown

unable to understand what is the issue.

free_fleet_server_ros2 crashes

Bug report

Required information:

  • Operating system and version:
    • Ubuntu 20.04
  • OpenRMF installation type:
    • source
  • OpenRMF version or commit hash
    • main branch ros2
  • ROS distribution and version:
    • galactic
  • ROS installation type:
    • source

Description of the bug

After launch a ROS1 client, i launch a ROS2 server by ros2 launch ff_examples_ros2 fake_server.launch.xml, but the server node just informed as the following and it crashed

[INFO] [1638518022.483330172] [fake_server_node]: registered a new robot: [fake_ros1_robot]

[ERROR] [free_fleet_server_ros2-1]: process has died [pid 171912, exit code -11, cmd '/home/ngochuy/ros2_workspaces/multiRobot_ros2_ws/install/free_fleet_server_ros2/lib/free_fleet_server_ros2/free_fleet_server_ros2 --ros-args -r __node:=fake_server_node --params-file /tmp/launch_params_5f60anz4 --params-file /tmp/launch_params_y095tg1m --params-file /tmp/launch_params_5pjacfl9 --params-file /tmp/launch_params_mqlxvvgn --params-file /tmp/launch_params_sgoeuvs2 --params-file /tmp/launch_params_hea3pzog --params-file /tmp/launch_params_ppfoebdy --params-file /tmp/launch_params_p6v8acqt --params-file /tmp/launch_params_x50b77_d --params-file /tmp/launch_params_2x9dczw3 --params-file /tmp/launch_params_wjw0spop --params-file /tmp/launch_params_vvf4bnhq --params-file /tmp/launch_params_1jxnx647 --params-file /tmp/launch_params_w2jjb2z6 --params-file /tmp/launch_params_ihcizken --params-file /tmp/launch_params_rdikzrhe'].

Additional information

I have run the node free_fleet_server_ros2 directly, but the result was the same.

Question on message generation

Hi,
I have compiled and installed CycloneDDS, and am having issue finding dds_idlc to generate the message. Is idlc different from dds_idlc, and where could dds_idlc be found in CycloneDDS?

Make robot interaction reactive

Feature request

Description

The develop branch's Manager currently discovers and interacts with each robot in a polling manner. Following the effort of making free_fleet more reactive, this feature should introduce a RobotHandle that has been suggested in the PR comment.

Implementation considerations

This was briefly discussed in the develop branch, #76 (comment)

Alternatives

Additional information

free_fleet_client_ros2 build fails for Foxy

Bug report

Required information:

  • Operating system and version:
    • Ubuntu 20.04
  • ROS distribution and version:
    • Foxy
  • ROS installation type:
    • Binary
  • Package or library, if applicable:
    • Free Fleet

Description of the bug

Not able to compile the Free Fleet Client ROS2 pkg

Steps to reproduce the bug

  1. clone the free_fleet repo in the colcon_ws/src
  2. build using colcon build

std err log file

stderr.log

Expected behavior

Build Success

Actual behavior

Build Failed

Unable to connect Robot ROS1 free_fleet client and PC ROS2 free_fleet server using Pocket Wifi.

  • Operating system and version:
    PC: Ubuntu20.04, galactic robot: UbuntuMATE20.04, noetic

  • How to install RMF
    I installed RMF following the guide in the link below.
    https://github.com/open-rmf/free_fleet

Description of the bug

 I started free_fleet_client on my robot's PC and free_fleet_server on my PC according to barebones example, but I can't connect.
I have confirmed the ping connection and port connection between the robot and the PC.
Both the robot and PC set ROS_DOMAIN_ID=0 and opened ports 7400~8000, which would be used by DDS, to check the connection.
Pocket Wifi is used as a common network.

Steps to reproduce the bug

 PC: ROS_DOMAIN_ID=0, open ports 7400~8000 and start ff_examples_ros2 fake_server.launch.xml
 Robot: ROS_DOMAIN_ID=0, open ports 7400-8000 and run ff_examples_ros1 fake_client.launch.
 No connection.

Expected behavior

 The free_fleet_client running on the robot is registered in the log of free_fleet_sever.

Actual behavior

 No log is registered and no communication is established.

Additional information

 Network settings were confirmed at the following link.
http://wiki.ros.org/ja/ROS/NetworkSetup
 The following link was used as a reference for opening the port.
https://docs.ros.org/en/foxy/Concepts/About-Domain-ID.html
 A Raspberry Pi 4 Model B is used as the robot PC.

FreeFleet and Navigation2

Hi.. Are there plans to make free_fleet_client for ROS2 and Navigation2 soon? Is there a reason why free fleet client was developed to use Navigation1, although RMF is on ROS2?

Nav2 robot sometimes do not move immediately when sending task from RMF.

Bug report

Required information:

  • Operating system and version:
    • Ubuntu 20.04
  • OpenRMF installation type:
    • From source
  • OpenRMF version or commit hash
    • latest
  • ROS distribution and version:
    • ROS2 Galactic
  • ROS installation type:
    • from Docker
  • Package or library, if applicable:
    • FreeFleet,Navigation2,turtlebot3

Description of the bug

Sometimes robot does not move immediately when a task is sent from the RMF.

Steps to reproduce the bug

  1. I am using FreeFleet to connect RMF with Turtlebot3 running on Navigation2 on Gazebo.
  2. I send Loop task from RMF Panel to its Turtlebot3.

Expected behavior

Turtlebot3 on Gazebo is moving quickly.

Actual behavior

After a short time, the robot begins to move.

Screenshots

Additional information

Looking at /fleet_states topic, there is an instruction set to wait in place for 30 seconds (Responsive Wait?) when I have not sent a task from RMF.
I am assuming that the robot is stuck until it completes.

Generate message source files from IDL during build

Feature request

Description

Instead of committing the generated message source files into the repository, they should be generated, compiled and linked during build.

Implementation considerations

Avoid using ament macros as this package will need to support non-ROS 2 systems.

Examples,

After the free fleet server and client are connected, gazebo shuts down.

Bug report

Required information:

  • Operating system and version:
    • Ubuntu 20.04
  • OpenRMF installation type:
    • source
  • OpenRMF version or commit hash
    • main branch ros2
  • ROS distribution and version:
    • foxy
  • ROS installation type:
    • binaries

Description of the bug

After the free fleet server and client are connected, gazebo shuts down.
Screenshot from 2022-02-08 08-59-37

  1. ros2 launch clober_ros2_sim sim.launch.py ( run gazebo )
    Screenshot from 2022-02-08 08-47-55

  2. ros2 launch clober_ros2_sim nav.launch.py ( run navigation2 )
    Screenshot from 2022-02-08 08-48-10

  3. ros2 launch clober_ros2_ff clober_ff_client.launch.xml ( run free fleet ros2 client )
    Screenshot from 2022-02-08 08-48-47

  4. ros2 launch clober_ros2_ff clober_ff_server.launch.xml ( run free fleet ros2 server )
    Screenshot from 2022-02-08 08-48-37

DestinationRequest messages not arriving at ROS1 client while FleetState works fine

I have a fleet server (ROS2, separate computer) connected with a few robots (real, running ROS1 Melodic). The robots are registered (printout 'registered a new robot: XYZ'). /fleet_states actively displays the latest data from the robots. When I run the python script send_destination_request.py with the correct parameters however, there aren't any printouts on server or client side acknowledging the receipt. I manually added debug statements on the server side and am seeing that the goal is sent successfully (sent variable evaluates to 1). The client side already has an INFO printout that indicates when it receives a request, but I don't see any such printouts in the logs and there is no message on /move_base/goal. Since the client and server are able to communicate over DDS for the fleet states, I'm not sure what else could cause the message to not arrive.

I'm not sure if I'm missing something obvious or how to debug this so any input is appreciated. I'm on latest master 6633fdf

Why are the Server and the Clients Talking through DDS directly an dnot through stndard ROS2 topic/service/actions?

Hi,

Looking at the code, I can't help noticing that the server and client don't have connected topics anywhere, nor services or actions.
Why this design choice of using DDS communication directly, bypassing all the ROS2 systems?

Is there any technical explanation I'm not aware of?
Wouldnt it be more transparent if they used topics to send the information between them?

Thanks in advance

error for turtlebot3_world_burger.yaml

For humble need to change from differential to nav2_amcl::DifferentialMotionModel

sed -i 's/differential/nav2_amcl::DifferentialMotionModel/'g ~/ros2_free_fleet_ws/src/free_fleet/ff_examples_ros2/params/turtlebot3_world_burger.yaml

Add style linting

To comply with open-rmf/rmf#45 we should add style linting to this repository when time permits. I recommend waiting until after the current develop branch efforts are merged in.

ROS 2 navigation stack client

Feature request

Description

To implement a ROS 2 client to allow the free fleet server to integrate with standalone robots running the ROS 2 navigation stack.

Implementation considerations

The implementation will be replicating what was done for the ROS 1 client, targeting the main branch, as develop is still under active development.

Alternatives

Additional information

error during building for ros2

Hello.
During the installation tutorial I have come to the error during the execution of colcon build command.
Here is the result of it:

gryogor@gryogor-Lenovo-Y520-15IKBN:~/server_ws$ colcon build
Starting >>> cyclonedds
Starting >>> rmf_fleet_msgs
Starting >>> ament_cmake_catch2
Starting >>> rmf_cmake_uncrustify
Finished <<< ament_cmake_catch2 [0.57s]                                                       
Starting >>> rmf_dispenser_msgs
Finished <<< rmf_cmake_uncrustify [0.60s]                                                     
Starting >>> rmf_utils
Finished <<< rmf_utils [2.94s]                                                                      
Starting >>> rmf_traffic_msgs
Finished <<< rmf_dispenser_msgs [24.8s]                                                             
Starting >>> rmf_traffic
Finished <<< rmf_fleet_msgs [27.1s]                                   
Starting >>> rmf_door_msgs
Finished <<< rmf_door_msgs [19.7s]                                    
Starting >>> rmf_lift_msgs
--- stderr: cyclonedds                                                   
You have called ADD_LIBRARY for library ddsc without any source files. This typically indicates a problem with your CMakeLists.txt file
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.google.inject.internal.cglib.core.$ReflectUtils$1 (file:/usr/share/maven/lib/guice.jar) to method java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain)
WARNING: Please consider reporting this to the maintainers of com.google.inject.internal.cglib.core.$ReflectUtils$1
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
---
Finished <<< cyclonedds [52.2s]
Starting >>> free_fleet
Finished <<< free_fleet [7.39s]                                             
Starting >>> rmf_ingestor_msgs
Finished <<< rmf_lift_msgs [13.2s]                                              
Starting >>> rmf_task_msgs
Finished <<< rmf_ingestor_msgs [17.7s]                                                
Starting >>> free_fleet_client_ros1
[78.884s] WARNING:colcon.colcon_cmake.task.cmake.build:Could not run installation step for package 'free_fleet_client_ros1' because it has no 'install' target
--- stderr: free_fleet_client_ros1
catkin not found so skipping this ROS1 package
CMake Warning:
  Manually-specified variables were not used by the project:

    CATKIN_INSTALL_INTO_PREFIX_ROOT


---
Finished <<< free_fleet_client_ros1 [1.25s]
Starting >>> free_fleet_server_ros2
Finished <<< rmf_task_msgs [24.6s]                                                     
Starting >>> rmf_workcell_msgs
Finished <<< free_fleet_server_ros2 [11.2s]                                            
Starting >>> ff_rviz_plugins_ros1
[91.241s] WARNING:colcon.colcon_cmake.task.cmake.build:Could not run installation step for package 'ff_rviz_plugins_ros1' because it has no 'install' target
--- stderr: ff_rviz_plugins_ros1
catkin not found so skipping this ROS1 package
CMake Warning:
  Manually-specified variables were not used by the project:

    CATKIN_INSTALL_INTO_PREFIX_ROOT


---
Finished <<< ff_rviz_plugins_ros1 [1.20s]
Starting >>> ff_examples_ros1
--- stderr: rmf_traffic                                                                
In file included from /usr/include/eigen3/Eigen/LU:34:0,
                 from /usr/include/eigen3/Eigen/Geometry:16,
                 from /home/gryogor/server_ws/src/rmf_core/rmf_traffic/src/rmf_traffic/geometry/SimplePolygon.hpp:24,
                 from /home/gryogor/server_ws/src/rmf_core/rmf_traffic/src/rmf_traffic/geometry/SimplePolygon.cpp:21:
/usr/include/eigen3/Eigen/src/LU/Determinant.h: In member function ‘virtual rmf_traffic::geometry::CollisionGeometries rmf_traffic::geometry::SimplePolygonInternal::make_fcl() const’:
/usr/include/eigen3/Eigen/src/LU/Determinant.h:57:25: warning: ‘output’ may be used uninitialized in this function [-Wmaybe-uninitialized]
     return m.coeff(0,0) * m.coeff(1,1) - m.coeff(1,0) * m.coeff(0,1);
/usr/include/eigen3/Eigen/src/LU/Determinant.h:57:25: warning: ‘*((void*)& output +24)’ may be used uninitialized in this function [-Wmaybe-uninitialized]
/usr/include/eigen3/Eigen/src/LU/Determinant.h:57:55: warning: ‘*((void*)& output +8)’ may be used uninitialized in this function [-Wmaybe-uninitialized]
     return m.coeff(0,0) * m.coeff(1,1) - m.coeff(1,0) * m.coeff(0,1);
/usr/include/eigen3/Eigen/src/LU/Determinant.h:57:55: warning: ‘*((void*)& output +16)’ may be used uninitialized in this function [-Wmaybe-uninitialized]
/home/gryogor/server_ws/src/rmf_core/rmf_traffic/src/rmf_traffic/schedule/Negotiation.cpp: In static member function ‘static rmf_utils::optional<rmf_traffic::schedule::Negotiation> rmf_traffic::schedule::Negotiation::make(std::shared_ptr<const rmf_traffic::schedule::Viewer>, std::vector<long unsigned int>)’:
/home/gryogor/server_ws/src/rmf_core/rmf_traffic/src/rmf_traffic/schedule/Negotiation.cpp:897:10: error: could not convert ‘negotiation’ from ‘rmf_traffic::schedule::Negotiation’ to ‘rmf_utils::optional<rmf_traffic::schedule::Negotiation> {aka std::optional<rmf_traffic::schedule::Negotiation>}’
   return negotiation;
          ^~~~~~~~~~~
make[2]: *** [CMakeFiles/rmf_traffic.dir/src/rmf_traffic/schedule/Negotiation.cpp.o] Error 1
make[1]: *** [CMakeFiles/rmf_traffic.dir/all] Error 2
make: *** [all] Error 2
---
Failed   <<< rmf_traffic [1min 7s, exited with code 2]
Aborted  <<< ff_examples_ros1 [1.11s]
Aborted  <<< rmf_workcell_msgs [19.2s]                                                            
Aborted  <<< rmf_traffic_msgs [2min 1s]                                           
                                       
Summary: 14 packages finished [2min 4s]
  1 package failed: rmf_traffic
  3 packages aborted: ff_examples_ros1 rmf_traffic_msgs rmf_workcell_msgs
  5 packages had stderr output: cyclonedds ff_examples_ros1 ff_rviz_plugins_ros1 free_fleet_client_ros1 rmf_traffic
  3 packages not processed

How to apply free_fleet in real robot

Is there an example of using free_fleet for a turtlebot3 real robot?
And an example of rmf_demos using rmf navigation through a turtlebot3 real robot?

I tested the simulation function, and I am still a little confused about how to implement it in the real turtlebot3, especially I want to apply the rmf navigation method instead of the naviagation2 method

[Bug]: Disconnected problems when using free fleet for multiple Robot.

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

OS and version

Ubuntu 22.04

Open-RMF installation type

Source build

Other Open-RMF installation methods

No response

Open-RMF version or commit hash

2.3.0

ROS distribution

Humble

ROS installation type

Source build

Other ROS installation methods

No response

Package or library, if applicable

No response

Description of the bug

We got a project that include the management feature of RMF (mainly about the collision avoidance and traffic control) with multiple Robots. We got our Robots connect to a server PC (which run the RMF's core) through Wifi, and the connection is establish by the free fleet (our Robots use navigation stack of ROS 2 to move) with a server and multiple client. The project is running stably with 1 to 3 robots but when the number of robot is > 4 just one of them is working fine, the other can not update their position to RMF's server (the frequency of the update position action is 5Hz) and that where everything get messy. I have tried many way to config the CycloneDDS but it was inefficient

Steps to reproduce the bug

  1. Launch RMF's core
  2. Launch free fleet's server on server PC
  3. Launch each Robot navigation and free fleet's client
  4. The problem start when the number of robot is higher than 4

Expected behavior

No response

Actual behavior

No response

Additional information or screenshots

No response

How to start RMF with free fleet

I was able to launch free fleet with both the ros2 server side and the ros1 client side:

ros2 launch ff_examples_ros2 turtlebot3_world_ff.launch.xml
roslaunch ff_examples_ros1 turtlebot3_world_ff.launch

But how do I start RMF with this? Is there a specific launch file with a configuration for the turtlebot world?

free_fleet_server_ros2 build fails for Galactic

Bug report

Required information:

-ROS2 Galactic

Description of the bug

Some API changes break the free_fleet_server_ros2 build:

--- stderr: free_fleet_server_ros2
In file included from /opt/rmf/src/free_fleet/free_fleet_server_ros2/src/main.cpp:22:
/opt/rmf/src/free_fleet/free_fleet_server_ros2/src/ServerNode.hpp:110:11: error: ‘callback_group’ in namespace ‘rclcpp’ does not name a type; did you mean ‘CallbackGroup’?
  110 |   rclcpp::callback_group::CallbackGroup::SharedPtr update_state_callback_group;
      |           ^~~~~~~~~~~~~~
      |           CallbackGroup
/opt/rmf/src/free_fleet/free_fleet_server_ros2/src/ServerNode.hpp:123:11: error: ‘callback_group’ in namespace ‘rclcpp’ does not name a type; did you mean ‘CallbackGroup’?
  123 |   rclcpp::callback_group::CallbackGroup::SharedPtr
      |           ^~~~~~~~~~~~~~
      |           CallbackGroup
/opt/rmf/src/free_fleet/free_fleet_server_ros2/src/main.cpp: In function ‘int main(int, char**)’:
/opt/rmf/src/free_fleet/free_fleet_server_ros2/src/main.cpp:39:15: error: ‘rclcpp::executor’ has not been declared
   39 |       rclcpp::executor::ExecutorArgs(), 2};
      |               ^~~~~~~~
/opt/rmf/src/free_fleet/free_fleet_server_ros2/src/main.cpp:39:42: error: no matching function for call to ‘rclcpp::executors::MultiThreadedExecutor::MultiThreadedExecutor(<brace-enclosed initializer list>)’
   39 |       rclcpp::executor::ExecutorArgs(), 2};
      |                                          ^
In file included from /opt/ros/galactic/include/rclcpp/executors.hpp:21,
                 from /opt/ros/galactic/include/rclcpp/rclcpp.hpp:156,
                 from /opt/rmf/src/free_fleet/free_fleet_server_ros2/src/main.cpp:20:
/opt/ros/galactic/include/rclcpp/executors/multi_threaded_executor.hpp:56:3: note: candidate: ‘rclcpp::executors::MultiThreadedExecutor::MultiThreadedExecutor(const rclcpp::ExecutorOptions&, size_t, bool, std::chrono::nanoseconds)’
   56 |   MultiThreadedExecutor(
      |   ^~~~~~~~~~~~~~~~~~~~~
/opt/ros/galactic/include/rclcpp/executors/multi_threaded_executor.hpp:56:3: note:   conversion of argument 1 would be ill-formed:
make[2]: *** [CMakeFiles/free_fleet_server_ros2.dir/build.make:63: CMakeFiles/free_fleet_server_ros2.dir/src/main.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:105: CMakeFiles/free_fleet_server_ros2.dir/all] Error 2
make: *** [Makefile:141: all] Error 2
---
Failed   <<< free_fleet_server_ros2 [3.93s, exited with code 2]

RMF integration Issue

Required information:

  • Operating system and version:
    • Ubuntu22.04
  • OpenRMF installation type:
    • Binaries - (rmf-demos from source)
  • ROS distribution and version:
    • Humble
  • ROS installation type:
    • binaries

Description

I'm working on a create3 robot in a gazebo simulation environment, and nav2 tested and working.
I'm able launch correctly the ff server and client and also submit goals -> the following are the terminals ouputs:

FF Server

[free_fleet_server_ros2-1] Greetings from free_fleet_server_ros2
[free_fleet_server_ros2-1] ROS 2 SERVER CONFIGURATION
[free_fleet_server_ros2-1]   fleet name: mci_fleet
[free_fleet_server_ros2-1]   update state frequency: 20.0
[free_fleet_server_ros2-1]   publish state frequency: 2.0
[free_fleet_server_ros2-1]   TOPICS
[free_fleet_server_ros2-1]     fleet state: fleet_states
[free_fleet_server_ros2-1]     mode request: robot_mode_requests
[free_fleet_server_ros2-1]     path request: robot_path_requests
[free_fleet_server_ros2-1]     destination request: robot_destination_requests
[free_fleet_server_ros2-1] SERVER-CLIENT DDS CONFIGURATION
[free_fleet_server_ros2-1]   dds domain: 42
[free_fleet_server_ros2-1]   TOPICS
[free_fleet_server_ros2-1]     robot state: robot_state
[free_fleet_server_ros2-1]     mode request: mode_request
[free_fleet_server_ros2-1]     path request: path_request
[free_fleet_server_ros2-1]     destination request: destination_request
[free_fleet_server_ros2-1] COORDINATE TRANSFORMATION
[free_fleet_server_ros2-1]   translation x (meters): 0.000
[free_fleet_server_ros2-1]   translation y (meters): 0.000
[free_fleet_server_ros2-1]   rotation (radians): 0.000
[free_fleet_server_ros2-1]   scale: 1.000
[free_fleet_server_ros2-1] [INFO] [1682082649.195530283] [mci_server_node]: registered a new robot: [robot]

FF Client

[free_fleet_client_ros2-1] [INFO] [1682082729.961931728] [mci_client_node]: Greetings from mci_client_node
[free_fleet_client_ros2-1] ROS 2 CLIENT CONFIGURATION
[free_fleet_client_ros2-1]   fleet name: mci_fleet
[free_fleet_client_ros2-1]   robot name: robot
[free_fleet_client_ros2-1]   robot model: robot_model
[free_fleet_client_ros2-1]   level name: map
[free_fleet_client_ros2-1]   wait timeout: 10.0
[free_fleet_client_ros2-1]   update request frequency: 10.0
[free_fleet_client_ros2-1]   publish state frequency: 1.0
[free_fleet_client_ros2-1]   maximum distance to first waypoint: 17.0
[free_fleet_client_ros2-1]   TOPICS
[free_fleet_client_ros2-1]     battery state: /battery_state
[free_fleet_client_ros2-1]     move base server: /navigate_to_pose
[free_fleet_client_ros2-1]     docking trigger server: 
[free_fleet_client_ros2-1]   ROBOT FRAMES
[free_fleet_client_ros2-1]     map frame: map
[free_fleet_client_ros2-1]     robot frame: base_footprint
[free_fleet_client_ros2-1] CLIENT-SERVER DDS CONFIGURATION
[free_fleet_client_ros2-1]   dds domain: 42
[free_fleet_client_ros2-1]   TOPICS
[free_fleet_client_ros2-1]     robot state: robot_state
[free_fleet_client_ros2-1]     mode request: mode_request
[free_fleet_client_ros2-1]     path request: path_request
[free_fleet_client_ros2-1]     destination request: destination_request
[free_fleet_client_ros2-1] [INFO] [1682082729.965220144] [mci_client_node]: waiting for connection with navigation action server: /navigate_to_pose
[free_fleet_client_ros2-1] [INFO] [1682082732.103828787] [mci_client_node]: connected with move base action server: /navigate_to_pose
[free_fleet_client_ros2-1] [INFO] [1682082732.115180647] [mci_client_node]: starting update timer.
[free_fleet_client_ros2-1] [INFO] [1682082732.115283924] [mci_client_node]: starting publish timer.
[free_fleet_client_ros2-1] [INFO] [1682082815.014114023] [mci_client_node]: received a Destination command, x: 1.00, y: 0.70, yaw: 0.00
[free_fleet_client_ros2-1] [INFO] [1682082815.014322522] [mci_client_node]: sending next goal.
[free_fleet_client_ros2-1] [INFO] [1682082815.014989892] [mci_client_node]: Goal accepted by server, waiting for result
[free_fleet_client_ros2-1] [ERROR] [1682082815.015294781] [mci_client_node]: Goal was canceled
[free_fleet_client_ros2-1] [INFO] [1682082815.113969278] [mci_client_node]: sending next goal.
[free_fleet_client_ros2-1] [INFO] [1682082815.114338979] [mci_client_node]: Goal accepted by server, waiting for result
[free_fleet_client_ros2-1] [INFO] [1682082815.115032935] [mci_client_node]: Distance remaining: 0.235408
[free_fleet_client_ros2-1] [INFO] [1682082820.204779101] [mci_client_node]: Distance remaining: 0.225000
[free_fleet_client_ros2-1] [INFO] [1682082822.874965753] [mci_client_node]: current goal state: SUCCEEEDED.

Send Destination

ros2 run ff_examples_ros2 send_destination_request.py -f mci_fleet -r robot -x 1.0 -y 0.7 --yaw 0.0 -i 34724
fleet_name: mci_fleet
robot_name: robot
x: 1.0
y: 0.7
yaw: 0.0
level_name: B1
task_id: 34724
topic_name: robot_destination_requests
all done!

Questions

Now to integrate this with RMF I did the following:

  • used the traffic editor to generate a lane graph
  • try to launch all the open_rmf components with the following launch files:
    • common.launch.xml:
<?xml version='1.0' ?>

<launch>

 <arg name="use_sim_time" default="false" description="Use the /clock topic for time to sync with simulation"/>
 <arg name="viz_config_file" default="$(find-pkg-share rmf_schedule_visualizer)/config/rmf.rviz"/>
 <arg name="config_file" description="Building description file required by building_map_tools"/>
 <arg name="dashboard_config_file" default="" description="Path to dashboard config for web rmf panel file"/>
 <arg name="headless" description="do not launch rviz; launch gazebo in headless mode" default="false"/>
 <arg name="bidding_time_window" description="Time window in seconds for task bidding process" default="2.0"/>

 <!-- Traffic Schedule  -->
 <node pkg="rmf_traffic_ros2" exec="rmf_traffic_schedule" output="both">
   <param name="use_sim_time" value="$(var use_sim_time)"/>
 </node>

 <!-- Blockade Moderator -->
 <node pkg="rmf_traffic_ros2" exec="rmf_traffic_blockade" output="both">
   <param name="use_sim_time" value="$(var use_sim_time)"/>
 </node>

 <!-- Building Map  -->
 <group>
   <node pkg="rmf_building_map_tools" exec="building_map_server" args="$(var config_file)">
     <param name="use_sim_time" value="$(var use_sim_time)"/>
   </node>
 </group>
 
 <!-- Visualizer -->
 <group>
   <include file="$(find-pkg-share rmf_visualization)/visualization.launch.xml">
     <arg name="use_sim_time" value="$(var use_sim_time)"/>
     <arg name="map_name" value="map"/>
     <arg name="viz_config_file" value ="$(var viz_config_file)"/>
     <arg name="headless" value="$(var headless)"/>
   </include>
 </group>  

 <!-- Dispatcher Node -->
 <group>
   <node pkg="rmf_task_ros2" exec="rmf_task_dispatcher"  output="screen">
     <param name="use_sim_time" value="$(var use_sim_time)"/>
     <param name="bidding_time_window" value="$(var bidding_time_window)"/>
   </node>
 </group>

 <include file="$(find-pkg-share rmf_demos)/dashboard.launch.xml">
   <arg name="use_sim_time" value="$(var use_sim_time)"/>
   <arg name="dashboard_config_file" value ="$(var dashboard_config_file)"/>
   <arg name="bidding_time_window" value="$(var bidding_time_window)"/>
 </include>

</launch> 

  • fleet adapter
    basically taken from HERE

that's the failing output that I get when starting rmf up

[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [rmf_traffic_schedule-1]: process started with pid [479366]
[INFO] [rmf_traffic_blockade-2]: process started with pid [479368]
[INFO] [building_map_server-3]: process started with pid [479370]
[INFO] [schedule_visualizer_node-4]: process started with pid [479372]
[INFO] [fleetstates_visualizer_node-5]: process started with pid [479374]
[INFO] [rmf_visualization_building_systems-6]: process started with pid [479376]
[INFO] [navgraph_visualizer_node-7]: process started with pid [479378]
[INFO] [floorplan_visualizer_node-8]: process started with pid [479380]
[INFO] [obstacle_visualizer_node-9]: process started with pid [479382]
[INFO] [rviz2-10]: process started with pid [479384]
[INFO] [rmf_task_dispatcher-11]: process started with pid [479386]
[INFO] [simple_api_server-12]: process started with pid [479388]
[INFO] [full_control-13]: process started with pid [479406]
[INFO] [robot_state_aggregator-14]: process started with pid [479420]
[rviz2-10] Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.
[rmf_task_dispatcher-11] ~Initializing Dispatcher Node~
[fleetstates_visualizer_node-5] [INFO] [1682099569.808648972] [fleet_states_visualizer]: Configuring fleet_states_visualizer...
[fleetstates_visualizer_node-5] [INFO] [1682099569.808784827] [fleet_states_visualizer]: Setting parameter initial_map_name to L1
[fleetstates_visualizer_node-5] [INFO] [1682099569.808820468] [fleet_states_visualizer]: Setting parameter fleet_state_nose_scale to 0.500000
[rmf_traffic_schedule-1] [INFO] [1682099569.815119965] [rmf_traffic_schedule_node_5992fdaa_ada6_4107_af03_b2b4c5f17823]: Successfully loaded logfile .rmf_schedule_node.yaml 
[rmf_traffic_schedule-1] [INFO] [1682099569.819879851] [rmf_traffic_schedule_node_5992fdaa_ada6_4107_af03_b2b4c5f17823]: Set up heartbeat on /rmf_traffic/heartbeat with liveliness lease duration of 10000 ms and deadline of 10000 ms
[obstacle_visualizer_node-9] [INFO] [1682099569.829036516] [rmf_obstacle_visualizer]: Beginning RMF obstacle visualizer node
[fleetstates_visualizer_node-5] [INFO] [1682099569.831865232] [fleet_states_visualizer]: Running fleet_states_visualizer...
[schedule_visualizer_node-4] [INFO] [1682099569.868008501] [schedule_visualizer_node]: Setting parameter rate to 10.000000
[schedule_visualizer_node-4] [INFO] [1682099569.868165197] [schedule_visualizer_node]: Setting parameter path_width to 0.200000
[schedule_visualizer_node-4] [INFO] [1682099569.868207909] [schedule_visualizer_node]: Setting parameter initial_map_name to map
[schedule_visualizer_node-4] [INFO] [1682099569.868243006] [schedule_visualizer_node]: Setting parameter wait_secs to 10
[schedule_visualizer_node-4] [INFO] [1682099569.868279605] [schedule_visualizer_node]: Setting parameter port to 8006
[schedule_visualizer_node-4] [INFO] [1682099569.868310943] [schedule_visualizer_node]: Setting parameter retained_history_count to 50
[rmf_task_dispatcher-11] [INFO] [1682099569.929603733] [rmf_dispatcher_node]:  Declared Time Window Param as: 2.000000 secs
[rmf_task_dispatcher-11] [INFO] [1682099569.929881155] [rmf_dispatcher_node]:  Declared Terminated Tasks Max Size Param as: 100
[rmf_task_dispatcher-11] [INFO] [1682099569.929921377] [rmf_dispatcher_node]:  Declared publish_active_tasks_period as: 2 secs
[rmf_task_dispatcher-11] [INFO] [1682099569.929954764] [rmf_dispatcher_node]:  Use timestamp with task_id: false
[rmf_task_dispatcher-11] [INFO] [1682099569.945550109] [rmf_dispatcher_node]: Starting task dispatcher node
[navgraph_visualizer_node-7] [INFO] [1682099570.194217228] [navgraph_visualizer]: Setting parameter initial_map_name to map
[navgraph_visualizer_node-7] [INFO] [1682099570.194661246] [navgraph_visualizer]: Setting parameter lane_width to 0.500000
[navgraph_visualizer_node-7] [INFO] [1682099570.194706734] [navgraph_visualizer]: Setting parameter lane_transparency to 0.600000
[navgraph_visualizer_node-7] [INFO] [1682099570.194728621] [navgraph_visualizer]: Setting parameter waypoint_scale to 1.300000
[navgraph_visualizer_node-7] [INFO] [1682099570.194745749] [navgraph_visualizer]: Setting parameter text_scale to 0.700000
[navgraph_visualizer_node-7] [INFO] [1682099570.216793033] [navgraph_visualizer]: NavGraph visualizer is running...
[rmf_traffic_schedule-1] [INFO] [1682099570.218437268] [rmf_traffic_schedule_node_5992fdaa_ada6_4107_af03_b2b4c5f17823]: Beginning traffic schedule node
[rmf_traffic_blockade-2] [INFO] [1682099570.232294176] [rmf_traffic_blockade_node]: Beginning traffic blockade node
[full_control-13] [INFO] [1682099570.277464260] [mci_fleet_fleet_adapter]: Parameter [discovery_timeout] set to: 60.000000
[rmf_visualization_building_systems-6] [INFO] [1682099570.334363118] [building_systems_visualizer]: Building systems visualizer started...
[rmf_visualization_building_systems-6] /opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/qos.py:307: UserWarning: HistoryPolicy.RMW_QOS_POLICY_HISTORY_KEEP_LAST is deprecated. Use HistoryPolicy.KEEP_LAST instead.
[rmf_visualization_building_systems-6]   warnings.warn(
[rmf_visualization_building_systems-6] /opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/qos.py:307: UserWarning: ReliabilityPolicy.RMW_QOS_POLICY_RELIABILITY_RELIABLE is deprecated. Use ReliabilityPolicy.RELIABLE instead.
[rmf_visualization_building_systems-6]   warnings.warn(
[rmf_visualization_building_systems-6] /opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/qos.py:307: UserWarning: DurabilityPolicy.RMW_QOS_POLICY_DURABILITY_TRANSIENT_LOCAL is deprecated. Use DurabilityPolicy.TRANSIENT_LOCAL instead.
[rmf_visualization_building_systems-6]   warnings.warn(
[rviz2-10] [INFO] [1682099570.428700236] [rviz2]: Stereo is NOT SUPPORTED
[rviz2-10] [INFO] [1682099570.428766000] [rviz2]: OpenGl version: 4.6 (GLSL 4.6)
[rviz2-10] [INFO] [1682099570.444632519] [rviz2]: Stereo is NOT SUPPORTED
[floorplan_visualizer_node-8] [INFO] [1682099570.565447763] [floorplan_visualizer]: Configuring floorplan_visualizer...
[floorplan_visualizer_node-8] [INFO] [1682099570.565665170] [floorplan_visualizer]: Setting parameter initial_map_name to map
[floorplan_visualizer_node-8] [INFO] [1682099570.575944154] [floorplan_visualizer]: Running floorplan_visualizer...
[building_map_server-3] [INFO] [1682099570.740936065] [building_map_server]: loading map path: /home/matteocarlone/ff_mci_ws/install/ff_examples_ros2/share/ff_examples_ros2/maps/ff.building.yaml
[building_map_server-3] [INFO] [1682099570.743431284] [building_map_server]: opening: /home/matteocarlone/ff_mci_ws/install/ff_examples_ros2/share/ff_examples_ros2/maps/sim_arena.png
[building_map_server-3] [INFO] [1682099570.744086296] [building_map_server]: read 592 byte image
[building_map_server-3] [INFO] [1682099570.744706538] [building_map_server]: unable to generate GeoJSON for this map.
[simple_api_server-12] Set Server IP to: 0.0.0.0
[simple_api_server-12] Set Server port to: 0.0.0.0:8083
[simple_api_server-12] Set RMF Websocket port to: localhost:7878
[simple_api_server-12] Starting Websocket Server
[simple_api_server-12] Starting RMF_Demos API Server: 0.0.0.0:8083, with ws://localhost:7878
[simple_api_server-12]  * Serving Flask app 'rmf_demos_panel.simple_api_server'
[simple_api_server-12]  * Debug mode: off
[simple_api_server-12] Exception in thread Thread-2 (broadcast_states):
[simple_api_server-12] Traceback (most recent call last):
[simple_api_server-12]   File "/usr/lib/python3.10/threading.py", line 1016, in _bootstrap_inner
[simple_api_server-12]     self.run()
[simple_api_server-12]   File "/usr/lib/python3.10/threading.py", line 953, in run
[simple_api_server-12]     self._target(*self._args, **self._kwargs)
[simple_api_server-12]   File "/home/matteocarlone/ws_rmf_demos/install/rmf_demos_panel/lib/python3.10/site-packages/rmf_demos_panel/simple_api_server.py", line 135, in broadcast_states
[simple_api_server-12]     socketio.emit('task_status', tasks, broadcast=True, namespace=ns)
[simple_api_server-12]   File "/home/matteocarlone/.local/lib/python3.10/site-packages/flask_socketio/__init__.py", line 462, in emit
[simple_api_server-12]     self.server.emit(event, *args, namespace=namespace, to=to,
[simple_api_server-12] TypeError: Server.emit() got an unexpected keyword argument 'broadcast'
[building_map_server-3] [INFO] [1682099570.780837658] [building_map_server]: publishing map...
[building_map_server-3] [INFO] [1682099570.781793542] [building_map_server]: ready to serve map: "ff"  Ctrl+C to exit...
[rmf_traffic_schedule-1] [INFO] [1682099571.139763078] [rmf_traffic_schedule_node_5992fdaa_ada6_4107_af03_b2b4c5f17823]: Registered new query [1]
[schedule_visualizer_node-4] [INFO] [1682099571.144327194] [schedule_data_node]: Registering to query topic rmf_traffic/query_update_1
[schedule_visualizer_node-4] [INFO] [1682099571.153465683] [schedule_data_node]: [rmf_traffic_ros2::MirrorManager::request_update] Requesting changes for query ID [1] since beginning of recorded history
[rmf_traffic_schedule-1] [INFO] [1682099571.191508858] [rmf_traffic_schedule_node_5992fdaa_ada6_4107_af03_b2b4c5f17823]: A new mirror is tracking query ID [1]
[schedule_visualizer_node-4] [INFO] [1682099571.198724487] [schedule_visualizer_node]: Successfully connected to rmf_traffic_schedule node.
[full_control-13] [INFO] [1682099571.275803026] [mci_fleet_fleet_adapter]: Registering to query topic rmf_traffic/query_update_1
[navgraph_visualizer_node-7] [INFO] [1682099571.340311138] [navgraph_visualizer]: Publishing navgraphs on level L1
[full_control-13] [INFO] [1682099571.362359912] [mci_fleet_fleet_adapter]: Parameter [linear_velocity] set to: 0.500000
[full_control-13] [INFO] [1682099571.362596370] [mci_fleet_fleet_adapter]: Parameter [angular_velocity] set to: 0.600000
[full_control-13] [INFO] [1682099571.362969028] [mci_fleet_fleet_adapter]: Parameter [linear_acceleration] set to: 0.750000
[full_control-13] [INFO] [1682099571.363164118] [mci_fleet_fleet_adapter]: Parameter [angular_acceleration] set to: 2.000000
[full_control-13] [INFO] [1682099571.363331082] [mci_fleet_fleet_adapter]: Parameter [footprint_radius] set to: 0.150000
[full_control-13] [INFO] [1682099571.363445683] [mci_fleet_fleet_adapter]: Parameter [vicinity_radius] set to: 0.200000
[full_control-13] [INFO] [1682099571.363595511] [mci_fleet_fleet_adapter]: Parameter [reversible] set to: 1
[full_control-13] The fleet [mci_fleet] has the following named waypoints:
[full_control-13]  -- waypoint
[full_control-13]  -- start
[full_control-13] [INFO] [1682099571.394862937] [mci_fleet_fleet_adapter]: Parameter [battery_voltage] set to: 12.000000
[full_control-13] [INFO] [1682099571.396088615] [mci_fleet_fleet_adapter]: Parameter [battery_capacity] set to: 24.000000
[full_control-13] [INFO] [1682099571.396992555] [mci_fleet_fleet_adapter]: Parameter [battery_charging_current] set to: 5.000000
[full_control-13] [INFO] [1682099571.397349704] [mci_fleet_fleet_adapter]: Parameter [mass] set to: 20.000000
[full_control-13] [INFO] [1682099571.397564011] [mci_fleet_fleet_adapter]: Parameter [inertia] set to: 10.000000
[full_control-13] [INFO] [1682099571.397771473] [mci_fleet_fleet_adapter]: Parameter [friction_coefficient] set to: 0.220000
[full_control-13] [INFO] [1682099571.398040366] [mci_fleet_fleet_adapter]: Parameter [ambient_power_drain] set to: 0.000000
[full_control-13] [INFO] [1682099571.398299185] [mci_fleet_fleet_adapter]: Parameter [tool_power_drain] set to: 0.000000
[full_control-13] [INFO] [1682099571.398493780] [mci_fleet_fleet_adapter]: Parameter [drain_battery] set to: 0
[full_control-13] [INFO] [1682099571.399221824] [mci_fleet_fleet_adapter]: Parameter [recharge_threshold] set to: 0.100000
[full_control-13] [INFO] [1682099571.399540091] [mci_fleet_fleet_adapter]: Parameter [recharge_soc] set to: 1.000000
[full_control-13] [INFO] [1682099571.399705641] [mci_fleet_fleet_adapter]: Fleet is not configured to perform any finishing request
[full_control-13] [INFO] [1682099571.400439151] [mci_fleet_fleet_adapter]: Parameter [delay_threshold] set to: 15.000000
[full_control-13] [INFO] [1682099571.418287728] [mci_fleet_fleet_adapter]: Starting Fleet Adapter
[full_control-13] [INFO] [1682099571.419099294] [mci_fleet_fleet_adapter]: Mirror handling new sync of 1 queries from schedule node [5992fdaa-ada6-4107-af03-b2b4c5f17823]
[rmf_traffic_schedule-1] terminate called after throwing an instance of 'rclcpp::exceptions::RCLError'
[rmf_traffic_schedule-1]   what():  failed to send response: client will not receive response, at ./src/rmw_response.cpp:149, at ./src/rcl/service.c:314
[rviz2-10] Warning: Invalid frame ID "" passed to canTransform argument source_frame - in tf2 frame_ids cannot be empty
[rviz2-10]          at line 93 in ./src/buffer_core.cpp
[rviz2-10] Warning: Invalid frame ID "" passed to canTransform argument source_frame - in tf2 frame_ids cannot be empty
[rviz2-10]          at line 93 in ./src/buffer_core.cpp
[rviz2-10] [INFO] [1682099571.542762862] [rviz2]: Trying to create a map of size 73 x 125 using 1 swatches
[rviz2-10] [ERROR] [1682099571.592001177] [rviz2]: Vertex Program:rviz/glsl120/indexed_8bit_image.vert Fragment Program:rviz/glsl120/indexed_8bit_image.frag GLSL link result : 
[rviz2-10] active samplers with a different type refer to the same texture image unit
[full_control-13] [ERROR] [1682099571.692869663] [mci_fleet_fleet_adapter]: Unable to compute a StartSet for robot [robot] using level_name [L1] and location [0.019110, -0.027133, -0.001876] specified in its RobotState message. This can happen if the level_name in the RobotState message does not match any of the map names in the navigation graph supplied or if the location reported in the RobotState message is far way from the navigation graph. This robot will not be added to the fleet [mci_fleet]. The following hint may help with debugging: The closest waypoint on the navigation graph [start] is a distance of [64.919612m] from the robot.
[ERROR] [rmf_traffic_schedule-1]: process has died [pid 479366, exit code -6, cmd '/opt/ros/humble/lib/rmf_traffic_ros2/rmf_traffic_schedule --ros-args --params-file /tmp/launch_params_gfyjapk0'].

Do you know what I'm missing? I feel that I haven't really understood the role of the fleet adapter, of the transformation of coordinates from the robot and rmf that are supposed to be made in the server launch file and also how the ff client-server architecture manage the ros-namespaces.

Thanka a lot in advance for a possible help!

Image

Screenshot from 2023-04-21 19-54-42

Installation troubles

Hi,

I was trying to set install the workspaces in ROS1 as well as in ROS2, however, there were issues regarding the dependencies on external packages. This could be avoided by possibly adding the following

# install dependencies
rosdep update
rosdep install --from-paths src --ignore-src -y

after entering the workspace and sourcing the environment.

For building the workspace in ROS 1, it could also be helpful to add in these 2 lines

touch ~/client_ws/src/free_fleet/free_fleet_examples_ros2/CATKIN_IGNORE
touch ~/client_ws/src/free_fleet/free_fleet_server_ros2/CATKIN_IGNORE

so that we can build the ROS1 packages while ignoring the ROS2 packages.

ROS2 client crashes when reaching waypoint to soon

Bug report

Required information:

  • Operating system and version:
    • Ubuntu 20.04
  • OpenRMF installation type:
    • source
  • OpenRMF version or commit hash
    • main branch ros2
  • ROS distribution and version:
    • foxy & galactic
  • ROS installation type:
    • binary

Description of the bug

When running free fleet ros2 client and server in simulation and the robot reaches the goal to soon the node will crash. The reason is that the default clock type of ros2 messages is ROS_TIME and the default constructor of Time uses SYSTEM_TIME.

Additional information

Will push a pull request to fix this issue.

What are the plans on moving to humble (Ubuntu 22.04)?

Feature request

Description

What are the plans to moving to ros2 humble (Ubuntu 22.04 LTS)?

Note:

  1. Ubuntu 22.04 LTS does not have a ROS1 official release
  2. open-rmf has already moved to humble

Implementation considerations

The "easy button" would be just deleting all ros1 related packages and files in this repo.
I have confirmed that it'll build properly under humble.

Alternatives

Another way is to split the package for server(humble), client(humble), and client(noetic).
Although this approach will be time-consuming, it'll retain support for ROS1 based robots.

Logging output should indicate if a request is rejected for any reason

Feature request

Description

With reference to #77

When request is rejected by either the server or the client, there should be some form of printout or logging that explains why it has been rejected.

Implementation considerations

The implementation for this should target main for now, there will be a separate feature request for the develop branch.

Alternatives

Additional information

Server crashes when client is launched

I am trying the turtlebot example but the server crashes everytime I launch a client instance with the follwoing error:

[free_fleet_server_ros2-1] terminate called after throwing an instance of 'std::logic_error' [free_fleet_server_ros2-1] what(): basic_string::_M_construct null not valid [ERROR] [free_fleet_server_ros2-1]: process has died [pid 15554, exit code -6, cmd '/home/erius/ff_ws/install/free_fleet_server_ros2/lib/free_fleet_server_ros2/free_fleet_server_ros2 --ros-args -r __node:=turtlebot3_fleet_server_node --params-file /tmp/launch_params_l716rfh6 --params-file /tmp/launch_params_smzkzt_i --params-file /tmp/launch_params_dl3mtr3s --params-file /tmp/launch_params__oqa7rql --params-file /tmp/launch_params_11ipip43 --params-file /tmp/launch_params__g4f4107 --params-file /tmp/launch_params_g29kzvkv --params-file /tmp/launch_params_ddlx904y --params-file /tmp/launch_params_fi4cm0nm --params-file /tmp/launch_params_kjeirlq2 --params-file /tmp/launch_params_obxmqcmx --params-file /tmp/launch_params__am9z1ge --params-file /tmp/launch_params_etzm3_3x --params-file /tmp/launch_params_sy7g1cxg --params-file /tmp/launch_params_6afvothn --params-file /tmp/launch_params_0lg_tq4j'].

I am running both the server and the client on a computer with ubuntu 20.04. The server is running under ROS2 Galactic while the client is running on ROS Noetic. I've tried to run the ROS2 version of the client but it doesn't starts the simulation due to some error on TFs.

Also, I've tried to run the server and the client in different computers connected through a VPN. In that case, the server (server is running on Ubuntu 22.04 & ROS2 Humble) detects the client and registers it but it does not publish /fleet_states topic and I can't send any command using the provided python scripts.

Question about free-fleet, Is it possible to bind a robot without nav2 pkg to a robot with nav2 pkg?

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

Description

I try two robot, tinyRobot and turtlebot3_burger in free-fleett. so i make tinyRobot.urdf, map etc.. umm. i have question about that. this is server error? but the comment does not look like server error. how can i do it!?

[free_fleet_client_ros2-11] [ERROR] [1691337344.234318697] [transformPoseInTargetFrame]: Extrapolation Error looking up target frame: Lookup would require extrapolation into the past. Requested time 758.837000 but the earliest data is at time 1691337334.253269, when looking up transform from frame [tinyRobot_base_footprint] to frame [map]
[free_fleet_client_ros2-11]
[free_fleet_client_ros2-11] [WARN] [1691337344.234345710] [tinyRobot_A_free_fleet_client_node]: Unable to get robot pose.

I want to test the other robot (turtlebot3_burger & tinyRobot). so i try to free-fleet and build up tinyRobot & turtlebot3_burger. and so i command the task. turtlebot3 is moving to waypoint with nav2. but tinyRobot isn't moving. I want to move just move about tinyRobot.(without nav2). so how do i that..? i know the control_type(full_control, readonly). i check the full_control(slotcar.so) in tinyRobot's sdf file.

help me.. please..

terminal 1 :
ros2 launch ff_examples_ros2 turtlebot3_square_ff.launch.xml
terminal 2 :
ros2 launch rmf_demos square.launch.xml
terminal 3 :
ros2 launch ff_examples_ros2 turtlebot3_square_ff_server.launch.xml

teminal 4 :
ros2 run rmf_demos_task dispatch-patrol -p n3 --use_sim_time (for tb3_burger)
ros2 run rmf_demos_task dispatch-patrol -p n8--use_sim_time (for tinyRobot)

image

error for qt5-default not supported on humble

qt5-default not supported on humble .I have not installed qt5-default, it seems that the installation has no effect, and the use has no effect, but my system has installed python3-pyqt5

dds_message’ was not declared in this scope DDS::ReturnCode_t status = cdr_ts.deserialize(buffer, length, &dds_message);

I am not able to compile the code
getting this error

dds_message’ was not declared in this scope
   DDS::ReturnCode_t status = cdr_ts.deserialize(buffer, length, &dds_message);

Also when compile the colcon build --packages-select cyclonedds --cmake-args -DBUILD_IDLC=NO

You have called ADD_LIBRARY for library ddsc without any source files. This typically indicates a problem with your CMakeLists.txt file

Free fleet incompatible with Python rmf fleet adapter

Bug report

We have created a custom adapter based on this: Fleet Adapter

With slotcar plugin in simulation works perfectly.

But when we swap to use the free fleet we have two main issues:

  1. Free fleet instead of publishing in the topic ' /robot_state( where slotcar publishes ) it publishes into ' /fleet_states' . This is easily fixed by adapting our fleet adapter to read from/fleet_staes`. No big deal there.
  2. Here comes the second issue: BUT then when doing this, the fleet adapter starts ALSO publishing into fleet_states. This is quite strange because as far as we understand , it makes no sense that it published the fleet states. And for some reason both publications don't match, so the panner turns crazy. The fleet_states published by the custom fleet adapter publishes the desired position and not the real robot position. Makes sense?

We have seen that in the old full_contrl scripts, this publication into the /fleet_sdtates is deactivated, so we don't quite understand then how free fleet is intended to be used?

Do we have to adapt the free fleet to behave just like the slotcar does?

Required information:

  • Operating system and version: Ubuntu 22
  • OpenRMF installation type: Debians
  • OpenRMF version or commit hash: main branch
  • ROS distribution and version: Humble
  • ROS installation type: Binaries ( and some packages form source )

Steps to reproduce the bug

  1. Start a free fleet simulation
  2. Use the above mentioned fleet adapter to start rmf

Expected behaviour

That it works as a transparent slotcar replacement

Hope to hear you suggestions

Robot named [robot] belonging to fleet [fleet] is very far [4.527969m] from where it is supposed to be, but its remaining path is empty.

Required information:

  • Operating system and version:
    • Ubuntu22.04
  • OpenRMF installation type:
    • Binaries - (rmf-demos from source)
  • ROS distribution and version:
    • Humble
  • ROS installation type:
    • binaries

Description

I'm working on a create3 robot in a gazebo simulation environment, with NAV2.
I'm integrating the system with rmf using the ROS2 free_fleet client and server.

When submitting a loop task:

ros2 run rmf_demos_tasks dispatch_patrol -p start waypoint --use_sim_time

The robot starts moving towards the waypoint but it diverge from the navigation graph.
When it "arrives" at destination is not on the properly located on the waypoint and I got the following error:
"Robot named [robot] belonging to fleet [fleet] is very far [4.527960m] from where it is supposed to be, but its remaining path is empty. This means the robot believes it is finished, but it is not where it's supposed to be."

ezgif com-video-to-gif

Another problem that I see is that the graph lanes and also the robot in the rmf visualization are really small and out of scale.
Do someone know how to fix? Thanks a lot!

that's my repo if you want to have a look!

Logging information from Client

Feature request

Description

Design interfaces where Clients are able to report back logs or errors back to the Server.

Implementation considerations

  • This should target develop
  • This should be an abstract interface where users can implement to handle different types of robots and navigation stacks.
  • This feature should handle logs and reports in an agnostic way, without parsing or handling any resolutions.
  • There should be multiple levels of severity for logs and reports.
  • Stretch goal, to report logs in a retroactive fashion, to lower network usage during operation.

Multi turtlebot3 obstacle avoidance issue

Thanks for the example on how to launch multiple turtlebot3. I notice a issue with the multiple turtlebot3 in Gazebo and Rviz, now any of the turtlebot3 cannot avoid an obstacle when you add an object (e.g. beer can) in front of the turtlebot3, and move the turtlebot3 using Rviz. The turtlebot3 will hit the object and push it along.
For single turtlebot3, it will try to avoid the object and find another path. Is it possible to fix the obstacle avoidance issue in multiple turtlebot3? Thank you for any suggestion!

dds config over wider network

goal is for server and client to communicate across different network/ over internet. specifically, robot running client connected to standard wifi route and server is hosted on aws ec2 instance.

I've tried to disable udp multicast and add in the ipv4 addresses for peer discovery in the cyclonedds xml config but it does not work. Cyclone DDS documentation is still lacking tutorials for such set-up. I've found few links that recommended an external VPN service that provides ipv6 addresses to connect.

Would like to ask if you have any suggestion on this.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.