Code Monkey home page Code Monkey logo

motion_planning's Introduction

motion_planning

Motion planning for aerial robot and other robot

dependency

packages:

aerial_manipulation

Manipulation planning for aerial robot.

  • aerial_transportation: whole-body grasping to pick up object and carry to a desired position

aerial_motion

methods

  • sampling based search
  • differential kinematics

application

  • aerial transformation
  • gap passing
  • object manipulation

how to compile

source ~/ros/jsk_aerial_robot_ws/devel/setup.bash # Please make sure the path to repository of jsk_aerial_robot
mkdir -p ~/ros/motion_planning_ws
cd ~/ros/motion_planning_ws
wstool init src
wstool set -u -t src motion_planning http://github.com/tongtybj/motion_planning --git
wstool merge -t src src/motion_planning/${ROS_DISTRO}.rosinstall
wstool update -t src
rosdep install -y -r --from-paths src --ignore-src --rosdistro $ROS_DISTRO
catkin build

motion_planning's People

Contributors

tongtybj avatar

Stargazers

Roman Hossain Shaon avatar Yoshiki Obinata avatar Hirokazu Ishida avatar Shingo Kitagawa avatar Nobuki Sugito avatar

Watchers

 avatar Shunichi Nozawa avatar

motion_planning's Issues

whole-body aerial manipulationの長期改善

まず. #2 を参照

  1. 屋外での実験 (自動認識)
  • 機体の自己位置同定: laser, baro, gps, rtk
  • 物体の認識: colorフィルタ, checkboard
  1. 6リンクへの拡張
  • ハードウェアの改善、関節部
  • 6リンクで四角形を掴んで、冗長リンクでの重心調整 => ICRAデモ動画
  1. 把持制御
    問題:今の方法は50%の成功率, さらに、把持が悪いとサーボを焼いてしまう。
  • フィードバックベースの把持: 物体との相対距離を図ること
    -- xy方向にunderactuatedのhydrus, fully actuatedのdragon両方に通用する一般的な制御手法
  • センサーフィードバック: 2Dlaserを使用すること.
    -- chen laserが好ましい
  1. 把持プランニング
    問題: 2の把持制御とかぶるけど、サーボのトルクだけではなく、チルトするプロペラの推力も考慮したforce-closureモデルを考える。要は把持時の物体及び機体の力とトルクの釣り合いを拡張すr。

uav navの基準点

aeiral_robot_baseのほうがKDL + CoG based controlになると、
いままでのuav nav が変わる。COGベースのnavigationか、
aerial_robot_baseの方で、リンク別のnavポートを容易すること。

aerial_transportationでCoGベースのnav_velを用意するのが一番いいかもね。

[Summery 2017 IJRR]: whole-bodyt aerial manipulation with hydrusx quad type

2017 IJRR 実験中で感じたこと、改善点

  1. yaw pos control
    問題:目標yaw pos(angle)と差が大きすぎると、p term(相当, LQI)が多き過ぎて、fail safeモードに入る
    解決方法: pos_errに上限を設けて、差を小さくする. それかyawに対しても速度ベース制御を行う.

  2. grasp後の上昇で,xy方向が不安定要素
    問題: grasp後, システム全体の重心がずれたと考えられる.
    解決方法: 物体のinertialを事前に設定するか、推定するかで求めて、add_extra_moduleでシステムに加える.
    難点: 物体の正確の把持状況を知ることが重要, 機体に対しての物体の重心位置とyaw角をちゃんと推定すること.

Problems of differential kinemtaics

  • The special functions of following code prohibit the dependency rule in CMake (cost::CartersianConstraint and constraint::CollisionAvoidance)

    • if(cost.first == std::string("cartesian_constraint"))
      {
      boost::reinterpret_pointer_cast<cost::CartersianConstraint>(cost_container.back())->setReferenceFrame(parent_seg_, end_effector_relative_pose_);
      target_ee_pose_ = target_ee_pose;
      boost::reinterpret_pointer_cast<cost::CartersianConstraint>(cost_container.back())->setTargetFrame(target_ee_pose);
      /* set free axis */
      std::vector<int> free_axis_list(0);
      if(tran_free_axis.find("x") != std::string::npos) free_axis_list.push_back(MaskAxis::TRAN_X);
      if(tran_free_axis.find("y") != std::string::npos) free_axis_list.push_back(MaskAxis::TRAN_Y);
      if(tran_free_axis.find("z") != std::string::npos) free_axis_list.push_back(MaskAxis::TRAN_Z);
      if(rot_free_axis == std::string("x")) free_axis_list.push_back(MaskAxis::ROT_X);
      if(rot_free_axis == std::string("y")) free_axis_list.push_back(MaskAxis::ROT_Y);
      if(rot_free_axis == std::string("z")) free_axis_list.push_back(MaskAxis::ROT_Z);
      if(free_axis_list.size() > 0)
      boost::reinterpret_pointer_cast<cost::CartersianConstraint>(cost_container.back())->setFreeAxis(free_axis_list);
      }
      }
    • boost::reinterpret_pointer_cast<constraint::CollisionAvoidance>(constraint_container.back())->setEnv(env_collision_);
  • Dynamic casting has following two types of problems, thus we use reinterpret_cast in following codes.

