├── .github ├── CODEOWNERS ├── DISCUSSION_TEMPLATE │ └── Questions.yml └── workflows │ └── ci.yml ├── .gitignore ├── LICENSE.txt ├── README.md ├── docs ├── api │ ├── data │ │ └── create3_dock_codes.png │ ├── docking.md │ ├── drive-goals.md │ ├── hazards.md │ ├── moving-the-robot.md │ ├── odometry.md │ ├── reflexes.md │ ├── ros2.md │ ├── safety.md │ ├── ui.md │ └── wall-follow.md ├── assets │ ├── irobot_symbol_green.png │ └── irobot_symbol_white.png ├── examples │ ├── actuators-cli.md │ ├── create3_examples.md │ ├── data │ │ ├── create3_lidar_rviz.png │ │ └── create3_lidar_top.jpg │ ├── driving-cli.md │ └── sensors-cli.md ├── faq │ ├── data │ │ ├── Create-3_Product-Information-Guide.pdf │ │ ├── buttons.png │ │ ├── faceplate.png │ │ ├── power-1.png │ │ ├── power-2.png │ │ ├── power-3.png │ │ ├── setup-1-1.png │ │ ├── setup-1-2.png │ │ ├── setup-2-1.png │ │ ├── setup-2-2.png │ │ ├── setup-2-3.png │ │ ├── setup-2-4.png │ │ ├── setup-2-5.png │ │ ├── setup-3-1.png │ │ ├── setup-3-2.png │ │ ├── setup-3-3.png │ │ ├── setup-3-4.png │ │ └── setup-3-5.png │ └── faq.md ├── hw │ ├── adapter.md │ ├── data │ │ ├── 3d_model.jpg │ │ ├── adapter_in.jpg │ │ ├── adapter_out.jpg │ │ ├── bottom.jpg │ │ ├── bottom_drawing.svg │ │ ├── buttons.png │ │ ├── cargo_bay_caster.png │ │ ├── cargo_bay_drawing.svg │ │ ├── caster_attachment.png │ │ ├── faceplate_drawing.svg │ │ ├── front_iso.jpg │ │ ├── hookup_jetson_xavier_nx.jpg │ │ ├── hookup_jetson_xavier_nx_on_c3_with_PC.jpg │ │ ├── hookup_nano2gb.jpg │ │ ├── hookup_navqplus_adapter_mount_bay.jpg │ │ ├── hookup_navqplus_case_faceplate.jpg │ │ ├── hookup_pi3b.jpg │ │ ├── hookup_pi4.jpg │ │ ├── hookup_piZ.jpg │ │ ├── iRobot_Create_3_Public_Model.step │ │ ├── ir_sensors_drawing.svg │ │ ├── lightring │ │ │ ├── blue_spinning.gif │ │ │ ├── blue_spinning.jpg │ │ │ ├── boot.gif │ │ │ ├── charged_spinning.gif │ │ │ ├── cyan_solid.jpg │ │ │ ├── cyan_spinning.gif │ │ │ ├── green_solid.jpg │ │ │ ├── orange_half_solid.jpg │ │ │ ├── orange_pulsing.gif │ │ │ ├── orange_solid.jpg │ │ │ ├── purple_spinning.gif │ │ │ ├── red_pulsing.gif │ │ │ ├── red_solid.jpg │ │ │ ├── red_spinning.gif │ │ │ ├── white_solid.jpg │ │ │ ├── yellow-blue_solid.jpg │ │ │ ├── yellow-green_solid.jpg │ │ │ ├── yellow-red_solid.jpg │ │ │ ├── yellow-white_solid.jpg │ │ │ ├── yellow_half_solid.jpg │ │ │ └── yellow_solid.jpg │ │ ├── lock_faceplate.svg │ │ ├── models │ │ │ ├── Caster │ │ │ │ ├── Cargo_Bay_with_Caster │ │ │ │ │ ├── C3-Cargo-Bay-With-Caster.png │ │ │ │ │ └── C3-Cargo-Bay-With-Caster.stl │ │ │ │ ├── Caster_Lock │ │ │ │ │ ├── C3-Caster-Lock.png │ │ │ │ │ └── C3-Caster-Lock.stl │ │ │ │ ├── Rear_Caster_Attachment │ │ │ │ │ ├── C3-Rear-Caster-Attachment.png │ │ │ │ │ └── C3-Rear-Caster-Attachment.stl │ │ │ │ └── Rear_Caster_Attachment_Latch │ │ │ │ │ ├── C3-Rear-Caster-Attachment-Latch.png │ │ │ │ │ └── C3-Rear-Caster-Attachment-Latch.stl │ │ │ ├── Compute │ │ │ │ ├── NVIDIA_Jetson │ │ │ │ │ └── Mount_Bracket │ │ │ │ │ │ ├── C3-JetsonXavierNX-Mount.3mf │ │ │ │ │ │ ├── C3-JetsonXavierNX-Mount.png │ │ │ │ │ │ ├── C3-JetsonXavierNX-Mount.stl │ │ │ │ │ │ └── C3-JetsonXavierNX-Mount_slice-example.png │ │ │ │ ├── NavQPlus_by_NXP │ │ │ │ │ ├── Adapter_Plate │ │ │ │ │ │ ├── C3-RudisLabs-NavQPlus-Adapter.png │ │ │ │ │ │ ├── C3-RudisLabs-NavQPlus-Adapter.stl │ │ │ │ │ │ └── C3-RudisLabs-NavQPlus-Adapter.stp │ │ │ │ │ ├── Case_Base │ │ │ │ │ │ ├── C3-NavQPlus-Base.png │ │ │ │ │ │ ├── C3-NavQPlus-Base.stl │ │ │ │ │ │ └── C3-NavQPlus-Base.stp │ │ │ │ │ └── Case_Top │ │ │ │ │ │ ├── C3-NavQPlus-Top.png │ │ │ │ │ │ ├── C3-NavQPlus-Top.stl │ │ │ │ │ │ └── C3-NavQPlus-Top.stp │ │ │ │ └── Raspberry_Pi │ │ │ │ │ ├── Large_Mount │ │ │ │ │ ├── C3-RPi-Mount-20211022.png │ │ │ │ │ └── C3-RPi-Mount-20211022.stl │ │ │ │ │ └── Small_Mount │ │ │ │ │ ├── C3-RPi-Mount-Small-20211022.png │ │ │ │ │ └── C3-RPi-Mount-Small-20211022.stl │ │ │ ├── Generic │ │ │ │ ├── Bolt_Post_Mount │ │ │ │ │ ├── C3-RudisLabs-Threaded-1_4-20UNC-post-mount.png │ │ │ │ │ ├── C3-RudisLabs-Threaded-1_4-20UNC-post-mount.stl │ │ │ │ │ ├── C3-RudisLabs-Threaded-1_4-20UNC-post-mount.stp │ │ │ │ │ └── details.txt │ │ │ │ └── Stud_Mount │ │ │ │ │ ├── C3-Stud-Mount.png │ │ │ │ │ └── C3-Stud-Mount.stl │ │ │ └── Sensors │ │ │ │ ├── IntelRealSense │ │ │ │ └── D435_Mount │ │ │ │ │ ├── C3-RealSense-D435-Mount.png │ │ │ │ │ └── C3-RealSense-D435-Mount.stl │ │ │ │ ├── Luxonis │ │ │ │ ├── Oak-D_Lite_Mount │ │ │ │ │ ├── C3-OAK-D-Lite-Mount.png │ │ │ │ │ └── C3-OAK-D-Lite-Mount.stl │ │ │ │ └── Oak-D_Mount │ │ │ │ │ ├── C3-OAK-D-Mount.png │ │ │ │ │ └── C3-OAK-D-Mount.stl │ │ │ │ └── SLAMTEC │ │ │ │ ├── RPLIDAR_A1_Minimal_Mount │ │ │ │ ├── C3-RudisLabs-Minimal-RPLIDAR-A1M8-Adapter.png │ │ │ │ ├── C3-RudisLabs-Minimal-RPLIDAR-A1M8-Adapter.stl │ │ │ │ └── C3-RudisLabs-Minimal-RPLIDAR-A1M8-Adapter.stp │ │ │ │ ├── RPLIDAR_A1_Mount │ │ │ │ ├── C3-RPLidar-A1-Mount.png │ │ │ │ └── C3-RPLidar-A1-Mount.stl │ │ │ │ └── RPLIDAR_A1_USB_Mount │ │ │ │ ├── C3-RPLidar-A1-USB-Mount.png │ │ │ │ └── C3-RPLidar-A1-USB-Mount.stl │ │ ├── navqplus_case_sensors.jpg │ │ ├── payload_surfaces.svg │ │ ├── rear_iso.jpg │ │ ├── remove_faceplate.svg │ │ ├── side_drawing.svg │ │ └── top_drawing.svg │ ├── electrical.md │ ├── face.md │ ├── hookup.md │ ├── jetson_hookup.md │ ├── mechanical.md │ ├── navqplus_hookup.md │ ├── overview.md │ ├── print_casters.md │ ├── print_compute.md │ ├── print_generic.md │ ├── print_sensor_mounts.md │ └── rpi_hookup.md ├── index.md ├── lessons │ ├── Create3-Welcome-Guide.pdf │ ├── getting-started.md │ ├── pwp │ │ ├── Create3-C3_Phone_Home.pdf │ │ ├── Create3-Rainbow_Light_Painting.pdf │ │ ├── Create3-Robot_Dance_Recital.pdf │ │ ├── Create3-Sound_Off.pdf │ │ ├── Python-Web-Playground_First-Project.pdf │ │ ├── airtable │ │ │ ├── add-a-base.png │ │ │ ├── api-documentation.png │ │ │ ├── auth.png │ │ │ ├── forward.png │ │ │ ├── help.png │ │ │ ├── name-base.png │ │ │ ├── open-base.png │ │ │ ├── playground-info.png │ │ │ └── pwp-screenshot.png │ │ ├── c3-phone-home.md │ │ ├── cheat-sheets.md │ │ ├── integrating-airtable.md │ │ ├── light-painting.md │ │ ├── pwp-sdk_commands.pdf │ │ ├── robot-dance-recital.md │ │ ├── sound-off-1-2.md │ │ └── web-playground.md │ └── ros2 │ │ ├── intro │ │ ├── creating-packages.md │ │ ├── serial-communication.md │ │ ├── working-with-the-cli.md │ │ ├── writing-action-clients.md │ │ └── writing-pubs-and-subs.md │ │ ├── overview.md │ │ ├── teleop-1.gif │ │ ├── teleop-2.gif │ │ └── teleop-twist.md ├── releases │ ├── g_1_1.md │ ├── g_2_2.md │ ├── g_3_1.md │ ├── g_4_1.md │ ├── g_4_3.md │ ├── g_4_4.md │ ├── g_4_5.md │ ├── g_5_1.md │ ├── g_5_2.md │ ├── g_5_3.md │ ├── g_5_4.md │ ├── h_0_0.md │ ├── h_1_0.md │ ├── h_1_1.md │ ├── h_1_2.md │ ├── h_2_1.md │ ├── h_2_2.md │ ├── h_2_3.md │ ├── h_2_4.md │ ├── h_2_5.md │ ├── h_2_6.md │ ├── i_0_0.md │ └── overview.md ├── setup │ ├── compute-ntp.md │ ├── data │ │ ├── app-config.png │ │ ├── appconfig.png │ │ ├── cmdline.txt │ │ ├── create3_ros_domain_id.png │ │ ├── ethoverusb.png │ │ ├── ethoverusb_step1-2.png │ │ ├── ethoverusb_step3.png │ │ ├── fastdds.png │ │ ├── jetson_setup_flow_overview.png │ │ ├── logs.png │ │ ├── navqplus │ │ │ ├── flash_hookup_lights.jpg │ │ │ ├── usb_network.png │ │ │ ├── uuu_emmc.png │ │ │ └── uuu_ls.png │ │ ├── network-config.txt │ │ ├── nv-l4t-usb-device-mode-runtime-start.sh │ │ ├── super_client_configuration_file.xml │ │ └── usercfg.txt │ ├── discovery-server.md │ ├── docker.md │ ├── jetson.md │ ├── multi-robot.md │ ├── navqplus.md │ ├── network-config.md │ ├── pi4.md │ ├── pi4galactic.md │ ├── pi4humble.md │ ├── provision.md │ ├── ubuntu2004.md │ ├── ubuntu2204.md │ └── xml-config.md ├── sim │ └── setup.md ├── stylesheets │ └── irobot-palette.css └── webserver │ ├── about.md │ ├── application.md │ ├── connect.md │ ├── data │ ├── about.png │ ├── app-config.png │ ├── connect.png │ ├── edit-ntp-conf.png │ ├── edit-wpa-supp.png │ ├── home-in-AP.png │ ├── home.png │ ├── logs.png │ ├── rmw-profile-override.png │ ├── serial-config.png │ ├── set-datetime.png │ ├── set-wired-subnet.png │ ├── update-expanded.png │ └── update.png │ ├── edit-ntp-conf.md │ ├── forget-wifi.md │ ├── home.md │ ├── logs.md │ ├── overview.md │ ├── restart-ntpd.md │ ├── rmw-profile-override.md │ ├── serial-config.md │ ├── set-datetime.md │ ├── set-wired-subnet.md │ ├── update.md │ └── wpa-supp-override.md ├── main.py ├── mkdocs.yml ├── model_image_generation.txt ├── requirements.txt └── theme_overrides └── partials └── footer.html /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @alsora @justinIRBT @shamlian @wpd -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: ci 2 | on: 3 | push: 4 | branches: 5 | - main 6 | jobs: 7 | deploy: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - name: Checkout main 11 | uses: actions/checkout@v2 12 | 13 | - name: Deploy docs 14 | uses: mhausenblas/mkdocs-deploy-gh-pages@master 15 | env: 16 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 17 | CONFIG_FILE: mkdocs.yml 18 | EXTRA_PACKAGES: build-base 19 | REQUIREMENTS: requirements.txt 20 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | env/ 12 | build/ 13 | develop-eggs/ 14 | dist/ 15 | downloads/ 16 | eggs/ 17 | .eggs/ 18 | lib/ 19 | lib64/ 20 | parts/ 21 | sdist/ 22 | var/ 23 | *.egg-info/ 24 | .installed.cfg 25 | *.egg 26 | 27 | # PyInstaller 28 | # Usually these files are written by a python script from a template 29 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 30 | *.manifest 31 | *.spec 32 | 33 | # Installer logs 34 | pip-log.txt 35 | pip-delete-this-directory.txt 36 | 37 | # Unit test / coverage reports 38 | htmlcov/ 39 | .tox/ 40 | .coverage 41 | .coverage.* 42 | .cache 43 | nosetests.xml 44 | coverage.xml 45 | *,cover 46 | .hypothesis/ 47 | 48 | # Translations 49 | *.mo 50 | 51 | # Scrapy stuff: 52 | .scrapy 53 | 54 | # PyBuilder 55 | target/ 56 | 57 | # IPython Notebook 58 | .ipynb_checkpoints 59 | 60 | # pyenv 61 | .python-version 62 | 63 | # virtualenv 64 | venv/ 65 | ENV/ 66 | 67 | # MkDocs documentation 68 | site/ -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright 2021 iRobot Corporation. 2 | 3 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 4 | 5 | 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 6 | 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 7 | 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. 8 | 9 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 10 | IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 11 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # create3_docs 2 | 3 | This repository contains the source code for the iRobot® Create® 3 Educational Robot documentation. 4 | The automatically generated website can be viewed at https://iroboteducation.github.io/create3_docs/ 5 | 6 | ### Build the docs locally 7 | 8 | Install required dependencies: 9 | 10 | ```bash 11 | pip3 install mkdocs 12 | pip3 install mkdocs-material 13 | pip3 install -r requirements.txt 14 | ``` 15 | 16 | Optionally, if you desire to generate images of STL models dynamically install: 17 | 18 | ```bash 19 | pip3 install -r model_image_generation.txt 20 | ``` 21 | 22 | 23 | Build the documentation locally: 24 | 25 | ```bash 26 | mkdocs serve 27 | ``` 28 | 29 | Open `http://127.0.0.1:8000/` in a browser to visualize the docs. 30 | 31 | ### Updating the docs 32 | 33 | After commits are pushed to the `main` branch a new build of the website will automatically start. 34 | -------------------------------------------------------------------------------- /docs/api/data/create3_dock_codes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/api/data/create3_dock_codes.png -------------------------------------------------------------------------------- /docs/api/docking.md: -------------------------------------------------------------------------------- 1 | # Create® 3 Docking 2 | 3 | The Create® 3 robot is equipped with a docking station to recharge it between experiments. 4 | 5 | Through the ROS 2[^1] APIs users can command docking and undocking autonomous behaviors. 6 | 7 | !!! warning 8 | Note that the docking action and sensor topic changed between Galactic and Humble. 9 | 10 | In order for the robot to detect the dock, determine its location, and understand when it is succesfully docked, it is necessary that the docking station is connected to a power source. 11 | 12 | ## Autonomous behaviors 13 | 14 | #### Undocking 15 | 16 | You can command the robot to undock using the following ROS 2 action. 17 | 18 | ```bash 19 | ros2 action send_goal /undock irobot_create_msgs/action/Undock "{}" 20 | ``` 21 | 22 | The robot will move backward out of the dock and then it will rotate 180 degrees. 23 | 24 | This action will fail if the robot is already undocked. 25 | 26 | #### Docking 27 | 28 | You can command the robot to dock using a ROS 2 action. 29 | 30 | ##### Galactic 31 | ```bash 32 | ros2 action send_goal /dock irobot_create_msgs/action/DockServo "{}" 33 | ``` 34 | 35 | ##### Humble 36 | ```bash 37 | ros2 action send_goal /dock irobot_create_msgs/action/Dock "{}" 38 | ``` 39 | 40 | The robot will first search for the dock in its immediate surroundings. 41 | Note that the action will fail if the robot is too far from the dock. 42 | You can check if the dock is visible by subscribing to the (in Galactic) `/dock` (or in Humble) `/dock_status` ROS 2 topic. 43 | 44 | Then the robot will align with the dock and carefully drive onto it. 45 | 46 | This action will fail if the robot is already docked. 47 | 48 | ## Docking sensor data 49 | 50 | The Create® 3 robot exposes several docking-related information through its ROS 2 publications. 51 | These should allow users to write their own algorithms taking into account the presence of the dock in the environment and even to write their own docking and undocking procedures. 52 | 53 | #### IR opcodes 54 | 55 | The Create® 3 docking station transmit several IR signals. 56 | The Create® 3 robot is equipped with two different sensors that are capable of detecting them. 57 | 58 | ![Docking signals](data/create3_dock_codes.png) 59 | 60 | The robot will publish these signals in the `/ir_opcode` ROS 2 topic. 61 | Each message will contain a time-stamped detection of one of those signals, including the identifier of the sensor that detected it. 62 | 63 | #### Dock information 64 | 65 | In Galactic, more high-level information is produced by the robot in the `/dock` ROS 2 topic. 66 | In Humble and beyond, the topic has been renamed to `/dock_status`. 67 | Here it's possible to quickly know if the robot is able to see the dock from its current location and whether it is currently docked or not. 68 | 69 | [^1]: ROS 2 is governed by Open Robotics 70 | [^2]: All trademarks mentioned are the property of their respective owners. 71 | -------------------------------------------------------------------------------- /docs/api/drive-goals.md: -------------------------------------------------------------------------------- 1 | # Create® 3 Drive Goals 2 | 3 | The Create® 3 robot exposes some actions for simple driving goals that close the loop on odometry position. 4 | 5 | Through the ROS 2[^1] APIs users can command: 6 | 7 | * Driving along a specified arc 8 | 9 | * Driving in a straight line for a fixed distance 10 | 11 | * Navigating to a specified odometry position and orientation 12 | 13 | * Rotating a fixed angle 14 | 15 | A cliff event or a wheel stall will trigger a goal to cancel, 16 | otherwise it will run until the robot achieves the odometry goal or it's canceled by the user. 17 | If there is something blocking the robot's path, 18 | the user must intervene to stop the robot, 19 | otherwise it will continue to bump until odometry slip achieves the goal position. 20 | 21 | ## Built-in Drive Goals behaviors 22 | 23 | #### Drive Arc 24 | 25 | You can command the robot to drive a fixed angle along an arc defined by radius: 26 | 27 | ```bash 28 | ros2 action send_goal /drive_arc irobot_create_msgs/action/DriveArc "{angle: 1.57,radius: 0.3,translate_direction: 1,max_translation_speed: 0.3}" 29 | ``` 30 | 31 | The robot will drive forward or backward given the translate direction along an arc defined by radius until it achieves the specified relative heading. 32 | 33 | #### Drive Distance 34 | 35 | You can command the robot to drive a fixed distance in a straight line: 36 | 37 | ```bash 38 | ros2 action send_goal /drive_distance irobot_create_msgs/action/DriveDistance "{distance: 0.5,max_translation_speed: 0.15}" 39 | ``` 40 | 41 | The robot will drive straight until it has traveled the specified distance in odometry frame. 42 | It will drive backwards if distance is negative (be aware of the [backup limit](../safety/#backup-limit)). 43 | 44 | #### Navigate To Position 45 | 46 | You can command the robot to drive to the specified odometry position: 47 | 48 | ```bash 49 | ros2 action send_goal /navigate_to_position irobot_create_msgs/action/NavigateToPosition "{achieve_goal_heading: true,goal_pose:{pose:{position:{x: 1,y: 0.2,z: 0.0}, orientation:{x: 0.0,y: 0.0, z: 0.0, w: 1.0}}}}" 50 | ``` 51 | 52 | The robot will take a rotate -> translate -> rotate approach to achieve the goal position. 53 | First rotating from its current heading to face the goal position, then driving straight to the goal position, 54 | then optionally rotating to achieve the goal heading. 55 | 56 | #### Rotate Angle 57 | 58 | You can command the robot to rotate a relative angle from current robot heading: 59 | 60 | ```bash 61 | ros2 action send_goal /rotate_angle irobot_create_msgs/action/RotateAngle "{angle: 1.57,max_rotation_speed: 0.5}" 62 | ``` 63 | 64 | The robot will rotate either clockwise (negative angle) or counter clockwise (positive angle) until it has achieved the angle offset. 65 | 66 | [^1]: ROS 2 is governed by Open Robotics 67 | [^2]: All trademarks mentioned are the property of their respective owners. 68 | -------------------------------------------------------------------------------- /docs/api/moving-the-robot.md: -------------------------------------------------------------------------------- 1 | # Moving the Robot 2 | 3 | This page describes the various APIs available to move the Create® 3 robot via ROS 2[^1]. 4 | 5 | !!! important 6 | Supervise your robot while executing movements, to avoid risk of damaging it or its surroundings. 7 | 8 | !!! important 9 | It's recommended to not try to command robot motions if the robot is on its docking station. 10 | Either lift it and place it somewhere else or use the built-in [undocking behavior](../docking/#undocking). 11 | 12 | 13 | ## Velocity Control 14 | 15 | The velocity control API is the simplest way to move the Create® 3 robot. 16 | It's recommended for beginners and to simply try out the robot. 17 | Being the lowest-level motion API exposed by the robot, this is also recommended to the more advanced users who want to implement their own autonomous navigation applications. 18 | 19 | The robot is controlled by publishing [geometry_msgs/msg/Twist](https://github.com/ros2/common_interfaces/blob/rolling/geometry_msgs/msg/Twist.msg) messages to the `/cmd_vel` topic. 20 | For example, to move the robot straight forward using the ROS 2 command line: 21 | 22 | ```bash 23 | ros2 topic pub -r 20 /cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0.2, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.0}}" 24 | ``` 25 | 26 | The robot will execute the last received message on the topic until a fixed timeout period has passed or a new message is received, at which point the timer is restarted and this process begins again. 27 | The purpose of the timeout is to provide an easy way to stop the robot, i.e. just stop sending messages rather than having to send an explicit "0", and to prevent the robot to keep moving if it has lost connectivity with the process controlling it (e.g. a script on the user's laptop). 28 | 29 | 47 | 48 | Note that these raw velocity commands have lower "priority" than the other request-based approaches to move the robot (described in the next sections). 49 | The request of a position control or autonomous behavior goal will block the execution of the `cmd_vel` messages, which will be ignored until the goal terminates. 50 | The corollary is that it's of no use to publish `cmd_vel` messages while those are running; you should rather first wait for the behavior to finish or actively cancel it. 51 | 52 | ## Position Control 53 | 54 | The position control APIs are suitable for users who want to implement simple high-level strategies, such as driving a specific pattern. 55 | Basic position control, based on the internal dead-reckoning estimate of the robot, is exposed to the user via ROS 2 action goals. 56 | See the [drive goals documentation](drive-goals.md) for details. 57 | 58 | ## Autonomous Behaviors 59 | 60 | The Create® 3 robot exposes some autonomous behaviors suitable for more specific situations. 61 | These behaviors are controlled using ROS 2 action goals. 62 | 63 | - [Docking and Undocking](docking.md) 64 | - [Obstacle Following](wall-follow.md) 65 | 66 | 67 | [^1]: ROS 2 is governed by Open Robotics 68 | -------------------------------------------------------------------------------- /docs/api/odometry.md: -------------------------------------------------------------------------------- 1 | # Odometry Estimation 2 | 3 | The Create® 3 robot is equipped with a variety of sensors that are used to detect its motions. 4 | In particular you will find: 5 | 6 | - IMU 7 | - Optical mouse 8 | - Wheel encoders 9 | 10 | Many details about these messages can be found in the message definitions themselves, which are linked below. 11 | 12 | ## Raw sensor topics 13 | 14 | If you want to implement your own algorithms using the raw sensor readings, you can read them from the following topics: 15 | 16 | ### The `imu` topic 17 | 18 | The `imu` topic produces messages of type [`sensor_msgs/msg/Imu`](https://github.com/ros2/common_interfaces/blob/rolling/sensor_msgs/msg/Imu.msg). 19 | As of G.4 / H.1, this topic publishes at 100 Hz. 20 | Prior to these releases, this topic published at 62.5 Hz. 21 | 22 | ### The `mouse` topic 23 | 24 | The `mouse` topic produces messages of type [`irobot_create_msgs/msg/Mouse`](https://github.com/iRobotEducation/irobot_create_msgs/blob/rolling/msg/Mouse.msg). 25 | This topic publishes at 62.5 Hz. 26 | 27 | ### The `wheel_status` topic 28 | 29 | The `wheel_status` topic produces messages of type [`irobot_create_msgs/msg/WheelStatus`](https://github.com/iRobotEducation/irobot_create_msgs/blob/rolling/msg/WheelStatus.msg). 30 | This topic publishes at 62.5 Hz. 31 | 32 | ### The `wheel_ticks` topic 33 | 34 | The `wheel_ticks` topic produces messages of type [`irobot_create_msgs/msg/WheelTicks`](https://github.com/iRobotEducation/irobot_create_msgs/blob/rolling/msg/WheelStatus.msg). 35 | This topic publishes at 62.5 Hz. 36 | There are 508.8 ticks per wheel rotation. 37 | 38 | ### The `wheel_vels` topic 39 | 40 | The `wheel_status` topic produces messages of type [`irobot_create_msgs/msg/WheelStatus`](https://github.com/iRobotEducation/irobot_create_msgs/blob/rolling/msg/WheelVels.msg). 41 | This topic publishes at 62.5 Hz. 42 | 43 | ## Fused Sensor topics 44 | 45 | The following topics are computed on-board the Create 3 robot using its raw sensor data. 46 | 47 | ### The `odom` topic 48 | 49 | The `odom` topic produces messages of type [`nav_msgs/msg/Odometry`](https://github.com/ros2/common_interfaces/blob/rolling/nav_msgs/msg/Odometry.msg). 50 | The Create® 3 robot fuses the reading from its various sensors in order to produce a dead reckoning estimate of its pose on the `odom` topic. 51 | This topic publishes at 20 Hz. 52 | 53 | ### The `slip_status` topic 54 | 55 | The `slip_status` topic produces messages of type [`irobot_create_msgs/msg/SlipStatus`](https://github.com/iRobotEducation/irobot_create_msgs/blob/rolling/msg/SlipStatus.msg). 56 | We denote by "slippage" a loss of efficiency in the wheels. 57 | This is usually caused by losing traction between the wheels and the ground with the results that the motion detected by the wheels encoders is greater than what the robot actually performed. 58 | 59 | We fuse together various sensors in order to compute a boolean estimate of whether the robot is slipping or not and we periodically publish it on the `slip_status` topic. 60 | If you are developing your own state estimation algorithm using the wheels encoders, then it is recommended to inflate the differential motion covariance matrix to take this problem into account. 61 | 62 | Note that the optical mouse sensor is not affected by slippage. 63 | This topic publishes at 20 Hz. 64 | 65 | ### The `stop_status` topic 66 | 67 | The `stop_status` topic produces messages of type [`irobot_create_msgs/msg/StopStatus`](https://github.com/iRobotEducation/irobot_create_msgs/blob/rolling/msg/StopStatus.msg). 68 | The Create® 3 robot will periodically publish a boolean estimate of whether it is currently moving or not on the `stop_status` topic. 69 | This topic publishes at 1 Hz. 70 | 71 | [^1]: All trademarks mentioned are the property of their respective owners. 72 | -------------------------------------------------------------------------------- /docs/api/reflexes.md: -------------------------------------------------------------------------------- 1 | # Reflexes 2 | 3 | With the word "reflex" we denote a set of autonomous reactive behaviors that the Create® 3 robot will trigger when it detects obstacles or hazards. 4 | 5 | Reflexes are high-priority behaviors and will temporarily override any user-provided command for their short duration. 6 | 7 | Reflexes can be enabled or disabled on the Create® 3 using the corresponding ROS 2[^1] parameters exposed by the `motion_control` ROS 2 node. 8 | 9 | ## Reflex parameters 10 | 11 | The `reflexes_enabled` parameter controls whether reflexes should be executed or not. It accepts boolean values. 12 | When this parameter is set to `false`, no reflexes will be enabled, regardless of their specific parameters values. 13 | 14 | This parameter is set to true by default, so reflexes are generally enabled, but note that individual reflexes can be enabled or disabled via their specific parameters described below. 15 | 16 | ### Bumps reflex 17 | 18 | The `reflexes.REFLEX_BUMP` ROS 2 parameter enables (`true`) or disables (`false`) the bump reflex. 19 | It will trigger as soon as the robot bumps into an obstacle and it will move the robot away from it. 20 | The reflex will continue until the robot has cleared the bump. 21 | 22 | This reflex is enabled by default. 23 | 24 | ### Cliffs reflex 25 | 26 | The `reflexes.REFLEX_CLIFF` ROS 2 parameter enables (`true`) or disables (`false`) the cliff reflex. 27 | It will trigger as soon as the robot detects a cliff and it will move the robot away from it. 28 | The reflex will continue until the robot has cleared the cliff. 29 | 30 | This reflex is enabled by default. 31 | 32 | ### Dock avoidance reflex 33 | 34 | The `reflexes.REFLEX_DOCK_AVOID` ROS 2 parameter enables (`true`) or disables (`false`) the dock avoidance reflex. 35 | It will trigger as soon as the robot gets close to the dock and tries to move towards it. 36 | The reflex will stop forward movements. 37 | 38 | This reflex is disabled by default. 39 | 40 | ### Gyro calibration reflex 41 | 42 | The `reflexes.REFLEX_GYRO_CAL` ROS 2 parameter enables (`true`) or disables (`false`) the gyro calibration reflex. 43 | It will trigger while the robot is stationary and will try to recalibrate the internal gyroscope. 44 | 45 | This reflex is enabled by default. 46 | 47 | ### Panic reflex 48 | 49 | The `reflexes.REFLEX_PANIC` ROS 2 parameter enables (`true`) or disables (`false`) the panic reflex. 50 | It will trigger when the robot is trapped and unable to clear obstacles or hazards. 51 | The reflex will try more aggressive maneuvers to allow the robot to recover from this situation 52 | 53 | This reflex is enabled by default. 54 | 55 | ### Proximity slowdown reflex 56 | 57 | The `reflexes.REFLEX_PROXIMITY_SLOWDOWN` ROS 2 parameter enables (`true`) or disables (`false`) the proximity slowdown reflex. 58 | It will trigger when the robot's IR sensors detect an obstacle in close proximity. 59 | The reflex will reduce the robot movement speed in order to better prepare for an eventual impact. 60 | 61 | This reflex is enabled by default. 62 | 63 | ### Stuck reflex 64 | 65 | The `reflexes.REFLEX_STUCK` ROS 2 parameter enables (`true`) or disables (`false`) the stuck reflex. 66 | It will trigger when the robot is stuck, i.e. it's pushing against an obstacle and its wheels are losing traction. 67 | The reflex will try aggressive maneuvers to allow the robot to recover from this situation 68 | 69 | This reflex is enabled by default. 70 | 71 | ### Virtual Wall reflex 72 | 73 | The `reflexes.REFLEX_VIRTUAL_WALL` ROS 2 parameter enables (`true`) or disables (`false`) the virtual wall reflex. 74 | It will trigger as soon as the robot detects an iRobot virtual wall it will move the robot away from it. 75 | The reflex will continue until the robot has cleared the virtual wall. 76 | 77 | This reflex is enabled by default. 78 | 79 | ### Wheel drop reflex 80 | 81 | The `reflexes.REFLEX_WHEEL_DROP` ROS 2 parameter enables (`true`) or disables (`false`) the wheel drop reflex. 82 | It will trigger as soon as the robot detects that one of its wheels is fully extended (dropped). 83 | The robot will drive the other wheel in order to return to a flat surface. 84 | 85 | This reflex is enabled by default. 86 | 87 | [^1]: ROS 2 is governed by Open Robotics 88 | [^2]: All trademarks mentioned are the property of their respective owners. 89 | -------------------------------------------------------------------------------- /docs/api/ui.md: -------------------------------------------------------------------------------- 1 | # User Interface 2 | 3 | The Create® 3 robot can interact with the user through its buttons and its light ring. 4 | 5 | ### Responding to button presses 6 | 7 | Whenever a button on the Create® 3 robot is pressed, its information will be published on the `interface_buttons` topic. 8 | By subscribing to this topic, you will be able to detect when to start your custom policies. 9 | 10 | ### Changing the light ring colors 11 | 12 | !!! attention 13 | **The Create® 3 robot uses its light ring to notify the user about critical events. If you override its color, you may not notice these events.** 14 | 15 | You can change the color of the light ring on your Create® 3 robot by publishing a corresponding message on the `cmd_lightring` topic. 16 | 17 | ```bash 18 | ros2 topic pub /cmd_lightring irobot_create_msgs/msg/LightringLeds "{override_system: true, leds: [{red: 255, green: 0, blue: 0}, {red: 0, green: 255, blue: 0}, {red: 0, green: 0, blue: 255}, {red: 255, green: 255, blue: 0}, {red: 255, green: 0, blue: 255}, {red: 0, green: 255, blue: 255}]}" 19 | ``` 20 | 21 | The easiest way to return lights to the default color (and relinquish their control to the robot) is to publish an empty message on the topic. 22 | 23 | ```bash 24 | ros2 topic pub /cmd_lightring irobot_create_msgs/msg/LightringLeds "{}" 25 | ``` 26 | 27 | Additionally, an action server named `led_animation` can take Blink or Spin animation goals to execute a pattern for a fixed duration. 28 | See [LedAnimation.action](https://github.com/iRobotEducation/irobot_create_msgs/blob/main/action/LedAnimation.action). 29 | 30 | 31 | For example you can run the following: 32 | 33 | ```bash 34 | ros2 action send_goal led_animation irobot_create_msgs/action/LedAnimation "{animation_type: 1, lightring: {leds: [{red: 255, green: 0, blue: 0}, {red: 0, green: 255, blue: 0}, {red: 0, green: 0, blue: 255}, {red: 255, green: 255, blue: 0}, {red: 255, green: 0, blue: 255}, {red: 0, green: 255, blue: 255}], override_system: true},max_runtime: {sec: 500, nanosec: 0}}" 35 | ``` 36 | 37 | ### Playing sound through the speakers 38 | 39 | You can play sound out of your Create® 3 robot speakers by publishing a corresponding message on the `cmd_audio` topic. 40 | 41 | 42 | !!!important 43 | A `best-effort` publisher will not be able to communicate with this subscription as of G.4.4 / H.1.1 as its QOS has been changed to `reliable` from `best-effort`. See [this compatibilty matrix](https://docs.ros.org/en/rolling/Concepts/About-Quality-of-Service-Settings.html#qos-compatibilities) for details. 44 | 45 | ```bash 46 | ros2 topic pub --once /cmd_audio irobot_create_msgs/msg/AudioNoteVector "{append: false, notes: [{frequency: 100, max_runtime: {sec: 1,nanosec: 0}}, {frequency: 50, max_runtime: {sec: 1,nanosec: 0}}]}" 47 | ``` 48 | 49 | This example command will play 2 notes at the given frequencies back to back with the given 1 second length for each note. 50 | 51 | `append` is used to dictate the policy if an audio sequence is already playing when a new value comes in on the topic. 52 | 53 | * `append: true` tells the sound manager to play this audio sequence after the current sequence finishes playing. 54 | * `append: false` tell the sound manager to override any currently playing sequence with the new sequence. 55 | 56 | Publishing an empty `notes` vector with `append: false` will stop any currently playing audio sequences. 57 | 58 | Additionally, an action server named `audio_note_sequence` can take an AudioNoteVector and a number of iterations to play it. 59 | See [AudioNoteSequence.action](https://github.com/iRobotEducation/irobot_create_msgs/blob/main/action/AudioNoteSequence.action). 60 | 61 | The action goal will succeed when the sequence has finished playing so you can coordinate audio runtime with other actions. 62 | If you set iterations to -1, it will play until it is canceled. 63 | 64 | For example you can run the following: 65 | 66 | ```bash 67 | ros2 action send_goal /audio_note_sequence irobot_create_msgs/action/AudioNoteSequence "{iterations: 3,note_sequence:{append: false, notes: [{frequency: 100, max_runtime: {sec: 1,nanosec: 0}}, {frequency: 50, max_runtime: {sec: 1,nanosec: 0}}]}}" 68 | ``` 69 | 70 | [^1]: ROS 2 is governed by Open Robotics 71 | [^2]: All trademarks mentioned are the property of their respective owners. 72 | -------------------------------------------------------------------------------- /docs/api/wall-follow.md: -------------------------------------------------------------------------------- 1 | # Create® 3 Wall Follow 2 | 3 | The Create® 3 robot exposes a ROS 2[^1] action server to invoke a wall-following behavior. 4 | 5 | You can command the robot to follow along an obstacle using the following ROS 2 action. 6 | 7 | ```sh 8 | ros2 action send_goal /wall_follow irobot_create_msgs/action/WallFollow "{follow_side: 1, max_runtime: {sec: 1, nanosec: 0}}" 9 | ``` 10 | 11 | When this behavior is requested, the robot will try to engage with nearby obstacles and, after a successful engagement, it will start following the obstacle along the specified side until the maximum runtime is reached. 12 | 13 | The `follow_side` can be specified as left (1) or right (-1) see the [action interface](https://github.com/iRobotEducation/irobot_create_msgs/blob/main/action/WallFollow.action) for the implementation. 14 | 15 | The robot will use a spiraling motion to try to engage with the obstacles. 16 | The spiral will be clockwise if `follow_side` is left (1) or counter-clockwise if `follow_side` is right (-1). 17 | 18 | !!! attention 19 | **If your Create® 3 robot has additional equipment mounted on top, you need to ensure that the obstacles being followed have enough vertical clearance. ** 20 | 21 | This behavior won't take into account the potentially increased height of the robot, so it may get stuck and damage your equipment or furniture. 22 | If the obstacles you are trying to follow have gaps from the ground or low-hanging parts, it's required that the vertical clearance is either lower than the robot's base height (roughly 12 cm), such that the robot won't try to get underneath, or higher than the height of the robot, so that it will fully fit. 23 | 24 | [^1]: ROS 2 is governed by Open Robotics 25 | [^2]: All trademarks mentioned are the property of their respective owners. 26 | -------------------------------------------------------------------------------- /docs/assets/irobot_symbol_green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/assets/irobot_symbol_green.png -------------------------------------------------------------------------------- /docs/assets/irobot_symbol_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/assets/irobot_symbol_white.png -------------------------------------------------------------------------------- /docs/examples/create3_examples.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Examples 2 | 3 | The [create3_examples](https://github.com/iRobotEducation/create3_examples) Github repository contains examples of C++ and Python applications that can be used to control a Create® 3 robot with ROS 2[^1] and develop your navigation application. 4 | 5 | [^1]: ROS 2 is governed by Open Robotics 6 | [^2]: All trademarks mentioned are the property of their respective owners. 7 | -------------------------------------------------------------------------------- /docs/examples/data/create3_lidar_rviz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/examples/data/create3_lidar_rviz.png -------------------------------------------------------------------------------- /docs/examples/data/create3_lidar_top.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/examples/data/create3_lidar_top.jpg -------------------------------------------------------------------------------- /docs/examples/driving-cli.md: -------------------------------------------------------------------------------- 1 | [This page has been moved.](../examples/actuators-cli.md#driving) -------------------------------------------------------------------------------- /docs/examples/sensors-cli.md: -------------------------------------------------------------------------------- 1 | # Sensors via ROS 2 Command Line 2 | 3 | This page describes how to read the the Create® 3 robot's sensors using the ROS 2[^1] command line tools. 4 | 5 | ## Overview 6 | Reading the robot's sensors is as simple as 7 | ```sh 8 | ros2 topic echo {topic} 9 | ``` 10 | where {topic} is the topic of interest. If you're not sure what topics are available, you can type 11 | ```sh 12 | ros2 topic list --no-daemon --spin-time 10 13 | ``` 14 | The --no-daemon and --spin-time arguments are not strictly necessary, but they may help with initial discovery. 15 | 16 | A detailed API description for each sensor can be found [here](../../api/ros2/). 17 | 18 | ## A non-exhaustive set of examples 19 | These are relatively straighforward, but for fun: 20 | 21 | ### Battery State 22 | ```sh 23 | ros2 topic echo /battery_state 24 | ``` 25 | 26 | ### Buttons 27 | ```sh 28 | ros2 topic echo /interface_buttons 29 | ``` 30 | 31 | ### Docking State 32 | 33 | ##### Galactic 34 | ```sh 35 | ros2 topic echo /dock 36 | ``` 37 | ##### Humble 38 | ```sh 39 | ros2 topic echo /dock_status 40 | ``` 41 | 42 | 43 | ### IR Docking Sensor 44 | ```sh 45 | ros2 topic echo /ir_opcode 46 | ``` 47 | 48 | ### IR Proximity Sensors 49 | ```sh 50 | ros2 topic echo /ir_intensity 51 | ``` 52 | 53 | ### Wheel Odometry 54 | ```sh 55 | ros2 topic echo /odom 56 | ``` 57 | 58 | ### Wheel Status (includes PWM and current) 59 | ```sh 60 | ros2 topic echo /wheel_status 61 | ``` 62 | 63 | [^1]: ROS 2 is governed by Open Robotics 64 | [^2]: All trademarks mentioned are the property of their respective owners. 65 | -------------------------------------------------------------------------------- /docs/faq/data/Create-3_Product-Information-Guide.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/faq/data/Create-3_Product-Information-Guide.pdf -------------------------------------------------------------------------------- /docs/faq/data/buttons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/faq/data/buttons.png -------------------------------------------------------------------------------- /docs/faq/data/faceplate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/faq/data/faceplate.png -------------------------------------------------------------------------------- /docs/faq/data/power-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/faq/data/power-1.png -------------------------------------------------------------------------------- /docs/faq/data/power-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/faq/data/power-2.png -------------------------------------------------------------------------------- /docs/faq/data/power-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/faq/data/power-3.png -------------------------------------------------------------------------------- /docs/faq/data/setup-1-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/faq/data/setup-1-1.png -------------------------------------------------------------------------------- /docs/faq/data/setup-1-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/faq/data/setup-1-2.png -------------------------------------------------------------------------------- /docs/faq/data/setup-2-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/faq/data/setup-2-1.png -------------------------------------------------------------------------------- /docs/faq/data/setup-2-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/faq/data/setup-2-2.png -------------------------------------------------------------------------------- /docs/faq/data/setup-2-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/faq/data/setup-2-3.png -------------------------------------------------------------------------------- /docs/faq/data/setup-2-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/faq/data/setup-2-4.png -------------------------------------------------------------------------------- /docs/faq/data/setup-2-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/faq/data/setup-2-5.png -------------------------------------------------------------------------------- /docs/faq/data/setup-3-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/faq/data/setup-3-1.png -------------------------------------------------------------------------------- /docs/faq/data/setup-3-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/faq/data/setup-3-2.png -------------------------------------------------------------------------------- /docs/faq/data/setup-3-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/faq/data/setup-3-3.png -------------------------------------------------------------------------------- /docs/faq/data/setup-3-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/faq/data/setup-3-4.png -------------------------------------------------------------------------------- /docs/faq/data/setup-3-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/faq/data/setup-3-5.png -------------------------------------------------------------------------------- /docs/hw/adapter.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Adapter Board 2 | ## Overview 3 | The iRobot® Create® 3 robot[^1] has two electrical connections exposed via the Adapter Board. 4 | The connections are accessible within the robot once the cargo bay is removed. 5 | The Adapter Board is also visible through the top cover of the robot, where its indicators are visible, and the USB/BLE toggle can be switched. 6 | 7 | ![Adapter Board](data/adapter_out.jpg) 8 | 9 | ## Power Connections 10 | ### Unregulated Battery Port 11 | The **unregulated battery port** is a JST XH-style connector, with pin 1 as the positive terminal of the battery, and pin 2 as the negative terminal. 12 | These terminals are labeled on the bottom side of the board and are visible with the robot on its back and the cargo bay removed. 13 | The board is capable of supplying a **maximum of 2 A** of current at the current battery voltage (14.4 V nominal, 12 V min, 16.8 V max), enforced by a PTC resettable fuse in the robot. 14 | This port is always on when the battery is powered on. 15 | !!! attention "Notice" 16 | Do not back-feed power into the robot through this port, and do not attempt to use the robot without its battery installed. 17 | 18 | ### USB-C® Connector 19 | The **USB-C® connector**[^2] provides a USB 2.0 Host connection into the robot with 5.13 V at 3.0 A provided to power downstream connections. 20 | The power is disabled on this port unless a proper USB-C® downstream device is connected. 21 | The 5 V source powering this port is not guaranteed to stay enabled when the battery reports 0% state of charge (below 12.0 V). 22 | The USB data connection is made only when the USB/BLE toggle switch plunger is slid toward the USB icon. 23 | 24 | ### Total Power Output 25 | The USB-C® port draws its power from the unregulated battery connection which, as mentioned above, is limited to 2 A at the battery voltage. 26 | This means there is only around 28.8 W total power shared between both power outputs (assuming the battery is at 14.4 V). 27 | If power is drawn through the USB-C® connector, then less power is available through the unregulated battery port and vice versa. 28 | !!! example 29 | As an example, if a full 5 V @ 3 A are drawn from the USB-C® port, the battery is currently measuring 14.4 V, and the switching regulator is 90% efficient, then a maximum of 0.84 A[^3] can be drawn from the unregulated battery port before the resettable fuse will trip (and depending on ambient temperature, even more margin may be necessary). 30 | 31 | ## USB/BLE Toggle 32 | The **USB/BLE toggle** routes the robot's single USB Host connection either to the USB-C® port (useful for connecting to single-board computers with OTG or device ports) or to the on-board Bluetooth® Low Energy[^4] module. 33 | This module can be used to interact with the [iRobot Education Python Web Playground](https://python.irobot.com/) or any other application supporting the iRobot Education Bluetooth® protocol. 34 | 35 | ## Indicators 36 | ### Orange Indicator 37 | The **orange indicator (D3)** is illuminated when the USB-C® port is powering a downstream device, whether or not a data connection is being made. 38 | 39 | ### Yellow Indicator 40 | The **yellow indicator (D2)** is illuminated when the robot's internal 5 V bus is enabled. There is a hardware error if this LED is extinguished while the green indicator is illuminated. 41 | 42 | ### Green Indicator 43 | The **green indicator (D300)** is illuminated when the robot's battery is switched on. 44 | 45 | ### Blue Indicator 46 | The **blue indicator (D6)** is illuminated when the BLE radio is turned on. It flashes when it is connected to a host. 47 | 48 | [^1]: iRobot® and Create® are registered trademarks of iRobot Corporation. 49 | [^2]: USB-C® is a trademark of USB Implementers Forum. 50 | [^3]: Maximum current computed as: 2 A - (5 V * 3 A / 0.90 / 14.4 V) = 0.84 A 51 | [^4]: The Bluetooth® word mark and logos are registered trademarks owned by Bluetooth SIG, Inc. and any use of such marks by iRobot is under license. 52 | [^5]: All other trademarks mentioned are the property of their respective owners. 53 | -------------------------------------------------------------------------------- /docs/hw/data/3d_model.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/3d_model.jpg -------------------------------------------------------------------------------- /docs/hw/data/adapter_in.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/adapter_in.jpg -------------------------------------------------------------------------------- /docs/hw/data/adapter_out.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/adapter_out.jpg -------------------------------------------------------------------------------- /docs/hw/data/bottom.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/bottom.jpg -------------------------------------------------------------------------------- /docs/hw/data/buttons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/buttons.png -------------------------------------------------------------------------------- /docs/hw/data/cargo_bay_caster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/cargo_bay_caster.png -------------------------------------------------------------------------------- /docs/hw/data/caster_attachment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/caster_attachment.png -------------------------------------------------------------------------------- /docs/hw/data/front_iso.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/front_iso.jpg -------------------------------------------------------------------------------- /docs/hw/data/hookup_jetson_xavier_nx.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/hookup_jetson_xavier_nx.jpg -------------------------------------------------------------------------------- /docs/hw/data/hookup_jetson_xavier_nx_on_c3_with_PC.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/hookup_jetson_xavier_nx_on_c3_with_PC.jpg -------------------------------------------------------------------------------- /docs/hw/data/hookup_nano2gb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/hookup_nano2gb.jpg -------------------------------------------------------------------------------- /docs/hw/data/hookup_navqplus_adapter_mount_bay.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/hookup_navqplus_adapter_mount_bay.jpg -------------------------------------------------------------------------------- /docs/hw/data/hookup_navqplus_case_faceplate.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/hookup_navqplus_case_faceplate.jpg -------------------------------------------------------------------------------- /docs/hw/data/hookup_pi3b.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/hookup_pi3b.jpg -------------------------------------------------------------------------------- /docs/hw/data/hookup_pi4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/hookup_pi4.jpg -------------------------------------------------------------------------------- /docs/hw/data/hookup_piZ.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/hookup_piZ.jpg -------------------------------------------------------------------------------- /docs/hw/data/lightring/blue_spinning.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/lightring/blue_spinning.gif -------------------------------------------------------------------------------- /docs/hw/data/lightring/blue_spinning.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/lightring/blue_spinning.jpg -------------------------------------------------------------------------------- /docs/hw/data/lightring/boot.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/lightring/boot.gif -------------------------------------------------------------------------------- /docs/hw/data/lightring/charged_spinning.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/lightring/charged_spinning.gif -------------------------------------------------------------------------------- /docs/hw/data/lightring/cyan_solid.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/lightring/cyan_solid.jpg -------------------------------------------------------------------------------- /docs/hw/data/lightring/cyan_spinning.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/lightring/cyan_spinning.gif -------------------------------------------------------------------------------- /docs/hw/data/lightring/green_solid.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/lightring/green_solid.jpg -------------------------------------------------------------------------------- /docs/hw/data/lightring/orange_half_solid.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/lightring/orange_half_solid.jpg -------------------------------------------------------------------------------- /docs/hw/data/lightring/orange_pulsing.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/lightring/orange_pulsing.gif -------------------------------------------------------------------------------- /docs/hw/data/lightring/orange_solid.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/lightring/orange_solid.jpg -------------------------------------------------------------------------------- /docs/hw/data/lightring/purple_spinning.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/lightring/purple_spinning.gif -------------------------------------------------------------------------------- /docs/hw/data/lightring/red_pulsing.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/lightring/red_pulsing.gif -------------------------------------------------------------------------------- /docs/hw/data/lightring/red_solid.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/lightring/red_solid.jpg -------------------------------------------------------------------------------- /docs/hw/data/lightring/red_spinning.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/lightring/red_spinning.gif -------------------------------------------------------------------------------- /docs/hw/data/lightring/white_solid.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/lightring/white_solid.jpg -------------------------------------------------------------------------------- /docs/hw/data/lightring/yellow-blue_solid.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/lightring/yellow-blue_solid.jpg -------------------------------------------------------------------------------- /docs/hw/data/lightring/yellow-green_solid.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/lightring/yellow-green_solid.jpg -------------------------------------------------------------------------------- /docs/hw/data/lightring/yellow-red_solid.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/lightring/yellow-red_solid.jpg -------------------------------------------------------------------------------- /docs/hw/data/lightring/yellow-white_solid.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/lightring/yellow-white_solid.jpg -------------------------------------------------------------------------------- /docs/hw/data/lightring/yellow_half_solid.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/lightring/yellow_half_solid.jpg -------------------------------------------------------------------------------- /docs/hw/data/lightring/yellow_solid.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/lightring/yellow_solid.jpg -------------------------------------------------------------------------------- /docs/hw/data/models/Caster/Cargo_Bay_with_Caster/C3-Cargo-Bay-With-Caster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/models/Caster/Cargo_Bay_with_Caster/C3-Cargo-Bay-With-Caster.png -------------------------------------------------------------------------------- /docs/hw/data/models/Caster/Cargo_Bay_with_Caster/C3-Cargo-Bay-With-Caster.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/models/Caster/Cargo_Bay_with_Caster/C3-Cargo-Bay-With-Caster.stl -------------------------------------------------------------------------------- /docs/hw/data/models/Caster/Caster_Lock/C3-Caster-Lock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/models/Caster/Caster_Lock/C3-Caster-Lock.png -------------------------------------------------------------------------------- /docs/hw/data/models/Caster/Caster_Lock/C3-Caster-Lock.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/models/Caster/Caster_Lock/C3-Caster-Lock.stl -------------------------------------------------------------------------------- /docs/hw/data/models/Caster/Rear_Caster_Attachment/C3-Rear-Caster-Attachment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/models/Caster/Rear_Caster_Attachment/C3-Rear-Caster-Attachment.png -------------------------------------------------------------------------------- /docs/hw/data/models/Caster/Rear_Caster_Attachment/C3-Rear-Caster-Attachment.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/models/Caster/Rear_Caster_Attachment/C3-Rear-Caster-Attachment.stl -------------------------------------------------------------------------------- /docs/hw/data/models/Caster/Rear_Caster_Attachment_Latch/C3-Rear-Caster-Attachment-Latch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/models/Caster/Rear_Caster_Attachment_Latch/C3-Rear-Caster-Attachment-Latch.png -------------------------------------------------------------------------------- /docs/hw/data/models/Caster/Rear_Caster_Attachment_Latch/C3-Rear-Caster-Attachment-Latch.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/models/Caster/Rear_Caster_Attachment_Latch/C3-Rear-Caster-Attachment-Latch.stl -------------------------------------------------------------------------------- /docs/hw/data/models/Compute/NVIDIA_Jetson/Mount_Bracket/C3-JetsonXavierNX-Mount.3mf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/models/Compute/NVIDIA_Jetson/Mount_Bracket/C3-JetsonXavierNX-Mount.3mf -------------------------------------------------------------------------------- /docs/hw/data/models/Compute/NVIDIA_Jetson/Mount_Bracket/C3-JetsonXavierNX-Mount.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/models/Compute/NVIDIA_Jetson/Mount_Bracket/C3-JetsonXavierNX-Mount.png -------------------------------------------------------------------------------- /docs/hw/data/models/Compute/NVIDIA_Jetson/Mount_Bracket/C3-JetsonXavierNX-Mount.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/models/Compute/NVIDIA_Jetson/Mount_Bracket/C3-JetsonXavierNX-Mount.stl -------------------------------------------------------------------------------- /docs/hw/data/models/Compute/NVIDIA_Jetson/Mount_Bracket/C3-JetsonXavierNX-Mount_slice-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/models/Compute/NVIDIA_Jetson/Mount_Bracket/C3-JetsonXavierNX-Mount_slice-example.png -------------------------------------------------------------------------------- /docs/hw/data/models/Compute/NavQPlus_by_NXP/Adapter_Plate/C3-RudisLabs-NavQPlus-Adapter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/models/Compute/NavQPlus_by_NXP/Adapter_Plate/C3-RudisLabs-NavQPlus-Adapter.png -------------------------------------------------------------------------------- /docs/hw/data/models/Compute/NavQPlus_by_NXP/Adapter_Plate/C3-RudisLabs-NavQPlus-Adapter.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/models/Compute/NavQPlus_by_NXP/Adapter_Plate/C3-RudisLabs-NavQPlus-Adapter.stl -------------------------------------------------------------------------------- /docs/hw/data/models/Compute/NavQPlus_by_NXP/Case_Base/C3-NavQPlus-Base.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/models/Compute/NavQPlus_by_NXP/Case_Base/C3-NavQPlus-Base.png -------------------------------------------------------------------------------- /docs/hw/data/models/Compute/NavQPlus_by_NXP/Case_Base/C3-NavQPlus-Base.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/models/Compute/NavQPlus_by_NXP/Case_Base/C3-NavQPlus-Base.stl -------------------------------------------------------------------------------- /docs/hw/data/models/Compute/NavQPlus_by_NXP/Case_Top/C3-NavQPlus-Top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/models/Compute/NavQPlus_by_NXP/Case_Top/C3-NavQPlus-Top.png -------------------------------------------------------------------------------- /docs/hw/data/models/Compute/NavQPlus_by_NXP/Case_Top/C3-NavQPlus-Top.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/models/Compute/NavQPlus_by_NXP/Case_Top/C3-NavQPlus-Top.stl -------------------------------------------------------------------------------- /docs/hw/data/models/Compute/Raspberry_Pi/Large_Mount/C3-RPi-Mount-20211022.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/models/Compute/Raspberry_Pi/Large_Mount/C3-RPi-Mount-20211022.png -------------------------------------------------------------------------------- /docs/hw/data/models/Compute/Raspberry_Pi/Large_Mount/C3-RPi-Mount-20211022.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/models/Compute/Raspberry_Pi/Large_Mount/C3-RPi-Mount-20211022.stl -------------------------------------------------------------------------------- /docs/hw/data/models/Compute/Raspberry_Pi/Small_Mount/C3-RPi-Mount-Small-20211022.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/models/Compute/Raspberry_Pi/Small_Mount/C3-RPi-Mount-Small-20211022.png -------------------------------------------------------------------------------- /docs/hw/data/models/Compute/Raspberry_Pi/Small_Mount/C3-RPi-Mount-Small-20211022.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/models/Compute/Raspberry_Pi/Small_Mount/C3-RPi-Mount-Small-20211022.stl -------------------------------------------------------------------------------- /docs/hw/data/models/Generic/Bolt_Post_Mount/C3-RudisLabs-Threaded-1_4-20UNC-post-mount.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/models/Generic/Bolt_Post_Mount/C3-RudisLabs-Threaded-1_4-20UNC-post-mount.png -------------------------------------------------------------------------------- /docs/hw/data/models/Generic/Bolt_Post_Mount/C3-RudisLabs-Threaded-1_4-20UNC-post-mount.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/models/Generic/Bolt_Post_Mount/C3-RudisLabs-Threaded-1_4-20UNC-post-mount.stl -------------------------------------------------------------------------------- /docs/hw/data/models/Generic/Bolt_Post_Mount/details.txt: -------------------------------------------------------------------------------- 1 | Mount uses a 1/4-20 UNC bolt and can be used with any 1/4-20 threaded camera or sensor. -------------------------------------------------------------------------------- /docs/hw/data/models/Generic/Stud_Mount/C3-Stud-Mount.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/models/Generic/Stud_Mount/C3-Stud-Mount.png -------------------------------------------------------------------------------- /docs/hw/data/models/Generic/Stud_Mount/C3-Stud-Mount.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/models/Generic/Stud_Mount/C3-Stud-Mount.stl -------------------------------------------------------------------------------- /docs/hw/data/models/Sensors/IntelRealSense/D435_Mount/C3-RealSense-D435-Mount.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/models/Sensors/IntelRealSense/D435_Mount/C3-RealSense-D435-Mount.png -------------------------------------------------------------------------------- /docs/hw/data/models/Sensors/IntelRealSense/D435_Mount/C3-RealSense-D435-Mount.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/models/Sensors/IntelRealSense/D435_Mount/C3-RealSense-D435-Mount.stl -------------------------------------------------------------------------------- /docs/hw/data/models/Sensors/Luxonis/Oak-D_Lite_Mount/C3-OAK-D-Lite-Mount.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/models/Sensors/Luxonis/Oak-D_Lite_Mount/C3-OAK-D-Lite-Mount.png -------------------------------------------------------------------------------- /docs/hw/data/models/Sensors/Luxonis/Oak-D_Lite_Mount/C3-OAK-D-Lite-Mount.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/models/Sensors/Luxonis/Oak-D_Lite_Mount/C3-OAK-D-Lite-Mount.stl -------------------------------------------------------------------------------- /docs/hw/data/models/Sensors/Luxonis/Oak-D_Mount/C3-OAK-D-Mount.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/models/Sensors/Luxonis/Oak-D_Mount/C3-OAK-D-Mount.png -------------------------------------------------------------------------------- /docs/hw/data/models/Sensors/Luxonis/Oak-D_Mount/C3-OAK-D-Mount.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/models/Sensors/Luxonis/Oak-D_Mount/C3-OAK-D-Mount.stl -------------------------------------------------------------------------------- /docs/hw/data/models/Sensors/SLAMTEC/RPLIDAR_A1_Minimal_Mount/C3-RudisLabs-Minimal-RPLIDAR-A1M8-Adapter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/models/Sensors/SLAMTEC/RPLIDAR_A1_Minimal_Mount/C3-RudisLabs-Minimal-RPLIDAR-A1M8-Adapter.png -------------------------------------------------------------------------------- /docs/hw/data/models/Sensors/SLAMTEC/RPLIDAR_A1_Minimal_Mount/C3-RudisLabs-Minimal-RPLIDAR-A1M8-Adapter.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/models/Sensors/SLAMTEC/RPLIDAR_A1_Minimal_Mount/C3-RudisLabs-Minimal-RPLIDAR-A1M8-Adapter.stl -------------------------------------------------------------------------------- /docs/hw/data/models/Sensors/SLAMTEC/RPLIDAR_A1_Mount/C3-RPLidar-A1-Mount.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/models/Sensors/SLAMTEC/RPLIDAR_A1_Mount/C3-RPLidar-A1-Mount.png -------------------------------------------------------------------------------- /docs/hw/data/models/Sensors/SLAMTEC/RPLIDAR_A1_Mount/C3-RPLidar-A1-Mount.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/models/Sensors/SLAMTEC/RPLIDAR_A1_Mount/C3-RPLidar-A1-Mount.stl -------------------------------------------------------------------------------- /docs/hw/data/models/Sensors/SLAMTEC/RPLIDAR_A1_USB_Mount/C3-RPLidar-A1-USB-Mount.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/models/Sensors/SLAMTEC/RPLIDAR_A1_USB_Mount/C3-RPLidar-A1-USB-Mount.png -------------------------------------------------------------------------------- /docs/hw/data/models/Sensors/SLAMTEC/RPLIDAR_A1_USB_Mount/C3-RPLidar-A1-USB-Mount.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/models/Sensors/SLAMTEC/RPLIDAR_A1_USB_Mount/C3-RPLidar-A1-USB-Mount.stl -------------------------------------------------------------------------------- /docs/hw/data/navqplus_case_sensors.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/navqplus_case_sensors.jpg -------------------------------------------------------------------------------- /docs/hw/data/rear_iso.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/hw/data/rear_iso.jpg -------------------------------------------------------------------------------- /docs/hw/electrical.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Electrical System 2 | 3 | ## Robot Battery 4 | The iRobot® Create® 3 robot uses a standard [Lithium Ion Battery for Roomba® e & i series](https://store.irobot.com/default/parts-and-accessories/roomba-batteries/) robots. 5 | The battery shipping with the robot is a 26 Wh, 4S Lithium Ion smart battery pack, with a nominal voltage of 14.4 V (12 V min, 16.8 V max). 6 | It will report a 0% state of charge when the total voltage of the pack reaches 12.0 V. 7 | It will self-protect and disconnect from any load at 10.8 V or lower. 8 | 9 | !!! warning "Notice" 10 | If the robot is approaching a 0% state of charge and the user application does not believe it will make it to the dock, the robot should be powered down using the [`/robot_power` service](../../examples/actuators-cli/#robot-power). 11 | It is recommended to return to the dock at or below about 10% state of charge in order to prevent the robot from being stranded without power. 12 | 13 | 14 | !!! info 15 | As of software version G.5.4 (Galactic) and H.2.4 (Humble), the Create 3 robot will interally call the `/robot_power` service once the battery's state of charge dips below 2% in order to reduce the risk of tripping the battery's self-protection limits. 16 | 17 | If the battery self-protects, its internal management system may refuse to charge until it is reset. 18 | Resetting the battery is accomplished by removing the battery from the robot for at least fifteen minutes, at which point it should be reinstalled in the robot and the robot placed on the charger. 19 | 20 | 21 | !!! info 22 | When not overridden, the robot's light ring will flash red to indicate low battery state, at about 10% state of charge. It is recommended not to run the robot for extended periods of time in this state. 23 | 24 | Charge the battery by placing Create® 3 on the included iRobot® Home Base™ Charging Station. 25 | The light ring will show the state of charge and animate while the battery is charging. 26 | The battery will self-protect and disable the ability to charge if it charges continuously for four hours without reaching 100% state of charge. 27 | 28 | !!! danger "Notice" 29 | Always remove the Create® 3 robot’s battery prior to dismantling, adjusting, altering, or affecting the robot’s chassis at the risk of damaging the battery, robot, or both. 30 | Do not attempt to use the robot without its battery installed. 31 | 32 | !!! tip 33 | Keep the robot on the Home Base™ charging station (or power down the robot by holding down the power button for 10 seconds) when not in use to prevent the battery from discharging. 34 | 35 | ## Buttons and Light Ring Overview 36 | The iRobot® Create® 3 has three buttons on its top face. 37 | The center button is marked with a power icon, while the flanking buttons are marked with one or two dots. 38 | The center button also contains a ring of six RGB LEDs. 39 | [Detailed information about the use of these buttons and LEDs can be found here.](../hw/face.md) 40 | 41 | ## Adapter Board Overview 42 | The iRobot® Create® 3 robot exposes connections and some status indicators via the Adapter Board. 43 | The Adapter Board also adds a Bluetooth® Low Energy[^1] interface to the core robot. 44 | [Detailed information on the Adapter Board can be found here.](../hw/adapter.md) 45 | 46 | [^1]: The Bluetooth® word mark and logos are registered trademarks owned by Bluetooth SIG, Inc. and any use of such marks by iRobot is under license. 47 | [^2]: All other trademarks mentioned are the property of their respective owners. 48 | -------------------------------------------------------------------------------- /docs/hw/hookup.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Hardware Hookup Overview 2 | The Create® 3 robot is based on the Roomba®, a robot vacuum cleaner. 3 | Its sensors, actuators, and compact design are capable of navigating and mapping a the whole floor of a home or office space. 4 | The robot also ships with an iRobot® Home Base™ Charging Station. 5 | 6 | It is possible to directly connect various single board computers to the Create 3 robot in order to provide on-board intelligence. Here are a few examples. 7 | 8 | ## Currently documented hookup examples: 9 | 10 | ### NavQ+ by NXP® 11 | * [NavQ+ by NXP Hookup Guide](../navqplus_hookup/) 12 | 13 | ### NVIDIA® Jetson™ 14 | * [NVIDIA® Jetson™ Hookup Guide](../jetson_hookup/) [^1] 15 | 16 | ### Raspberry Pi® 17 | * [Raspberry Pi® Hookup Guide](../rpi_hookup/) [^2] 18 | 19 | 20 | 21 | [^1]: NVIDIA and Jetson are trademarks or registered trademarks of NVIDIA Corporation. 22 | [^2]: Raspberry Pi® is a trademark of Raspberry Pi Trading. 23 | [^3]: All other trademarks mentioned are the property of their respective owners. -------------------------------------------------------------------------------- /docs/hw/navqplus_hookup.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Hookup Guide for NavQPlus by NXP® 2 | 3 | !!! important 4 | **This is community-submitted content. Please feel welcome to submit PRs for additions or corrections.** 5 | 6 | The iRobot® Create® 3 robot has a USB-C®[^1] connector implementing a USB 2.0 host capable of 5 V @ 3 A continuous, which can be used to power and communicate with various downstream devices. 7 | 8 | NavQPlus is an open source reference design provided by NXP® and manufacturable by anyone. 9 | Since NavQPlus has USB-C® ports capable of being configured as a USB Ethernet Gadget, a cable with a USB-C® connector on both ends is all that is required. 10 | 11 | !!! note 12 | - Unless set otherwise, the default USB-C® port for use as an Ethernet Gadget device is configured to only the centermost USB-C® port (labeled USB 2) as shown in the example pictures. 13 | 14 | The NavQPlus is pictured in the cargo bay using the 3D-printed [adapter](../print_compute/#adapter-plate) plate and on top of the faceplate using the 3D-printed [case](../print_compute/#navqplus-by-nxp). 15 | ![Hookup diagram for NavQPlus with adapter mount in cargo bay](data/hookup_navqplus_adapter_mount_bay.jpg "NavQPlus in Cargo Bay") 16 | ![Hookup diagram for NavQPlus with case on faceplate](data/hookup_navqplus_case_faceplate.jpg "NavQPlus on Faceplate") 17 | 18 | 19 | ## Printable Case 20 | The [NavQPlus has a printable case](../print_compute/#navqplus-by-nxp) specifically designed for use with the Create® 3, allowing for it to be mounted to the faceplate or cargo bay. 21 | The [base](../print_compute/#case-base) of the case attaches to the NavQPlus using the existing four (4) M2.5-0.45 x 12mm System On Module (SOM) mounting screws. 22 | 23 | !!! note 24 | - The [top](../print_compute/#case-top) case is designed to be fastened together to the [base](../print_compute/#case-base) of the case with four (4) M3-0.5 x 10mm screws if not mounted to a Create® 3 plate or M3-0.5 x 12mm if mounted; cap head is suggested. 25 | - For best results, it is suggested to tap/thread the M3-0.5 on the [top](../print_compute/#case-top) case and M2.5-0.45 (SOM) holes on the [base](../print_compute/#case-base) case. 26 | 27 | 28 | Setup showing faceplate mounted case and printable [minimal lidar](../print_sensor_mounts/#rplidar-a1-minimal-mount) and camera [bolt post](../print_generic/#bolt-post-mount) mounts. 29 | ![Sensor faceplate hookup example.](data/navqplus_case_sensors.jpg "NavQPlus with sensors on Faceplate") 30 | 31 | 32 | ## Printable Adapter 33 | If a more minimal mount is desired instead of a case, an [adapter plate](../print_compute/#adapter-plate) using the existing SOM mounting screws for fastening is also provided. 34 | 35 | !!! note 36 | - This [adapter](../print_compute/#adapter-plate) is designed to be fastened to the Create® 3 plate with four (4) M3-0.5 x 6mm screws; cap head is suggested. 37 | - For best results, it is suggested to tap/thread the M3-0.5 (Create® 3 mounting) and M2.5-0.45 (SOM) holes. 38 | 39 | 40 | [^1]: USB-C® is a trademark of USB Implementers Forum. 41 | [^2]: All other trademarks mentioned are the property of their respective owners. 42 | -------------------------------------------------------------------------------- /docs/hw/overview.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Hardware Overview 2 | The Create® 3 is based on the Roomba®, a robot vacuum cleaner. 3 | Its sensors, actuators, and compact design are capable of navigating and mapping a the whole floor of a home or office space. 4 | The robot also ships with an iRobot® Home Base™ Charging Station. 5 | 6 | ![Create® 3 from its above-front-right, next to its dock.](data/front_iso.jpg "Robot Front")
7 | The front of the robot features a multizone bumper with seven pairs of IR proximity sensors, which can be used to detect obstacles. 8 | The top of the robot contains three buttons which can all be overloaded by a ROS 2 application (only the • and •• buttons can be overloaded using the iRobot Education Bluetooth®[^1] protocol.) 9 | The power button features a ring of six RGB LEDs for indication. 10 | 11 | ![Create® 3 from its above-rear-left, with the top cover and cargo bay removed.](data/rear_iso.jpg "Robot Rear")
12 | The faceplate and cargo bay of the robot feature a regular hole pattern for attaching payloads and can be removed without tools for quick prototyping. 13 | There are two cable passthroughs: one on the top edge of the cargo bay which is good for quick prototyping and one that penetrates the top cover and faceplate which is useful for keeping wires within the radius of the robot. 14 | More information on these features can be found on the [Mechanical](../mechanical/) page. 15 | 16 | Also visible with the faceplate removed is the adapter board, which is used to interface to external computers either through Bluetooth®[^1] or via USB-C®[^2]. 17 | More information on this board is available on the [Electrical](../electrical/) page. 18 | 19 | ![Create® 3 from a bottom view, with the cargo bay removed.](data/bottom.jpg "Robot Bottom")
20 | The bottom of the robot includes four cliff sensors to keep the robot on solid ground, a front caster (by default, the robot's center of gravity is forward of the center axis), charging contacts, two wheels with current sensors and encoders, and an optical odometry sensor. 21 | Not visible is the robot's IMU, which is used with the optical odometry sensor and wheel encoders to generate a fused odometry estimate. 22 | 23 | [^1]: The Bluetooth® word mark and logos are registered trademarks owned by Bluetooth SIG, Inc. and any use of such marks by iRobot is under license. 24 | [^2]: USB-C® is a trademark of USB Implementers Forum. 25 | [^3]: All other trademarks mentioned are the property of their respective owners. -------------------------------------------------------------------------------- /docs/hw/print_casters.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Printable Caster Parts 2 | {% set data = listfiles("docs/hw/data/models/Caster") %} 3 | !!! attention "Notice" 4 | This is an autogenerated page containing links to STLs suitable for attaching a rear caster to the iRobot® Create® 3 robot. For further information, see [here](../mechanical/#adding-a-rear-caster) 5 | {% for keys, file in data|dictsort %} 6 | ## {{ keys }} 7 | {% set full_path=file.path+'/'+file.name %} 8 | {% if check_generate(full_path|string()) %} 9 | ![{{ file.name|replace(file.extension, "") }}](../{{ file.path }}/{{ file.name|replace(file.extension, "png") }} "{{ file.name|replace(file.extension, "") }}") 10 | {% endif %} 11 | {% if file.size_raw_kb|float() < render_size_limit|float() %} 12 |
13 | 3D-Rendering 14 | 15 | 16 | 17 |
18 | {% endif %} 19 | 20 | 21 | 22 | * [{{ keys }} STL ({{ file.size_str }})](../{{ file.path }}/{{ file.name }}) 23 | 24 | {% endfor %} 25 | 26 | 27 | 28 | 29 | [^1]: All trademarks mentioned are the property of their respective owners. -------------------------------------------------------------------------------- /docs/hw/print_compute.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Printable Compute Board Parts 2 | {% set data = listfiles("docs/hw/data/models/Compute") %} 3 | !!! attention "Notice" 4 | This is an autogenerated page containing links to STLs suitable for mounting various compute boards to the iRobot® Create® 3 regular mounting pattern. 5 | {% for key0, val0 in data|dictsort %} 6 | ## {{ key0|replace("NVIDIA", "NVIDIA®")|replace("Jetson", "Jetson™")|replace("Pi", "Pi®")|replace("NXP", "NXP®") }} 7 | {% for keys, file in val0|dictsort %} 8 | ### {{ keys }} 9 | {% set full_path=file.path+'/'+file.name %} 10 | {% if check_generate(full_path|string()) %} 11 | ![{{ file.name|replace(file.extension, "") }}](../{{ file.path }}/{{ file.name|replace(file.extension, "png") }} "{{ file.name|replace(file.extension, "") }}") 12 | {% endif %} 13 | {% if file.size_raw_kb|float() < render_size_limit|float() %} 14 |
15 | 3D-Rendering 16 | 17 | 18 | 19 |
20 | {% endif %} 21 | 22 | 23 | 24 | * [{{ keys }} STL ({{ file.size_str }})](../{{ file.path }}/{{ file.name }}) 25 | 26 | {% endfor %} 27 | {% endfor %} 28 | 29 | 30 | 31 | 32 | 33 | [^1]: All trademarks mentioned are the property of their respective owners. -------------------------------------------------------------------------------- /docs/hw/print_generic.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Printable Generic Parts 2 | {% set data = listfiles("docs/hw/data/models/Generic") %} 3 | !!! attention "Notice" 4 | This is an autogenerated page containing links to STLs suitable for mounting miscellaneous things to the iRobot® Create® 3 regular mounting pattern. 5 | {% for keys, file in data|dictsort %} 6 | ## {{ keys }} 7 | {% set full_path=file.path+'/'+file.name %} 8 | {% if check_generate(full_path|string()) %} 9 | ![{{ file.name|replace(file.extension, "") }}](../{{ file.path }}/{{ file.name|replace(file.extension, "png") }} "{{ file.name|replace(file.extension, "") }}") 10 | {% endif %} 11 | {% if file.size_raw_kb|float() < render_size_limit|float() %} 12 |
13 | 3D-Rendering 14 | 15 | 16 | 17 |
18 | {% endif %} 19 | 20 | 21 | 22 | * [{{ keys }} STL ({{ file.size_str }})](../{{ file.path }}/{{ file.name }}) 23 | 24 | {% endfor %} 25 | 26 | 27 | 28 | 29 | [^1]: All trademarks mentioned are the property of their respective owners. -------------------------------------------------------------------------------- /docs/hw/print_sensor_mounts.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Printable Sensor Mount Parts 2 | {% set data = listfiles("docs/hw/data/models/Sensors") %} 3 | !!! attention "Notice" 4 | This is an autogenerated page containing links to STLs suitable for mounting various sensors to the iRobot® Create® 3 regular mounting pattern. 5 | {% for key0, val0 in data|dictsort %} 6 | ## {{ key0|replace("IntelRealSense", "Intel® RealSense™")|replace("SLAMTEC", "SLAMTEC®")|replace("Luxonis", "Luxonis®") }} 7 | {% for keys, file in val0|dictsort %} 8 | ### {{ keys|replace("Oak-D", "Oak-D®") }} 9 | {% set full_path=file.path+'/'+file.name %} 10 | {% if check_generate(full_path|string()) %} 11 | ![{{ file.name|replace(file.extension, "") }}](../{{ file.path }}/{{ file.name|replace(file.extension, "png") }} "{{ file.name|replace(file.extension, "") }}") 12 | {% endif %} 13 | {% if file.size_raw_kb|float() < render_size_limit|float() %} 14 |
15 | 3D-Rendering 16 | 17 | 18 | 19 |
20 | {% endif %} 21 | 22 | 23 | 24 | * [{{ keys|replace("Oak-D", "Oak-D®") }} STL ({{ file.size_str }})](../{{ file.path }}/{{ file.name }}) 25 | 26 | {% endfor %} 27 | {% endfor %} 28 | 29 | 30 | 31 | 32 | 33 | [^1]: All trademarks mentioned are the property of their respective owners. -------------------------------------------------------------------------------- /docs/hw/rpi_hookup.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Hookup Guide for Raspberry Pi® 2 | 3 | The iRobot® Create® 3 robot has a USB-C®[^1] connector implementing a USB 2.0 host capable of 5 V @ 3 A continuous, which can be used to power and communicate with various downstream devices. 4 | Here are some hookup examples for Raspberry Pi®[^2] computers. 5 | 6 | ## Raspberry Pi® 4 7 | Since the Raspberry Pi® 4 has a USB-C® port capable of an OTG connection, a cable with a USB-C® connector on both ends is all that is required. 8 | The Raspberry Pi® is pictured in the cargo bay with the [large mount](../print_compute/#large-mount), and the Adapter Board is removed from the robot for clarity. 9 | ![Hookup diagram for Raspberry Pi® 4](data/hookup_pi4.jpg "Raspberry Pi® 4") 10 | 11 | ## Raspberry Pi® 1-3 Model B 12 | The original Raspberry Pi® through the Raspberry Pi® 3 do not have upstream (device) ports, so it's a little more difficult to connect and power them cleanly. 13 | We suggest using a USB-C® hub which includes an integrated USB to Ethernet adapter as the cleanest way to go. 14 | ![Hookup diagram for Raspberry Pi® 3B](data/hookup_pi3b.jpg "Raspberry Pi® 3B") 15 | It's also possible to power the Raspberry Pi® using the USB-C® port on the Adapter Board with the help of a downstream connection adapter like [this one](https://www.adafruit.com/product/4090) and make the data connection over Wi-Fi. 16 | 17 | ## Raspberry Pi® Zero 18 | This should be the same as the Raspberry Pi® 4. 19 | The Micro-USB connector labeled "USB" is an OTG port capable of being an Ethernet Gadget; use a USB Micro B to USB-C® cable to connect it directly to the robot's Adapter Board. 20 | ![Hookup diagram for Raspberry Pi® Zero](data/hookup_piZ.jpg "Raspberry Pi® Zero") 21 | 22 | ## Raspberry Pi® Printable Mounts 23 | The Raspberry Pi® mounting scheme does not match Create® 3's faceplate or cargo bay hole pattern; here are two [3D-printable mounts](../print_compute/#raspberry-pi). 24 | The [larger mount](../print_compute/#large-mount) is more rigid but requires three times as much time to print in comparison to the [smaller mount](../print_compute/#small-mount). 25 | 26 | 27 | [^1]: USB-C® is a trademark of USB Implementers Forum. 28 | [^2]: Raspberry Pi® is a trademark of Raspberry Pi Trading. 29 | [^3]: All other trademarks mentioned are the property of their respective owners. 30 | -------------------------------------------------------------------------------- /docs/index.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Educational Robot 2 | 3 |

4 |
5 |
6 | 7 |
8 |
9 |

10 | 11 | ## What is iRobot® Create® 3? 12 | 13 | iRobot® Create® 3 is an affordable, mobile robotics platform for educators, students, and developers. 14 | 15 | The robot has a full suite of on-board sensors and actuators which will allow you to develop and test your robotics algorithms. 16 | 17 | The software is entirely based on ROS 2: all sensors data are produced through ROS 2 publications while ROS 2 servers and subscriptions are used to control actuators and respond to users requests. 18 | The robot also provides some autonomous behaviors out of the box, such as docking, wall-follow and reactions to obstacles. 19 | All these can be triggered and/or configured through ROS 2 actions and parameters. 20 | 21 | Designed for beginner to advanced ROS 2 users, Create® 3 allows for a variety of programming methods. 22 | With Wi-fi and Bluetooth capability, Ethernet over USB connections, plus a removable faceplate for attaching payloads, you can start building with your Create® 3 right away. 23 | 24 | More detailed documentation can be accessed using the left navigation bar, or if it is collapsed, the ☰ menu in the top left corner of this page. 25 | 26 | ## Key internal docs links 27 | 28 | - [Hardware](hw/overview) 29 | - [ROS 2 API](api/ros2/) 30 | - [Software Releases](releases/overview) 31 | - [FAQ](faq/faq) 32 | 33 | ## Useful external links 34 | 35 | Here you can find additional content on the iRobot® Create® 3: 36 | 37 | - [Create® 3 Discussion Forum](https://github.com/iRobotEducation/create3_docs/discussions) 38 | - [Create® ROS 2 Messages Definitions](https://github.com/iRobotEducation/irobot_create_msgs) 39 | - [Create® 3 Gazebo Simulator](https://github.com/iRobotEducation/create3_sim) 40 | - [Create® 3 Examples](https://github.com/iRobotEducation/create3_examples) 41 | -------------------------------------------------------------------------------- /docs/lessons/Create3-Welcome-Guide.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/lessons/Create3-Welcome-Guide.pdf -------------------------------------------------------------------------------- /docs/lessons/getting-started.md: -------------------------------------------------------------------------------- 1 | # Getting Started with the Create® 3 Robot 2 | ## Details 3 | Use these resources to get started with Create® 3 Educational Robot, the next generation of iRobot’s affordable, trusted, all-in-one mobile robot development platform. Grasp the fundamentals of robotics, computer science, and engineering by programming the Create® 3 robot to perform simple behaviors, sounds, and movements, or tap into advanced applications including multi-robot exploration, navigation & mapping, and telepresence capabilities. 4 | 5 | * [Create 3 Getting Started Manual](./Create3-Welcome-Guide.pdf) 6 | * [Create 3 Discussion Forum](https://github.com/iRobotEducation/create3_docs/discussions) -------------------------------------------------------------------------------- /docs/lessons/pwp/Create3-C3_Phone_Home.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/lessons/pwp/Create3-C3_Phone_Home.pdf -------------------------------------------------------------------------------- /docs/lessons/pwp/Create3-Rainbow_Light_Painting.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/lessons/pwp/Create3-Rainbow_Light_Painting.pdf -------------------------------------------------------------------------------- /docs/lessons/pwp/Create3-Robot_Dance_Recital.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/lessons/pwp/Create3-Robot_Dance_Recital.pdf -------------------------------------------------------------------------------- /docs/lessons/pwp/Create3-Sound_Off.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/lessons/pwp/Create3-Sound_Off.pdf -------------------------------------------------------------------------------- /docs/lessons/pwp/Python-Web-Playground_First-Project.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/lessons/pwp/Python-Web-Playground_First-Project.pdf -------------------------------------------------------------------------------- /docs/lessons/pwp/airtable/add-a-base.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/lessons/pwp/airtable/add-a-base.png -------------------------------------------------------------------------------- /docs/lessons/pwp/airtable/api-documentation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/lessons/pwp/airtable/api-documentation.png -------------------------------------------------------------------------------- /docs/lessons/pwp/airtable/auth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/lessons/pwp/airtable/auth.png -------------------------------------------------------------------------------- /docs/lessons/pwp/airtable/forward.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/lessons/pwp/airtable/forward.png -------------------------------------------------------------------------------- /docs/lessons/pwp/airtable/help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/lessons/pwp/airtable/help.png -------------------------------------------------------------------------------- /docs/lessons/pwp/airtable/name-base.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/lessons/pwp/airtable/name-base.png -------------------------------------------------------------------------------- /docs/lessons/pwp/airtable/open-base.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/lessons/pwp/airtable/open-base.png -------------------------------------------------------------------------------- /docs/lessons/pwp/airtable/playground-info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/lessons/pwp/airtable/playground-info.png -------------------------------------------------------------------------------- /docs/lessons/pwp/airtable/pwp-screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/lessons/pwp/airtable/pwp-screenshot.png -------------------------------------------------------------------------------- /docs/lessons/pwp/c3-phone-home.md: -------------------------------------------------------------------------------- 1 | # C3, Phone Home 2 | ## Details 3 | Use a coordinate system to command your robot to return to its starting position. 4 | ### Downloads and Resources 5 | * [PDF: C3, Phone Home Activity Sheet](./Create3-C3_Phone_Home.pdf) 6 | 7 | ## The Main Idea 8 | The Create® 3 robot keeps track of its position on an invisible coordinate grid as it moves around. This feature can be particularly handy when you’d like to tell your robot to drive to a specific set of coordinates, landmark, etc. Here we will use the invisible coordinate system to tell your robot to return to its starting position after roaming around a room. 9 | 10 | ## Project Steps 11 | 1. Remove your robot from the Home Base™ Charging Dock and place it on an empty space on the floor. This starting position will be registered as (0, 0) by the robot when you press “Play” on your program. 12 | 13 | 2. Create a program that drives the robot forward until it bumps into an obstacle. With a bump event, back up a few centimeters and then use await robot.navigate_to(0 , 0) to send your robot back to its original starting point. See the example below for help: 14 | ``` 15 | @event(robot.when_play) 16 | async def play(robot): 17 | await robot.set_wheel_speeds(25, 25) 18 | 19 | @event(robot.when_bumped, [True, True]) 20 | async def when_bumper(robot): 21 | await robot.move(-15) 22 | await robot.navigate_to(0, 0) 23 | 24 | robot.play() 25 | ``` 26 | 3. Press play to watch your robot drive forward until it bumps into an obstacle. Once it bumps, it should reverse, turn around and drive back to its original starting position. 27 | 28 | ## Going Further 29 | Can you use the command await robot.get_position() to program your robot to list the coordinates of the obstacles it bumps into? How might you turn that list into a basic map? 30 | 31 | Try combining the navigate_to() commands with the Create® 3 Light Painting Activity to create precise drawings from a coordinate grid. 32 | 33 | Try measuring out your robot’s arena in centimeters and placing stickers or other flat landmarks down on specific coordinates. Program your robot to drive to each of the coordinates. How similar are you measurements? -------------------------------------------------------------------------------- /docs/lessons/pwp/light-painting.md: -------------------------------------------------------------------------------- 1 | # Light Paint with the Create® 3 Robot 2 | ## Details 3 | Use long-exposure light photography, paired with the Create® 3 Robot, to create EPIC robot-infused light paintings. 4 | 5 | ### Downloads and Resources 6 | * [PDF: Light Paint with Create® Robot Lesson Plan](./Create3-Rainbow_Light_Painting.pdf) 7 | -------------------------------------------------------------------------------- /docs/lessons/pwp/pwp-sdk_commands.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/lessons/pwp/pwp-sdk_commands.pdf -------------------------------------------------------------------------------- /docs/lessons/pwp/robot-dance-recital.md: -------------------------------------------------------------------------------- 1 | # Create® 3 Robot Dance Recital 2 | ## Details 3 | Use the Create® 3 and the iRobot Education Python[^1] Web Playground to code your robot to dance the Hokey Pokey. Looking for more? Take your new choreography skills to new heights and code a dance to your own song! 4 | 5 | ### Downloads and Resources 6 | * [PDF: Robot Dance Recital](./Create3-Robot_Dance_Recital.pdf) 7 | 8 | [^1]: Python is governed by the Python Software Foundation. 9 | [^2]: All trademarks mentioned are the property of their respective owners. 10 | -------------------------------------------------------------------------------- /docs/lessons/pwp/sound-off-1-2.md: -------------------------------------------------------------------------------- 1 | # Sound Off, 1-2 2 | ## Details 3 | Code your Create® 3 Robot to play musical tones and respond to button presses and other sensor input. 4 | ### Downloads and Resources 5 | * [PDF: Sound Off, 1-2 Activity Sheet](./Create3-Sound_Off.pdf) 6 | 7 | ## The Main Idea 8 | Robots can play musical notes by emitting sounds of different frequencies and durations. These notes can be strung together in a sequence to play simple melodies, which are used to help the robot communicate its status. A “Happy Sound” can communicate “I am ready to run,” while an “Angry Sound” can mean “I am experiencing a problem.” Explore programming different notes and melodies to give your robot its own voice! 9 | 10 | ## Project Steps 11 | 1. Locate Button 1 and Button 2 in the Create® 3 button suite. In the code, trigger an event for Button 1 and 2 press with these commands: 12 | ``` 13 | @event(robot.when_touched, [True, False] 14 | async def when_touch_fl(robot): 15 | pass 16 | 17 | @event(robot.when_touched, [False, True] 18 | async def when_touch_fr(robot): 19 | pass 20 | ``` 21 | 22 | 2. Use the command await robot.play_note(440, 0.25) to play an A4 quarter note. The first parameter determines the note frequency and the second parameter determines note duration (in seconds). Explore playing different notes with our Python[^1] Note Frequencies Guide. 23 | 24 | 3. Under a Button 1 event, list at least three notes together in a sequence to create a “happy sound” melody. Our example snippet is below: 25 | ``` 26 | @event(robot.when_touched, [True, False]) 27 | async def when_touch_fl(robot): 28 | await robot.play_note(F4, .125) 29 | await robot.play_note(G4, .125) 30 | await robot.play_note(A4, .125) 31 | ``` 32 | 33 | 4. Under a Button 2 event, list at least three notes together in a sequence to create an “angry sound.” When finished, you have the beginnings of a robot personality! 34 | 35 | ## Going Further 36 | Take your robot’s personality to new heights by programming it to “grumble” and “shout” via angry melodies when it bumps into obstacles as it drives around the room. 37 | 38 | OR 39 | 40 | Transform your robot into a random guess machine! Create a program that will randomly play a happy or angry sound when a button is pressed. Use the robot to answer Yes or No questions randomly. 41 | 42 | [^1]: Python is governed by the Python Software Foundation. 43 | [^2]: All trademarks mentioned are the property of their respective owners. 44 | -------------------------------------------------------------------------------- /docs/lessons/pwp/web-playground.md: -------------------------------------------------------------------------------- 1 | # Create® 3 Robot + Web Playground for Python 2 | ## Details 3 | You can connect to the Create® 3 Educational Robot via Bluetooth[^1] and run your first program in a browser through the Python[^2] Web Playground. Follow the instructions to connect, run and explore! 4 | 5 | ### Downloads and Resources 6 | * [PDF: Python Web Playground First Project](./Python-Web-Playground_First-Project.pdf) 7 | * [Video: Run Your First Python Web Playground Project with Create 3](https://bcove.video/3wY40IC) 8 | * [Link: Python Web Playground](https://python.irobot.com/) 9 | 10 | ## Coding The First Project - Python Web Playground 11 | Important Note: If running multiple Create® robots, complete all of the steps below for one robot at a time to avoid connection errors. 12 | ### You’ll Need: 13 | * Home Base® Charging Dock 14 | * Charging Dock Cable 15 | * Create® 3 Educational Robot 16 | * Computer with Bluetooth™ Compatibility (i.e. [Google Chrome Browser](https://www.google.com/chrome/)) 17 | 18 | ### Step 1 19 | Confirm that your computer’s Bluetooth™ setting is [“on.”](https://support.microsoft.com/en-us/windows/turn-bluetooth-on-or-off-in-windows-9e92fddd-4e12-e32b-9132-5e36bdb2f75a) 20 | 21 | ### Step 2 22 | Power on your robot. Wait for your robot to fully boot up and play its “Happy Sound” before proceeding. 23 | 24 | ### Step 3 25 | Confirm that your robot is in Bluetooth Mode. You can check this by looking for a blue light glowing through the faceplate on the back-right side of your robot. If no blue light is glowing, remove the faceplate and manually set the switch on the Adaptor Board to the Bluetooth logo on the right. 26 | 27 | ### Step 4 28 | Open Google Chrome in a new window and navigate to [python.irobot.com](http://python.irobot.com/). 29 | 30 | ### Step 5 31 | Click on the Connect button to open the Google Chrome Bluetooth manager. Your robot should appear in the device menu after ~30 seconds under its default device name, or as “Unsupported Device.” Select the robot’s name and click the Pair button. 32 | 33 | ### Step 6 34 | Press play to run the example code project. Try pressing your robot’s bumpers. When you press on the right side of the bumper, your robot’s Ring Light should glow yellow and the robot should begin to spin clockwise. What happens when you press on the left side? 35 | 36 | ### Step 7 37 | Congratulations, you have run your first python web program! To go further, explore our example code snippets and the Python Web Playground glossary to learn more about all of the available commands. Happy Coding! 38 | 39 | [^1]: The Bluetooth® word mark and logos are registered trademarks owned by Bluetooth SIG, Inc. and any use of such marks by iRobot is under license. 40 | [^2]: Python is governed by the Python Software Foundation. 41 | [^3]: All trademarks mentioned are the property of their respective owners. 42 | -------------------------------------------------------------------------------- /docs/lessons/ros2/intro/creating-packages.md: -------------------------------------------------------------------------------- 1 | # Intro to ROS 2: Creating Packages 2 | ## Details 3 | In this tutorial, Maddie and Kate walk you through the basics of creating a custom ROS 2[^1] package. 4 | 5 | ### Downloads and Resources 6 | * [Video: Creating a ROS 2 Package](https://bcove.video/3FZoaq3) 7 | 8 | [^1]: ROS 2 is governed by Open Robotics 9 | [^2]: All trademarks mentioned are the property of their respective owners. -------------------------------------------------------------------------------- /docs/lessons/ros2/intro/serial-communication.md: -------------------------------------------------------------------------------- 1 | # Intro to ROS 2: Serial Communication with the Create® 3 Robot 2 | ## Details 3 | In this tutorial video, review the basics of communicating over a serial port with the Create® 3 robot in order to connect external hardware and other attachments! 4 | 5 | ### Downloads and Resources 6 | * [Video: Serial Communication Tutorial](https://bcove.video/3TyfQ3K) 7 | 8 | [^1]: ROS 2 is governed by Open Robotics 9 | [^2]: All trademarks mentioned are the property of their respective owners. -------------------------------------------------------------------------------- /docs/lessons/ros2/intro/working-with-the-cli.md: -------------------------------------------------------------------------------- 1 | # Intro to ROS 2: Working With The Command Line Interface (CLI) 2 | ## Details 3 | In this video tutorial, learn how to use pre-baked ROS 2[^1] commands in your computer's terminal window to control the Create® 3 robot. 4 | ### Downloads and Resources 5 | * [Video: CLI Tutorial](https://bcove.video/3UDjGK5) 6 | 7 | [^1]: ROS 2 is governed by Open Robotics 8 | [^2]: All trademarks mentioned are the property of their respective owners. -------------------------------------------------------------------------------- /docs/lessons/ros2/intro/writing-action-clients.md: -------------------------------------------------------------------------------- 1 | # Intro to ROS 2: Writing Action Clients 2 | ## Details 3 | In this video tutorial, we learn the basics of writing a ROS 2[^1] action client for the Create® 3 Educational Robot. 4 | ### Downloads and Resources 5 | * [Video: Writing Action Clients with Create® 3 Robot](https://bcove.video/3FyYtwm) 6 | * [Link: Action Client Example Code](https://github.com/tuftsceeo/Tufts_Create3_Examples/blob/main/Code/Package/example_package/action_drive_square.py) 7 | 8 | [^1]: ROS 2 is governed by Open Robotics 9 | [^2]: All trademarks mentioned are the property of their respective owners. -------------------------------------------------------------------------------- /docs/lessons/ros2/intro/writing-pubs-and-subs.md: -------------------------------------------------------------------------------- 1 | # Intro to ROS 2: Writing Publishers and Subscribers 2 | ## Details 3 | In this video tutorial, the instructors cover the basics of writing a publisher and subscriber with ROS 2[^1] and the Create® 3 Robot. 4 | ### Downloads and Resources 5 | * [Video: Intro to Publishers and Subscribers with Create® 3 Robot](https://bcove.video/3TW8aZO) 6 | * [Link: Publisher Example Code](https://github.com/tuftsceeo/Tufts_Create3_Examples/blob/main/Code/Package/example_package/pub_lightring.py) 7 | * [Link: Subscriber Example Code](https://github.com/tuftsceeo/Tufts_Create3_Examples/blob/main/Code/Package/example_package/sub_ir.py) 8 | 9 | [^1]: ROS 2 is governed by Open Robotics 10 | [^2]: All trademarks mentioned are the property of their respective owners. -------------------------------------------------------------------------------- /docs/lessons/ros2/overview.md: -------------------------------------------------------------------------------- 1 | # Getting Started with the Create® 3 Robot 2 | ## Details 3 | This "new to ROS 2[^1]" course, with 6+ hours of hands-on learning, covers: 4 | 5 | * Power On & Charge 6 | * Updating the Create® 3 Robot 7 | * Connecting via Bluetooth the the Python Web Playground + running your first project 8 | * Connecting to Wi-Fi 9 | * Installing ROS 2 onto your Linux device or virtual machine 10 | * Running your first ROS 2 Command 11 | * Running basic commands in the command line interface 12 | * Building the Create® 3 examples workspace and running your first example project 13 | * Exploring publishers and subscribers and then writing your own 14 | * Exploring action clients and then writing your own 15 | * Writing and building your own custom ROS 2 packages 16 | * Communicating with Create® 3 over serial ports 17 | 18 | [^1]: ROS 2 is governed by Open Robotics 19 | [^2]: All trademarks mentioned are the property of their respective owners. -------------------------------------------------------------------------------- /docs/lessons/ros2/teleop-1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/lessons/ros2/teleop-1.gif -------------------------------------------------------------------------------- /docs/lessons/ros2/teleop-2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/lessons/ros2/teleop-2.gif -------------------------------------------------------------------------------- /docs/lessons/ros2/teleop-twist.md: -------------------------------------------------------------------------------- 1 | # Teleop Twist with the Create® 3 Robot 2 | ## Details 3 | In this project, you'll build the Create 3 Examples repository from GitHub and drive the Create® 3 Robot around with your computer's keyboard. 4 | 5 | ### Downloads and Resources 6 | * [Create 3 Examples GitHub](https://github.com/iRobotEducation/create3_examples) 7 | * [Tutorial Video](https://bcove.video/3BOpW9D) 8 | 9 | ## Build the Create® 3 Examples Repository 10 | Example nodes to drive the iRobot® Create® 3 Educational Robot. 11 | 12 | ### Dependencies 13 | * [ROS 2 Galactic](https://docs.ros.org/en/galactic/Installation.html) 14 | * [irobot_create_msgs](https://github.com/iRobotEducation/irobot_create_msgs) 15 | 16 | ### Build instructions 17 | First, source your ROS 2 workspaces with all the required dependencies. Then, you are ready to clone and build this repository. You should only have to do this once per install. 18 | 19 | ``` 20 | mkdir -p create3_examples_ws/src 21 | cd create3_examples_ws/src 22 | git clone https://github.com/iRobotEducation/create3_examples.git 23 | cd .. 24 | rosdep install --from-path src --ignore-src -yi 25 | colcon build 26 | ``` 27 | 28 | ### Initialization instructions 29 | You will have to do this in every new session in which you wish to use these examples: 30 | ``` 31 | source ~/create3_examples_ws/install/local_setup.sh 32 | ``` 33 | 34 | ## Teleoperation & Teleprescence Project Instructions 35 | In this example, you will learn to control a Create®3 robot with the keyboard on your laptop. Being able to control the robot from a distance makes it teleoperational. To make it have telepresence, design a phone stand that can attach to the top of the Create®3 robot. Facetime or Zoom into your phone so you can see the environment where you are driving the robot. This allows you to feel present as your robot navigates around. 36 | 37 | ![A Create 3 robot driving around a classroom from a student perspective](./teleop-1.gif) 38 | ![A Create 3 robot driving around a classroom from the robot's perspective](./teleop-2.gif) 39 | 40 | ## Get Started 41 | Make sure to follow the instructions above in the "Build the Create 3 Examples Repository" section to install the necessary package and dependencies for this example. 42 | 43 | ### Install Dependencies 44 | First, let's install the ROS Teleop Twist package. Copy & paste this line into the open terminal: 45 | ``` 46 | sudo apt install ros-galactic-teleop-twist-keyboard 47 | ``` 48 | 49 | ### Disabling Motion Control Safety 50 | 51 | Next, we need to disable the motion control safety features of the Create®3 robot. This will allow you to drive the robot in reverse. 52 | ``` 53 | ros2 param set /motion_control safety_override full 54 | ``` 55 | Then we can run the teleop_twist_keyboard package that we previously installed. 56 | ``` 57 | ros2 run teleop_twist_keyboard teleop_twist_keyboard 58 | ``` 59 | ### What You'll See 60 | When you run this package & executable you will see the following information in your terminal. Now you can use the keys on your keyboard to remotely control your Create®3 robot. Happy Driving! 61 | 62 | ``` 63 | Reading from the keyboard and Publishing to Twist! 64 | --------------------------- 65 | Moving around: 66 | u i o 67 | j k l 68 | m , . 69 | 70 | For Holonomic mode (strafing), hold down the shift key: 71 | --------------------------- 72 | U I O 73 | J K L 74 | M < > 75 | 76 | t : up (+z) 77 | b : down (-z) 78 | 79 | anything else : stop 80 | 81 | q/z : increase/decrease max speeds by 10% 82 | w/x : increase/decrease only linear speed by 10% 83 | e/c : increase/decrease only angular speed by 10% 84 | 85 | CTRL-C to quit 86 | ``` -------------------------------------------------------------------------------- /docs/releases/g_1_1.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Release G.1.1 2 | [[Click here to download release G.1.1]](https://github.com/iRobotEducation/create3_docs/releases/download/G.1.1/Create3-G.1.1.swu) 3 | 4 | ## This release is running ROS 2 Galactic with the following interface library versions: 5 | 6 | - [irobot_create_msgs - 1.2.2](https://github.com/iRobotEducation/irobot_create_msgs/tree/1.2.2) 7 | - [cyclonedds - 0.8.1](https://github.com/eclipse-cyclonedds/cyclonedds/tree/0.8.1) 8 | - [Fast-DDS - 2.3.3](https://github.com/eProsima/Fast-DDS/tree/2.3.3) 9 | 10 | ## Release Overview 11 | 12 | This release provides the robot's sensors and controls via topics, actions, and services, see [ROS 2 API](../../api/ros2/). 13 | 14 | The robot runs a webserver for updating software, configuring to the network, getting error logs from the robot, and configuring ROS 2 environment variables and parameters. 15 | This release has some known issues using the network configuration webserver page to associate with networks using characters that are not alphanumeric 7-bit ASCII. 16 | If there is an issue getting on the network, it is recommended to first update the software via the robot's host AP mode, then try getting on the network with the latest version, see [Create® 3 Setup](https://edu.irobot.com/create3-setup). 17 | -------------------------------------------------------------------------------- /docs/releases/g_2_2.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Release G.2.2 2 | [[Click here to download release G.2.2]](https://github.com/iRobotEducation/create3_docs/releases/download/G.2.2/Create3-G.2.2.swu) 3 | 4 | ## This release is running ROS 2 Galactic with the following interface library versions: 5 | 6 | - [irobot_create_msgs - 1.2.4](https://github.com/iRobotEducation/irobot_create_msgs/tree/1.2.4) 7 | - [cyclonedds - 0.8.1](https://github.com/eclipse-cyclonedds/cyclonedds/tree/0.8.1) 8 | - [Fast-DDS - 2.3.3](https://github.com/eProsima/Fast-DDS/tree/2.3.3) 9 | 10 | ## Release Overview 11 | As with the last release, this one provides the robot's sensors and controls via topics, actions, and services; for more, see [ROS 2 API](../../api/ros2/). 12 | iRobot® Education Bluetooth protocol functionality has been greatly improved in this release; we have released the iRobot Education [Python Web Playground](https://python.irobot.com/) to interact with the robot. 13 | Please be sure your robot's [BLE/USB Toggle](../../hw/adapter/#usbble-toggle) is in the "BLE" position in order to use the robot in this mode. 14 | Note that when the Bluetooth[^1] radio is enabled, the USB-C[^2] port cannot communicate with a downstream device (though it remains powered). 15 | 16 | ## Changelog (from G.1.1) 17 | ### Core Robot 18 | * Webserver 19 | * Properly handles Unicode characters with SSIDs, hostnames, and Bluetooth names 20 | * Reboot Robot and Factory Reset are only available in AP mode 21 | * Added "Identify Robot" when in AP mode to assist setting up multiple robots at once 22 | * MAC addresses are visible on About page 23 | * User Interface 24 | * E-Stop and Backup Limit have [new LED patterns](../../hw/face/#while-operating) to disambiguate from other uses of the UI 25 | * Toggling USB/BLE no longer requires manual application reset from webserver 26 | * Motion Control 27 | * Improve reporting and recovery after safety limits are triggered 28 | 29 | ### ROS 2 30 | * [Docking / undocking](../../api/docking/) action improvements and fixes 31 | * Coordinate system fixes 32 | * `base_link` is now 3D 33 | * `base_footprint` added as a 2D TF frame 34 | * `imu_link` has been removed 35 | * Advertise light ring brightness parameter 36 | * Added audio publication and action to make speakers play sound 37 | 38 | ### iRobot® Education Bluetooth protocol mode 39 | * Fully implement [protocol v1.4](https://github.com/iRobotEducation/root-robot-ble-protocol) 40 | * Add [sound device](https://github.com/iRobotEducation/root-robot-ble-protocol#device-5---sound) 41 | * Add sound on connection and disconnection 42 | * Advertising rate increased to 10 Hz 43 | * Changing robot name when connected is now reflected in advertisement 44 | * Pressing the power button stops all actuators 45 | * Connection improvements on iOS and Android 46 | * Many stability improvements 47 | 48 | ## Known issues 49 | ### Core Robot 50 | * Robot may require multiple connection attempts when changing Wi-Fi networks 51 | * Robot will restart application when its connectivity changes, including connection changes with Wi-Fi or the USB interface, or when it receives a new DHCP lease. This is helpful for autoconfiguration with DDSes but can be disruptive. 52 | * Robot prefers time sync from Wi-Fi over its USB interface 53 | 54 | ### ROS 2 55 | * When using CycloneDDS, invoking ROS 2[^3] actions causes a memory leak on the robot. When the robot runs out of memory, it will automatically restart the application. Follow [this issue](https://github.com/ros2/rmw_cyclonedds/issues/388) for more information. 56 | 57 | ### iRobot® Education Bluetooth protocol mode 58 | * Robot does not recognize disconnection for thirty seconds. 59 | * Changing Bluetooth name in the webserver does not modify advertisement name until application is restarted 60 | 61 | [^1]: The Bluetooth® word mark and logos are registered trademarks owned by Bluetooth SIG, Inc. and any use of such marks by iRobot is under license. 62 | [^2]: USB-C® is a trademark of USB Implementers Forum. 63 | [^3]: ROS 2 is governed by Open Robotics. 64 | [^4]: Python 3 is governed by the Python Software Foundation. 65 | [^5]: All other trademarks mentioned are the property of their respective owners. -------------------------------------------------------------------------------- /docs/releases/g_3_1.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Release G.3.1 2 | [[Click here to download release G.3.1]](https://github.com/iRobotEducation/create3_docs/releases/download/G.3.1/Create3-G.3.1.swu) 3 | 4 | Note: A G.3.2 patch release is installed on some new robots from the factory. 5 | There is no user-facing difference between these two firmware versions; the difference is related to the manufacturing process. 6 | 7 | For iRobot® Education Bluetooth[^1] users, this is mostly a feature release. 8 | For ROS 2[^2] users, this is mostly a bugfix release. 9 | See below for details. 10 | 11 | 12 | ## This release is running ROS 2 Galactic with the following interface library versions: 13 | 14 | - [irobot_create_msgs - 1.2.4](https://github.com/iRobotEducation/irobot_create_msgs/tree/1.2.4) 15 | - [cyclonedds - 0.8.1](https://github.com/eclipse-cyclonedds/cyclonedds/tree/0.8.1) 16 | - [Fast-DDS - 2.3.3](https://github.com/eProsima/Fast-DDS/tree/2.3.3) 17 | 18 | ## Release Overview 19 | As with the last release, this one provides the robot's sensors and controls via topics, actions, and services; for more, see [ROS 2 API](../../api/ros2/). 20 | There have been no changes to the ROS 2 API. 21 | 22 | iRobot® Education Bluetooth protocol functionality has been further improved in this release, adding the seventh IR proximity sensor, and some commands related to docking and the docking sensor. 23 | We have changed the robot's policy to disable all reflexes while in this mode (instead of just the bump reflex). 24 | The robot should also respond more rapidly to disconnection. 25 | 26 | ## Changelog (from G.2.2) 27 | ### Core Robot 28 | * Webserver 29 | * Added ROS namespace form validation [(#71)](https://github.com/iRobotEducation/create3_docs/issues/71) 30 | 31 | * User Interface 32 | * Reduce log spam from audio synthesizer and BLE advertisements 33 | * Add more useful logging from mobility board to nav board 34 | 35 | * Motion Control 36 | * Fix bug relating to robot erroneously hitting backup limit when backup safety is disabled [(#175)](https://github.com/iRobotEducation/create3_docs/issues/175) 37 | * Bugfixes around e-stop logic 38 | * New turn angle controller 39 | 40 | * Connectivity 41 | * Robot will not restart application on DHCP renewals if the address stays the same [(#194)](https://github.com/iRobotEducation/create3_docs/issues/194) 42 | * Add beta serial port forwarding feature 43 | 44 | ### ROS 2 45 | * Add system monitor node to report CPU and RAM usage to the log, as well as checking for multiple robots on the same topic. 46 | * Implement ResetPose Service [(#193)](https://github.com/iRobotEducation/create3_docs/issues/193) 47 | * Proximity slowdown reflex no longer ignores safety_override setting 48 | 49 | ### iRobot® Education Bluetooth protocol mode 50 | * Fully implement [protocol v1.5](https://github.com/iRobotEducation/root-robot-ble-protocol) 51 | * Robot disables all reflexes by default upon connection [(#173)](https://github.com/iRobotEducation/create3_docs/issues/173) 52 | * Fix serial number reporting 53 | * Fix battery event rate 54 | * Robot responds more quickly upon disconnection 55 | 56 | [^1]: The Bluetooth® word mark and logos are registered trademarks owned by Bluetooth SIG, Inc. and any use of such marks by iRobot is under license. 57 | [^2]: ROS 2 is governed by Open Robotics. 58 | [^3]: All other trademarks mentioned are the property of their respective owners. -------------------------------------------------------------------------------- /docs/releases/g_4_1.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Release G.4.1 2 | [[Click here to download release G.4.1]](https://github.com/iRobotEducation/create3_docs/releases/download/G.4.1/Create3-G.4.1.swu) 3 | 4 | For iRobot® Education Bluetooth[^1] users, this is mostly a bugfix release. 5 | For ROS 2[^2] users, this is mostly a feature release. 6 | See below for details. 7 | 8 | 9 | ## This release is running ROS 2 Galactic with the following interface library versions: 10 | 11 | - [irobot_create_msgs - 1.2.4](https://github.com/iRobotEducation/irobot_create_msgs/tree/1.2.4) 12 | - [cyclonedds - 0.8.1](https://github.com/eclipse-cyclonedds/cyclonedds/tree/0.8.1) 13 | - [Fast-DDS - 2.3.3](https://github.com/eProsima/Fast-DDS/tree/2.3.3) 14 | 15 | ## Release Overview 16 | There have been no changes to the [ROS 2 API](../../api/ros2/). 17 | Support has been added for the robot to use a [Fast-DDS Discovery Server](https://fast-dds.docs.eprosima.com/en/latest/fastdds/ros2/discovery_server/ros2_discovery_server.html). 18 | Some bugs have been found and fixed in the iRobot® Education Bluetooth protocol implementation. 19 | The default route should be properly set when the robot is connected to Ethernet-over-USB (but not Wi-Fi). 20 | 21 | ## Changelog (from G.3.1) 22 | ### Core Robot 23 | * Webserver 24 | * Added menu for beta features; hopefully more to come soon. 25 | * Exposed page for beta feature: serial device forwarding over a socket. 26 | * Added options for use of Fast-DDS Discovery server to Application Configuration page. 27 | * More consistent application of the style sheets across the UI. 28 | * Factory Reset option should now be available over Soft AP mode (bugfix). 29 | * Fix "easy" update (over the Internet) to be aware of different ROS versions, and to update properly. 30 | 31 | * Connectivity 32 | * Fixed bug where robot would not always properly set a default route when a device is connected to Ethernet-over-USB but not connected to Wi-Fi. [(#184)](https://github.com/iRobotEducation/create3_docs/issues/184) 33 | 34 | * OS 35 | * Fixed a bug on boot which could cause the system to hang during an update, sometimes causing the robot not to properly update (often with a mysterious red light). 36 | 37 | ### ROS 2 38 | * Implement option to use a Fast-DDS discovery server when RMW is set to Fast-DDS. 39 | * Add parameter to disable `odom` transformations [(#144)](https://github.com/iRobotEducation/create3_docs/issues/144) 40 | * IMU update rate is now 100 Hz 41 | 42 | ### iRobot® Education Bluetooth protocol mode 43 | * Fix incorrect cliff sensor message [(#312)](https://github.com/iRobotEducation/create3_docs/issues/312) 44 | * Fix incorrect accelerometer message [(#309)](https://github.com/iRobotEducation/create3_docs/issues/309) 45 | 46 | [^1]: The Bluetooth® word mark and logos are registered trademarks owned by Bluetooth SIG, Inc. and any use of such marks by iRobot is under license. 47 | [^2]: ROS 2 is governed by Open Robotics. 48 | [^3]: All other trademarks mentioned are the property of their respective owners. 49 | -------------------------------------------------------------------------------- /docs/releases/g_4_3.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Release G.4.3 2 | [[Click here to download release G.4.3]](https://github.com/iRobotEducation/create3_docs/releases/download/G.4.3/Create3-G.4.3.swu) 3 | 4 | For iRobot® Education Bluetooth[^1] users, there are no changes. 5 | For ROS 2[^2] users, this release is to add beta features to help with time sync. 6 | See below for details. 7 | 8 | 9 | ## This release is running ROS 2 Galactic with the following interface library versions: 10 | 11 | - [irobot_create_msgs - 1.2.4](https://github.com/iRobotEducation/irobot_create_msgs/tree/1.2.4) 12 | - [cyclonedds - 0.8.1](https://github.com/eclipse-cyclonedds/cyclonedds/tree/0.8.1) 13 | - [Fast-DDS - 2.3.3](https://github.com/eProsima/Fast-DDS/tree/2.3.3) 14 | 15 | ## Release Overview 16 | There have been no changes to the [ROS 2 API](../../api/ros2/). 17 | The robot's time can be set directly, or the ntp daemon can be asked to resync, through the webserver. ([#324](https://github.com/iRobotEducation/create3_docs/issues/324), [#327](https://github.com/iRobotEducation/create3_docs/issues/327)) 18 | 19 | ## Changelog (from G.4.1) 20 | ### Core Robot 21 | * Webserver 22 | * Added beta feature: [set time](../../webserver/set-datetime/). 23 | * Added beta feature: [restart ntpd](../../webserver/restart-ntpd/). 24 | * Corrected response text from /api/restart-app [(#330)](https://github.com/iRobotEducation/create3_docs/issues/330) 25 | 26 | * OS 27 | * Corrected direction of boot LED animation (bug introduced in G.4.1). 28 | 29 | [^1]: The Bluetooth® word mark and logos are registered trademarks owned by Bluetooth SIG, Inc. and any use of such marks by iRobot is under license. 30 | [^2]: ROS 2 is governed by Open Robotics. 31 | [^3]: All other trademarks mentioned are the property of their respective owners. 32 | -------------------------------------------------------------------------------- /docs/releases/g_4_4.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Release G.4.4 2 | [[Click here to download release G.4.4]](https://github.com/iRobotEducation/create3_docs/releases/download/G.4.4/Create3-G.4.4.swu) 3 | 4 | ## This release is running ROS 2 Galactic with the following interface library versions: 5 | 6 | - [irobot_create_msgs - 1.2.4](https://github.com/iRobotEducation/irobot_create_msgs/tree/1.2.4) 7 | - [cyclonedds - 0.8.1](https://github.com/eclipse-cyclonedds/cyclonedds/tree/0.8.1) 8 | - [Fast-DDS - 2.3.3](https://github.com/eProsima/Fast-DDS/tree/2.3.3) 9 | 10 | ## Release Overview 11 | For iRobot® Education Bluetooth[^1] users, there are no changes. 12 | For ROS 2[^2] users, this release fixes an issue. 13 | See below for details. 14 | 15 | ## Changelog (from G.4.3) 16 | ### ROS 2 17 | * `cmd_audio` subscription is now `reliable` instead of `best-effort` [(#356)](https://github.com/iRobotEducation/create3_docs/issues/356) 18 | 19 | !!!important 20 | A "best-effort" publisher will no longer be able to communicate with this subscription. See [this compatibility matrix](https://docs.ros.org/en/rolling/Concepts/About-Quality-of-Service-Settings.html#qos-compatibilities) for details. 21 | 22 | [^1]: The Bluetooth® word mark and logos are registered trademarks owned by Bluetooth SIG, Inc. and any use of such marks by iRobot is under license. 23 | [^2]: ROS 2 is governed by Open Robotics. 24 | [^3]: All other trademarks mentioned are the property of their respective owners. 25 | -------------------------------------------------------------------------------- /docs/releases/g_4_5.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Release G.4.5 2 | [[Click here to download release G.4.5]](https://github.com/iRobotEducation/create3_docs/releases/download/G.4.5/Create3-G.4.5.swu) 3 | 4 | ## This release is running ROS 2 Galactic with the following interface library versions: 5 | 6 | - [irobot_create_msgs - 1.2.4](https://github.com/iRobotEducation/irobot_create_msgs/tree/1.2.4) 7 | - [cyclonedds - 0.8.1](https://github.com/eclipse-cyclonedds/cyclonedds/tree/0.8.1) 8 | - [Fast-DDS - 2.3.3](https://github.com/eProsima/Fast-DDS/tree/2.3.3) 9 | 10 | ## Release Overview 11 | For iRobot® Education Bluetooth[^1] users, there are no changes. 12 | For ROS 2[^2] users, this release fixes a few issues and adds a beta feature. 13 | See below for details. 14 | 15 | ## Changelog (from G.4.4) 16 | ### ROS 2 17 | * Corrected rate of `/stop_status` publication (at least 1 Hz) 18 | * Corrected rate of `/battery_status` publication (at least 0.1 Hz) 19 | 20 | ### Core Robot 21 | * Webserver / OS 22 | * Added beta feature: [set wired subnet](../../webserver/set-wired-subnet/). 23 | 24 | [^1]: The Bluetooth® word mark and logos are registered trademarks owned by Bluetooth SIG, Inc. and any use of such marks by iRobot is under license. 25 | [^2]: ROS 2 is governed by Open Robotics. 26 | [^3]: All other trademarks mentioned are the property of their respective owners. 27 | -------------------------------------------------------------------------------- /docs/releases/g_5_1.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Release G.5.1 2 | [[Click here to download release G.5.1]](https://github.com/iRobotEducation/create3_docs/releases/download/G.5.1/Create3-G.5.1.swu) 3 | 4 | ## This release is running ROS 2 Galactic with the following interface library versions: 5 | 6 | - [irobot_create_msgs - 1.2.4](https://github.com/iRobotEducation/irobot_create_msgs/tree/1.2.4) 7 | - [cyclonedds - 0.8.1](https://github.com/eclipse-cyclonedds/cyclonedds/tree/0.8.1) 8 | - [Fast-DDS - 2.3.3](https://github.com/eProsima/Fast-DDS/tree/2.3.3) 9 | 10 | ## Release Overview 11 | For iRobot® Education Bluetooth[^1] users, this is a bugfix release. 12 | For ROS 2[^2] users, this is primarily a feature release. 13 | See below for details. 14 | 15 | ## Changelog (from G.4.5) 16 | ### ROS 2 17 | * Publications 18 | * Add `/cliff_intensity` topic [(#320)](https://github.com/iRobotEducation/create3_docs/issues/320) 19 | * Add tf frame for the IMU (called `imu`), to which the `/imu` topic is now connected 20 | * Middleware 21 | * Allow the use of `;` characters in Fast-DDS Discovery Server configuration [(#400)](https://github.com/iRobotEducation/create3_docs/issues/400) 22 | * Beta: Allow user to [provide an XML configuration file](../../webserver/rmw-profile-override/) for their preferred middleware [(#407)](https://github.com/iRobotEducation/create3_docs/issues/407) 23 | 24 | ### Core Robot 25 | * Webserver / OS 26 | * Beta: Allow user full control to [edit ntp.conf](../../webserver/edit-ntp-conf/) [(#333)](https://github.com/iRobotEducation/create3_docs/issues/333) 27 | * Remove erroneous log messages about the robot's lost Wi-Fi connection when it had never been connected in the first place 28 | 29 | ### iRobot® Education Bluetooth protocol mode 30 | * Fix device number for stall event to match protocol document [(#410)](https://github.com/iRobotEducation/create3_docs/issues/410) 31 | 32 | [^1]: The Bluetooth® word mark and logos are registered trademarks owned by Bluetooth SIG, Inc. and any use of such marks by iRobot is under license. 33 | [^2]: ROS 2 is governed by Open Robotics. 34 | [^3]: All other trademarks mentioned are the property of their respective owners. 35 | -------------------------------------------------------------------------------- /docs/releases/g_5_2.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Release G.5.2 2 | [[Click here to download release G.5.2]](https://github.com/iRobotEducation/create3_docs/releases/download/G.5.2/Create3-G.5.2.swu) 3 | 4 | ## This release is running ROS 2 Galactic with the following interface library versions: 5 | 6 | - [irobot_create_msgs - 1.2.4](https://github.com/iRobotEducation/irobot_create_msgs/tree/1.2.4) 7 | - [cyclonedds - 0.8.1](https://github.com/eclipse-cyclonedds/cyclonedds/tree/0.8.1) 8 | - [Fast-DDS - 2.3.3](https://github.com/eProsima/Fast-DDS/tree/2.3.3) 9 | 10 | ## Release Overview 11 | For ROS 2[^1] users, this is a bugfix release. 12 | For iRobot® Education Bluetooth[^2] users, there are no changes. 13 | See below for details. 14 | 15 | ## Changelog (from G.5.1) 16 | ### ROS 2 17 | * Client Library 18 | * Set lock free queue MAX_SEMA_SPINS = 0 [(irobotros/rclcpp#111)](https://github.com/irobot-ros/rclcpp/pull/111) 19 | 20 | [^1]: ROS 2 is governed by Open Robotics. 21 | [^2]: The Bluetooth® word mark and logos are registered trademarks owned by Bluetooth SIG, Inc. and any use of such marks by iRobot is under license. 22 | [^3]: All other trademarks mentioned are the property of their respective owners. 23 | -------------------------------------------------------------------------------- /docs/releases/g_5_3.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Release G.5.3 2 | [[Click here to download release G.5.3]](https://github.com/iRobotEducation/create3_docs/releases/download/G.5.3/Create3-G.5.3.swu) 3 | 4 | ## This release is running ROS 2 Galactic with the following interface library versions: 5 | 6 | - [irobot_create_msgs - 1.2.4](https://github.com/iRobotEducation/irobot_create_msgs/tree/1.2.4) 7 | - [cyclonedds - 0.8.1](https://github.com/eclipse-cyclonedds/cyclonedds/tree/0.8.1) 8 | - [Fast-DDS - 2.3.3](https://github.com/eProsima/Fast-DDS/tree/2.3.3) 9 | 10 | ## Release Overview 11 | For ROS 2[^1] users, this is a bugfix release. 12 | For iRobot® Education Bluetooth[^2] users, there are no changes. 13 | See below for details. 14 | 15 | ## Changelog (from G.5.2) 16 | ### Core Robot 17 | * Webserver 18 | * Fix to the provisioning flow affecting some users [(#395)](https://github.com/iRobotEducation/create3_docs/issues/395) 19 | * ntpd.conf is now reset upon factory reset. 20 | 21 | ### ROS 2 22 | * Publications 23 | * The `cliff_intensity` topic will no longer report values less than zero. 24 | * The `kidnap_status` timestamp is now correct. 25 | 26 | [^1]: ROS 2 is governed by Open Robotics. 27 | [^2]: The Bluetooth® word mark and logos are registered trademarks owned by Bluetooth SIG, Inc. and any use of such marks by iRobot is under license. 28 | [^3]: All other trademarks mentioned are the property of their respective owners. 29 | -------------------------------------------------------------------------------- /docs/releases/g_5_4.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Release G.5.4 2 | [[Click here to download release G.5.4]](https://github.com/iRobotEducation/create3_docs/releases/download/G.5.4/Create3-G.5.4.swu) 3 | 4 | ## This release is running ROS 2 Galactic with the following interface library versions: 5 | 6 | - [irobot_create_msgs - 1.2.4](https://github.com/iRobotEducation/irobot_create_msgs/tree/1.2.4) 7 | - [cyclonedds - 0.8.1](https://github.com/eclipse-cyclonedds/cyclonedds/tree/0.8.1) 8 | - [Fast-DDS - 2.3.3](https://github.com/eProsima/Fast-DDS/tree/2.3.3) 9 | 10 | ## Release Overview 11 | For ROS 2[^1] users, this is a bugfix release. 12 | For iRobot® Education Bluetooth[^2] users, there are no changes. 13 | See below for details. 14 | 15 | ## Changelog (from G.5.3) 16 | ### Core Robot 17 | * Webserver 18 | * Add [beta feature](../../webserver/forget-wifi/) to disconnect from `wlan0` and forget the SSID [(#110)](https://github.com/iRobotEducation/create3_docs/issues/110) 19 | * Power Management 20 | * Robot will now change its light ring to "spinning red" when the battery level dips below 3%, and will explicitly call the `/robot_power` service when it falls below 2%. 21 | 22 | ### ROS 2 23 | * Actions 24 | * The `/rotate_angle` action no longer accepts overriding goals; an ongoing goal must be completed (successfully or unsuccessfully) before a new goal will be accepted. [(#351)](https://github.com/iRobotEducation/create3_docs/issues/351) 25 | * Improve reliability of robot docking and undocking. 26 | 27 | [^1]: ROS 2 is governed by Open Robotics. 28 | [^2]: The Bluetooth® word mark and logos are registered trademarks owned by Bluetooth SIG, Inc. and any use of such marks by iRobot is under license. 29 | [^3]: All other trademarks mentioned are the property of their respective owners. 30 | -------------------------------------------------------------------------------- /docs/releases/h_0_0.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Release H.0.0 2 | [[Click here to download release H.0.0]](https://github.com/iRobotEducation/create3_docs/releases/download/H.0.0/Create3-H.0.0.swu) 3 | 4 | This release is considered a beta. Please [report any issues](https://github.com/iRobotEducation/create3_docs/issues) as they are encountered. 5 | 6 | !!! bug 7 | This beta release is not stable in BLE mode. Please be sure the [USB/BLE toggle](../../hw/adapter/#usbble-toggle) on the adapter board is switched to "USB" before using this firmware. 8 | 9 | ## This release is running ROS 2 Humble with the following interface library versions: 10 | 11 | - [irobot_create_msgs - 2.1.0](https://github.com/iRobotEducation/irobot_create_msgs/tree/2.1.0) 12 | - [cyclonedds - 0.9.0](https://github.com/eclipse-cyclonedds/cyclonedds/tree/0.9.0) 13 | - [Fast-DDS - 2.6.2](https://github.com/eProsima/Fast-DDS/tree/2.6.2) 14 | 15 | ## Release Overview 16 | This release has feature parity with [G.3.1](../g_3_1), except that ROS 2[^1] has been upgraded to Humble. 17 | 18 | ### ROS 2 19 | 20 | As with the last release, this one provides the robot's sensors and controls via topics, actions, and services; for more, see [ROS 2 API](../../api/ros2/). 21 | 22 | Between Galactic and Humble, the docking API (messages, actions, and topics) have slightly changed as follows: 23 | 24 | * the `DockServo` action is now `Dock` to match the `Undock` action [(example here)](../../api/docking/#docking) 25 | * the `/dock` topic (and `Dock` message) is now `/dock_status` (and `DockStatus` message) to avoid confusion with the action [(example here)](../../api/docking/#dock-information) 26 | 27 | ### iRobot® Education Bluetooth protocol mode 28 | 29 | iRobot® Education Bluetooth[^2] protocol mode is not supported. 30 | 31 | 32 | [^1]: ROS 2 is governed by Open Robotics. 33 | [^2]: The Bluetooth® word mark and logos are registered trademarks owned by Bluetooth SIG, Inc. and any use of such marks by iRobot is under license. 34 | [^3]: All other trademarks mentioned are the property of their respective owners. -------------------------------------------------------------------------------- /docs/releases/h_1_0.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Release H.1.0 2 | [[Click here to download release H.1.0]](https://github.com/iRobotEducation/create3_docs/releases/download/H.1.0/Create3-H.1.0.swu) 3 | 4 | !!! warning 5 | When using Fast-DDS, startup times are about 30s longer than in our Galactic release. We are working on a fix. 6 | 7 | ## This release is running ROS 2 Humble with the following interface library versions: 8 | 9 | - [irobot_create_msgs - 2.1.0](https://github.com/iRobotEducation/irobot_create_msgs/tree/2.1.0) 10 | - [cyclonedds - 0.9.0](https://github.com/eclipse-cyclonedds/cyclonedds/tree/0.9.0) 11 | - [Fast-DDS - 2.6.4](https://github.com/eProsima/Fast-DDS/tree/2.6.4) 12 | 13 | ## Release Overview 14 | This release has feature parity with [G.4.3](../g_4_3), except that ROS 2[^1] has been upgraded to Humble. 15 | 16 | ### ROS 2 17 | 18 | As with the last release, this one provides the robot's sensors and controls via topics, actions, and services; for more, see [ROS 2 API](../../api/ros2/). 19 | 20 | Between Galactic and Humble, the docking API (messages, actions, and topics) have slightly changed as follows: 21 | 22 | * the `DockServo` action is now `Dock` to match the `Undock` action [(example here)](../../api/docking/#docking) 23 | * the `/dock` topic (and `Dock` message) is now `/dock_status` (and `DockStatus` message) to avoid confusion with the action [(example here)](../../api/docking/#dock-information) 24 | 25 | ### iRobot® Education Bluetooth protocol mode 26 | 27 | iRobot® Education Bluetooth[^2] protocol mode is supported; for best results, use Cyclone DDS. 28 | 29 | 30 | [^1]: ROS 2 is governed by Open Robotics. 31 | [^2]: The Bluetooth® word mark and logos are registered trademarks owned by Bluetooth SIG, Inc. and any use of such marks by iRobot is under license. 32 | [^3]: All other trademarks mentioned are the property of their respective owners. -------------------------------------------------------------------------------- /docs/releases/h_1_1.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Release H.1.1 2 | [[Click here to download release H.1.1]](https://github.com/iRobotEducation/create3_docs/releases/download/H.1.1/Create3-H.1.1.swu) 3 | 4 | !!! warning 5 | When using Fast-DDS, startup times are about 30s longer than in our Galactic release. We are working on a fix. 6 | 7 | ## This release is running ROS 2 Humble with the following interface library versions: 8 | 9 | - [irobot_create_msgs - 2.1.0](https://github.com/iRobotEducation/irobot_create_msgs/tree/2.1.0) 10 | - [cyclonedds - 0.9.0](https://github.com/eclipse-cyclonedds/cyclonedds/tree/0.9.0) 11 | - [Fast-DDS - 2.6.4](https://github.com/eProsima/Fast-DDS/tree/2.6.4) 12 | 13 | ## Release Overview 14 | For ROS 2[^1] users, this release fixes a couple issues. 15 | For iRobot® Education Bluetooth[^2] users, there are no changes. 16 | See below for details. 17 | 18 | ## Changelog (from H.1.0) 19 | ### ROS 2 20 | * Fix for issue involving goal timeouts with Fast-DDS 21 | * `cmd_audio` subscription is now `reliable` instead of `best-effort` [(#356)](https://github.com/iRobotEducation/create3_docs/issues/356) 22 | 23 | !!!important 24 | A "best-effort" publisher will no longer be able to communicate with this subscription. See [this compatibility matrix](https://docs.ros.org/en/rolling/Concepts/About-Quality-of-Service-Settings.html#qos-compatibilities) for details. 25 | 26 | [^1]: ROS 2 is governed by Open Robotics. 27 | [^2]: The Bluetooth® word mark and logos are registered trademarks owned by Bluetooth SIG, Inc. and any use of such marks by iRobot is under license. 28 | [^3]: All other trademarks mentioned are the property of their respective owners. -------------------------------------------------------------------------------- /docs/releases/h_1_2.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Release H.1.2 2 | [[Click here to download release H.1.2]](https://github.com/iRobotEducation/create3_docs/releases/download/H.1.2/Create3-H.1.2.swu) 3 | 4 | !!! warning 5 | When using Fast-DDS, startup times are about 30s longer than in our Galactic release. We are working on a fix. 6 | 7 | ## This release is running ROS 2 Humble with the following interface library versions: 8 | 9 | - [irobot_create_msgs - 2.1.0](https://github.com/iRobotEducation/irobot_create_msgs/tree/2.1.0) 10 | - [cyclonedds - 0.9.0](https://github.com/eclipse-cyclonedds/cyclonedds/tree/0.9.0) 11 | - [Fast-DDS - 2.6.4](https://github.com/eProsima/Fast-DDS/tree/2.6.4) 12 | 13 | ## Release Overview 14 | For ROS 2[^1] users, this release fixes a few issues and adds a beta feature. 15 | For iRobot® Education Bluetooth[^2] users, there are no changes. 16 | See below for details. 17 | 18 | ## Changelog (from H.1.1) 19 | ### ROS 2 20 | * Publications 21 | * Corrected rate of `/stop_status` publication (at least 1 Hz) 22 | * Corrected rate of `/battery_status` publication (at least 0.1 Hz) 23 | * Fast-DDS 24 | * Changed [publication mode](https://www.eprosima.com/index.php/resources-all/performance/dds-asynchronous-vs-synchronous-publishing) from synchronous to asynchronous (matches Galactic) 25 | 26 | ### Core Robot 27 | * Webserver / OS 28 | * Added beta feature: [set wired subnet](../../webserver/set-wired-subnet/). 29 | 30 | [^1]: ROS 2 is governed by Open Robotics. 31 | [^2]: The Bluetooth® word mark and logos are registered trademarks owned by Bluetooth SIG, Inc. and any use of such marks by iRobot is under license. 32 | [^3]: All other trademarks mentioned are the property of their respective owners. -------------------------------------------------------------------------------- /docs/releases/h_2_1.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Release H.2.1 2 | [[Click here to download release H.2.1]](https://github.com/iRobotEducation/create3_docs/releases/download/H.2.1/Create3-H.2.1.swu) 3 | 4 | !!! warning 5 | When using Fast-DDS, startup times are about 30s longer than in our Galactic release. We are working on a fix. 6 | 7 | ## This release is running ROS 2 Humble with the following interface library versions: 8 | 9 | - [irobot_create_msgs - 2.1.0](https://github.com/iRobotEducation/irobot_create_msgs/tree/2.1.0) 10 | - [cyclonedds - 0.9.0](https://github.com/eclipse-cyclonedds/cyclonedds/tree/0.9.0) 11 | - [Fast-DDS - 2.6.4](https://github.com/eProsima/Fast-DDS/tree/2.6.4) 12 | 13 | ## Release Overview 14 | For ROS 2[^1] users, this is primarily a feature release. 15 | For iRobot® Education Bluetooth[^2] users, this is a bugfix release. 16 | See below for details. 17 | 18 | ## Changelog (from H.1.2) 19 | ### ROS 2 20 | * Publications 21 | * Add `/cliff_intensity` topic [(#320)](https://github.com/iRobotEducation/create3_docs/issues/320) 22 | * Add tf frame for the IMU (called `imu`), to which the `/imu` topic is now connected 23 | * Middleware 24 | * Allow the use of `;` characters in Fast-DDS Discovery Server configuration [(#400)](https://github.com/iRobotEducation/create3_docs/issues/400) 25 | * Beta: Allow user to [provide an XML configuration file](../../webserver/rmw-profile-override/) for their preferred middleware [(#407)](https://github.com/iRobotEducation/create3_docs/issues/407) 26 | 27 | ### Core Robot 28 | * Webserver / OS 29 | * Beta: Allow user full control to [edit ntp.conf](../../webserver/edit-ntp-conf/) [(#333)](https://github.com/iRobotEducation/create3_docs/issues/333) 30 | * Remove erroneous log messages about the robot's lost Wi-Fi connection when it had never been connected in the first place 31 | 32 | ### iRobot® Education Bluetooth protocol mode 33 | * Fix device number for stall event to match protocol document [(#410)](https://github.com/iRobotEducation/create3_docs/issues/410) 34 | 35 | [^1]: ROS 2 is governed by Open Robotics. 36 | [^2]: The Bluetooth® word mark and logos are registered trademarks owned by Bluetooth SIG, Inc. and any use of such marks by iRobot is under license. 37 | [^3]: All other trademarks mentioned are the property of their respective owners. -------------------------------------------------------------------------------- /docs/releases/h_2_2.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Release H.2.2 2 | [[Click here to download release H.2.2]](https://github.com/iRobotEducation/create3_docs/releases/download/H.2.2/Create3-H.2.2.swu) 3 | 4 | !!! warning 5 | When using Fast-DDS, startup times are about 30s longer than in our Galactic release. We are working on a fix. 6 | 7 | ## This release is running ROS 2 Humble with the following interface library versions: 8 | 9 | - [irobot_create_msgs - 2.1.0](https://github.com/iRobotEducation/irobot_create_msgs/tree/2.1.0) 10 | - [cyclonedds - 0.9.0](https://github.com/eclipse-cyclonedds/cyclonedds/tree/0.9.0) 11 | - [Fast-DDS - 2.6.4](https://github.com/eProsima/Fast-DDS/tree/2.6.4) 12 | 13 | ## Release Overview 14 | For ROS 2[^1] users, this is a bugfix release. 15 | For iRobot® Education Bluetooth[^2] users, there are no changes. 16 | See below for details. 17 | 18 | ## Changelog (from H.2.1) 19 | ### ROS 2 20 | * Client Library 21 | * Set lock free queue MAX_SEMA_SPINS = 0 [(irobot-ros/events-executor#20)](https://github.com/irobot-ros/events-executor/pull/20) 22 | 23 | [^1]: ROS 2 is governed by Open Robotics. 24 | [^2]: The Bluetooth® word mark and logos are registered trademarks owned by Bluetooth SIG, Inc. and any use of such marks by iRobot is under license. 25 | [^3]: All other trademarks mentioned are the property of their respective owners. -------------------------------------------------------------------------------- /docs/releases/h_2_3.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Release H.2.3 2 | [[Click here to download release H.2.3]](https://github.com/iRobotEducation/create3_docs/releases/download/H.2.3/Create3-H.2.3.swu) 3 | 4 | !!! warning 5 | When using Fast-DDS, startup times are about 30s longer than in our Galactic release. We are working on a fix. 6 | 7 | ## This release is running ROS 2 Humble with the following interface library versions: 8 | 9 | - [irobot_create_msgs - 2.1.0](https://github.com/iRobotEducation/irobot_create_msgs/tree/2.1.0) 10 | - [cyclonedds - 0.9.0](https://github.com/eclipse-cyclonedds/cyclonedds/tree/0.9.0) 11 | - [Fast-DDS - 2.6.4](https://github.com/eProsima/Fast-DDS/tree/2.6.4) 12 | 13 | ## Release Overview 14 | For ROS 2[^1] users, this is a bugfix release. 15 | For iRobot® Education Bluetooth[^2] users, there are no changes. 16 | See below for details. 17 | 18 | ## Changelog (from H.2.2) 19 | ### Core Robot 20 | * Webserver 21 | * Fix to the provisioning flow affecting some users [(#395)](https://github.com/iRobotEducation/create3_docs/issues/395) 22 | * Factory reset now properly resets ntpd.conf. 23 | * Factory reset now resets the RMW to Fast DDS (default for Humble). 24 | 25 | ### ROS 2 26 | * Publications 27 | * The `cliff_intensity` topic will no longer report values less than zero. 28 | * The `kidnap_status` timestamp is now correct. 29 | 30 | [^1]: ROS 2 is governed by Open Robotics. 31 | [^2]: The Bluetooth® word mark and logos are registered trademarks owned by Bluetooth SIG, Inc. and any use of such marks by iRobot is under license. 32 | [^3]: All other trademarks mentioned are the property of their respective owners. -------------------------------------------------------------------------------- /docs/releases/h_2_4.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Release H.2.4 2 | [[Click here to download release H.2.4]](https://github.com/iRobotEducation/create3_docs/releases/download/H.2.4/Create3-H.2.4.swu) 3 | 4 | !!! warning 5 | When using Fast-DDS, startup times are about 30s longer than in our Galactic release. We are working on a fix. 6 | 7 | ## This release is running ROS 2 Humble with the following interface library versions: 8 | 9 | - [irobot_create_msgs - 2.1.0](https://github.com/iRobotEducation/irobot_create_msgs/tree/2.1.0) 10 | - [cyclonedds - 0.9.0](https://github.com/eclipse-cyclonedds/cyclonedds/tree/0.9.0) 11 | - [Fast-DDS - 2.6.4](https://github.com/eProsima/Fast-DDS/tree/2.6.4) 12 | 13 | ## Release Overview 14 | For ROS 2[^1] users, this is a bugfix release. 15 | For iRobot® Education Bluetooth[^2] users, there are no changes. 16 | See below for details. 17 | 18 | ## Changelog (from H.2.3) 19 | ### Core Robot 20 | * Webserver 21 | * Add [beta feature](../../webserver/forget-wifi/) to disconnect from `wlan0` and forget the SSID [(#110)](https://github.com/iRobotEducation/create3_docs/issues/110) 22 | * Power Management 23 | * Robot will now change its light ring to "spinning red" when the battery level dips below 3%, and will explicitly call the `/robot_power` service when it falls below 2%. 24 | 25 | ### ROS 2 26 | * Actions 27 | * The `/rotate_angle` action no longer accepts overriding goals; an ongoing goal must be completed (successfully or unsuccessfully) before a new goal will be accepted. [(#351)](https://github.com/iRobotEducation/create3_docs/issues/351) 28 | * Improve reliability of robot docking and undocking. 29 | 30 | [^1]: ROS 2 is governed by Open Robotics. 31 | [^2]: The Bluetooth® word mark and logos are registered trademarks owned by Bluetooth SIG, Inc. and any use of such marks by iRobot is under license. 32 | [^3]: All other trademarks mentioned are the property of their respective owners. -------------------------------------------------------------------------------- /docs/releases/h_2_5.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Release H.2.5 2 | [[Click here to download release H.2.5]](https://github.com/iRobotEducation/create3_docs/releases/download/H.2.5/Create3-H.2.5.swu) 3 | 4 | !!! warning 5 | When using Fast-DDS, startup times are about 30s longer than in our Galactic release. 6 | 7 | ## This release is running ROS 2 Humble with the following interface library versions: 8 | 9 | - [irobot_create_msgs - 2.1.0](https://github.com/iRobotEducation/irobot_create_msgs/tree/2.1.0) 10 | - [cyclonedds - 0.10.3](https://github.com/eclipse-cyclonedds/cyclonedds/tree/0.10.3) 11 | - [Fast-DDS - 2.6.4](https://github.com/eProsima/Fast-DDS/tree/2.6.4) 12 | 13 | ## Release Overview 14 | For ROS 2[^1] users, this is a bugfix release. 15 | For iRobot® Education Bluetooth[^2] users, there are no changes. 16 | See below for details. 17 | 18 | ## Changelog (from H.2.4) 19 | ### Core Robot 20 | * Overall 21 | * The robot uses less RAM when idle in this release than in previous releases. 22 | * Webserver 23 | * Add hidden [beta feature](../../webserver/wpa-supp-override/) to use a user-supplied wpa_supplicant.conf file. Note that this workflow conflicts with the normal provisioning workflow, so it has not been added to the beta menu, so that it is not accessed by accident. 24 | 25 | ### ROS 2 26 | * Library Versions 27 | * Update Cyclone DDS from 0.9.0 to 0.10.3 28 | * Parameters 29 | * Add ROS 2 parameter `wheels_stop_threshold_sec` to the `/motion_control` node. This parameter controls the amount of time that the robot will keep executing the last provided velocity command (on the `/cmd_vel` topic) before considering it stale and stopping the wheels. Default value is 0.5 seconds. 30 | * Add the following ROS 2 parameters to the `/robot_state` node to control (and disable) unnecessary ROS 2 publications to improve robot performance: 31 | * `publish_hazard_msgs`: default `true`. If set to false, the robot will not publish the `/hazard_detection` topic. Disabling this can noticeably reduce the CPU and RAM usage of the robot. 32 | * `hazards_pub_fixed_period_ms`: default `-1`. This controls whether the robot should publish hazard information even if the hazards are not changing. Set it to `-1` to disable fixed period hazard publications and have hazards be published only when they change. This parameter will be ignored if `publish_hazard_msgs` is set to `false`. 33 | * `raw_kinematics_min_pub_period_ms`: default `25`. This controls the minimum period at which the robot should publish raw kinematics information. If set to `-1`, it will disable raw kinematics publications. This can noticeably reduce the CPU and RAM usage of the robot. A value of `1` indicates that raw data should be published as soon as they are available. Values higher than `1` will throttle publications and will give some CPU improvement, but won't help RAM usage. 34 | The following topics are affected by this parameter: `/imu`, `/mouse`, `/wheel_status`, `/wheel_ticks`, `/wheel_vels`. 35 | If you are not interested in subscribing to these topics, it's recommended to set this parameter's value to `-1`. 36 | * `publish_odom_tfs`: default `true`. If set to false, the robot will not publish odometry information in the `/tf` topic. This can reduce the CPU and RAM usage of the robot if not needed. Note: this parameter is independent from `raw_kinematics_min_pub_period_ms` 37 | 38 | As a summary, the best performance can be obtained via 39 | ``` 40 | robot_state: 41 | ros__parameters: 42 | publish_hazard_msgs: false 43 | publish_odom_tfs: false 44 | raw_kinematics_min_pub_period_ms: -1 45 | ``` 46 | 47 | Note that `publish_odom_tfs: true` is required to interact with the navigation stack. 48 | 49 | This new version changes the default timing of some ROS 2 topics to improve the CPU performance. 50 | To restore the previous behavior users can use the following configuration 51 | 52 | ``` 53 | robot_state: 54 | ros__parameters: 55 | hazards_pub_fixed_period_ms: 16 56 | raw_kinematics_min_pub_period_ms: 1 57 | ``` 58 | 59 | 60 | [^1]: ROS 2 is governed by Open Robotics. 61 | [^2]: The Bluetooth® word mark and logos are registered trademarks owned by Bluetooth SIG, Inc. and any use of such marks by iRobot is under license. 62 | [^3]: All other trademarks mentioned are the property of their respective owners. 63 | -------------------------------------------------------------------------------- /docs/releases/h_2_6.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Release H.2.6 2 | [[Click here to download release H.2.6]](https://github.com/iRobotEducation/create3_docs/releases/download/H.2.6/Create3-H.2.6.swu) 3 | 4 | !!! warning 5 | When using Fast-DDS, startup times are about 30s longer than in our Galactic release. 6 | 7 | ## This release is running ROS 2 Humble with the following interface library versions: 8 | 9 | - [irobot_create_msgs - 2.1.0](https://github.com/iRobotEducation/irobot_create_msgs/tree/2.1.0) 10 | - [cyclonedds - 0.10.3](https://github.com/eclipse-cyclonedds/cyclonedds/tree/0.10.3) 11 | - [Fast-DDS - 2.6.4](https://github.com/eProsima/Fast-DDS/tree/2.6.4) 12 | 13 | ## Release Overview 14 | For ROS 2[^1] users, this is a bugfix release. 15 | For iRobot® Education Bluetooth[^2] users, there are no changes. 16 | See below for details. 17 | 18 | !!! important 19 | There were quite a few changes in H.2.5; it is recommended to also read [that changelog](../h_2_5). 20 | 21 | ## Changelog (from H.2.5) 22 | ### ROS 2 23 | * Parameters 24 | * Robot now sets `max_speed` parameter properly when `safety_override = full` is set in application configuration [(#558)](https://github.com/iRobotEducation/create3_docs/issues/558) 25 | 26 | 27 | [^1]: ROS 2 is governed by Open Robotics. 28 | [^2]: The Bluetooth® word mark and logos are registered trademarks owned by Bluetooth SIG, Inc. and any use of such marks by iRobot is under license. 29 | [^3]: All other trademarks mentioned are the property of their respective owners. 30 | -------------------------------------------------------------------------------- /docs/releases/i_0_0.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Release I.0.0 2 | [[Click here to download release I.0.0.CycloneDDS]](https://github.com/iRobotEducation/create3_docs/releases/download/I.0.0/Create3-I.0.0.CycloneDDS.swu) 3 | [[Click here to download release I.0.0.FastDDS]](https://github.com/iRobotEducation/create3_docs/releases/download/I.0.0/Create3-I.0.0.FastDDS.swu) 4 | 5 | !!! warning 6 | Be sure to download the correct release for your choice of middleware. 7 | 8 | ## This release is running ROS 2 Iron with the following interface library versions: 9 | 10 | - [irobot_create_msgs - 2.1.0](https://github.com/iRobotEducation/irobot_create_msgs/tree/2.1.0) 11 | - [cyclonedds - 0.10.3](https://github.com/eclipse-cyclonedds/cyclonedds/tree/0.10.3) 12 | - [Fast-DDS - 2.10.1](https://github.com/eProsima/Fast-DDS/tree/2.10.1) 13 | 14 | ## Release Overview 15 | For ROS 2[^1] users, this is a feature release, and our first upgrade to ROS 2 Iron. 16 | For iRobot® Education Bluetooth[^2] users, there are no changes. 17 | See below for details. 18 | 19 | !!! note 20 | In testing, this release appears to be fully compatible with ROS 2 Jazzy, as well. Please be sure to let us know if you run into any [issues](https://github.com/iRobotEducation/create3_docs/issues). 21 | 22 | ## Changelog (from H.2.6) 23 | ### ROS 2 24 | * Topics 25 | * The robot can now be tele-operated via `geometry_msgs/msg/TwistStamped` messages on the `cmd_vel_stamped` topic. (You may also continue to use the `cmd_vel` topic; don't use both at the same time.) 26 | 27 | 28 | [^1]: ROS 2 is governed by Open Robotics. 29 | [^2]: The Bluetooth® word mark and logos are registered trademarks owned by Bluetooth SIG, Inc. and any use of such marks by iRobot is under license. 30 | [^3]: All other trademarks mentioned are the property of their respective owners. 31 | -------------------------------------------------------------------------------- /docs/releases/overview.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Releases 2 | 3 | ## Overview 4 | Create® 3 releases take the version schema 5 | 6 | .. 7 | 8 | The letter corresponds with the ROS 2[^1] Release. 9 | For example, G corresponds with Galactic, and H corresponds with Humble. 10 | See [ROS 2 Releases](https://docs.ros.org/en/rolling/Releases.html). 11 | 12 | The first number corresponds with a major release number within the ROS 2 letter release. 13 | Increments to major release imply API breaking changes or significant new features. 14 | 15 | The second number corresponds with a minor release number within the major release number. 16 | Increments to the minor release imply bug fixes or small feature additions that should be backwards compatible with code that currently integrates with the major release number. 17 | One exception is that beta features may be added in minor releases. 18 | 19 | The latest stable release can be found at 20 | [http://edu.irobot.com/create3-latest-fw](http://edu.irobot.com/create3-latest-fw). 21 | 22 | The latest stable Iron release can be found at 23 | [http://edu.irobot.com/create3-iron-latest-fw](http://edu.irobot.com/create3-iron-latest-fw). 24 | The latest stable Humble release can be found at 25 | [http://edu.irobot.com/create3-humble-latest-fw](http://edu.irobot.com/create3-humble-latest-fw). 26 | The latest stable Galactic release can be found at 27 | [http://edu.irobot.com/create3-galactic-latest-fw](http://edu.irobot.com/create3-galactic-latest-fw). 28 | 29 | Downloads of a particular version can be found on each individual release page. 30 | 31 | ## Releases 32 | 33 | ### Iron 34 | * [I.0.0](../i_0_0) (iron-latest, latest) 35 | 36 | ### Humble 37 | * [H.2.6](../h_2_6) (humble-latest) 38 | * [H.2.5](../h_2_5) 39 | * [H.2.4](../h_2_4) 40 | * [H.2.3](../h_2_3) 41 | * [H.2.2](../h_2_2) 42 | * [H.2.1](../h_2_1) 43 | * [H.1.2](../h_1_2) 44 | * [H.1.1](../h_1_1) 45 | * [H.1.0](../h_1_0) 46 | * [H.0.0](../h_0_0) 47 | 48 | ### Galactic 49 | * [G.5.4](../g_5_4) (galactic-latest) 50 | * [G.5.3](../g_5_3) 51 | * [G.5.2](../g_5_2) 52 | * [G.5.1](../g_5_1) 53 | * [G.4.5](../g_4_5) 54 | * [G.4.4](../g_4_4) 55 | * [G.4.3](../g_4_3) 56 | * [G.4.1](../g_4_1) 57 | * [G.3.1](../g_3_1) 58 | * [G.2.2](../g_2_2) 59 | * [G.1.1](../g_1_1) 60 | 61 | [^1]: ROS 2 is governed by Open Robotics 62 | [^2]: All trademarks mentioned are the property of their respective owners. 63 | -------------------------------------------------------------------------------- /docs/setup/compute-ntp.md: -------------------------------------------------------------------------------- 1 | # Setup NTP on compute board to serve time to Create® 3 2 | 3 | ## Why should I do this? 4 | 5 | ROS 2[^1] is dependent upon synchronized clocks between nodes to have all data in the same reference time. 6 | When the Create® 3 is publishing on topics, it is publishing its data with the timestamp of its system clock, which synchronizes with an NTP server. 7 | If the Create® 3's Wi-Fi is connected to a network with internet connection, it will sync to a global time NTP server. 8 | The Create® 3 NTP config is also set to listen for servers on USB IP address 192.168.186.1 and 192.168.186.3. 9 | If the compute board is connected over USB to the Create® 3 with the compute board assigned one of these IP addresses on its USB interface, NTP on the compute board can keep the clocks between the compute board and Create® 3 in sync, even without an internet connection. 10 | If there is an internet connection on both compute board and Create® 3, configuring the NTP server on the compute board to serve the Create® 3 can still add value by reducing jitter between clocks. 11 | If your Create® 3 and compute board have an internet connection, this is not required, but is still recommended. 12 | 13 | ## Step-by-step 14 | 15 | 1. On your Compute Board, install chrony NTP server package 16 | 17 | sudo apt install chrony 18 | 19 | 1. Edit the config file 20 | 21 | sudo vi /etc/chrony/chrony.conf 22 | 23 | 1. Add the following lines after the `pool #.ubuntu.pool.ntp.org iburst maxsources #` block 24 | 25 | # Enable serving time to ntp clients on 192.168.186.0 subnet. 26 | allow 192.168.186.0/24 27 | 28 | 1. Optionally add the following lines immediately afterward if your SBC will not have a connection to a reference clock (i.e., the Internet) 29 | 30 | # Serve time even if not synchronized to a time source 31 | local stratum 10 32 | 33 | 1. Restart chrony 34 | 35 | sudo service chrony restart 36 | 37 | 1. Log into the Create® 3 web application and modify the NTP sources (as of Jul 2023 under "Beta Features") to add the following if it does not exist: 38 | 39 | server 192.168.186.3 iburst 40 | 41 | 1. Through the Create® 3 web application, restart the NTPD server (or reboot the robot) if you made changes in the previous step. 42 | 43 | 1. Verify compute NTP server is talking to the Create® 3 44 | 45 | sudo chronyc clients 46 | 47 | 1. Confirm 192.168.182.2 shows non 0 number in NTP column 48 | 49 | Hostname NTP Drop Int IntL Last Cmd Drop Int Last 50 | =============================================================================== 51 | 192.168.186.2 51 0 5 - 32 0 0 - - 52 | 53 | 1. Note that if there is a large jump in the time, the Create® 3 may not accept it until its next reboot. 54 | This can be verified by checking the Create® 3 robot's log for a line like 55 | 56 | user.notice ntpd: ntpd: reply from 192.168.186.3: delay ### is too high, ignoring 57 | If this happens, simply restart the robot (not just the application) via the webserver over the network connection. 58 | 59 | [^1]: ROS 2 is governed by Open Robotics 60 | -------------------------------------------------------------------------------- /docs/setup/data/app-config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/setup/data/app-config.png -------------------------------------------------------------------------------- /docs/setup/data/appconfig.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/setup/data/appconfig.png -------------------------------------------------------------------------------- /docs/setup/data/cmdline.txt: -------------------------------------------------------------------------------- 1 | net.ifnames=0 dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=LABEL=writable rootfstype=ext4 elevator=deadline rootwait modules-load=dwc2,g_ether fixrtc 2 | -------------------------------------------------------------------------------- /docs/setup/data/create3_ros_domain_id.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/setup/data/create3_ros_domain_id.png -------------------------------------------------------------------------------- /docs/setup/data/ethoverusb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/setup/data/ethoverusb.png -------------------------------------------------------------------------------- /docs/setup/data/ethoverusb_step1-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/setup/data/ethoverusb_step1-2.png -------------------------------------------------------------------------------- /docs/setup/data/ethoverusb_step3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/setup/data/ethoverusb_step3.png -------------------------------------------------------------------------------- /docs/setup/data/fastdds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/setup/data/fastdds.png -------------------------------------------------------------------------------- /docs/setup/data/jetson_setup_flow_overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/setup/data/jetson_setup_flow_overview.png -------------------------------------------------------------------------------- /docs/setup/data/logs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/setup/data/logs.png -------------------------------------------------------------------------------- /docs/setup/data/navqplus/flash_hookup_lights.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/setup/data/navqplus/flash_hookup_lights.jpg -------------------------------------------------------------------------------- /docs/setup/data/navqplus/usb_network.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/setup/data/navqplus/usb_network.png -------------------------------------------------------------------------------- /docs/setup/data/navqplus/uuu_emmc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/setup/data/navqplus/uuu_emmc.png -------------------------------------------------------------------------------- /docs/setup/data/navqplus/uuu_ls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/setup/data/navqplus/uuu_ls.png -------------------------------------------------------------------------------- /docs/setup/data/network-config.txt: -------------------------------------------------------------------------------- 1 | # This file contains a netplan-compatible configuration which cloud-init 2 | # will apply on first-boot. Please refer to the cloud-init documentation and 3 | # the netplan reference for full details: 4 | # 5 | # https://cloudinit.readthedocs.io/ 6 | # https://netplan.io/reference 7 | # 8 | # Some additional examples are commented out below 9 | 10 | version: 2 11 | ethernets: 12 | eth0: 13 | dhcp4: true 14 | optional: true 15 | usb0: 16 | dhcp4: false 17 | optional: true 18 | addresses: [192.168.186.3/24] 19 | #wifis: 20 | # wlan0: 21 | # dhcp4: true 22 | # optional: true 23 | # access-points: 24 | # "myhomewifi": 25 | # password: "S3kr1t" 26 | # "myworkwifi": 27 | # password: "correct battery horse staple" 28 | # "workssid": 29 | # auth: 30 | # key-management: eap 31 | # method: peap 32 | # identity: "me@example.com" 33 | # password: "passw0rd" 34 | # ca-certificate: /etc/my_ca.pem 35 | -------------------------------------------------------------------------------- /docs/setup/data/nv-l4t-usb-device-mode-runtime-start.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Copyright (c) 2017-2020, NVIDIA CORPORATION. All rights reserved. 4 | # 5 | # Redistribution and use in source and binary forms, with or without 6 | # modification, are permitted provided that the following conditions 7 | # are met: 8 | # * Redistributions of source code must retain the above copyright 9 | # notice, this list of conditions and the following disclaimer. 10 | # * Redistributions in binary form must reproduce the above copyright 11 | # notice, this list of conditions and the following disclaimer in the 12 | # documentation and/or other materials provided with the distribution. 13 | # * Neither the name of NVIDIA CORPORATION nor the names of its 14 | # contributors may be used to endorse or promote products derived 15 | # from this software without specific prior written permission. 16 | # 17 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY 18 | # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 20 | # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 21 | # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 22 | # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 23 | # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 24 | # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 25 | # OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 | # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | script_dir="$(cd "$(dirname "$0")" && pwd)" 30 | . "${script_dir}/nv-l4t-usb-device-mode-config.sh" 31 | 32 | if [ -f "${script_dir}/IP_ADDRESS_FOR_CREATE3_ROBOT.conf" ]; then 33 | robot_ip_conf_file=${script_dir}/IP_ADDRESS_FOR_CREATE3_ROBOT.conf 34 | cat $robot_ip_conf_file 35 | fi 36 | 37 | /sbin/ifconfig l4tbr0 up 38 | # The interface might lose the address when down. Add it here to make sur 39 | # it's configured. 40 | /sbin/ifconfig l4tbr0 ${net_ip} netmask ${net_mask} 41 | /sbin/ifconfig l4tbr0 add ${net_ipv6} 42 | 43 | # IF the config file for iRobot Create® 3 (IP_ADDRESS_FOR_CREATE3_ROBOT.conf) exists, 44 | # then apply the static IP address (192.168.186.3), instead of enabling DHCP server 45 | if [ -n "$robot_ip_conf_file" ]; then 46 | static_ip_for_robot=`cat $robot_ip_conf_file` 47 | /sbin/ifconfig l4tbr0 $static_ip_for_robot netmask 255.255.255.0 broadcast 192.168.186.255 48 | echo "Static IP address set to $static_ip_for_robot" 49 | else 50 | 51 | # Start a DHCP server so that connected systems automatically receive an IP 52 | # address. This avoids users having to manually configure the connection, and 53 | # also prevents Network Manager on Linux from destroying any manually applied 54 | # configuration. 55 | # 56 | # The DHCP server must be started here, because it won't start if it's told to 57 | # run on an interface that's down. 58 | if [ -n "${net_dhcp_start}" ]; then 59 | echo "### IN" 60 | dhcpd_conf="${script_dir}/dhcpd.conf" 61 | dhcpd_leases="/run/l4t-usb-devmode-dhcpd.leases" 62 | dhcpd_pid="/run/l4t-usb-devmode-dhcpd.pid" 63 | cat > "${dhcpd_conf}" < 2 | 3 | 4 | 5 | 6 | 7 | 8 | SUPER_CLIENT 9 | 10 | 11 | 12 | 13 | 14 |
VM_IP
15 | 11811 16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 | -------------------------------------------------------------------------------- /docs/setup/data/usercfg.txt: -------------------------------------------------------------------------------- 1 | # Place "config.txt" changes (dtparam, dtoverlay, disable_overscan, etc.) in 2 | # this file. Please refer to the README file for a description of the various 3 | # configuration files on the boot partition. 4 | dtoverlay=dwc2,dr_mode=peripheral -------------------------------------------------------------------------------- /docs/setup/discovery-server.md: -------------------------------------------------------------------------------- 1 | # Fast DDS Discovery Server 2 | 3 | This page gives instructions on how to use a Fast DDS discovery server with the Create® 3 robot as a client. 4 | For more information on the Fast DDS discovery server, please refer to the [eProsima documentation](https://fast-dds.docs.eprosima.com/en/latest/fastdds/ros2/discovery_server/ros2_discovery_server.html). 5 | 6 | *We’ll use the term "computer" to refer to any SBC (single board computer), virtual machine, personal computer, etc.* 7 | 8 | ## Configure Server 9 | 10 | 1. Start the discovery server on the computer that you wish to use as your server by replacing with the computer's IP address. 11 | 12 | fastdds discovery -i 0 -l -p 11811 13 | 14 | ![](./data/fastdds.png) 15 | 16 | ## Configure Create® 3 Robot as a Client 17 | !!! important 18 | If you have enabled the discovery server previously and wish to change the Wi-Fi network you are connected to, make sure the discovery server is disabled in the configuration settings **before** connecting it to a **new** Wi-Fi network. 19 | The discovery server can be disabled by unchecking the "Enable Fast DDS discovery server?" checkbox in the [webserver application settings](../../webserver/application/), and then saving and restarting the application. 20 | 21 | 1. Make sure your Create® 3 robot is connected to Wi-Fi. If it isn't, follow the directions [here](../provision/). 22 | 23 | 1. Navigate to the robot’s web server via its IP address. 24 | Go to [webserver application settings](../../webserver/application/) and enable the checkbox for the discovery server. 25 | In the field `Address and port of Fast DDS discovery server`, enter the IP address of your server followed by `:11811` (the default port for the Fast DDS discovery server is `11811`, but it is configurable). 26 | 27 | 1. If you intend on connecting multiple robots to the same discovery server, make sure to give the Create® 3 robot a namespace. 28 | Restart the application after saving all settings. 29 | ![](./data/app-config.png) 30 | 31 | !!! attention 32 | It is recommended you check the [logs](../../webserver/logs/) to confirm the discovery server has been enabled on the robot. ![](./data/logs.png) 33 | 34 | ## Configure Other Devices as Super Clients 35 | When using a discovery server with a Create® 3 Robot, all other devices connected to the discovery server must be set up as super clients in order to communicate with the Create® 3 Robot. 36 | Other devices could be any device that runs ROS 2 and wants to communicate with the Create® 3 Robot. 37 | 38 | 1. Before starting, stop the ROS 2 Daemon with `ros2 daemon stop`. 39 | 40 | 1. Download the .xml file found [here](data/super_client_configuration_file.xml) and replace VM_IP with your device’s IP address. 41 | 42 | 1. Navigate to your device and open terminal. If the super client and server are on the same computer, make sure to open a new terminal (separate terminal from where the server is running). 43 | 44 | 1. Assign your .xml file as your default profile by entering the following. 45 | 46 | export FASTRTPS_DEFAULT_PROFILES_FILE=/path/to/the/xml/profile 47 | 48 | 1. Now, try looking for the Create® 3 topics list by running `ros2 topic list`. 49 | -------------------------------------------------------------------------------- /docs/setup/docker.md: -------------------------------------------------------------------------------- 1 | # Create® 3 Desktop Docker Image 2 | 3 | We provide a Docker image suitable for developing and running Create® 3 applications on your Desktop. 4 | The docker image is named `irobotedu/create3-galactic` and its source code can be found [here](https://github.com/iRobotEducation/create3-docker). 5 | 6 | !!! note 7 | The Docker image can be run on any base OS. However, non Linux-based OS will require custom networking configuration in order to communicate between a Docker container and a remote ROS 2 application. 8 | 9 | ## Description of the Image 10 | 11 | The Create® 3 Docker image is based off the official ROS 2 Docker images and runs an Ubuntu OS. 12 | It contains all the core ROS 2 packages contained in the "desktop" variant (i.e. it includes development tools, core libries and visualization tools). 13 | 14 | The Create® 3 Docker image includes pre-built all the open-source Create® 3 repositories such as: the Create® 3 ROS 2 message interfaces, the Create® 3 simulator (both Gazebo classic and Gazebo ignition) and the Create® 3 examples. 15 | 16 | ## Installing Docker 17 | 18 | Follow the [official instructions](https://docs.docker.com/get-docker/) to setup Docker on your machine. 19 | 20 | ## Starting a Docker container 21 | 22 | The following instructions may vary depending on your base OS and Docker installation mechanism. 23 | 24 | ### Linux 25 | 26 | The following instructions assume that you have followed the [Docker post-installation steps for Linux](https://docs.docker.com/engine/install/linux-postinstall/). 27 | 28 | ```sh 29 | docker run -it --network=host --privileged -e DISPLAY=$DISPLAY irobotedu/create3-galactic bash 30 | ``` 31 | 32 | The `--network=host` option is required in order to allow the Docker container to communicate using ROS 2 with remote applications (e.g. your Create® 3 robot or compute-board). 33 | 34 | The `--privileged -e DISPLAY=$DISPLAY` options are required in order to let the Docker container to access your xhost server and use GUI application (e.g. `rviz` or `gazebo`). 35 | 36 | After you started the docker container, if you want to use GUI application, one (or more) extra steps are necessary. 37 | A simple way is to run the following in a new terminal: 38 | ```sh 39 | xhost +local:docker:CONTAINER_ID 40 | ``` 41 | Where `CONTAINER_ID` can be found either running `head -1 /proc/self/cgroup | cut -d / -f 3` inside the Docker container or by running `docker ps` in a new terminal. 42 | 43 | You can find other ways to enable GUI in docker [here](http://wiki.ros.org/docker/Tutorials/GUI). 44 | As an alternative, you can use the [rocker tool](https://github.com/osrf/rocker) to wrap the `irobotedu/create3-galactic` image and add capabilities to it. 45 | -------------------------------------------------------------------------------- /docs/setup/pi4.md: -------------------------------------------------------------------------------- 1 | This page has moved. 2 | Ubuntu 20.04 and Galactic setup instructions are now located [here](../setup/pi4galactic.md). 3 | Ubuntu 22.04 and Humble setup instructions are now located [here](../setup/pi4humble.md). 4 | -------------------------------------------------------------------------------- /docs/setup/provision.md: -------------------------------------------------------------------------------- 1 | # Connect Create® 3 to Wi-Fi 2 | ## The Basics 3 | Follow the main guide for getting started [here](https://edu.irobot.com/create3-setup). 4 | 5 | ## Select RMW Implementation 6 | If you are planning to use ROS 2[^1], make sure you have selected the matching RMW (ROS 2 middleware) implementation as the rest of the nodes in your system. 7 | This can be found in the Application → Configuration menu in the Create® 3 robot's web server, shown in the below image. 8 | 9 | ![Application Configuration Detail](data/appconfig.png) 10 | 11 | The default RMW for ROS 2 Galactic is Cyclone DDS. 12 | Be sure to click "save" after making any changes, and then restart the application. 13 | !!! attention 14 | **As of Create 3 software version G.2.2, there is a memory leak in Cyclone DDS that can cause the robot to reboot after a few hours of use. Please monitor [this issue](https://github.com/ros2/rmw_cyclonedds/issues/388) for further information. Fast-DDS does not have this problem.** 15 | 16 | See [ROS 2 Middleware Config](xml-config.md) for more information about RMW specific choices and configuration requirements. 17 | 18 | A detailed rundown of the features of the robot webserver can be found on the [Application](../webserver/application.md) page. 19 | 20 | ## Using Multiple Robots 21 | 22 | !!! important 23 | If you plan to use multiple Create® 3 robots connected to the same Wi-Fi network, then **you must follow the [Multi-Robot Setup documentation](multi-robot.md)** 24 | 25 | [^1]: ROS 2 is governed by Open Robotics 26 | -------------------------------------------------------------------------------- /docs/setup/ubuntu2004.md: -------------------------------------------------------------------------------- 1 | # Install ROS 2 Galactic with Create 3 Messages on an Ubuntu 20.04 Machine 2 | 3 | ## Before you start 4 | These directions should work on a machine natively running Ubuntu[^1] 20.04, as well as in a virtualized container within another operating system. 5 | Note that there might be some network setup required if in a virtualized container; for example, RMWs seem to like running in a bridged network configuration rather than a NATted one. 6 | 7 | These directions follow Open Robotics' official documentation on [Installing ROS 2 on Ubuntu Linux](https://docs.ros.org/en/galactic/Installation/Ubuntu-Install-Debians.html), and more detailed information about what the commands below do can be found there. 8 | 9 | !!! important 10 | Some single board computers may have board specific instructions that differ from the step-by-step process outlined below. 11 | These instructions are available for the [NVIDIA® Jetson™](../jetson) and [Raspberry Pi® 4](../pi4galactic). 12 | 13 | ## Step-by-step 14 | 15 | 1. If you haven't already, download and install [Ubuntu® Server 20.04 64-bit](https://releases.ubuntu.com/20.04/ubuntu-20.04.4-live-server-amd64.iso) onto your machine. 16 | 17 | 1. Once logged in, check to ensure that you are using a UTF-8 locale by typing 18 | 19 | echo $LANG 20 | and ensuring "UTF-8" is at the end of the returned string. 21 | 22 | 1. Execute the following blocks of commands to install ROS 2[^2]: 23 | 24 | sudo apt update && sudo apt install -y curl gnupg2 lsb-release build-essential git cmake 25 | then 26 | 27 | sudo curl -ksSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg 28 | echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null 29 | sudo apt update && sudo apt install -y ros-galactic-ros-base python3-colcon-common-extensions python3-rosdep ros-galactic-rmw-fastrtps-cpp ros-galactic-rmw-cyclonedds-cpp ros-galactic-irobot-create-msgs 30 | finally 31 | 32 | echo "source /usr/share/colcon_cd/function/colcon_cd.sh" >> ~/.bashrc 33 | echo "export _colcon_cd_root=/opt/ros/galactic/" >> ~/.bashrc 34 | echo "source /usr/share/colcon_argcomplete/hook/colcon-argcomplete.bash" >> ~/.bashrc 35 | echo "source /opt/ros/galactic/setup.bash" >> ~/.bashrc 36 | 37 | 1. At this point, we recommend setting your default RMW (ROS 2 middleware). The RMW you set here has to match the RMW on your robot, which can be found from its Application Configuration page. More detail on RMW can be found [here](../xml-config). Right now, the Create® 3 robot supports `rmw_cyclonedds_cpp` and `rmw_fastrtps_cpp`. The default for Galactic is `rmw_cyclonedds_cpp`. Depending on your robot's RMW implementation, type one of the following: 38 | 39 | echo "export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp" >> ~/.bashrc 40 | or 41 | 42 | echo "export RMW_IMPLEMENTATION=rmw_fastrtps_cpp" >> ~/.bashrc 43 | 44 | 1. Finally, either log out and log back in, or simply 45 | 46 | source ~/.bashrc 47 | 48 | 1. If both your computer and robot are on the same network, you should now be able to test things out with a `ros2 topic list`. 49 | If this does not work, please refer to [ROS 2 Network Configuration](../xml-config/) for further configuration ideas. 50 | A full Create® 3 API description can be found [here](../../api/ros2). 51 | 52 | [^1]: Ubuntu is a registered trademark of Canonical Ltd. 53 | [^2]: ROS 2 is governed by Open Robotics 54 | -------------------------------------------------------------------------------- /docs/setup/ubuntu2204.md: -------------------------------------------------------------------------------- 1 | # Install ROS 2 Humble with Create 3 Messages on an Ubuntu 22.04 Machine 2 | 3 | ## Before you start 4 | These directions should work on a machine natively running Ubuntu[^1] 22.04, as well as in a virtualized container within another operating system. 5 | Note that there might be some network setup required if in a virtualized container; for example, RMWs seem to like running in a bridged network configuration rather than a NATted one. 6 | 7 | These directions follow Open Robotics' official documentation on [Installing ROS 2 on Ubuntu Linux](https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html), and more detailed information about what the commands below do can be found there. 8 | 9 | !!! important 10 | Some single board computers may have board specific instructions that differ from the step-by-step process outlined below. 11 | These instructions are available for the [NavQPlus](../navqplus) and [Raspberry Pi® 4](../pi4humble). 12 | 13 | ## Step-by-step 14 | 15 | 1. If you haven't already, download and install [Ubuntu® 22.04 64-bit](https://releases.ubuntu.com/22.04/) onto your machine. You may choose either the desktop (for a GUI) or server (for console-only) install. 16 | 17 | 1. Once logged in, check to ensure that you are using a UTF-8 locale by typing 18 | 19 | echo $LANG 20 | and ensuring "UTF-8" is at the end of the returned string. 21 | 22 | 1. Ensure that the [Ubuntu Universe repository](https://help.ubuntu.com/community/Repositories/Ubuntu) is enabled by checking the output of this command: 23 | 24 | apt-cache policy | grep universe 25 | which should output a line like 26 | 27 | 500 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 Packages 28 | release v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=universe,b=amd64 29 | If it does not, execute the following: 30 | 31 | sudo apt update && sudo apt install software-properties-common && sudo add-apt-repository universe 32 | 33 | 1. Add the ROS 2[^2] apt repository, first by installing curl 34 | 35 | sudo apt install curl 36 | then authorizing the Open Robotics GPG key 37 | 38 | sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg 39 | and then adding the repository to your computer's sources list 40 | 41 | echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null 42 | 43 | 1. Make sure your other packages are up to date 44 | 45 | sudo apt update && sudo apt upgrade 46 | 47 | 1. And then install ROS 2. If you have a graphical user environment, use 48 | 49 | sudo apt install -y ros-humble-desktop 50 | otherwise just use the base (barebones) install 51 | 52 | sudo apt install -y ros-humble-ros-base 53 | 54 | 1. Next add the Create® 3 messages: 55 | 56 | sudo apt install -y ros-humble-irobot-create-msgs 57 | 58 | 1. We also recommend installing a few other packages: 59 | 60 | sudo apt install -y build-essential python3-colcon-common-extensions python3-rosdep ros-humble-rmw-cyclonedds-cpp 61 | 62 | 1. In order to have your environment ready to go, we recommend auto-running the following when you open a new session: 63 | 64 | echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc 65 | 66 | 1. At this point, we recommend setting your default RMW (ROS 2 middleware). The RMW you set here has to match the RMW on your robot, which can be found from its Application Configuration page. More detail on RMW can be found [here](../xml-config). Right now, the Create® 3 robot supports `rmw_cyclonedds_cpp` and `rmw_fastrtps_cpp`. The default for Humble is `rmw_fastrtps_cpp`. Depending on your robot's RMW implementation, type one of the following: 67 | 68 | echo "export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp" >> ~/.bashrc 69 | or 70 | 71 | echo "export RMW_IMPLEMENTATION=rmw_fastrtps_cpp" >> ~/.bashrc 72 | 73 | 1. Finally, either log out and log back in, or simply 74 | 75 | source ~/.bashrc 76 | 77 | 1. If both your computer and robot are on the same network, you should now be able to test things out with a `ros2 topic list`. 78 | If this does not work, please refer to [ROS 2 Network Configuration](../xml-config/) for further configuration ideas. 79 | A full Create® 3 API description can be found [here](../../api/ros2). 80 | 81 | [^1]: Ubuntu is a registered trademark of Canonical Ltd. 82 | [^2]: ROS 2 is governed by Open Robotics 83 | -------------------------------------------------------------------------------- /docs/sim/setup.md: -------------------------------------------------------------------------------- 1 | # Using the iRobot® Create® 3 Simulator 2 | 3 | We provide a ROS 2 Gazebo simulation stack for the iRobot® Create® 3 Educational Robot. 4 | Have a look at its [Github repository](https://github.com/iRobotEducation/create3_sim). 5 | The Github repository contains instructions for how to building and running the simulator on your laptop. 6 | 7 | This application completely simulates a Create® 3 robot, thus exposing to the user all the same [ROS 2 APIs](../api/ros2.md) as the real robot. 8 | 9 | You will be able to use the iRobot® Create® 3 Simulator to quickly develop your new applications and eventually run them on the real robot without having to change anything. 10 | -------------------------------------------------------------------------------- /docs/stylesheets/irobot-palette.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --md-default-fg-color: hsla(0, 0%, 0%, 0.87); 3 | --md-default-fg-color--light: hsla(0, 0%, 0%, 0.54); 4 | --md-default-fg-color--lighter: hsla(0, 0%, 0%, 0.32); 5 | --md-default-fg-color--lightest: hsla(0, 0%, 0%, 0.07); 6 | --md-default-bg-color: hsla(0, 0%, 100%, 1); 7 | --md-default-bg-color--light: hsla(0, 0%, 100%, 0.7); 8 | --md-default-bg-color--lighter: hsla(0, 0%, 100%, 0.3); 9 | --md-default-bg-color--lightest: hsla(0, 0%, 100%, 0.12); 10 | 11 | --md-primary-fg-color: #6CB86A; 12 | --md-primary-fg-color--light: #ECB7B7; 13 | --md-primary-fg-color--dark: #90030C; 14 | --md-primary-bg-color: hsla(0, 0%, 100%, 1); 15 | --md-primary-bg-color--light: hsla(0, 0%, 100%, 0.7); 16 | 17 | --md-accent-fg-color: #e95c67; 18 | --md-accent-fg-color--transparent: #e95c67; 19 | --md-accent-bg-color: hsla(0, 0%, 100%, 1); 20 | --md-accent-bg-color--light: hsla(0, 0%, 100%, 0.7); 21 | 22 | 23 | --md-code-fg-color: hsla(200, 18%, 26%, 1); 24 | --md-code-bg-color: hsla(0, 0%, 96%, 1); 25 | 26 | --md-code-hl-color: hsla(#{hex2hsl($clr-yellow-a200)}, 0.5); 27 | --md-code-hl-number-color: hsla(0, 67%, 50%, 1); 28 | --md-code-hl-special-color: hsla(340, 83%, 47%, 1); 29 | --md-code-hl-function-color: hsla(291, 45%, 50%, 1); 30 | --md-code-hl-constant-color: hsla(250, 63%, 60%, 1); 31 | --md-code-hl-keyword-color: hsla(219, 54%, 51%, 1); 32 | --md-code-hl-string-color: hsla(150, 63%, 30%, 1); 33 | --md-code-hl-name-color: var(--md-code-fg-color); 34 | --md-code-hl-operator-color: var(--md-default-fg-color--light); 35 | --md-code-hl-punctuation-color: var(--md-default-fg-color--light); 36 | --md-code-hl-comment-color: var(--md-default-fg-color--light); 37 | --md-code-hl-generic-color: var(--md-default-fg-color--light); 38 | --md-code-hl-variable-color: var(--md-default-fg-color--light); 39 | 40 | --md-typeset-color: var(--md-default-fg-color); 41 | 42 | --md-typeset-a-color: var(--md-primary-fg-color); 43 | 44 | --md-typeset-mark-color: hsla(#{hex2hsl($clr-yellow-a200)}, 0.5); 45 | 46 | --md-typeset-del-color: hsla(6, 90%, 60%, 0.15); 47 | --md-typeset-ins-color: hsla(150, 90%, 44%, 0.15); 48 | 49 | --md-typeset-kbd-color: hsla(0, 0%, 98%, 1); 50 | --md-typeset-kbd-accent-color: hsla(0, 100%, 100%, 1); 51 | --md-typeset-kbd-border-color: hsla(0, 0%, 72%, 1); 52 | 53 | --md-typeset-table-color: hsla(0, 0%, 0%, 0.12); 54 | 55 | --md-admonition-fg-color: var(--md-default-fg-color); 56 | --md-admonition-bg-color: var(--md-default-bg-color); 57 | 58 | --md-footer-fg-color: hsla(0, 0%, 100%, 1); 59 | --md-footer-fg-color--light: hsla(0, 0%, 100%, 0.7); 60 | --md-footer-fg-color--lighter: hsla(0, 0%, 100%, 0.3); 61 | --md-footer-bg-color: hsla(0, 0%, 0%, 0.87); 62 | --md-footer-bg-color--dark: hsla(0, 0%, 0%, 0.32); 63 | } 64 | 65 | .md-grid { 66 | max-width: 85%; 67 | } -------------------------------------------------------------------------------- /docs/webserver/about.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Webserver - About 2 | The about page includes details about the state at the operating system level. 3 | 4 | ![Picture of about page](data/about.png) 5 | 6 | ## IP Address 7 | This is the dotted octet IP address currently used to access this page. 8 | 9 | ## Version 10 | This is the raw version string of the firmware currently loaded on the robot. 11 | 12 | ## SKU 13 | This is the SKU that iRobot uses to identify the Create® 3 robot. 14 | 15 | ## Battery 16 | This includes both the percentage charge of the robot's smart battery, as well as the current capacity in milliamp-hours. 17 | 18 | ## Properties 19 | This section includes iRobot-specific diagnostic information about this robot. 20 | 21 | ## Date 22 | The current date and time on the robot. 23 | 24 | ## Uptime 25 | The amount of time since this robot's last reboot. 26 | 27 | ## Memory 28 | Total RAM and swap space available on the robot. 29 | 30 | ## ifconfig 31 | Output of the `ifconfig` command, including information for all available Ethernet interfaces. 32 | These may include `lo`, `usb0`, `wlan0`, and/or `wlan1` depending on the state of the robot. 33 | Note that `wlan0` and `wlan1` are the same physical device, except that `wlan0` is used when the robot is a station, and `wlan1` is used when it is an access point. 34 | 35 | ## hciconfig 36 | Output of the `hciconfig` command, including information for all available Bluetooth®[^1] interfaces. 37 | This will be blank when the USB/BLE toggle on the [adapter board](../hw/adapter.md) is set to USB. 38 | 39 | ## Factory Reset 40 | A hyperlink to factory reset the robot will appear when the robot is in access point mode. 41 | This will remove all user configuration, but the firmware version will not change. 42 | 43 | [^1]: The Bluetooth® word mark and logos are registered trademarks owned by Bluetooth SIG, Inc. and any use of such marks by iRobot is under license. 44 | [^2]: All other trademarks mentioned are the property of their respective owners. -------------------------------------------------------------------------------- /docs/webserver/application.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Webserver - Application 2 | The Application menu normally has two options: "Configuration" and "Restart Application." 3 | When the robot is acting as an access point, a third option, "Reboot robot," appears. 4 | 5 | ## Restart Application 6 | Clicking "Restart Application" will restart the robot's ROS 2[^1] application. 7 | This will take a few seconds to complete. 8 | Restarting the application is necessary after modifying ROS 2 configuration settings. 9 | Restarting the application will not restart the webserver; they are separate applications. 10 | 11 | ## Reboot Robot 12 | Clicking "Reboot Robot" will completely reboot the robot. 13 | This will take multiple minutes to complete. 14 | 15 | ## Application Configuration 16 | ![Picture of application configuration page](data/app-config.png) 17 | 18 | There are two configuration sections on this page. 19 | After saving either section, it is required to restart the application for changes to take effect. 20 | 21 | ### Main Configuration 22 | The main configuration includes ROS 2 domain ID, namespace, and RMW Implementation. 23 | Basic information about these settings can be found on this docs site both in the [ROS 2 Middleware Configuration](../../setup/xml-config) and [Multi-Robot Setup](../../setup/multi-robot) pages. 24 | Further details on these settings can be found in the official ROS 2 documentation. 25 | 26 | For robots running Galactic >= G.4 and Humble >= H.1, when Fast-DDS is selected as the RMW, it is possible to direct the robot to use an offboard Fast-DDS Discovery server, as well. 27 | Further details on the Fast-DDS Discovery Server can be found [here](https://fast-dds.docs.eprosima.com/en/latest/fastdds/ros2/discovery_server/ros2_discovery_server.html). 28 | 29 | When running Create 3 firmware for Iron, only one middleware selection is available at a time; to switch middleware, it is necessary to install the matching firmware. 30 | 31 | ### Application ROS 2 Parameters File 32 | This is a raw yaml file used for configuring ROS 2 parameters. 33 | The web server will not validate this yaml file; setting it incorrectly may cause the application to fail to start properly. 34 | Details of this will be found in the [logs](../webserver/logs.md). 35 | If this happens, the parameters file can again be edited and saved in the web server in order to correct the problem. 36 | An official ROS 2 tutorial on parameters can be found [here](https://docs.ros.org/en/galactic/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Parameters/Understanding-ROS2-Parameters.html). 37 | 38 | [^1]: ROS 2 is governed by Open Robotics 39 | [^2]: All other trademarks mentioned are the property of their respective owners. 40 | -------------------------------------------------------------------------------- /docs/webserver/connect.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Webserver - Connect 2 | The connect page of the Create® 3 webserver allows the robot's name to be changed, and also is used to provision the robot to a 2.4 GHz Wi-Fi network. 3 | 4 | ![Picture of connect page](data/connect.png) 5 | 6 | The top of the connect page gives the robot's current IPv4 address. 7 | 8 | The "Update Robot Names" box allows the user to change the robot's hostname (which can also be used to find the robot using mDNS) and its Bluetooth name (which can be used to find it using the iRobot Education Bluetooth®[^1] protocol.) 9 | 10 | The "Connect to a 2.4 GHz Wi-Fi Network" box allows the user to connect to any network the robot can perceive. 11 | Clicking on the box to the right of "Type your Wi-Fi network name" should yield a drop-down of all available networks. 12 | 13 | It may be necessary to change the drop-down for additional radio bands, depending on the region in which the robot is used. 14 | If you are using the robot in Japan (JP), please select "Japan;" if you are using the robot in any of (AS, CA, FM, GU, KY, MP, PR, TW, UM, US, or VI), please select "North America." 15 | 16 | [^1]: The Bluetooth® word mark and logos are registered trademarks owned by Bluetooth SIG, Inc. and any use of such marks by iRobot is under license. 17 | [^2]: All trademarks mentioned are the property of their respective owners. -------------------------------------------------------------------------------- /docs/webserver/data/about.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/webserver/data/about.png -------------------------------------------------------------------------------- /docs/webserver/data/app-config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/webserver/data/app-config.png -------------------------------------------------------------------------------- /docs/webserver/data/connect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/webserver/data/connect.png -------------------------------------------------------------------------------- /docs/webserver/data/edit-ntp-conf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/webserver/data/edit-ntp-conf.png -------------------------------------------------------------------------------- /docs/webserver/data/edit-wpa-supp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/webserver/data/edit-wpa-supp.png -------------------------------------------------------------------------------- /docs/webserver/data/home-in-AP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/webserver/data/home-in-AP.png -------------------------------------------------------------------------------- /docs/webserver/data/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/webserver/data/home.png -------------------------------------------------------------------------------- /docs/webserver/data/logs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/webserver/data/logs.png -------------------------------------------------------------------------------- /docs/webserver/data/rmw-profile-override.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/webserver/data/rmw-profile-override.png -------------------------------------------------------------------------------- /docs/webserver/data/serial-config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/webserver/data/serial-config.png -------------------------------------------------------------------------------- /docs/webserver/data/set-datetime.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/webserver/data/set-datetime.png -------------------------------------------------------------------------------- /docs/webserver/data/set-wired-subnet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/webserver/data/set-wired-subnet.png -------------------------------------------------------------------------------- /docs/webserver/data/update-expanded.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/webserver/data/update-expanded.png -------------------------------------------------------------------------------- /docs/webserver/data/update.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iRobotEducation/create3_docs/53f188ffce498133d589f980fc18d38493d0ca84/docs/webserver/data/update.png -------------------------------------------------------------------------------- /docs/webserver/edit-ntp-conf.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Webserver - Edit ntp.conf 2 | The Edit ntp.conf page of the Create® 3 webserver allows the user to modify the robot's NTP daemon configuration file. 3 | 4 | !!!warning 5 | Please note that this is a beta feature, and as such is not supported by the customer service team. 6 | Please exercise caution, as improper use of beta features may result in an inoperable robot. 7 | 8 | ![Picture of edit ntp.conf page](data/edit-ntp-conf.png) 9 | 10 | This page allows the user to directly edit `ntp.conf` on the robot. After pressing "save," the NTP daemon must be [restarted](../webserver/restart-ntpd.md). 11 | 12 | [^1]: All trademarks mentioned are the property of their respective owners. -------------------------------------------------------------------------------- /docs/webserver/forget-wifi.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Webserver - Forget Wi-Fi Network 2 | The "Forget Wi-Fi Network" beta menu option of the Create® 3 webserver instructs the Create® 3 robot to forget about and disconnect from any Wi-Fi networks to which it had been connected. 3 | 4 | !!!warning 5 | Please note that this is a beta feature, and as such is not supported by the customer service team. 6 | Please exercise caution, as improper use of beta features may result in an inoperable robot. 7 | 8 | Selecting the "Forget Wi-Fi Network" option will spawn a pop-up requesting confirmation. 9 | Once confirmed, the robot will forget about any SSIDs to which it has connected, and to immediately disconnect from the `wlan0` inteface if it is currently connected. 10 | If this command is issued over `wlan0`, it will be necessary to communicate with the robot either in AP mode or using Ethernet-over-USB. 11 | 12 | This feature can also be accessed by sending a POST to `/api/forget-wifi`. 13 | 14 | [^1]: All trademarks mentioned are the property of their respective owners. -------------------------------------------------------------------------------- /docs/webserver/home.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Webserver - Home 2 | The home page of the Create® 3 webserver includes the version number of the robot. 3 | 4 | ![Picture of home page](data/home.png) 5 | 6 | When the robot is in access point mode, an "Identify Robot" button appears between the banner and version number. 7 | Pressing this button will cause the robot to emit a chime. 8 | This may be helpful in order to find a particular robot while provisioning multiple robots at once. 9 | 10 | ![Detail of Identify Robot button](data/home-in-AP.png) 11 | 12 | [^1]: All trademarks mentioned are the property of their respective owners. -------------------------------------------------------------------------------- /docs/webserver/logs.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Webserver - Logs 2 | The logs page of the Create® 3 webserver provides an interface for accessing the robot's system log. 3 | 4 | ![Picture of logs page](data/logs.png) 5 | 6 | Note that the logs are lost when the robot loses power. 7 | Clicking "Download Logs" will pull a raw text file including the logs show on this page; this can also be accessed at `/logs-raw` on the webserver. 8 | 9 | [^1]: All trademarks mentioned are the property of their respective owners. -------------------------------------------------------------------------------- /docs/webserver/overview.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Webserver Overview 2 | 3 | !!! tip 4 | If this is your first time using the robot's web server, it's important to run through [initial setup](https://edu.irobot.com/create3-setup). 5 | 6 | The Create® 3 robot runs a configuration webserver for modifying settings of the robot. 7 | This is a separate process from its ROS 2[^1] application; it is running regardless of the status of that application. 8 | The webserver can be accessed via the robot's `usb0` (Ethernet over USB host), `wlan0` (provisioned to an external access point), or `wlan1` (robot as its own access point) interfaces. 9 | The robot has a fixed IP address of 192.168.186.2 over its `usb0` interface, and a fixed IP address of 192.168.10.1 over its `wlan1` interface. 10 | The robot will get an IP address over DHCP as served by your network on its `wlan0` interface. 11 | The webserver is available over http (port 80) in a browser by navigating to its IP address on whichever interface is active. 12 | 13 | !!! attention 14 | It is not recommended to run the robot's access point while also controlling the robot via ROS 2 or the iRobot Education Bluetooth®[^2] protocol. 15 | 16 | Please use the menu to navigate between sections of the webserver, or else navigate directly to the sections below: 17 | 18 | - [Home](../webserver/home.md) 19 | - [Connect](../webserver/connect.md) 20 | - [Update](../webserver/update.md) 21 | - [Logs](../webserver/logs.md) 22 | - [Application](../webserver/application.md) 23 | - Beta Features 24 | - [Serial Forwarder](../webserver/serial-config.md) 25 | - [Set Date and Time](../webserver/set-datetime.md) 26 | - [Edit ntp.conf](../webserver/edit-ntp-conf.md) 27 | - [Restart ntpd](../webserver/restart-ntpd.md) 28 | - [Set Wired Subnet](../webserver/set-wired-subnet.md) 29 | - [Override RMW Profile](../webserver/rmw-profile-override.md) 30 | - [About](../webserver/about.md) 31 | 32 | [^1]: ROS 2 is governed by Open Robotics 33 | [^2]: The Bluetooth® word mark and logos are registered trademarks owned by Bluetooth SIG, Inc. and any use of such marks by iRobot is under license. 34 | [^3]: All other trademarks mentioned are the property of their respective owners. 35 | -------------------------------------------------------------------------------- /docs/webserver/restart-ntpd.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Webserver - Restart ntpd 2 | The "Restart ntpd" beta menu option of the Create® 3 webserver instructs the Create® 3 robot to resynchronize its clock. 3 | 4 | !!!warning 5 | Please note that this is a beta feature, and as such is not supported by the customer service team. 6 | Please exercise caution, as improper use of beta features may result in an inoperable robot. 7 | 8 | Selecting the "Restart ntpd" option will spawn a pop-up requesting confirmation. 9 | Restarting the ntp daemon will trigger a time resynchronization with the first time server found. 10 | 11 | This feature can also be accessed by sending a POST to `/api/restart-ntpd`. 12 | 13 | [^1]: All trademarks mentioned are the property of their respective owners. -------------------------------------------------------------------------------- /docs/webserver/rmw-profile-override.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Webserver - Override RMW Profile 2 | The Override RMW Profile page of the Create® 3 webserver allows the user to override the robot's inbuilt RMW profiles for its middleware. 3 | 4 | !!!warning 5 | Please note that this is a beta feature, and as such is not supported by the customer service team. 6 | Please exercise caution, as improper use of beta features may result in an inoperable robot. 7 | 8 | ![Picture of Override RMW Profile page](data/rmw-profile-override.png)

9 | 10 | ## Usage 11 | This page allows the user to replace the robot's middleware XML profile file with one of their choosing. 12 | Leave this box blank in order to use the robot's default profile file. 13 | 14 | !!!important 15 | After pressing "save," the application must be [restarted](../application/#restart-application). 16 | 17 | More details about the XML configuration file can be found on respective vendor sites: 18 | 19 | * [Cyclone DDS](https://github.com/eclipse-cyclonedds/cyclonedds/blob/master/docs/manual/options.md) 20 | * [Fast DDS](https://fast-dds.docs.eprosima.com/en/latest/fastdds/xml_configuration/xml_configuration.html) 21 | 22 | ## Example for Cyclone DDS 23 | Replace `INTERFACE` with interface(s) of choice (for example, `usb0,wlan0` to communicate on both the USB and Wi-Fi interfaces) 24 | 25 | ```xml 26 | 27 | 28 | 29 | INTERFACE 30 | 31 | 32 | 33 | ``` 34 | 35 | ## Example for Fast DDS 36 | ```xml 37 | 38 | 39 | 40 | 41 | udp_transport 42 | UDPv4 43 | 65000 44 | 45 | 46 | 47 | 48 | 49 | 50 | udp_transport 51 | 52 | false 53 | 54 | 55 | 56 | ``` 57 | 58 | [^1]: All trademarks mentioned are the property of their respective owners. -------------------------------------------------------------------------------- /docs/webserver/serial-config.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Webserver - Serial Configuration 2 | The Serial Configuration page of the Create® 3 webserver configures a feature which can forward certain USB devices over a socket. 3 | 4 | !!!warning 5 | Please note that this is a beta feature, and as such is not supported by the customer service team. 6 | Please exercise caution, as improper use of beta features may result in an inoperable robot. 7 | 8 | ![Picture of serial configuration page](data/serial-config.png) 9 | 10 | To enable this feature on the robot the first time, it is necessary to navigate to this page, press save, and then reboot the robot. 11 | Subsequent saved changes on this page do not require a reboot; they simply require an unplug-plug sequence to trigger the daemon. 12 | 13 | The "TTY device to forward" box tells the Create 3 robot what device to forward; this is the device's name as it would appear in `/dev`. 14 | Plugging a supported device into the robot should produce messages in the log from the kernel, from which this device name can be found. 15 | 16 | The "baud rate" box should be set to match the device in question. 17 | 18 | The "external port number" can be set to anything, as long as it is `8883`. 19 | The port number may become more configurable when this feature comes out of beta. 20 | 21 | [^1]: All trademarks mentioned are the property of their respective owners. -------------------------------------------------------------------------------- /docs/webserver/set-datetime.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Webserver - Set Date and Time 2 | The Set Date and Time page of the Create® 3 webserver allows the user to directy change the robot's date and time. 3 | 4 | !!!warning 5 | Please note that this is a beta feature, and as such is not supported by the customer service team. 6 | Please exercise caution, as improper use of beta features may result in an inoperable robot. 7 | 8 | ![Picture of set date and time page](data/set-datetime.png) 9 | 10 | The page first shows the current date and time on the robot on load. 11 | Simply change the date and time and click "save" to save. 12 | 13 | This feature can also be accessed by sending a POST to `/api/set-datetime/newdatetime={YYYY-MM-DDThh:mm:ss}`. 14 | 15 | [^1]: All trademarks mentioned are the property of their respective owners. -------------------------------------------------------------------------------- /docs/webserver/set-wired-subnet.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Webserver - Set Wired Subnet 2 | The Set Wired Subnet page of the Create® 3 webserver allows the user to change the robot's /24 subnet within the class C private address area. 3 | 4 | !!!warning 5 | Please note that this is a beta feature, and as such is not supported by the customer service team. 6 | Please exercise caution, as improper use of beta features may result in an inoperable robot. 7 | 8 | 9 | ![Picture of set wired subnet page](data/set-wired-subnet.png) 10 | 11 | This page allows the user to change the robot's /24 subnet within the class C private address area (192.168.nnn.0/24). 12 | After pressing "save," the robot must have its power cycled in order for the change to be made. 13 | 14 | [^1]: All trademarks mentioned are the property of their respective owners. -------------------------------------------------------------------------------- /docs/webserver/update.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Webserver - Update 2 | The update page of the Create® 3 webserver provides an interface for updating the robot's firmware. 3 | 4 | ![Picture of update page](data/update.png) 5 | 6 | The top of the connect page gives the robot's current firmware version, calling out the robot's current ROS 2[^1] version. 7 | 8 | When the robot is on the Internet, a button will appear at the top of the page which should cause the robot to download the most recent update from iRobot's web site and then flash it to the robot. 9 | A drop-down box is available to select the latest firmware release for available ROS 2 versions. 10 | The default selection will be the latest firmware release for the currently installed ROS 2 version. 11 | 12 | If a specific firmware version is needed, there is a hyperlink which will expand the menu in order to allow the user to upload firmware of their choosing. 13 | 14 | ![Picture of expanded update page](data/update-expanded.png) 15 | 16 | Clicking the "choose file" button will allow the user to select a local firmware file; once selected, click "upload file and update" to begin the process. 17 | 18 | This video outlines the steps in detail: 19 |

20 |
21 |
22 | 23 |
24 |
25 |

26 | 27 | [^1]: ROS 2 is governed by Open Robotics 28 | [^2]: All trademarks mentioned are the property of their respective owners. -------------------------------------------------------------------------------- /docs/webserver/wpa-supp-override.md: -------------------------------------------------------------------------------- 1 | # iRobot® Create® 3 Webserver - Override wpa_supplicant.conf 2 | The wpa_supplicant override page of the Create® 3 webserver allows the user to replace the normal provisioning workflow by supplying a wpa_supplicant.conf file to the robot. 3 | 4 | !!!warning 5 | Please note that this is a beta feature, and as such is not supported by the customer service team. 6 | Please exercise caution, as improper use of beta features may result in an inoperable robot. 7 | 8 | ![Picture of edit wpa_supplicant.conf page](data/edit-wpa-supp.png) 9 | 10 | To access this page, it is necessary to manually navigate to the `/wpa-supp-override` URL on the robot. 11 | This page is not accessible from the "beta menu" because it conflicts with the normal provisioning workflow of the robot in a way that could be confusing if activated by accident. 12 | 13 | This page allows the user to directly change `wpa_supplicant.conf` on the robot. 14 | This file is read in ONLY at boot time. 15 | Any other provisioning done through the [normal workflow](../webserver/connect.md) will be ignored. 16 | After pressing "save," the robot must be rebooted for the supplied wpa_supplicant.conf file to be used. 17 | To revert to the normal provisioning workflow, either delete the text of the file from this page, save, and reboot; or factory reset the robot. 18 | 19 | Here is an example file: 20 | ``` 21 | network={ 22 | ssid="MyAwesomeNetwork" 23 | psk="$3kr1tP4s$w0rD!" 24 | priority=2 25 | scan_ssid=1 26 | } 27 | network={ 28 | ssid=5461686c65656e53686168616e4172656e 29 | psk=e6fc52f4df9d9dfb32b149e3b6afd324d7ecc7db3852b47bb2a953d9aaca8b02 30 | priority=1 31 | scan_ssid=1 32 | } 33 | 34 | eapol_version=1 35 | fast_reauth=1 36 | ap_scan=1 37 | filter_ssids=1 38 | ctrl_interface=/var/run/wpa_supplicant 39 | ctrl_interface_group=apps 40 | ``` 41 | 42 | [^1]: All trademarks mentioned are the property of their respective owners. -------------------------------------------------------------------------------- /model_image_generation.txt: -------------------------------------------------------------------------------- 1 | numpy-stl==2.17.1 2 | Pillow==9.0.1 3 | matplotlib==3.5.1 4 | vtkplotlib==2.0.0 5 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | Jinja2==3.1.6 2 | mkdocs-macros-plugin==0.7.0 3 | GitPython==3.1.41 4 | -------------------------------------------------------------------------------- /theme_overrides/partials/footer.html: -------------------------------------------------------------------------------- 1 | {% import "partials/language.html" as lang with context %} 2 | --------------------------------------------------------------------------------