Skip to content
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

Integrate 3D models #5

Merged
merged 25 commits into from
Oct 2, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
31e8310
Update devel to build on Ubuntu Jammy (22.04) (#326)
svwilliams May 12, 2023
6a9a61d
Tailor: Updating Jenkinsfile
locus-services Jun 3, 2023
8a6f010
Tailor: Updating Jenkinsfile
locus-services Jun 7, 2023
05812c3
Derive the fixed landmarks from the standard landmarks (#259)
svwilliams Jul 5, 2023
1069e3e
Minor header fixes (#266)
efernandez Jul 5, 2023
d7de264
Add missed geometry_msgs package (#272)
efernandez Jul 5, 2023
bb25c35
Print graph & transaction on optimization failure (#321)
efernandez Jul 5, 2023
ed21f99
add missing tf timeout at differential mode of IMU, odometry, and pos…
fabianhirmann Jul 10, 2023
6814698
[RST-7809] Fix optimization errors when the orientation is initialize…
svwilliams Aug 16, 2023
602d436
Tailor: Updating Jenkinsfile
locus-services Aug 30, 2023
082786d
Update changelogs
garyservin Sep 25, 2023
c8ab2f6
0.7.0
garyservin Sep 25, 2023
a0f039b
Tailor: Updating Jenkinsfile
locus-services Oct 21, 2023
6bb6233
Add ROS1 CI (#347)
paulbovbel Nov 15, 2023
75ea820
Vision constraints (#349)
oscarmendezm Dec 5, 2023
27423b0
Fix tests (#348)
paulbovbel Dec 11, 2023
feb29fc
Tailor: Updating Jenkinsfile
locus-services Dec 27, 2023
6ae3a51
Merge remote-tracking branch 'upstream/devel' into devel
fabianhirmann Jan 23, 2024
86001a7
add 3D models for motion model (Unicycle3D), publisher (Odometry3DPub…
fabianhirmann Feb 16, 2024
2132be6
add sensor model for IMU3D; extend fuse_models::common with variants …
fabianhirmann Feb 27, 2024
d4be009
deduplicate code at unicycle_3d_predict.h
fabianhirmann Feb 28, 2024
7db9351
port sensor model Odometry2D to 3D; fix typo in comment (still TODO: …
fabianhirmann Sep 2, 2024
ef21b5d
integrate sensor processing with differential Pose in 3D (including n…
fabianhirmann Sep 27, 2024
5257333
add proper copyright notice for ARTI
fabianhirmann Oct 1, 2024
90c9443
NormalDeltaOrientation3DEulerCostFunctor and NormalDeltaPose3DEulerCo…
fabianhirmann Oct 1, 2024
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
Original file line number Diff line number Diff line change
Expand Up @@ -48,22 +48,26 @@ namespace fuse_constraints
/**
* @brief Implements a cost function that models a difference between 3D pose variables.
*
* A single pose involves two variables: a 3D position and a 3D orientation. This cost function computes the difference
* using standard 3D transformation math:
* A single pose involves two variables: a 3D position and a 3D orientation. The generic NormalDelta cost function
* only supports a single variable type, and computes the difference using per-element subtraction. This cost function
* computes the difference using standard 3D transformation math.
*
* cost(x) = || A * [ q1^-1 * (p2 - p1) - b(0:2) ] ||^2
* || [ (q1 - q2) - b(3:6) ] ||
* || [ delta.x(p1,p2) - b(0)] ||^2
* || [ delta.y(p1,p2) - b(1)] ||
* cost(x) = || A * [ delta.z(p1,p2) - b(2)] ||
* || [ delta.roll(q1,q2) - b(3)] ||
* || [ delta.pitch(q1,q2) - b(4)] ||
* || [ delta.yaw(q1,q2) - b(5)] ||
*
* where p1 and p2 are the position variables, q1 and q2 are the quaternion orientation variables, and the matrix A
* and the vector b are fixed. In case the user is interested in implementing a cost function of
* the form:
* Here, the matrix A can be of variable size, thereby permitting the computation of errors for partial measurements.
* The vector b is a fixed-size 6x1, p1 and p2 are the position variables, and q1 and q2 are the quaternion orientation
* variables. Note that the covariance submatrix for the quaternion is 3x3, representing errors in the orientation local
* parameterization tangent space. In case the user is interested in implementing a cost function of the form
*
* cost(X) = (X - mu)^T S^{-1} (X - mu)
*
* where, mu is a vector and S is a covariance matrix, then, A = S^{-1/2}, i.e the matrix A is the square root
* information matrix (the inverse of the covariance).
*
* Note that the cost function's quaternion components are only concerned with the imaginary components (qx, qy, qz).
*/
class NormalDeltaPose3DEulerCostFunctor
{
Expand Down
19 changes: 19 additions & 0 deletions fuse_core/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,22 @@ if(CATKIN_ENABLE_TESTING)
find_package(rostest REQUIRED)
find_package(geometry_msgs REQUIRED)

include(ExternalProject)
find_package(Git REQUIRED)

externalproject_add(
covariance_geometry_cpp
PREFIX ${CMAKE_CURRENT_BINARY_DIR}/covariance_geometry_cpp
GIT_REPOSITORY https://github.com/ARTI-Robots/covariance_geometry.git
GIT_TAG master
TIMEOUT 10
UPDATE_COMMAND ${GIT_EXECUTABLE} pull
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_BINARY_DIR}/covariance_geometry_cpp/src
LOG_DOWNLOAD ON
)

add_definitions(${EIGEN3_DEFINITIONS})

# Lint tests
set(ROSLINT_CPP_OPTS "--filter=-build/c++11,-runtime/references")
roslint_cpp()
Expand Down Expand Up @@ -457,6 +473,7 @@ if(CATKIN_ENABLE_TESTING)
)
add_dependencies(test_util
${catkin_EXPORTED_TARGETS}
covariance_geometry_cpp
)
target_include_directories(test_util
PRIVATE
Expand All @@ -465,9 +482,11 @@ if(CATKIN_ENABLE_TESTING)
${catkin_INCLUDE_DIRS}
${CERES_INCLUDE_DIRS}
${EIGEN3_INCLUDE_DIRS}
${CMAKE_CURRENT_BINARY_DIR}/covariance_geometry_cpp/src/include
)
target_link_libraries(test_util
${catkin_LIBRARIES}
${CMAKE_CURRENT_BINARY_DIR}/covariance_geometry_cpp/src/lib/libcovariance_geometry_cpp.so
)
set_target_properties(test_util
PROPERTIES
Expand Down
Loading