🚀 SLAM-ing Mars 🔴

Mobile Manipulator Exploration & SLAM Challenge | CS498GC Fall 2025

🔥 Assignment 4 Complete Guide! Navigate the Red Planet with Husky + UR3 + Robotis Gripper

Important Deadlines

Quick Start

Get started with Mars exploration in 3 steps:

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

🌌 Mission Overview

Transform your Husky + UR3 robot into a Mars explorer! This comprehensive assignment combines mobile navigation with manipulation in realistic Mars environments.

🤖 Robot Configuration

  • Base: Clearpath Husky (4-wheel differential drive)
  • Arm: UR3 6-DOF manipulator
  • Gripper: Robotis gripper for sample collection
  • Sensors:
    • RGB-D camera for visual SLAM
    • LiDAR for terrain mapping
    • IMU for orientation in low gravity
  • SLAM: RTAB-Map or custom implementation

🔴 Mars Environment Features

  • Authentic Mars Terrain: Rocky, uneven surfaces
  • Reduced Gravity: 38% of Earth's gravity
  • Dust Storms: Dynamic visibility challenges
  • Craters & Obstacles: Natural Mars formations
  • Red/Orange Atmosphere: Realistic Mars coloring
  • NASA-Inspired: Based on real Mars rover data

🎯 Learning Objectives

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

🪐 Mars Gazebo Worlds

Available Mars Environments

🏔️ Jezero Crater

Ancient river delta with diverse geological features. Perfect for navigation challenges.

ros2 launch mars_worlds jezero_crater.launch.py

🏜️ Olympus Mons Base

Explore the largest volcano in the solar system. Extreme terrain for advanced users.

ros2 launch mars_worlds olympus_mons.launch.py

🏕️ Mars Base Alpha

Simulated research station with sample collection zones and charging stations.

ros2 launch mars_worlds base_alpha.launch.py

Installing Mars Terrain Packages

# Clone the Mars worlds repository cd ~/ros2_ws/src git clone https://github.com/kulbir-ahluwalia/mars_gazebo_worlds.git git clone https://github.com/LRCJ/GazeboMarsRover2.git # 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 # Build the workspace cd ~/ros2_ws colcon build --packages-select mars_gazebo_worlds source install/setup.bash

Custom World Configuration

Create your own Mars exploration scenario by modifying world files:

<?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 & Installation

Prerequisites
  • ROS2 Jazzy or Humble installed
  • Gazebo 11 or newer
  • NVIDIA GPU recommended (GTX 1060 or better)
  • 16GB RAM minimum

Step 1: Environment Setup

Configure ROS2 Jazzy/Humble with Gazebo Harmonic

source /opt/ros/jazzy/setup.bash cd ~/assignment4_ws mkdir -p src

Step 2: Clone Repositories

Get Husky UR3 simulator and Mars worlds

cd ~/assignment4_ws/src git clone https://github.com/kulbir-ahluwalia/husky_ur3_simulation.git git clone https://github.com/kulbir-ahluwalia/mars_gazebo_worlds.git

Step 3: Install Dependencies

Install required ROS2 packages

cd ~/assignment4_ws rosdep install --from-paths src --ignore-src -r -y pip3 install transforms3d

Step 4: Build Workspace

Compile all packages

colcon build --packages-select husky_ur3_simulation mars_gazebo_worlds source install/setup.bash

Step 5: Launch Mars Environment

Start the complete simulation

# Launch Mars world with Husky robot ros2 launch mars_gazebo_worlds mars_husky_slam.launch.py # In a new terminal, launch SLAM ros2 launch mars_gazebo_worlds mars_slam.launch.py # Start teleoperation (optional) ros2 run teleop_twist_keyboard teleop_twist_keyboard

🎮 Controller Configuration

Make sure your controllers.yaml includes the command_interface parameter:

base_controller: ros__parameters: type: diff_drive_controller/DiffDriveController command_interface: "velocity" # Critical for movement! left_wheel_names: ["front_left_wheel", "rear_left_wheel"] right_wheel_names: ["front_right_wheel", "rear_right_wheel"]

🎯 SLAM Tasks & Requirements

Assignment 4 Part 2: Mars SLAM Challenge (75 points)

  1. Basic Navigation (15 pts): Navigate through Mars crater field
  2. Sample Collection (15 pts): Use manipulator to collect Mars rocks
  3. Map Generation (15 pts): Create complete 2D/3D map of environment
  4. Loop Closure (10 pts): Demonstrate successful loop closure in Mars terrain
  5. Obstacle Avoidance (10 pts): Navigate around Mars boulders autonomously
  6. Technical Report (10 pts): Document SLAM performance on Mars

