自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 3.3 柔顺控制代码实现

本文隶属于工程机械臂末端柔顺控制(Ros+Gazebo仿真实现)0 前言 之前写了一个UR5的运动学库,参考3.2 写一个UR机器人运动学库,发现该运动学库需要补充一部分内容,主要是关于雅各比矩阵的,后面能不能用到雅各比不知道,但是运动学库里面怎么能不包含雅各比矩阵呢?所以先写上去再说。于是乎添加了一个获取当前雅各比矩阵的函数,代码如下:bool Kinematics::GetJacobian(const JointsDisplacement ...

2022-05-16 14:36:51 4583 6

原创 3.2 写一个UR机器人运动学库

本博文属于工程机械臂末端柔顺控制(Ros+Gazebo仿真实现)注:本文参考文献忘了,参考的是一篇中国学者发表的一篇关于和UR构型一致的6自由度机械臂求逆解规避掉第六个关节可能由于奇异构型无法求解的问题。0 引言末端柔顺控制必然牵扯到机械臂逆运动学求解。注:由于本文涉及到矩阵运算,需要事先下载好Eigen矩阵运算库,可自行搜索如何安装。1 工程目录RoboticsLib bin(存放可执行文件) include(存放头文件) Commom.h

2022-03-20 19:58:07 3340 9

原创 3.1写一个简单的ROS通讯库

本文档隶属于工程机械臂末端柔顺控制(Ros+Gazebo仿真实现)0 为什么要写这玩意儿?要实现末端柔顺控制至少得先具备检测末端力数据以及发送控制指令给机器人的功能,力传感器和机器人位置控制器我们已经在如何给Gazebo中的仿真机械臂添加一个力传感器?中实现了,接下来就要写一个上位机程序来采集力传感器数据以及给机械臂发送控制指令。1 工程目录工程目录如下:RosCommunication include(存放头文件) RosCommunication.h

2022-03-16 19:16:41 3518 2

原创 1 什么是末端柔顺控制?

本博文隶属于工程机械臂末端柔顺控制(Ros+Gazebo仿真实现)懒得码字了,附一篇别人写的吧,这个东西网上参考资料有很多。彻底搞懂阻抗控制、导纳控制、力位混合控制本工程采用柔顺控制算法中的导纳控制实现。...

2022-03-16 17:41:49 1880

原创 人工势场法脱离极小值点

填个坑,之前的这篇文章基于人工势场法的UR5机械臂避障算法(Python)提到了人工势场法可能会陷入极小值,这里提一下怎么处理以及附上源码。我这里的大致思路是用RRT算法产生一个临时目标点来生成新的引力场。首先是先判断是否陷入极小值,我是通过连续两个路径点相同则陷入极小,随后跳出人工势场法。用RRT算法,随机树向之前的目标位姿进行扩展,一直运行,直到出现100个可行节点(这个数量可以自己定),对应可能有多条路径,找到距离当前陷入极小值的位姿最远的那个节...

2022-02-25 17:44:45 1578 2

原创 2 如何给Gazebo中的仿真机械臂添加一个力传感器?

1. 你得有一个仿真机械臂简单地说你首先的拥有一个能够在Gazebo当中使用的机械臂的URDF文件,必须要包含visual、collision和inertial三大标签。出于个人习惯,这里直接使用UR官方提供的UR5的URDF文件,具体怎么下载,请自行百度这里建议新建一个功能包用于存放UR5的相关文件,因为官方功能包ur_description里面除了UR5的URDF文件之外,还有其它机械臂的文件,显得特别混乱。你的功能包应该包含以下文件:你...

2022-02-20 21:00:53 4085 19

原创 机械臂末端柔顺控制(Ros+Gazebo仿真实现)

(1)什么是柔顺控制?(2)如何给Gazebo中的仿真机械臂添加一个力传感器?(3)柔顺控制代码教程(C++)先占坑,后期慢慢更。

2022-02-20 19:35:49 5237 10

原创 ROS搭配Qt使用

近期自己做了个小项目,在ROS/Gazebo中根据UR的官方文档修改配置了UR5机械臂的仿真平台,并使用Qt开发了其简单的控制界面,包括实时显示机械臂的关节信息以及设置关节角度信息并发送控制命令,此外,还在仿真环境中配置了监视机械臂的摄像头,也在Qt中显示了该摄像头的图像数据。目前该项目已经完成,大致分为以下几个部分,会逐渐按顺序慢慢更新。1.UR5机械臂的Gazebo仿真配置;2.UR5机械臂及其环境模型的xacro文件创建;3.UR5机械臂的运动学;4.Qt控制界面的...

2021-12-14 20:14:21 2456 1

原创 Qt和Opencv配合使用的Demo(Ubuntu系统)

终于把在Cmake下Qt

2021-10-20 21:40:04 1508 2

原创 ubuntu下用cmake编译Qt5(保姆级教程)

0 废话在前近日想要同时使用Qt和Opencv来完成一个小项目,但是在Qtcreator里面配置Opencv太麻烦,而且考虑到以后也有可能加入更多的第三方库,因此干脆用cmake来进行管理。目前CSDN上的教程基本都是一大抄,并且有许多错误之处,因此干脆自己摸索着写了一版。观看本教程之前,最好有一定的cmake和Qt编程基础。1 Qt编译过程众所周知,C++编译四大步骤:预处理、编译、汇编、链接。Qt当然...

2021-10-16 16:50:08 6317

原创 ROS入门之CmakeList.txt详讲

本文为进来学习的总结,记录了学习CmakeList.txt文档的各个步骤,适合从零开始理解CmakeList.txt,可能存在错误之处,望批评指正。0 Cmake的起源为什么有CmakeList.txt文档,这就要从C++说起了。在完成C++的代码之后想要把程序运行起来就需要把C++转换成可执行文件,具体来说,编译分为以下四个步骤:(1)预处理;(2)编译;(3)汇编;(4)链接。具体来讲,我们可以把前三部看成一个黑盒,调用相应的指令就可以帮助...

2021-07-18 18:12:49 2070 2

原创 双臂UR5的Gazebo配置

分别创建两个功能包,分别为dual_ur_description和dual_ur_gazebo,前者存放ur5的双臂模型文件,后者存放Gazebo的相关文件。在dual_ur_description

2021-06-21 14:56:43 1290 3

原创 UR5双臂Gazebo仿真(Python)

近来在Gazebo上搭了一个ur5双臂仿真平台。差不多就是以下这样。使用rostopic list查看一下话题,如下显然,采用/left_arm_controller/follow_joint_trajectory/goal和/right_arm_controller/follow_joint_trajectory/goal两个话题来控制双臂的运动。现在的问题是,如何保证双臂运动的一致性,即如何能保证双臂能同时接受到以上两个消息。思路一:设置/left_arm_controlle

2021-06-13 14:28:54 1672 9

原创 基于人工势场法的UR5机械臂避障算法(Python)

[1]祝敬,杨马英.基于改进人工势场法的机械臂避障路径规划[J].计算机测量与控制,2018,26(10):205-210.

2021-05-31 22:10:03 5300 33

原创 手写ROS程序控制ur5机械臂笛卡尔空间运动(Python)

本文不借助moveit!!!,所有运动学功能全部手写!!!一、ur5机械臂运动学csdn上诸多关于ur机械臂的正逆运动学求解思路,参考UR机械臂正逆运动学求解。由于多数开源代码基本为MATLAB所写,ur官方提供的求解算法为cpp文件,不方便python文件调用,故本文将主要要用到的运动学算法全部采用python语言重写,所有python模块已发布至https://github.com/Wujinshan/my_ur_kinematics。二、ur5的笛卡尔空间运动代码参考手..

2021-05-06 17:28:25 4349 4

原创 手写ROS程序控制ur5机械臂运动(Python)

最近想用ros来搭建ur机械臂的双臂平台,想先在gazebo中测试一下如何用自己手写的程序来控制ur机械臂运动,但网上的教程都局限在用moveit控制gazebo仿真环境下的ur运动,考虑到后期肯定会自己进行轨迹算法规划,用moveit的话想要更换算法太麻烦,于是干脆自己手写程序,不通过moveit来控制机械臂。Let's do it!!!首先,下载好ur机械臂仿真所需要的包依次运行如下命令:mkdir -p ~/你的工作空间名/srccd ~/你的工作空间名/srcgit clone

2021-04-28 17:10:07 9276 38

原创 工作日志:MATLAB+ROS控制真实机械臂的思路

和工作日志:MATLAB和gazebo联合仿真思路类似。首先完成MATALB和ROS的连接,然后有如下思路:一、MATLAB向真实机械臂发送数据真实机械臂和gazebo当中的仿真环境的机械臂一样,都是通过控制器订阅话题和发布关节数据来实现,不同的是厂商封装了很多相关的库,将某些功能隐藏了起来,,不一定可以直接向机械臂发布话题。而且很多话题名是厂商自定义的,和gazebo里不一样。目前有以下思路:(一)ROS订阅中转厂商提供了SendTranjectory函数来驱动真实机械臂运动(详.

2021-04-04 19:41:21 2379

原创 工作日志:MATLAB和gazebo联合仿真思路

很凌乱,目前只有大致思路,等到具体完成后再补充。一,gazebo端配置配置好gazebo,参考六自由度机械臂gazebo仿真最主要要知道驱动机械臂关节的位置是订阅的哪个话题,位置信息又是通过哪个话题发布。二,MATLAB和gazabo的连接参考连接MATLAB和ROS如果MATLAB和ROS在同一主机下,连接就比较简单,如果不是,要将两台主机连接在同一局域网内,配置好IP地址。连接成功过后,MATLAB应该是作为ROS的一个节点来使用。三,MATLAB端在Si..

2021-04-04 16:46:07 1799 1

原创 工作日志:用程序驱动双臂机器人

未经过实际测验,只是思路和大致步骤。1.程序的编写参考RobotPlanning_test.cpp和Daul_Arm_RobotPlanning_test.cpp文件,若想用自己的算法,大致步骤如下:(1)将算出的各组关节角度值的数据封装成moveit_msgs::RobotTrajectory数据结构,封装之前先查一下应该包含哪些数据,通常情况下应包含角度值,角速度和角加速度值以及时间戳等,角速度和角加速度通常是由角度值进行插值运算之后计算得到的,要注意角度值,角速度值以及角加速度值都不能超过

2021-03-11 15:08:56 303

原创 C++学习笔记(一)C++基础

1.C++基本概念C++ 程序可以定义为对象的集合,这些对象通过调用彼此的方法进行交互。对象:对象具有状态和行为。例如:一只狗的状态 - 颜色、名称、品种,行为 - 摇动、叫唤、吃。对象是类的实例。 类:类可以定义为描述对象行为/状态的模板/蓝图。 方法:从基本上说,一个方法表示一种行为。一个类可以包含多个方法。可以在方法中写入逻辑、操作数据以及执行所有的动作。 即时变量:每个对象都有其独特的即时变量。对象的状态是由这些即时变量的值创建的。2.注释注释中的所有字符会被 C++ ...

2021-01-15 20:46:47 217

原创 ROS学习笔记(五)服务数据的定义与使用

与话题消息的定义与使用相似,可做对应参考。1.自定义服务数据在功能包中创建srv文件夹,在此文件夹中创建Person.srv文件,具体内容如下:string nameuint8 ageuint8 sexuint8 unknown =0uint8 male = 1uint8 female = 2---string result“---”上方为request的数据,即客户端(client)发送给服务器(service)的数据类型,下方为response数据,服务器端发送给客户端

2021-01-13 20:47:23 328

原创 ROS学习笔记(四)话题消息的定义与使用

代码示例资料来源:古月居《ROS入门21讲》第12讲两个节点之间发布和订阅一个名为person_info的话题1.创建功能包首先确定已经建立起工作空间catkin_ws,工作空间创建方法工作空间创建,然后进行如下操作。$ cd ~/catkin_ws/src$ catkin_create_pkg learning_topic roscpp rospy std_msgs创建名为learning_topic的功能包。2.自定义话题消息在功能包中建立msg文件夹,在该文件夹下创建名

2021-01-13 14:11:29 817

原创 Python学习笔记(三):与ROS相关

后续会不断补充。。。。。。。。。__name__属性__name__是python的一个内置类属性,它天生就存在于一个 python 程序中,代表对应程序名称。例如一个test.py文件,当该文件被直接运行时,__name__的值为"__name__",当在其他程序中导入test.py运行时,__name__值为'test.py'。因此可以通过判断__name__的值来区分该py文件是被直接运行还是被引入到其他程序。应用:# BuildComb.pyfrom iterto

2021-01-12 21:02:52 365

原创 Python学习笔记(二)

1.条件控制形式如下:if condition_1: statement_block_1elif condition_2: statement_block_2else: statement_block_3Python 中用elif代替了else if,所以if语句的关键字为:if – elif – else。注意:1、每个条件后面要使用冒号:,表示接下来是满足条件后要执行的语句块。 2、使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。...

2021-01-12 20:13:00 81

原创 Python学习笔记(一)

1.Python3 基础语法1.1标识符第一个字符必须是字母表中字母或下划线_。 标识符的其他的部分由字母、数字和下划线组成。 标识符对大小写敏感。1.2注释单行注释以#开头 多行注释用'''或"""1.3行与缩进缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。例如以下语句是错误的if True: print ("Answer") print ("True")else: print ("Answer") print ..

2021-01-12 18:44:31 130

原创 ROS学习笔记(二):创建工作空间和功能包

1.工作空间(Workspace)是一个存放工程开发 相关文件的文件夹。包含以下四个文件夹:(1)src:代码空间(Source Space)。各种功能包均放置在此文件夹下。(2)build:编译空间(3)devel:开发空间2.创建工作空间创建工作空间:打开终端,输入以下命令$ mkdir -p ~/catkin_ws/src$ cd ~/catkin_ws/src$ catkin_init_workspace创建名为“catkin_ws”的文件夹,并创建此文件夹

2021-01-12 15:13:29 420

原创 ROS学习笔记(一):ROS中的核心概念

ROS中的核心概念1.通信机制2.节点与节点管理器2.1节点(Node)—— 执行单元执行具体任务的进程、独立运行的可执行文件;不同节点可使用不同的编程语言,可分布式运行在不同的主机;节点在系统中的名称必须是唯一的。2.2节点管理器 (ROS Master)—— 控制中心为节点提供命名和注册服务;跟踪和记录话题/服务通信,辅助节点相互查找、 建立连接;提供参数服务器,节点使用此服务器存储和检索 运行时的参数。为节点之间的通信建立桥梁,任何ROS程序必须先启动ROS Maste

2021-01-12 10:41:04 578

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除