This repository contains all the code for UMDLoop's 2025-26 rover, Athena.
When cloning, be sure to use git clone --recursive [URL to Git repository] to pull in the submodules found in src/third-party. Alternatively, run git submodule update --init --recursive if you have already cloned.
- Ensure CAN Bus is connected and hardware is configured to the correct IDs
- Verify that each of the ros2_control xacro files (in
src/description/ros2_control/) have the correct IDs inside of thenode_idparameter for each joint
Hardware:
./src/athena-code/src/tools/scripts/can_setup.shVirtual:
./src/athena-code/src/tools/scripts/virtual_can_setup.shUse ip link to verify that can0 or vcan0 is up.
- Install required dependencies:
rosdep install --from-paths src -y --ignore-src- Build the workspace:
colcon build --symlink-install- Source the workspace:
source install/setup.bashAll subsystems use a controller switching service. Open a new terminal, source the workspace, and call:
source install/setup.bash
ros2 service call /set_controller msgs/srv/SetController "{controller_names: [CONTROLLER_NAME]}"Only one motion controller should be active at a time (alongside the joint_state_broadcaster).
Hardware:
ros2 launch arm_bringup athena_arm.launch.py use_mock_hardware:=falseMock (no hardware):
ros2 launch arm_bringup athena_arm.launch.py use_mock_hardware:=true- Base Yaw: Left/Right on Left Joystick (Axes 0)
- Shoulder Pitch: Up/Down on Left Joystick (Axes 1)
- Elbow Pitch: Up/Down on Right Joystick (Axes 3)
- Wrist Pitch: Up/Down on Left Joystick AND O button (Axes 1)
- Wrist Roll: Left/Right on Left Joystick AND O button (Axes 0)
- Open Claw (max speed): Left Bumper (Button 5)
- Close Claw (max speed): Right Bumper (Button 4)
- Open Claw (speed control): Left Trigger (Axes 5)
- Close Claw (speed control): Right Trigger (Axes 4)
- Switch to velocity controller using the controller switching service
- In a new terminal:
ros2 topic pub /velocity_controller/commands std_msgs/msg/Float64MultiArray "{data: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}"- Switch to joint trajectory controller using the controller switching service
- In a new terminal:
ros2 action send_goal /joint_trajectory_controller/follow_joint_trajectory control_msgs/action/FollowJointTrajectory "{ \
trajectory:{ \
joint_names: ['base_yaw', 'shoulder_pitch', 'elbow_pitch', 'wrist_pitch', 'wrist_roll', 'gripper_claw', 'actuator'], \
points: [ \
{positions: [0.0, -1.0, -2.0, -1.0, -0.16, 0.0, 0.0], time_from_start: {sec: 3, nanosec: 0}}, \
] \
} \
}"Hardware:
ros2 launch drive_bringup athena_drive.launch.py use_mock_hardware:=falseMock (no hardware):
ros2 launch drive_bringup athena_drive.launch.py use_mock_hardware:=trueThe default controller is single_ackermann_controller. To use the built-in ackermann steering controller instead:
ros2 launch drive_bringup athena_drive.launch.py robot_controller:=ackermann_steering_controllerHardware:
ros2 launch science_bringup athena_science.launch.py use_mock_hardware:=falseMock (no hardware):
ros2 launch science_bringup athena_science.launch.py use_mock_hardware:=trueIf you're new to Git and GitHub, start with this beginner-friendly tutorial: GitHub's Hello World Guide
For a more comprehensive introduction, check out: Git and GitHub Tutorial for Beginners
Before you can contribute, you'll need to have Git installed and configured on your machine:
- Install Git - Follow GitHub's guide to set up Git on your system
- Configure Git - Set your username and email that will be associated with your commits
To securely authenticate with GitHub without entering your password each time, set up SSH keys:
- Check for existing SSH keys - See if you already have SSH keys: Checking for existing SSH keys
- Generate a new SSH key - If needed, create a new SSH key pair: Generating a new SSH key
- Add SSH key to GitHub - Upload your public key to your GitHub account: Adding a new SSH key to your GitHub account
Once you're set up, here's how to contribute your changes:
-
Fork the repository - Create your own copy of the repository: Fork a repo
-
Clone your fork - Download your forked repository to your local machine using
git clone. -
Create a feature branch - Make a new branch for your specific feature or fix:
git checkout -b feature/your-feature-name-
Make your changes - Write your code, test it thoroughly, and commit your changes
-
Push to your fork - Upload your feature branch to your GitHub fork
git push origin feature/your-feature-name- Open a Pull Request - Submit your changes for review: Creating a pull request from a fork
Your PR will be reviewed by your lead, and once approved, it will be merged into the main codebase!