A GitHub template for Husarion UGVs: creating a map using Slam Toolbox and navigation with localization using Nav2.
To simplify the execution of this project, we are utilizing just. Install it with:
curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | sudo bash -s -- --to /usr/bin
The provided example is configured for the Panther robot and supports any LIDAR that publishes PointCloud2
or LaserScan
data type by setting the appropriate environment variable.
Important
Before running the navigation demo, ensure the following:
- This demo should be run on User Computer with IP address:
10.15.20.3/24
. - a LIDAR publishes messages of type:
PointCloud2
orLaserScan
. - A static transformation between a LIDAR and a robot frame is provided. The value of the
frame_id
field inside the published message must connect to the robot'sbase_link
.
Download this repository:
git clone https://github.com/husarion/panther-navigation
Setup environment:
cd panther-navigation
# The following configuration is only needed for the physical robot
export OBSERVATION_TOPIC={point_cloud_topic} # absolute topic name to match your LIDAR pointcloud2 topic (e.g. /scan)
export OBSERVATION_TOPIC_TYPE={msg_type} # Specify: `laserscan`, `pointcloud`
Note
Additional arguments are detailed in the Launch Arguments section.
🤖 Run Navigation on the Physical Robot:
just start-hardware
🖥️ Run Navigation in Simulation:
just start-simulation
-
Install and run husarion-webui
just start-visualization
-
Open the your browser on your laptop and navigate to:
- http://{ip_address}:8080/ui (devices in the same LAN)
- http://{hostname}:8080/ui (devices in the same Husarnet Network)
Argument | Description Type: Default |
---|---|
autostart |
Automatically startup the nav2 stack. bool: True |
log_level |
Logging level. string info (choices: debug , info , warning , error , custom ) |
map |
Path to map yaml file to load. string: /maps/map.yaml |
namespace |
Add namespace to all launched nodes. string: env(ROBOT_NAMESPACE) |
observation_topic |
Topic name for LaserScan or PointCloud2 observation messages type. '' |
observation_topic_type |
Observation topic type. string: pointcloud (choices: laserscan , pointcloud ) |
params_file |
Path to the parameters file to use for all nav2 related nodes. string: `nav2_params.yaml |
pc2ls_params_file |
Path to the parameters file to use for pointcloud_to_laserscan node. string: `pc2ls_params.yaml |
slam |
Whether run a SLAM. bool: False |
use_composition |
Whether to use composed bringup. bool: True |
use_respawn |
Whether to respawn if a node crashes. Applied when composition is disabled. bool: False |
use_sim_time |
Use simulation (Gazebo) clock if true. bool: False |