Mobile Manipulator Exploration & SLAM Challenge | CS498GC Fall 2025
Get started with Mars exploration in 3 steps:
Transform your Husky + UR3 robot into a Mars explorer! This comprehensive assignment combines mobile navigation with manipulation in realistic Mars environments.
Ancient river delta with diverse geological features. Perfect for navigation challenges.
ros2 launch mars_worlds jezero_crater.launch.py
Explore the largest volcano in the solar system. Extreme terrain for advanced users.
ros2 launch mars_worlds olympus_mons.launch.py
Simulated research station with sample collection zones and charging stations.
ros2 launch mars_worlds base_alpha.launch.py
# 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
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>
Configure ROS2 Jazzy/Humble with Gazebo Harmonic
source /opt/ros/jazzy/setup.bash
cd ~/assignment4_ws
mkdir -p src
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
Install required ROS2 packages
cd ~/assignment4_ws
rosdep install --from-paths src --ignore-src -r -y
pip3 install transforms3d
Compile all packages
colcon build --packages-select husky_ur3_simulation mars_gazebo_worlds
source install/setup.bash
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
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"]
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
| 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 |
command_interface: "velocity" to your controllers.yaml file
base_controller:
ros__parameters:
command_interface: "velocity" # Add this line!
export LIBGL_ALWAYS_SOFTWARE=1
export MESA_GL_VERSION_OVERRIDE=3.3
ros2 launch husky_ur3_simulation gazebo_sim.launch.py
# Increase odometry uncertainty
ros2 param set /husky_controller odom_covariance_xy 0.1
ros2 param set /ekf_filter imu_weight 0.8
# Mars gravity compensation
ros2 param set /ur3_controller gravity_compensation 3.71
ros2 param set /ur3_controller pid_p 0.6
# 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
# In your launch file, increase timeout
transform_timeout = 5.0 # Increase from default 1.0
ros2 topic pub -1 /rh_p12_rn_position/command std_msgs/msg/Float64 '{data: 0.0}'
ros2 topic pub -1 /rh_p12_rn_position/command std_msgs/msg/Float64 '{data: 1.05}'
Check if GPU acceleration is working
glxinfo | grep "OpenGL renderer"
Verify controllers are loaded
ros2 control list_controllers
Successfully completed the Mars exploration challenge? Share your achievement!
Outstanding Mars exploration implementations will be featured here!
Awaiting submissions...
Criteria: Fastest crater traversal with obstacle avoidanceAwaiting submissions...
Criteria: Most samples collected in 30 secondsAwaiting submissions...
Criteria: Innovative approach to Mars exploration| Metric | Current Record | Holder | Date |
|---|---|---|---|
| Fastest Crater Crossing | - | - | - |
| Most Samples Collected | - | - | - |
| Longest Autonomous Run | - | - | - |
| Most Accurate SLAM Map | - | - | - |
"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