Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WallE

This project provides a class-based C++ API for core Modern Robotics routines. The API is split into focused classes so you can include only what you need.

For a full guide, see the user manual: docs/user-manual.md.

API reference index: docs/api-manual.md.

Doxygen site: https://irayshon.github.io/DallE/

Class split

  • DallE::Tools - shared math helpers, SE(3)/so(3) utilities, Jacobians
  • DallE::FK - forward kinematics in body or space frames
  • DallE::IK - inverse kinematics in body or space frames
  • DallE::InverseDynamics - inverse dynamics solver
  • DallE::Dynamics - mass matrix, forces, forward dynamics, trajectories
  • DallE::Trajectory - time scaling and trajectory generation
  • DallE::RobotControl - computed torque control and simulation helpers
  • DallE::MotionPlanning - placeholder for upcoming planning utilities

Usage examples

Tools

#include <Eigen/Dense>
#include <DallE/tools.h>

Eigen::Vector3d omega(0.0, 0.0, 1.0);
Eigen::Matrix3d so3 = DallE::Tools::VecToso3(omega);
Eigen::Matrix3d R = DallE::Tools::MatrixExp3(so3);

FK

#include <Eigen/Dense>
#include <DallE/fk.h>

Eigen::MatrixXd M = Eigen::MatrixXd::Identity(4, 4);
Eigen::MatrixXd Slist(6, 1);
Eigen::VectorXd thetalist(1);
Eigen::MatrixXd T = DallE::FK::FKinSpace(M, Slist, thetalist);

IK

#include <Eigen/Dense>
#include <DallE/ik.h>

Eigen::MatrixXd M = Eigen::MatrixXd::Identity(4, 4);
Eigen::MatrixXd Blist(6, 1);
Eigen::MatrixXd T = Eigen::MatrixXd::Identity(4, 4);
Eigen::VectorXd thetalist(1);
bool success = DallE::IK::IKinBody(Blist, M, T, thetalist, 1e-3, 1e-3);

Dynamics

#include <Eigen/Dense>
#include <vector>
#include <DallE/dynamics.h>

Eigen::VectorXd thetalist(1);
std::vector<Eigen::MatrixXd> Mlist;
std::vector<Eigen::MatrixXd> Glist;
Eigen::MatrixXd Slist(6, 1);
Eigen::MatrixXd M = DallE::Dynamics::MassMatrix(thetalist, Mlist, Glist, Slist);

InverseDynamics

#include <Eigen/Dense>
#include <vector>
#include <DallE/inverse_dynamics.h>

Eigen::VectorXd thetalist(1);
Eigen::VectorXd dthetalist(1);
Eigen::VectorXd ddthetalist(1);
Eigen::Vector3d g(0.0, 0.0, -9.81);
Eigen::VectorXd Ftip = Eigen::VectorXd::Zero(6);
std::vector<Eigen::MatrixXd> Mlist;
std::vector<Eigen::MatrixXd> Glist;
Eigen::MatrixXd Slist(6, 1);
Eigen::VectorXd tau = DallE::InverseDynamics::Compute(
    thetalist, dthetalist, ddthetalist, g, Ftip, Mlist, Glist, Slist);

Trajectory

#include <Eigen/Dense>
#include <DallE/trajectory.h>

Eigen::VectorXd thetastart(1);
Eigen::VectorXd thetaend(1);
Eigen::MatrixXd traj = DallE::Trajectory::JointTrajectory(
    thetastart, thetaend, 2.0, 100, 5);

RobotControl

#include <Eigen/Dense>
#include <vector>
#include <DallE/robot_control.h>

Eigen::VectorXd thetalist(1);
Eigen::VectorXd dthetalist(1);
Eigen::VectorXd eint(1);
Eigen::VectorXd thetalistd(1);
Eigen::VectorXd dthetalistd(1);
Eigen::VectorXd ddthetalistd(1);
Eigen::Vector3d g(0.0, 0.0, -9.81);
std::vector<Eigen::MatrixXd> Mlist;
std::vector<Eigen::MatrixXd> Glist;
Eigen::MatrixXd Slist(6, 1);
Eigen::VectorXd tau = DallE::RobotControl::ComputedTorque(
    thetalist,
    dthetalist,
    eint,
    thetalistd,
    dthetalistd,
    ddthetalistd,
    g,
    Mlist,
    Glist,
    Slist,
    1.0,
    0.0,
    0.1);

About

This is the repository for the modern robotics cpp

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages