Create Your Own Robot Kit¶
This tutorial describes how to create an autonomous mobile robot capable of exploring and mapping an area by adding the an Intel® compute system, adding a Intel® RealSense™ camera on top of any robot base, and using the Intel® Robotics SDK software.
You can use the Robot Teleop Using a Keyboard ROS 2 node to validate that the robot kit hardware setup was done correctly.
Requirements¶
Hardware Requirements¶
The robot base should contain:
Intel® compute system with Intel® Robotics SDK installed
Intel® RealSense™ camera
Robot base support (chassis) for the Intel® compute system and the Intel® RealSense™ camera
Wheels
Motor
Motor controller
Batteries for all components
Software Requirements¶
The robot base should have a ROS 2 node capable of:
Publishing information from the motor controller firmware into ROS 2 topics like wheel odometry
Getting information from other ROS 2 nodes and transmitting this data to the motor controller firmware, for example, receiving movement commands from ROS 2 Navigation 2 stack on the cmd_vel topic
Providing robot specific information like the tf tree data with correct tf transformations, for example,
odom
andbase_link
and their transformationsWhen using multiple robots, it is useful to be able to change these names for each robot like
robot1_odom
androbot1_base_link
(more information can be found here)
Note
This ROS 2 node runs on the compute system and gets information from the motor robot controller via a wire connection, usually a USB connection.
Steps To Create Your Own Robot Kit¶
Step 1: Prerequisites¶
To achieve a working autonomous mobile robot, follow the instructions of the manufacturer.
The typical assembly consists of the following steps:
Mount the the motors, to the lower chassis board and assemble the wheels
Fix the motor controller on the chassis board and connect it with the motors
Attach the Intel® RealSense™ camera and the SSD drive to the upper chassis board
Mount the Intel® compute system to the the upper chassis board
Connect the two chassis boards
Establish a connection between the Intel® compute system and both Intel® RealSense™ camera and motor controller via USB
Attach the the Intel® compute system and the motor controller to a power source
Power the Intel® compute system using a power source
Switch on the motor controller power switch
Step 2: Integration into Intel® Robotics SDK¶
A robot base ROS 2 node can be started on the native system OS or inside a Docker* container. To ensure proper functionality, ensure that both the robot base node and the rest of the Intel® Robotics SDK pipeline are configured with the same ROS_DOMAIN_ID.
Step 3: Robot Base Node ROS 2 Node¶
Introduction to Robotic Base Node¶
The Intel® Robotics SDK pipeline assumes that the robot base ROS 2 node:
Publishes
odom
andbase_link
odom
is used by the Navigation 2 package and others to get information from sensors, especially the wheel encoders. See this Navigation 2 tutorial on odometry for more information.base_link
represents the center of the robot to which all other links are connected.
Creates the transform between
odom
andbase_link
Is subscribed to
cmd_vel
which is used by the Navigation 2 package to give instructions to the robot like spin in place or move forward
The Intel® Robotics SDK provides the following examples with the ros-humble-aaeon-ros2-amr-interface
Deb package:
/opt/ros/humble/share/ros2_amr_interface/params/aaeon_node_params_uncalibrated_imu.yaml
/opt/ros/humble/share/ros2_amr_interface/params/aaeon_node_params.yaml
These samples are for the AAEON UP Xtreme* i11 Robotic Development Kit.
Robotic Base Node Deep Dive¶
This section details the commands that are needed for starting up the motor controller of an AAEON UP Xtreme* i11 Robotic Development Kit.
Using the AAEON UP Xtreme* i11 Robotic Development Kit as a reference and starting it’s node like this:
Ensure that the
ros-humble-aaeon-ros2-amr-interface
Deb package is installed.Check the device name of the motor controller.
The Output should contain the
ch341-uart
device providing the interface to the motor controller board.Ensure the AAEON UP Xtreme* i11 Robotic Development Kit node configuration file has the proper USB device configured as value of
port_name
.Start the motor control node.
AAEON_NODE_CONFIG_FILE=/opt/ros/humble/share/ros2_amr_interface/params/aaeon_node_params.yaml # Launch the AAEON Robot Motor Board Interface ros2 run ros2_amr_interface amr_interface_node --ros-args \ --params-file $AAEON_NODE_CONFIG_FILE \ --remap /amr/cmd_vel:=/cmd_vel \ --remap /amr/battery:=/sensors/battery_state
You can check the following:
ROS 2 topics
ros2 topic list # The result for UP Xtreme i11 Robotic Kit is similar to: # /amr/cmd_vel # /amr/imu/raw # /amr/initial_pose # /amr/odometry # /parameter_events # /rosout # /sensors/battery_state # /tf # The result for the Pengo robot contains multiple topics but the crucial to this pipeline are: # /cmd_vel # /joint_states # /rosout # /odom # /parameter_events # /tf
odom
andbase_link
frames