Skip to content

Commit a5066c1

Browse files
authored
Merge branch 'main' into icpFixpoint_dev
2 parents f682def + 799a4e4 commit a5066c1

69 files changed

Lines changed: 2766 additions & 1470 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.clang-format

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
BasedOnStyle: LLVM
2+
ColumnLimit: 120
23
IndentWidth: 8
34
UseTab: Always
45
BreakBeforeBraces: Linux

.gitattributes

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
*.3d linguist-vendored

.github/workflows/main.yml

Lines changed: 35 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ on:
55
branches: [ main, workflow ]
66

77
jobs:
8+
# FIXME: FIND MAINTAINER FOR WINDOWS BUILD INTEGRATION
89
# FIXME: blas FTBFS
910
#windows:
1011
# strategy:
@@ -21,6 +22,8 @@ jobs:
2122
# key: ${{ matrix.toolset }}-${{ hashFiles('windows/build.cmd') }}
2223
# - run:
2324
# windows/build.cmd ${{github.workspace}} ${{github.workspace}}/build ${{ matrix.toolset }}
25+
26+
# FIXME: FIND MAINTAINER FOR MACOS BUILD INTEGRATION
2427
# FIXME: fails with
2528
# Could not find a package configuration file provided by "Qt5Widgets"
2629
#macos:
@@ -43,10 +46,25 @@ jobs:
4346
runs-on: ubuntu-latest
4447
strategy:
4548
matrix:
46-
os: ['debian:buster', 'debian:bullseye', 'debian:sid', 'ubuntu:focal']
49+
os: ['debian:buster', 'debian:bullseye', 'ubuntu:bionic', 'ubuntu:focal', 'ubuntu:jammy', 'ubuntu:noble']
4750
container: ${{ matrix.os }}
4851
steps:
49-
- uses: actions/checkout@v2
52+
# - uses: actions/checkout@v2 ## THIS CHECKOUT USES GLIBC2.28, WHICH IS UNAVAILABLE IN OLD CONTAINERS
53+
- name: Install git
54+
run: apt-get update && apt-get install --yes git
55+
- name: Set noninteractive frontend
56+
run: |
57+
export DEBIAN_FRONTEND=noninteractive
58+
echo "Etc/UTC" > /etc/timezone
59+
ln -fs /usr/share/zoneinfo/Etc/UTC /etc/localtime
60+
apt-get update
61+
apt-get install --yes --no-install-recommends tzdata
62+
dpkg-reconfigure --frontend noninteractive tzdata
63+
- name: Clean workspace
64+
run: |
65+
rm -rf -- * .[!.]* ..?*
66+
- name: Checkout code
67+
run: git clone https://github.com/JMUWRobotics/3DTK.git .
5068
- name: Install basic dependencies
5169
run: |
5270
cat /etc/os-release
@@ -56,16 +74,27 @@ jobs:
5674
apt-get install --yes --no-install-recommends equivs ninja-build build-essential
5775
- if: matrix.os == 'ubuntu:focal'
5876
run: equivs-build doc/equivs/control.ubuntu.focal.ros
59-
- if: matrix.os == 'debian:sid'
60-
run: equivs-build doc/equivs/control.debian.sid.ros
6177
- if: matrix.os == 'debian:bullseye'
6278
run: equivs-build doc/equivs/control.debian.bullseye.ros
6379
- if: matrix.os == 'debian:buster'
6480
run: equivs-build doc/equivs/control.debian.buster.ros
81+
- if: matrix.os == 'ubuntu:bionic'
82+
run: equivs-build doc/equivs/control.ubuntu.bionic
83+
- if: matrix.os == 'ubuntu:jammy'
84+
run: equivs-build doc/equivs/control.ubuntu.jammy
85+
- if: matrix.os == 'ubuntu:noble'
86+
run: equivs-build doc/equivs/control.ubuntu.noble
6587
- name: Install build dependencies
6688
run: apt-get install --yes --no-install-recommends ./3dtk-build-deps_1.0_all.deb
67-
- name: Build
89+
- name: Configure CMake (WITH_ROS)
90+
if: matrix.os == 'ubuntu:focal'
6891
run: |
6992
cmake -H. -B.build -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_VERBOSE_MAKEFILE=ON -DWITH_ROS=ON -G Ninja
93+
- name: Configure CMake
94+
if: matrix.os != 'ubuntu:focal'
95+
run: |
96+
cmake -H. -B.build -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_VERBOSE_MAKEFILE=ON -G Ninja
97+
- name: Build and Test
98+
run: |
7099
cmake --build .build --config RelWithDebInfo
71-
CTEST_OUTPUT_ON_FAILURE=true cmake --build .build --config RelWithDebInfo --target test
100+
CTEST_OUTPUT_ON_FAILURE=true cmake --build .build --config RelWithDebInfo --target test

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
11
[submodule "3rdparty/cctag"]
22
path = 3rdparty/cctag
33
url = https://github.com/JMUWRobotics/CCTag.git
4+
[submodule "3rdparty/paruco"]
5+
path = 3rdparty/paruco
6+
url = https://github.com/JMUWRobotics/PArUco.git

3rdparty/CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ endif()
140140
add_subdirectory(rply-1.1.4)
141141

142142
if(WITH_CALIB)
143-
if(NOT EXISTS ${PROJECT_SOURCE_DIR}/3rdparty/cctag/CMakeLists.txt)
143+
if(NOT EXISTS ${PROJECT_SOURCE_DIR}/3rdparty/cctag/CMakeLists.txt OR NOT EXISTS ${PROJECT_SOURCE_DIR}/3rdparty/paruco/CMakeLists.txt)
144144
message(FATAL_ERROR "CCTag submodule is missing. Please run `git submodule update --init --recursive` in the project root.")
145145
endif()
146146

