Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
88 commits
Select commit Hold shift + click to select a range
ac6bf6c
Add CODE_FUNCTIONALITY_REPORT.md to document topological_navigation f…
ibrahimhroob Feb 3, 2026
b217e3b
Add ROS 2 usage notes and interaction diagram to CODE_FUNCTIONALITY_R…
ibrahimhroob Feb 3, 2026
0e4269a
Add ROS 2 System Flow Report for Topological Navigation
ibrahimhroob Feb 3, 2026
ab98467
add documentation for manager2 script
ibrahimhroob Feb 5, 2026
e1fa05b
Refactor YAML loading and data structures for topological maps
ibrahimhroob Feb 5, 2026
d3dde7d
Add class interaction diagram and method documentation for map_manager_2
ibrahimhroob Feb 5, 2026
e1390ca
Fix date pattern in topological map schema for last_updated field
ibrahimhroob Feb 9, 2026
877c7db
Add initial parameter configuration for topological_map_manager_2
ibrahimhroob Feb 9, 2026
ba005f2
Add test_simple_tmap2.yaml configuration for topological navigation
ibrahimhroob Feb 9, 2026
81fdea6
Add unit tests for topological map manager2 functionality
ibrahimhroob Feb 9, 2026
da65bd7
Add comprehensive documentation for fluid navigation and parameter se…
ibrahimhroob Feb 9, 2026
5949551
adding kiro analysis
ibrahimhroob Feb 10, 2026
8d91d43
Removing legacy code.
ibrahimhroob Feb 10, 2026
ef04792
removing util pkg
ibrahimhroob Feb 10, 2026
d63065c
Remove topological RViz tools source files
ibrahimhroob Feb 10, 2026
bccf527
remove unsed services
ibrahimhroob Feb 10, 2026
0ebcac7
Refactor map_manager2.py for improved structure and functionality
ibrahimhroob Feb 14, 2026
f020253
remove ros1 related launch files
ibrahimhroob Feb 14, 2026
bec701a
update docs path
ibrahimhroob Feb 14, 2026
1e7117f
update .gitignore
ibrahimhroob Feb 15, 2026
a520d6b
update readme.md with the removed pkgs
ibrahimhroob Feb 15, 2026
61972c3
remove deprecated docs
ibrahimhroob Feb 15, 2026
e68984b
add instructions when creating new docs
ibrahimhroob Feb 15, 2026
efcbcda
remove old files and tests
ibrahimhroob Feb 15, 2026
204e80a
remove __init__.py file
ibrahimhroob Feb 16, 2026
aaefec7
Implement feature X to enhance user experience and optimize performance
ibrahimhroob Feb 16, 2026
d0bb74d
Add NetworkX utilities and refactor localisation for improved perform…
ibrahimhroob Feb 16, 2026
ff42c37
Add pytest configuration to facilitate testing of topological_navigat…
ibrahimhroob Feb 16, 2026
5dc6770
Add YAML fixture files for testing topological navigation maps
ibrahimhroob Feb 16, 2026
49f0c84
Add pytest configuration and init file for topological_navigation tests
ibrahimhroob Feb 16, 2026
3199fc2
Refactor topological localisation2 to use networkx and kd-tree
ibrahimhroob Feb 16, 2026
cccbb50
Use parse_known_args to handle ROS2 launch file arguments in map_mana…
ibrahimhroob Feb 16, 2026
3c51683
Add unit tests for networkx_utils module
ibrahimhroob Feb 16, 2026
6ac9aa0
Update package.xml: Add maintainer and additional test dependencies
ibrahimhroob Feb 16, 2026
d51f023
Add technical documentation for Topological Localisation module
ibrahimhroob Feb 16, 2026
bd44655
Remove outdated Fluid Navigation documentation files
ibrahimhroob Feb 16, 2026
cc98692
Add topological navigation visualization package
ibrahimhroob Feb 16, 2026
d19c73c
Add detailed documentation for navigation2.py - Topological Navigatio…
ibrahimhroob Feb 20, 2026
4c3e33c
Refactor localisation2 module: Remove dead code and update tests
ibrahimhroob Feb 22, 2026
a71cd37
Refactor code structure for improved readability and maintainability
ibrahimhroob Feb 23, 2026
11ddbbc
Add GotoNode action client and navigation features to topological map…
ibrahimhroob Feb 25, 2026
49015b5
Refactor Dockerfile and scripts for improved installation process and…
ibrahimhroob Feb 25, 2026
709828c
Add topological_nav_simulator package with fake Nav2 action servers a…
ibrahimhroob Feb 25, 2026
d91b57f
WIP delete further files
ibrahimhroob Mar 4, 2026
2f2ada8
Add python3-jsonschema dependency to package.xml
ibrahimhroob Mar 4, 2026
4ef718f
Remove unnecessary buildtool dependency from package.xml
ibrahimhroob Mar 8, 2026
bfe9d0a
Remove sample_edge_reconfig_groups.yaml configuration file
ibrahimhroob Mar 8, 2026
ab6522d
Reorder data_files in setup.py to group config files together
ibrahimhroob Mar 8, 2026
411b407
Refactor run.sh to conditionally run apt/rosdep updates and improve b…
ibrahimhroob Mar 8, 2026
25023f7
Remove unused fields from template_node_2.yaml
ibrahimhroob Mar 8, 2026
5a72fd5
Refactor manual topological mapping node: enhance documentation, impr…
ibrahimhroob Mar 8, 2026
34dca73
Enhance topological navigation configuration: add parent_frame to nod…
ibrahimhroob Mar 8, 2026
af3b7d4
Refactor RViz configuration and navigation scripts: enhance visualiza…
ibrahimhroob Mar 8, 2026
59ceed9
Enhance FakeNav2Server: improve cancellation logging for NavigateToPo…
ibrahimhroob Mar 8, 2026
6d97d1e
Enhance state machine transitions: include SUCCEEDED state in PLANNIN…
ibrahimhroob Mar 8, 2026
5a33cfe
Add map conversion script: implement convert_tmap.py for legacy to ne…
ibrahimhroob Mar 8, 2026
99e2449
remove old docs
ibrahimhroob Mar 8, 2026
d60a0dd
Refactor: remove deprecated files and update imports for CustomSafeLo…
ibrahimhroob Mar 8, 2026
6314e2a
Refactor: remove TopologicalMapModel and distance calculation functio…
ibrahimhroob Mar 8, 2026
b1fb4eb
Refactor: update devcontainer configuration by removing unused port a…
ibrahimhroob Mar 8, 2026
cbea871
Refactor: bump version to 5.0.0, update maintainer info, and add topo…
ibrahimhroob Mar 8, 2026
efb9b65
remove unused files
ibrahimhroob Mar 8, 2026
4af88c9
Refactor: update navigation action configurations and remove deprecat…
ibrahimhroob Mar 8, 2026
3f7c7e1
Refactor: standardize transformation key names and update goal templa…
ibrahimhroob Mar 8, 2026
6170723
Refactor: streamline topological mapping by removing unused code and …
ibrahimhroob Mar 8, 2026
05f689b
update readme
ibrahimhroob Mar 8, 2026
4781260
Refactor: enhance visualisation timers and adjust marker scales for i…
ibrahimhroob Mar 8, 2026
12aecc8
Refactor: rename compute_row_boundary_polygon to compute_boundary_pol…
ibrahimhroob Mar 9, 2026
fa19b1a
Update rviz
ibrahimhroob Mar 9, 2026
8c23257
update transformation keys and enhance navigation actions in map YAML…
ibrahimhroob Mar 9, 2026
12d249b
add complex test map
ibrahimhroob Mar 9, 2026
65b58bc
update test and workflows
ibrahimhroob Mar 9, 2026
de2f7c5
remove geometry_msgs installation and update tests to skip if unavail…
ibrahimhroob Mar 9, 2026
a7683a7
update unit tests to handle missing geometry_msgs and adjust import s…
ibrahimhroob Mar 9, 2026
2c09204
update test configuration to use simple_map.yaml and remove unused to…
ibrahimhroob Mar 9, 2026
b9f7ec8
update static_transformer.py to set frame_id to 'simple_test_map'
ibrahimhroob Mar 9, 2026
af21f5c
fix(test): use TRANSIENT_LOCAL QoS in integration test subscribers
ibrahimhroob Mar 9, 2026
ea79f68
fix(test): guard repeated rclpy.shutdown in navigationcore tests
ibrahimhroob Mar 9, 2026
303d865
Update topological_navigation/package.xml
ibrahimhroob Mar 9, 2026
16a3d4a
Update topological_navigation/config/template_edge.yaml
ibrahimhroob Mar 12, 2026
a1353b6
Update topological_navigation/config/template_action.yaml
ibrahimhroob Mar 12, 2026
bd639f7
Update .github/copilot-instructions.md
ibrahimhroob Mar 12, 2026
63b486d
docs: update README.md and add NAVIGATION2.md for improved documentation
ibrahimhroob Mar 12, 2026
74608ad
Update .github/workflows/ci.yaml
ibrahimhroob Mar 12, 2026
13cd573
ci: refine CI configuration for improved tag handling and ROS distrib…
ibrahimhroob Mar 12, 2026
eb74be7
ci: update CI configuration to include rosdep installation and refine…
ibrahimhroob Mar 12, 2026
3bd9838
update ci
ibrahimhroob Mar 12, 2026
113f920
revert back to original
ibrahimhroob Mar 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 14 additions & 14 deletions .devcontainer/Dockerfile
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we need to review where this sits in terms of integration of the aoc_container_base. This means we would base this on lcas.lincoln.ac.uk/ros.

