多指灵巧手MoveIt!与Gazebo联合仿真框架搭建
至于为什么叫框架,一是因为灵巧手的3维模型没有按照基本的设计要求画,正常来说,设计机器人机构之前应该设计好机构需要多少个自由度/DOF,每个自由度是旋转/revolute类型还是滑移/prismatic类型,各个关节的自由度限位/limits,各个连杆的长度/a,每个自由度之间的扭角/α,偏移/d,整个机器人的工作空间/workspace等等;二是当前搭建的框架能实现的function和控制很基础,灵巧手其实是一个多机器人协同的系统,需要在MoveIt!的代码上进行更改,至少抓取矩阵这种概念在MoveIt!上是没有的,还有很多地方需要修改。

- 单纯的通过ROS控制Gazebo中的机器人模型
- 通过MoveIt!直接控制现实中的机器人
- MoveIt!与Gazebo联合仿真
- 使用Solidworks设计灵巧手,通过sw2urdf插件生成ROS包
- 机器人MoveIt!配置文件生成
- URDF适配Gazebo的简单修改
- ROS节点控制Gazebo中机器人模型
- Moveit!控制现实中的机器人
- MoveIt!与Gazebo联合仿真

- 每个link都单独放入总装配体中,最好不要用子装配体
- 设计好装配体后,使用sw2urdf插件定义各个关节连杆的从属关系,在这之前,使用D-H方法自己画出各个轴和坐标系,不要自动生成,这样生成的URDF99%会错位。另外旋转轴的类型对于机械臂这种机器人一般选择revolute,移动的小车这种机器人就选择continous,以上两者的区别在于如果选择前者会在URDF文件中定义关节限位,固定的关节选择fixed。
- 如果你的机器人底座是固定的,那么你最好把base_link整体z坐标大于0,不然到时放到Gazebo的时候会与地面干涉,造成不必要的麻烦。
- 干涉检测那一部分自动生成后转到矩阵表示,检查是否符合自己的要求

- virtual_joint的目的一般是为了将base_link和world坐标系相固连,在后面修改URDF的部分中为适配Gazebo已经添加了base_link和world的虚拟关节,所以在这里不再需要添加,各位自行决定.
- planning_group按照每个手指分组.
- Robot_Pose这一部分可以检测你的机器人关节的限位,如果动不了,一般是URDF中关节硬限位和软限位没有设置好.
- ROS_Control这块根据具体的控制器类型选择,先按组自动添加,然后再修改控制器类型,如果和Gazebo联合仿真的话,选择position_controllers/JointTrajectoryController这一类型,原因是由MoveIt!和仿真环境或实际机器人的通信方式所决定,具体可在MoveIt!官网介绍.当然以上两者联合仿真的话也不一定就要position_controllers/JointTrajectoryController这种控制器,你也可以选择其它控制器,然后将MoveIt!的client发出的action消息写个Server端进行解析,然后用过ROS_Control进行Gazebo控制.
move_group talks to the controllers on the robot using the FollowJointTrajectoryAction interface. This is a ROS action interface. A server on the robot needs to service this action - this server is not provided by move_group itself. move_group will only instantiate a client to talk to this controller action server on your robot.
- Simulation这部分生成适配Gazebo的URDF文件,在原来基础上添加了传动/Transmission和连杆惯量以及gazebo_ros_control插件,这样才能真实的模拟真实物理环境,把这个URDF文件作为后面用的机器人描述文件.
- 添加一个virtual_link用以连接base_link和world,类型为固定.
- 设置好关节的软硬限位和旋转方向.
- 检查惯性等属性是否正确,gazebo_ros_control可以设置你的机器人的命名空间,注意这个命名需要和之后的controller.yaml文件和MoveIt!配置生成的ros_control.launch中的命名空间一致,不然到时候节点会找不到另一个命名空间的控制器.
mutifingerhand:
joint_state_controller:
type: joint_state_controller/JointStateController
publish_rate: 50 J11_controller:
type: position_controllers/JointPositionController
joint: J11
pid: {p: 100.0, i: 0.01, d: 1}
J12_controller:
type: position_controllers/JointPositionController
joint: J12
pid: {p: 100.0, i: 0.01, d: 1}


