open-rmf / free_fleet Goto Github PK
View Code? Open in Web Editor NEWA free fleet management system.
License: Apache License 2.0
A free fleet management system.
License: Apache License 2.0
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?
Not able to compile the Free Fleet Client ROS2 pkg
std err log file
Build Success
Build Failed
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
,
Please someone help me how to resolve this issue?
thank you
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
.
Will push a pull request to fix this issue.
There is a launch file variable to change the frequency of publishing fleet states https://github.com/open-rmf/free_fleet/blob/main/ff_examples_ros2/launch/fake_server.launch.xml#L24, but the actual value used seems hardcoded: https://github.com/open-rmf/free_fleet/blob/main/free_fleet_server_ros2/src/ServerNode.cpp#L169
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.
To use spdlog
, https://github.com/gabime/spdlog, as the primary logging implementation for free fleet. This should only be considered after develop
has been merged.
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:
( 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.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?
That it works as a transparent slotcar replacement
Hope to hear you suggestions
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.
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.
hi, can i check with you that when we use the free fleet system to replace the fleet manager, how do we synchronize the robot coordinate system with the rmf coordinate system? is it in some launch file such as this -> https://github.com/osrf/free_fleet/blob/master/ff_examples_ros1/launch/fake_client.launch that we specify the offset, scaling and rotation values and the coordinate parameters will be transformed using those parameters?
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!
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
What are the plans to moving to ros2 humble (Ubuntu 22.04 LTS)?
Note:
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.
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.
Ubuntu 22.04
Source build
No response
2.3.0
Humble
Source build
No response
No response
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
No response
No response
No response
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)
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.
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
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:~
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.
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'].
I have run the node free_fleet_server_ros2 directly, but the result was the same.
After the free fleet server and client are connected, gazebo shuts down.
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
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."
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!
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?
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.
No response
No response
-ROS2 Galactic
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]
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'.
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
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.
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.
The free_fleet_client running on the robot is registered in the log of free_fleet_sever.
No log is registered and no communication is established.
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.
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
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
?
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
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
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.
The implementation for this should target main
for now, there will be a separate feature request for the develop
branch.
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?
[ 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
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
Design interfaces where Clients are able to report back logs or errors back to the Server.
develop
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.
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.
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:
[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]
[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.
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!
Now to integrate this with RMF I did the following:
<?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>
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!
To modify the subscription implementation using cyclonedds
to be reactive with callbacks instead of polling.
Examples provided in the roundtrip
example, https://github.com/eclipse-cyclonedds/cyclonedds/tree/master/examples/roundtrip
This should target main
Hello.
I have a question regarding free_fleet.
Is it possible to establish the communication between the ROS2 Foxy server on one computer and ROS1 Melodic client on other computer?
Instead of committing the generated message source files into the repository, they should be generated, compiled and linked during build.
Avoid using ament
macros as this package will need to support non-ROS 2 systems.
Examples,
main
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.
rostopic pub /move_base/cancel actionlib_msgs/GoalID -- {}
Sometimes robot does not move immediately when a task is sent from the RMF.
Turtlebot3 on Gazebo is moving quickly.
After a short time, the robot begins to move.
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.
To implement a ROS 2 client to allow the free fleet server to integrate with standalone robots running the ROS 2 navigation stack.
The implementation will be replicating what was done for the ROS 1 client, targeting the main
branch, as develop
is still under active development.
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
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.
This was briefly discussed in the develop branch, #76 (comment)
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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.