Skip to content

m-berggren/libcv-steering

Repository files navigation

Cyber Physical Systems & Systems of Systems - Group 9

Pipeline Status Coverage Report Latest Release

Table of Content

Description

Course Project for DIT639 Cyber Physical System of System of Systems.

Installation

Pull the latest image of this application

# Stable releases v1.0.0+
docker pull registry.git.chalmers.se/courses/dit638/students/2025-group-09:v2.0.0

In these instructions we refer to the image as libcv-steering:latest, you can rename it as such:

docker tag registry.git.chalmers.se/courses/dit638/students/2025-group-09:v2.0.0 libcv-steering:latest

Uses two additional microservices

The program is combined with two other microservices to function:

Build the H264-decoder:

docker build https://github.com/chalmers-revere/opendlv-video-h264-decoder.git#v0.0.5 -f Dockerfile -t h264decoder:v0.0.5

Run the application

Then to run all services you can use Docker Compose option docker-compose up:

docker-compose up

Or through individual terminals (tested vith Ubuntu 22.04 and 24.04):

# Terminal 1: Start OpenDLV-Vehicle-View, possibly with --net=bridge flag on mac
docker run --rm -i --init --net=host --name=opendlv-vehicle-view \
        -v $PWD/recordings:/opt/vehicle-view/recordings \
        -v /var/run/docker.sock:/var/run/docker.sock \
        -p 8081:8081 \
        chrberger/opendlv-vehicle-view:v0.0.64

# Terminal 2: Start OpenDLV-Video-H264-Decoder, possibly with --net=bridge flag on mac
docker run --rm -ti --init --net=host --ipc=host \
        -v /tmp:/tmp \
        -e DISPLAY=$DISPLAY \
        h264decoder:v0.0.5 --cid=253 --name=img

# Terminal 3: libcv-steering image
xhost +
docker run --rm -ti --init --net=host --ipc=host \
        -v /tmp:/tmp \
        -v ./libcv-steering/output:/opt/output \
        -e DISPLAY=$DISPLAY \
        libcv-steering:latest --cid=253 --name=img --width=640 --height=480 --verbose

Then navigate to your browser and open localhost with the port 8081 (localhost:8081) and select a .rec file to instantiate the vehicle view.

Local build

If you prefer to build the image locally:

docker build -t libcv-steering -f Dockerfile .

Local Development

Ubuntu versions 22.04 and 24.04 are confirmed working for local development.

Prerequisites

Ensure you have the following tools installed on your system:

  • Git
  • SSH client
  • C++ compiler
  • CMake
  • Docker

Cloning the Repository

# Add your SSH key to GitLab first (https://git.chalmers.se/-/profile/keys)
# Then, clone the repository
git clone git@git.chalmers.se:courses/dit638/students/2025-group-09.git
cd 2025-group-09

Building the Project

# Create a build directory
mkdir build
cd build
# Run CMake and build the project
cmake ..
make

Development Flow

Workflow

Adding New Features

  1. Create a new branch for the feature from main:
git checkout -b <Issue>-<Feature-Name>
  1. Implement your feature and commit changes with meaningful messages (see commit guidelines below).
  2. Push your branch to GitLab:
git push origin <Issue>-<Feature-Name>
  1. Create a merge request (MR) on GitLab and request a code review.
  2. Once approved, merge the feature branch into main.

Fixing Bugs

  1. Create a branch from the latest main:
git checkout -b <Issue>-<Bug-Description>
  1. Implement the fix, ensuring minimal changes and proper commit messages.
  2. Push the branch and create a MR.
  3. A team member reviews and merges the fix.

Code Review Process

  • Every merge request must be reviewed by at least one other team member.
  • Use GitLab's code review tools to comment on changes and suggest improvements.

Commit Policy

All commit messages shall include issue number and how the commit is related to the issue, and follow this format:

git commit -m "#[ISSUE-NUMBER] <Commit Message>" -m "<Commit Description>"

The commit message should start with <verb> <noun>.

License

This project is licensed under the MIT License. See the LICENSE file for details.

This document should be updated if any workflow changes occur.

About

A project utilizing computer vision to determine steering of a miniature car.

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors