CSCE 452/752 Robotics and Spatial Intelligence, Spring 2026

Project 3

Overview and purpose

This assignment asks you to create software that processes data from a lidar sensor to detect and track the movement of people around a robot. The purpose is to give some experience designing and implementing algorithms that cope with the complexity of real sensor data, along with exposure to some additional ROS features.

Reference material

In addition to the concepts you used in Projects 1 and 2 (nodes, topics, publishers, subscribers, services, parameters, etc.), you'll need to use launch files and visualization markers. You will likely want to consult the tutorials and reference documentation on those subjects.

Your task

Here is a collection bag files recorded by a robot equipped with a laser range finder (i.e. lidar):
Project 3 Bag Files
When each of these bags was recorded, the robot and the nearby obstacles remained motionless. However, in each case, zero or more people walked past the robot.
Your job is create a system to detect and track the unique people that the robot sees.
Several times per second, your system should publish a message of type
visualization_msgs/MarkerArray
on the topic
/person_markers
. This message should contain one marker for each person that has passed in front of the sensor, including people currently in view of the sensor and people that passed in front of the sensor in the past.
An example with three markers appears below.
an example of people tracked in rviz
Your system must consist of at least two distinct nodes. One node should subscribe to
/scan
and a different node or nodes should publish the markers. You may use more than two nodes if you wish. You should design your system carefully to make a meaningful subdivision of the work between the nodes in your system. Your nodes should communicate by publishing messages on a topic or topics of your own design. (The purpose of this constraint is to practice the ROS philosophy of designing nodes that each do a single, simple job well, and then connecting those parts together to form a complete system.)
Finally, because your system will consist of several distinct components that must be started in concert, you should create a launch file that starts the system. This launch file should: Your solution will be evaluated primarily on the accuracy of its results. The quality of the system design and the code will also play roles in the grading.

What to submit

Three required parts:
  1. A PDF report including:
    1. A concise description of how the system works. This should be a couple of paragraphs, describing your overall approach at a conceptual level. Some questions to consider: What choices did you make in designing the program, and why? What nodes does your system contain, and what role does each one play? What specific parameters are part of your method, and how did you select values for those parameters?
    2. A short answer to these questions: Did the results meet your expectations? Why or why not?
  2. The source code for your programs. This will span at least two source code files. Be sure to consult the source code style guide on the course Canvas page.
  3. Rosbag recordings of all topics throughout the entire execution of your program for each of the provided input bags.
    It is essential for these bags to contain both the original sensor data on
    /scan
    as well as the outputs on
    /person_markers
    because this information will play a primary role in evaluating the correctness of your solution. We cannot award credit for correctly detecting and tracking people unless you submit these outputs correctly.
    The directory of each bag file must be named with your TAMU netid. followed by a dash, followed by the number of the input bag file. For example, your instructor's submission would include bag directories called
    jokane-1
    ,
    jokane-2
    , and so on. Incorrectly named bags cannot be graded.
    Each rosbag recording is a directory which contains both a
    db3
    or
    mcap
    file and a yaml file of metadata. You may rename this directory, but you should not modify the names or contents of the files after recording, or you risk corrupting the rosbag. Corrupted rosbags cannot be graded. You should include the entire directory in your submission.
One optional part:
  1. A short video demonstrating your system in some way that may be helpful in grading.