iRobot® Create® 3

iRobot® Create® 3 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® Create® 3 documentation to be able to perform the configuration changes needed for the tutorial.

iRobot® Create® 3 hardware extensions

iRobot® Create® 3 contains a compute unit running ROS 2 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,

  • Intel® RealSense™ camera mounted on the front of the top layer and connected to a USB port on the Intel® board,

  • Slamtec RPLIDAR 2D (A3 or A2M8) 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® Create® 3 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.

../../../_images/IAF1-iRobot-Create-3-MTL-Custom-setup-front-view-without-static-stand.jpg

iRobot® Create® 3 robot front view.

../../../_images/IAF1-iRobot-Create-3-MTL-Custom-setup-back-view-2.jpg

iRobot® Create® 3 robot rear view.

iRobot® Create® 3 software configuration

Update the robot to use the latest ROS* 2 Humble firmware and configure it to access your WiFi network following the iRobot® Create® 3 Set Up documentation.

With the robot connected to your WiFi network continue configuring it using its web interface. Refer to the iRobot® Create® 3 documentation for the exact steps to follow.

Wired (Ethernet) network

The Intel® board and the compute unit of the iRobot® Create® 3 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® Create® 3, while the Intel® board should be connected to the Ethernet adapter using an RJ-45 cable.

../../../_images/iRobot-Create-3-Ethernet-connection.jpg

Ethernet via USB connection between iRobot® Create® 3 adapter board and Intel® board.

The iRobot® Create® 3 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® Create® 3 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 2. For this reason, the iRobot® Create® 3 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® Create® 3 documentation Setup NTP on compute board. Use the IP address of the Ethernet interface connected to the robot.

ROS 2 Middleware (RMW) Configuration & Fast DDS discovery server

To define what ROS 2 middleware implementation shall be used by the iRobot® Create® 3, follow the configuration guidelines on page iRobot® Create® 3 Webserver - Application. Set the RMW_IMPLEMENTATION option to rmw_fastrtps_cpp, as shown in the figure below.

../../../_images/iRobot-create3-ROS-configuration.png

iRobot® Create® 3 ROS* 2 Humble application configuration page. On this robot the iRobot® Create® 3 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 2 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® Create® 3 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 2 namespace (e.g., /robot2) for your robot, as described on page iRobot® Create® 3 Webserver - Application. This value should be passed to the launch file as argument irobot_ns.

iRobot® Create® 3 Wandering tutorial

This tutorial presents the Wandering application running on an iRobot® Create® 3 mobile robotics platform extended with an Intel® compute board, an Intel® RealSense™ camera and a Slamtec RPLIDAR 2D lidar.

The tutorial uses the Intel® RealSense™ camera and the Slamtec RPLIDAR 2D lidar for both mapping with RTAB-Map and navigation with Nav2. For navigation, Intel® ground floor segmentation is used for segmenting ground level and remove it from the Intel® RealSense™ camera pointcloud.

Watch the video for a demonstration of the iRobot® Create® 3 navigating in a testing playground:

Intel® board connected to iRobot® Create® 3

Follow the instructions on page iRobot® Create® 3 - Network Recommendations to set up an Ethernet over USB connection and to configure the network device on the Intel® board. Use an IP address of the same subnet as used on the iRobot® Create® 3.

Check that the iRobot® Create® 3 is reachable over the Ethernet connection. Output on the robot with the configuration from the image above:

$ ping -c 3 192.168.99.2
PING 192.168.99.2 (192.168.99.2) 56(84) bytes of data.
64 bytes from 192.168.99.2: icmp_seq=1 ttl=64 time=1.99 ms
64 bytes from 192.168.99.2: icmp_seq=2 ttl=64 time=2.31 ms
64 bytes from 192.168.99.2: icmp_seq=3 ttl=64 time=2.02 ms

--- 192.168.99.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 1.989/2.105/2.308/0.144 ms
Copy to clipboard

Install the ros-humble-wandering-irobot-tutorial package on the Intel® board connected to the robot.

apt install ros-humble-wandering-irobot-tutorial
Copy to clipboard

Start the discovery server in a new terminal:

fastdds discovery --server-id 0
Copy to clipboard

In a new terminal set the environment variables for ROS 2 to use the discovery server:

export ROS_DISCOVERY_SERVER=127.0.0.1:11811
export ROS_SUPER_CLIENT=true
unset ROS_DOMAIN_ID
Copy to clipboard

Check that the setup is correct by listing the ROS 2 topics provided by the robot:

ros2 topic list
Copy to clipboard

The iRobot® Create® 3 topics should be listed:

/parameter_events
/robot2/battery_state
/robot2/cliff_intensity
/robot2/cmd_audio
/robot2/cmd_lightring
/robot2/cmd_vel
...
/robot2/tf
/robot2/tf_static
/robot2/wheel_status
/robot2/wheel_ticks
/robot2/wheel_vels
/rosout
Copy to clipboard

Note

If only /parameter_events and /rosout topics are listed then the communication between the robot and the Intel® board is not working. Check the iRobot® Create® 3 documentation to troubleshoot the issue.

Start the tutorial using its launch file; provide the namespace set on the robot in the argument irobot_ns:

ros2 launch wandering_irobot_tutorial wandering_irobot.launch.py irobot_ns:=/robot2
Copy to clipboard

To use ros2 cli utilities, e.g. ros2 topic, ros2 node, set the environment variables above before running the commands.