Since you will need at least 5 terminals to run this project my suggestion is to use a package like terminator.
- Launch the simulation environment
roslaunch robotino_simulations world.launch
here.-
Select the desired environment with
name:=<arg>
. We tested our work withname:="cafe"
andname:="small_house" x:=-2.0
..world files are placed in
robotino_simulations/worlds/
-
This node takes care also of launching the nodes for generating the necessary ground truth transforms
-
In case a shift is needed (like with the AWS's small_house) the
robot_ekf
inrobotino_description/launch/robotino.launch
should be adapted to get the corrispondent starting pose so that groundtruth can reflect this shift
-
- Run the MPC:
roslaunch robotino_mpc robotino_mpc.launch
. Parameters inrobotino_mpc/cfg/nmpc.yaml
will be used in the code to configure mainly the topics while NMPC constraints can be configured either dynamically (rosrun rqt_reconfigure rqt_reconfigure
) or by editing therobotino_mpc/cfg/NonLinearMPC.cfg
file. Note that the latter require acatkin_make
. - Run RTABMap:
roslaunch robotino_simulations rtabmap.launch
which is here. Many things will be launched here.move_base
and the costmap converter found here. The parameters are placed inrobotino_simulations/config
- The "main"
mapping.launch
file contains:libpointmatcher
odometry nodergbd_sync
node (from RTABMap)- config parameters of RTABMap
- the argument
delete:=-d
lets the user delete the previously generated db at launch - the default folder of the db is
.ros/rtabmap.db
(setted with thedb
argument) - RTABMap parameters can be edited directly in
robotino_simulations/launch/mapping.launch
- RTABMapViz (the visualization tool of RTABMap) is currently commented in
robotino_simulations/launch/mapping.launch
. Note that with this enabled performance will suffer most probably requiring RTABMap to use its memory management techniques. - Note that some arguments, like "compressed" (which is triggerred by remote:=true) are useful only in case of distributed systems and real robot scenarios
- [optional] Run the logger:
rosrun robotino_simulations rtabmap_eval.py
. This will log odometry, loop closures, map entropy, explored space, wheels rotations in different "npy" files saved on the node running location. - Run the active node:
roslaunch active_slam active_node.launch
. This will launch the frontier extraction and the map information optimizer. - [optional] Run the features' follower:
roslaunch robotino_camera_heading best_heading.launch
. The camera specifics are placed inrobotino_simulations/config/camera.yaml
- The FSM is launched with
roslaunch robotino_fsm robotino_fsm.launch kind:=2
.- With
kind
you can select the utility [see the paper for reference]:- 2: Shannon
- 5: Dynamic weight with obstacles
- 7: Interpolation
- 9: Shannon with obstacles
- With
only_last:=true/false
you can decide if the system should use only the last waypoint to chose the path or use the whole information. - With
weighted_avg:=true/false
you can switch between weighted avg and weighted sum as total utility of a path - With
pre_fix:=true/false
you can decide if the system should pre-optimize the heading after choosing the path to follow. Only applicable ifonly_last:=true
- With
mid_optimizer:=true/false
you can turn on/off the optimization procedure for the next waypoint.
- With