Skip to content

Update Tag Detector #21

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 565 commits into from
Mar 25, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
565 commits
Select commit Hold shift + click to select a range
1d4dfc5
style checks
pearlastrid Jan 24, 2025
0c2d8ee
added table frontend, need backend
neuenfeldttj Jan 24, 2025
44e4a87
style
jbrhm Jan 24, 2025
74f451e
one encoder per 3bm to use hardware timers
owenpark8 Jan 24, 2025
78060f0
rename 3bdcmc project to 3bm
owenpark8 Jan 24, 2025
03c85d8
rename 3bm dir
owenpark8 Jan 24, 2025
d7b565e
move messaging to its own library for future changes. finer grain lin…
owenpark8 Jan 24, 2025
d62c416
joint a n1 moteus config
owenpark8 Jan 24, 2025
21d0691
joint a correct direction
owenpark8 Jan 24, 2025
22cfc96
set drive controls back the original way lol
alisonryckman Jan 25, 2025
498f37a
added auton backend
neuenfeldttj Jan 25, 2025
f119ab1
deleted out of date water bottle import
Superdude11235 Jan 26, 2025
d869e93
deleted the waterbottlesearch and rocks in simyaml
ejhon1116 Jan 26, 2025
18ed9cb
Merge remote-tracking branch 'refs/remotes/origin/nav/cost_map' into …
ejhon1116 Jan 26, 2025
f3a499d
fixed waterbottlesearch stuff and an assertion issue
ejhon1116 Jan 26, 2025
f31ccd3
added segmentation again
kristerdprisant Jan 26, 2025
53991a2
fixed sim creator
Superdude11235 Jan 26, 2025
54238af
fixed toggling between using and not using costmap in param
ejhon1116 Jan 26, 2025
58bdf8b
Merge remote-tracking branch 'refs/remotes/origin/nav/cost_map' into …
ejhon1116 Jan 26, 2025
0d7ec7e
ci fix
ejhon1116 Jan 26, 2025
c591e5c
fixed issue with approach
Superdude11235 Jan 26, 2025
d73dfc3
Merge branch 'nav/cost_map' of github.com:umrover/mrover-ros2 into na…
Superdude11235 Jan 26, 2025
7dddafb
Merge
Superdude11235 Jan 26, 2025
09dc00b
finished segmentation implementation into search spiral trajectory
kristerdprisant Jan 26, 2025
f46767f
deleted chlorophyll
thealvinjg Jan 26, 2025
e011d05
update 3bm-dev
edurso Jan 26, 2025
2ed06da
Merge branch 'nav/cost_map' of github.com:umrover/mrover-ros2 into na…
kristerdprisant Jan 26, 2025
9d96bef
finished segmentation implementation into search spiral trajectory wi…
kristerdprisant Jan 26, 2025
01572e1
builds hbridge.cpp
im-a-robo Jan 26, 2025
d94a316
Merge branch 'ajr/motor-controllers' into embedded
owenpark8 Jan 26, 2025
cbd7ff0
fixed test controls and shutdown toggle
kevinjin420 Jan 26, 2025
28a28a8
fix includes
owenpark8 Jan 26, 2025
fe8f2ea
changed science_hw_bridge to use different message types, also modifi…
nbaskins Jan 26, 2025
1c811ef
remove old motor library
owenpark8 Jan 26, 2025
85aaaea
auton NOT working
neuenfeldttj Jan 26, 2025
2030daf
fixed param issue and style fix
ejhon1116 Jan 26, 2025
ed4ee31
partial fixed camera div, separated heater auto shutdown into its own…
kevinjin420 Jan 27, 2025
b8368d8
merged nav launch file
neuenfeldttj Jan 27, 2025
10eca62
sending to nav but not working
neuenfeldttj Jan 27, 2025
d9bedd4
added debug_service
neuenfeldttj Jan 27, 2025
201e60a
Merge branch 'ajr/motor-controllers' into integration
alisonryckman Jan 27, 2025
3875bcb
fixed nav disable bug
Crypt1cG Jan 27, 2025
b7b7d75
auto shutdown works on its own, need to work on heater enable
neuenfeldttj Jan 28, 2025
5b2497d
Merge branch 'teleop' of github.com:umrover/mrover-ros2 into teleop
thealvinjg Jan 28, 2025
f5f9bcd
Merge branch 'ajr/motor-controllers' into integration
alisonryckman Jan 28, 2025
066c431
science firmware and ros hw bridge
owenpark8 Jan 28, 2025
a860a94
Merge remote-tracking branch 'origin/embedded' into integration
owenpark8 Jan 28, 2025
9058014
fix build and style
owenpark8 Jan 28, 2025
eea2de7
Merge remote-tracking branch 'origin/embedded' into integration
owenpark8 Jan 28, 2025
3417a5a
auton works in sim
neuenfeldttj Jan 28, 2025
8cc53aa
clean up code
neuenfeldttj Jan 28, 2025
830965f
trying to untrack sqlite
neuenfeldttj Jan 28, 2025
d20a3b3
merged esw, added white leds and sensor data
neuenfeldttj Jan 28, 2025
7d3e23e
Merge branch 'JRA/tag-detector' into auton/auton-testing
jbrhm Jan 28, 2025
7c14752
merge old nav code
Crypt1cG Jan 28, 2025
a653413
generic enable bool service
owenpark8 Jan 28, 2025
a2dad9c
Merge branch 'loc/dual_antenna_rtk' into auton/auton-testing
umroverPerception Jan 29, 2025
4e17fcb
removed bag files
umroverPerception Jan 29, 2025
53668db
fix CAN messaging symlink on 3bm dev
edurso Jan 29, 2025
cc6a8be
auton testing 1/28
Jan 29, 2025
cc1d54f
Merge branch 'auton/auton-testing' of github.com:umrover/mrover-ros2 …
Jan 29, 2025
a4099af
simple pwm test
edurso Jan 29, 2025
148bd54
made it async
neuenfeldttj Jan 29, 2025
a301356
updated tag detector to have main.cpp
jbrhm Jan 29, 2025
4fd70f0
sa arduino project init
owenpark8 Jan 29, 2025
8cf3480
remove servo test firmware
owenpark8 Jan 29, 2025
7e5bad5
async not working anymore lol
neuenfeldttj Jan 29, 2025
5e773f7
todos for Thursday
neuenfeldttj Jan 29, 2025
3668203
updated cmake
jbrhm Jan 30, 2025
cdcbb7e
removed cmake bloat
jbrhm Jan 30, 2025
bbca56e
changes
jbrhm Jan 30, 2025
bb5db26
added more nav params
Crypt1cG Jan 30, 2025
7170029
added more missing params
Crypt1cG Jan 30, 2025
b400ecb
fixed async hopefully, need to test
neuenfeldttj Jan 30, 2025
858af24
merged teleop-merged-nav
neuenfeldttj Jan 30, 2025
5b0de23
Merge branch 'nav/cost_map' of github.com:umrover/mrover-ros2 into te…
neuenfeldttj Jan 30, 2025
3f4e95e
format
neuenfeldttj Jan 30, 2025
1a9cae4
back to sync, made async branch
neuenfeldttj Jan 30, 2025
6ba068b
changed satellite signal publishing to publish to topic instead of sc…
umroverPerception Jan 30, 2025
67a4ded
Merge branch 'teleop' of github.com:umrover/mrover-ros2 into teleop
thealvinjg Jan 31, 2025
f397167
fixed auton done state
kevinjin420 Jan 31, 2025
faf4cda
pump controls
kevinjin420 Jan 31, 2025
72d0c1f
merged teleop
kevinjin420 Jan 31, 2025
ea57286
add can test bridge for 3bm
edurso Jan 31, 2025
c6f46dc
merged teleop-ish
neuenfeldttj Jan 31, 2025
47b9d35
Merge branch 'teleop' of github.com:umrover/mrover-ros2 into teleop-sa
kevinjin420 Jan 31, 2025
75e2a61
auger and actuators backend implemented and confirmed working
kevinjin420 Jan 31, 2025
6569620
fix absolute encoders
owenpark8 Jan 31, 2025
c5f7904
dual direction pin hbridge macro
owenpark8 Jan 31, 2025
9fd3b2b
more in depth test bridge debugging
owenpark8 Jan 31, 2025
d28ad91
fixed SA mode select
kevinjin420 Jan 31, 2025
c284def
serapated components, not completed
kevinjin420 Jan 31, 2025
9fc34d6
Merge branch 'embedded' of github.com:umrover/mrover-ros2 into teleop-sa
kevinjin420 Jan 31, 2025
855eeea
fixed basic map odom
neuenfeldttj Jan 31, 2025
83f3380
Merge branch 'teleop' of github.com:umrover/mrover-ros2 into teleop-sa
kevinjin420 Jan 31, 2025
118ddb0
pump and hexhub frontend added, backend not confirmed working
kevinjin420 Feb 1, 2025
2b76da9
renamed test bridge file and added joints c and de_0
im-a-robo Feb 1, 2025
aa871c1
reverse drive control directions
alisonryckman Feb 1, 2025
5398f38
switched services over to EnableBool, backend confirmed working
kevinjin420 Feb 2, 2025
456665a
add == operator for units
owenpark8 Feb 2, 2025
3549694
fix zero throttle with dual direction pins
owenpark8 Feb 2, 2025
4f13878
fix i2c infinite loop on bad bus and add pin reset/set functions
owenpark8 Feb 2, 2025
baa3dc3
change default can ids and add filtering
owenpark8 Feb 2, 2025
1d89396
fix can ids
owenpark8 Feb 2, 2025
f161b4d
working on udev rules
jbrhm Feb 2, 2025
dfea661
changed percep launch; tested both tag detectors
jbrhm Feb 2, 2025
712a10f
everything is tested
jbrhm Feb 2, 2025
5536111
CI
jbrhm Feb 2, 2025
799a5d1
HexHub
vittorio-centore Feb 2, 2025
b46f068
pending changes
kevinjin420 Feb 2, 2025
420892b
Merge branch 'teleop' of github.com:umrover/mrover-ros2 into teleop-sa
kevinjin420 Feb 2, 2025
b62a9c4
added ublox rover gps driver
umroverPerception Feb 2, 2025
9c5569d
styling for SA (hexhub)
vittorio-centore Feb 2, 2025
ad097c7
Merge branch 'teleop-sa' of github.com:umrover/mrover-ros2 into teleo…
vittorio-centore Feb 2, 2025
c4dc8ca
Merge branch 'teleop-sa' of github.com:umrover/mrover-ros2 into teleo…
kevinjin420 Feb 2, 2025
d795b4e
dump encoder data to file
edurso Feb 2, 2025
c51e161
fixed parameter names
umroverPerception Feb 2, 2025
2078029
pump bumpers working, waiting for hexhub implementation and services
kevinjin420 Feb 2, 2025
7f36a5d
removed redundancy
jbrhm Feb 4, 2025
ddd3419
untested absolute encoder changes. should improve accuracy by fixing …
owenpark8 Feb 5, 2025
103b7a2
Merge branch 'ed/3bm-test' into embedded
owenpark8 Feb 5, 2025
08be371
last year bdcmc code fixed up
owenpark8 Feb 5, 2025
9bf83d4
fix encoder syntax
owenpark8 Feb 5, 2025
c13d25f
move hardware_tim.hpp to lib
owenpark8 Feb 5, 2025
202a365
remove unnecessary elapsed timers
owenpark8 Feb 5, 2025
a2b578c
revert abs encoder wrap angle
owenpark8 Feb 5, 2025
2102814
update new can ids in esw.yaml
owenpark8 Feb 5, 2025
f775be9
add cam config
owenpark8 Feb 5, 2025
92b6013
clang format
owenpark8 Feb 5, 2025
bdee33c
Merge remote-tracking branch 'origin/embedded' into integration
owenpark8 Feb 5, 2025
b0e1121
remove test bridges from cmakelists
owenpark8 Feb 5, 2025
4c14821
jetson network and can setup
owenpark8 Feb 6, 2025
d55656e
update ros and ubuntu distro in ansible playbooks
owenpark8 Feb 6, 2025
b81c880
fix jetson can ansible playbook
Feb 6, 2025
e2dd430
give eth1 different network config name
Feb 6, 2025
c890715
fix SA CAN ids
Feb 6, 2025
9d24d3f
Merge branch 'embedded' into integration
Feb 6, 2025
e89c96e
updated arm moteus configs
owenpark8 Feb 6, 2025
72d3348
merged in percep changes
jbrhm Feb 6, 2025
290c7af
changed orientation in gps linearization
umroverPerception Feb 6, 2025
9b80a5c
merged from the jetson
Feb 6, 2025
9f1d7bc
cleaned rover gps driver
umroverPerception Feb 6, 2025
0fbe1cd
merged dual antenna rtk into auton-testing
umroverPerception Feb 6, 2025
e480b58
Merge remote-tracking branch 'origin/integration' into auton/auton-te…
Feb 6, 2025
b0d4d0f
changed can node names
Feb 6, 2025
06cbdd3
put back thrustmaster + drive direction change
jbrhm Feb 6, 2025
0529f17
Merge branch 'loc/dual_antenna_rtk' into teleop
alisonryckman Feb 6, 2025
71a71f6
finish merge
Feb 6, 2025
729f243
change arrow direction of rover in util.ts
alisonryckman Feb 6, 2025
774706d
fix gps_linearization
alisonryckman Feb 6, 2025
b48f9ff
removed bags
jbrhm Feb 6, 2025
d07e4a0
working auton -magnetomoeter
Feb 6, 2025
84e05d0
add led exec
alisonryckman Feb 7, 2025
a94fa42
Merge branch 'integration' into teleop
Feb 7, 2025
33260bc
finished auton led
alisonryckman Feb 7, 2025
546925f
small changes
alisonryckman Feb 7, 2025
09481cf
successful arm testing (publishing to arm_throttle_cmd)
Feb 7, 2025
56ee768
started heading filter
pearlastrid Feb 7, 2025
6afc416
Merge branch 'main' into integration
alisonryckman Feb 7, 2025
55411c8
heading filter wip
umroverPerception Feb 7, 2025
94e4621
Merge branch 'teleop' into integration
Feb 8, 2025
5c9b1d2
motei use aux1 A and C for limit switches. todo: make configurable
Feb 8, 2025
fcacec0
reconfigure joint a and c
Feb 8, 2025
c0ca839
style
Feb 8, 2025
bb29d6e
rezero joint b
Feb 8, 2025
003321f
add usb camera
alisonryckman Feb 8, 2025
46963b3
add ability to inverse brushless throttle
owenpark8 Feb 8, 2025
d826a8c
Merge branch 'teleop' into integration
Feb 8, 2025
8ca488b
Added in the randomizeSensorData
avnarmat Feb 9, 2025
a640e8b
merged HexHub with random sensor data
avnarmat Feb 9, 2025
1965328
Merge remote-tracking branch 'refs/remotes/origin/teleop' into teleop
avnarmat Feb 9, 2025
4a20d95
heading filter updates
pearlastrid Feb 9, 2025
8959676
fixed basicrovermap not loading, working on hexhub pump implementation
kevinjin420 Feb 9, 2025
5ad03be
formatted odom readings
thealvinjg Feb 9, 2025
d82552f
Merge branch 'teleop-sa' of github.com:umrover/mrover-ros2 into teleo…
thealvinjg Feb 9, 2025
7f1ce6d
Merge branch 'teleop' of github.com:umrover/mrover-ros2 into teleop
thealvinjg Feb 9, 2025
10d9ee1
fixed the setinterval for random sensor data
thealvinjg Feb 9, 2025
a618911
heading filter mostly done
jaskifstad Feb 9, 2025
4a22444
heading filter builds
umroverPerception Feb 9, 2025
32e816a
Merge branch 'integration' into embedded
owenpark8 Feb 9, 2025
79158d8
hexhub pump selection working with arbitrary mappings, fixed styling
kevinjin420 Feb 10, 2025
6759cc9
Merge branch 'teleop-sa' of github.com:umrover/mrover-ros2 into teleo…
kevinjin420 Feb 10, 2025
2a1921b
publishing to can topic works
umroverPerception Feb 10, 2025
7a8a523
publishes commands to pdlb
umroverPerception Feb 10, 2025
74dfec8
up joint_c and remove drive direction flip
Feb 10, 2025
7a408ef
mag is noisy but I think the filter works
umroverPerception Feb 11, 2025
f945ded
some changes to rtk heading
umroverPerception Feb 11, 2025
ef0f4d7
restored rover gps driver
umroverPerception Feb 11, 2025
c2b711a
uncompose gst
alisonryckman Feb 11, 2025
bceca54
flipped to match nav
Feb 11, 2025
0d58a38
Merge commit '003321fbaf81f0d7cfb7f9affc0c69c6da43de25' into integration
alisonryckman Feb 12, 2025
9d97f41
Merge branch 'auton/auton-testing' into integration
alisonryckman Feb 12, 2025
2bb7080
Merge branch 'ajr/led' into integration
alisonryckman Feb 12, 2025
b9aa20a
style
alisonryckman Feb 12, 2025
004c7d6
Merge branch 'integration' of github.com:umrover/mrover-ros2 into int…
Feb 12, 2025
7fe5e98
add auton led to launch
Feb 12, 2025
dd3bc26
cleaned heading filter, works now on hardware
umroverPerception Feb 12, 2025
bedd1d4
WIP
jbrhm Feb 12, 2025
ee2f9b7
joint b velocity p
Feb 13, 2025
4c1531c
merged heading filter into integration
umroverPerception Feb 13, 2025
d2e1461
removed bagged data
Feb 13, 2025
a0e1308
undo
jbrhm Feb 13, 2025
36bc12a
Merge branch 'JRA/tag-detector' of github.com:umrover/mrover-ros2 int…
jbrhm Feb 13, 2025
2464848
Merge branch 'integration' into ajr/cameras
alisonryckman Feb 13, 2025
2e0c87d
fix streaming ids in teleop
alisonryckman Feb 14, 2025
501672a
rollback
jbrhm Feb 14, 2025
42058b0
added subscribers for joint, arm, and drive states
kevinjin420 Feb 14, 2025
fac44c5
motor configuration as ros params
owenpark8 Feb 14, 2025
59bbfdf
remove unused limit switch config message bits
owenpark8 Feb 14, 2025
b2f8d52
costmap and zed launch changes from auton filming
Feb 14, 2025
a9dad53
add launch files
alisonryckman Feb 14, 2025
18f67c5
config
alisonryckman Feb 14, 2025
ff1f1d6
change ip to jetson in camera streaming
Feb 14, 2025
984133f
Merge branch 'ajr/cameras' into integration
Feb 14, 2025
59d8bac
Using IPC properly
jbrhm Feb 15, 2025
1f1c93a
Updated Launch File
jbrhm Feb 15, 2025
e11fde8
Style
jbrhm Feb 15, 2025
8fb6a05
added return to home page when clicking on dashboard name
thealvinjg Feb 15, 2025
d42d5a6
Merge branch 'teleop-sa' into teleop
thealvinjg Feb 15, 2025
751032d
Merge branch 'integration' of github.com:umrover/mrover-ros2 into int…
alisonryckman Feb 15, 2025
a66ecab
Merge branch 'integration' of github.com:umrover/mrover-ros2 into int…
alisonryckman Feb 16, 2025
4a6af88
add science cams
alisonryckman Feb 16, 2025
7afcc22
Merge branch 'ajr/cameras' into integration
alisonryckman Feb 16, 2025
b716267
add cam udev rules
alisonryckman Feb 16, 2025
5b5017e
Merge branch 'ajr/cameras' into integration
alisonryckman Feb 16, 2025
11677c3
bdcmc encoder and timer fixed
owenpark8 Feb 19, 2025
2b642fd
start sa bridge
edurso Feb 19, 2025
4e699d2
working sa hw bridge
edurso Feb 19, 2025
a0ddbed
fix ros params... i dont want to talk about this one
owenpark8 Feb 20, 2025
53adc4f
JOINT C FIXED IT ONLY TOOK 2 YEARS (╯°o°)╯︵ ┻━┻
owenpark8 Feb 20, 2025
cb585d4
Merge remote-tracking branch 'origin/sa_hw_bridge' into embedded
owenpark8 Feb 21, 2025
a009316
added fk to gui
neuenfeldttj Feb 21, 2025
8404a24
Merge branch 'teleop' into integration
alisonryckman Feb 21, 2025
9937819
increase joint c velocity limit
owenpark8 Feb 21, 2025
3e79708
Merge branch 'embedded' into integration
owenpark8 Feb 21, 2025
efd25fe
Merge remote-tracking branch 'origin/integration' into integration
owenpark8 Feb 21, 2025
5163369
change boomcam config
alisonryckman Feb 21, 2025
3183c4e
Merge branch 'integration' of github.com:umrover/mrover-ros2 into int…
alisonryckman Feb 21, 2025
9984454
change allen key to cam
owenpark8 Feb 21, 2025
03f2851
Merge branch 'embedded' into integration
owenpark8 Feb 21, 2025
21d5e41
Merge remote-tracking branch 'origin/integration' into integration
owenpark8 Feb 21, 2025
19e11a9
fixing cuda compilation
jbrhm Mar 20, 2025
37e5765
fixing cuda compilation
jbrhm Mar 20, 2025
c1427ab
fixing cuda compilation
jbrhm Mar 20, 2025
066e7ff
fixing cuda compilation
jbrhm Mar 20, 2025
223c09e
fixing cuda compilation
jbrhm Mar 20, 2025
d27d019
cuda stuff
umroverPerception Mar 20, 2025
3dd3368
fixing cuda compilation
jbrhm Mar 20, 2025
2228dca
Merge branch 'integration' into JRA/tag-detector
alisonryckman Mar 24, 2025
2d51b5e
Revert "Merge branch 'integration' into JRA/tag-detector"
alisonryckman Mar 24, 2025
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
3 changes: 0 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,6 @@ jobs:
- name: Compiler Cache
if: github.event.pull_request.draft == false
uses: hendrikmuhs/[email protected]
- name: manif Submodule Update
if: github.event.pull_request.draft == false
run: cd $GITHUB_WORKSPACE/src/mrover/ && git submodule update --init deps/manif
- name: Build
if: github.event.pull_request.draft == false
run: . /opt/ros/humble/setup.sh && . /home/mrover/ros2_ws/src/mrover/venv/bin/activate && cd $GITHUB_WORKSPACE/src/mrover/ && ./build.sh
Expand Down
2 changes: 1 addition & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[submodule "deps/manif"]
path = deps/manif
url = https://github.com/artivis/manif.git
url = git@github.com:artivis/manif.git
[submodule "deps/dawn"]
path = deps/dawn
url = https://dawn.googlesource.com/dawn
162 changes: 89 additions & 73 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ project(mrover VERSION 2025.0.0 LANGUAGES C CXX)
cmake_policy(SET CMP0148 OLD)

