╔═║╔═║╔═║ ╝╔═╝╔═╝═╔╝ ╔═ ╔═╝╔═║═╔╝║ ║╔═ ╔═╝
╔═╝╔╔╝║ ║ ║╔═╝║ ║ ║ ║╔═╝╔═╝ ║ ║ ║║ ║╔═╝
╝ ╝ ╝══╝═╝══╝══╝ ╝ ╝ ╝══╝╝ ╝ ══╝╝ ╝══╝
- neptune_bringup
- controller_pkg
- vision_pkg
- webgui_pkg
- interfaces_pkg
- localization_pkg
This is a GitHub repository created for the University of Illinois Chicago Engineering Design Team for the NASA Lunabotics 2025 competition.
Video Cameras not showing (and not throwing the error: "Failed to open USB RGB camera 1 (/dev/video6)")" etc
fix: run "v4l2-ctl --list-devices" in /home/Desktop/robot_WS
find the webcameras, and put the top directory, itll look /dev/videox, where x is any number, and paste it into rs_camera_node.cpp in vision_pkg. this requires recompiling- colcon build --packages-select vision_pkg
"ROS Webbridge is overloaded- restarting in 2ms"
fix: okay so we started the robot too many times on the same uptime for the jetson. The cache is overloaded- and unfourtently the only fix is to restart the Jetson entirely. This happens after starting the robot 5+ times on the same uptime.
/joy topic not found
there should be /joy topic always, run ros topic list and look for /joy. then echo ros topic echo /joy
if nothing comes up, something is wrong, likely the ROS bridge being overloaded. restart the jetson.
Building and sourcing throwing an error.
fix: build and remove cached artifiacts. colcon build --cmake-clean-cache
Controller not sending signals, despite /joy being up
fix: you are not pressing the trigger! press right or left trigger to ensure connection is through. check ros topic echo /joy for any changes.
CAN Interface not found / CAN is busy
fix: sudo ip link set can0 up type can bitrate 1000000 || OR || lift E-stop (if busy).
robot isnt moving, no heartbeat sent.
fix: sometimes when the E-stop is pushed down midway and can gets consistently full, the controller node stops sending heartbeats. please run "ros2 run controller_pkg controller_node &"
Clock Skew
fix: run "date" on the jetson. you might get a date/time that is off from the current time / date. then, run "sudo date -s "2025-05-15 10:00:00" (change the date to the current date) and run colcon build.
if you still encounter clock skew after this, you will have to "touch" all files to replace their time and date- "find . -exec touch {} +" IN THE ROOT OF THE WORKSPACE (ROBOT_WS)! !! DOING THIS OUTSIDE WILL BREAK THE JETSON!
then you may need to clear artificatsion, in robot_WS do "rm -rf build/ install/ log/" and then finally build again, "colcon build --symlink-install"
Depositing Not working / Freezes up.
the service isnt displaying. press b to kill the service then try auto depositing again
rs_camera_node fails and dies instantly, with -11 error code.
make sure the d455 is plugged in.
Pull and run the ROS2 Humble Docker Image
docker run -it --network=host --privileged -v /dev/:/dev/ --name=ros-workspace ros:humble-ros-base
Active and stopped containers can be listed using
docker ps --all
If the container ros-workspace is already running, checked with the command above, then you can either reattach to it using
docker start ros-workspace && docker attach ros-workspace
OR remove the container using
docker rm ros-workspace
Note: Removing the container means the entire container must be reinstalled; however, the ros-humble-base image remains.
git clone git@github.com/educationmoment/EDT-Lunabotics-2025.git && cd EDT-Lunabotics-2025/
From within a computer running Ubuntu 22.04, run install.sh script with root privileges using
sudo echo install.sh | bash
The script periodically asks for user input and was designed to run inside a Docker container. It updates the system, installs the Robotics Operating System (ROS2 Humble), and several dependencies.
From within the workspace, run the following to build the entire project.
colcon build
SparkCAN and Control Area Networks (CAN) will require the setup of the CAN interface on the host system. A CAN interface should be immediately visible upon connecting the USB-to-CAN adapter. It may initially show as DOWN. Configure the CAN interface using
sudo ip link set can0 up type can bitrate 1000000
At this point, launch the robot using
ros2 launch neptune_bringup neptune.launch.py
The pilot can access the WebGUI by visiting
http://192.168.0.140:59440/pilot
You can also view the health status of the robot with
ros2 topic echo health_topic
Before UCF and then KSC, make sure to copy over the appropriate version of odometry onto odometry_node.cpp. Also, note that the pilot needs to be clicked into the WebGUI for this to work. To run it, use
ros2 run controller_pkg odometry_node
