旅游网站建设公司,网站建设项目建议书,网络平台代理赚流水,网络营销推广方法十种Moveit与Gazebo联合仿真
上一篇博客已经将moveit!配置完毕#xff0c;然而想要让moveit!控制gazebo中的机械臂#xff0c;还需要进行一些接口的配置。现在我们有的功能包为sunday_description、sunday_moveit_config这两个功能包。且已经配置好xacro文件#xff0c;本篇内容…Moveit与Gazebo联合仿真
上一篇博客已经将moveit!配置完毕然而想要让moveit!控制gazebo中的机械臂还需要进行一些接口的配置。现在我们有的功能包为sunday_description、sunday_moveit_config这两个功能包。且已经配置好xacro文件本篇内容需要进行gazebo功能包的配置以及moveit功能包的文件修改。
sunday_gazebo
创建sunday_gazebo功能包
catkin_create_pkg sunday_gazebo roscpp rospy std_msgs创建launch、config、world、scripts等文件夹其列表如下所示
.
├── CMakeLists.txt
├── config
├── include
├── launch
├── package.xml
├── scripts
├── src
└── world
配置关节轨迹控制器
创建sunday_gazebo/config/sunday_trajectory_control.yaml文件用于配置关节轨迹控制器代码如下
sunday:arm_joint_controller:type: position_controllers/JointTrajectoryControllerjoints:- joint_1- joint_2- joint_3- joint_4- joint_5- joint_6gains:joint_1: {p: 1000.0, i: 0.0, d: 0.1, i_clamp: 0.0}joint_2: {p: 1000.0, i: 0.0, d: 0.1, i_clamp: 0.0}joint_3: {p: 1000.0, i: 0.0, d: 0.1, i_clamp: 0.0}joint_4: {p: 1000.0, i: 0.0, d: 0.1, i_clamp: 0.0}joint_5: {p: 1000.0, i: 0.0, d: 0.1, i_clamp: 0.0}joint_6: {p: 1000.0, i: 0.0, d: 0.1, i_clamp: 0.0}
对应创建sunday_gazebo/launch/sunday_trajectory_controller.launch文件用于加载上述yaml文件代码如下
launchrosparam file$(find sunday_gazebo)/config/sunday_trajectory_control.yaml commandload/node namearm_controller_spawner pkgcontroller_manager typespawner respawnfalseoutputscreen ns/sunday argsarm_joint_controller//launch配置关节状态控制器
创建sunday_gazebo/config/sunday_gazebo_joint_states.yaml文件用于配置关节状态控制器代码如下
sunday:# Publish all joint states -----------------------------------joint_state_controller:type: joint_state_controller/JointStateControllerpublish_rate: 50 对应创建sunday_gazebo/launch/sunday_gazebo_states.launch文件用于加载上述yaml文件代码如下
launch!-- 将关节控制器的配置参数加载到参数服务器中 --rosparam file$(find sunday_gazebo)/config/sunday_gazebo_joint_states.yaml commandload/node namejoint_controller_spawner pkgcontroller_manager typespawner respawnfalseoutputscreen ns/sunday argsjoint_state_controller /!-- 运行robot_state_publisher节点发布tf --node namerobot_state_publisher pkgrobot_state_publisher typerobot_state_publisherrespawnfalse outputscreenremap from/joint_states to/sunday/joint_states //node/launch配置gazebo环境
创建sunday_gazebo/launch/sunday_gazebo_world.launch文件用于加载gazebo环境代码如下
launch!-- these are the arguments you can pass this launch file, for example paused:true --arg namepaused defaultfalse/arg nameuse_sim_time defaulttrue/arg namegui defaulttrue/arg nameheadless defaultfalse/arg namedebug defaultfalse/!-- We resume the logic in empty_world.launch --include file$(find gazebo_ros)/launch/empty_world.launcharg namedebug value$(arg debug) /arg namegui value$(arg gui) /arg namepaused value$(arg paused)/arg nameuse_sim_time value$(arg use_sim_time)/arg nameheadless value$(arg headless)/arg nameworld_name value$(find sunday_gazebo)/world/feeding_place.world//include!-- Load the URDF into the ROS Parameter Server --param namerobot_description command$(find xacro)/xacro --inorder $(find sunday_description)/urdf/sunday.xacro / !-- Run a python script to the send a service call to gazebo_ros to spawn a URDF robot --node nameurdf_spawner pkggazebo_ros typespawn_model respawnfalse outputscreenargs-urdf -model sunday -param robot_description/
/launch配置moveit功能包文件
创建/修改sunday_moveit_config/config/controllers_gazebo.yaml文件用于配置moveit!控制器接口代码如下
controller_manager_ns: controller_manager
controller_list:- name: sunday/arm_joint_controlleraction_ns: follow_joint_trajectorytype: FollowJointTrajectorydefault: truejoints:- joint_1- joint_2- joint_3- joint_4- joint_5- joint_6修改sunday_moveit_config/launch/sunday_moveit_controller_manager.launch.xml代码如下
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 namemoveit_controller_manager defaultmoveit_simple_controller_manager/MoveItSimpleControllerManager /param namemoveit_controller_manager value$(arg moveit_controller_manager)/!-- loads ros_controllers to the param server --rosparam file$(find sunday_moveit_config)/config/controllers_gazebo.yaml/
/launch创建/修改sunday_moveit_config/launch/moveit_planning_execution.launch用于加载planning_group等moveit核心功能代码如下
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 sunday_moveit_config)/launch/move_group.launcharg namepublish_monitored_planning_scene valuetrue //include!-- # The visualization component of MoveIt! --include file$(find sunday_moveit_config)/launch/moveit_rviz.launcharg nameconfig valuetrue //include!-- We do not have a robot connected, so publish fake joint states --node namejoint_state_publisher pkgjoint_state_publisher typejoint_state_publisherparam name/use_gui valuefalse/ rosparam param/source_list[/sunday/joint_states]/rosparam/node/launch修改sunday_moveit_config/launch/moveit_rviz.launch使用新版配置工具生成的moveit_rviz.launch文件有些许问题代码如下
launcharg namedebug defaultfalse /arg unless$(arg debug) namelaunch_prefix value /
arg if$(arg debug) namelaunch_prefix valuegdb --ex run --args /arg nameconfig defaultfalse /arg unless$(arg config) namecommand_args default /arg if$(arg config) namecommand_args default-d $(find sunday_moveit_config)/launch/moveit.rviz /node name$(anon rviz) launch-prefix$(arg launch_prefix) pkgrviz typerviz respawnfalseargs$(arg command_args) outputscreenrosparam commandload file$(find sunday_moveit_config)/config/kinematics.yaml//node/launch
配置总bringup.launch文件
配置sunday_gazebo/launch/sunday_moveit_bringup.launch用于加载所有launch文件代码如下
launch!-- Launch Gazebo --include file$(find sunday_gazebo)/launch/sunday_gazebo_world.launch /!-- ros_control arm launch file --include file$(find sunday_gazebo)/launch/sunday_gazebo_states.launch / !-- ros_control trajectory control dof arm launch file --include file$(find sunday_gazebo)/launch/sunday_trajectory_controller.launch /!-- moveit launch file --include file$(find sunday_moveit_config)/launch/moveit_planning_execution.launch/include
/launch至此gazebo与moveit功能包配置完毕将功能包进行编译。sunday_gazebo列表如下
.
├── CMakeLists.txt
├── config
│ ├── sunday_gazebo_joint_states.yaml
│ └── sunday_trajectory_control.yaml
├── include
│ └── sunday_gazebo
├── launch
│ ├── sunday_bringup_moveit.launch
│ ├── sunday_gazebo_states.launch
│ ├── sunday_gazebo_world.launch
│ └── sunday_trajectory_controller.launch
├── package.xml
├── scripts
├── src
└── world└── feeding_place.worldworld为配置好的抓取仿真场景。
联合仿真测试
运行代码roslaunch sunday_gazebo sunday_bringup_moveit.launch可以看到同时加载moveit和gazebo场景在Query栏将Goal State设置为scan_food在Commands栏点击Plan Execute可以看到gazebo中的机械臂运行到scan_food姿态。
小结
至此moveit!与gazebo联合仿真配置完毕配置原理部分不展开介绍各位可以去古月居学习这部分的原理内容。接下去将讲解如何用yolo训练自己的数据集。
参考资料
1.古月居机械臂课程