ROS 控制实际工业机器人(Staubli tx90)(三)
通过提供的staubli_tx90_support包建立moveit包
运行moveit配置助手
roslaunch moveit_setup_assistant setup_assistant.launch
选择support包里官方提供的urdf文件
至于为什么一定要使用ros官方提供的staubli包中的文件,因为官方包命名更为准确,同时包含了关节速度限制,后面会介绍。
点击生成碰撞矩阵,这样做的好处是可以防止乡邻关节的误碰撞提示,同时不会让机器人其他关节相互碰撞。
添加虚拟Joint
添加planning group
点Add Kin.Chain,并选择baselink和toplink,这里没有添加末端工具,所以直接选择六关节
添加一个点位,因为实验室机器人初始关节角为(0,0,90,0,45,0)
把作者信息填一下,然后选择生成包的位置就可以生存moveit包啦
更改moveit包配置文件,使之连接上真实机器人
1.demo.launch文件中参数fake_execution的值改为false
<!--此段代码来自moveit配置文件demo.launch-->
<!-- Run the main MoveIt executable without trajectory execution (we do not have controllers configured by default) -->
<include file="$(find aubo_i5_moveit_config)/launch/move_group.launch">
<arg name="allow_trajectory_execution" value="true"/>
<arg name="fake_execution" value="false"/>
<arg name="info" value="true"/>
<arg name="debug" value="$(arg debug)"/>
</include>
2.move_group.launch文件中的moveit_controller_manager参数。
move_group.launch文件中,moveit_controller_manager在选择参数值时,“unless”前面那个velue值要修改,写一个自己机器人名称作为前缀,实验室机器人叫“staubli tx90“
<!-- Trajectory Execution Functionality -->
<include ns="move_group" file="$(find aubo_i5_moveit_config)/launch/trajectory_execution.launch.xml" if="$(arg allow_trajectory_execution)">
<arg name="moveit_manage_controllers" value="true" />
<arg name="moveit_controller_manager" value="staubli_tx90" unless="$(arg fake_execution)"/>
<arg name="moveit_controller_manager" value="fake" if="$(arg fake_execution)"/>
</include>
3.接下来,这个参数会传递给trajectory_execution.launch.xml文件,该文件中有下面这句话
<include file="$(find staubli_tx90_moveit)/launch/$(arg moveit_controller_manager)_moveit_controller_manager.launch.xml" />
4.修改staubli_tx90_moveit_controller_manager.launch.xml文件
这是一个空文件,填写如下参数
<launch>
<!-- Set the param that trajectory_execution_manager needs to find the controller plugin -->
<arg name="moveit_controller_manager" default="moveit_simple_controller_manager/MoveItSimpleControllerManager" />
<param name="moveit_controller_manager" value="$(arg moveit_controller_manager)"/>
<!-- load controller_list -->
<rosparam file="$(find staubli_tx90_moveit)/config/controllers.yaml"/>
</launch>
5.创建controllers.yaml配置文件
上一步的代码最后一句指向了config目录下一个叫做controllers.yaml的文件,config目录中只有fake_controllers.yaml,所以,现在要做的就是复制一份这个文件,然后将名字改为controllers.yaml,打开这个新文件,将文件修改成如下形式:
controller_list:
- name: ""
action_ns: joint_trajectory_action
type: FollowJointTrajectory
joints:
- joint_1
- joint_2
- joint_3
- joint_4
- joint_5
- joint_6
name和action_ns参数为什么这样填,是因为运行rqt_graph,查看到的动作消息名称为/joint_trajectory_action。
运行rqt_graph
rosrun rqt_graph rqt_graph
控制
运行launch文件夹中的demo.launch。
使用moveit自带的拖拽器控制机器人 ,plan和execute就可以开始控制啦