This repository contains the activities for the TE3001B challenge, along with a submodule referencing the official course material.
The folder TE3001B_Intelligent_Robotics_Implementation_2026 is a git submodule pointing to:
https://github.com/ManchesterRoboticsLtd/TE3001B_Intelligent_Robotics_Implementation_2026
After cloning this repository, initialize and pull the submodule:
git submodule update --init --recursiveThe ros2_ws directory contains the ROS 2 workspace with packages for the challenge activities.
To set up Micro-ROS for ESP32 microcontroller communication, run the automated setup script:
./setup_microros.shThis script:
- Installs required dependencies (vcstool, rosdep packages)
- Builds the ROS 2 workspace
- Creates and builds the Micro-ROS agent from the submodule
- Configures serial port permissions
For detailed setup instructions, see MICROROS_SETUP.md
After setting up the Micro-ROS agent, configure Arduino IDE with Micro-ROS libraries for ESP32:
👉 See ARDUINO_IDE_SETUP.md for complete instructions
Key steps:
- Install ESP32 board support (version 2.0.17)
- Add Micro-ROS Arduino library (v2.0.7-humble)
- Configure serial port permissions
- Upload sketches to ESP32
The ros2_ws/src/motor_control package provides Micro-ROS-based DC motor control:
- Subscribe to
/cmd_pwmfor motor commands (-255 to +255) - Publish motor feedback:
/motor/rpm,/motor/encoder,/motor/state - Works with ESP32/Hackerboard + L298N motor driver
Quick usage:
# Upload arduino/motor_node.ino to ESP32 (see ARDUINO_IDE_SETUP.md)
# Start ROS 2 agent and then:
ros2 run motor_control motor_commander -- --pwm 150 # Forward
ros2 run motor_control motor_monitor # Monitor feedbackSee MOTOR_NODE.md and motor_control README for details.
Since the course material is updated regularly, follow these steps to pull the latest changes:
- Enter the submodule directory and fetch + checkout the desired commit:
cd TE3001B_Intelligent_Robotics_Implementation_2026
git fetch origin
git checkout <commit-hash> # or a branch, e.g. "main"
cd ..- Stage the updated submodule reference in this repo:
git add TE3001B_Intelligent_Robotics_Implementation_2026- Commit the change:
git commit -m "Update submodule to latest version"- Push:
git pushThe parent repository only stores a pointer (commit hash) to the submodule. Every time the course material is updated, repeat the steps above to advance that pointer to the new commit.