College of DuPage Lunabotics Documentation
2025
|
This repository contains the software developed by the College of DuPage team for the NASA Lunabotics competition. It is built for ROS 2 Humble on Ubuntu 22.04 for x86-64 architecture.
Computer
Sensors
Hardware
Note: You will need to have already installed ROS 2 Humble before continuing with installation. The guide can be found here. Install both ros-humble-desktop
and ros-dev-tools
.
.bashrc is a script that runs everytime a new terminal window is opened and has various configurations, environment variables, and commands for setup. There is a bug in the VSCode terminal that will cause a symbol lookup error, so you have to unset the path variable using unset GTK_path
. If you haven't already added source /opt/ros/humble/setup.bash
to your .bashrc file, it simply runs the setup script for ROS 2 Humble.
This will permanently append these two lines to your .bashrc file, so there is no need to run it again. If you want to edit the file manually, use nano ~/.bashrc
or gedit ~/.bashrc
if you prefer a text editor GUI instead.
If you have previously cloned this repository and do not see anything in the folders located in third_party_packages
after running git pull
, run git submodule update --init --recursive --remote
inside the lunabot_ros
folder to initialize the submodules.
Run the installation script to install the required dependencies. chmod +x
gives permission for the script to be executable.
If you would prefer to use Foxglove Studio instead of RViz2 to visualize the robot, you can install it with:
Building may take some time due to the external packages in third_party_packages
. Various flags such as -DRTABMAP_SYNC_MULTI_RGBD=ON
need to be set to enable extra features for RTAB-Map.
To avoid building the entire workspace all over again after the initial build if you make changes, use colcon build --packages-select name_of_package
and choose the package that you made changes to for rebuilding. You can list multiple packages after the --packages-select
flag. You only need to rebuild the workspace if you modify a file for a compiled language such as C++
or add new files, the flag --symlink-install
will automatically reflect the changes in Python, URDF, Xacro, and YAML
files.
If your computer keeps crashing while trying to build, colcon build
may be trying to do too many things at once. Setting this flag to -j1
limits each package's internal make jobs to 1 thread. You can either increase or reduce both this and --parallel-workers
, increasing will make it build faster but may put more stress on your computer, leading to freezing.
Next, rebuild using the same commands in step 5. Build the workspace.
The launch files have various parameters that can be set, such as changing the robot model, autonomy level, and choosing between RViz2 and Foxglove Studio for visualization. If you are using the parameter viz_type:=foxglove
, refer to the Foxglove guide for connecting in the app. You can import the same layout I used by choosing Import from file...
under the LAYOUT
menu and selecting foxglove_layout.json
from this directory.
A detailed list of the launch parameters can be found here.
SSH (Secure Shell) allows you to access another device over the network and run commands. In this context:
This will return the username of the host, although you can also see the username just by looking at the terminal. It is the first name before the @, for example, the username would be asrock
for asrock@asrock-main
.
Next, get the IP address:
The IP address is the first set of numbers in the list.
Using the username and IP address from the previous step, now you can connect to the host. It may look something like this for example:
It will ask you if you are sure you want to connect, type yes
. Then, confirm by typing in the host's password.
Use ls /dev/ttyUSB*
to identify device numbers if the lidars are disconnected and reconnected, then adjust the lidar "serial_port"
parameters in real_launch.py
accordingly.
Make sure all cameras are unplugged while setting up the udev rules.
Connect your controller either through a wired or Bluetooth connection to the client.