{"id":28201535,"url":"https://github.com/thehighlanders/smore_bot_ws","last_synced_at":"2026-01-24T18:33:03.761Z","repository":{"id":290656095,"uuid":"975176042","full_name":"TheHighlanders/smore_bot_ws","owner":"TheHighlanders","description":null,"archived":false,"fork":false,"pushed_at":"2025-05-10T03:01:48.000Z","size":64,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-18T22:18:20.339Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TheHighlanders.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2025-04-29T22:54:03.000Z","updated_at":"2025-05-09T23:34:38.000Z","dependencies_parsed_at":null,"dependency_job_id":"ada4f1b7-85e5-4bf0-91b9-1d8a35b7e8d4","html_url":"https://github.com/TheHighlanders/smore_bot_ws","commit_stats":null,"previous_names":["thehighlanders/smore_bot_ws"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/TheHighlanders/smore_bot_ws","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheHighlanders%2Fsmore_bot_ws","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheHighlanders%2Fsmore_bot_ws/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheHighlanders%2Fsmore_bot_ws/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheHighlanders%2Fsmore_bot_ws/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TheHighlanders","download_url":"https://codeload.github.com/TheHighlanders/smore_bot_ws/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheHighlanders%2Fsmore_bot_ws/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28734308,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-24T17:51:25.893Z","status":"ssl_error","status_checked_at":"2026-01-24T17:50:48.377Z","response_time":89,"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":[],"created_at":"2025-05-16T23:12:43.560Z","updated_at":"2026-01-24T18:33:03.756Z","avatar_url":"https://github.com/TheHighlanders.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"ROS: [Jazzy Jalisco](https://docs.ros.org/en/jazzy/Releases/Release-Jazzy-Jalisco.html)\r\nLinux: [Ubuntu 24.04](https://ubuntu.com/download/desktop)\r\nGPIO: [LGPIO](https://pypi.org/project/lgpio/)\r\n\r\nROS Diagram:\r\n![SMOREBOT2-ROSDIAGRAM](https://github.com/user-attachments/assets/b6c1f9b7-fe85-4e9a-a9c7-c604d9300402)\r\n\r\nAutomated setup for Dev for Linux:\r\n\r\nPrep (WSL, Ubuntu, \u0026 Cloning):\r\n\r\n1. Install WSL \u0026 Ubuntu:\r\n    We must use Ubuntu 24.04, as it is the version that ROS2 Jazzy supports, and Jazzy is the latest ROS2 release as of the start of this project\r\n    ```bash\r\n    wsl --install -d Ubuntu-24.0\r\n    `2. ``\r\n\r\n2. Set Ubuntu as your default WSL distro (not technically required, but saves time)\r\n    If you have never installed any other distro, or stuff like Docker, this is unnecesary\r\n\r\n    Show all distros, the current default is noted\r\n    ```bash\r\n    wsl --list\r\n    ```\r\n\r\n    Set Ubuntu-24.04 as default\r\n    ```bash\r\n    wsl --set-default Ubuntu-24.0\r\n    ```\r\n\r\n3. Clone the Repo to root\r\n    Activate WSL\r\n    ```bash\r\n    wsl\r\n    ```\r\n\r\n    Clone this repository\r\n    ```bash\r\n    git clone https://github.com/TheHighlanders/smore_bot_ws\r\n    ```\r\n\r\nRun the install Script:\r\n\r\n```bash\r\ncd ~/smore_bot_ws\r\n\r\nchmod +x install_ros2_jazzy.sh\r\n\r\n./install_ros2_jazzy.sh\r\n```\r\n\r\nManual setup for Dev for Linux:\r\n1. Install ROS ([deb packages](https://docs.ros.org/en/jazzy/Installation/Ubuntu-Install-Debs.html))\r\n\r\n   A. Add UTF-8 Locale\r\n    ```bash\r\n    echo \"Checking current locale settings:\" \u0026\u0026 locale | grep -i utf-8 \u0026\u0026 echo \"UTF-8 locale detected\" || (echo \"Setting up UTF-8 locale...\" \u0026\u0026 sudo apt update \u0026\u0026 sudo apt install -y locales \u0026\u0026 sudo locale-gen en_US en_US.UTF-8 \u0026\u0026 sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 \u0026\u0026 export LANG=en_US.UTF-8 \u0026\u0026 echo \"New locale settings:\" \u0026\u0026 locale)\r\n    ```\r\n\r\n    B. Ubuntu Universe\r\n    ```bash\r\n    sudo apt install software-properties-common\r\n    \r\n    sudo add-apt-repository universe\r\n    ```\r\n\r\n    C. Add ROS 2 GPG key\r\n    ```bash\r\n    sudo apt update \u0026\u0026 sudo apt install curl\r\n    \r\n    sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg\r\n    ```\r\n\r\n    D. Add ROS 2 apt repository\r\n    ```bash\r\n    echo \"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release \u0026\u0026 echo $UBUNTU_CODENAME) main\" | sudo tee /etc/apt/sources.list.d/ros2.list \u003e /dev/null\r\n    ```\r\n\r\n    E. Install Dev Tools\r\n    ```bash\r\n    sudo apt update \u0026\u0026 sudo apt install ros-dev-tools\r\n    ```\r\n\r\n    F. Install ROS 2\r\n    ```bash\r\n    sudo apt upgrade\r\n    \r\n    sudo apt install ros-jazzy-desktop\r\n    ```\r\n\r\n3. Add Sourcing to .bashrc\r\n    ```bash\r\n    echo \"source /opt/ros/jazzy/setup.bash\" \u003e\u003e ~/.bashrc\r\n    \r\n    echo \"export ROS_DOMAIN_ID=0\" \u003e\u003e ~/.bashrc\r\n    \r\n    source ~/.bashrc\r\n    ```\r\n\r\n4. Check setup:\r\n    ```bash\r\n    printenv | grep -i ROS | grep -q \"ROS_VERSION=2\" \u0026\u0026 printenv | grep -i ROS | grep -q \"ROS_PYTHON_VERSION=3\" \u0026\u0026 printenv | grep -i ROS | grep -q \"ROS_DISTRO=jazzy\" \u0026\u0026 printenv | grep -i ROS | grep -q \"ROS_DOMAIN_ID=0\" \u0026\u0026 echo \"All ROS environment variables are correctly set!\" || echo \"Some ROS environment variables are missing or incorrect.\"\r\n    ```\r\n\r\n5. Check ROS works:\r\n    ```bash\r\n    ros2 run demo_nodes_cpp talker\r\n    ```\r\n\r\n    Then in another terminal:\r\n\r\n    ```bash\r\n    ros2 run demo_nodes_py listener\r\n    ```\r\n    \r\n    Wait for the listener to print \"I heard: [Hello World: xx]\"\r\n\r\n## Running the SMORE Bot System\r\n\r\n### Option 1: Start Components Individually\r\n\r\nTo run the complete SMORE Bot system, you need to start three components:\r\n\r\n1. **State Manager** - The core node that manages robot state:\r\n    ```bash\r\n    # Terminal 1\r\n    ros2 run smore_bot_core state_manager\r\n    ```\r\n\r\n2. **Rosbridge Server** - Connects ROS to web applications:\r\n    ```bash\r\n    # Terminal 2\r\n    pkill -f rosbridge_websocket\r\n    ros2 launch rosbridge_server rosbridge_websocket_launch.xml\r\n    ```\r\n\r\n3. **Web Frontend** - Provides a web dashboard:\r\n    ```bash\r\n    # Terminal 3\r\n    ros2 run smore_bot_web web_server\r\n    ```\r\n\r\nAfter starting all three components, open your web browser to http://localhost:8080 to view the dashboard.\r\n\r\n### Option 2: Using the All-in-One Startup Script\r\n\r\nA convenience script is provided to start all components in a single terminal:\r\n\r\n1. **Make the script executable** (first time only):\r\n    ```bash\r\n    chmod +x ~/smore_bot_ws/start_smore_bot.sh\r\n    ```\r\n\r\n2. **Run the script**:\r\n    ```bash\r\n    cd ~/smore_bot_ws\r\n    ./start_smore_bot.sh\r\n    ```\r\n\r\nThe script will:\r\n- Start all three components (rosbridge, state_manager, web_server)\r\n- Show all output in a single terminal\r\n- Allow you to stop everything with a single Ctrl+C\r\n- Automatically clean up all processes when terminated\r\n\r\nThis is the recommended way to start the system for regular use.\r\n\r\n### Troubleshooting\r\n\r\nIf you see a \"Connecting to ROS...\" message that doesn't change:\r\n1. Check that rosbridge is running on port 9090\r\n2. Open browser developer tools (F12) to look for JavaScript errors\r\n3. Make sure all three terminals show no error messages\r\n\r\nIf you encounter shared memory errors in the terminal:\r\n```bash\r\nrm -rf /dev/shm/fastrtps_*\r\n```\r\n\r\nIf you encounter \"Unable to start server: [Errno 98] Address already in use Retrying in 5.0s.\":\r\n```bash\r\npkill -f rosbridge_websocket\r\nsudo lsof -i :9090\r\n# Look for the PID of the process using port 9090\r\nsudo kill -s 4 \u003cPID\u003e\r\n```\r\n\r\nIf you encounter throttling on Firefox: _EDIT: This is a active bug in the code and this will not fix it_\r\n- Type about:config in the Firefox address bar\r\n- Accept the warning\r\n- Search for dom.timeout.throttling_delay\r\n- Set its value to 0\r\n- Optionally search for and set privacy.reduceTimerPrecision to false\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthehighlanders%2Fsmore_bot_ws","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthehighlanders%2Fsmore_bot_ws","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthehighlanders%2Fsmore_bot_ws/lists"}