Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
128 commits
Select commit Hold shift + click to select a range
b5c7834
bring changes over from skj/toolchain
kevinjin0420 Jun 20, 2026
d8990d8
whoops dont track that
kevinjin0420 Jun 20, 2026
100b758
gitignore
kevinjin0420 Jun 20, 2026
682bcb8
revert to old image
kevinjin0420 Jun 20, 2026
b5ff33f
remove files that shouldnt be tracked here
kevinjin0420 Jun 20, 2026
595aa48
main's build job
kevinjin0420 Jun 20, 2026
b208a3a
min diff
kevinjin0420 Jun 20, 2026
8e72584
min diff on ci yml
kevinjin0420 Jun 20, 2026
187eee5
remove unnecessary packages
kevinjin0420 Jun 20, 2026
f9b20b3
just take main's dockerfile
kevinjin0420 Jun 21, 2026
87b7137
clean up setup_dawn
kevinjin0420 Jun 21, 2026
20efece
manif will never be found as sys package, fetch and reference directly
kevinjin0420 Jun 21, 2026
ab329d1
llvm repos to https
kevinjin0420 Jun 21, 2026
d24500a
clarifying comment
kevinjin0420 Jun 21, 2026
daea5a6
style
kevinjin0420 Jun 21, 2026
1b4703e
trailing space is crazy
kevinjin0420 Jun 21, 2026
e5b8572
fetch newest imgui and remove tracking
kevinjin0420 Jun 21, 2026
7e27299
revert glfw_pointer changes
kevinjin0420 Jun 21, 2026
7a4531d
comments more concise on sim gui changes
kevinjin0420 Jun 21, 2026
96c9604
sim render cpp cleanup
kevinjin0420 Jun 21, 2026
7261d58
remove build scripts, bring CI changes over to build role
kevinjin0420 Jun 21, 2026
791905e
remove break system packages opt for build ansible
kevinjin0420 Jun 21, 2026
9122cc4
move setup_dawn to scripts/
kevinjin0420 Jun 22, 2026
7ee526f
remove build_ci
kevinjin0420 Jun 22, 2026
996ad79
remove commented out build_ci reference from workflow
kevinjin0420 Jun 22, 2026
34bbae1
remove dockerignore
kevinjin0420 Jun 22, 2026
790af81
remove unused packages
kevinjin0420 Jun 22, 2026
3fac44c
explicitly pin manifpy to 0.0.5 to align with cpp
kevinjin0420 Jun 22, 2026
1bb8ff7
set disconnected to disable git fetch, save restore on BUILD_TESTING,…
kevinjin0420 Jun 22, 2026
11a72e1
return keyware
kevinjin0420 Jun 22, 2026
b866949
update dawn script to align with fork
kevinjin0420 Jun 25, 2026
1655521
dont build sim on jetson
kevinjin0420 Jul 4, 2026
99cd4a8
make MROVER_JETSON a plain var so its not cached
kevinjin0420 Jul 10, 2026
72a8c43
jazzy and ubuntu 24 migration
kevinjin0420 Jul 10, 2026
9d679f0
fix wrongly ported ansible naming
kevinjin0420 Jul 11, 2026
f2eb87d
clean up comment, remove unused scope
kevinjin0420 Jul 11, 2026
147479a
switch to google's dawn release so we dont rack up 150 in CI costs
kevinjin0420 Jul 11, 2026
5d3ca24
dawn match exact commit hash
kevinjin0420 Jul 11, 2026
5e22a19
mrover_repo naming update in prep for pixi
kevinjin0420 Jul 11, 2026
878738f
percep ansible updates
MyCabbages4 Aug 3, 2026
3a659c9
Merge branch 'main' into skj/ubuntu24-native
kevinjin0420 Aug 3, 2026
1d05c13
main's cmakelists
kevinjin0420 Aug 3, 2026
a4fab0b
allow bytes unused
kevinjin0420 Aug 3, 2026
b8518f0
qt5 to 6 migration
kevinjin0420 Aug 3, 2026
688d602
adapt bootstrap for new structure
kevinjin0420 Aug 4, 2026
d401546
update clean.sh for new arch
kevinjin0420 Aug 4, 2026
99895f9
esw fixes to make it compile under gcc 13
kevinjin0420 Aug 4, 2026
e3504e3
Merge branch 'skj/ubuntu24-native' of github.com:umrover/mrover-ros2 …
kevinjin0420 Aug 4, 2026
e4a504f
modify build script to use clang-tidy on ci
kevinjin0420 Aug 4, 2026
2571619
named deleter for glfw pointer fix
kevinjin0420 Aug 4, 2026
549e3fa
Merge branch 'skj/ubuntu24-native' of github.com:umrover/mrover-ros2 …
kevinjin0420 Aug 4, 2026
f03e74f
files explicit declare deleter, avoid error reporting on libeigen
kevinjin0420 Aug 4, 2026
63cce26
force clang, revert cmakelists changes
kevinjin0420 Aug 4, 2026
7169b14
fix CI bugs and caching
kevinjin0420 Aug 4, 2026
4da8dad
bump actions versions
kevinjin0420 Aug 4, 2026
d41b7c3
update to match bumped checkout ver
kevinjin0420 Aug 4, 2026
8181d8e
delimit parallelism
kevinjin0420 Aug 4, 2026
4c2ee79
new repo location supporting changes
kevinjin0420 Aug 4, 2026
be58ec7
style
kevinjin0420 Aug 4, 2026
29b4515
remove gate for cuda compiler
kevinjin0420 Aug 4, 2026
1e6ef36
whitespace
kevinjin0420 Aug 4, 2026
4066f99
gitignore change and flag ci potential problem
kevinjin0420 Aug 4, 2026
d031303
remove recursive submodule checkout in CI
kevinjin0420 Aug 4, 2026
3afbf74
maintenance
kevinjin0420 Aug 5, 2026
0a3957c
fix ansible sh
kevinjin0420 Aug 5, 2026
763ed64
restore main's CI checkout approach
kevinjin0420 Aug 5, 2026
0856735
bypass ownership check
kevinjin0420 Aug 5, 2026
5bc032d
try this instead
kevinjin0420 Aug 5, 2026
fc190fb
dockerfile fix
kevinjin0420 Aug 5, 2026
ac19c1e
dockerfile changes and support
kevinjin0420 Aug 6, 2026
7cfd9b9
change dockerfile for size, source env to find colcon
kevinjin0420 Aug 6, 2026
08a520c
full path
kevinjin0420 Aug 6, 2026
8369bdd
bump ccache by one more decimal
kevinjin0420 Aug 6, 2026
85a1896
revert esw changes (changed CI to clang), update ansible to be friend…
kevinjin0420 Aug 6, 2026
e255216
specify full ccache version
kevinjin0420 Aug 6, 2026
6eeeab3
remove dead ansible role
kevinjin0420 Aug 6, 2026
1868217
further ansible modernization
kevinjin0420 Aug 6, 2026
f30571a
revert unnecessary changes
kevinjin0420 Aug 6, 2026
d7fe727
Merge branch 'main' into skj/ubuntu24-native
kevinjin0420 Aug 8, 2026
aa7504d
install python3-debian in necessary playbooks
kevinjin0420 Aug 8, 2026
3745d35
apt update if repos changed
kevinjin0420 Aug 8, 2026
bd0f63d
proper zshrc detection
kevinjin0420 Aug 8, 2026
b7eadb6
remove duped chrome install in build
kevinjin0420 Aug 8, 2026
2ffa02d
fetch content in build role instead of cmakelists
kevinjin0420 Aug 11, 2026
032455b
checkout all submodules in dev playbook
kevinjin0420 Aug 11, 2026
72505d2
fetch manif and imgui in CI ansible playbook
kevinjin0420 Aug 11, 2026
d27d3d0
Merge branch 'main' into skj/ubuntu24-native
kevinjin0420 Aug 11, 2026
ce1544f
minor cleanup
kevinjin0420 Aug 12, 2026
b0ac4de
return jetson yml
kevinjin0420 Aug 12, 2026
b06c94f
address .vscode/ file inconsistencies, modernize ansible
kevinjin0420 Aug 13, 2026
0de2986
Merge branch 'main' into skj/ubuntu24-native
kevinjin0420 Aug 15, 2026
24ea8da
Merge branch 'main' into skj/ubuntu24-native
kevinjin0420 Aug 22, 2026
e4aae63
restore new path
kevinjin0420 Aug 22, 2026
0d89b8e
bad yaml
kevinjin0420 Aug 22, 2026
1e94a9c
google-chrome fallback for gui launcher
kevinjin0420 Aug 24, 2026
fec3ede
use ansible builtin command over pip (bug)
kevinjin0420 Aug 24, 2026
f59bb2a
ansible sudo cache fix
kevinjin0420 Aug 24, 2026
2684cba
move to build playbook
kevinjin0420 Aug 24, 2026
0a0d0d8
move sudo become fix into script
kevinjin0420 Aug 24, 2026
da1fbda
remove virtualenvwrapper
kevinjin0420 Aug 25, 2026
af40c2c
gate argcomplete, sudoers fix script
kevinjin0420 Aug 25, 2026
fa78a0b
publish CI docker image
kevinjin0420 Aug 24, 2026
67c3831
fix mypy errors surfaced by toolchain bump
kevinjin0420 Aug 24, 2026
e888d5c
ansible workaround
kevinjin0420 Aug 25, 2026
4ba003a
rephrase
kevinjin0420 Aug 25, 2026
18de547
bring over bootstrap to setup pipeline and cleanup
kevinjin0420 Aug 26, 2026
8336853
harden repo directory resolution to handle symlinks, mrover_repo env var
kevinjin0420 Aug 26, 2026
70909e9
new zshenv scheme from portable branch
kevinjin0420 Aug 26, 2026
f137a49
remove other PM files
kevinjin0420 Aug 26, 2026
d21b85e
Merge branch 'main' into skj/ubuntu24-native
kevinjin0420 Aug 26, 2026
ed0e7b5
move nosnap to its own branch, return chromium through snap
kevinjin0420 Aug 26, 2026
26fd5fe
ansible.sh polish
kevinjin0420 Aug 27, 2026
21d511a
remove sudo -v check
kevinjin0420 Aug 27, 2026
d81c141
use umrover1 docker image
kevinjin0420 Aug 27, 2026
c5a1f4c
Merge branch 'main' into skj/ubuntu24-native
kevinjin0420 Aug 27, 2026
8755705
throw ros distro and ubuntu release in an ansible vars file
kevinjin0420 Aug 27, 2026
f51e855
Merge branch 'main' into skj/ubuntu24-native
kevinjin0420 Aug 27, 2026
6b735c4
rename to native.yml
kevinjin0420 Aug 28, 2026
6b6112b
Merge branch 'main' into skj/ubuntu24-native
kevinjin0420 Aug 28, 2026
a262220
Merge branch 'main' into skj/ubuntu24-native
kevinjin0420 Aug 28, 2026
51f92b1
remove unnecessary pip upgrade
kevinjin0420 Aug 28, 2026
cd42775
Merge remote-tracking branch 'origin/main' into ubuntu24/percep_ansible
MyCabbages4 Aug 28, 2026
64fb080
cuda version
MyCabbages4 Aug 28, 2026
1cfdc0e
percep ansible updates
MyCabbages4 Aug 28, 2026
9296c15
percep ansible updates
MyCabbages4 Aug 28, 2026
e1e2bf8
guard git-lfs install in setup.sh
kevinjin0420 Aug 29, 2026
96d2782
Updated jetson and percep build yamls
MyCabbages4 Sep 1, 2026
a84a0ff
Fix silent on ZED SDK install
MyCabbages4 Sep 1, 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
61 changes: 38 additions & 23 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
- name: Install clang-format
run: |
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
sudo add-apt-repository 'deb https://apt.llvm.org/jammy/ llvm-toolchain-jammy-18 main'
sudo add-apt-repository 'deb https://apt.llvm.org/noble/ llvm-toolchain-noble-18 main'
sudo apt-get update
sudo apt-get install -y clang-format-18
- name: Install shellcheck
Expand All @@ -31,39 +31,54 @@ jobs:
- name: Run Style Check
run: ./style.sh

