zoukankan      html  css  js  c++  java
  • ROS中阶笔记(九):Movelt!机械臂控制

    ROS中阶笔记(九):Movelt!机械臂控制

    1 Movelt!系统架构

    1.1 Movelt!是什么

    • 一个易于使用的集成化开发平台
    • 由一系列移动操作的功能包组成
      · 运动规划
      · 操作控制
      · 3D感知
      · 运动学
      · 控制与导航算法
    • 提供友好的GUI
    • 可应用于工业、商业、研发和其他领域
    • ROS社区中使用度排名前三的功能包

    1.2 系统架构

    1.3 Movelt!使用步骤

    • 组装:创建机器人URDF模型
    • 配置:使用Movelt!Setup Assistant工具生成配置文件
    • 驱动:添加机器人控制器插件(controller)
    • 控制:Movelt!控制机器人运动(算法仿真、物理仿真)

    可参考《Mastering ROS for Robotics Programming》、《ros by example vol2》

    2 创建机械臂模型与配置文件

    2.1 创建机械臂模型

    (~/catkin_ws/src/marm_description/urdf/arm.xacro,六轴机械臂的模型文件)

    2.1.1 创建模型

    (~/catkin_ws/src/marm_description/urdf/arm.xacro,六轴机械臂的模型文件,6个joint,7个link)

    1、宏定义(材料定义、属性定义、惯性矩阵定义)

    2、link与joint

    • link
      ·visual
      ·collision
      ·inertial

    • joint

    3、gazebo属性(颜色设置、传动接口、controller插件)

    2.1.2 模型可视化

    (~/catkin_ws/src/marm_description/launch/view_arm.launch)

    模型可视化

    $ roslaunch marm_description view_arm.launch
    

    2.2 创建配置文件Movelt!Setup Assistant

    启动Movelt!Setup Assistant之前,先启动roscore;

    $ roscore
    $ rosrun moveit_setup_assistant moveit_setup_assistant   # 启动Movelt!Setup Assistant
    
    • Start:加载模型文件
    • Self-Collisions:采样一系列的检测点,检测机械臂的各个关节在运动时候是否会发生碰撞(默认一万采样点)
    • 只需点击Generate Collision Matrix,自动完成数据采样和计算。
    • Virtual Joints:虚拟关节
    • Planning Groups:运动规划组(核心)
    • Robot Poses:自定义姿态点位
    • End Effectors:终端夹具配置
    • Passive Joints:不需要考虑的主关节;
    • Author Information:作者信息
    • Configuration Files:生成配置文件

    2.3 demo

    roslaunch marm_moveit_config demo.launch               # 启动demo
    

    1、拖动规划(鼠标拖动)

    2、随机目标点规划(random valid)

    3、设置初始位姿

    4、加入场景物体(Import File——选择文件——Open)

    5、碰撞检测

    3 Movelt!编程学习

    3.1 编程接口

    3.2 编程方法

    1、关节空间规划历程

    roslaunch marm_moveit_config demo.launch
    rosrun marm_planning moveit_fk_demo.py
    

    2、工作空间规划历程

    roslaunch marm_moveit_config demo.launch
    rosrun marm_planning moveit_ik_demo.py
    

    3、笛卡尔路径规划

    roslaunch marm_moveit_config demo.launch
    rosrun marm_planning moveit_cartesian_demo.py_cartesian:=True     (走直线)
    rosrun marm_planning moveit_cartesian_demo.py_cartesian:=False     (走曲线)
    

    4、避障规划

    roslaunch marm_moveit_config demo.launch 
    rosrun marm_planning moveit_obstacles_demo.py
    

    4 Gazebo机械臂仿真

    4.1 关节轨迹控制器

    Joint Trajectory Controller

    • 线性样条:位置连续,速度、加速度不连续。
    • 三次样条:位置和速度连续,加速度不连续。
    • 五次样条:位置、速度、加速度都连续。

    针对gazebo的配置,编写yaml配置文件,使用launch文件启动控制器;

    marm_gazebo/config/trajectory_control.yaml

    marm_gazebo/launch/arm_trajectory_controller.launch

    4.2 Movelt!控制器

    针对Movelt配置

    marm_moveit_config/config/controllers.yaml

    marm_moveit_config/launch/arm_moveit_controller_manager.launch

    4.3 仿真环境

    1、仿真环境文件

    marm_gazebo/launch/arm_world.launch

    2、启动仿真环境(启动所有需要的launch文件)

    $ roslaunch marm gazebo arm_bringup_moveit.launch   # 启动仿真环境
    

    通过Movelt!控制机械臂运动,gazebo仿真环境和rviz中的机器人状态保持一致

    5 ROS-I框架介绍

    6、参考资料

    《Mastering ROS for Robotics Programming》
    《ros by example vol 2》

    微信公众号:喵哥解说
    公众号介绍:主要研究机器学习、计算机视觉、深度学习、ROS等相关内容,分享学习过程中的学习笔记和心得!期待您的关注,欢迎一起学习交流进步!同时还有1200G的Python视频和书籍资料等你领取!!!

  • 相关阅读:
    NOI2005 聪聪和可可
    CodeVS 1344 线型网络
    BZOJ 2466: [中山市选2009]树
    BZOJ 3827: [Poi2014]Around the world
    BZOJ 1109: [POI2007]堆积木Klo
    BZOJ 2124: 等差子序列
    BZOJ 4544: 椭圆上的整点
    BZOJ 2342: [Shoi2011]双倍回文
    BZOJ 2084: [Poi2010]Antisymmetry
    BZOJ 3111: [Zjoi2013]蚂蚁寻路
  • 原文地址:https://www.cnblogs.com/IT-cute/p/12990391.html
Copyright © 2011-2022 走看看