ur机械臂以及相关机械配置文件解读

结合着看上一节

ur机械臂

文件指令集

roslaunch ur_bringup ur5_bringup.launch robot_ip:=IP_OF_THE_ROBOT [reverse_port:=REVERSE_PORT]
roslaunch ur5_moveit_config ur5_moveit_planning_execution.launch
roslaunch ur5_moveit_config moveit_rviz.launch config:=true


roslaunch ur_modern_driver ur3_bringup.launch limited:=true robot_ip:=192.168.1.10 use_lowbandwidth_trajectory_follower:=true
roslaunch ur3_moveit_config ur3_moveit_planning_execution.launch limited:=true
roslaunch ur3_moveit_config moveit_rviz.launch config:=true



roslaunch ur_gazebo ur5.launch limited:=true
roslaunch ur5_moveit_config ur5_moveit_planning_execution.launch sim:=true limited:=true
roslaunch ur5_moveit_config moveit_rviz.launch config:=true

首先是bringup

他这里不同的包不太一样 有modern driver 还有ur bringup
roslaunch ur_modern_driver ur3_bringup.launch

ur3_bringup
	| 一些参数
	|ur3 up load.launch
	|ur common.launch

ur3 up load  在urdescripton中
	|ros description command = ur3_robot urdf 文件 相当于把模型文件加载给服务器,
	 这里用了if else 调用是否为limit的模型,同时传参
	 			hardware_interface/PositionJointInterface


ur common.launch 他的ip节点啥的主要给到这里
	|一堆参数
	|启动robot state puublisher节点
	|启动 ur driver中的driver.py 并传了一堆参数 如 max payload以及velocity
	|启动tf2 ros包中的buffer server节点

官方的模型文件

总结:
1 基本的模型
2 模型在gazebo中的标签配置
3 为joint添加传动
4 添加gazebo控制器插件

robot.urdf.xacro
	|comman.gazebo .xacro
	| ur3.urdf.xacro 这里相当于传入了宏定义文件
	 	下面就是直接调用宏定义文件并传参hardware_interface/PositionJointInterface
	 然后给了个虚拟link word 和 关节将word和机器人连接


comman gazebo .xacro
  主体部分就是给到ros control控制插件
	<gazebo>
    <plugin name="ros_control" filename="libgazebo_ros_control.so">
      <!--robotNamespace>/</robotNamespace-->
      <!--robotSimType>gazebo_ros_control/DefaultRobotHWSim</robotSimType-->
      <legacyModeNS>true</legacyModeNS>
    </plugin>


ur3.urdf.xacro
	|包含文件transmission.xacro 每个关节进行设置
	|文件ur。gazebo.xacro 他这里给每个link进行gazebo设置
	|各个模型关节描述,这里面没有gazebo
	 总的宏定义文件中包含了两个宏调用:
	 调用上面的文件,就是上面的gazebo和
	 transmission并传参hw_interface="${transmission_hw_interface}
	

gazebo launch

|一些参数
|启动仿真世界(find gazebo_ros)/launch/empty world.launch
|ur3 upload.launch 
| gazebo ros 开始spawn model节点
|包含controller util.launch
|包含arm controller ur3.yaml 加载然后node name="arm_controller_spawner" pkg="controller_manager" type="controller_manager" args="spawn arm_controller"
最后
|<node name="ros_control_controller_manager" pkg="controller_manager" type="controller_manager" respawn="false" output="screen" args="load joint_group_position_controller" />


controller util.launch
	robot state publisher节点
	rostopic包中的rostopic节点,之后传参args="pub /calibrated std_msgs/Bool true"
	加载joint_state_controller.yaml
	之后<node name="joint_state_controller_spawner" pkg="controller_manager" type="controller_manager" args="spawn joint_state_controller" 
	

joint_state_controller.yaml
	joint_state_controller:
    type: joint_state_controller/JointStateController
    publish_rate: 50  


arm controller ur3.yaml
	arm_controller:
  type: position_controllers/JointTrajectoryController
  joints:
     - shoulder_pan_joint
     - shoulder_lift_joint
     - elbow_joint
     - wrist_1_joint
     - wrist_2_joint
     - wrist_3_joint
  constraints:
      goal_time: 0.6
      stopped_velocity_tolerance: 0.05
      shoulder_pan_joint: {trajectory: 0.1, goal: 0.1}
      shoulder_lift_joint: {trajectory: 0.1, goal: 0.1}
      elbow_joint: {trajectory: 0.1, goal: 0.1}
      wrist_1_joint: {trajectory: 0.1, goal: 0.1}
      wrist_2_joint: {trajectory: 0.1, goal: 0.1}
      wrist_3_joint: {trajectory: 0.1, goal: 0.1}
  stop_trajectory_duration: 0.5
  state_publish_rate:  25
  action_monitor_rate: 10
