A shell package to execute robot bringup, SLAM, localisation, and similar functionalities needed in project cultureid. This is the centralised locus of robot-centric packages and launchers.
git clone git@github.com:robotics-4-all/cultureid-turtlebot-packages.git
git clone git@github.com:robotics-4-all/cultureid-devel.git
git clone git@github.com:robotics-4-all/relief-amcl-mod.git
git clone git@github.com:robotics-4-all/cultureid-rfid-detection.git
git clone git@github.com:robotics-4-all/cultureid-support-files.git
git clone git@github.com:robotics-4-all/cultureid-rfid-antennas-poses-logger.git
git clone git@github.com:robotics-4-all/cultureid-rfid-visualisation.git
git clone git@github.com:KumarRobotics/waypoint_navigation_plugin.git
Houses launchers for robot bringup, simulation environment, mapping, localisation, and navigation. The entry point for launching the total operation of the above is prefixed by avanti_
and differentiated by the nature of the environment that a robot is placed in: avanti_simulation.launch
launches the gazebo
simulator and poses the robot at (real_initial_pose_x, real_initial_pose_y, real_initial_pose_yaw)
in it, whereas avanti_live.launch
launches everything else except the surrounding reality.
roslaunch cultureid_devel avanti_simulation.launch task:=mapping slam_alg:=SA slam_resolution:=SR
where
SA = {karto|gmapping|rtabmap}
SR
is the resolution of the 2D grid in meters per cell, and usually set from 0.01 to 0.1 m/cell
roslaunch cultureid_devel avanti_simulation.launch task:=localisation
roslaunch cultureid_devel avanti_simulation.launch task:={localisation|mapping} gazebo_world:=GW robot_type:=RT gazebo_gui:={true|false} num_cameras:=NC gp:=GP lp:=LP use_explorer:={true|false} do_viz:={true|false}
GW
is the name of the gazebo_world in simulation. The world of the same name should already be in directoryworlds
RT=turtlebot
NC = 1
forrobot_type = turtlebot
GP={navfn|globalplanner|sbpl}
; defaults toglobalplanner
LP={dwa|eband|teb}
; defaults toteb
-
Upon completion of mapping, issue
$ rosrun map_server map_saver -f name_of_map
. The map's resolution (and corresponding world in the case of simulation) should be recorded in theavanti_
launchers. After saving the map, its origin should be commented-out and replaced by[0,0,0]
in its corresponding.yaml
file; the original origin could be used as the robot's starting position in simulation by providing amcl with the same origin but with inverted signs. -
The name of the map should reflect the map's resolution, e.g. the file
map_csal.pgm
with resolution 0.05 m/cell should be renamed tomap_csal_0.05.pgm
. This is done for automatic detection lower down in the hierarchy of launchers and reusability purposes. -
For constructing a 3D map with
rtabmap
the process is the following:rtabmap ~/.ros/xxx.db
--> export to xxx.ply using default settings. remember to checkmeshing
; clickregenerate clouds
and set the maximum depth (max ~4.0)./binvox -e xxx.ply
--> exports a xxx.binvox (best grab binvox from here; it's the latest version (10 May 2019).)./binvox2bt xxx.binvox
--> exports a xxx.binvox.bt (Compile binvox2bt.cpp withg++ binvox2bt.cpp -loctomap -loctomath -o binvox2bt
; needsliboctomap-dev
)octovis xxx.binvox.bt
(sudo apt install ros-kinetic-octovis)
Provides launchers for frontier exploration. The functionality is unfinished and untested.
Provides wrapping launchers for ROS localisation packages amcl
and relief_amcl_mod
.
Provides wrapping launchers for loading maps and launching ROS SLAM packages gmapping
, karto
, and rtabmap
. The latter may run in a configuration of one, two, or three cameras.
Provides wrapping launchers for launching move_base
and teleoperation in a per-robot basis. Additionally, the follow_waypoints.launch
launcher launches the ROS node that subscribes to incoming lists of targets for navigation and publishes them to move_base
. Very handy for defining intermediate targets to a more distant target, or executing the same path over and over (can be set via a .csv
file loaded at runtime).
Provides wrapping launchers for launching gazebo
and turtlebot
in simulation and reality. Usually one would execute
$ roslaunch cultureid_devel turtlebot_bringup_{live|simulation}.launch
before launching avanti_{live|simulation}.launch
in localisation or mapping mode.
Provides configuration files for the necessary {common, local, global} costmap
, {local,global} planners
, move_base
, localisation
, mapping
, and rviz
components. These params are loaded through launchers. Their values are modified therein in a per-robot-type basis.
Some helper code, e.g. to test the accuracy of the odometry, provide a quick quaternion-to-rpy transformation, and most notably, the code for follow_waypoints
, which, provided the waypoint_navigation_plugin
, helps assigning consecutive targets to be reached by move_base
Houses all OGM maps of all environments, either simulated or real
Houses gazebo
worlds
Houses a custom message for quick inspection of orientation (quaternion-to-rpy)
Using SSH, in separate terminals execute
$ roslaunch cultureid_devel turtlebot_bringup_live.launch
$ roslaunch cultureid_devel avanti_live.launch task:={mapping|localisation} [slam_resolution:=0.XX]
$ roslaunch cultureid_devel turtlebot_teleop.launch
$ roslaunch cultureid_rfid_antennas_poses_logger avanti_log.launch
$ roscd cultureid_rfid_detection/application; make clean && make x86 && bin/speedwayr_x86 192.168.20.100 001625143965
$ roslaunch cultureid_rfid_detection localise_rfid_tags.launch
locally run export ROS_MASTER_URI=http://192.168.16.110:11311
to bringup rVIZ to your own computer