{"id":48112495,"url":"https://github.com/husarion/rosbot-autonomy","last_synced_at":"2026-04-04T16:09:48.359Z","repository":{"id":92214421,"uuid":"598117056","full_name":"husarion/rosbot-autonomy","owner":"husarion","description":"Autonomous navigation \u0026 mapping for ROSbot 2R / 2 PRO","archived":false,"fork":false,"pushed_at":"2025-12-11T14:13:02.000Z","size":16710,"stargazers_count":7,"open_issues_count":3,"forks_count":6,"subscribers_count":2,"default_branch":"ros2router","last_synced_at":"2025-12-12T18:04:46.001Z","etag":null,"topics":["nav2","ros2","rosbot2","slam"],"latest_commit_sha":null,"homepage":"","language":"Just","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/husarion.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-02-06T12:43:35.000Z","updated_at":"2025-06-12T02:24:02.000Z","dependencies_parsed_at":"2025-12-11T19:27:41.971Z","dependency_job_id":"60441833-fe85-44ec-b476-7148fb96e0af","html_url":"https://github.com/husarion/rosbot-autonomy","commit_stats":null,"previous_names":["husarion/rosbot-autonomy"],"tags_count":0,"template":true,"template_full_name":null,"purl":"pkg:github/husarion/rosbot-autonomy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/husarion%2Frosbot-autonomy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/husarion%2Frosbot-autonomy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/husarion%2Frosbot-autonomy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/husarion%2Frosbot-autonomy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/husarion","download_url":"https://codeload.github.com/husarion/rosbot-autonomy/tar.gz/refs/heads/ros2router","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/husarion%2Frosbot-autonomy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31405612,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T10:20:44.708Z","status":"ssl_error","status_checked_at":"2026-04-04T10:20:06.846Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["nav2","ros2","rosbot2","slam"],"created_at":"2026-04-04T16:09:47.417Z","updated_at":"2026-04-04T16:09:48.343Z","avatar_url":"https://github.com/husarion.png","language":"Just","funding_links":[],"categories":[],"sub_categories":[],"readme":"# rosbot-autonomy\n\nAutonomous navigation \u0026 mapping for ROSbot 2R / 2 PRO with RViz interface running on remote PC. Works over the Internet thanks to Husarnet VPN\n\n![autonomy-result](https://github-readme-figures.s3.eu-central-1.amazonaws.com/rosbot/rosbot-autonomy/autonomy-result-rviz.gif)\n\n\u003e [!NOTE]\n\u003e There are two setups on two separate branchers available\n\u003e | branch name | description |\n\u003e | - | - |\n\u003e | [**ros2router**](https://github.com/husarion/rosbot-autonomy/) | Running ROS 2 containers on ROSbot and on PC with the interface in RViz |\n\u003e | [**foxglove**](https://github.com/husarion/rosbot-autonomy/tree/foxglove) | Running ROS 2 containers only on ROSbot with a web user interface powered by Foxglove |\n\n## 🛍️ Necessary Hardware\n\nFor the execution of this project **[ROSbot 2R or ROSbot 2 PRO](https://husarion.com/manuals/rosbot/)** is required.\n\nYou can find it at [our online store](https://store.husarion.com/collections/robots/products/rosbot).\n\n## Quick start (Physical ROSbot)\n\n\u003e [!NOTE]\n\u003e To simplify the execution of this project, we are utilizing [just](https://github.com/casey/just).\n\u003e\n\u003e Install it with:\n\u003e\n\u003e ```bash\n\u003e curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | sudo bash -s -- --to /usr/bin\n\u003e ```\n\nTo see all available commands just run `just`:\n\n```bash\nhusarion@rosbot2r:~/rosbot-autonomy$ just\nAvailable recipes:\n    connect-husarnet joincode hostname # connect to Husarnet VPN network\n    flash-firmware    # flash the proper firmware for STM32 microcontroller in ROSbot 2R / 2 PRO\n    start-rosbot      # start ROSbot 2R / 2 PRO autonomy containers\n    start-pc          # start RViz visualization on PC\n    restart-nav2      # restart the navigation stack (and SLAM)\n    start-gazebo-sim  # start Gazebo simulator with autonomy\n    start-webots-sim  # start Webots simulator with autonomy\n    run-teleop        # run teleop_twist_keybaord (host)\n    run-teleop-docker # run teleop_twist_keybaord (inside rviz2 container)\n    sync hostname=\"${ROBOT_NAMESPACE}\" password=\"husarion\" # copy repo content to remote host with 'rsync' and watch for changes\n```\n\n### 🌎 Step 1: Connecting ROSbot and Laptop over VPN\n\nEnsure that both ROSbot 2R (or ROSbot 2 PRO) and your laptop are linked to the same Husarnet VPN network. If they are not follow these steps:\n\n1. Setup a free account at [app.husarnet.com](https://app.husarnet.com/), create a new Husarnet network, click the **[Add element]** button and copy the code from the **Join Code** tab.\n2. Run in the linux terminal on your PC:\n\n   ```bash\n   cd rosbot-autonomy # remember to run all \"just\" commands in the repo root folder\n   export JOINCODE=\u003cPASTE_YOUR_JOIN_CODE_HERE\u003e\n   just connect-husarnet $JOINCODE my-laptop\n   ```\n\n3. Run in the linux terminal of your ROSbot:\n\n   ```bash\n   export JOINCODE=\u003cPASTE_YOUR_JOIN_CODE_HERE\u003e\n   sudo husarnet join $JOINCODE rosbot2r\n   ```\n\n\u003e [!IMPORTANT]\n\u003e note that `rosbot2r` is a default ROSbot hostname used in this project. If you want to change it, edit the `.env` file and change the line:\n\u003e\n\u003e ```bash\n\u003e ROBOT_NAMESPACE=rosbot2r\n\u003e ```\n\n### 📡 Step 2: Sync\n\nCopy the local changes (on PC) to the remote ROSbot\n\n```bash\njust sync rosbot2r # or a different ROSbot hostname you used in Step 1 p.3\n```\n\n\u003e [!NOTE]\n\u003e This `just sync` script locks the terminal and synchronizes online all changes made locally on the robot. `rosbot2r` is the name of device set in Husarnet.\n\n### 🔧 Step 3: Verifying User Configuration\n\nTo ensure proper user configuration, review the content of the `.env` file and select the appropriate configuration (the default options should be suitable).\n\n- **`LIDAR_BAUDRATE`** - depend on mounted LiDAR,\n- **`MECANUM`** - wheel type,\n- **`SLAM`** - choose between mapping and localization modes,\n- **`SAVE_MAP_PERIOD`** - period of time for autosave map (set `0` to disable),\n- **`CONTROLLER`** - choose the navigation controller type,\n- **`ROBOT_NAMESPACE`** - type your ROSbot device name the same as in Husarnet.\n\n\u003e [!IMPORTANT]\n\u003e The value of the `ROBOT_NAMESPACE` parameter in the `.env` file should be the same as the name of the Husarnet device.\n\n### 🤖 Step 4: Running Navigation \u0026 Mapping\n\nTo enable autonomy on the robot, it is necessary:\n\n- starting autonomy on ROSbot\n- launching visualization on PC\n\n#### ROSbot\n\n1. Connect to the ROSbot.\n\n   ```bash\n   ssh husarion@rosbot2r\n   cd rosbot-autonomy\n   ```\n\n\u003e [!NOTE]\n\u003e `rosbot2r` is the name of device set in Husarnet.\n\n2. Flashing the ROSbot's Firmware.\n\n   To flash the Micro-ROS based firmware for STM32F4 microcontroller responsible for low-level functionalities of ROSbot 2, 2R and 2 PRO, execute in the ROSbot's shell:\n\n   ```bash\n   just flash-firmware\n   ```\n\n3. Running autonomy on ROSbot.\n\n   ```bash\n   just start-rosbot\n   ```\n\n#### PC\n\nTo initiate a user interface and navigation stack based on RViz, execute below command on your PC:\n\n```bash\njust start-pc\n```\n\n### 🚗 Step 5: Control the ROSbot from RViz\n\nTo instruct the robot to autonomously explore new areas and create a map (in \"slam\" mode) of **[2D Goal Pose]** in RViz. When `SLAM` is off, you can indicate the robot's current position by **[2D Pose Estimate]** button.\n\n![autonomy-result](https://github-readme-figures.s3.eu-central-1.amazonaws.com/rosbot/rosbot-autonomy/autonomy-result-rviz.gif)\n\n------\n\n## Simulation\n\n\u003e [!IMPORTANT]\n\u003e To run `Gazebo` or `Webots` Simulators you have to use computer with NVIDIA GPU and the [NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html) installed.\n\nIf you don't have a physical ROSbot 2R / 2 PRO you can run this project in a simulation.\n\n![Gazebo](https://github-readme-figures.s3.eu-central-1.amazonaws.com/rosbot/rosbot-autonomy/gazebo-rviz.png)\n\n### Gazebo\n\nTo start Gazebo simulator run:\n\n```bash\njust start-gazebo-sim\n```\n\n### Webots\n\nTo start Webots simulator run:\n\n```bash\njust start-webots-sim\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhusarion%2Frosbot-autonomy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhusarion%2Frosbot-autonomy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhusarion%2Frosbot-autonomy/lists"}