VISVESVARAYA TECHNOLOGICAL UNIVERSITY
"JNANA SANGAMA", MACHHE, BELAGAVI-590018
Research Internship /Industry Internship Report
on
Digital Twin Toolbox
Submitted in partial fulfillment of the requirements for the VII-VIII semester
Bachelor of Engineering
in
Information Science and Engineering
of
Visvesvaraya Technological University, Belagavi
by
ROSHAN SAH
(1CD21IS187)
Under the Guidance of
Prof. Sudarsanan D Prof. K Navya
Assistant Professor Dept. of ISE Assistant Professor Dept. of ISE
Department of Information Science and Engineering
CAMBRIDGE INSTITUTE OF TECHNOLOGY, BANGALORE-560 036
K.R. PURAM, BANGALORE – 560 036, Ph: 080-2561 8798 / 2561 8799
Fax: 080-2561 8789, email: principal@cambridge.edu.in
Affiliated to VTU, Belagavi| Approved by AICTE, New Delhi| NAAC A+ & NBA Accredited|
UGC 2(f) Certified| Recognized by Govt. of Karnataka
2024-2025
CAMBRIDGE INSTITUTE OF TECHNOLOGY, BANGALORE-560 036
K.R. PURAM, BANGALORE – 560 036, Ph: 080-2561 8798 / 2561 8799
Fax: 080-2561 8789, email: principal@cambridge.edu.in
Affiliated to VTU, Belagavi| Approved by AICTE, New Delhi| NAAC A+ & NBA Accredited|
UGC 2(f) Certified| Recognized by Govt. of Karnataka
DEPARTMENT OF INFORMATION SCIENCE & ENGINEERING
CERTIFICATE
Certified that Mr. Roshan Sah bearing USN 1CD21IS187, a bonafide student of
Cambridge Institute of Technology, has successfully completed the Research Internship
/Industry Internship Report entitled “Digital Twin Toolbox” in partial fulfillment of the
requirements for VIII semester Bachelor of Engineering in Information Science and
Engineering of Visvesvaraya Technological University, Belagavi during academic year 2024-
2025. It is certified that all Corrections/Suggestions indicated for Internal Assessment have been
incorporated in the report deposited in the departmental library. The Internship report has been
approved as it satisfies the academic requirements prescribed for the Bachelor of Engineering
degree.
Internship Coordinator, Head of the Department,
Prof. Sudarsanan D Dr. Preethi S,
Prof. Karangule Navya Dept. of ISE, CITech
Dept. of ISE, CITech
Signature
Name of the Examiners
1.
2.
ACKNOWLEDGEMENT
I would like to place on record my deep sense of gratitude to Shri. D. K. Mohan, Chairman,
Cambridge Group of Institutions, Bangalore, India for providing excellent Infrastructure and
Academic Environment at CITech without which this work would not have been possible.
I am extremely thankful to Dr. G. Indumathi, Principal, CITech, Bangalore, for providing me
the academic ambience and everlasting motivation to carry out this work and shaping our
careers.
I express my sincere gratitude to Dr. Preethi S, HOD, Dept. of Information Science and
Engineering, CITech, Bangalore, for her stimulating guidance, continuous encouragement and
motivation throughout the course of present work.
I also wish to extend my thanks to Internship Coordinator, Prof. Sudarsanan D, Assistant
Professor, Prof. Karangula Navya Assistant Professor Dept. of ISE, CITech, Bangalore for the
critical, insightful comments, guidance and constructive suggestions to improve the quality of
this work.
Finally to all my friends, classmates who always stood by me in difficult situations also helped
me in some technical aspects and last but not the least, I wish to express deepest sense of
gratitude to my parents who were a constant source of encouragement and stood by me as pillar
of strength for completing this work successfully.
Roshan Sah
i
ABSTRACT
This internship focused on the development of a Digital Twin Toolbox using Python and Docker
to simulate and monitor physical systems in a virtual environment. The objective was to create a
flexible, modular solution capable of replicating real-world system behavior in real time. Python
was employed for building simulation models, processing real-time data, and visualizing system
performance using libraries such as NumPy, Pandas, and Matplotlib. Docker was used to
containerize the entire application, ensuring consistent deployment across different environments
and simplifying dependency management. The toolbox supports integration with external data
sources, system modeling, and user interaction through APIs or dashboards. Docker Compose
was utilized for orchestrating multi-container applications, including backend services and
databases. This project provided practical experience in digital twin architecture,
containerization, and software deployment, while demonstrating how combining Python and
Docker can streamline the development of scalable, reliable digital twin solutions for industrial
and research applications and to solve real word problems as well in short time.
ii
TABLE OF CONTENTS
Acknowledgement i
Abstract ii
Table of Contents iii
List of Figure iv
Chapter Contents Page
Number Number
1 COMPANY PROFILE 01
1.1 Introduction 01
1.2 Overview of the Organization 02
2 TASK PERFORMED 05
2.1 Learning Experiences 05
2.2 Knowledge Acquired 05
2.3 Skills Learned 05
2.4 The Most Challenging Task Performed 05
2.5 Problem Identified 06
3 REFLECTIONS 07
3.1 Solutions 07
3.2 Screenshots 17
CONCLUSION 20
iii
LIST OF FIGURES
FIGURE NO. FIGURE NAME PAGE NO.
2.1 Workflow and Dependencies 6
3.1 Code Snapshots Frontend 17
3.2 Code Snapshots Backend 17
3.3 Code Snapshots Backend 18
3.4 Twin Toolbox UI 18
3.5 Add Asset Page 19
3.6 Pipeline Page 19
iv
CHAPTER 1
COMPANY PROFILE
1.1 INTRODUCTION
Cambrian Consultancy Center & Industrial Research (CCCIR) is a nonprofit foundation
established in 2021 to advance the research and innovation mission of the Cambridge Institute of
Technology (CIT), Bengaluru. As CIT's official R&D and innovation arm, CCCIR oversees key
initiatives including the Research & Development Center, Technology Center, Center of
Excellence, Consultancy & Training, Incubation & Entrepreneurship Cell, and International
Partnerships.
CCCIR serves as a collaborative platform for domestic and international researchers and
innovators, providing a learning and development space for growing researchers. The
organization focuses on solving pressing scientific problems and leading the discovery and
design of groundbreaking products and technologies.
With a team size of 11–50 employees, CCCIR is led by Dr. Cyril Prasanna Raj P, a professor in
the ECE Department at CIT with over 26 years of experience in VLSI signal processing. The
center has achieved significant milestones, such as the design and testing of a Display Controller
IC by its undergraduate and postgraduate students.
It oversees several key functions including R&D labs, centers of excellence, technology transfer
initiatives, and international partnerships. The organization facilitates industry-academia
collaboration, startup incubation, and real-world application of academic research, primarily in
areas like electronics, VLSI, and embedded systems.
B.E, Dept. of ISE, CITech 2024-25 Page 1
Digital Twin Toolbox Introduction
1.2 OVERVIEW OF THE ORGANIZATION
Cambrian Consultancy Center & Industrial Research (CCCIR) is the dedicated research,
innovation, and consultancy wing of Cambridge Institute of Technology (CIT), Bengaluru.
Founded in 2021, CCCIR aims to bridge the gap between academic knowledge and real-world
industrial challenges. It provides a dynamic ecosystem that supports interdisciplinary research,
advanced technological development, and entrepreneurial activities. The center empowers
students, faculty, and external collaborators to work on projects in emerging domains such as
VLSI, artificial intelligence, embedded systems, smart electronics, and IoT.
CCCIR offers structured platforms for R&D, industrial consultancy, product prototyping, and
startup incubation. By encouraging hands-on learning and practical application, it ensures that
academic efforts lead to tangible outcomes. Through partnerships with industry and international
institutions, CCCIR facilitates knowledge transfer and enhances global research exposure for its
participants.
The center also hosts specialized training programs, workshops, and mentorship initiatives that
cultivate innovation and leadership skills among students. Its facilities are designed to support
both fundamental research and applied technology solutions, making it a key driver of
institutional growth and societal impact. CCCIR’s mission is not only to advance science and
engineering but also to transform young talent into future innovators and entrepreneurs.
B.E, Dept. of ISE, CITech 2024-25 Page 2
CHAPTER 2
TASK PERFORMED
2.1 LEARNING EXPEIENCES
During our work on the Digital Twin Toolbox, we used GitHub for version control and
collaboration. We learned essential Git commands, such as git init, git add, git commit, and git
push to manage our project. These tools allowed us to track changes and collaborate on the
development of the Digital Twin models. By pushing and pulling code to/from remote
repositories, we ensured that all team members had access to the latest updates and could
contribute efficiently. This hands-on experience helped us improve our understanding of
collaborative workflows in software development, especially in complex systems like digital
twins.
2.2 KNOWLEDGE ACCQUIRED
Through our work on the Digital Twin Toolbox, we gained valuable knowledge in system
modeling, real-time data integration, and the deployment of scalable solutions using Python and
Docker. We learned how to build and simulate digital twins, manage data flows, and visualize
system behavior. Additionally, we gained practical experience in version control using GitHub,
collaborating effectively within a team, and managing code changes. This experience enhanced
our understanding of both the technical and collaborative aspects of developing advanced digital
solutions.
Moreover, we became adept at troubleshooting issues, ensuring smooth integration of
components, and refining our approach to meet real-world demands. Working with Docker also
helped us understand the significance of environment consistency and scalability in large
applications, while using Python empowered us to develop flexible, efficient models for diverse
applications. The experience solidified our problem-solving and project management skills,
essential for navigating complex software development challenges.
B.E, Dept. of ISE, CITech 2024-25 Page 3
Digital Twin Toolbox Task Performed
2.3 SKILLS LEARNED
In the process of developing the Digital Twin Toolbox, we acquired several key skills:
1. Python Programming – Proficiency in building data models and simulations.
2. Docker – Understanding containerization and deploying applications in isolated
environments.
3. GitHub Version Control – Using Git commands like git add, git commit, git push for
efficient code management and collaboration.
4. Digital Twin Concepts – Gaining insight into real-time data integration and system
monitoring.
5. Collaborative Development – Working in teams, managing code conflicts, and merging
contributions effectively.
2.4 THE MOST CHALLENGING TASK PERFORMED
During the Digital Twin Toolbox project, we encountered several challenges while pushing code
to the repository and executing the project. One of the major issues was resolving module errors.
We faced difficulties with missing or incompatible dependencies when installing and running
various Python libraries for the simulation models. This required a lot of debugging to identify
the correct versions and dependencies.
Additionally, there were occasional Git errors during code pushes, such as merge conflicts and
failed commits. These issues arose when multiple team members worked on the same files
simultaneously. We had to resolve these conflicts by carefully reviewing changes and using Git’s
conflict resolution tools.
These challenges taught us how to troubleshoot module errors, manage dependencies effectively,
and handle version control conflicts while collaborating in a team environment.
B.E, Dept. of ISE, CITech 2024-25 Page 4
Digital Twin Toolbox Task Performed
2.5 PROBLEMS INDENTIFIED
As urban environments become increasingly complex, the demand for high-fidelity 3D
representations has grown across industries such as urban planning, construction, disaster
management, and smart city development. While the 3D Tiles format (developed by Cesium) is a
powerful and scalable solution for rendering and streaming 3D geospatial data, generating 3D
Tiles from real-world datasets like Shapefiles and LiDAR data remains a fragmented and
technically demanding process.
Key problems identified include:
1. Lack of Unified Workflow:
There is no out-of-the-box, open-source toolchain that provides an end-to-end pipeline to
convert heterogeneous urban datasets (e.g., shapefiles, LAS/LAZ files) into optimized 3D
Tiles.
2. Tool Incompatibility and Complexity:
Existing tools for processing spatial and LiDAR data often require complex setup, lack
documentation, and do not interoperate well—leading to high entry barriers for
developers and GIS professionals.
3. Cross-Platform Issues:
Certain platform-specific issues (e.g., database initialization errors on macOS) hinder
usability and portability of current solutions.
4. CRS and Data Normalization Challenges:
LiDAR and shapefile datasets often come with different coordinate systems and metadata
structures. Ensuring correct reprojection, resampling, and alignment is non-trivial and
error-prone.
5. Lack of Automation and Scalability:
Manual steps dominate current workflows, which limits the ability to batch process or
scale to city-level datasets. Features like automated asset ingestion, point cloud
classification, or tile generation logic (octree/quadtree) are missing or immature.
6. Incomplete Viewer and Visualization Tools:
Although the project includes a basic application viewer with extruded polygons, it lacks
robust support for user interaction, point cloud rendering, and UI/UX customization for
varied data types.
B.E, Dept. of ISE, CITech 2024-25 Page 5
Digital Twin Toolbox Task Performed
7. Insufficient Documentation and Testing:
The project is still under heavy development with limited documentation, testing
coverage, and community feedback mechanisms.
Fig 2.1: Workflow and Dependencies
B.E, Dept. of ISE, CITech 2024-25 Page 6
CHAPTER 3
REFLECTIONS
3.1 Solutions
To address the challenges in generating 3D Tiles from heterogeneous urban data sources,
the project introduces a modular, Docker-based toolbox with the following proposed
solutions:
1. Integrated Toolchain in Docker Environment: A unified Dockerized platform bundles
various open-source tools and libraries, enabling seamless interoperability and
simplifying setup across different systems. This minimizes configuration errors and
ensures reproducibility.
2. Draft Pipelines for Common Data Sources:
o Shapefiles (Polygons, Lines, Points): A dedicated conversion pipeline that
handles spatial feature extraction and extrusion into 3D geometries.
o LiDAR Data: A robust pipeline for transforming LAS/LAZ files into 3D point
tiles, including preprocessing steps like coordinate reprojection, colorization, and
resampling.
3. Cross-Platform Compatibility Enhancements: Platform-specific bugs (e.g., macOS
task table creation) are being identified and addressed early in development, with the
aim of achieving full OS compatibility.
4. Coordinate System Normalization Utilities: Built-in tools are included to detect and
correct mismatched CRS (Coordinate Reference Systems), ensuring proper alignment
and rendering of combined datasets.
5. Scalable Processing Workflows: The roadmap includes support for batch processing,
pre-populated datasets, and future automation of tasks such as tile generation using
spatial indexing structures (octree/quadtree), improving scalability to city-scale
projects.
B.E, Dept. of ISE, CITech 2024-25 Page 7
Digital Twin Toolbox Reflections
#Code Snippets
Backend/main.py
import sentry_sdk
from fastapi import FastAPI
from fastapi.routing import APIRoute
from starlette.middleware.cors import CORSMiddleware
from fastapi.staticfiles import StaticFiles
import os
from app.api.main import api_router
from app.core.config import settings
def custom_generate_unique_id(route: APIRoute) -> str:
return f"{route.tags[0]}-{route.name}"
if settings.SENTRY_DSN and settings.ENVIRONMENT != "local":
sentry_sdk.init(dsn=str(settings.SENTRY_DSN), enable_tracing=True)
app = FastAPI(
title=settings.PROJECT_NAME,
openapi_url=f"{settings.API_V1_STR}/openapi.json",
generate_unique_id_function=custom_generate_unique_id,
# Set all CORS enabled origins
if settings.BACKEND_CORS_ORIGINS:
B.E, Dept. of ISE, CITech 2024-25 Page 8
Digital Twin Toolbox Reflections
app.add_middleware(
CORSMiddleware,
allow_origins=[
str(origin).strip("/") for origin in settings.BACKEND_CORS_ORIGINS
],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
app.include_router(api_router, prefix=settings.API_V1_STR)
static_output = os.path.join(settings.ASSETS_DATA, "output")
os.makedirs(static_output, exist_ok=True)
app.mount(
settings.API_V1_STR + '/output',
StaticFiles(directory=static_output),
name="output"
B.E, Dept. of ISE, CITech 2024-25 Page 9
Digital Twin Toolbox Reflections
Frontend/app/main.py
import sentry_sdk
from fastapi import FastAPI
from fastapi.routing import APIRoute
from starlette.middleware.cors import CORSMiddleware
from fastapi.staticfiles import StaticFiles
import os
from app.api.main import api_router
from app.core.config import settings
def custom_generate_unique_id(route: APIRoute) -> str:
return f"{route.tags[0]}-{route.name}"
if settings.SENTRY_DSN and settings.ENVIRONMENT != "local":
sentry_sdk.init(dsn=str(settings.SENTRY_DSN), enable_tracing=True)
app = FastAPI(
title=settings.PROJECT_NAME,
openapi_url=f"{settings.API_V1_STR}/openapi.json",
generate_unique_id_function=custom_generate_unique_id,
B.E, Dept. of ISE, CITech 2024-25 Page 10
Digital Twin Toolbox Reflections
# Set all CORS enabled origins
if settings.BACKEND_CORS_ORIGINS:
app.add_middleware(
CORSMiddleware,
allow_origins=[
str(origin).strip("/") for origin in settings.BACKEND_CORS_ORIGINS
],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
app.include_router(api_router, prefix=settings.API_V1_STR)
static_output = os.path.join(settings.ASSETS_DATA, "output")
os.makedirs(static_output, exist_ok=True)
app.mount(
settings.API_V1_STR + '/output',
StaticFiles(directory=static_output), Digital Twin Toolbox
name="output"
B.E, Dept. of ISE, CITech 2024-25 Page 11
Digital Twin Toolbox Reflections
Frontend/src/hooks/useAuth.ts
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"
import { useNavigate } from "@tanstack/react-router"
import { useState } from "react"
import { AxiosError } from "axios"
import {
type Body_login_login_access_token as AccessToken,
type ApiError,
LoginService,
type UserPublic,
type UserRegister,
UsersService,
} from "../client"
import useCustomToast from "./useCustomToast"
const isLoggedIn = () => {
return localStorage.getItem("access_token") !== null
const useAuth = () => {
const [error, setError] = useState<string | null>(null)
B.E, Dept. of ISE, CITech 2024-25 Page 12
Digital Twin Toolbox Reflections
const navigate = useNavigate()
const showToast = useCustomToast()
const queryClient = useQueryClient()
const { data: user, isLoading } = useQuery<UserPublic | null, Error>({
queryKey: ["currentUser"],
queryFn: UsersService.readUserMe,
enabled: isLoggedIn(),
})
Frontend/src/hooks/useCustomToast.ts
import { useToast } from "@chakra-ui/react"
import { useCallback } from "react"
const useCustomToast = () => {
const toast = useToast()
const showToast = useCallback(
(title: string, description: string, status: "success" | "error") => {
toast({
title, description, status, isClosable: true, position: "bottom-right",
})
},
[toast],
) return showToast
B.E, Dept. of ISE, CITech 2024-25 Page 13
Digital Twin Toolbox Reflections
Frontend/src/utils.ts
import type { ApiError } from "./client"
export const emailPattern = {
value: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i,
message: "Invalid email address",
export const namePattern = {
value: /^[A-Za-z\s\u00C0-\u017F]{1,30}$/,
message: "Invalid name",
export const passwordRules = (isRequired = true) => {
const rules: any = {
minLength: {
value: 8,
message: "Password must be at least 8 characters",
},
if (isRequired) {
B.E, Dept. of ISE, CITech 2024-25 Page 14
Digital Twin Toolbox Reflections
rules.required = "Password is required"
return rules
export const confirmPasswordRules = (
getValues: () => any,
isRequired = true,
) => {
const rules: any = {
validate: (value: string) => {
const password = getValues().password || getValues().new_password
return value === password ? true : "The passwords do not match"
},
if (isRequired) {
rules.required = "Password confirmation is required"
return rules
B.E, Dept. of ISE, CITech 2024-25 Page 15
Digital Twin Toolbox Reflections
export const handleError = (err: ApiError, showToast: any) => {
const errDetail = (err.body as any)?.detail
let errorMessage = errDetail || "Something went wrong."
if (Array.isArray(errDetail) && errDetail.length > 0) {
errorMessage = errDetail[0].msg
showToast("Error", errorMessage, "error")
B.E, Dept. of ISE, CITech 2024-25 Page 16
Digital Twin Toolbox Reflections
3.2 Screenshots
Fig 3.1: Code Snapshots Frontend
Fig 3.2: Code Snapshots Backend
B.E, Dept. of ISE, CITech 2024-25 Page 17
Digital Twin Toolbox Reflections
Fig 3.3: Code Snapshots Backend
Fig 3.4: Twin toolbox UI
B.E, Dept. of ISE, CITech 2024-25 Page 18
Digital Twin Toolbox Reflections
Fig 3.5: Add Asset Page
Fig 3.6: Pipeline Page
B.E., Dept of ISE, CITech 2024-25 Page 19
CONCLUSION
The Digital Twin Toolbox project provided an excellent learning opportunity to develop a
deep understanding of system modeling, real-time data integration, and the deployment of
scalable solutions. Throughout the development process, we encountered several challenges,
particularly related to module errors, version control conflicts, and integration issues. Despite
these hurdles, the experience allowed us to refine our problem-solving skills, improve our
collaboration, and strengthen our technical abilities in Python, Docker, and Git.
Working on this project helped us grasp the complexities of creating digital twins, from
simulating real-world systems to ensuring smooth data flow and accurate visualization. We
also learned the importance of maintaining a consistent development environment and
managing dependencies effectively. Furthermore, the collaborative aspect of the project
taught us how to efficiently handle version control issues and resolve conflicts that arise when
multiple contributors work on the same codebase.
In conclusion, the Digital Twin Toolbox project not only enhanced our technical knowledge
but also equipped us with essential skills for real-world software development, including
troubleshooting, teamwork, and managing complex systems. The experience solidified our
understanding of the practical challenges involved in building scalable solutions and prepared
us for future projects in the field of digital technologies.
B.E, Dept. of ISE, CITech 2024-25 Page 20