Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
…n_checking into paper
  • Loading branch information
mazrk7 committed Aug 13, 2024
2 parents 77597f2 + 2b96570 commit 02a8db3
Show file tree
Hide file tree
Showing 3 changed files with 145 additions and 0 deletions.
24 changes: 24 additions & 0 deletions .github/workflows/paper.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: JOSS Paper Draft PDF
on: [push]

jobs:
paper:
runs-on: ubuntu-latest
name: Paper Draft
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Build draft PDF
uses: openjournals/openjournals-draft-action@master
with:
journal: joss
# This should be the path to the paper within your repo.
paper-path: paper/paper.md
- name: Upload
uses: actions/upload-artifact@v4
with:
name: paper
# This is the output path where Pandoc will write the compiled
# PDF. Note, this should be the same directory as the input
# paper.md
path: paper/paper.pdf
67 changes: 67 additions & 0 deletions paper/paper.bib
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
@ARTICLE{hornung13auro,
author = {Armin Hornung and Kai M. Wurm and Maren Bennewitz and Cyrill
Stachniss and Wolfram Burgard},
title = {{OctoMap}: An Efficient Probabilistic {3D} Mapping Framework Based
on Octrees},
journal = {Autonomous Robots},
year = 2013,
url = {https://octomap.github.io},
doi = {10.1007/s10514-012-9321-0},
note = {Software available at \url{https://octomap.github.io}}
}

@inproceedings{Quigley2009ROS,
author = {Quigley, Morgan and Conley, Ken and Gerkey, Brian and Faust, Josh and Foote, Tully and Leibs, Jeremy and Wheeler, Rob and Ng, Andrew},
year = {2009},
month = {01},
pages = {},
title = {ROS: an open-source Robot Operating System},
volume = {3},
journal = {ICRA Workshop on Open Source Software}
}

@article{Macenski2022ROS2,
author = {Steven Macenski and Tully Foote and Brian Gerkey and Chris Lalancette and William Woodall},
title = {Robot Operating System 2: Design, architecture, and uses in the wild},
journal = {Science Robotics},
volume = {7},
number = {66},
pages = {eabm6074},
year = {2022},
doi = {10.1126/scirobotics.abm6074},
}

@INPROCEEDINGS{Pan2012FCL,
author={Pan, Jia and Chitta, Sachin and Manocha, Dinesh},
booktitle={IEEE International Conference on Robotics and Automation},
title={FCL: A general purpose library for collision and proximity queries},
year={2012},
volume={},
number={},
pages={3859-3866},
doi={10.1109/ICRA.2012.6225337}
}


@article{coleman2014reducing,
title={Reducing the barrier to entry of complex robotic software: a moveit! case study},
author={Coleman, David and Sucan, Ioan and Chitta, Sachin and Correll, Nikolaus},
journal={Journal of Software Engineering for Robotics},
volume={5},
number={1},
pages={3–16},
year={2014}
}

@inproceedings{carpentier:hal-03271811,
TITLE = {{Proximal and Sparse Resolution of Constrained Dynamic Equations}},
AUTHOR = {Carpentier, Justin and Budhiraja, Rohan and Mansard, Nicolas},
URL = {https://hal.inria.fr/hal-03271811},
BOOKTITLE = {{Robotics: Science and Systems 2021}},
ADDRESS = {Austin / Virtual, United States},
YEAR = {2021},
MONTH = Jul,
PDF = {https://hal.inria.fr/hal-03271811/file/rss-proximal-and-sparse.pdf},
HAL_ID = {hal-03271811},
HAL_VERSION = {v1},
}
54 changes: 54 additions & 0 deletions paper/paper.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
---
title: 'robot_collision_checking: A lightweight wrapper to enable access to FCL (flexible collision library) via ROS and ROS 2'
tags:
- ros
- robotics
- Collision Checking
- flexible collision library
authors:
- name: Mark Zolotas
orcid: 0000-0002-7672-940X
corresponding: true # (This is how to denote the corresponding author)
equal-contrib: true # (This is how you can denote equal contributions between multiple authors)
affiliation: 1
- name: Philip Long
orcid: 0000-0002-0784-8720
equal-contrib: true # (This is how you can denote equal contributions between multiple authors)
affiliation: 2
- name: Taskin Padir
orcid: 0000-0001-5123-5801
affiliation: "1, 3"
affiliations:
- name: Northeastern University, USA (at the time of this work)
index: 1
- name: Atlantic Technological University, Ireland
index: 2
- name: Amazon
index: 3
date: 09 August 2024
bibliography: paper.bib
---

# Summary
This paper presents `robot_collision_checking`, a C++ library that creates an easy interface to the flexible collision library (FCL) [@Pan2012FCL] The package allows users to access collision and distance checking functionalities of FCL directly through a Robot Operating System (ROS) interface [@Quigley2009ROS], given that the robotics community widely relies on ROS as the standard for software development. We include ROS 1 and ROS 2 [@Macenski2022ROS2] implementations of the core C++ library.

Collisions and distances can be calculated between collision objects such as solid primitives (spheres, box, cylinder), planes, meshes, voxel grids and octrees (via the Octomap library (FCL) [@hornung13auro]. Collision worlds, containing multiple collision objects can be created and maintained enabling collision distance checks between single objects and entire collision worlds. The package includes an example of ROS integration and visualisation of the results.

The `robot_collision_checking` library is currently being used by the `constrained_manipulability` by the same authors. Within this package there are examples of using `robot_collision_checking` with urdf files and collision meshes to calculate collision/distances between a robot and primitives and octomaps.



# Statement of Need
Collision checking is becoming an increasingly important tools as robots are deployed to unstructured and dynamic environments, while ROS 1 and ROS 2 provide the most popular means of controlling robots for research applications. ROS 1 and ROS 2 enable collision checking via the popular path planning and trajectory execution open-source software Moveit [@coleman2014reducing]. Moveit collision checking api can avail two different collision checkers [bullet](https://github.com/bulletphysics/bullet3) and FCL. However, to avail of this functionality users have to install Moveit and ensure that their robot has a Moveit accessible package. Moreover, while Moveit is extremely powerful to access the lower level functionalities like collision distance checking requires an in-depth knowledge of the package structure and hierarchy. Similarly Pinochhio [@carpentier:hal-03271811] a powerful robot modeling software is also built upon FCL but suffers from the same overhead as Moveit.
This package aims to address this need by providing a lightweight and transparent wrapper for the FCL library and ROS.

Simiar to this package [Python-fcl](https://github.com/BerkeleyAutomation/python-fcl) provides a python wrapper for FCL which could also be used for a ROS interface but is based on python rather than C++. [ros_collision_checking](https://github.com/CoFra-CaLa/ros_collision_detection) provides a collision checking system for 2D vehicles in a ROS environment.


# Acknowledgements

Taskin Padir holds concurrent appointments as a Professor of Electrical and Computer Engineering at Northeastern University and as an Amazon Scholar. This paper describes work performed at Northeastern University and is not associated with Amazon.

# References


0 comments on commit 02a8db3

Please sign in to comment.