Skip to content

Commit a523404

Browse files
authored
Merge pull request #14 from KumarRobotics/feature/workflows
Feature/workflows
2 parents 15710a0 + f6d484c commit a523404

File tree

4 files changed

+85
-15
lines changed

4 files changed

+85
-15
lines changed

.github/workflows/humble-ci.yml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
name: Humble CI
2+
3+
on:
4+
push:
5+
branches: [ ros2 ]
6+
pull_request:
7+
branches: [ ros2 ]
8+
9+
jobs:
10+
unit-tests-humble:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- uses: actions/checkout@v4
14+
15+
- name: Build Docker image with dependencies
16+
run: cd docker && bash build-humble.bash
17+
18+
- name: Run unit test in Docker
19+
run: |
20+
docker run --rm -v $(pwd):/workspace -w /workspace \
21+
glider-ros:humble \
22+
bash -c "cd glider && cmake -S . -B build -DBUILD_ROS=OFF -DBUILD_TESTS=ON \
23+
&& cd build && cmake --build . && ctest --output-on-failure"
24+

.github/workflows/jazzy-ci.yml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
name: Jazzy CI
2+
3+
on:
4+
push:
5+
branches: [ ros2 ]
6+
pull_request:
7+
branches: [ ros2 ]
8+
9+
jobs:
10+
unit-tests-jazzy:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- uses: actions/checkout@v4
14+
15+
- name: Build Docker image with dependencies
16+
run: cd docker && bash build-jazzy.bash
17+
18+
- name: Run unit test in Docker
19+
run: |
20+
docker run --rm -v $(pwd):/workspace -w /workspace \
21+
glider-ros:jazzy \
22+
bash -c "cd glider && cmake -S . -B build -DBUILD_ROS=OFF -DBUILD_TESTS=ON \
23+
&& cd build && cmake --build . && ctest --output-on-failure"

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
BSD 3-Clause License
22

3-
Copyright (c) 2022, ublox contributors
3+
Copyright (c) 2025, glider contributors
44
All rights reserved.
55

66
Redistribution and use in source and binary forms, with or without

README.md

Lines changed: 37 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,43 @@
1-
## Glider
1+
# Glider
2+
![Humble CI](https://github.com/KumarRobotics/glider/workflows/humble-ci.yml/badge.svg?branch=ros2)
3+
![Jazzy CI](https://github.com/KumarRobotics/glider/workflows/jazzy-ci.yml/badge.svg?branch=ros2)
4+
Glider is a G-INS system built on [GTSAM](https://github.com/borglab/gtsam). It currently takes in GPS and 9-DOF IMU and provides a full
5+
state estimate up to the rate of you IMU. Glider is highly configurable and more features are coming soon.
26

3-
Glider is a GPS-Odometry-INS system, it is designed to fuse GPS and IMU (a GINS system) with any odometry you provide. This can also be run as a standard GINS system by setting `use_odom:=false`. We can also take in unscaled odometry and scale it, just set `scale_odom` parameter to `true` if you want your odmetry scaled. Finally, noise parameters can be configured in `config/graph_params.yaml`.
7+
## Hardware Setup
8+
You're setup needs a GPS and a 9-DOF IMU, that is an IMU that provides a full orientation. The IMU orientation should be provided in the `IMU` frame
9+
as this is standard for robotics, but we are working on supporting the NED frame. We use a VectorNav VN100T IMU. It is important make sure your IMU magnetometer is calibrated, if it is not aligned correctly the heading output of glider will be incorrect.
410

5-
You can build this as a ros2 package with colcon: `colcon build --packages-select glider`.
11+
## ROS2 Setup
12+
We recommend using Glider with ROS2, you can configure the ros parameters in `config/ros-params.yaml`. Here's more detail about what
13+
the parameters mean:
14+
- `publishers.rate`: the rate at which odometry is published in hz.
15+
- `publishers.nav_sat_fix`: if true will publish the odometry as a `NavSatFix` msg, the default is an `Odometry` msg.
16+
- `publishers.viz.use`: if true will publish an `Odometry` topic for visualization centered around the origin.
17+
- `publishers.viz.origin_easting`: the easting value you want to viz odometry to center around.
18+
- `publishers.viz.origin_northing`: the northing value you want the viz odometry to center around.
19+
- `subscribers.use_odom`: Still under development
620

7-
### Running
8-
Glider can be built as a ros packages in your ros workspace with `catkin build`.
9-
Run glider with:
10-
```
11-
ros2 launch glider glider-node.launch.py
12-
```
13-
14-
Everything will be rotated into the ENU frame, includeing the IMU orientation and the Odometry pose. Since GPS is the main prior, we publish state estimates in the ENU frame with UTM coordinates as an `Odometry` ros message or a `NavSatFix` message. This can be configured in `config/ros_params.yaml` with the `publish_nav_sat_fix` parameter.
21+
## Glider Setup
22+
You can configure glider itself in `config/glider-params.yaml`, this is where you can specify the parameters for the factor graph. Here's more detail on each parameter:
23+
#### IMU Parameters
24+
- `covariances.accelerometer`: covariance of the accelerometer.
25+
- `covariances.gyroscope`: covariance of the gyroscope.
26+
- `covariances.integration`: covariance of the IMU preintegration.
27+
- `covariances.heading`: covariance of the IMU's magnetometer heading in radians, 0.09 radians is about 5 degrees.
28+
- `covariances.roll_pitch`: covariance of the roll and pitch angles in radians.
29+
- `covariances.bias`: covariance of the bias estimate.
30+
- `frame`: What frame the IMU is in, currently only support ENU but NED support is coming .
31+
### GPS Parameters
32+
- `gps.covariance`: covariance of the gps position estimate.
33+
### Other Parameters
34+
- `constants.gravity`: gravity in your IMU's frame.
35+
- `constants.bias_num_measurements`: number of IMU measurements to use to initially estimate the bias.
36+
- `constants.initial_num_measurements`: number of times to let the factor graph optimize before glider starts reporting odometry.
37+
- `logging.stdout`: output log statements to terminal in addition to the logfile
38+
- `optimizer.smooth`: if true the factor graph will optimize using a fixed lag smoother, otherwise it will use iSAM2.
39+
- `optimizer.lag_time`: period of time the fixed lag smoother should look at in seconds.
40+
- `gps_to_imu`: the relative transformation from your gps to your imu in the FLU frame.
1541

1642
### Building and Running Unit Tests
1743
We use GTest to run unit tests. You can build the tests with
@@ -25,6 +51,3 @@ cd build
2551
ctest
2652
```
2753

28-
#### Authors
29-
- **Corresponding:** Jason Hughes jasonah.at.seas.upenn.edu
30-
- Varun Murali

0 commit comments

Comments
 (0)