Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 

Repository files navigation

Infrastructure-Coding-Challenge-2026

Hello prospective member!

Throughout this challenge, you will interact with several of the core tools and technologies used by the Infrastructure subteam:

  • Git & GitHub for version control and submitting your work
  • Docker for creating a reproducible development environment
  • ROS 2 for creating your package and running your node
  • C++ or Python for implementing your code
  • Colcon for building your ROS 2 workspace
  • Command line for building, running, and interacting with your environment

Prior experience with these tools is not expected.

There are two main components to this coding challenge: environment setup and an open-ended coding challenge.

Environment Setup

This component is kept intentionally sparse of a guide or resources; a large part of being onboarded to Wisconsin Autonomous is growing to feel comfortable adapting to tools you may not be previously familiar with.

ROS 2 is our middleware of choice. It allows independent programs, called nodes, to communicate through topics, services, and actions, which lets us connect sensors, localization, planning, and control into one larger software stack. For this part of the challenge, your goal is to set up a development environment. In order:

  1. Create a Dockerfile using an Ubuntu 22.04 LTS (Jammy Jellyfish) base image.
  2. Install ROS 2 Humble inside the container.
  3. Build and run the container.
  4. Verify that ROS 2 is working by successfully running the ros2 command inside the container.
  5. Fork then clone this repository into the container and create your ROS 2 workspace inside the repository.

Open-Ended Coding Challenge

There is no single program you are expected to build. Instead, your program must satisfy a small set of requirements listed below. What you build around those requirements is entirely up to you. Building an elaborate program is welcome, but unnecessary. Completion of the requirements and understanding what your code is doing are what matter; the sophistication of your program will not be considered as part of your application. Here are the requirements:

A ROS 2 package that...

  • Has at least one node that subscribes to 2 inputs, and publishes one output
  • Has at least 3 topics (If you choose to use ros2 topic pub just leave the commands you use in the README when submitting)
  • Has at least 2 callback functions that each correspond to a unique topic
  • Has at least one function that aggregates the 2 inputs and publishes the final output
  • Is written in C++ or use Python (rclpy)
  • .gitignore for build/ install/ log/
  • Successfully builds using colcon build

Hint: The most baseline package should look like this:

/input_topic_a, /input_topic_b -> node -> /output_topic

Submission

Your repository you hand off to me should have:

  • The commands needed to build and run your program
  • Any ros2 topic pub commands used to provide input
  • A short description of what your program does
  • Your Dockerfile
  • Your workspace and packages
  • A screenshot of your command line successful running ros2 or any other command that proves your environment is functional

Notes Before Starting:

  • Fork then clone this repository and do all your work in that directory, you will be pushing your code to github and submitting the link in the google form when complete.
  • This is meant to be a practical in independently setting up and using industry standard tools. Therefore you should use any tools you're comfortable with for gathering information and learning. This can be consulting a friend, the internet, documentation, or LLMs.
  • The requirements to complete this coding challenge are intentionally kept simple in order to make earnestly engaging with the task reasonable
  • If you have any extenuating circumstances (For example a computer that cannot run any of the stated software) that make completing this challenge impossible, or you have any questions (I will help you if needed) contact nkujava@wisc.edu
  • Good luck and don't feel intimidated, you can do it!

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors