ros构建机器人运动学模型_ROS入门学习之七Moveit机械臂控制

本文介绍了ROS中的MoveIt!系统,包括其系统架构、用户接口、约束条件和适配器。详细阐述了MoveIt!的使用步骤,如创建机械臂模型与配置文件,编程接口的关节空间和工作空间规划,以及Gazebo中的机械臂仿真。同时,提到了ROS-I框架在工业机器人中的应用和通信层次结构。
摘要由CSDN通过智能技术生成

46cb3078a2637e2b674f0a8b2fd550dc.png

1.MoveIt!系统架构

MoveIt是什么:

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

1bdce536a7a52958620bd4e7be128334.png

系统架构

用户接口(User Interface)

  • C++:使用move_group_interface包提供的API
  • Python:使用moveit_commander包提供的API
  • GUI:使用Moveit!的rviz插件

ROS参数服务器

  • URDF:robot_description参数,获取机器人URDF模型的描述信息
  • SRDF:robot_description_semantic参数,获取机器人模型的配置信息
  • config:机器人的其他配置信息,例如关节限位、运动学插件、运动规划插件

机器人

Topic和Action通信

1b848baaed13f25b3c302df8a63839a6.png

系统架构

06ec27467b63d16b73b364c974d86b5c.png

63514cfca76eff173ecb86a32c3420c4.png

约束条件

  • 位置约束:限制link的运动区域
  • 方向约束:限制link的运动方向(roll、pitch和yaw)
  • 可见性约束:限制link上的某点在某区域内的可见性(通过视觉传感器)
  • joint约束:限制joint的运动范围
  • 用户定义约束:用户通过回调函数自定义所需的约束条件

适配器

  • FixStartStateBounds:修复joint的初始极限
  • FixWorkspaceBounds:设置一个默认尺寸的工作空间
  • FixStateCollision:修复碰撞配置文件
  • FixStatePathConstraints:找到满足约束的姿态作为机器人的初始姿态
  • AddTimeParameterization:为空间轨迹进行速度、加速度约束,为每个轨迹点加入速度、加速度、时间等参数

监听信息

  • 状态信息(State Information)机器人的关节话题joint_states
  • 传感器信息(Sensor Information)机器人的传感器信息
  • 外界环境信息(World geometry Information)通过传感器建立的周围环境信息

8632c0fe3f4ea9722711c81e216b7484.png

MoveIt!使用步骤

  • 1)组装
你可以使用ROS MoveIt提供的功能将机械臂的URDF模型转换为机器人的DH参数接口。MoveIt是一个用于机器人运动规划和控制ROS软件包,它提供了各种工具和接口来处理机器人的URDF模型。 首先,确保你已经安装了ROS和MoveIt软件包。然后,按照以下步骤进行操作: 1. 创建一个新的ROS软件包用于存储你的机器人配置文件。可以使用以下命令创建软件包: ```bash $ catkin_create_pkg my_robot_description moveit_core moveit_ros_planning_interface ``` 2. 将你的URDF模型文件放置在软件包的`urdf`目录下。如果你没有URDF模型文件,可以使用SolidWorks等CAD工具来创建一个,并将其导出为URDF格式。 3. 在软件包的`config`目录下创建一个新的MoveIt配置文件,例如`my_robot.srdf`。在这个文件中,你可以定义机器人的关节限制、碰撞对象等信息。你可以参考MoveIt官方文档来了解如何编写这个文件。 4. 在软件包的`launch`目录下创建一个新的Launch文件,例如`demo.launch`。在这个文件中,你需要加载MoveIt的规划接口和机器人模型。以下是一个示例Launch文件的内容: ```xml <launch> <!-- Load the URDF model --> <param name="robot_description" command="$(find xacro)/xacro.py '$(find my_robot_description)/urdf/my_robot.urdf'" /> <!-- Load the SRDF model --> <param name="robot_description_semantic" textfile="$(find my_robot_description)/config/my_robot.srdf" /> <!-- Load the MoveIt configuration --> <include file="$(find moveit_config)/launch/move_group.launch" /> </launch> ``` 5. 运行Launch文件,启动MoveIt规划接口和机器人模型: ```bash $ roslaunch my_robot_description demo.launch ``` 6. 在ROS命令行中,使用MoveIt提供的API来访问机器人的DH参数接口。你可以使用Python或C++编写脚本来实现这一点。以下是一个使用Python的示例代码: ```python import rospy import moveit_commander rospy.init_node('my_robot_dh_interface', anonymous=True) robot = moveit_commander.RobotCommander() # 获取机器人的DH参数 dh_params = robot.get_current_state().get_joint_state().dh # 打印DH参数 for param in dh_params: print(param) ``` 这样,你就可以将机器人的URDF模型转换为DH参数接口,并使用MoveIt进行机器人的运动规划和控制了。请注意,DH参数是一种描述机器人关节和链接之间几何关系的方法,可以用于运动学计算和路径规划等任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值