精华内容
下载资源
问答
  • moveit/move_group_interface/move_group_interface.h> #include <moveit_msgs/AttachedCollisionObject.h> #include <moveit_msgs/CollisionObject.h> int main(int argc, char **argv) { ros::...
  • moveit

    2020-04-26 12:10:21
    添加障碍物不显示: use theapplyCollisionObjectsmethod instead ofaddCollisionObjectsor sleep again after you added the objects

    添加障碍物不显示:

    use the applyCollisionObjects method instead of addCollisionObjectsor sleep again after you added the objects

    展开全文
  • Moveit

    2019-01-29 18:55:42
  • MoveIt

    千次阅读 2017-07-12 08:58:08
    【星火课堂】MoveIt!上手指南 https://m.weike.fm/classroom/4867575 在catkin包中移除所有构建对象 cd ~/baxter_ws cd ~/ws_moveit/ \rm -rf devel build install 混合使用catkin和rosbuild rosws ...

    【星火课堂】MoveIt!上手指南

    https://m.weike.fm/classroom/4867575

    在catkin包中移除所有构建对象

    cd ~/baxter_ws
    cd ~/ws_moveit/
    \rm -rf devel build install
    

    混合使用catkin和rosbuild

    rosws init ~/baxter_ws/devel
    

    source环境变量,使的catkin工作空间到当前工作空间

    source ~/ws_moveit/devel/setup.bash # or .zsh, depending on your shell
    source ~/baxter_ws/devel/setup.bash # or .zsh, depending on your shell
    

    如果要覆盖MoveIt!附带的OMPL版本,请将cmake_install_prefix设置为您的ros目录(通常为/ opt / ros / hydro)。 换句话说,运行cmake时运行以下命令:

    cmake -DCMAKE_INSTALL_PREFIX=/opt/ros/hydro ../.. 
    

    启动MoveIt配置助手

    roscore
    rosrun moveit_setup_assistant moveit_setup_assistant
    

    UR5机械臂的MoveIt配置教程

    http://blog.csdn.net/jayandchuxu/article/details/54693870

    MoveIt驱动

    http://blog.csdn.net/xu1129005165/article/details/70037698
    MoveIt教程
    http://docs.ros.org/indigo/api/moveit_tutorials/html/
    http://docs.ros.org/kinetic/api/moveit_tutorials/html/
    MoveIt源码安装(github)

    git clone https://github.com/ros-planning/moveit.git
    sudo apt-get install ros-indigo-moveit-resources
    
    

    MoveIt源码安装(indigo版本下无法使用catkin build 所以教程无法使用)

    http://moveit.ros.org/install/source/
    安装步骤

    rosdep update
    sudo apt-get update
    sudo apt-get dist-upgrade
    
    sudo apt-get install python-wstool python-catkin-tools clang-format-3.8
    
    cd ~/baxter_ws/src
    
    wstool init .
    wstool merge https://raw.githubusercontent.com/ros-planning/moveit/indigo-devel/moveit.rosinstall
    wstool update
    rosdep install -y --from-paths . --ignore-src --rosdistro indigo
    cd ..
    catkin config --extend /opt/ros/indigo --cmake-args -DCMAKE_BUILD_TYPE=Release
    catkin build
    

    构建MoveIt ! 依赖从源代码

    http://moveit.ros.org/install/source/dependencies/

    git clone -b 26compat https://github.com/mongodb/mongo-cxx-driver.git
    
    sudo apt-get install scons
    cd mongo-cxx-driver
    sudo scons --prefix=/usr/local/ --full --use-system-boost --disable-warnings-as-errors
    sudo scons install
    
    cd ~/baxter_ws/src
    wstool set -yu warehouse_ros_mongo --git https://github.com/ros-planning/warehouse_ros_mongo.git -v jade-devel
    wstool set -yu warehouse_ros --git https://github.com/ros-planning/warehouse_ros.git -v jade-devel
    

    OMPL

    sudo apt-get -qq remove ros-indigo-ompl
    
    git clone https://github.com/ompl/ompl
    cd ompl
    
    wget https://raw.githubusercontent.com/ros-gbp/ompl-release/debian/kinetic/xenial/ompl/package.xml
    

    这里写图片描述
    这里写图片描述
    这里写图片描述
    FCL

    sudo apt-get -qq remove libfcl0 libfcl-dev ros-kinetic-octomap
    sudo apt-get -qq install libccd-dev
    
    git clone https://github.com/flexible-collision-library/fcl
    cd fcl
    git checkout fcl-0.5   # for kinetic
    
    wget https://raw.githubusercontent.com/ros-gbp/fcl-release/debian/jade/fcl/package.xml
    

    ompl和MoveIt

    http://picknik.io/moveit_wiki/index.php?title=OMPL/Add_New_Planner

    1. 修改ompl_planning.yaml文件,在规划组中添加算法
      这里写图片描述
      这里写图片描述
      这里写图片描述
    展开全文
  • moveit-源码

    2021-03-12 22:04:31
    moveit
  • Moveit-源码

    2021-03-08 15:12:10
    Moveit
  • MoveIt 运动规划框架 易于使用的开源机器人操作平台,用于开发商业应用程序、原型设计和基准算法。 分行政策 我们在master上开发最新功能。 *-devel分支对应于针对特定 ROS 发行版的 MoveIt 的已发布和稳定版本。 ...
  • Moveit
  • The MoveIt Motion Planning Framework Easy-to-use open source robotics manipulation platform for developing commercial applications, prototyping designs, and benchmarking algorithms. Overview of ...
  • moveit_python 这是到MoveIt的ROS接口的一组纯Python绑定! 基于早期的moveit_utils程序包,该程序包是chess_player程序包的一部分。 概述 当前有三个接口: MoveGroupInterface-用于使用move_group动作来移动手臂...
  • moveit.pdf

    2020-01-22 16:04:32
    机器人开发软件moveit的开发实例,机器人开发软件moveit的开发实例,机器人开发软件moveit的开发实例,机器人开发软件moveit的开发实例,
  • gazebo moveit integrate

    2019-04-29 09:14:46
    gazebo moveit集成的相关代码。
  • moveit

    2020-08-01 17:59:31
    moveit 链接

    moveit!

    简书链接

    moveit::planning_interface

    moveit::planning_interface链接

    https://www.guyuehome.com/435

    学习笔记整理(古月居视频、书、博客)

    moveit编程接口

    - moveit!接口编程流程:

    • 连接控制器需要的规划组;
    • 设置目标位姿(关节空间或笛卡尔空间);
    • 设置运动约束(可选)(工作空间,关节姿态);
    • 使用moveit!规划一条达到目标的轨迹;
    • 修改轨迹(如速度等参数);
    • 执行绘画出的轨迹;

    官方API:

    官方API介绍

    1. 关节空间规划(正向运动求解):

    #include <ros/ros.h>
    #include <moveit/move_group_interface/move_group_interface.h>
    
    int main(int argc, char **argv)
    {
        ros::init(argc, argv, "moveit_fk_demo");
        ros::AsyncSpinner spinner(1);
        spinner.start();
    
        moveit::planning_interface::MoveGroupInterface arm("manipulator");
    
        arm.setGoalJointTolerance(0.001);
    
        arm.setMaxAccelerationScalingFactor(0.2);
        arm.setMaxVelocityScalingFactor(0.2);
    
        // 控制机械臂先回到初始化位置
        arm.setNamedTarget("home");
        arm.move();
        sleep(1);
    
        double targetPose[6] = {0.391410, -0.676384, -0.376217, 0.0, 1.052834, 0.454125};
        std::vector<double> joint_group_positions(6);
        joint_group_positions[0] = targetPose[0];
        joint_group_positions[1] = targetPose[1];
        joint_group_positions[2] = targetPose[2];
        joint_group_positions[3] = targetPose[3];
        joint_group_positions[4] = targetPose[4];
        joint_group_positions[5] = targetPose[5];
    
        arm.setJointValueTarget(joint_group_positions);
        arm.move();
        sleep(1);
    
        // 控制机械臂先回到初始化位置
        arm.setNamedTarget("home");
        arm.move();
        sleep(1)
        ros::shutdown(); 
        
        return 0;
    }
    

    2 . 工作空间规划(逆向运动求解):

    #include <string>
    #include <ros/ros.h>
    #include <moveit/move_group_interface/move_group_interface.h>
    
    int main(int argc, char **argv)
    {
        ros::init(argc, argv, "moveit_fk_demo");
        ros::AsyncSpinner spinner(1);
        spinner.start();
    
        moveit::planning_interface::MoveGroupInterface arm("manipulator");
    
        //获取终端link的名称
        std::string end_effector_link = arm.getEndEffectorLink();
    
        //设置目标位置所使用的参考坐标系
        std::string reference_frame = "base_link";
        arm.setPoseReferenceFrame(reference_frame);
    
        //当运动规划失败后,允许重新规划
        arm.allowReplanning(true);
    
        //设置位置(单位:米)和姿态(单位:弧度)的允许误差
        arm.setGoalPositionTolerance(0.001);
        arm.setGoalOrientationTolerance(0.01);
    
        //设置允许的最大速度和加速度
        arm.setMaxAccelerationScalingFactor(0.2);
        arm.setMaxVelocityScalingFactor(0.2);
    
        // 控制机械臂先回到初始化位置
        arm.setNamedTarget("home");
        arm.move();
        sleep(1);
    
        // 设置机器人终端的目标位置
        geometry_msgs::Pose target_pose;
        target_pose.orientation.x = 0.70692;
        target_pose.orientation.y = 0.0;
        target_pose.orientation.z = 0.0;
        target_pose.orientation.w = 0.70729;
    
        target_pose.position.x = 0.2593;
        target_pose.position.y = 0.0636;
        target_pose.position.z = 0.1787;
    
        // 设置机器臂当前的状态作为运动初始状态
        arm.setStartStateToCurrentState();
    
        arm.setPoseTarget(target_pose);
    
        // 进行运动规划,计算机器人移动到目标的运动轨迹,此时只是计算出轨迹,并不会控制机械臂运动
        moveit::planning_interface::MoveGroupInterface::Plan plan;
        moveit::planning_interface::MoveItErrorCode success = arm.plan(plan);
    
        ROS_INFO("Plan (pose goal) %s",success?"":"FAILED");   
    
        //让机械臂按照规划的轨迹开始运动。
        if(success)
          arm.execute(plan);
        sleep(1);
    
        // 控制机械臂先回到初始化位置
        arm.setNamedTarget("home");
        arm.move();
        sleep(1);
    
        ros::shutdown(); 
    
        return 0;
    }
    

    3.笛卡尔空间规划:

    #include <ros/ros.h>
    #include <moveit/move_group_interface/move_group_interface.h>
    #include <moveit/robot_trajectory/robot_trajectory.h>
    
    int main(int argc, char **argv)
    {
    	ros::init(argc, argv, "moveit_cartesian_demo");
    	ros::AsyncSpinner spinner(1);
    	spinner.start();
    
        moveit::planning_interface::MoveGroupInterface arm("manipulator");
    
        //获取终端link的名称
        std::string end_effector_link = arm.getEndEffectorLink();
    
        //设置目标位置所使用的参考坐标系
        std::string reference_frame = "base_link";
        arm.setPoseReferenceFrame(reference_frame);
    
        //当运动规划失败后,允许重新规划
        arm.allowReplanning(true);
    
        //设置位置(单位:米)和姿态(单位:弧度)的允许误差
        arm.setGoalPositionTolerance(0.001);
        arm.setGoalOrientationTolerance(0.01);
    
        //设置允许的最大速度和加速度
        arm.setMaxAccelerationScalingFactor(0.2);
        arm.setMaxVelocityScalingFactor(0.2);
    
        // 控制机械臂先回到初始化位置
        arm.setNamedTarget("home");
        arm.move();
        sleep(1);
    
        // 获取当前位姿数据最为机械臂运动的起始位姿
        geometry_msgs::Pose start_pose = arm.getCurrentPose(end_effector_link).pose;
    
    	std::vector<geometry_msgs::Pose> waypoints;
    
        //将初始位姿加入路点列表
    	waypoints.push_back(start_pose);
    	
        start_pose.position.z -= 0.2;
    	waypoints.push_back(start_pose);
    
        start_pose.position.x += 0.1;
    	waypoints.push_back(start_pose);
    
        start_pose.position.y += 0.1;
    	waypoints.push_back(start_pose);
    
    	// 笛卡尔空间下的路径规划
    	moveit_msgs::RobotTrajectory trajectory;
    	const double jump_threshold = 0.0;
    	const double eef_step = 0.01;
    	double fraction = 0.0;
        int maxtries = 100;   //最大尝试规划次数
        int attempts = 0;     //已经尝试规划次数
    
        while(fraction < 1.0 && attempts < maxtries)
        {
            fraction = arm.computeCartesianPath(waypoints, eef_step, jump_threshold, trajectory);
            attempts++;
            
            if(attempts % 10 == 0)
                ROS_INFO("Still trying after %d attempts...", attempts);
        }
        
        if(fraction == 1)
        {   
            ROS_INFO("Path computed successfully. Moving the arm.");
    
    	    // 生成机械臂的运动规划数据
    	    moveit::planning_interface::MoveGroupInterface::Plan plan;
    	    plan.trajectory_ = trajectory;
    
    	    // 执行运动
    	    arm.execute(plan);
            sleep(1);
        }
        else
        {
            ROS_INFO("Path planning failed with only %0.6f success after %d attempts.", fraction, maxtries);
        }
    
        // 控制机械臂先回到初始化位置
        arm.setNamedTarget("home");
        arm.move();
        sleep(1);
    
    	ros::shutdown(); 
    	return 0;
    }
    

    约束

    约束工作边界

    req.workspace_parameters.min_corner.x = req.workspace_parameters.min_corner.y =
        req.workspace_parameters.min_corner.z = -2.0;
    req.workspace_parameters.max_corner.x = req.workspace_parameters.max_corner.y =
        req.workspace_parameters.max_corner.z = 2.0;
    

    关节约束

    /* Let's create a new pose goal */
    
    pose.pose.position.x = 0.32;
    pose.pose.position.y = -0.25;
    pose.pose.position.z = 0.65;
    pose.pose.orientation.w = 1.0;
    moveit_msgs::Constraints pose_goal_2 =
        kinematic_constraints::constructGoalConstraints("panda_link8", pose, tolerance_pose, tolerance_angle);
    
    /* Now, let's try to move to this new pose goal*/
    req.goal_constraints.clear();
    req.goal_constraints.push_back(pose_goal_2);
    
    /* 对关节施加约束
       Here, we are asking for the end-effector to stay level*/
    geometry_msgs::QuaternionStamped quaternion;
    quaternion.header.frame_id = "panda_link0";
    quaternion.quaternion.w = 1.0;
    req.path_constraints = kinematic_constraints::constructGoalConstraints("panda_link8", quaternion);
    

    场景避障

    古月居博客碰撞检测链接
    在场景中生成障碍物

    // 包含API的头文件
    #include <moveit/move_group_interface/move_group.h>
    #include <moveit/planning_scene_interface/planning_scene_interface.h>
    #include <moveit_msgs/AttachedCollisionObject.h>
    #include <moveit_msgs/CollisionObject.h>
    
    int main(int argc, char **argv)
    {
        ros::init(argc, argv, "add_collision_objct");
        ros::NodeHandle nh;
        ros::AsyncSpinner spin(1);
        spin.start();
    
        // 创建运动规划的情景,等待创建完成
        moveit::planning_interface::PlanningSceneInterface current_scene;
        sleep(5.0);
    
        // 声明一个障碍物的实例,并且为其设置一个id,方便对其进行操作,该实例会发布到当前的情景实例中
        moveit_msgs::CollisionObject cylinder;
        cylinder.id = "seven_dof_arm_cylinder";
    
        // 设置障碍物的外形、尺寸等属性   
        shape_msgs::SolidPrimitive primitive;
        primitive.type = primitive.CYLINDER;
        primitive.dimensions.resize(3);
        primitive.dimensions[0] = 0.6;
        primitive.dimensions[1] = 0.2;
    
        // 设置障碍物的位置
        geometry_msgs::Pose pose;
        pose.orientation.w = 1.0;
        pose.position.x =  0.0;
        pose.position.y = -0.4;
        pose.position.z =  0.4;
    
        // 将障碍物的属性、位置加入到障碍物的实例中
        cylinder.primitives.push_back(primitive);
        cylinder.primitive_poses.push_back(pose);
        cylinder.operation = cylinder.ADD;
    
        // 创建一个障碍物的列表,把之前创建的障碍物实例加入其中
        std::vector<moveit_msgs::CollisionObject> collision_objects;
        collision_objects.push_back(cylinder);
    
        // 所有障碍物加入列表后(这里只有一个障碍物),再把障碍物加入到当前的情景中,如果要删除障碍物,使用removeCollisionObjects(collision_objects)
        current_scene.addCollisionObjects(collision_objects);
    
        ros::shutdown();
    
        return 0;
    }
    
    展开全文
  • moveit安装

    千次阅读 2019-03-07 09:00:00
    moveit安装 首先照例更新源 sudo apt-get update 然后安装moveit sudo apt-get install ros-indigo-moveit 等待安装完成即可
  • moveit-web:接下来是Projeto moveit
  • 安装MoveIt assistant sudo apt-get install ros-kinetic-moveit 如果报错说找不到软件包,可能是没有更新源,只要去roswiki上找安装教程,把源重新加入就可以了。 二.打开配置助手 roslaunch moveit_setup_...
  • MoveIt教程 这是我的MoveIt教程的个人版本,可。 运动计划问题部分 Movet接口类 使用的类 机器人说明 rdf_loader::RDFLoader和设置助手 工作空间建模,表示和碰撞检测 PlanningSceneMonitor和PlanningScene tf2_...
  • Crane_x7_moveit2_demo 演示基于run_moveit_cpp在CRANE-X7上使用MoveIt2 建筑 遵循从源代码构建MoveIt2的说明: ://moveit.ros.org/install-moveit2/source/

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,039
精华内容 2,015
关键字:

Moveit