ethercat电机六自由度机械臂的ros2control+moveit2方案启动流程
零、启动过程
终端1
sudo /etc/init.d/ethercat start
- 启动ethercat的主站服务,ethercat不向tcp那种常见的网络服务被写进了操作系统内部,所以需要单独启动这个服务。
ethercat slaves
- 查看从机状态,确保硬件正常
终端2
ros2 launch moveit_test demo.launch.py
- 启动ros2control和moveit2
一、ros2 launch moveit_test demo.launch.py
1.1 MoveItConfigsBuilder(“erobot”, package_name=“moveit_test”)
- 这个函数定义机器人的名字是“erobot”,软件包是moveit_test。这个函数只是生成配置条件。
- 这个函数主要是利用机器人相关的配置文件生成了"robot_description",包括:erobot.urdf.xacro和erobot.srdf、erobot.ros2_control.xacro
1.2 generate_demo_launch(moveit_config)
- 这是一个python文件,通过脚本的形式启动需要的launch文件。所有launch文件也是通过py文件启动的,就是上面这个图中的py文件,都是围绕demo.launch.py建立的,其他的都是为了启动不通的部分、
- 需要启动的包括以下文件:
Includes
* static_virtual_joint_tfs
* robot_state_publisher
* move_group
* moveit_rviz
* warehouse_db (optional)
* ros2_control_node + controller spawners
"""
也就是需要的所有文件了,就是除了erobot.urdf.xacro和erobot.srdf、erobot.ros2_control.xacro以外下面这张图中的所有配置文件(以机器人名开头的文件)
- 这两节的区别在于一个是生成机器人描述,一个是启动ros2control和moveit,之后将分别详述
二、机器人描述文件
1、erobot.urdf.xacro
这里值得一说的就是erobot.urdf.xacro这个文件,调用了erobot.ros2_control.xacro文件,这个文件所需的文件生成了名为FakeSystem的硬件接口,这里还叫FakeSystem的原因是控制器直接调用的moveit自带的,自带的那个是没有接实际硬件的,所以叫“虚假系统”
2、erobot.ros2_control.xacro
这个调用了硬件接口那个包的编译结果,连接了两个软件包
三、启动配置文件
配置文件中比较重要的就是moveit_contorllers.yaml和ros2_controllers.yaml,分别配置了moveit中控制器管理者和ros2control的控制器管理者,moveit中的管理者实际就是调用了ros2control的,只是增加了一部分内容。
# This config file is used by ros2_control
controller_manager:
ros__parameters:
update_rate: 100 # Hz
p1_controller: #定义控制器
type: joint_trajectory_controller/JointTrajectoryController
joint_state_broadcaster: #定义广播类型
type: joint_state_broadcaster/JointStateBroadcaster
p1_controller: #给与参数
ros__parameters:
joints:
- shoulder_joint
- upperArm_joint
- foreArm_joint
- wrist1_joint
- wrist2_joint
- wrist3_joint
command_interfaces:
- position
state_interfaces:
- position
- velocity