Back to Course

Mobile Manipulator Mars Exploration Project

CS498GC Fall 2025 | Assignment 4 Extra Credit

Fall 2025 archive. This page is kept as a record of the Assignment 4 mobile manipulator project from CS498GC Fall 2025.

Important Deadlines (Fall 2025)

Quick Start

Fall 2025 quick start in 3 steps:

1️⃣ Clone Husky UR3 2️⃣ Install Mars Worlds 3️⃣ Launch Simulation

🚀 Mission Overview

Your Robot Platform

Command a Husky mobile base equipped with a UR3 manipulator arm and a gripper.

  • 4-wheel differential drive system
  • 6-DOF UR3 manipulator arm
  • Robotis RH-P12-RN gripper
  • Simulated LiDAR and IMU sensors

Mars Environment

Mars-themed Gazebo worlds with rock obstacles (see the Mars Gazebo tab).

  • Mars-themed Gazebo world
  • Rock-like obstacles for navigation and SLAM
Fall 2025 handout text

The Fall 2025 handout also described Jezero Crater terrain from NASA/JPL elevation data and a day/night cycle with dust effects. Those terrain models are not in any repository linked from these pages.

🎯 Learning Objectives

Mobile Navigation
  • Autonomous path planning
  • Obstacle avoidance
  • SLAM in unknown terrain
Manipulation Skills
  • MoveIt2 motion planning
  • Pick and place operations
  • Visual servoing
System Integration
  • ROS2 architecture design
  • Sensor fusion techniques
  • Real-time control systems

🪐 Mars Gazebo Worlds

Available Mars Environments

🏜️ Dual-Robot Mapping

Mapping launch from the Mars worlds + dual-robot SLAM explorer repo (Gazebo Classic via gazebo_ros). Not recommended in the final rubric (v11): reported missing mesh paths; use the Mars Thanksgiving World instead. The repo is a fork of itsyashk/ros2-dual-robot-slam-explorer.

ros2 launch mars_robots mapping.launch.py

🏕️ Dual-Robot Navigation

Navigation launch from the Mars worlds + dual-robot SLAM explorer repo (Gazebo Classic via gazebo_ros). Not recommended in the final rubric (v11): reported missing mesh paths; use the Mars Thanksgiving World instead. The repo is a fork of itsyashk/ros2-dual-robot-slam-explorer.

ros2 launch mars_robots navigation.launch.py

Installing Mars Terrain Packages

Fall 2025 handout text (not a runnable command)

GazeboMarsRover2 is a ROS 1 (catkin) Mars rover package for Gazebo Classic (package mars_rover_2), last updated May 2021, with a simple Mars terrain world (urdf/MarsTerrain.world). It has no mars_gazebo_terrains package and no download_textures.sh script. Its README links a HiRISE-derived terrain mesh that is hosted outside the repository, so the ROS 2 steps after the clone fail.

# Clone the Mars worlds repository
cd ~/ros2_ws/src
git clone https://github.com/LRCJ/GazeboMarsRover2.git
# (its README links a HiRISE-derived terrain mesh hosted outside the repository)

# Install dependencies
sudo apt-get update
sudo apt-get install ros-${ROS_DISTRO}-gazebo-ros-pkgs
sudo apt-get install ros-${ROS_DISTRO}-gazebo-msgs

# Download Mars texture packs (2GB)
cd mars_gazebo_terrains
./scripts/download_textures.sh

# Build the workspace
cd ~/ros2_ws
colcon build --packages-select mars_gazebo_terrains
source install/setup.bash

Custom World Configuration

Create your own Mars exploration scenario by modifying world files:

Fall 2025 handout text (not a runnable example)

The models this world includes (mars_sky, jezero_crater_terrain, mars_rock_sample) are not in any of the repositories linked from these pages.

<?xml version="1.0"?> <sdf version="1.6"> <world name="mars_exploration"> <!-- Mars sky and lighting --> <include> <uri>model://mars_sky</uri> </include> <!-- Jezero Crater terrain --> <include> <uri>model://jezero_crater_terrain</uri> <pose>0 0 0 0 0 0</pose> </include> <!-- Add rock samples for collection --> <include> <uri>model://mars_rock_sample</uri> <pose>5 5 0.5 0 0 0</pose> <name>sample_01</name> </include> </world> </sdf>

⚙️ Complete Setup Guide

Step 1: Environment Setup

Configure ROS2 Jazzy/Humble with Gazebo Harmonic

Fall 2025 handout text (not a runnable command)

There is no husky_ur3_simulation package in the repositories linked from these pages.

source /opt/ros/jazzy/setup.bash
cd ~/ros2_ws
colcon build --packages-select husky_ur3_simulation

Step 2: Launch Simulation

Start the complete Mars exploration environment

Fall 2025 handout text (not a runnable command)

There is no husky_ur3_mars package in the repositories linked from these pages.

ros2 launch husky_ur3_mars mars_exploration.launch.py

Step 3: Controllers

Initialize robot controllers and teleoperation

Fall 2025 handout text (not a runnable command)

There is no husky_ur3_simulation package in the repositories linked from these pages.

ros2 launch husky_ur3_simulation controllers.launch.py
ros2 run teleop_twist_keyboard teleop_twist_keyboard

Step 4: Mission Control

Start autonomous navigation and manipulation

Fall 2025 handout text (not a runnable command)

There is no mars_mission package in the repositories linked from these pages.

ros2 launch mars_mission mission_control.launch.py

🔧 Troubleshooting Common Issues

Add command_interface: "velocity" to your controllers.yaml file

Set export LIBGL_ALWAYS_SOFTWARE=1 before launching Gazebo

Increase timeout in launch files: timeout=5.0

📚 Resources

📚 Assignment Resources

📄 Slide Deck

Assignment 4 Part 1 presentation (VER1.16)

View Slides

🔧 Bash Scripts

Automated launch scripts for 8 terminal setup

Download Script

📖 Extra Credit Guide

Complete 9-page PDF with all requirements

View Guide

🎮 Gripper Control Commands

Fall 2025 handout text

Open Gripper

ros2 topic pub -1 /rh_p12_rn_position/command std_msgs/msg/Float64 '{data: 0.0}'

Close Gripper

ros2 topic pub -1 /rh_p12_rn_position/command std_msgs/msg/Float64 '{data: 1.05}'

🏆 Student Mars Mission Showcase

Fall 2025 showcase (archive)

During Fall 2025, students were invited to record a 2-minute highlight video of their best Mars navigation, including the autonomous sample collection sequence, and to submit it through Gradescope with the hashtag #MarsCS498GC.

Individual student submissions and results are not published on this page.

🚀 Challenge Yourself!

Beginner Challenges

  • Navigate to 3 waypoints autonomously
  • Pick up and place a single rock sample
  • Create a 2D map of the crater

Advanced Challenges

  • Implement visual SLAM with loop closure
  • Autonomous sample sorting by size
  • Multi-robot coordination demo

CS498GC Mobile Robotics | Fall 2025 | University of Illinois at Urbana-Champaign
Professor Girish Chowdhary | TA: Kulbir Singh Ahluwalia