ci:
name: Build
runs-on: ubuntu-latest
needs: style
build-native:
name: Build (native Ubuntu 24)
runs-on: ubuntu-24.04
container:
image: umrover1/ros2-ci:jammy
# GitHub is silly and requires us to be running as root for their checkout action
# Our docker container exports the user mrover, so we have to specific this explicitly
image: umrover1/ros2-ci:noble
# by pass github's dubious ownership check
options: --user root
needs: style
env:
# directory owned by mrover so CI can write to it and use caching
# this is new for ubuntu 24
HOME: /home/mrover
steps:
- uses: actions/checkout@v7
with:
# Re-enable when we put the simulator in the CI pipeline.
# lfs: "true"
# This makes sure that $GITHUB_WORKSPACE is the catkin workspace path
path: "src/mrover"
# Re-enable lfs: "true" when we put the simulator in the CI pipeline.
- name: Compiler Cache
if: github.event.pull_request.draft == false
uses: hendrikmuhs/ccache-action@v1.2.23
- name: Dawn Cache
if: github.event.pull_request.draft == false
uses: actions/cache@v6
with:
path: src/mrover/deps/dawn-prebuilt
key: dawn-${{ hashFiles('src/mrover/scripts/setup_dawn.sh') }}
path: deps/dawn-prebuilt
key: dawn-${{ hashFiles('scripts/setup_dawn.sh') }}
- name: Setup Dawn
if: github.event.pull_request.draft == false
run: ./scripts/setup_dawn.sh
working-directory: "${{ github.workspace }}/src/mrover"
- name: Manif Cache
uses: actions/cache@v6
with:
path: deps/manif-src
key: manif-${{ hashFiles('scripts/setup_manif.sh') }}
- name: Setup Manif
run: ./scripts/setup_manif.sh
- name: Imgui Cache
uses: actions/cache@v6
with:
path: deps/imgui-src
key: imgui-${{ hashFiles('scripts/setup_imgui.sh') }}
- name: Setup Imgui
run: ./scripts/setup_imgui.sh
- name: Pip Cache
uses: actions/cache@v6
with:
path: /home/mrover/.cache/pip
key: pip-${{ hashFiles('pyproject.toml', 'esw/fw/tools/pyproject.toml') }}
restore-keys: |
pip-
- name: Compiler Cache
uses: hendrikmuhs/ccache-action@v1.2.23
- name: Build
if: github.event.pull_request.draft == false
shell: bash
run: . /opt/ros/humble/setup.sh && . /home/mrover/ros2_ws/src/mrover/venv/bin/activate && cd $GITHUB_WORKSPACE/src/mrover/ && ./build.sh
# - name: Test
# if: github.event.pull_request.draft == false
# run: . /opt/ros/noetic/setup.sh && . /home/mrover/ros2_ws/src/mrover/venv/bin/activate && . $GITHUB_WORKSPACE/devel/setup.sh && catkin test && rostest mrover integration.test --text
run: source /opt/ros/jazzy/setup.bash && source /home/mrover/mrover-ros2/venv/bin/activate && ./build.sh Release
5 changes: 3 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@