set(CMAKE_CXX_STANDARD 23)
set(CXX_STANDARD_REQUIRED ON)

# Generate compile_commands.json for clangd language server.
# Can be used by VSCode, CLion, VIM, etc.
Expand All @@ -14,6 +15,9 @@ option(MROVER_CI "Enable CI options" OFF)
option(MROVER_CLANG_TIDY "Enable static analysis with Clang tidy" ${MROVER_CI})
option(MROVER_WARNINGS_AS_ERRORS "Treat warnings as errors" ${MROVER_CI})

set(node_plugins "")


if (APPLE)
# Ensures that homebrew packages are never used over miniforge packages.
# TODO (ali): Pretty sure this doesn't do anything on macs
Expand All @@ -38,7 +42,7 @@ if (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
find_program(LLD_PROGRAM lld)
if (LLD_PROGRAM)
message(STATUS "Using lld linker")
add_link_options(-fuse-ld=lld-18)
#add_link_options(-fuse-ld=lld-18)
endif()
endif ()
endif ()
Expand Down Expand Up @@ -115,7 +119,7 @@ if (NOT manif_FOUND)

set(manif_FOUND TRUE)
else()
message(FATAL_ERROR "Manif not found. If on Ubuntu install with 'sudo apt install -f ./pkg/libmanif-dev.deb'. Or build from source with 'git submodule update --init deps/manif' and make sure it is non-empty")
message(FATAL_ERROR "Manif not found. If on Ubuntu install with 'sudo apt install -f ./pkg/libmanif-dev.deb'. Or build from source with 'submodule update --init deps/manif' and make sure it is non-empty")
endif()
endif()

Expand Down Expand Up @@ -160,7 +164,7 @@ message(STATUS "Found service files: ${MROVER_SERVICE_FILE_PATHS}")
message(STATUS "PROJ NAME: ${PROJECT_NAME}")

set(MROVER_CMAKE_INCLUDES
starter_project/autonomy/AutonomyStarterProject.cmake
starter_project/autonomy/AutonomyStarterProject.cmake
)

foreach (MROVER_CMAKE_INCLUDE ${MROVER_CMAKE_INCLUDES})
Expand All @@ -170,9 +174,9 @@ endforeach ()
message(STATUS "Found message files: ${MROVER_MESSAGE_FILE_PATHS}")

rosidl_generate_interfaces(${PROJECT_NAME}
${MROVER_MESSAGE_FILE_PATHS}
${MROVER_SERVICE_FILE_PATHS}
DEPENDENCIES nav_msgs sensor_msgs geometry_msgs
${MROVER_MESSAGE_FILE_PATHS}
${MROVER_SERVICE_FILE_PATHS}
DEPENDENCIES nav_msgs sensor_msgs geometry_msgs
)

# Starter project
Expand All @@ -185,10 +189,10 @@ ament_target_dependencies(starter_project_perception rclcpp std_msgs sensor_msgs
# Install our executable so that ROS knows about it
# This allows us to launch it with ros2 run
install(PROGRAMS
starter_project/autonomy/src/localization.py
starter_project/autonomy/src/navigation/navigation_starter_project.py
DESTINATION
lib/${PROJECT_NAME}
starter_project/autonomy/src/localization.py
starter_project/autonomy/src/navigation/navigation_starter_project.py
DESTINATION
lib/${PROJECT_NAME}
)

install(DIRECTORY starter_project/autonomy/launch DESTINATION share/${PROJECT_NAME})
Expand Down Expand Up @@ -218,11 +222,11 @@ mrover_add_header_only_library(parameter_utils parameter_utils)
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)
target_link_libraries(simulator
assimp::assimp glfw3webgpu webgpu glfw webgpu_hpp imgui
${BULLET_LIBRARIES}
lie Eigen3::Eigen
opencv_core opencv_imgcodecs opencv_imgproc
loop_profiler
assimp::assimp glfw3webgpu webgpu glfw webgpu_hpp imgui
${BULLET_LIBRARIES}
lie Eigen3::Eigen
opencv_core opencv_imgcodecs opencv_imgproc
loop_profiler
)
target_include_directories(simulator SYSTEM PRIVATE ${BULLET_INCLUDE_DIRS} ${OPENCV_INCLUDE_DIRS})

Expand All @@ -232,45 +236,61 @@ find_package(ZED QUIET)
find_package(CUDA QUIET)
find_package(OpenCV REQUIRED)
if(ZED_FOUND AND CUDA_FOUND)
enable_language(CUDA)
# CUDA Compile Options
add_library(cuda_compiler_flags INTERFACE)
target_compile_options(cuda_compiler_flags INTERFACE
-Wno-pedantic
-Wno-deprecated
-Wno-unused-parameter
-diag-suppress=815
-diag-suppress=780
-Wno-deprecated-copy
-Wno-unused-command-line-argument
-Wno-ignored-qualifiers
-Wno-sometimes-uninitialized
)

# ZED Wrapper
mrover_add_node(zed perception/zed_wrapper/*.c* perception/zed_wrapper/pch.hpp)
target_compile_options(zed PRIVATE $<$<COMPILE_LANGUAGE:CXX>:-std=c++20>)
target_link_libraries(zed parameter_utils lie MANIF::manif ${CUDA_LIBRARIES} loop_profiler cuda_compiler_flags)
ament_target_dependencies(zed rclcpp sensor_msgs ZED CUDA tf2 tf2_ros)

# Learning Library
enable_language(CUDA)
# CUDA Compile Options
add_library(cuda_compiler_flags INTERFACE)
target_compile_options(cuda_compiler_flags INTERFACE
-Wno-pedantic
-Wno-deprecated
-Wno-unused-parameter
-diag-suppress=815
-diag-suppress=780
-Wno-deprecated-copy
-Wno-unused-command-line-argument
-Wno-ignored-qualifiers
-Wno-sometimes-uninitialized
)

# ZED Wrapper

set(THRUST_WRAPPED_NAMESPACE wrapped_thrust)
set(CUB_WRAPPED_NAMESPACE wrapped_cub)

add_definitions(-DTHRUST_WRAPPED_NAMESPACE=${THRUST_WRAPPED_NAMESPACE})
add_definitions(-DCUB_WRAPPED_NAMESPACE=${CUB_WRAPPED_NAMESPACE})

mrover_add_component(zed perception/zed_wrapper/*.c* perception/zed_wrapper/pch.hpp ZedWrapper)
target_compile_options(zed_component PRIVATE $<$<COMPILE_LANGUAGE:CXX>:-std=c++20>)
mrover_link_component(zed parameter_utils lie MANIF::manif ${CUDA_LIBRARIES} loop_profiler cuda_compiler_flags)
mrover_ament_component(zed rclcpp rclcpp_components sensor_msgs ZED CUDA tf2 tf2_ros)

mrover_executable_from_component(zed perception/executables/zed.cpp zed_component)

# Learning Library
# TODO(john): Update to use the new API
mrover_add_library(tensorrt tensorrt/*.c* tensorrt)
target_compile_options(tensorrt PRIVATE -Wno-deprecated-declarations $<$<COMPILE_LANGUAGE:CUDA>:-std=c++17>)
target_include_directories(tensorrt PRIVATE ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES})
target_link_libraries(tensorrt PRIVATE opencv_core opencv_dnn opencv_imgproc lie nvinfer nvonnxparser tbb cuda_compiler_flags)

# Object Detector
mrover_add_node(object_detector perception/object_detector/*.c* src/perception/object_detector/pch.hpp)
target_link_libraries(object_detector opencv_core opencv_dnn opencv_imgproc lie tbb tensorrt opencv_imgcodecs opencv_highgui loop_profiler parameter_utils cuda_compiler_flags)
ament_target_dependencies(object_detector rclcpp sensor_msgs CUDA tf2 tf2_ros)
mrover_add_library(tensorrt tensorrt/*.c* tensorrt)
target_compile_options(tensorrt PRIVATE -Wno-deprecated-declarations $<$<COMPILE_LANGUAGE:CUDA>:-std=c++17>)
target_include_directories(tensorrt PRIVATE ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES})
target_link_libraries(tensorrt PRIVATE opencv_core opencv_dnn opencv_imgproc lie nvinfer nvonnxparser tbb cuda_compiler_flags)

# Object Detector
mrover_add_component(object_detector perception/object_detector/*.c* perception/object_detector/pch.hpp StereoObjectDetector ImageObjectDetector)
mrover_link_component(object_detector opencv_core opencv_dnn opencv_imgproc lie tbb tensorrt opencv_imgcodecs opencv_highgui loop_profiler parameter_utils cuda_compiler_flags)
mrover_ament_component(object_detector rclcpp sensor_msgs rclcpp_components CUDA tf2 tf2_ros)

mrover_executable_from_component(stereo_object_detector perception/executables/stereo_object_detector.cpp object_detector_component)
mrover_executable_from_component(image_object_detector perception/executables/image_object_detector.cpp object_detector_component)
else()
message("ZED not found...")
message("ZED not found...")
endif()

mrover_add_node(tag_detector perception/tag_detector/*.cpp perception/tag_detector/pch.hpp)
ament_target_dependencies(tag_detector rclcpp tf2 tf2_ros)
target_link_libraries(tag_detector lie opencv_core opencv_aruco opencv_imgproc loop_profiler)
# Tag Detector
mrover_add_component(tag_detector perception/tag_detector/*.cpp perception/tag_detector/pch.hpp StereoTagDetector ImageTagDetector)
mrover_ament_component(tag_detector rclcpp rclcpp_components tf2 tf2_ros)
mrover_link_component(tag_detector lie opencv_core opencv_aruco opencv_imgproc loop_profiler parameter_utils)

mrover_executable_from_component(stereo_tag_detector perception/executables/stereo_tag_detector.cpp tag_detector_component)
mrover_executable_from_component(image_tag_detector perception/executables/image_tag_detector.cpp tag_detector_component)

# Embedded

Expand All @@ -284,21 +304,17 @@ ament_target_dependencies(arm_controller rclcpp)

if (Gst_FOUND AND GstApp_FOUND)
mrover_add_node(usb_camera esw/usb_camera/*.cpp esw/usb_camera/pch.hpp)
target_link_libraries(usb_camera PkgConfig::Gst PkgConfig::GstApp opencv_core opencv_imgcodecs)
target_link_libraries(usb_camera PkgConfig::Gst PkgConfig::GstApp opencv_core opencv_imgcodecs parameter_utils)
ament_target_dependencies(usb_camera rclcpp)

if (LibUdev_FOUND)
mrover_add_library(websocket_server esw/websocket_server/*.cpp esw/websocket_server)
target_compile_definitions(websocket_server PUBLIC BOOST_ASIO_NO_DEPRECATED)
ament_target_dependencies(websocket_server rclcpp)

mrover_add_component(gst_websocket_streamer esw/gst_websocket_streamer/*.c* esw/gst_websocket_streamer/pch.hpp)
target_link_libraries(gst_websocket_streamer PkgConfig::Gst PkgConfig::GstApp PkgConfig::LibUdev opencv_core opencv_imgcodecs websocket_server)
ament_target_dependencies(gst_websocket_streamer rclcpp rclcpp_components sensor_msgs)

rclcpp_components_register_nodes(gst_websocket_streamer "mrover::GstWebsocketStreamer")
set(node_plugins "${node_plugins}mrover::GstWebsocketStreamer;$<TARGET_FILE:gst_websocket_streamer>\n")

mrover_add_component(gst_websocket_streamer esw/gst_websocket_streamer/*.c* esw/gst_websocket_streamer/pch.hpp GstWebsocketStreamer)
mrover_link_component(gst_websocket_streamer PkgConfig::Gst PkgConfig::GstApp PkgConfig::LibUdev opencv_core opencv_imgcodecs websocket_server)
mrover_ament_component(gst_websocket_streamer rclcpp rclcpp_components sensor_msgs)
endif ()
endif ()

Expand All @@ -312,21 +328,21 @@ endif ()

# You must add Python scripts here to be able to "ros2 launch" them in terminal
install(PROGRAMS
navigation/nav.py
navigation/stuck_detector/stuck_detector.py
localization/rover_gps_driver.py
localization/gps_linearization.py
localization/basestation_gps_driver.py
superstructure/superstructure.py
scripts/debug_course_publisher.py
scripts/visualizer.py
scripts/image_capture.py

# starter project sources
starter_project/autonomy/src/localization.py
starter_project/autonomy/src/navigation/navigation_starter_project.py
DESTINATION
lib/${PROJECT_NAME}
navigation/nav.py
navigation/stuck_detector/stuck_detector.py
localization/rover_gps_driver.py
localization/gps_linearization.py
localization/basestation_gps_driver.py
superstructure/superstructure.py
scripts/debug_course_publisher.py
scripts/visualizer.py
scripts/image_capture.py

# starter project sources
starter_project/autonomy/src/localization.py
starter_project/autonomy/src/navigation/navigation_starter_project.py
DESTINATION
lib/${PROJECT_NAME}
)

install(DIRECTORY launch DESTINATION share/${PROJECT_NAME})
Expand Down
2 changes: 1 addition & 1 deletion build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ export CXX=clang++

# Set CUDA compilers
export CUDAHOSTCXX=g++-9
export CUDACXX=/usr/local/cuda-12.3/bin/nvcc
export CUDACXX=/usr/local/cuda-12/bin/nvcc

# TODO (ali): add build configs for debug vs release
colcon build \
Expand Down
36 changes: 29 additions & 7 deletions cmake/macros.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,6 @@ macro(mrover_add_library name sources includes)
endif ()
endmacro()

macro(mrover_add_component name sources includes)
file(GLOB_RECURSE LIBRARY_SOURCES CONFIGURE_DEPENDS ${sources})
add_library(${name} SHARED ${ARGV3} ${LIBRARY_SOURCES})
mrover_target(${name})
target_compile_definitions(${name} PRIVATE "COMPOSITION_BUILDING_DLL")
endmacro()

macro(mrover_add_node name sources)
file(GLOB_RECURSE NODE_SOURCES CONFIGURE_DEPENDS ${sources})
add_executable(${name} ${NODE_SOURCES})
Expand All @@ -51,3 +44,32 @@ macro(mrover_add_node name sources)
target_link_libraries(${name} /opt/homebrew/Caskroom/miniforge/base/envs/ros2_env/lib/libpython3.11.dylib)
endif ()
endmacro()

macro(mrover_add_component name sources includes)
# Create Composition Library
mrover_add_library(${name}_component ${sources} ${includes} SHARED)
rosidl_target_interfaces(${name}_component ${PROJECT_NAME} "rosidl_typesupport_cpp")
foreach(node ${ARGN})
rclcpp_components_register_nodes(${name}_component "mrover::${node}")
endforeach()
target_compile_definitions(${name}_component PRIVATE "COMPOSITION_BUILDING_DLL")
install(CODE "execute_process( \
COMMAND ${CMAKE_COMMAND} -E create_symlink \
${CMAKE_CURRENT_LIST_DIR}/../../build/${PROJECT_NAME}/lib${name}_component.so \
${CMAKE_CURRENT_LIST_DIR}/../../install/${PROJECT_NAME}/lib/lib${name}_component.so \
)"
)
endmacro()

macro(mrover_executable_from_component name main_file)
mrover_add_node(${name} ${main_file})
target_link_libraries(${name} ${ARGN})
endmacro()

macro(mrover_link_component name)
target_link_libraries(${name}_component ${ARGN})
endmacro()

macro(mrover_ament_component name)
ament_target_dependencies(${name}_component ${ARGN})
endmacro()
20 changes: 20 additions & 0 deletions config/perception.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -34,3 +34,23 @@ stereo_tag_detector:
perspective_remove_ignored_margin_per_cell: 0.13
perspective_remove_pixel_per_cell: 4
polygonal_approx_accuracy_rate: 0.08

long_range_cam:
ros__parameters:
width: 640
height: 480
framerate: 30
device: "long_range_cam"
watchdog_timeout: 1.0
decode_jpeg_from_device: false

cost_map:
ros__parameters:
resolution: 0.5
size: 32.0
map_frame: "map"
near_clip: 0.5
far_clip: 10.0
z_percent: 0.1
alpha: 0.05
z_threshold: 0.0
1 change: 0 additions & 1 deletion config/simulator.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ simulator:
save_rate: 1.0
save_history: 4096
headless: false
motor_timeout: 100

ref_heading: 90.0 # For the GPS sensor to work

Expand Down
8 changes: 0 additions & 8 deletions esw/gst_websocket_streamer/gst_websocket_streamer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -360,11 +360,3 @@ namespace mrover {
// This acts as a sort of entry point, allowing the component to be discoverable when its library
// is being loaded into a running process.
RCLCPP_COMPONENTS_REGISTER_NODE(mrover::GstWebsocketStreamer)


// auto main(int argc, char** argv) -> int {
// rclcpp::init(argc, argv);
// rclcpp::spin(std::make_shared<mrover::GstWebsocketStreamer>());
// rclcpp::shutdown();
// return EXIT_SUCCESS;
// }
2 changes: 1 addition & 1 deletion esw/gst_websocket_streamer/gst_websocket_streamer.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ namespace mrover {

public:
// __attribute__ ((visibility("default")))
explicit GstWebsocketStreamer(rclcpp::NodeOptions const& options);
explicit GstWebsocketStreamer(rclcpp::NodeOptions const& options = rclcpp::NodeOptions());

~GstWebsocketStreamer() override;
};
Expand Down
8 changes: 8 additions & 0 deletions esw/gst_websocket_streamer/main.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#include "gst_websocket_streamer.hpp"

auto main(int argc, char** argv) -> int {
rclcpp::init(argc, argv);
rclcpp::spin(std::make_shared<mrover::GstWebsocketStreamer>());
rclcpp::shutdown();
return EXIT_SUCCESS;
}
2 changes: 2 additions & 0 deletions esw/usb_camera/pch.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,5 @@
#include <sensor_msgs/image_encodings.hpp>
#include <sensor_msgs/msg/camera_info.hpp>
#include <sensor_msgs/msg/image.hpp>

#include <parameter.hpp>
Loading