joint_group_position_controller:
  type: position_controllers/JointGroupPositionController
  joints:
     - shoulder_pan_joint
     - shoulder_lift_joint
     - elbow_joint
     - wrist_1_joint
     - wrist_2_joint
     - wrist_3_joint


ur3_moveit_planning_execution.launch

他这里如果sim为true,就会

<remap if="$(arg sim)" from="/follow_joint_trajectory" to="/arm_controller/follow_joint_trajectory"/》

文件形式:

主要
<include file="$(find ur3_moveit_config)/launch/move_group.launch">
    <arg name="limited" default="$(arg limited)"/>
    <arg name="debug" default="$(arg debug)" />
  </include>

move_group.launch 该文件是自动生成的
	

moveit_rviz.launch

这个也是自动生成的

<launch>

  <arg name="debug" default="false" />
  <arg unless="$(arg debug)" name="launch_prefix" value="" />
  <arg     if="$(arg debug)" name="launch_prefix" value="gdb --ex run --args" />

  <arg name="config" default="false" />
  <arg unless="$(arg config)" name="command_args" value="" />
  <arg     if="$(arg config)" name="command_args" value="-d $(find ur3_moveit_config)/launch/moveit.rviz" />
  
  <node name="$(anon rviz)" launch-prefix="$(arg launch_prefix)" pkg="rviz" type="rviz" respawn="false"
	args="$(arg command_args)" output="screen">
    <rosparam command="load" file="$(find ur3_moveit_config)/config/kinematics.yaml"/>
  </node>

</launch>

古月居课程

提到了为了连接moveit和gazebo仿真
1 完善模型,惯性和碰撞
2 为link添加gazebo标签

gazebo reference=“linkname”
  material Gazebo/Blue /material
 /gazebo

3 为joint添加传动
4 添加gazebo控制器插件,
为robot元素添加插件
为link ,joint标签添加插件

joint trajectory contreller (gazebo)

这里和ur官方的包不一样
在于type是spawner

joint state controller(gazebo)

就是那个state publisher

follow joint trajectory

在moveit配置包下的config中有controllers.yaml
就是follow joint trajectory
说是有一个moveit controller mannager.launch 生成文件,原本是空的。在启动move group.launch文件是后会调用他。
ur官方的:

<launch>
  <rosparam file="$(find ur3_moveit_config)/config/controllers.yaml"/>
  <param name="use_controller_manager" value="false"/>
  <param name="trajectory_execution/execution_duration_monitoring" value="false"/>
  <param name="moveit_controller_manager" value="moveit_simple_controller_manager/MoveItSimpleControllerManager"/>
</launch>

我自己的:

<launch>

  <!-- loads moveit_controller_manager on the parameter server which is taken as argument 
    if no argument is passed, moveit_simple_controller_manager will be set -->
  <arg name="moveit_controller_manager" default="moveit_simple_controller_manager/MoveItSimpleControllerManager" />
  <param name="moveit_controller_manager" value="$(arg moveit_controller_manager)"/>

  <!-- loads ros_controllers to the param server -->
  <rosparam file="$(find ur_gripper_moveit_config)/config/ros_controllers.yaml"/>
</launch>

https://www.guyuehome.com/24269/feed

srdf

一些经过moveit 配置界面完成后的配置文件

古月居课程代码

bringup .launch	
	|gazebo world.launch
		 配置世界,加载参数,上传模型,启动gazebo世界节点
	| gazebo states.launch
		 将关节控制器的配置参数加载到参数服务器中,
		 之后joint_controller_spawner pkg="controller_manager" type="spawner" 
		运行robot_state_publisher节点,发布tf,<remap from="/joint_states" to="/probot_anno/joint_states" 
	|trejectory controller.launch
		trajectory_control.yaml之后"arm_controller_spawner" pkg="controller_manager" type="spawner"		
	|planning execution.launch
		

planning execution.launch:

<launch>
 # The planning and execution components of MoveIt! configured to 
 # publish the current configuration of the robot (simulated or real)
 # and the current state of the world as seen by the planner
 <include file="$(find probot_anno_moveit_config)/launch/move_group.launch">
  <arg name="publish_monitored_planning_scene" value="true" />
 </include>

 # The visualization component of MoveIt!
 <include file="$(find probot_anno_moveit_config)/launch/moveit_rviz.launch">
  <arg name="config" value="true" />
 </include>

  <!-- We do not have a robot connected, so publish fake joint states -->
  <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher">
    <param name="/use_gui" value="false"/> 
    <rosparam param="/source_list">[/probot_anno/joint_states]</rosparam>
  </node>

</launch>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值