Problem1 (build):

Errors     << differential_kinematics:make /home/chou/ros/motion_planning_ws/logs/differential_kinematics/build.make.002.log                                                                                                                             
make[3]: warning: jobserver unavailable: using -j1.  Add '+' to parent make rule.
/home/chou/ros/motion_planning_ws/devel/.private/differential_kinematics/lib/libend_effector_ik_solver_core.so: undefined reference to `typeinfo for differential_kinematics::constraint::CollisionAvoidance'
/home/chou/ros/motion_planning_ws/devel/.private/differential_kinematics/lib/libend_effector_ik_solver_core.so: undefined reference to `typeinfo for differential_kinematics::cost::CartersianConstraint'
collect2: error: ld returned 1 exit status
make[2]: *** [/home/chou/ros/motion_planning_ws/devel/.private/differential_kinematics/lib/differential_kinematics/se3_end_effector_ik_node] Error 1
make[1]: *** [CMakeFiles/se3_end_effector_ik_node.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
/home/chou/ros/motion_planning_ws/devel/.private/differential_kinematics/lib/libend_effector_ik_solver_core.so: undefined reference to `typeinfo for differential_kinematics::constraint::CollisionAvoidance'
/home/chou/ros/motion_planning_ws/devel/.private/differential_kinematics/lib/libend_effector_ik_solver_core.so: undefined reference to `typeinfo for differential_kinematics::cost::CartersianConstraint'
collect2: error: ld returned 1 exit status
make[2]: *** [/home/chou/ros/motion_planning_ws/devel/.private/differential_kinematics/lib/differential_kinematics/se2_end_effector_ik_node] Error 1
make[1]: *** [CMakeFiles/se2_end_effector_ik_node.dir/all] Error 2

Problem2 (ros plugin):

cartersian_constraint_ = boost::reinterpret_pointer_cast<cost::CartersianConstraint>(cost_container.back());

boost::reinterpret_pointer_cast<constraint::CollisionAvoidance>(constraint_container.back())->setEnv(env_collision_);

terminate called after throwing an instance of 'pluginlib::LibraryLoadException'
  what():  Failed to load library /home/chou/ros/motion_planning_ws/devel/lib//libplanner_pluginlib.so. Make sure that you are calling the PLUGINLIB_EXPORT_CLASS macro in the library code, and that names are consistent between this macro and your XML. Error string: Could not load library (Poco exception = /home/chou/ros/motion_planning_ws/devel/lib//libplanner_pluginlib.so: undefined symbol: _ZTIN23differential_kinematics10constraint18CollisionAvoidanceE)
[dragon/squeeze_navigation_node-4] process has died [pid 16320, exit code -6, cmd /home/chou/ros/motion_planning_ws/devel/lib/squeeze_navigation/squeeze_navigation_node __name:=squeeze_navigation_node __log:=/home/chou/.ros/log/7c345fdc-3f2c-11ec-9d97-54a05056e2bd/dragon-squeeze_navigation_node-4.log].
log file: /home/chou/.ros/log/7c345fdc-3f2c-11ec-9d97-54a05056e2bd/dragon-squeeze_navigation_node-4*.log

aerial manipulationのコードの合併

@chibi314

かなり先のことだけど、
aerial manipulation (picking, transportation)に関するコードを統合しないといけないね。

  • whole body grasping
  • optimization form searching to pick multiple/large object.

締め切りの目安としては、

  • RA-magazineの査読結果(2018/5)
  • 安齋 修論(2019/3)

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.