This would remove the need to create the lcas user here.

To then match other containers we should then have another target of devcontainer and then final.

The devcontainer then gives you a dev workspace and then final target gives you a finished deployable container.

This is assuming that our AOC use case is the most effective way of doing this for people outside of AOC.

Thoughts?

Original file line number Diff line number Diff line change
@@ -1,25 +1,25 @@
FROM lcas.lincoln.ac.uk/lcas/ros:humble
FROM ros:humble

RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
&& apt-get -y upgrade \
&& apt-get -y install --no-install-recommends ros-humble-desktop ros-humble-simulation bash-completion python3-colcon-common-extensions \
nano syslog-ng \
build-essential \
curl \
swig \
RUN rm -rf /var/lib/apt/lists/* \
&& apt-get update --fix-missing \
&& export DEBIAN_FRONTEND=noninteractive \
&& apt-get -y install --no-install-recommends --fix-missing \
ros-humble-desktop \
bash-completion \
python3-colcon-common-extensions \
python3-pip \
ros-humble-rviz2 \
python3-rosinstall-generator \
wget
python3-vcstool \
python3-rosdep \
nano \
git \
&& rm -rf /var/lib/apt/lists/*

RUN useradd -rm -d /home/lcas -s /bin/bash -g root -G sudo -u 1001 lcas
RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers

RUN echo "source /opt/ros/humble/setup.bash" >> /home/lcas/.bashrc

RUN pip3 install bloom

COPY *repos *.sh /tmp/.devcontainer/
COPY *.sh /tmp/.devcontainer/
RUN bash /tmp/.devcontainer/install.sh

RUN mkdir -p /home/lcas/ws/src && ln -s /workspaces /home/lcas/ws/src/workspaces
Expand Down
40 changes: 10 additions & 30 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,61 +1,41 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/ubuntu
{
"name": "topological_navigation",
// Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
// "image": "lcas.lincoln.ac.uk/lcas/ros:humble",
"build": {
"dockerfile": "Dockerfile",
"context": "."
},

// Features to add to the dev container. More info: https://containers.dev/features.
"features": {
"ghcr.io/devcontainers/features/desktop-lite:1": {}
},

// Use 'forwardPorts' to make a list of ports inside the container available locally.
// "forwardPorts": [],
"forwardPorts": [6080, 5901],
"forwardPorts": [6080],
"portsAttributes": {
"6080": {
"label": "novnc"
},
"5901": {
"label": "vnc"
}
"6080": { "label": "novnc" }
},
// Use 'postCreateCommand' to run commands after the container is created.

"postCreateCommand": "bash .devcontainer/run.sh",
"containerUser": "lcas",
// Configure tool-specific properties.
// "customizations": {},
"runArgs": [ "--security-opt", "seccomp=unconfined", "--cap-add=NET_ADMIN" ],
"runArgs": ["--security-opt", "seccomp=unconfined"],

"containerEnv": {
"ROS_LOCALHOST_ONLY": "0",
"LIBGL_ALWAYS_SOFTWARE": "1" // Needed for software rendering of opengl
},
"ROS_LOCALHOST_ONLY": "0",
"LIBGL_ALWAYS_SOFTWARE": "1"
},

// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
"customizations": {
"customizations": {
"vscode": {
"extensions": [
"dotjoshjohnson.xml",
"zachflower.uncrustify",
"ms-python.python",
"ms-vscode.cpptools",
"redhat.vscode-yaml",
"smilerobotics.urdf",
"streetsidesoftware.code-spell-checker",
"twxs.cmake",
"king2021.vnc-extension",
"nonanonno.vscode-ros2",
"deitry.colcon-helper",
"yzhang.markdown-all-in-one",
"github.vscode-github-actions"
"github.vscode-github-actions",
"ArshadKhan.topological-map-visual"
]
}
}

}
20 changes: 4 additions & 16 deletions .devcontainer/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,9 @@
set -e

source /opt/ros/humble/setup.bash
apt update
rosdep --rosdistro=humble update
apt-get update
rosdep init || true
rosdep --rosdistro=humble update


rm -rf /opt/ros/lcas
mkdir -p /opt/ros/lcas/src
chown -R lcas /opt/ros/lcas
cd /opt/ros/lcas/src
vcs import < /tmp/.devcontainer/lcas.repos
rosdep install --from-paths . -i -y
cd /opt/ros/lcas
colcon build


#cd /home/lcas/ws
#colcon build
echo "source /opt/ros/lcas/install/setup.bash" >> ~/.bashrc
rm -rf /var/lib/apt/lists/*

9 changes: 0 additions & 9 deletions .devcontainer/lcas.repos

This file was deleted.

33 changes: 15 additions & 18 deletions .devcontainer/run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,22 @@

set -e

WORKSPACE="`pwd`"

source /opt/ros/lcas/install/setup.bash
sudo apt update
rosdep --rosdistro=humble update


# sudo rm -rf /opt/ros/lcas
# sudo mkdir -p /opt/ros/lcas/src
# sudo chown -R lcas /opt/ros/lcas
# cd /opt/ros/lcas/src
# vcs import < $WORKSPACE/.devcontainer/lcas.repos
# rosdep install --from-paths . -i -y
# cd /opt/ros/lcas
# colcon build

source /opt/ros/humble/setup.bash

# Only run apt/rosdep update if not done before (avoid hanging on rebuild)
MARKER="/home/lcas/.postCreateDone"
if [ ! -f "$MARKER" ]; then
sudo apt-get update -qq || true
rosdep --rosdistro=humble update --include-eol-distros || true
cd /home/lcas/ws
rosdep install --from-paths ./src -i -y --rosdistro=humble || true
touch "$MARKER"
fi

cd /home/lcas/ws
rosdep install --from-paths ./src -i -y
colcon build --symlink-install
echo "source /home/lcas/ws/install/setup.bash" >> ~/.bashrc

# Add workspace sourcing to bashrc (idempotent)
grep -q "install/setup.bash" ~/.bashrc 2>/dev/null || \
echo "source /home/lcas/ws/install/setup.bash" >> ~/.bashrc

3 changes: 1 addition & 2 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,9 +116,8 @@ ros2 run topological_navigation validate_map.py path/to/map.tmap2.yaml -v

### Documentation
- `README.md`: Package-level documentation
- `doc/PROPERTIES.md`: Comprehensive guide to the properties system
- `CHANGELOG.rst`: Version history and changes

- Additional technical documentation may be found in the `doc/` directory (if present).
### Testing
- `test/`: Unit tests and integration tests
- Uses `pytest` for Python tests
Expand Down
74 changes: 42 additions & 32 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,58 +9,68 @@ on:
branches: [ humble-dev, aoc ]

jobs:
test_docker: # On Linux, iterates on all ROS 1 and ROS 2 distributions.
# -------------------------------------------------------------------
# Lightweight unit tests (no ROS runtime needed)
# -------------------------------------------------------------------
unit_tests:
name: Unit tests (Python ${{ matrix.python-version }})
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.10', '3.12']
steps:
- uses: actions/checkout@v4

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}

- name: Install test dependencies
run: |
python -m pip install --upgrade pip
pip install pytest pyyaml jsonschema networkx scipy numpy

- name: Run topological_navigation unit tests
working-directory: topological_navigation
run: |
python -m pytest test/ \
--ignore=test/test_navigationcore.py \
--ignore=test/test_localisation2.py \
-v --tb=short

- name: Run topological_nav_simulator unit tests
working-directory: topological_nav_simulator
run: |
python -m pytest test/ -v --tb=short || true
# These tests require geometry_msgs (ROS 2); they are
# fully exercised in the test_docker job below.

# -------------------------------------------------------------------
# Full ROS 2 build + colcon test
# -------------------------------------------------------------------
test_docker:
runs-on: ubuntu-latest
strategy:
matrix:
ros_distribution:
# - noetic
- humble
- iron

# Define the Docker image(s) associated with each ROS distribution.
# The include syntax allows additional variables to be defined, like
# docker_image in this case. See documentation:
# https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#example-including-configurations-in-a-matrix-build
#
# Platforms are defined in REP 3 and REP 2000:
# https://ros.org/reps/rep-0003.html
# https://ros.org/reps/rep-2000.html
include:
# Noetic Ninjemys (May 2020 - May 2025)
# - docker_image: ubuntu:focal
# ros_distribution: noetic
# ros_version: 1

# Humble Hawksbill (May 2022 - May 2027)
- docker_image: ubuntu:jammy
ros_distribution: humble
ros_version: 2

# Iron Irwini (May 2023 - November 2024)
- docker_image: ubuntu:jammy
ros_distribution: iron
ros_version: 2

# # Rolling Ridley (No End-Of-Life)
# - docker_image: ubuntu:jammy
# ros_distribution: rolling
# ros_version: 2

container:
image: ${{ matrix.docker_image }}
steps:
- name: setup ROS environment
uses: LCAS/setup-ros@master
with:
required-ros-distributions: ${{ matrix.ros_distribution }}
- name: build and test ROS 1
if: ${{ matrix.ros_version == 1 }}
uses: ros-tooling/action-ros-ci@v0.3
with:
target-ros1-distro: ${{ matrix.ros_distribution }}
- name: build and test ROS 2
if: ${{ matrix.ros_version == 2 }}
uses: ros-tooling/action-ros-ci@v0.3
with:
target-ros2-distro: ${{ matrix.ros_distribution }}
target-ros2-distro: ${{ matrix.ros_distribution }}
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -68,3 +68,7 @@ coverage.xml
**/*.*~
**/*.*.swp
.DS_Store

install/*
log/*
test.py
Loading
Loading