Rove is a robot developed by the Capra team at ÉTS, designed for advanced applications in search and rescue robotics using ROS2 Humble.
Using a dev container ensures consistent environments across development and CI/CD pipelines.
-
Install required software:
- Docker Desktop
- Visual Studio Code
- VcXsrv (Xserver)
- VSCode Remote - Containers extension
-
Setup steps:
- Clone and open the repository
- Click the green button in VSCode's bottom left corner
- Select "Remote-Containers: Reopen in Container"
- Start Xserver with the -nowgl option
Follow the same steps as Windows, excluding Xserver installation. Additionally:
-
Update DISPLAY environment variable in .env:
echo DISPLAY=$DISPLAY
-
Configure controller node permissions:
cat /dev/input/event0
Note: Consider configuring Docker for non-root usage
Requires Ubuntu 22.04 LTS.
-
Install prerequisites:
- ROS2 Humble (use
ros-humble-desktop-full
) - Gazebo Harmonic
- ROS2 Humble (use
-
Setup workspace:
git clone https://github.com/clubcapra/rove.git cd rove vcs import src < rove.repos echo "export GZ_VERSION=harmonic" >> ~/.bashrc && source ~/.bashrc sudo rosdep init rosdep update rosdep install --from-paths src --ignore-src -r -y colcon build --symlink-install source install/setup.bash
-
(Optional) Hardware package installation:
vcs import src < rove_hw.repos rosdep install --from-paths src --ignore-src -r -y colcon build --symlink-install source install/setup.bash
For WSL users:
export LIBGL_ALWAYS_INDIRECT=0 export LIBGL_ALWAYS_SOFTWARE=1
Launch simulation:
ros2 launch rove_bringup sim.launch.py
You can also launch the simulation with Ovis using the following command:
ros2 launch rove_bringup sim.launch.py with_ovis:=true
You can launch the real-world robot using the following command:
ros2 launch rove_bringup real.launch.py
USB connection:
source install/setup.bash
ros2 launch rove_bringup rove_controller_usb.launch.py
Bluetooth connection:
source install/setup.bash
ros2 launch rove_bringup rove_controller_bluetooth.launch.py
ros2 launch rove_bringup vectornav.launch.py
# Launch controller
ros2 launch robotiq_description robotiq_control.launch.py
# Control commands
# Close gripper
ros2 action send_goal /robotiq_gripper_controller/gripper_cmd control_msgs/action/GripperCommand "{command:{position: 1, max_effort: 1.0}}"
# Open gripper
ros2 action send_goal /robotiq_gripper_controller/gripper_cmd control_msgs/action/GripperCommand "{command:{position: 0, max_effort: 1.0}}"
# View in RViz
ros2 launch robotiq_description view_gripper.launch.py
-
Install as service:
./utils/install.sh
-
Or launch manually:
ros2 launch rove_launch_handler launch_handler.py
Configuration file location: utils/ui/capra_ui.json
Each time you push to the repository, you need to ensure that black formatting is applied to all new files.
black .
- Create using ROS2 package creation commands
- Name Rove-specific packages with
rove_
prefix - External packages should be added to
rove.repos
- Rove packages: Update directly in repository
- External packages: Update references in
rove.repos
- Apply updates:
vcs import src < rove.repos
- Bringup: Initializes rover in real-world settings
- Description: Contains URDF robot description
- Gazebo: Handles simulation environment
- Navigation: Integrates nav2 framework
- SLAM: Handles mapping and localization