Code Monkey home page Code Monkey logo

piper's Introduction

PIPER

PIPER (Probabilistic Inference based Platform for Essential problems in Robotics) is a modular package that provides support for algorithms that use probabilistic inference on factor graphs to solve various robotics problems. Each module can be independently installed and implements an easy ROS interface for that algorithm to run on any simulated or real robots. Currently PIPER supports the following algorithms:

  • GPMP2 - Gaussian Process Motion Planner 2
  • STEAP - Simultaneous Trajectory Estimation and Planning
  • more coming soon ...

PIPER is being developed by Mustafa Mukadam at the Georgia Tech Robot Learning Lab. See documentation for information on usage and development.


Table of Contents


Prerequisites

  • Install ROS. We have tested up to ROS Kinetic on Ubuntu 16.04.
  • Install GPMP2 C++ library.

Compilation and Installation

  • Initialize a catkin workspace (if you are using an existing catkin workspace this step is not needed)

    mkdir -p ~/piper_ws/src
    cd ~/piper_ws/src
    catkin_init_workspace

    Before running setup the environment variables

    source ~/piper_ws/devel/setup.bash
  • Clone this repository in ~/piper_ws/src

    git clone https://github.com/gtrll/piper.git
  • To compile only the piperbase library, in the catkin workspace directory do

    catkin_make
  • Otherwise, to install some module, for example, X: first make sure to install dependencies for X, besides the prerequisites for piperbase, then do

    catkin_make -build_flag_X
  • Similarly, to install multiple modules, for example, X and Y: install all their dependencies and then use their appropriate flags together

    catkin_make -build_flag_X -build_flag_Y

    See table below for currently supported modules, their dependencies and build flags

    Module Other Dependencies Build Flag
    GPMP2 None -DBUILD_GPMP2_INTERFACE:OPTION=ON
    STEAP None -DBUILD_STEAP_INTERFACE:OPTION=ON
    ALL All from above -DBUILD_ALL_INTERFACE:OPTION=ON

Questions and Bug reporting

Please use Github issue tracker to report bugs. For other questions please contact Mustafa Mukadam.

Citing

If you use PIPER in an academic context, please cite any module/algorithm specific publications you use, and cite the following:

