This repository contains the source code to replicate the demo scenario described in:
J.C. Saborío, M. Vinci, O. Lima, S. Stock, L. Niecksch, M. Günther, A. Sung, J. Hertzberg and M. Atzmüller. "Uncertainty-Resilient Active Intention Recognition for Robotic Assistants". In Proceedings of ECMR 2025 (to appear).
We are preparing a detailed video showcasing the Mobipick robot in the Insect Hotel domain. A link will be added here as soon as it is ready.
ROS Noetic and Python 3 are assumed to be available on your system. vcs and wstool will be installed when needed:
./install-deps.sh
./build.shStart up the robot according to the (DFKI internal) instructions on the wiki, then on the robot launch:
roslaunch mobipick_bringup mobipick_bringup_both.launch # already part of the startup instructions
roslaunch pbr_dope dope.launch
roslaunch insect_hotel_bringup bringup.launch # world_config:=insect_hotel (default)On the Jetson Orin launch the camera driver and object detection:
roslaunch yolo6d_cpp yolo6d_with_cameras.launchTo start the demo, launch on the robot:
roslaunch insect_hotel_bringup intention_recognition.launchLaunches the robot in Gazebo with simulated worker cameras.
roslaunch insect_hotel_bringup demo_sim.launch # world_config:=insect_hotel_tables_spread (default)
roslaunch insect_hotel_bringup intention_recognition.launch simulation:=trueThe behavior of the worker is simulated by moving insect hotel parts
from the storage area to the assembly area. Inside the
insect_hotel_bringup/launch/includes/intention_recognition.launch these
lines
modify the simulated workers behavior. The following parameters can be changed:
- hotel_type: Specify hotel type 1 or 2, type 1 uses red side panel and dark green back panel, type 2 uses orange side panel and black back panel
- worker_time_between_actions: Time in seconds between taking parts from the storage
- random_worker_actions: If true takes parts from storage randomly, if false takes parts in fixed assembly order
- prob_to_skip_action: Probability for the worker to do nothing and skip an assembly action
- prob_to_take_wrong_part: Probability for the worker to take a wrong part, e.g. a part that does not belong to the insect hotel type that is currently being built
- prob_to_fix_wrong_part: Probability to fix the workers mistakes, if any occured
Install and source the dot_graph_visualization rqt plugin, then call it with:
rqt --standalone dot_graph_visualizationThis repository defines two so-called world_configs (i.e., arrangements of
tables, objects etc.):
insect_hotel: The regular arrangement of tables in our physical robot lab, with the insect hotel parts spread over the tables. Available in reality and simulation. This is the default for the real robot demo.insect_hotel_tables_spread: The same as above, but the tables are spread apart further. Does not reflect the actual table arrangement in the lab, so thisworld_configis only available in simulation. This is the default for simulation.
The reason for introducing the second world_config is the following: In
reality, we use the internal move_base instance that is running on the
internal PC of the MiR platform. This move_base instance can deal with the
regular, crowded table arrangement. Obviously, we cannot directly use the MiR
PC in simulation, so we had to replicate the move_base config in the
mir_navigation package for use in simulation. Unfortunately, this config does
not include some proprietary parts of the MiR configuration, so it sometimes
struggles in crowded environments. To work around this issue, we spread the
tables further apart for simulation only.
Switching between the two is done by passing the argument
world_config:=insect_hotel... to bringup.launch (for running on the real
robot) or demo_sim.launch (for simulation).
TL;DR: In reality, use world_config:=insect_hotel. In simulation, use
world_config:=insect_hotel_tables_spread. These are already the defaults.