Usage Guide#
1. Prerequisites#
1.1 Hardware Requirements#
Development Board:
One of the supported NXP boards (FRDM i.MX 8M Plus, i.MX 8M Plus EVK or i.MX 95 EVK)
USB Type-C cable for debug UART
USB Type-C cable for power (with PD adapter)
microSD card (16 GB or larger, Class 10 recommended)
Ethernet cable (for network connectivity)
Host PC:
Ubuntu 24.04 or later
At least 400 GB free disk space (for building from source)
8 GB RAM minimum (16 GB recommended)
1.2 Software Requirements#
On Host PC:
Terminal application (minicom, screen, or PuTTY)
SSH client
UUU (Universal Update Utility) for flashing images
Git and repo tool (for building from source)
2. Getting Started Guide#
See the getting started guide for your board:
3. Network Configuration and SSH Access#
3.1 Overview#
Instead of using multiple USB serial connections, you can configure the board’s network interface and use SSH to establish multiple terminal sessions from your host PC. This approach provides more flexibility and allows you to work with the board remotely.
3.2 Configure Board Network Interface#
Method Using Serial Console (One-time Setup)#
1. Connect to the board via serial console.
2. Log in to the board:
Default username:
rootDefault password: (usually no password, just press Enter)
3. Check the available network interfaces:
ip addr show
Common interfaces:
eth0oreth1- Ethernetwlan0- WiFi (if using IW612 module on FRDM board)
4. Configure static IP address for Ethernet:
# Set IP address
ifconfig eth0 192.168.1.100 netmask 255.255.255.0 up
# Or use the 'ip' command
ip addr add 192.168.1.100/24 dev eth0
ip link set eth0 up
5. Verify the configuration:
ip addr show eth0
ping 192.168.1.1
3.3 Configure the Host PC Network#
Linux Host#
Temporary configuration:
sudo ip addr add 192.168.1.1/24 dev eth0
sudo ip link set eth0 up
Windows Host#
Open Network and Sharing Center.
Click Properties on your Ethernet adapter.
Select Internet Protocol Version 4 (TCP/IPv4).
Click Properties.
Select Use the following IP address:
IP address:
192.168.1.1Subnet mask:
255.255.255.0
Click OK.
3.4 Connect via SSH from Host PC.#
Test the Network Connectivity#
# From host PC
ping 192.168.1.100
SSH Connection#
From Linux:
# Connect as root ssh root@192.168.1.100
From Windows:
Use PuTTY or Windows Terminal:
# Windows 10/11 with OpenSSH ssh root@192.168.1.100
First-time connection:
You’ll see a message about host authenticity.
Type
yesto continue.Enter password if prompted (default: no password for root).
3.5 Open Multiple SSH Sessions#
You can now open multiple terminal windows simultaneously for different ROS 2 tasks:
Terminal 1 - ROS 2 Core:
ssh root@192.168.1.100
source /opt/ros/jazzy/setup.bash
Terminal 2 - ROS 2 Nodes:
ssh root@192.168.1.100
source /opt/ros/jazzy/setup.bash
Terminal 3 - Monitoring/Debugging:
ssh root@192.168.1.100
source /opt/ros/jazzy/setup.bash
ros2 topic list
Terminal 4 - System Commands:
ssh root@192.168.1.100
top
4. ROS 2 Quick Start#
4.1 Overview#
This section provides basic ROS 2 commands to verify your installation and get started with ROS 2 development on the development boards.
4.2 Setup ROS 2 Environment#
Every time you open a new terminal, you must source the ROS 2 setup script:
source /opt/ros/jazzy/setup.bash
Tip: Add this to your ~/.bashrc for automatic setup:
echo "source /opt/ros/jazzy/setup.bash" >> ~/.bashrc
source ~/.bashrc
4.3 Verify ROS 2 Installation#
Check ROS 2#
ros2
Expected output:
usage: ros2 [-h] [--use-python-default-buffering]
Call `ros2 <command> -h` for more detailed usage. ...
ros2 is an extensible command-line tool for ROS 2.
options:
-h, --help show this help message and exit
--use-python-default-buffering
Do not force line buffering in stdout and instead use the python default
buffering, which might be affected by PYTHONUNBUFFERED/-u and depends on
whatever stdout is interactive or not
Commands:
action Various action related sub-commands
bag Various rosbag related sub-commands
component Various component related sub-commands
daemon Various daemon related sub-commands
doctor Check ROS setup and other potential issues
interface Show information about ROS interfaces
launch Run a launch file
lifecycle Various lifecycle related sub-commands
multicast Various multicast related sub-commands
node Various node related sub-commands
param Various param related sub-commands
pkg Various package related sub-commands
run Run a package specific executable
security Various security related sub-commands
service Various service related sub-commands
topic Various topic related sub-commands
wtf Use `wtf` as alias to `doctor`
Check Available ROS 2 Commands#
ros2 --help
List Installed ROS 2 Packages#
ros2 pkg list
4.4 Basic ROS 2 Commands#
4.4.1 Working with Nodes#
List running nodes:
ros2 node list
Get node information:
ros2 node info /node_name
4.4.2 Working with Topics#
List all topics:
ros2 topic list
List topics with types:
ros2 topic list -t
Echo topic messages:
ros2 topic echo /topic_name
Get topic information:
ros2 topic info /topic_name
Publish to a topic:
ros2 topic pub /topic_name std_msgs/msg/String "data: 'Hello ROS 2'"
Monitor topic frequency:
ros2 topic hz /topic_name
4.4.3 Working with Services#
List all services:
ros2 service list
List services with types:
ros2 service list -t
Call a service:
ros2 service call /service_name std_srvs/srv/Empty
Get service type:
ros2 service type /service_name
4.4.4 Working with Parameters#
List parameters:
ros2 param list
Get parameter value:
ros2 param get /node_name parameter_name
Set parameter value:
ros2 param set /node_name parameter_name value
4.4.5 Working with Actions#
List all actions:
ros2 action list
Get action information:
ros2 action info /action_name
Send action goal:
ros2 action send_goal /action_name action_type goal
4.5 ROS 2 Demo Examples#
Example 1: Talker and Listener (C++)#
Terminal 1 - Start talker:
source /opt/ros/jazzy/setup.bash
ros2 run demo_nodes_cpp talker
Terminal 2 - Start listener:
source /opt/ros/jazzy/setup.bash
ros2 run demo_nodes_cpp listener
Terminal 3 - Monitor the topic:
source /opt/ros/jazzy/setup.bash
ros2 topic echo /chatter
Example 2: Talker and Listener (Python)#
Terminal 1 - Start talker:
source /opt/ros/jazzy/setup.bash
ros2 run demo_nodes_py talker
Terminal 2 - Start listener:
source /opt/ros/jazzy/setup.bash
ros2 run demo_nodes_py listener
4.6 Useful ROS 2 Environment Variables#
Check ROS Domain ID#
echo $ROS_DOMAIN_ID
Set ROS Domain ID#
export ROS_DOMAIN_ID=42
Add to ~/.bashrc for persistence:
echo "export ROS_DOMAIN_ID=42" >> ~/.bashrc
Check ROS Localhost Only#
echo $ROS_LOCALHOST_ONLY
Enable Localhost Only Mode#
export ROS_LOCALHOST_ONLY=1
4.7 ROS 2 Interface Information#
List Message Types#
ros2 interface list
Filter by package:
ros2 interface list | grep std_msgs
Show Message Definition#
ros2 interface show std_msgs/msg/String
Show Service Definition#
ros2 interface show std_srvs/srv/Empty
4.8 ROS 2 Doctor - System Check#
Check ROS 2 setup and configuration:
ros2 doctor
Check specific aspects:
ros2 doctor --report
4.9 Next Steps#
Now that you are familiar with basic ROS 2 commands, you can:
Explore ROS 2 Tutorials: https://docs.ros.org/en/jazzy/Tutorials.html
Try the RoArm-M3 Demo: RoArm Demo Guide
Try the vSLAM Demo: vSLAM Demo Guide