@article{mukadam2017piper,
  title={{PIPER}},
  author={Mukadam, Mustafa},
  journal={[Online] Available at \url{https://github.com/gtrll/piper}},
  year={2017}
}

FAQs

  • Q: Cannot find trajectory_control server error

    A: To be able to run the included examples you need to have an action server set up in your real or simulated robot's API. See trajectory_control_topic in robot config.

  • Q: Node crashes without running anything

    A: First verify if the error is related to different versions of Eigen being linked. Run gdb ~/piper_ws/devel/lib/piper/gpmp2_interface and r. If you get the following error Program received signal SIGSEGV, Segmentation fault. 0x00007ffff672a2e7 in gtsam::noiseModel::Constrained::Constrained(Eigen::Matrix<double, -1, 1, 0, -1, 1> const& Eigen::Matrix<double, -1, 1, 0, -1, 1> const&) () from /usr/local/lib/libgtsam.so.4, it means that there are at least two versions of eigen conflicting. Make sure to install GTSAM with system Eigen. Then install GPMP2 and try this again.

License

PIPER is released under the BSD license. See LICENSE file in this directory.

piper's People

Contributors

mhmukadam avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

piper's Issues

Logitech G502 Hero - Back / Forward buttons dont work on Ubuntu 20.04

Hello,

so i just recently installed Ubuntu 20.04 and installed Piper to use my Logitech Hero G502 with all the extra buttons.

The program recognized my mouse perfectly fine and everything works. Everything but the Back / Forward functions.
grafik

I know the physical buttons work because when i put other functions on them they work. But i cannot go back or forward in my browser or my folders at all.

Can you help me fix that?

Thanks

Sphere placement

Hi,

I'm trying to integrate the GPMP2 with a Tiago robot, but I seem to have a problem understanding on how to place the spheres for collision checking.

The documentation mentions that they are attached relative to the joint. I was under the impression that a kinematic chain using DH parameters is attaching a coordinate frame to the links connecting to joints. So I'm a bit confused with this.

I tried visualising the spheres generated for the PR2 example with RViz but they seemed off. I can post the code used for the visualisation and maybe we can have it as a feature of piper.

Thanks in advance. Any help will be highly appreciated.

Cheers,
Niko

Build Error: Static assertion failed

I have gtsam 4.0.3 & gpmp2 both installed on my home directory.

When I try to $ catkin_make -DBUILD_ALL_INTERFACE:OPTION=ON, I get the error below.

dlee640@dlee640-T580:~/piper_ws$ catkin_make -DBUILD_ALL_INTERFACE:OPTION=ON
Base path: /home/dlee640/piper_ws
Source space: /home/dlee640/piper_ws/src
Build space: /home/dlee640/piper_ws/build
Devel space: /home/dlee640/piper_ws/devel
Install space: /home/dlee640/piper_ws/install
Creating symlink "/home/dlee640/piper_ws/src/CMakeLists.txt" pointing to "/opt/ros/melodic/share/catkin/cmake/toplevel.cmake"
####
#### Running command: "cmake /home/dlee640/piper_ws/src -DBUILD_ALL_INTERFACE:OPTION=ON -DCATKIN_DEVEL_PREFIX=/home/dlee640/piper_ws/devel -DCMAKE_INSTALL_PREFIX=/home/dlee640/piper_ws/install -G Unix Makefiles" in "/home/dlee640/piper_ws/build"
####
-- The C compiler identification is GNU 7.5.0
-- The CXX compiler identification is GNU 7.5.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Using CATKIN_DEVEL_PREFIX: /home/dlee640/piper_ws/devel
-- Using CMAKE_PREFIX_PATH: /home/dlee640/champ_ws/devel;/opt/ros/melodic
-- This workspace overlays: /home/dlee640/champ_ws/devel;/opt/ros/melodic
-- Found PythonInterp: /home/dlee640/.pyenv/shims/python2 (found suitable version "2.7.17", minimum required is "2") 
-- Using PYTHON_EXECUTABLE: /home/dlee640/.pyenv/shims/python2
-- Using Debian Python package layout
-- Using empy: /usr/bin/empy
-- Using CATKIN_ENABLE_TESTING: ON
-- Call enable_testing()
-- Using CATKIN_TEST_RESULTS_DIR: /home/dlee640/piper_ws/build/test_results
-- Found gtest sources under '/usr/src/googletest': gtests will be built
-- Found gmock sources under '/usr/src/googletest': gmock will be built
-- Found PythonInterp: /home/dlee640/.pyenv/shims/python2 (found version "2.7.17") 
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE  
-- Using Python nosetests: /usr/bin/nosetests-2.7
-- catkin 0.7.29
-- BUILD_SHARED_LIBS is on
-- BUILD_SHARED_LIBS is on
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- ~~  traversing 1 packages in topological order:
-- ~~  - piper
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- +++ processing catkin package: 'piper'
-- ==> add_subdirectory(piper)
-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
-- Boost version: 1.65.1
-- Found the following Boost libraries:
--   serialization
--   system
--   filesystem
--   thread
--   program_options
--   date_time
--   timer
--   chrono
--   regex
--   atomic
-- GTSAM include directory:  /usr/local/lib/cmake/GTSAM/../../../include
-- gpmp2 include directory:  /usr/local/lib/cmake/gpmp2/../../../include
-- Configuring done
-- Generating done
-- Build files have been written to: /home/dlee640/piper_ws/build
####
#### Running command: "make -j8 -l8" in "/home/dlee640/piper_ws/build"
####
Scanning dependencies of target piperbase
[ 12%] Building CXX object piper/CMakeFiles/piperbase.dir/piper/base/traj.cpp.o
[ 37%] Building CXX object piper/CMakeFiles/piperbase.dir/piper/base/robot.cpp.o
[ 37%] Building CXX object piper/CMakeFiles/piperbase.dir/piper/base/problem.cpp.o
In file included from /usr/include/boost/math/policies/policy.hpp:20:0,
                 from /usr/include/boost/math/policies/error_handling.hpp:21,
                 from /usr/include/boost/math/special_functions/round.hpp:14,
                 from /opt/ros/melodic/include/ros/time.h:58,
                 from /opt/ros/melodic/include/ros/ros.h:38,
                 from /home/dlee640/piper_ws/src/piper/piper/base/robot.h:13,
                 from /home/dlee640/piper_ws/src/piper/piper/base/robot.cpp:8:
/usr/include/boost/optional/detail/optional_reference_spec.hpp: In instantiation of ‘void boost::detail::prevent_binding_rvalue() [with From = const Eigen::Matrix<double, -1, 1>&&]’:
/usr/include/boost/optional/detail/optional_reference_spec.hpp:165:81:   required from ‘boost::optional<T&>::optional(T&&) [with T = const Eigen::Matrix<double, -1, 1>]’
/home/dlee640/piper_ws/src/piper/piper/base/robot.cpp:63:125:   required from here
/usr/include/boost/optional/detail/optional_reference_spec.hpp:32:5: error: static assertion failed: binding rvalue references to optional lvalue references is disallowed
     BOOST_STATIC_ASSERT_MSG(boost::is_lvalue_reference<From>::value,
     ^
piper/CMakeFiles/piperbase.dir/build.make:86: recipe for target 'piper/CMakeFiles/piperbase.dir/piper/base/robot.cpp.o' failed
make[2]: *** [piper/CMakeFiles/piperbase.dir/piper/base/robot.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
CMakeFiles/Makefile2:516: recipe for target 'piper/CMakeFiles/piperbase.dir/all' failed
make[1]: *** [piper/CMakeFiles/piperbase.dir/all] Error 2
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2
Invoking "make -j8 -l8" failed

Where is this error coming from and how do I solve it?

STEAP compilation -- broken gtsam call

Compilation error on STEAP interface:

/usr/local/include/gpmp2/planner/ISAM2TrajOptimizer-inl.h:106:63: error: no matching function for call to ‘gtsam::ISAM2::update(gtsam::NonlinearFactorGraph&, gtsam::Values&, std::vector<long unsigned int>&)’
   isam_.update(inc_graph_, init_values_, removed_factor_index_);

Latest GTSAM version (commit:6f8bfe0) has the following ISAM2 update call:

gtsam::ISAM2Result gtsam::ISAM2::update(const gtsam::NonlinearFactorGraph&, const gtsam::Values&, const FactorIndices&)

using the FactorIndices typdef.

Error on Loading robot parameters

Hello,

i'm having a problem trying out the steap_interface using a simulated vector robot.
To launch the interface I use the following comand:
sudo roslaunch piper steap_interface.launch robot:=jaco2 problem:=example_vector

But the execution always crashed immediately on Loading robot parameters. This is the terminal output:

`nvidia@jetson-xavier-2:~/epic_ws$ roslaunch piper steap_interface.launch
... logging to /home/nvidia/.ros/log/1d8a82d6-a751-11eb-bf30-0a401d3f2f6e/roslaunch-jetson-xavier-2-7080.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://jetson-xavier-2:43041/

SUMMARY

PARAMETERS

  • /piper/Qc: 1.0
  • /piper/control_inter: 5
  • /piper/cost_sigma: 0.005
  • /piper/epsilon: 0.1
  • /piper/fix_pose_sigma: 0.0001
  • /piper/fix_vel_sigma: 0.0001
  • /piper/goal_conf: [4.7124, 3.1416, ...
  • /piper/goal_pose: [2, -1, -1.5708]
  • /piper/obs_check_inter: 5
  • /piper/opt_type: LM
  • /piper/sdf_file: sdf/empty_sdf.bin
  • /piper/start_conf: [-1.92, 1.5, 0.53...
  • /piper/start_pose: [0, 0, 0]
  • /piper/total_step: 10
  • /piper/total_time: 10.0
  • /rosdistro: melodic
  • /rosversion: 1.14.10

NODES
/
steap_interface (piper/steap_interface)

ROS_MASTER_URI=http://localhost:11311

process[steap_interface-1]: started with pid [7097]
[ INFO] [1619528028.967624684]: Loading robot parameters.
[steap_interface-1] process has died [pid 7097, exit code -11, cmd /home/nvidia/epic_ws/devel/lib/piper/steap_interface __name:=steap_interface __log:=/home/nvidia/.ros/log/1d8a82d6-a751-11eb-bf30-0a401d3f2f6e/steap_interface-1.log].
log file: /home/nvidia/.ros/log/1d8a82d6-a751-11eb-bf30-0a401d3f2f6e/steap_interface-1*.log
all processes on machine have died, roslaunch will exit
shutting down processing monitor...
... shutting down processing monitor complete
done
`

Does anyone have an idea of what is going wrong?
Thanks.

How to Apply the Algorithms to Simulated Robots?

Could you provide interactive tutorials of STEAP algorithm with simulated robot, such as vector, wam, pr2, etc? How to set up action sever in simulated robot's API? I don't know how to solve 'Cannot find trajectory_control server'.

Config file for complex System

I'm trying to create a config file for a complex system, that's composed of more than one chain. I know that for calculating the DH parameters we should consider one chain at a time. However I'm not sure how to create the config file. Should I create for each chain one file? And If so how can I define the relationship between the different chains.

Thanks in advance.

error

The robot don't move. The results are:

process[gpmp2_interface-1]: started with pid [22001]
[ INFO] [1597828819.063786529]: Loading robot parameters.
[ INFO] [1597828819.082953386]: Loading planning problem.
[ INFO] [1597828820.629328114, 1006.496000000]: Initializing trajectory.
[ INFO] [1597828820.629642480, 1006.496000000]: Optimizing...
[ INFO] [1597828820.697640979, 1006.555000000]: Batch GPMP2 optimization complete.
[ INFO] [1597828820.697810154, 1006.555000000]: Checking for collision.
[ INFO] [1597828820.702263705, 1006.560000000]: Executing GPMP2 planned trajectory open-loop...
[ INFO] [1597828820.806493377, 1006.658000000]: Done.
[gpmp2_interface-1] process has finished cleanly
log file: /home/xzq/.ros/log/a9a526a8-e1fa-11ea-8f8f-4889e758f115/gpmp2_interface-1*.log
all processes on machine have died, roslaunch will exit
shutting down processing monitor...
... shutting down processing monitor complete
done

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.