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}SRis 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}
GWis the name of the gazebo_world in simulation. The world of the same name should already be in directoryworldsRT=turtlebotNC = 1forrobot_type = turtlebotGP={navfn|globalplanner|sbpl}; defaults toglobalplannerLP={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.yamlfile; 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.pgmwith 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
rtabmapthe process is the following:rtabmap ~/.ros/xxx.db--> export to xxx.ply using default settings. remember to checkmeshing; clickregenerate cloudsand 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