<include file="$(find mutifingerhand_moveit_config)/launch/move_group.launch">
<arg name="allow_trajectory_execution" value="true"/>
<arg name="fake_execution" value="true"/>
<arg name="info" value="true"/>
<arg name="debug" value="$(arg debug)"/>
<arg name="pipeline" value="$(arg pipeline)"/>
</include>
joint_state_controller:
type: joint_state_controller/JointStateController
publish_rate: 50
controller_list:
- name: finger1_controller
action_ns: follow_joint_trajectory
type: FollowJointTrajectory
default: true
joints:
- J11
- J12
- J13
- J14
- J15
#include <ros/ros.h>
#include "actionlib/server/action_server.h"
#include "actionlib/server/server_goal_handle.h"
#include <control_msgs/FollowJointTrajectoryAction.h> class ControllerServerAction
{
protected: ros::NodeHandle nh_; actionlib::ActionServer<control_msgs::FollowJointTrajectoryAction> action_server;
actionlib::ServerGoalHandle<control_msgs::FollowJointTrajectoryAction> goal_handle_; control_msgs::FollowJointTrajectoryResult result_; public: ControllerServerAction(std::string name) :
action_server(nh_, name, boost::bind(&ControllerServerAction::pubGoalJoints, this, _1), false)
{
action_server.start();
// Moving to a pose goal
/* Uncomment below line when working with a real robot */
move_group.move();

多指灵巧手MoveIt!与Gazebo联合仿真框架搭建的更多相关文章
- 【探索之路】机器人篇(5)-Gazebo物理仿真环境搭建_让机器人运动起来
如果完成了前两步,那么其实我们已经可以去连接我们的现实中的机器人了. 但是,做机器人所需要的材料还没有到,所以我们这里先在电脑平台上仿真一下.这里我们用到的就算gazebo物理仿真环境,他能很好的和R ...
- 01_Keil与Proteus联合仿真的注意事项
01. 关于keil5和Proteus8的联合仿真的操作步骤,这里就不细说,给个链接,步骤差不多是最齐全的 CSDN博客链接:https://blog.csdn.net/wzk456/article/ ...
- (转)Quartus II和Modelsim的联合仿真(详细)
这篇文章不需要在modelsim中建库.映射.建工程等一些繁琐的步骤,直接使用modelsim中的默认work库.使用quartus+modelsim联合仿真. 首先推荐一篇文章 http://www ...
- 通过文件读写方式实现Matlab和Modelsim的联合仿真
虽然Modelsim的功能非常强大,仿真的波形可以以多种形式进行显示,但是当涉及到数字信号处理的算法的仿真验证的时候,则显得有点不足.而进行数字信号处理是Matlab的强项,不但有大量的关于数字信号处 ...
- ISE和Modelsim联合仿真(详细步骤讲解)
ISE和Modelsim联合仿真(转) 地址:http://www.cnblogs.com/feitian629/archive/2013/07/13/3188192.html 相信很多人会遇到过这个 ...
- vivado与modelsim的联合仿真(二)
最近在做Zynq的项目,曾经尝试使用ISE+PlanAhead+XPS+SDK组合和Vivado+SDK来搭建工程,使用中发现前者及其不方便后者有诸多不稳定.近期得闻Xilinx退出Vivado20 ...
- vivado2013.4和modelsim联合仿真
vivado2013.4和modelsim联合仿真 Hello,Panda 最近在做Zynq的项目,曾经尝试使用ISE+PlanAhe ...
- Xilinx ISE如何调用Modelsim进行联合仿真
图: 在对设计的芯片进行测试时,经常要用到FPGA,可是里面的仿真工具却不如Modelsim那么好用,且在规模比较大时,ISE在仿真时,软件经常会报告内存限制的问题,此时一般会切换到Modelsim软 ...
- vivado2017.1和modelsim10.5联合仿真
vivado2017.1和modelsim版本 vivado可在xilinx官网查询匹配的modelsim最低版本,下载modelsim前记得选用合适的版本号,如图 查询地址:https://www. ...
随机推荐
- QQ 邀你上线小程序,官方生态能力持续赋能你的小程序
转: QQ 邀你上线小程序,官方生态能力持续赋能你的小程序 你身边总有一些朋友,他们的表情包极其丰富,能时刻应对各种聊天场景. 表情包奇奇怪怪,可可爱爱,非常形象生动体现我们当下的心情,逐渐成为社交平 ...
- 实现Hi3559板载自启动网卡、NFS及Telnet服务
实现Hi3559板载开机自启动网卡.NFS及Telnet服务通过直接在home目录下,编辑.bashrc,vi ~/.bashrc 1 ifconfig eth0 up 2 ifconfig eth0 ...
- 链表算法题之中等级别,debug调试更简单
文章简述 大家好,本篇是个人的第 5 篇文章 从本篇文章开始,分享关于链表的题目为中等难度,本次共有 3 道题目. 一,两数相加 1.1 题目分析 题中写到数字是按照逆序的方式存储,从进位的角度看,两 ...
- 【python+selenium的web自动化】- 控制浏览器的常用操作
如果想从头学起selenium,可以去看看这个系列的文章哦! https://www.cnblogs.com/miki-peng/category/1942527.html 前言 本文主要介绍se ...
- Java 在PPT中添加文本水印的简易方法(单一/平铺水印)
[前言] 在PPT幻灯片中,可通过添加形状的方式,来实现类似水印的效果,可添加单一文本水印效果,即在幻灯片中心位置水印以单个文本字样显示,但通过一定方法也可以添加多行(平铺)文本水印效果,即在幻灯片中 ...
- Solon 框架详解(九)- 渲染控制之定制统一的接口输出
Springboot min -Solon 详解系列文章: Springboot mini - Solon详解(一)- 快速入门 Springboot mini - Solon详解(二)- Solon ...
- windows如何上传ios app到appstore
我们在hbuilderx这些开发工具打包好ios app后,需要将这个app提交appstore才能让用户下载安装. 上传IOS APP主要是通过苹果开发者中心来上传,然后借助香蕉云编上传工具来上传就 ...
- .Net5 下Dictionary 为什么可以在foreach中Remove
在一个讨论群里,看见有人说Dictionary可以在foreach中直接调用Remove了,带着疑问,写了简单代码进行尝试 class Program { static void Main(strin ...
- 01-静态web服务器(Python)-面向对象的对比
普通写法,静态web服务器: 先创建TCP服务器套接字,然后等待客户端(这里是浏览器)请求连接. 客户端发起请求,用线程来处理连接的建立,这样可以实现多任务(也就是并发) 连接后根据请求发送指定页面 ...
- All I know about A/B Test (1) : 均值型指标与比值(率)型指标的计算区别
因为最近在找实习,所以打算把自己之前学过的关数据分析的知识总结(复习)一下.在总结A/B test时,我发现中文互联网中关于A/B test的总结已经很多了,但是对于均值型指标和比值(率)型指标在设计 ...