一文学会MoveIt Setup Assistant搭建moveit2机械臂模型
文章目录
- 前言
- 一、MoveIt Setup Assistant 是什么?
- 二、搭建步骤
- 拉取相关repo
- 创建项目文档
- 编辑moveit_description文件夹
- 编辑moveit_config文件夹
- MoveIt Setup Assistant 配置
- Launch moveit_setup_assistant
- 配置干涉关系
- 配置planning groups
- 配置ros2 controller
- 配置moveit controller
- 配置用户
- 配置生成路径
- 运行仿真
- 修改 moveit config 文件夹
- 总结
前言
之前写了一篇文章《从零开始搭建一个moveit2简单机械臂模型》如何通过urdf文件搭建一个简单机械臂模型并调用rviz做显示。本文将通过MoveIt Setup Assistant
来搭建一个机械臂,这台机械臂将包含urdf同时配置好srdf,动力学模型,init pose,ompl参数等文件。
一、MoveIt Setup Assistant 是什么?
MoveIt Setup Assistant 是 MoveIt 软件包的一部分,它是一个用于配置机器人和 MoveIt 的可视化工具。通过 MoveIt Setup Assistant,用户可以添加机器人的 URDF 模型以及定义其运动学参数和限制。还可以使用该工具创建运动规划场景,包括环境、终端姿态、插值器和碰撞检测等。MoveIt Setup Assistant 使用户可以快速轻松地设置 MoveIt,以便进行运动规划和控制。
二、搭建步骤
本文采用yaskawa motoman 搭建机械臂模型,选用型号为gp110
模型gitlab repo https://github.com/ros-industrial/motoman
拉取相关repo
命令如下:
mkdir moveit_robot_resources
cd moveit_robot_resources
git clone git@gitlab.com:ros-industrial/motoman.git
创建项目文档
命令如下:
cd moveit_robot_resources
ros2 pkg create --build-type ament_cmake gp110_moveit_config
ros2 pkg create --build-type ament_cmake gp110_moveit_description
编辑moveit_description文件夹
文件夹结构如下:
gp110_moveit_description
├── CMakeLists.txt
├── meshes
│ ├── collision
│ │ ├── base_link.stl
│ │ ├── link_1_s.stl
│ │ ├── link_2_l.stl
│ │ ├── link_3_u.stl
│ │ ├── link_4_r.stl
│ │ ├── link_5_b.stl
│ │ └── link_6_t.stl
│ └── visual
│ ├── base_link.stl
│ ├── link_1_s.stl
│ ├── link_2_l.stl
│ ├── link_3_u.stl
│ ├── link_4_r.stl
│ ├── link_5_b.stl
│ └── link_6_t.stl
├── package.xml
└── urdf
拷贝motoman/motoman_gp110_support/meshes/gp110
中的collinsion
与visual
文件夹到gp110_moveit_description/meshes
修改CMakeLists.txt
:
cmake_minimum_required(VERSION 3.8)
# 修改名字按照如下格式,moveit_resources_*_moveit_config前后缀要保留
project(moveit_resources_gp110_moveit_config)if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")add_compile_options(-Wall -Wextra -Wpedantic)
endif()# find dependencies
find_package(ament_cmake REQUIRED)
# uncomment the following section in order to fill in
# further dependencies manually.
# find_package(<dependency> REQUIRED)ament_package()
# 关键增加下边一行
install(DIRECTORY meshes urdf DESTINATION share/${PROJECT_NAME})
修改package.xml
:
<?xml version="1.0"?>
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3"><name>moveit_resources_gp110_moveit_config</name><version>0.0.0</version><description>TODO: Package description</description><maintainer email="example@example.com">dev</maintainer><license>TODO: License declaration</license><buildtool_depend>ament_cmake</buildtool_depend><export><build_type>ament_cmake</build_type></export>
</package>
拷贝motoman/motoman_resources/urdf
中的common_colors.xacro
与common_materials.xacro
到config目录
拷贝motoman/motoman_gp110_support/urdf/gp110_macro.xacro
到config目录
编辑moveit_config文件夹
文件结构如下:
gp110_moveit_config
├── CMakeLists.txt
├── config
│ ├── common_colors.xacro
│ ├── common_materials.xacro
│ ├── gp110_macro.xacro
│ └── gp110.urdf.xacro
| └── robot.urdf.xacro
├── launch
└── package.xml
└── .setup_assistant
修改CMakeLists.txt
:
cmake_minimum_required(VERSION 3.8)
project(moveit_resources_gp110_moveit_config)if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")add_compile_options(-Wall -Wextra -Wpedantic)
endif()# find dependencies
find_package(ament_cmake REQUIRED)
# uncomment the following section in order to fill in
# further dependencies manually.
# find_package(<dependency> REQUIRED)ament_package()install(DIRECTORY config launch DESTINATION share/${PROJECT_NAME})
修改package.xml
:
<?xml version="1.0"?>
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3"><name>moveit_resources_gp110_moveit_config</name><version>0.0.0</version><description>TODO: Package description</description><maintainer email="example@example.com">dev</maintainer><license>TODO: License declaration</license><buildtool_depend>ament_cmake</buildtool_depend><exec_depend>moveit_resources_gp110_moveit_description</exec_depend><export><build_type>ament_cmake</build_type></export>
</package>
创建gp110.urdf.xacro
文件,其内容为:
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="gp110"><!-- Import robot arm --><xacro:include filename="gp110_macro.xacro" /><!-- Set emviroment parameter. --><xacro:motoman_gp110 prefix="" mesh_path_prefix="package://moveit_resources_gp110_moveit_description"/></robot>
修改gp110_macro.xacro
为:
如下内容改了几句,后续均按照此规则修改。
<?xml version="1.0" ?>
<robot xmlns:xacro="http://ros.org/wiki/xacro"><!-- <xacro:macro name="motoman_gp110" params="prefix"> --><xacro:macro name="motoman_gp110" params="prefix mesh_path_prefix"><!-- <xacro:include filename="$(find motoman_resources)/urdf/common_materials.xacro"/> --><xacro:include filename="common_materials.xacro"/><!-- link list --><link name="${prefix}base_link"><visual><geometry><!-- <mesh filename="package://motoman_gp110_support/meshes/gp110/visual/base_link.stl"/> --><mesh filename="${mesh_path_prefix}/meshes/visual/base_link.stl"/></geometry><xacro:material_yaskawa_blue/></visual><collision><geometry><mesh filename="${mesh_path_prefix}/meshes/collision/base_link.stl"/></geometry></collision></link><link name="${prefix}link_1_s"><visual><geometry><mesh filename="${mesh_path_prefix}/meshes/visual/link_1_s.stl"/></geometry><xacro:material_yaskawa_blue/></visual><collision><geometry><mesh filename="${mesh_path_prefix}/meshes/collision/link_1_s.stl"/></geometry></collision></link>...
创建robot.urdf.xacro
文件,其内容为:
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="robot"><!-- Import robot urdf file --><xacro:include filename="$(find moveit_resources_gp110_moveit_description)/urdf/gp110.urdf" /></robot>
xacro
生成urdf文件:
cd moveit_robot_resources
xacro gp110_moveit_config/config/gp110.urdf.xacro -o gp110_moveit_description/urdf/gp110.urdf
check_urdf gp110_moveit_description/urdf/gp110.urdfrobot name is: gp110
---------- Successfully Parsed XML ---------------
root Link: base_link has 2 child(ren)child(1): basechild(2): link_1_schild(1): link_2_lchild(1): link_3_uchild(1): link_4_rchild(1): link_5_bchild(1): link_6_tchild(1): flangechild(1): tool0
修改.setup_assistant
:
moveit_setup_assistant_config:urdf:package: moveit_resources_gp110_moveit_configrelative_path: config/robot.urdf.xacrosrdf:relative_path: config/robot.srdfpackage_settings:author_name: bingleeauthor_email: lilinxin75@gmail.comgenerated_timestamp: 1686213224control_xacro:command:- positionstate:- position- velocitymodified_urdf:xacros:- control_xacrocontrol_xacro:command:- positionstate:- position- velocity
编译项目:
$ colcon build --packages-up-to --cmake-args -DCMAKE_BUILD_TYPE=ReleaseStarting >>> moveit_resources_gp110_moveit_description
Finished <<< moveit_resources_gp110_moveit_description [0.14s]
Starting >>> moveit_resources_gp110_moveit_config
Finished <<< moveit_resources_gp110_moveit_config [0.07s] Summary: 2 packages finished [0.28s]$ . install/setup.bash
MoveIt Setup Assistant 配置
Launch moveit_setup_assistant
ros2 launch moveit_setup_assistant setup_assistant.launch.py
配置干涉关系
这里直接用默认关系
配置planning groups
点击Add Kin. Chain如下所示
配置ros2 controller
配置moveit controller
配置用户
配置生成路径
生成项目文件
现在退出即可
运行仿真
修改 moveit config 文件夹
修改robot.urdf.xacro
文件
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="robot"><xacro:arg name="initial_positions_file" default="initial_positions.yaml" /><!-- Import robot urdf file --><!-- 修改此行如下 <xacro:include filename="$(find moveit_resources_gp110_moveit_config)/config/robot.urdf.xacro" /> --><xacro:include filename="$(find moveit_resources_gp110_moveit_description)/urdf/gp110.urdf" /><!-- Import control_xacro --><xacro:include filename="robot.ros2_control.xacro" /><xacro:robot_ros2_control name="FakeSystem" initial_positions_file="$(arg initial_positions_file)"/></robot>
修改CMakeLists.txt
文件
cmake_minimum_required(VERSION 3.22)
# project(gp110_moveit_config)
project(moveit_resources_gp110_moveit_config)find_package(ament_cmake REQUIRED)ament_package()install(DIRECTORY launch DESTINATION share/${PROJECT_NAME}PATTERN "setup_assistant.launch" EXCLUDE)
install(DIRECTORY config DESTINATION share/${PROJECT_NAME})
install(FILES .setup_assistant DESTINATION share/${PROJECT_NAME})
修改package.xml
文件
<?xml version="1.0"?>
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3"><!-- <name>gp110_moveit_config</name> --><name>moveit_resources_gp110_moveit_config</name><version>0.3.0</version><description>An automatically generated package with all the configuration and launch files for using the robot with the MoveIt Motion Planning Framework</description><maintainer email="lilinxin75@gmail.com">binglee</maintainer><license>BSD</license><url type="website">http://moveit.ros.org/</url><url type="bugtracker">https://github.com/ros-planning/moveit2/issues</url><url type="repository">https://github.com/ros-planning/moveit2</url><author email="lilinxin75@gmail.com">binglee</author><buildtool_depend>ament_cmake</buildtool_depend><exec_depend>moveit_ros_move_group</exec_depend><exec_depend>moveit_kinematics</exec_depend><exec_depend>moveit_planners</exec_depend><exec_depend>moveit_simple_controller_manager</exec_depend><exec_depend>joint_state_publisher</exec_depend><exec_depend>joint_state_publisher_gui</exec_depend><exec_depend>tf2_ros</exec_depend><exec_depend>xacro</exec_depend><!-- The next 2 packages are required for the gazebo simulation.We don't include them by default to prevent installing gazebo and all its dependencies. --><!-- <exec_depend>joint_trajectory_controller</exec_depend> --><!-- <exec_depend>gazebo_ros_control</exec_depend> --><exec_depend>controller_manager</exec_depend><exec_depend>moveit_configs_utils</exec_depend><exec_depend>moveit_resources_gp110_moveit_description</exec_depend><exec_depend>moveit_ros_move_group</exec_depend><exec_depend>moveit_ros_visualization</exec_depend><exec_depend>moveit_ros_warehouse</exec_depend><exec_depend>moveit_setup_assistant</exec_depend><exec_depend>robot_state_publisher</exec_depend><exec_depend>rviz2</exec_depend><exec_depend>rviz_common</exec_depend><exec_depend>rviz_default_plugins</exec_depend><exec_depend>tf2_ros</exec_depend><exec_depend>warehouse_ros_mongo</exec_depend><exec_depend>xacro</exec_depend><export><build_type>ament_cmake</build_type></export>
</package>
修改launch 文件,每个launch均修改如下,为避免这一步最好在前期是packages使用moveit_resources_gp110_moveit_config创建
编译:
$ colcon build --packages-up-to --cmake-args -DCMAKE_BUILD_TYPE=Release
Starting >>> moveit_resources_gp110_moveit_description
Finished <<< moveit_resources_gp110_moveit_description [0.10s]
Starting >>> moveit_resources_gp110_moveit_config
Finished <<< moveit_resources_gp110_moveit_config [0.13s] Summary: 2 packages finished [0.30s]$ . install/setup.bash
运行:
$ ros2 launch moveit_resources_gp110_moveit_config demo.launch.py
插入一个简单的轨迹规划如下:
总结
以上就是今天要讲的内容,本文记录了全套使用MoveIt Setup Assistant
搭建机械臂的过程,中间也遇到一些问题,在本文中都有说说明。
一文学会MoveIt Setup Assistant搭建moveit2机械臂模型相关推荐
- 使用ROS MoveIt!控制真实五自由度机械臂
文章目录 使用ROS MoveIt!控制diy五自由度机械臂 写在前面 修改功能包中相关文件 编写myrobot_controllers.yaml文件 修改launch文件 myrobot_drive ...
- 六轴机械臂下位机(arduino)+上位机(ROS+Moveit)---(一)机械臂硬件
六轴机械臂下位机(arduino)+上位机(ROS+Moveit)---(一)机械臂硬件 机械部分 机械臂制作时的注意点!!!(坑) 零件的3D打印 控制器接线问题 机械部分 六轴机械臂在工业领域的运 ...
- 使用 MoveIt 控制自己的真实机械臂【2】——编写 action server 端代码
上一篇文章中, 使用 MoveIt 控制自己的真实机械臂[1]--配置 action client 端,已经完成了 MoveIt 这边 action client 的基本配置,MoveIt 理论上可以 ...
- 使用 MoveIt 控制自己的真实机械臂【3】——优化轨迹发给真实机械臂执行
上一篇文章中,使用 MoveIt 控制自己的真实机械臂[2]--编写 action server 端代码,已经实现了 action server 端代码,并且拿到了 MoveIt 规划的轨迹数据.当然 ...
- 键盘+moveit+rviz 控制六轴机械臂(仿真)
首先下载代码:git clone https://github.com/ssz160107/catkin_ws_arm.git 打开文件夹如下图所示 打开一个终端运行mini_4wd_six_arm_ ...
- MoveIT和KDL中进行机械臂位置和姿态插值
机械臂轨迹规划中,可以使用直线和圆弧规划,不同规划方式对应不同的计算方法.在MoveIT中,moveit_planners/pilz_industrial_motion_planner/src/下保存 ...
- 使用 MoveIt 控制自己的真实机械臂【4】——了解 MoveIt 的轨迹规划实现机制
上一节中我们提到了一个planning request adapters 的概念,在这一节中我们将对其展开详细了解. planning request adapters 是运动规划中 Motion P ...
- 1.Moveit 创建六轴机械臂模型
一.从URDF到XACRO 1.声明xml与xacro <?xml version="1.0"?> <robot name="arm" xml ...
- Moveit+Gazebo:搭建双臂仿真平台(方案二)
演示视频:Moveit+Gazebo:搭建双臂仿真平台(方案二)_哔哩哔哩_bilibili 实现效果如上图所示,有两个rviz界面分别展示两条臂的运动,gazebo中同步rviz中的运动. 先说一下 ...
最新文章
- 企业单点登录解决方案(CAS)之二安装要求
- Android开发效率—Eclipse快捷键
- java----八种排序算法
- graphpad 折线图横坐标比例_GraphPad Prism绘制剂量反应曲线
- Java10来了,来看看它一同发布的全新JIT编译器
- vm服务器虚拟化如何漂移,解决虚拟机漂移问题的自动化网络管理
- 2029. 石子游戏 IX
- Markdown 添加emoji
- ES6新特性_ES6集合实践---JavaScript_ECMAScript_ES6-ES11新特性工作笔记031
- php 服务器 mac地址吗,php获取服务器端mac和客户端mac的地址
- LeetCode-13.罗马数字转整数
- qt 分贝毫瓦 dBm 与 功率 W 相互转换
- U盘中毒文件被隐藏?U盘中毒了怎么恢复文件
- 《AI·未来》 ---- 读书笔记
- [机器学习笔记] 什么是经验风险?什么是结构风险?
- 用python写一元二次方程_使用Python解一元二次方程!
- QC —什么是量子计算机?
- 剩余空间,自由再生——城市高架桥下空间的活化再生研究
- 估值11亿美元新独角兽诞生,网易有道CEO周枫:宁愿十年挖一口井
- 2022年SCAU计算智能题库