# Downloaded prebuilt dependencies
/deps/dawn-prebuilt/
/deps/.fetchcontent/
/deps/manif-src/
/deps/imgui-src/

# Common IDE's, ideally this should be in global gitignore per user
.vscode/
Expand Down Expand Up @@ -55,4 +56,4 @@ data/raw-pano-images
.dynamixel_sdk/

# Persistent esw mrover_can FetchContent cache (survives a clean build, not tracked)
/.cache/esw/
/deps/.fetchcontent/esw/
8 changes: 4 additions & 4 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/../../install/Debug/mrover/lib/mrover/${input:myStringInput}",
"program": "${workspaceFolder}/install/Debug/mrover/lib/mrover/${input:myStringInput}",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [
{
"name": "LD_LIBRARY_PATH",
"value": "${workspaceFolder}/../../install/Debug/mrover/lib:/opt/ros/humble/opt/rviz_ogre_vendor/lib:/opt/ros/humble/lib/aarch64-linux-gnu:/opt/ros/humble/lib/x86_64-linux-gnu:/opt/ros/humble/lib"
"value": "${workspaceFolder}/install/Debug/mrover/lib:/opt/ros/jazzy/opt/rviz_ogre_vendor/lib:/opt/ros/jazzy/lib/aarch64-linux-gnu:/opt/ros/jazzy/lib/x86_64-linux-gnu:/opt/ros/jazzy/lib"
},
{
"name": "ROS_DOMAIN_ID",
Expand Down Expand Up @@ -44,7 +44,7 @@
"program": "${file}",
"console": "integratedTerminal",
"env": {
"LD_LIBRARY_PATH": "${workspaceFolder}/../../install/Debug/mrover/lib:/opt/ros/humble/opt/rviz_ogre_vendor/lib:/opt/ros/humble/lib/aarch64-linux-gnu:/opt/ros/humble/lib/x86_64-linux-gnu:/opt/ros/humble/lib",
"LD_LIBRARY_PATH": "${workspaceFolder}/install/Debug/mrover/lib:/opt/ros/jazzy/opt/rviz_ogre_vendor/lib:/opt/ros/jazzy/lib/aarch64-linux-gnu:/opt/ros/jazzy/lib/x86_64-linux-gnu:/opt/ros/jazzy/lib",
"ROS_DOMAIN_ID": "5"
}
}
Expand All @@ -56,7 +56,7 @@
"type": "command",
"command": "file-selector.fileSelect",
// exclude the absolute prefix path here
"args": "../../install/Debug/mrover/lib/mrover"
"args": "install/Debug/mrover/lib/mrover"
}
]
}
16 changes: 8 additions & 8 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,17 @@
"python.analysis.inlayHints.variableTypes": true,
"python.analysis.inlayHints.callArgumentNames": "all",
"python.analysis.inlayHints.functionReturnTypes": true,
// ~/ros2_ws/install/{profile}/mrover/lib/python3.10/site-packages is already in PYTHONPATH,
// ~/mrover-ros2/install/{profile}/mrover/lib/python3.12/site-packages is already in PYTHONPATH,
// but Pylance currently has a bug where it cannot handle the symlinks in it.
// Below we are just putting directly where those symlinks go for all build profiles
"python.analysis.extraPaths": [
"/opt/ros/humble/lib/python3/dist-packages",
"../../install/Debug/mrover/lib/python3.10/site-packages",
"../../install/Release/mrover/lib/python3.10/site-packages",
"../../install/RelWithDebInfo/mrover/lib/python3.10/site-packages",
"../../build/Debug/mrover/rosidl_generator_py",
"../../build/Release/mrover/rosidl_generator_py",
"../../build/RelWithDebInfo/mrover/rosidl_generator_py",
"/opt/ros/jazzy/lib/python3/dist-packages",
"install/Debug/mrover/lib/python3.12/site-packages",
"install/Release/mrover/lib/python3.12/site-packages",
"install/RelWithDebInfo/mrover/lib/python3.12/site-packages",
"build/Debug/mrover/rosidl_generator_py",
"build/Release/mrover/rosidl_generator_py",
"build/RelWithDebInfo/mrover/rosidl_generator_py",
],
"[python]": {
"editor.defaultFormatter": "ms-python.black-formatter",
Expand Down
79 changes: 46 additions & 33 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.25)
project(mrover VERSION 2025.0.0 LANGUAGES C CXX)

