This repository includes the ROS-based explorative mapping stack of L3X-Z for ELROB 2022.
The stack is tested under ROS1 Noetic Ninjemys. It can do mapping using RTAB-Map and a simple known-position approach. Also data logging is possible.
Clone the repository and go to host root:
git clone --recursive https://github.com/107-systems/l3xz_mapping
cd l3xz_mapping/host_ws
Build using catkin:
catkin_make install
There is also a frontend available for the mapping stack.
roslaunch l3xz_mapping l3xz_mapping.launch
roslaunch l3xz_mapping knownposition_lidar.launch
roslaunch odom_recorder.launch
roslaunch thermal_recorder.launch
roslaunch plotter_grid.launch
Creates an odometry message from tf data.
Default Name | Type |
---|---|
/odom_slam |
nav_msgs/Odometry |
Name | Default | Description |
---|---|---|
odometry_out |
/odom_slam |
Odometry topic name |
parent_frame |
/map |
Parent frame of interesting tf tree part |
child_frame |
/base_link |
Child frame of interesting tf tree part |
Plots robot track and OPIs according to ELROB rules into a map. The input map can be an image or data from a topic of type nav_msgs/OccupancyGrid
. The OPIs to be plotted and the robot track are subscribed from a topic of type l3xz_mapping/Track
.
Name | Default | Description |
---|---|---|
from_grid |
false |
Get map topic from OccupancyGrid |
img_src |
/home/log/map.png |
Map image name |
img_dest |
/home/log/map_dest.png |
Destination map image name |
meters_per_pixel |
0.1 | Resolution of map image |
bearing_deg |
0.0 | Robot initial bearing |
zero_px |
[100, 100] | Robot initial position |
robot_track |
/l3xz/odom_recorder/track |
Track topic |
opi_tracks |
[/l3xz/thermal_recorder/track , /l3xz/radiation_recorder/track ] |
OPI topics |
grid_topic |
/grid |
Grid map |
Records waypoints according to ELROB log format with Unix timestamp and WSG84 coordinates with images of the artifacts. Also a track containing all waypoints can be published (e.g. for plotting). All the logs are based on an initial startpoint.
Default Name | Purpose |
---|---|
recorder/set_startpoint |
Set initial robot position. Needs to be done only once and is necessary to start recording. |
recorder/set_waypoint |
Record a new waypoint. |
Default Name | Type |
---|---|
recorder/track |
[l3xz_mapping/Track ] |
Name | Default | Description |
---|---|---|
logpath |
/home/l3xz/log.txt |
Path for logfile |
artifacts |
[] | List of artifact images |
track_publishing_rate |
1 | Period for publishing track rate |
publish_track |
true |
Enable publishing of track |
For some tasks a complete map of an area is not desired. Therefore, it is a good idea to use a robust mapping from known position approach instead of SLAM to observe the area around the robot to master autonomous navigation tasks. This node demonstrates this approach using the data of one 2D-Lidar. All features of the implemented algorithms, e.g. overlaying multiple datasets, image postprocessing or transforming using tf are not demonstrated yet.
Default Name | Type |
---|---|
/lidar |
sensor_msgs/Odometry |
/odom |
nav_msgs/Odometry |
Default Name | Type |
---|---|
/grid |
nav_msgs/OccupancyGrid |
Name | Default | Description |
---|---|---|
pixel_x |
600 |
Columns of the gridmap |
pixel_y |
600 |
Rows of the gridmap |
resolution |
0.1 |
Resolution of the gridmap in meters |
rate_hz |
5 |
Period for publishing the gridmap |
grid_topic |
/grid |
Name of the gridmap |
odometry_topic |
/odometry |
Name of the odometry topic |
show |
true |
Show map in OpenCV window (like above) |