Get the Innex1 Rover simulation running in minutes.
Prerequisites
Complete the installation guide before proceeding.
Workspace setup
Clone the repository
Clone the Innex1 Rover source code: git clone https://github.com/KJdotIO/innex1-rover.git
cd innex1-rover
Install dependencies
Use rosdep to automatically install all package dependencies: rosdep install --from-paths src -y --ignore-src
This command scans all packages in src/ and installs missing ROS dependencies.
Build the workspace
Build all packages using colcon: colcon build --symlink-install
The --symlink-install flag allows you to edit launch files and world files without rebuilding.
Build time: 2-5 minutes depending on your system.
Source the workspace
Load the built packages into your environment: source install/setup.bash
Add this to your ~/.bashrc to automatically source the workspace: echo "source ~/innex1-rover/install/setup.bash" >> ~/.bashrc
Set up GZ Web alias (optional)
Create a convenient alias for web-based visualization: echo "alias gzweb='ign launch \$ (ros2 pkg prefix lunabot_simulation)/share/lunabot_simulation/config/websocket.ign'" >> ~/.bashrc
source ~/.bashrc
Launch the simulation
Start the moon yard simulation:
ros2 launch lunabot_simulation moon_yard.launch.py
You should see output indicating:
Gazebo server starting
Moon yard world loading
Robot description published
Rover spawning at coordinates (0.0, 0.0, 0.5)
ROS-Gazebo bridges active
The simulation runs in headless mode by default to conserve resources. The rover spawns above the surface and settles under gravity.
Verify the simulation
In a new terminal, check active topics:
source install/setup.bash
ros2 topic list
Expected topics include:
/cmd_vel - Velocity commands
/odom - Odometry data
/imu/data_raw - IMU measurements
/scan - 2D LiDAR data
/camera_front/image - Front camera feed
/camera_front/depth_image - Depth data
/joint_states - Wheel joint states
Quick test drive
Control the rover with keyboard teleoperation:
Launch teleop
In a new terminal: source install/setup.bash
ros2 run teleop_twist_keyboard teleop_twist_keyboard
Drive the rover
Use these keys:
i - Forward
k - Stop
, - Backward
j - Rotate left
l - Rotate right
q - Increase speed
z - Decrease speed
Keep the teleop terminal focused to receive keyboard input.
Workspace structure
The repository is organized as follows:
innex1-rover/
├── src/
│ ├── external/ # Third-party packages
│ │ ├── leo_common-ros2/ # Leo Rover description
│ │ └── leo_simulator-ros2/ # Leo Gazebo plugins
│ ├── lunabot_bringup/ # System launch files
│ ├── lunabot_control/ # Control algorithms
│ ├── lunabot_description/ # Robot URDF and meshes
│ ├── lunabot_interfaces/ # ROS actions and messages
│ ├── lunabot_localisation/ # AprilTag, EKF, SLAM
│ ├── lunabot_navigation/ # Nav2 configuration
│ ├── lunabot_perception/ # Hazard detection
│ ├── lunabot_simulation/ # Gazebo worlds and launch
│ └── lunabot_teleop/ # Manual control
├── build/ # Build artifacts
├── install/ # Installed packages
└── log/ # Build and runtime logs
Development workflow
Editing launch and world files
With --symlink-install, you can edit .launch.py and .sdf files without rebuilding:
Edit the file in src/lunabot_simulation/
Kill Gazebo: pkill -9 -f "gz sim"
Relaunch: ros2 launch lunabot_simulation moon_yard.launch.py
When to rebuild
Rebuild when you change:
CMakeLists.txt or package.xml
C++ source files
Python package structure
Adding new files
colcon build --symlink-install
source install/setup.bash
Build only specific packages: colcon build --packages-select lunabot_perception
Troubleshooting
Launch file not found:
Ensure the launch directory is installed in CMakeLists.txt:
install (DIRECTORY
launch
DESTINATION share/ ${PROJECT_NAME}
)
Rebuild after making changes.
Multiple Gazebo instances:
Kill all Gazebo processes:
Models not loading:
Gazebo downloads models from the internet on first launch. Ensure you have an active connection. Models cache locally in ~/.gz/fuel/ for offline use.
Package not found after building:
Source the workspace:
source install/setup.bash
Next steps
Run simulation Launch visualization tools and explore the environment
API Reference Learn about ROS topics, actions, and services