@@ -157,6 +157,8 @@ if(WITH_CALIB)
157157
set(CCTAG_BUILD_DOC OFF)
158158
set(BUILD_SHARED_LIBS OFF)
159159
add_subdirectory(cctag EXCLUDE_FROM_ALL)
160+
161+
add_subdirectory(paruco EXCLUDE_FROM_ALL)
160162
endif()
161163

162164
IF(WITH_E57)

3rdparty/paruco

Submodule paruco added at ebbd4a4

INSTALL.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Installation
22

3-
## Ubuntu 20.04 Focal Fossa
3+
## Debian based Linux
44

55
The easiest way to make sure that you install the right dependencies for
66
unpackaged software like _3DTK_ on Debian based distributions is to build a
@@ -37,13 +37,15 @@ To download 3DTK and install its dependencies, run:
3737

3838
```
3939
$ sudo apt-get install --no-install-recommends equivs subversion
40-
$ svn checkout svn://svn.code.sf.net/p/slam6d/code/trunk slam6d-code
41-
$ cd slam6d-code
40+
$ git clone https://github.com/JMUWRobotics/3DTK.git
41+
$ cd 3DTK
4242
$ equivs-build doc/equivs/control.ubuntu.focal
4343
$ sudo apt install ./3dtk-build-deps_1.0_all.deb
4444
$ make
4545
```
4646

47+
If you dont run a Debian based Linux like Ubuntu, you may install the dependencies manually.
48+
For further information have a look at the dependencies in doc/equivs/
4749
You can now use 3DTK, for example by running these tools:
4850

4951
```

README.md

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
# 3DTK - The 3D Toolkit
22

3-
[![Build Status](https://travis-ci.org/3DTK/3DTK.svg?branch=master)](https://travis-ci.org/3DTK/3DTK)
4-
[![Build status](https://ci.appveyor.com/api/projects/status/7f8n86ed859vw8j4/branch/master?svg=true)](https://ci.appveyor.com/project/josch/3dtk/branch/master)
3+
[![CI](https://github.com/JMUWRobotics/3DTK/actions/workflows/main.yml/badge.svg?event=push)](https://github.com/JMUWRobotics/3DTK/actions/workflows/main.yml)
54

65
## About
76
_The 3D Toolkit_ provides algorithms and methods to process 3D point clouds. It includes automatic high-accurate registration (6D simultaneous localization and mapping, 6D SLAM) and other tools, e.g., a fast 3D viewer, plane extraction software, etc. Several file formats for the point clouds are natively supported, new formats can be implemented easily. Check out our [website (threedtk.de)](http://threedtk.de) for more information.
@@ -19,6 +18,27 @@ Alternatively on **Windows**, execute the batch script `build.cmd` either from t
1918

2019
Some Boost libraries (_graph, regex, serialization, filesystem, interprocess_) are needed to compile the slam6D program. **_3DTK_ is not compatible with boost version 1.49.** Please make sure to use a different version.
2120

21+
### ROS Support
22+
3DTK currently supports ROS1 distributions like Kinetic, Melodic, and Noetic. Compile the project with the `WITH_ROS` flag. You can call `make config` from the project root directory to set this flag. We are working on support for ROS2.
23+
24+
Dependency list for compiling with ROS:
25+
- catkin
26+
- ros-std-msgs
27+
- ros-std-srvs
28+
- librosbag-dev
29+
- libnav-msgs-dev
30+
- libstd-srvs-dev
31+
- libtf2-sensor-msgs-dev
32+
- libtf2-eigen-dev
33+
- libtf2-kdl-dev
34+
- libtf-conversions-dev
35+
- libpcl-conversions-dev
36+
- liblaser-geometry-dev
37+
- libkdl-parser-dev
38+
- liburdf-dev
39+
- librobot-state-publisher-dev
40+
- liborocos-bfl-dev
41+
2242
### 3DConnexion Space Mouse Support
2343
The Applications `show` and `qtshow` supports navigation with the _3DConnexion SpaceMouse_. The left key on the _SpaceMouse Wireless/Compact_ fixes the rotation and the right key fixes the translation.
2444
The keyset for other models can be different.

include/calibration/ArucoDetector.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ class ArucoDetector : public Detector
2828
void writeDetectionsToFile(const std::string& path);
2929
void readDetectionsFromFile(const std::string& path);
3030

31+
static int dictionaryFromString(const std::string &str) noexcept(false);
32+
3133
private:
3234
std::vector<AprilTag::AprilTag3f> _patternPoints;
3335
std::string _dictionaryName;
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#pragma once
2+
3+
#include "calibration/Detector.h"
4+
5+
#include "paruco.hpp"
6+
7+
namespace calibration {
8+
9+
class PArUcoDetector : public Detector {
10+
public:
11+
PArUcoDetector(float tagExpandScale = 0.5f, const std::string& dictionaryName = "DICT_6X6_250");
12+
~PArUcoDetector() = default;
13+
bool detect(const cv::Mat& image) noexcept(false);
14+
void writeDetectionsToFile(const std::string& path);
15+
void readDetectionsFromFile(const std::string& path);
16+
private:
17+
PArUco::Params _params;
18+
PArUco::Detections _detections;
19+
};
20+
21+
}

0 commit comments

Comments
 (0)