# Supress ROS CMake warning about Python.
cmake_policy(SET CMP0148 OLD)
cmake_policy(SET CMP0148 NEW)

set(CMAKE_CXX_STANDARD 23)
set(CXX_STANDARD_REQUIRED ON)
Expand Down Expand Up @@ -31,9 +31,6 @@ if (APPLE)
# Ensures that homebrew packages are never used over miniforge packages.
# TODO (ali): Pretty sure this doesn't do anything on macs
set(CMAKE_IGNORE_PATH /opt/homebrew)
# Find mamba python
find_package(PythonLibs REQUIRED)
# link_libraries(${PYTHON_LIBRARIES})
endif ()

if (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
Expand Down Expand Up @@ -74,8 +71,10 @@ find_package(tf2 REQUIRED)
find_package(tf2_ros REQUIRED)
find_package(urdf REQUIRED)
find_package(std_srvs REQUIRED)
find_package(ament_index_cpp REQUIRED)
find_package(magic_enum REQUIRED)
find_package(yaml_cpp_vendor REQUIRED)
find_package(yaml-cpp REQUIRED)
find_package(dynamixel_sdk REQUIRED)

if (MROVER_SIMULATOR)
Expand All @@ -91,29 +90,25 @@ if (NOT APPLE)
endif()

if (MROVER_SIMULATOR)
set(Dawn_ROOT "${CMAKE_CURRENT_LIST_DIR}/deps/dawn-prebuilt")
list(PREPEND CMAKE_PREFIX_PATH "${CMAKE_CURRENT_LIST_DIR}/deps/dawn-prebuilt")
find_package(Dawn QUIET)
if (NOT Dawn_FOUND)
message(FATAL_ERROR "Dawn not found. Run 'scripts/setup_dawn.sh' before building.")
endif ()
add_library(webgpu ALIAS dawn::webgpu_dawn)
endif ()

include(FetchContent)

set(FETCHCONTENT_BASE_DIR "${CMAKE_CURRENT_LIST_DIR}/deps/.fetchcontent")
set(FETCHCONTENT_UPDATES_DISCONNECTED ON)

FetchContent_Declare(manif
GIT_REPOSITORY https://github.com/artivis/manif.git
GIT_TAG 0.0.5
GIT_SHALLOW TRUE
SYSTEM
)
set(BUILD_TESTING_PREV ${BUILD_TESTING})
set(BUILD_TESTING OFF)
FetchContent_MakeAvailable(manif)
set(BUILD_TESTING ${BUILD_TESTING_PREV})
find_package(manif QUIET)
if (NOT manif_FOUND)
if (NOT EXISTS "${CMAKE_CURRENT_LIST_DIR}/deps/manif-src/CMakeLists.txt")
message(FATAL_ERROR "manif not found. Run 'scripts/setup_manif.sh' before building.")
endif ()
set(BUILD_TESTING_PREV ${BUILD_TESTING})
set(BUILD_TESTING OFF)
add_subdirectory("${CMAKE_CURRENT_LIST_DIR}/deps/manif-src" "${CMAKE_CURRENT_BINARY_DIR}/manif-build" EXCLUDE_FROM_ALL SYSTEM)
set(BUILD_TESTING ${BUILD_TESTING_PREV})
add_library(MANIF::manif ALIAS manif)
endif ()

find_package(PkgConfig REQUIRED)
pkg_search_module(NetLink libnl-3.0 IMPORTED_TARGET QUIET)
Expand All @@ -123,13 +118,10 @@ pkg_search_module(GstApp gstreamer-app-1.0 IMPORTED_TARGET QUIET)
pkg_search_module(LibUdev libudev IMPORTED_TARGET QUIET)

if (MROVER_SIMULATOR)
FetchContent_Declare(
imgui
GIT_REPOSITORY https://github.com/ocornut/imgui.git
GIT_TAG v1.92.8
GIT_SHALLOW TRUE
)
FetchContent_MakeAvailable(imgui)
if (NOT EXISTS "${CMAKE_CURRENT_LIST_DIR}/deps/imgui-src/imgui.cpp")
message(FATAL_ERROR "imgui not found. Run 'scripts/setup_imgui.sh' before building.")
endif ()
set(imgui_SOURCE_DIR "${CMAKE_CURRENT_LIST_DIR}/deps/imgui-src")
# avoid fetching in imgui_demo.cpp and unnecessarily compiling it
add_library(imgui STATIC
${imgui_SOURCE_DIR}/imgui.cpp
Expand Down Expand Up @@ -205,7 +197,23 @@ rosidl_generate_interfaces(${PROJECT_NAME}
DEPENDENCIES nav_msgs sensor_msgs geometry_msgs action_msgs
)

# Starter project
# rosidl sets raw source-prefixed paths on INTERFACE_INCLUDE_DIRECTORIES, which
# CMP0052 rejects. The policy explicitly permits such paths when wrapped in
# $<BUILD_INTERFACE:...>, marking them as build-only (not exported).
if(TARGET ${PROJECT_NAME}__rosidl_generator_py)
get_target_property(_py_iid ${PROJECT_NAME}__rosidl_generator_py INTERFACE_INCLUDE_DIRECTORIES)
if(_py_iid)
set(_py_iid_wrapped "")
foreach(_dir IN LISTS _py_iid)
list(APPEND _py_iid_wrapped "$<BUILD_INTERFACE:${_dir}>")
endforeach()
set_target_properties(${PROJECT_NAME}__rosidl_generator_py PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${_py_iid_wrapped}"
)
endif()
endif()

# Starter project
# TODO (ali): delete once AutonomyStarterProject.cmake is fixed
mrover_add_node(starter_project_perception ${CMAKE_CURRENT_LIST_DIR}/starter_project/autonomy/src/*.cpp)
target_link_libraries(starter_project_perception ${OpenCV_LIBS})
Expand Down Expand Up @@ -243,18 +251,23 @@ mrover_add_header_only_library(units units)
mrover_add_header_only_library(loop_profiler loop_profiler)
mrover_add_header_only_library(parameter_utils parameter_utils)
mrover_add_header_only_library(gst_utils gst_utils)
target_link_libraries(gst_utils INTERFACE magic_enum::magic_enum PkgConfig::Gst PkgConfig::GstApp)
if (Gst_FOUND AND GstApp_FOUND)
target_link_libraries(gst_utils INTERFACE magic_enum::magic_enum PkgConfig::Gst PkgConfig::GstApp)
else ()
target_link_libraries(gst_utils INTERFACE magic_enum::magic_enum)
endif ()

# Simulator

if (MROVER_SIMULATOR)
mrover_add_node(simulator simulator/*.cpp simulator simulator/pch.hpp)
ament_target_dependencies(simulator rclcpp rclcpp_components nav_msgs sensor_msgs geometry_msgs tf2 tf2_ros urdf yaml_cpp_vendor)
ament_target_dependencies(simulator rclcpp rclcpp_components nav_msgs sensor_msgs geometry_msgs tf2 tf2_ros urdf yaml_cpp_vendor ament_index_cpp)
target_link_libraries(simulator
assimp::assimp glfw3webgpu webgpu glfw webgpu_hpp imgui
${BULLET_LIBRARIES}
lie Eigen3::Eigen
opencv_core opencv_imgcodecs opencv_imgproc
yaml-cpp::yaml-cpp
loop_profiler
parameter_utils
)
Expand Down Expand Up @@ -416,12 +429,12 @@ if (MROVER_BUILD_ESW AND NetLink_FOUND AND NetLinkRoute_FOUND)
ament_target_dependencies(can_bridge rclcpp)
endif ()

# Teleop Qt5 Camera Client
find_package(Qt5 5.15 REQUIRED COMPONENTS Widgets Multimedia MultimediaWidgets)
# Teleop Qt6 Camera Client
find_package(Qt6 REQUIRED COMPONENTS Widgets Multimedia MultimediaWidgets)

mrover_add_node(camera_client teleoperation/camera_client/*.*pp teleoperation/camera_client/include/pch.hpp)
target_include_directories(camera_client PRIVATE teleoperation/camera_client/include)
target_link_libraries(camera_client gst_utils Qt::Widgets Qt::Multimedia Qt::MultimediaWidgets opencv_core opencv_imgcodecs)
target_link_libraries(camera_client gst_utils Qt6::Widgets Qt6::Multimedia Qt6::MultimediaWidgets opencv_core opencv_imgcodecs)
ament_target_dependencies(camera_client rclcpp std_srvs sensor_msgs)
set_target_properties(camera_client PROPERTIES
AUTOMOC ON
Expand Down
11 changes: 6 additions & 5 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM ubuntu:jammy
FROM ubuntu:noble

# DEBIAN_FRONTEND=noninteractive prevents apt from asking for user input
# software-properties-common is needed for apt-add-repository
Expand All @@ -8,13 +8,13 @@ RUN apt-get update -y && apt-get install software-properties-common sudo -y
RUN apt-add-repository ppa:ansible/ansible -y && apt-get install -y git git-lfs ansible

RUN useradd --create-home --shell /bin/zsh mrover
# using per user rule over sudo group because a later group rule can require a
# password and beat an earlier NOPASSWD one for the same group
# using per user rule over sudo group because noble's default %sudo rule
# requires a password and beats a NOPASSWD one for the same group
RUN echo 'mrover ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/mrover && chmod 0440 /etc/sudoers.d/mrover

USER mrover
RUN mkdir -p /home/mrover/ros2_ws/src/mrover
WORKDIR /home/mrover/ros2_ws/src/mrover
RUN mkdir -p /home/mrover/mrover-ros2
WORKDIR /home/mrover/mrover-ros2
# Defines the APT packages that need to be installed
# rosdep is called from Ansible to install them
ADD --chown=mrover:mrover ./package.xml .
Expand All @@ -26,6 +26,7 @@ ADD --chown=mrover:mrover ./mrover ./mrover
ADD --chown=mrover:mrover ./ansible ./ansible
ADD --chown=mrover:mrover ./ansible.sh .
ADD --chown=mrover:mrover ./pkg ./pkg
ADD --chown=mrover:mrover ./scripts ./scripts
# clean in the same layer so apt cache/lists don't just get removed later and still count towards size
RUN ./ansible.sh ci.yml && sudo apt-get clean && sudo rm -rf /var/lib/apt/lists/*

Expand Down
5 changes: 2 additions & 3 deletions ansible.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ if [ "$#" -le 0 ]; then
exit 1
fi

readonly MROVER_PATH=$(dirname "$0")
readonly ROS2_WS_PATH=$(realpath "${MROVER_PATH}"/../..)
readonly MROVER_PATH=$(dirname "$(realpath "$0")")

ansible-playbook -i "localhost," -c local -K "${MROVER_PATH}"/ansible/"$1" --extra-vars "ros2_workspace=${ROS2_WS_PATH} $2"
ansible-playbook -i "localhost," -c local -K "${MROVER_PATH}"/ansible/"$1" --extra-vars "mrover_repo=${MROVER_PATH}" ${2:+"$2"}
4 changes: 2 additions & 2 deletions ansible/basestation.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
- hosts: all
vars:
ubuntu_release: focal
vars_files:
- vars/native.yml
roles:
# - dev
- basestation_networks
Expand Down
5 changes: 2 additions & 3 deletions ansible/build.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
---
- hosts: all
vars:
ros_distro: humble
ubuntu_release: jammy
vars_files:
- vars/native.yml
roles:
- build
5 changes: 2 additions & 3 deletions ansible/ci.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
---
- hosts: all
vars:
ros_distro: humble
ubuntu_release: jammy
vars_files:
- vars/native.yml
roles:
- ci
Loading