🌟 Bonus Challenge: Mars Dust Storm (10 extra points)

Complete SLAM during a simulated Mars dust storm with reduced visibility!

# Enable dust storm mode ros2 param set /mars_environment enable_dust_storm true ros2 param set /mars_environment dust_density 0.7

📊 Performance Metrics

Metric Earth Performance Mars Challenge Points
Map Completeness >95% >90% in Mars terrain 15
Localization Error <10cm <20cm with reduced traction 10
Loop Closure Success 100% >80% in dust conditions 10
Sample Collection N/A 5+ Mars rocks collected 15
📁 Submission Requirements
  1. Rosbag Recording: 5-minute Mars exploration (include /tf, /map, /odom)
  2. Generated Maps: 2D occupancy grid + 3D pointcloud of Mars terrain
  3. Video Demo: Screen recording showing SLAM in action (3-5 minutes)
  4. Technical Report: 3-page analysis of SLAM performance on Mars
  5. Code: Your SLAM implementation or configuration files
🎯 Pro Tips for Success
  • Start with flat Mars terrain before attempting craters
  • Use higher loop closure thresholds for dusty conditions
  • Implement sensor fusion early to handle wheel slip
  • Test in Earth gravity first, then switch to Mars
  • Save intermediate maps in case of crashes

🚨 Troubleshooting Guide

Problem: The robot doesn't respond to velocity commands
Solution: Add command_interface: "velocity" to your controllers.yaml file
base_controller: ros__parameters: command_interface: "velocity" # Add this line!

Problem: Gazebo crashes with OpenGL errors
Solution: Set software rendering mode
export LIBGL_ALWAYS_SOFTWARE=1 export MESA_GL_VERSION_OVERRIDE=3.3 ros2 launch husky_ur3_simulation gazebo_sim.launch.py

Problem: Reduced traction on sandy Mars surface
Solution: Adjust wheel odometry covariance and use IMU fusion
# Increase odometry uncertainty ros2 param set /husky_controller odom_covariance_xy 0.1 ros2 param set /ekf_filter imu_weight 0.8

Problem: UR3 arm overshoots in 38% gravity
Solution: Adjust PID gains for Mars gravity
# Mars gravity compensation ros2 param set /ur3_controller gravity_compensation 3.71 ros2 param set /ur3_controller pid_p 0.6

Problem: Feature detection difficult in monochrome Mars environment
Solution: Tune visual feature detectors for Mars
# Adjust RTAB-Map parameters for Mars ros2 param set /rtabmap Vis/FeatureType 6 # ORB features ros2 param set /rtabmap Vis/MaxFeatures 2000 ros2 param set /rtabmap RGBD/OptimizeMaxError 0.5

Problem: TF transform lookup fails with timeout
Solution: Increase timeout in launch files
# In your launch file, increase timeout transform_timeout = 5.0 # Increase from default 1.0

📚 Resources & Demo Materials

🎮 Gripper Control Commands

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}'

🔧 Useful Scripts

Launch Script (8 terminals)

Automated bash script for complete setup

Download Script

GPU Test Script

Check if GPU acceleration is working

glxinfo | grep "OpenGL renderer"

Controller Check

Verify controllers are loaded

ros2 control list_controllers

🏆 Student Mars Mission Showcase

Submit Your Mars Mission!

Successfully completed the Mars exploration challenge? Share your achievement!

  • Record a 2-minute highlight video of your best Mars navigation
  • Include autonomous sample collection sequence
  • Submit via Gradescope with hashtag #MarsCS498GC

🌟 Hall of Fame - Fall 2025

Outstanding Mars exploration implementations will be featured here!

🥇 Best Navigation

Awaiting submissions...

Criteria: Fastest crater traversal with obstacle avoidance
🥈 Best Manipulation

Awaiting submissions...

Criteria: Most samples collected in 30 seconds
🥉 Most Creative

Awaiting submissions...

Criteria: Innovative approach to Mars exploration

📊 Leaderboard Metrics

Metric Current Record Holder Date
Fastest Crater Crossing - - -
Most Samples Collected - - -
Longest Autonomous Run - - -
Most Accurate SLAM Map - - -

🚀 Challenge Yourself!

Beginner Challenges

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

Advanced Challenges

  • Implement visual SLAM with loop closure
  • Autonomous sample sorting by size
  • Multi-robot coordination demo
  • Navigate during dust storm conditions
🚀 Student Testimonial

"Even I could not sleep last night because I was so excited SLAMing on MARS!!" - Enthusiastic CS498GC Student

Get ready to roll on the Red Planet! 🔴

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