MoveIt Tutorial学习笔记 - 二

本文详细介绍了ROS的MoveIt!运动规划框架,涵盖近似约束流型规划、抓取放置、机器人集成、逆运动学求解、规划适配器等内容,探讨了OMPL、CHOMP、STOMP等规划器的配置与使用,以及规划器间的差异与组合策略。

http://docs.ros.org/kinetic/api/moveit_tutorials/html/index.html 阅读学习笔记 ;保存成.md文件查看

#### Planning with Approximated Constraint Manifolds  使用近似约束流型进行规划
-  reduces planning time.
将用户设定的约束,先转化为Approximated Constraint Manifolds,并保存到一个database;后续直接基于这个database进行运动规划,以减少运动规划的时间;

compute an approximation of the constraint manifold beforehand and perform trajectory planning in that. The OMPL plugin contains the functionality to do that for a given set of constraints and save it in a database. In later instances the database can be loaded to use for constrained planning with any OMPL planner which strongly reduces planning time.

-  Database Construction  数据库的构建
adding the constraints to the ConstraintsLibrary object the database can be constructed by callingsaveApproximationConstraints()

The function requires four parameters:
1.constraints message (moveit_msgs::Constraints)
2.robot description (std::string)
3.planning scene (planning_scene::PlanningScenePtr)
4.construction options (ompl_interface::ConstraintApproximationConstructionOptions)

- Database Loading and Usage
- - Loading:
The constraints database must be loaded at launch of the move group node by setting the ros parameter://必须在启动move group节点时进行加载
<param name="move_group/constraint_approximations_path" value="<path_to_database>"/>

- - Usage:
For planning just initialize the constraints message as always and set the messages name to the exact name that was used to construct the database. Also you need to specify the same values and tolerances again since by default the planner just samples over the states but does not necessary follow the constraints during interpolation for path planning. A correctly named constraint message without initialized constraints would use the database but can therefore lead to invalid trajectories anyway.
//初始化constraints message,该message的name要与用于生成database的message name保持一致;不需要对constraints message中的constraints进行初始化;规划时将自动调用先前生成的database;


#### Pick and Place 
In MoveIt!, grasping is done using the MoveGroup interface. 

相关数据类型:主要对这两个数据类型中各功能元素的理解;设定了pick和place相关的动作、姿态等
moveit_msgs::Grasp  //grasp
moveit_msgs::PlaceLocation  //place

pick and place动作接口:
move_group.setSupportSurfaceName("table1");
move_group.pick("object", grasps);

group.setSupportSurfaceName("table2");
group.place("object", place_location);


### Integration with a New Robot

#### MoveIt! Setup Assistant
Step 3: Add Virtual Joints
Virtual joints are used primarily to attach the robot to the world. 

Step 7: Add Passive Joints
This tells the planners that they cannot (kinematically) plan for these joints because they can’t be directly controlled.

Step 8: 3D Perception
 configuring the 3D sensors sensors_3d.yaml.

Step 9: Gazebo Simulation
 help you simulate your robot with Gazebo by generating a new Gazebo compatible urdf if needed.

Step 10: ROS Control
 auto generate simulated controllers to actuate the joints of your robot.
基于ros_control框架


#### URDF and SRDF
Safety Limits
If the “soft_lower_limit” and the “soft_upper_limit” in the safety_controller are set to 0.0, your joint will be unable to move.

#### Low Level Controllers
configuring MoveIt! with the controllers on your robot. We will assume that your robot offers a FollowJointTrajectory action service for the arms on your robot and (optionally) a GripperCommand service for your gripper. If your robot does not offer this we recommend the ROS control framework for easily adding this functionality around your hardware communication layer.
//基于ros_control framework, 增加FollowJointTrajectory action service for the arms;GripperCommand service for your gripper.此处仅介绍MoveIt端的相关配置;

-  controllers.yaml进行MoveIt端 控制器  配置
- -  对FollowJointTrajectory Controller Interface和GripperCommand Controller Interface进行配置
controller_list:
 - name: panda_arm_controller
   action_ns: follow_joint_trajectory
   type: FollowJointTrajectory
   default: true
   joints:
     - panda_joint1
     - panda_joint2
     - panda_joint3
     - panda_joint4
     - panda_joint5
     - panda_joint6
     - panda_joint7
 - name: hand_controller
   action_ns: gripper_action
   type: GripperCommand
   default: true
   parallel: true
   joints:
     - panda_finger_joint1
     - panda_finger_joint2

- - Optional Allowed Trajectory Execution Duration Parameters:
allowed_execution_duration_scaling: 1.2
allowed_goal_duration_margin: 0.5
The parameters are used to compute the allowed trajectory execution duration by scaling the expected execution duration and adding the margin afterwards. If this duration is exceeded the trajectory will be cancelled. The controller-specific parameters can be set as follows


- 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值