- 博客(356)
- 资源 (20)
- 收藏
- 关注
原创 机器人学导论解读基础-2.4 其他非主流案例
这里同样是打磨抛光,借助了末端力传感器,机器人本身根据传感器的力反馈调节轨迹(跟前面气动浮头打磨的原理上是不一样的),实测中,这种力传感器方案并不好,因为机械方式的类似弹簧作用是立即的,真正柔性的。这个也是我实际接触的一个案例,虽然看起来人工磨的过程也没那么复杂,但是机器人去替换还是只有一小部分能磨好(读者可以看到机器人末端没有力传感器,但是实际上机器人是可以根据关节力合成到末端力的,所以末端力是可以算法算出来的,只不过这种精度不太高,大概±10N,粗糙的应用也能搞)
2024-12-10 17:31:54
337
原创 机器人学导论解读基础-2.3 强调运动案例
目前能看到的一些打磨工作站(机器人不带力控制)的,往往只是夹着零件去砂轮机蹭两下,砂轮机本身有弹簧机构可以进退防止磨的太多,每次机器人的进退量只是一个经验值(又回到了码垛的原理,走一次进给一点距离),打磨可能还会有外部TCP的概念,都是为了运动中形成更像人手在砂轮机磨的效果。这里看到机器人也改成了并联的,而不是串联的。复杂的焊接,则外部轴是协同运动的(前面的外部轴,只需要在启动和停止的时候跟机器人有通信交互,这里是必须每个周期都跟机器人的运动有耦合关系),一般是需要机器人的对应软件包配置,仿真,然后实施。
2024-12-10 17:13:53
314
原创 机器人学导论解读基础-2.2 强调通信案例
下面的两幅图无论是把机器人装在外部轴上,还是把外部轴装机器人末端,都是为了扩展行程。涉及到AGV,可能还需要电源改装(48V直流供电),以及接线方式的改动(很多气动抓手都不能用了,只能用直流的电动夹抓,也是要刷程序和调试的) 也有AGV还负责货物升降移载任务,但难点还是在通信上(所以这比前面又多了一个外部轴,然而复杂的也都是前面基本的简单的组合起来的而已,掌握每个小部分,再组装起来,就能做很复杂的事情了)而到了机器人又要搞很多模板,坐标系,初始化设置,错误处理抓不到,识别不到怎么搞等等)
2024-12-10 16:30:06
383
原创 机器人学导论解读基础-2.1 简单取放案例
这是最终的软件成品截图(我用节卡机器人SDK实现的,而不是示教器,程序需要定义一些变量,确定当前码垛第几个,以及码垛的是奇数还是偶数层)。无论是用过示教器还是自己写,能完成这样一个典型的码垛项目,已经是具备基本的调试能力了(调点的时候还是有很多技巧,例如设置抓放点和升降点,做子程序减少重复代码量)涉及到IO信号组的时候,尽可能的简化流程,简化上位机程序,也能显著的减少工作调试量,提高稳定性。例如下面,机器人可能从1234的四个工位抓取,放到5678的四个工位,不同的写法,代码量就完全不一样的!
2024-12-10 15:05:45
345
原创 机器人学导论解读基础-1.4 机器人常见信号交互介绍
Modbus ASCII的通信格式与Modbus RTU其实“神合貌离”,就是把Modbus RTU的每一个字节(例如:27H)高四位(2)和低四位(7)拆分为两个字节,并以ASCII码的方式表现出来(32 37),再给命令帧分别加上起始符和结束符便可以,所以同一条命令用Modbus RTU方式和Modbus ASCII方式表现出来,虽然在命令长度的上有很大的区别,但其实际表达的意思却是一样。安卓么,好的坏的都有,良莠不齐。如果是一份合同,采购单,法律文书,则更加规范,但本质都是在说话,传递信息而已。
2024-12-10 14:38:30
580
原创 机器人学导论解读基础-1.3 机器人常见术语介绍
参考坐标系是用户自定义坐标系,并不是一定要有,也不是一定要用到,我个人认为用好前面两个就足够了,注意参考坐标系的产生方式有很多种,比如一个点,两个点,三个点,但是完全确定一个坐标系需要六个参数是一定的。用于模块化协作机器人的直驱电机(科尔摩根,派克,达明) 体积小巧,集成度高(减速机,驱动器,编码器,刹车等都集成在一起),但是装配难度复杂,整个关节成本较高,稳定性较差。这里所讲的TCP偏移,也叫做TCP参数,是指实际夹具安装之后,机器人的末端点位置和姿态的偏移,下图所示是焊枪所产生的影响。
2024-12-10 14:21:14
425
原创 机器人学导论解读基础-1.2 机器人常见评价指标
重复定位精度是指一台机器人多次走到一个目标点,由于电机和传动误差导致的机器人末端的实际点的偏差(并不关心每次实际的XYZ和理想的XYZ的差距,只关心多次实际的XYZ之间的差异,即下图左侧跑了一千次,包络球体的半径就可以认为是重复定位精度) 绝对定位精度是指一台机器人随机走到一个期望的TCP点,最终的实际XYZ和理想的XYZ的差距(当然每次要求机器人走的期望点不同,理想和实际的误差也是不同的,一般一个流程几十个点下来取综合均方差)。传统工业机器人故障,损坏,重新标定,甚至维护保养都有相当繁琐的流程。
2024-12-10 14:05:54
1028
原创 机器人学导论解读基础-1.1 机器人的分类概述
本教程我们主要讨论的六轴机器人,六个旋转关节是性价比最高,适用范围最广,也是最普遍的方案 从早期的PUMA560,到现在的商业机器人基本都是纯旋转关节(少数机型的特殊轴使用平移的丝杠导轨),这样有利于产品标准化和售后维护。ABB YUMI的双臂都是七轴,当然双臂的价格比较贵,难以快速商业化,而且YUMI的负载只有0.5KG,只能适用于非常轻的电路板等组件的搬运装配,稍微重一点的活就干不了(所以后来ABB也推了单臂的YUMI)典型的四轴上下料机器人: 三个直线模组+一个旋转也能实现平面物体的抓放。
2024-12-10 11:10:33
576
原创 ROS开发自定义机器人系列5:qt/C++对ros moveit的控制
然而是编译报错的,注意即便我把实现CPP的代码都删掉,只保留一个include头文件引用也会,这说明跟代码无关,就是引用了就报错(为了进一步确认,你可以把引用的注释掉,然后确实就可以编译过了),这说明CMakeList.txt是正确的,包含的库没少,代码也没错,只是引用了这个头文件的问题。我这么改了之后,报错变了,而且从报错分析,应该是调用了moveit的命令,但是应该是缺少库(我们前面hello_world的例子,并没有用到moveit的库,例如roscpp,rostime之类的)
2024-12-08 09:23:53
1081
原创 ROS开发自定义机器人系列4:python对ros moveit的控制
他下面这个是做虚拟仿真的,其实可以自己写(可以放一下我自己的仿真软件),而且还是比较鸡肋,但是大致意思是到了,就是场景中需要每个物体有个ID或者名字,然后可以指令的方式增加或者删除,然而如果各位用一下商用的ROBODK就知道他这个完全不值得去玩了(开源的大部分不是好东西)然后可以跑这个测试代码(也没必要深究,反正以后不会常用,这里只要注意选择运动组的时候,要弄对名字,就是我们创建这个包的时候给这个组取的名字,如果是双臂或者符合机器人,那么肯定不止一个运动组)这是前面的hello.py确认能跑。
2024-12-07 09:58:14
403
原创 ROS开发自定义机器人系列3:用moveit_setup_assistant输出新的包
然后跳到Planning Groups,创建一个组名字(比如一条机械臂就是一个组,可以叫arm,如果你是双臂,可以arm1+arm2或者还有agv,此外一个夹爪是单独的也可以成组),然后选择运动学求解析,一般选择kdl,设置默认的搜索分辨率和搜索超时时间,OMPL Planning选择RRT(路径规划的一种方法),然后点击Add Kin.Chain。,其实你点击第一次执行的时候,机器人已经动作到了目标位置,你可以后续订阅机器人关节位置信息,发现你触发按钮之后,机器人关节位置马上开始动作并且到结束位置)
2024-12-07 09:49:03
1053
原创 ROS开发自定义机器人系列2:用roslaunch通过rviz加载URDF的包(Solidworks导出)
也可以确认六个关节都是能正常控制的(但是旋转方向是不是一样还不确定,可以跟机器人仿真软件对照,如果反了可以去修改前面solidworks制作的包里面的参数,我这里制作的UR5默认最后加了一个工装,为了方便确认最后一个轴的旋转效果),如果实际旋转方向或者零点不一致,则还是不能用的。机器人可以单独的修改模块可见性,坐标系可见性(甚至你可以单独修改每个机器人模块的颜色,可以去修改URDF文件的color属性)为了更加突出机器人,可以修改一下背景和网格的颜色。要添加RobotModel。
2024-12-06 17:25:31
267
原创 ROS开发自定义机器人系列1:URDF文件如何通过Solidworks编辑导出-UR5机器人
会要求弹窗进入配置,第一个是设置底座环节,选择底座和坐标系,设置子节点个数,因为串联机器人是一节串一节的,所以右边的上下小三角修改数值为1,注意弄完之后,不要点击左上角对勾,那表示完全配置完成。然后修改Empty_Link,可以改成DH0,关节名字改成J0(第一个关节),然后设置参考坐标系和基准轴,关节类型设置为带角度限制的,子节点也设置为1,并且点击子节点继续后面的编辑。DH5-第六个关节,如果你的末端法兰有夹爪,则这里第六个关节的子节点数目也应该是一,否则就像这这里是0。
2024-12-06 15:56:11
234
原创 扩散策略项目实战1-aloha框架的环境配置
区别在于,UMI更通用(UMI可以理解为主从异构的模仿学习,UMI的主手就是一个手持的夹具带相机,UMI在人使用和创建数据的时候,根本不知道会把数据部署到什么设备上,是UR的机器人还是Franka的机器人,因为他采集的是机器人的TCP末端轨迹,复现的时候发送指令也是末端轨迹,这样就不管机器人的构型了,机器人自己运动学求逆达到目标位置去,所以是一套训练,兼容所有)。然后理想很美好,实际上并不是那么容易,UMI官方宣传的,实际隐藏了很多细节,你自己搞是很难搞出来的(例如误差会大于10mm,这基本就是不能用的。
2024-12-06 11:15:35
910
原创 python开发3-mujoco的安装和基本使用
在机器人和人工智能结合的课题中,动力学仿真是一个重要的纽带。而动力学仿真中,gazebo,bullet,mujoco,都是一些做的比较成熟的(也有比如simulink,adams商业软件,但是其实商业软件并不适合linux下面的AI开发,他们都是自己一套体系,移植非常困难,只有linux下面的一些小伙伴可以形成组合拳)我写了一些简单的例子(后面没法搞了,因为C++的接口太复杂,虽然能控制机器人动了,你连获取场景中的某个物体的接口都找不到,只能用python的简化版的),这是对前面下载的包的依赖头文件和库。
2024-12-05 16:01:51
772
原创 python开发2-pyqt的基本使用
前面已经学会了pycharm的基础上,这一节介绍如何集成pyqt,为什么又要扯进来QT,因为python的带界面开发方案很少,如果纯命令不带界面当然也能搞,但是对于开发测试就会效率很低(图形化的意义就是,你可以比如拖拉一个滚动条,测试仿真机器人的表现)。然后再手写一些控件和方法的映射绑定(信号和槽的机制依然可用!但是他没有提供信号和槽的关联,你也没法在PYQT里面搞信号和槽,你观察他的信号和槽,只有按钮点击之后主窗体的固定事件(这肯定不是我们要的,是要自己新增的MainWindow干啥)
2024-12-05 15:05:40
611
原创 python开发1-pycharm的基本使用
我只能换成早期版本了,其实用起来都是一样的,社区版本也完全够用,没必要费劲去搞什么破解版。这个是2020年的,下载地址跟前面一样。跑起来就不会崩溃了。比起VSCode,Pycharm确实好用的多,用惯了之后就不会再想回去用VSCode了,而且AI方面的大部分都是python代码,不得不习惯。右上角的运行按钮有时候是不可用的,尤其是当你打开新的文件。其实点击运行,然后就会提示窗口可以选择了。此外,View-Appearance-Toolbar,然后即可看到前进后退按钮。解压之后,即可执行(
2024-12-05 14:41:04
155
原创 C#.NET常见问题(FAQ)-控制台程序如何做弹窗
最简单的弹窗,只要引用System.Windows.Forms,就可以使用WinForm的弹窗 如果要弹出是/否的选择对话框,则可以拷贝下面的代码DialogResult dr = MessageBox.Show("是否确认退出", "退出提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);if (dr == Dia
2017-10-18 18:27:01
2020
1
原创 C#.NET常见问题(FAQ)-如何在不同窗体之间传递值
最简单的方法是在定义窗体的时候就写好几个变量,在实例化Form2的时候,就把这些参数传递过去 或者你也可以定义一个类,然后通过这个类的静态变量交互(注意只能用静态的,因为Form2无法访问Form1的类的实例的属性和方法) 也可以在初始化的时候再Form2里面定义好交互的方法,然后其实跟第一种方法很类似,只不过做的更加通用,规范 有时候打开的子窗体需
2017-10-18 18:26:35
1237
原创 C#.NET常见问题(FAQ)-如何不显示窗口的关闭按钮
如果把ControlBox设置为false,则右上角三个按钮都看不到了 最好的方法是重写窗体的CreateParams方法,如下图所示 更多教学视频和资料下载,欢迎关注以下信息:我的优酷空间:http://i.youku.com/acetaohai123 我的在线论坛:http://csrobot.gz01.bdysite.com/
2017-10-18 18:26:32
1171
原创 C#.NET常见问题(FAQ)-如何判断某个字符是否为汉字
字符强制转换成int可以判断字符数值大小,在下面所示范围内的就是中文 此外还可以判断是否是数字或者字母,用char.IsLetter和char.IsDigit方法 从先这个范例可以看出,中文也是一个char,而且可以输出他强制转换成int类型的大小 更多教学视频和资料下载,欢迎关注以下信息:我的优酷空间:http://i.youku.com/
2017-10-18 18:26:27
720
原创 C#.NET常见问题(FAQ)-如何改变字符串编码
使用Encoding.Convert方法即可实现转换 更多教学视频和资料下载,欢迎关注以下信息:我的优酷空间:http://i.youku.com/acetaohai123 我的在线论坛:http://csrobot.gz01.bdysite.com/ 问题交流:QQ:910358960邮箱:acetaohai123@16
2017-10-18 18:26:25
744
原创 C#.NET常见问题(FAQ)-如何把定义存放类实例的数组
数组存放的可以是普通的int,double,string类型,也可以是自定义的类的实例 如果数组长度未知,可以用list对象存放 更多教学视频和资料下载,欢迎关注以下信息:我的优酷空间:http://i.youku.com/acetaohai123 我的在线论坛:http://csrobot.gz01.bdysite.com/
2017-10-18 18:26:22
454
原创 C#.NET常见问题(FAQ)-命名空间namespace如何理解
Namespace就是定义一个对象是哪个门派的,比如你现在就在A门派下,A门派的所有功夫(属性和方法)都可以不加声明直接调用。如果你要用B门派的功夫,就要先声明是B门派的XXX对象的XXX实例的XXX方法 上面的那个方法比较麻烦,更多的时候只要在顶部添加命名空间的声明,你就可以随时调用属于这些其他命名空间的东西了 更多教学视频和资料下载,欢迎关注以下信息:我的优
2017-10-18 18:26:19
528
原创 C#.NET常见问题(FAQ)-索引器indexer有什么用
索引器就是名值对,你声明一个名值对的类,就可以给数组的指定元素赋值,也可以很方面的访问到指定元素值对应的下标(个人认为完全可以自己写一个类似的list来实现,没有必要多此一举学一个额外的方法) 复杂的indexer可以看做简单数据库了,比如一个人对应了ID,各个科目的成绩,但是这又比不上读写数据库,所以还是不够实用 更多教学视频和资料下载,欢迎关注以下信息:我的
2017-10-18 18:26:17
502
原创 C#.NET常见问题(FAQ)-public private protectd internal有什么区别
首先要区分public和private,这两个修饰符是最常用的。Public就是对外公开的,private就是对外不公开的(类内部可以使用),比如下面我定义一个类的实例,自动补全代码中只有publicMethod没有privateMethod 然而如果是在类的内部,不管是在publicMethod里面要调用privateMethod,还是反过来都是可以的 最后注意i
2017-10-18 18:26:14
501
原创 C#.NET常见问题(FAQ)-构造器constructor有什么用
所谓的构造器constructor,就是声明类的时候定义一个public 类名的方法,这个方法不需要传递任何数据,这样的话在声明任何类的实例的时候都会无条件执行里面的方法 析构器只在程序销毁的时候会触发执行(跟前面构造器对应起来,析构就是程序结束的之后调用销毁方法的时候使用) 更多教学视频和资料下载,欢迎关注以下信息:我的优酷空间:http://
2017-10-18 18:26:11
1271
原创 C#.NET常见问题(FAQ)-override覆盖和virtual虚类如何理解
父类使用virtual关键字,可以让子类的实例完全代替基类的类成员。(前面父类virtual后面子类override),比如下面我定义一个Employee的员工的基类,给这个基类定义了Start_Work的虚方法 然后定义一个经理类,他可以直接调用子类的方法,也可以重新Start_Work方法 其他所有的Employee的实例都可以直接用一个Start_Work分别
2017-10-18 18:26:08
419
原创 C#.NET常见问题(FAQ)-如何使用右下角托盘图标notifyIcon
1 拖放一个NotifyIcon控件,并设置图标,还有显示的文字 2 双击这个控件,即当最小化了主窗体,然后双击这个右下角图标的时候,要显示主窗体(大部分程序的用户体验都是这样干的,比如QQ,双击图标要打开主窗体) 3 在主窗体最小化的事件中添加逻辑(最小化事件是包含在Form的SizeChanged事件中的),当最小化的时候,隐藏主窗体,同时显示右下角图标
2017-10-17 22:09:39
495
原创 C#.NET常见问题(FAQ)-如何使用变量动态添加控件
可以先声明控件的数组 然后动态的添加到窗体中 在程序执行的时候你还可以随时通过数组下标访问到这些控件 更多教学视频和资料下载,欢迎关注以下信息:我的优酷空间:http://i.youku.com/acetaohai123 我的在线论坛:http://csrobot.gz01.bdysite.com/
2017-10-17 22:09:36
611
原创 C#.NET常见问题(FAQ)-如何使用变量访问控件属性
不管哪种类型的控件,可以用下面这种强制转换和Controls.Find的方法来读写控件的属性//我在界面上做了三个picturebox控件PictureBox p;//注意索引必须从1开始,并且不能超过Form中实际存在的控件数量(把1改成0或者把4改成5都是不行的)for (int i = 1; i < 4; i++){ p = (PictureBox)this.C
2017-10-17 22:09:33
649
原创 C#.NET常见问题(FAQ)-如何使用DataGridView跟Excel数据交互
1 从工具箱中拖进来一个DataGridView 2 就像Excel表头,可以添加一个表头(即一列的抬头,比如叫做A) 3 一次添加ABCDE等项目,也可以修改该类目的类型为Button或者ComboBox 4 这样完成之后就初具模型了,点击这个控件的小箭头,可以设置是否可以动态添加,编辑和删除等 5 这样运行之后就可以直接看到类似于
2017-10-17 22:09:31
661
原创 C#.NET常见问题(FAQ)-如何声明list的多维数组
可以用下面的方法来声明多维list数组,但是不推荐使用 //对于一维数组:List 变量 = new List();List AllInts = new List(); //简单的二维数组和三维数组List a = new List();List> b = new List>();List>> c = new List>>(); 更多教学
2017-10-17 22:09:28
1593
原创 C#.NET常见问题(FAQ)-如何使用2D绘图控件ZedGraph绘制坐标轴和坐标曲线
添加数据:示例添加了一条sin曲线和一条cos曲线,注意cos曲线比sin曲线点更密集(可以用这种方式控制点的采样疏密程度) 默认显示效果如下图所示,可以框选一个部分看放大效果 右击某个点可以显示坐标值 点击最后一项可以取消所有放大效果 按住空格键和鼠标中键可以平移坐标轴,如下图所示,当前视图只剩下了很小的一块,XY坐标轴的数值也跟着
2017-10-17 22:09:25
1374
原创 C#.NET常见问题(FAQ)-如何设置控件水平对齐,垂直对齐
如果要设置一些控件垂直对齐,点击这个按钮 如果要设置水平对齐,则点击这个按钮,选中控件之后点击左对齐(多个按钮都试下吧,总归能对齐到你要的效果的) 更多教学视频和资料下载,欢迎关注以下信息:我的优酷空间:http://i.youku.com/acetaohai123 我的在线论坛:http://csrobot.gz01.bdysite
2017-10-17 22:09:23
1524
原创 C#.NET常见问题(FAQ)-如何让文本框textbox内容限制为数字
//限制文本框的输入private void txtQuestionScore_KeyPress(object sender, KeyPressEventArgs e){ if (e.KeyChar != '\b')//这是允许输入退格键 { if ((e.KeyChar '9'))//这是允许输入0-9数字 {
2017-10-17 22:09:20
454
原创 C#.NET常见问题(FAQ)-如何修改Form不能修改窗体大小
把FormBorderSytle改一下就可以了,改成FixedSingle或者Fixed3D都可以 更多教学视频和资料下载,欢迎关注以下信息:我的优酷空间:http://i.youku.com/acetaohai123 我的在线论坛:http://csrobot.gz01.bdysite.com/ 问题交流:QQ:910358
2017-10-17 22:09:17
587
原创 C#.NET常见问题(FAQ)-如何让文本框textbox内容靠右显示
对于TextBox,我可以设置Text-Align属性为right,就可以让文字靠右了 对于Label而言,需要修改AutoSize为False,并修改TextAlign为MiddleRight,这样才可以保证文字靠右显示,并且不会超差 更多教学视频和资料下载,欢迎关注以下信息:我的优酷空间:http://i.youku.com/acetaohai123
2017-10-17 22:09:12
1651
原创 C#.NET常见问题(FAQ)-如何让控件或者窗体本身全屏
初始化的时候保存控件的原始尺寸,然后通过Dock属性调节 注意如果你的控件是放在容器中的,那么对应设置的也要是容器的Dock属性 全屏的效果如下图所示 更多教学视频和资料下载,欢迎关注以下信息:我的优酷空间:http://i.youku.com/acetaohai123 我的在线论坛:http://csrobot.gz
2017-10-17 22:09:09
548
原创 C#.NET常见问题(FAQ)-如何让TabControl可以动态增加或删除
动态插入可以使用TabPages.Insert方法 动态删除可以用Remove方法 更多教学视频和资料下载,欢迎关注以下信息:我的优酷空间:http://i.youku.com/acetaohai123 我的在线论坛:http://csrobot.gz01.bdysite.com/ 问题交流:QQ:910358
2017-10-17 22:09:07
1117
C#的核心问题-编译器-如何在进程之间进行通信,如何在两个独立的EXE文件之间通信.rar
2020-06-28
C#的核心问题-WIN10系统无法响应触摸屏的按下和弹起事件怎么办.rar
2020-06-28
C#的控件使用:树形图TreeView如何实现序列化和反序列化.rar
2020-06-28
C#的控件使用:如何使用2D绘图控件ZedGraph绘制坐标轴和坐标曲线.rar
2020-06-28
C#.NET常见问题(FAQ)-如何使用DataGridView跟Excel数据交互.rar
2020-06-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人