{"id":15144551,"url":"https://github.com/kaiaai/kaiaai","last_synced_at":"2025-10-23T22:30:50.776Z","repository":{"id":186270836,"uuid":"674812792","full_name":"kaiaai/kaiaai","owner":"kaiaai","description":"ROS2 package for Kaia.ai robots","archived":false,"fork":false,"pushed_at":"2025-01-18T05:05:03.000Z","size":9002,"stargazers_count":17,"open_issues_count":0,"forks_count":6,"subscribers_count":3,"default_branch":"iron","last_synced_at":"2025-01-30T21:11:37.594Z","etag":null,"topics":["kaia-ai","micro-ros","open-source","remake-ai","robot-framework","robotics","robotics-programming","robots","ros-navigation","ros2","slam-toolbox","stem"],"latest_commit_sha":null,"homepage":"https://kaia.ai","language":"Python","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/kaiaai.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}},"created_at":"2023-08-04T21:08:31.000Z","updated_at":"2025-01-28T09:18:47.000Z","dependencies_parsed_at":"2023-08-10T01:33:25.806Z","dependency_job_id":"dcb65d01-9620-439d-88e2-e15a6cae2128","html_url":"https://github.com/kaiaai/kaiaai","commit_stats":{"total_commits":303,"total_committers":5,"mean_commits":60.6,"dds":0.5643564356435644,"last_synced_commit":"3c3c5c52a5eca7ec157ae2eef841fde6b83e2a78"},"previous_names":["kaiaai/kaia_bots","kaiaai/kaia","kaiaai/kaiaai"],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaiaai%2Fkaiaai","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaiaai%2Fkaiaai/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaiaai%2Fkaiaai/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaiaai%2Fkaiaai/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kaiaai","download_url":"https://codeload.github.com/kaiaai/kaiaai/tar.gz/refs/heads/iron","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237890775,"owners_count":19382562,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["kaia-ai","micro-ros","open-source","remake-ai","robot-framework","robotics","robotics-programming","robots","ros-navigation","ros2","slam-toolbox","stem"],"created_at":"2024-09-26T10:42:06.306Z","updated_at":"2025-10-23T22:30:50.770Z","avatar_url":"https://github.com/kaiaai.png","language":"Python","funding_links":[],"categories":["Libraries and Platforms"],"sub_categories":[],"readme":"# Kaia.ai Arduino/ROS2 home robots\n\n[Kaia.ai](https://kaia.ai) is an open-source software platform to run apps on (consumer/home) robots. For now, it uses ROS2 for mapping/navigation/SLAM and [Arduino-compabile firwmare](https://github.com/kaiaai/firmware).\n\nHere is a current 3/2025 brief demo (I have not released the apps setup yet).\n\n[![My DIY Arduino robot loves self-driving](https://img.youtube.com/vi/RCPUQmvS37Q/0.jpg)](https://www.youtube.com/watch?v=RCPUQmvS37Q\u0026list=PLOSXKDW70aR8uA1IFahSKVuk5ODDfjTZV)\n\nHere are current 3/2025 build, setup, bring-up and operation instructions.\n\n[![My DIY Arduino robot loves self-driving](https://img.youtube.com/vi/6GtjAB19GP8/0.jpg)](https://www.youtube.com/watch?v=6GtjAB19GP8\u0026list=PLOSXKDW70aR8uA1IFahSKVuk5ODDfjTZV)\n\nHere are [troubleshooting instructions](https://makerspet.com/blog/BLD-120MM-PACK/).\n\nHere is the technical [support forum](https://github.com/makerspet/support/discussions/).\n\n## Components\n\nKaia.ai robotics software platform is actively evolving and currently consists of these parts:\n- Cloud software infrastructure (TODO)\n- robot skills store (TODO)\n- Micro-ROS Arduino library for Kaia.ai-compatible robots [repo](https://github.com/kaiaai/micro_ros_arduino_kaia)\n  - Micro-ROS LiDAR telemetry receiver [package](https://github.com/kaiaai/kaiaai_telemetry)\n- End-user and development ROS2 Docker images [repo](https://github.com/kaiaai/install)\n- Robot Gazebo simulation ROS2 [package](https://github.com/kaiaai/kaiaai_gazebo)\n- Kaia.ai Python ROS2 software wrapper [package](https://github.com/kaiaai/kaiaai)\n- Robot operation ROS2 [repo](https://github.com/kaiaai/kaiaai_bringup), including SLAM mapping, navigation, frontier exploration, etc.\n- Robot keyboard teleoperation [package](https://github.com/kaiaai/kaiaai_teleop)\n- [WebRTC-based](https://github.com/kaiaai/kaiaai_python) image/video/data streaming\n  - [Python-based](https://github.com/kaiaai/kaiaai_python) image/audio sensing, processing (ML), decision making (ML/AI), robot face animation (TODO)\n\n## Kaia.ai compatible robots\n- Maker's Pet [Loki](https://github.com/makerspet/makerspet_loki) 200mm 3D-printed pet robot\n- Maker's Pet [Fido](https://github.com/makerspet/makerspet_fido) 250mm 3D-printed pet robot\n- Maker's Pet [Snoopy](https://github.com/makerspet/makerspet_snoopy) 300mm 3D-printed pet robot\n- Maker's Pet [Mini](https://github.com/makerspet/makerspet_mini) 125mm 3D-printed educational robot\n- Add your own version to the [list](https://github.com/topics/kaiaai-robot)\n\n## Supported LiDAR sensors\n- YDLIDAR X4 (default), X2/X2L, X3, X3PRO, SCL\n- Neato XV11\n- Xiaomi Roborock 1st gen LDS02RR (~$16 off AliExpress including shipping)\n- SLAMTEC RPLIDAR A1\n- 3irobotix Delta-2A, Delta-2B, Delta-2G\n- LDROBOT LD14P\n- Camsense X1\n\nThe entire up-to-date list of supported LiDAR is [here](https://github.com/kaiaai/LDS).\n\n## Installation and Command Reference\nThere are two ways to install ROS2 and Kaia.ai on your PC - using Docker (Windows, Linux) or Ubuntu 24.04 (physical PC of virtual machine).\nFollow the installation [instructions here](https://github.com/kaiaai/install).\n\nWatch build, setup and bringup [videos](https://www.youtube.com/playlist?list=PLOSXKDW70aR8SA16wTB0ou9ClKhv7micy)\n- Note: these videos are outdated; updated videos will be published shortly for Maker's Pet Mini\n\n### Launch ROS2/Kaia.ai (Docker only)\nThe [Kaia.ai Docker image](https://hub.docker.com/repository/docker/kaiaai/kaiaai/general) contains ROS2 and micro-ROS\npre-configured with additional Kaia.ai ROS2 packages.\n\nOpen a Windows command shell or Windows PowerShell window and type the command below. This should give you a bash prompt.\nNote that your `c:\\maps` will be mapped to `/root/maps` to store navigation maps. Feel free to change `c:\\maps` path to a more suitable location, e.g. `c:\\Users\\MyUserName\\maps`.\n```\n# Windows WSL2\ndocker pull kaiaai/kaiaai:iron\ndocker run --name makerspet -it --rm -v c:\\maps:/root/maps -p 8888:8888/udp -p 4430:4430/tcp -e DISPLAY=host.docker.internal:0.0 -e LIBGL_ALWAYS_INDIRECT=0 kaiaai/kaiaai:iron\n\n# Ubuntu\nsudo docker pull kaiaai/kaiaai:iron\nsudo docker run --name makerspet -it --rm -v ~/maps:/root/maps -p 8888:8888/udp -p 4430:4430/tcp -e DISPLAY -e QT_X11_NO_MITSHM=1 --volume=\"/tmp/.X11-unix:/tmp/.X11-unix:rw\" --volume=\"${XAUTHORITY}:/root/.Xauthority\" kaiaai/kaiaai:iron\n```\n\nGet an aditional bash prompt by opening another Windows command shell or Windows PowerShell window and typing:\n```\n# Windows WSL2\ndocker exec -it makerspet bash\n\n# Ubuntu\nsudo docker exec -it makerspet bash\n```\n\nIf you installed ROS2/Kaia.ai without Docker directly on a Ubuntu PC/VM, just boot your Ubuntu PC to a bash prompt.\n\n# Command cheat sheets\n\n`makerspet_mini` is the default robot model. When using another robot model, change the default model using Kaia.ai CLI.\nFor example, the command below sets the default robot model to `makerspet_loki`.\n```\nkaia config robot.model makerspet_loki\n```\n\n## Operate a physical robot\n\n### Manual operation\n\n```\n# Launch the physical robot\nros2 launch kaiaai_bringup physical.launch.py\n\n# Drive robot manually\nros2 run kaiaai_teleop teleop_keyboard\n\n# Monitor robot sensors\nros2 launch kaiaai_bringup monitor_robot.launch.py\n\n# Create a map while driving manually\nros2 launch kaiaai_bringup cartographer.launch.py\n\n# Save the newly-created map\nros2 run nav2_map_server map_saver_cli -f ~/maps/map --ros-args -p save_map_timeout:=60.0\n```\n\n### Physical robot self-drives automatically\n```\n# Launch the physical robot\nros2 launch kaiaai_bringup physical.launch.py\n\n# Specify target location;; robot self-drives using an existing map\nros2 launch kaiaai_bringup navigation.launch.py map:=$HOME/maps/map.yaml\n\n# Launch SLAM (simultaneous localization and mapping) - navigate and map simultaneously\nros2 launch kaiaai_bringup navigation.launch.py slam:=True\n\n# Robot automatically seeks out, self-drives to unknown locations\nros2 launch explore_lite explore.launch.py\n\n# Save the newly-created map\nros2 run nav2_map_server map_saver_cli -f ~/maps/map --ros-args -p save_map_timeout:=60.0\n```\n\n## Use Command Line with Physical Robot\n\n### Get, Set Robot's Parameters\n```\n# View parameters\nros2 node list\nros2 node info /pet\nros2 param list /pet\nros2 param dump /pet\n\n# Get the current laser scan frequency\nros2 param get /pet lidar.scan.freq.now\n\n# Set the desired laser scan frequency to 7 Hz\nros2 param set /pet lidar.scan.freq.target 7.0\n\n# Get the current desired laser scan frequency\nros2 param get /pet lidar.scan.freq.target\n\n# Reset the desired laser scan frequency to default\nros2 param set /pet lidar.scan.freq.target 0.0\n```\n\n### Monitor Robot's Telemetry\n```\n# List available topics\nros2 topic list\n\n# Get WiFi strength\nros2 topic echo /wifi_state --once\n\n# View raw telemetry\nros2 topic echo /telemetry --once\n\n# Get LiDAR scan data\nros2 topic echo /scan --once\n\n# View current odometer value\nros2 topic echo /odom --once\n\n# View current wheel rotation angles\nros2 topic echo /joint_states --once\n\n# View current battery voltage, charge percentage\nros2 topic echo /battery_state --once\n\n# View target velocity sent by kaiaai_telem or navigation\nros2 topic echo /cmd_vel --once\n```\n\n## Operate robot in simulated environment\n\n### Operate a simulated robot manually\n\n```\n# Launch the robot in a simulation - drive manually\nros2 launch kaiaai_gazebo world.launch.py\nros2 run kaiaai_teleop teleop_keyboard\nros2 launch kaiaai_bringup monitor_robot.launch.py\n\n# Launch the robot in a simulation - robot self-drives around\nros2 launch kaiaai_gazebo world.launch.py\nros2 launch kaiaai_gazebo self_drive_gazebo.launch.py\nros2 launch kaiaai_bringup monitor_robot.launch.py\n\n# Launch the robot in a simulation - let it navigate automatically using an existing map\nros2 launch kaiaai_gazebo world.launch.py\nros2 launch kaiaai_bringup navigation.launch.py use_sim_time:=true \\\n  map:=/ros_ws/src/kaiaai_gazebo/map/living_room.yaml\n\n# Launch the robot in a simulation - navigate and create a map simultaneously; save the map\nros2 launch kaiaai_gazebo world.launch.py robot_model:=makerspet_loki\nros2 launch kaiaai_bringup navigation.launch.py use_sim_time:=true slam:=True\nros2 run nav2_map_server map_saver_cli -f ~/maps/map --ros-args -p save_map_timeout:=60.0\n```\n\n### Let robot self-drive autonomously\n\n```\n# Launch the robot in a simulation - create, save a map; robot self-drives around trivially\nros2 launch kaiaai_gazebo world.launch.py\nros2 launch kaiaai_bringup cartographer.launch.py use_sim_time:=true\nros2 launch kaiaai_gazebo self_drive_gazebo.launch.py\nros2 run nav2_map_server map_saver_cli -f ~/maps/living_room_map --ros-args -p save_map_timeout:=60.0\n\n# Launch the robot in a simulation - navigate and create a map simultaneously\n# Robot seeks out, self-drives to unknown locations to complete the mapping\nros2 launch kaiaai_gazebo world.launch.py\nros2 launch kaiaai_bringup navigation.launch.py use_sim_time:=true slam:=True\nros2 launch explore_lite explore.launch.py\nros2 run nav2_map_server map_saver_cli -f ~/maps/map --ros-args -p save_map_timeout:=60.0\n\n# Launch the robot in a simulation - navigate and create a map simultaneously\n# Robot seeks out, self-drives to unknown locations to complete the mapping, saves map\nros2 run auto_mapper auto_mapper map_path:=/ros_ws/map.yaml\nros2 launch kaiaai_gazebo world.launch.py\nros2 launch kaiaai_bringup navigation.launch.py use_sim_time:=true slam:=True\n\n# Launch the robot in a simulation - navigate and create a map simultaneously\n# Robot seeks out, self-drives to unknown locations to complete the mapping\nros2 launch kaiaai_gazebo world.launch.py\nros2 launch kaiaai_bringup navigation.launch.py use_sim_time:=true slam:=True\nros2 run nav2_wfd explore\n```\n\n## Advanced Configuration\n\n### List of Supported LiDARs\nYou can set `lidar_model` to any of these supported models: `XIAOMI-LDS02RR`, `YDLIDAR-X4`, `YDLIDAR-X3`,\n`YDLIDAR-X3-PRO`, `YDLIDAR-X2-X2L`, `YDLIDAR-SCL`, `NEATO-XV11`, `3IROBOTIX-DELTA-2A`, `3IROBOTIX-DELTA-2B`,\n`3IROBOTIX-DELTA-2G`, `LDROBOT-LD14P`, `CAMSENSE-X1`, `SLAMTEC-RPLIDAR-A1`.\n\n\n### Add your own modifications to an existing robot\n```\n# Inspect, edit robot's URDF model\nros2 launch kaiaai_bringup inspect_urdf.launch.py\nros2 launch kaiaai_bringup edit_urdf.launch.py\n\n# Convert URDF robot model file into SDF Gazebo simulation model file\nros2 run kaiaai_gazebo urdf2sdf.sh /ros_ws/src/makerspet_loki\ncd /ros_ws \u0026\u0026 colcon build --symlink-install --packages-select makerspet_loki\n```\n\n### Overriding default robot and LiDAR models per launch\nCommands `physical.launch.py`, `teleop_keyboard`, `monitor_robot.launch.py`, `cartographer.launch.py`,\n`navigation.launch.py`, `inspect_urdf.launch.py`, `edit_urdf.launch.py` and `world.launch.py` accept\nan optional `robot_model` argument to override the default robot package setting, per launch.\n\nThe `physical.launch.py` also accepts an optional `lidar_model` argument to override the default\nLiDAR model choice.\n\nFor example, the command below will use the `makerspet_loki` robot model and `YDLIDAR-X3` LiDAR instead of the defaults.\n```\nros2 launch kaiaai_bringup physical.launch.py robot_model:=makerspet_loki lidar_model:=YDLIDAR-X3\n```\n\n## Acknowledgements\nInitial versions of packages in this repo are based on ROBOTIS\n[Turtlebot3 code](https://github.com/ROBOTIS-GIT/turtlebot3)\n\n## Release notes\nv0.10.0 in debug\n- converted kaiaa from metapackage to Pyhon package\n- kaia CLI sets default robot model\n- added YDLIDAR SCL\n  - added intensity telemetry publication\n- added Maker's Pet Mini\n  - added LiDAR orientation_deg\n\nv0.9.0\n- added WebRTC, web server, OpenCV launch\n- added Camsense X1 LiDAR\n\nv0.8.0\n- added kaiaai_python ROS2 package\n- added 3irobotix Delta-2A 230400 baud (vs 115200)\n- added 3irobotix Delta-2B\n- bugfix missing first scan point\n\nv0.7.0\n- kaiaai_telemetry\n  - switched to KaiaTelemetry2 message\n  - publish /battery_state\n  - publish /wifi_state RSSI\n  - discard_broken_scans, needs more debug\n- added LDROBOT LD14P\n\nv0.6.0 2/11/2024\n- added 3irobotix Delta-2A, Delta-2G\n\n2/5/2024\n- added LiDAR laser distance scan sensors support\n  - YDLIDAR X3, X3-PRO\n  - Neato XV11\n  - RPLIDAR A1\n- split kaiaai_telemetry config into default and custom\n  - `kaiaai/kaiaai_telemetry/config/telem.yaml` is the default config\n  - `makerspet_loki/config/telem.yaml` is the custom config for the Loki robot model\n  - `makerspet_fido/config/telem.yaml` is the custom config for the Fido robot model\n  - `makerspet_snoopy/config/telem.yaml` is the custom config for the Snoopy robot model\n\n1/28/2024\n- added YDLIDAR X2 support to kaiaai_telemetry \n\n1/21/2024\n- kaiaai_telemetry now supports multiple LiDAR laser distance scan sensors\n  - added Xiaomi Mi LDS02RR; default is YDLIDAR X4\n\n12/11/2024\n- added fully automatic self-driving to map exploration (frontier exploration m-explore)\n  - I think this code needs debug\n\n12/7/2024\n- added Nav2 SLAM (as an alternative to Google Cartographer)\n  - Nav2 SLAM enables driving autonomously to a set goal *while* mapping (and while the map is still incomplete)\n- increase the map saver default timeout\n  - fixed the map saving command timing out on my \"slow\" laptop\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaiaai%2Fkaiaai","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkaiaai%2Fkaiaai","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaiaai%2Fkaiaai/lists"}