|irobot_create3|
================
|irobot_create3| is a mobile robotics platform, which developers can use
to gain hands-on experience with the technologies and concepts that are
foundational to the field of autonomous mobile robots. This practical
understanding is invaluable for those looking to enter the robotics
industry or further their knowledge in this rapidly evolving field.
Before starting, review the |irobot_create3_documentation| to be able to
perform the configuration changes needed for the tutorial.
Prerequisites
-------------
Complete the :doc:`../../../gsg_robot/index` before continuing.
|irobot_create3| hardware extensions
------------------------------------
|irobot_create3| contains a compute unit running |ros| that provides
access to the on-board sensors and actuators. For this tutorial, the
following modifications have been applied to the robot:
- two support layers added on top of the robot,
- |intel| board mounted on the bottom layer,
- |realsense| camera mounted on the front of the top layer and
connected to a USB port on the |intel| board,
- |slamtec_rplidar| 2D (|slamtec_rplidar_a3| or |slamtec_rplidar_a2m8|) sensor on a mount in the center of the
top layer and connected to two USB ports on the |intel| board,
- custom battery in the cargo bay to power the |intel| board and
accessories, namely the camera and the lidar,
- an Ethernet adapter connected to the |irobot_create3| adapter board
and to the |intel| board,
- a rear caster wheel attached to the cargo bay, as described in the
`iRobot® Create® 3 Mechanical System
`__
documentation.
.. figure:: ../../../images/iRobot/IAF1-iRobot-Create-3-MTL-Custom-setup-front-view-without-static-stand.jpg
:width: 500px
:align: center
|irobot_create3| robot front view.
.. figure:: ../../../images/iRobot/IAF1-iRobot-Create-3-MTL-Custom-setup-back-view-2.jpg
:width: 500px
:align: center
|irobot_create3| robot rear view.
|irobot_create3| software configuration
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Update the robot to use the latest |l_ros| firmware and configure it
to access your WiFi network following the
`iRobot® Create® 3 Setup
`__ documentation.
With the robot connected to your WiFi network continue configuring it
using its web interface. Refer to the |irobot_create3_documentation| for the exact
steps to follow.
Wired (Ethernet) network
........................
The |intel| board and the compute unit of the |irobot_create3| should be
connected using an Ethernet adapter with a USB Type-C connector. The
USB Type-C plug should be connected to the adapter board of the
|irobot_create3|, while the |intel| board should be connected to the
Ethernet adapter using an RJ-45 cable.
.. figure:: ../../../images/iRobot/iRobot-Create-3-Ethernet-connection.jpg
:width: 600px
:align: center
Ethernet via USB connection between |irobot_create3| adapter board
and |intel| board.
The |irobot_create3| robot is configured to use the address
``192.168.186.2/24`` on the USB interface. You can change the network
part of the address by following the instructions on page
|irobot_create3_webserver_set_wired_subnet|.
On the |intel| board, the network interface connected to the robot
has to be configured with a static IP address of the same subnet.
NTP server
..........
Time synchronization is very important in |ros|. For this reason, the
|irobot_create3| includes an NTP server, which can be configured as described on page
`iRobot® Create® 3 Webserver - Edit ntp.conf
`__.
Alternatively, you can set up an NTP server on the |intel| board by following
the |irobot_create3| documentation `Set up NTP on compute board
`__.
Use the IP address of the Ethernet interface connected to the robot.
|ros| Middleware (RMW) Configuration & Fast DDS discovery server
................................................................
To define what |ros| middleware implementation shall be used by the
|irobot_create3|, follow the configuration guidelines on page
|irobot_create3_webserver_application|.
Set the RMW_IMPLEMENTATION option to ``rmw_fastrtps_cpp``, as shown in
the figure below.
.. figure:: ../../../images/iRobot/iRobot-create3-ROS-configuration.png
:align: center
|irobot_create3| |l_ros| application configuration page. On this
robot the |irobot_create3_webserver_set_wired_subnet|
is set to ``192.168.99.2``, Fast DDS discovery server is enabled
and runs on the |intel| board reachable at IP ``192.168.99.10``
over the Ethernet connection. |ros| Domain ID is set but it is not
used when the discovery server is enabled.
To speed up node discovery, enable the
`iRobot® Create® 3 Fast DDS Discovery Server
`__.
Use the IP address set above for the |intel| board on the USB
connection to the |irobot_create3| as the Fast DDS Discovery Server IP
address.
.. note::
When the discovery server is enabled, the ``ROS_DOMAIN_ID`` is not used.
Robot namespace
...............
Set a |ros| namespace (e.g., ``/robot2``) for your robot, as described on page
|irobot_create3_webserver_application|. This value should be passed to the
launch file as argument ``irobot_ns``.
|lp_amr| Tutorials based on the |irobot_create3|
---------------------------------------------------
.. toctree::
:maxdepth: 1
../navigation/wandering_app/wandering-irobot-tutorial
../navigation/follow_me/Tutorials/followme-on-irobot