
ROS机械臂
文章平均质量分 79
合工大机器人实验室
不积跬步,无以至千里。
展开
-
/opt/ros/kinetic/lib/moveit_ros_move_group/move_group: error while loading share libraries:XX.so.x.x
报错处理:/opt/ros/kinetic/lib/moveit_ros_move_group/move_group: error while loading share libraries:XX.so.x.x相关处理运行launch 后发现出现报错:报错处理:一般是由于库版本问题,首先查看本机是否有改库,通过复制改名方式进行修正错误。 比如此处,存在9.18版本,但是需要9.15版本基本出现的问题,都是这三个就可以解决问题:sudo cp libmoveit_robot_trajectory原创 2022-01-20 09:58:21 · 2056 阅读 · 0 评论 -
Franka Emika Panda机械臂规划路径时,rviz中手爪显示碰撞
【Franka Emika Panda连接真实机械臂(二)】本文是对上文的一些补充。前文中的franka_ros功能包和panda_moveit_config功能包是分别在不同的工作空间编译的,所以在控制真实机械臂的过程中,不得不按照【Franka Emika Panda连接真实机械臂(二)】中所描述的那样,先后启动不同的控制节点。运行roslaunch panda_moveit_config panda_control_moveit_rviz.launch robot_ip:=172.16.0.2原创 2021-12-30 21:17:44 · 2636 阅读 · 2 评论 -
Franka Emika Panda连接真实机械臂(二)
Franka Emika Panda连接真实机械臂(二)虚拟环境下已经可以进行机械臂的拖动了,下一步就是PC连接机械臂,并通过plan控制机械臂运动。前文【Franka Emika Panda连接真实机械臂(一)】已经提到如何配置机械臂环境、如何在rviz仿真环境下拖动机械臂。下面记录的是最近一周学习panda机器人的一些心得,记录下来以便于以后“温度而知新”。PC与机械臂相连的准备1.机械臂底座有灯,灯的颜色表示不同模式。蓝色:准备好了并准备移动白色:停止(此时可以拖动示教)黄色:错误(刚刚原创 2021-12-26 11:44:54 · 7434 阅读 · 10 评论 -
catkin_make编译baxter功能包报错处理
1. error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options. #error This file requires compiler and library support \编译过程中出现大量error,各种语句原创 2021-11-25 11:07:37 · 1004 阅读 · 0 评论 -
Franka Emika Panda连接真实机械臂(一)
需要的配置1.一台安装了ubuntu 16.04 系统的笔记本电脑2.Franka Emika Panda 机械臂3.Franka Emika Panda 机械臂环境配置机械臂环境配置请看上一篇博客:Franka Emika Panda 机械臂环境配置如果这些都准备好了,那就进行下一步吧!机械臂的环境是配置好了,但是我们怎么能在rviz里看到franka机械臂的模型呢?franka仿真panda_moveit_config下载及编译在配置好环境之后,是不是能够在rviz规划机械臂呢?尝试原创 2021-11-08 17:02:59 · 8912 阅读 · 20 评论 -
Baxter 机器人仿真软件安装及演示
1. 目的1.1 了解Gazebo 的安装与基本使用1.2 使用Gazebo 对机器人控制进行仿真学习2. 实验条件电脑一台(安装Ubuntu16.04 系统、ROS kinetic系统、可连接互联网)3. 内容本次实验使用gazebo 对Baxter机器人进行仿真,通过配置软件相关参数,载入机器人模型,运行控制节点,可以在gazebo 中观察Baxter机器人的动作情况,同时可通过指令查看相关机器人运行相关信息。4. Baxter机器人仿真使用方法与步骤4.1 gazebo 的安装与基本操原创 2021-10-24 10:46:34 · 3233 阅读 · 3 评论 -
Baxter官方例程
1. 使用机器人必做步骤cd ~/ros_ws/./baxter.shrosrun baxter_tools enable_robot.py -e2. 禁用、启用Baxter 机器人# 禁用机器人rosrun baxter_tools enable_robot.py -d# 启用机器人rosrun baxter_tools enable_robot.py -e3. 调整Baxter 姿态# 打包姿态rosrun baxter_tools tuck_arms.py -t# 反打原创 2021-10-10 15:45:31 · 1390 阅读 · 8 评论 -
Baxter工作站建立及简单使用
1.硬件1个 Baxter Research Robot1台PC机或笔记本,安装好Ubuntu系统(推荐Ubuntu16.04安装ROS kinetic)1个无线路由器(千兆网口)2根网线2.安装Baxter SDK# 1.创建ROS工作空间mkdir -p ~/ros_ws/src# 2.source ROS# 在每次打开终端时,都先要运行source ROS命令才能运行ros相关命令,为了避免这一繁琐过程,可以事先在.bashrc文件(Home目录下)中添加这条命令source原创 2021-10-09 17:06:52 · 1626 阅读 · 2 评论 -
用户坐标系和工具坐标系校准原理
1.用户坐标系当在进行如下类似的码垛等操作时,物体排列在一个平面上,通过设定用户坐标系,可以方便的发布控制指令和相对位移指令。使用是可以通过三点法进行标定。坐标原点P1沿着坐标原点向X轴正方向移动一定距离的P2沿着坐标原点向Y轴的正方向移动一定距离的P3通过向量计算可以获得X 和 Y 的方向向量,再利用差乘 cross()获得 Z轴的方向向量。2.工具坐标系对于机械臂末端法兰安装的夹爪或者工具进行标定,获得工具中心点在机器臂坐标系下位姿。常见的方法分为三类:第一种:直接输入法,原创 2021-09-06 17:50:45 · 8779 阅读 · 0 评论 -
Franka Emika Panda 机械臂环境配置
实验室买来一台 franka 机械臂,近日都在忙于机械臂的上位机环境配置,参考了官方的配置文档以及网上一些大佬的博客,现做一些总结。Franka 官方配置文档:https://frankaemika.github.io/docs/installation_linux.htmlFrankaEmika_Panda 环境配置:https://www.jianshu.com/p/664b4cf76606Franka 官方文档给出了 Linux 和 Windows 的配置方案,但在实验室里我们常用的实验环境是原创 2021-09-03 20:23:23 · 6815 阅读 · 33 评论 -
解决 ubuntu 插上网线没有有线连接显示
刚安装完 ubuntu 16.04 系统,出现了一个奇怪的问题,插上网线,没有有线连接显示,这在以往的安装经历中是没有遇到过的,经过一番搜寻,特来总结一下解决过程。新打开一个终端,输入 ifconfig 命令即可查看到网卡信息只有本地回环,没有以太网,这是没有网卡驱动,需要自己安装一下网卡驱动。上英特尔网站下载一下linux版的网络适配器驱动程序。可以连接无线网下载,台式机插上无线网卡即可上网,若没有无线网卡,利用其他电脑上网下载一下该压缩包即可。压缩包中包含一个 REDME 文件,其中包含安原创 2021-08-29 15:07:40 · 9929 阅读 · 0 评论 -
解决ROS安装中rosdep init 和rosdep update失败的方法
实验室新进一批设备,需要配置 ubuntu 系统,安装 ROS 。在 ROS 安装过程中,有一步:sudo rosdep initrosdep update因国内服务器,无法科学上网,总是出现超时,初始化失败。往常我们也配置过 ROS ,在这一步失败就忽略了,但同门提出过安装完某功能包无法使用,初始化失败的情况,可能是 ROS 安装时这一步未完成引起的,本次 ROS 安装决定试着解决这一问题,防止以后出现一些 “后遗症”。网上有很多修改 hosts 文件添加连接 ip 地址,解决 rosdep原创 2021-08-29 10:43:19 · 1376 阅读 · 4 评论 -
Ubuntu16.04下基于ROS控制Robotiq_2f_85_gripper
目录目录目录原创 2021-06-01 22:46:47 · 3704 阅读 · 26 评论 -
通过ROS控制真实机械臂---Xacro文件配置
URDF 是最初也是比较简单的机器人描述文件,它的结构简单明了,容易理解。但是这也导致当机器人模型变得复杂时,urdf的结构描述就变得冗长,无法简洁有效的描述机器人部件;Xacro 的出现在一定程度上有效地解决这种问题。在本质上,Xacro与URDF是等价的,但Xacro格式提供了一些更高级的方式来组织和编辑机器人描述。在学习UR机器人的时候,官方包都是使用Xacro文件来描述机器人的模型参数和一些动力学参数,包括Gazebo的插件,而原本我们比较熟悉的URDF缺没有找到,而且乍一看,Xacro文件比原创 2021-01-08 11:07:14 · 2235 阅读 · 0 评论 -
利用Solidworks三维建模 ,导出URDF文件,并在ros中使用
Google或者百度,搜索sw_urdf_exporter的插件。这里官方推荐使用SolidWorks2017。我使用的是虚拟机ROS_INDIGO+win7的SW2017。win7 下下载sw_urdf_exporter后安装即可,然后打开SolidWorks点击小齿轮旁边的下拉菜单,选择插件,然后拉到插件最底下有个sw2urdf的插件,点击选中,然后保存。再转化之前需要...原创 2019-03-18 21:19:26 · 27842 阅读 · 41 评论 -
通过ROS控制真实机械臂(9)---上、下位机和PRU程序
上位机的程序redwall_arm_server.cpp功能是作为ROS的move_group客户端接收ROS规划的机械臂路点信息,进行三次样条插补获得各个关节或自由度的运动PVAT数据,然后通过TCP通信将处理好的数据发送给下位机的beaglebone轴控制器:/* ROS action server */#include <ros/ros.h>#include <...原创 2019-11-01 15:55:52 · 4300 阅读 · 0 评论 -
通过ROS控制真实机械臂(8)---延时时间精确控制
根据之前的配置,我们已经可以通过move_group发送出机械臂各关节运动的轨迹,并且通过三次样条插补的方法,赋予各个关节在特定角度时的速度和加速度,通过启动程序节点可以看到,本次运动规划使用了LBKPIECE算法,并且使用了4线程并行规划,规划时间为3.478750秒,一共规划了24个路径点。[ INFO] [1572571719.182638906]: LBKPIECE1: Create...原创 2019-11-01 14:55:05 · 10026 阅读 · 2 评论 -
通过ROS控制真实机械臂(5)---Moveit!真实机械臂(move_group和demo.launch修改)
####### 开始控制真实世界的机械臂 #######我们的目的是使用moveit控制真实的机械臂,而我们真正需要的action是FollowJointTrajectoryAction,这个action是moveit留出来专门控制真实机器人的 。启动刚开始生成的moveit!配置文件中的demo.launch文件后,就能看见FollowJointTrajectoryAction,可以看一下co...原创 2019-07-14 19:41:02 · 27395 阅读 · 130 评论 -
通过ROS控制真实机械臂(2)----单轴运动,手柄控制
创建ROS包,包名redwall_arm ,通过自定义的消息,将手柄的数据发布 msg/ joycontrol.msg,内容如下,分别对应罗技手柄的按钮和遥杆轴。int32 button1int32 button2int32 button3int32 button4int32 button5int32 button6int32 button7int32 button8floa...原创 2019-07-14 14:51:34 · 9677 阅读 · 1 评论 -
通过示教器或ROS控制UR机械臂
一、初始化二、抓取实验1.编写程序1.1选择为机器人编程——选择一个空程序。2.机械手激活下面开始编写程序,依次点击结构——URCap——机械爪激活,回到命令窗口,点激活。3.设置路点依次点击结构——基本——路点,回到命令窗口,设置路点,可以用手动或者点击各个关节按钮,将机械臂移动到合适的位置.4.机械手抓取依次点击结构——URCap——机械爪——EditAction,调整机械爪的状态(抓)。同理设置第二个路点和机械爪(放),点击下方...原创 2020-10-23 15:12:58 · 12233 阅读 · 29 评论 -
通过RViz中的InteractiveMarkers在ROS中仿真力和力矩(wrench.force和wrench.torque)
对于机器人的视觉这些信息,很容易在ROS中呈现,但是对于ROS中力和力矩信息的展示,通常在实验室的时候使用真实的机器人和传感器,这个问题不需要考虑,直接读取真实的力和力矩传感器,然后通过ROS消息发布即可。可当疫情导致的有学不能上,有实验室不能去的时候,想在ROS中检验机器人力控制算法的时候,就可以通过一定的方法在RViz中虚拟出力和力矩信息,通过wrench话题发布。不仅如此,可以通过RViz的InteractiveMarkers插件展现出来力和力矩的交互属性,原始程序来源于MIT CSAIL的博士.原创 2020-05-20 15:55:05 · 5392 阅读 · 1 评论 -
六维力和力矩传感器静态标定(F/T sensor calibration)
通常在机械臂腕部与末端夹持器之间安装六维力传感器,用于机器人在装配过程中的力反馈控制。六维力传感器能够测量三维空间中任何坐标系下的三维力 和三维力矩。 在机械臂处于静态时,机械臂腕部六维力传感器测出的力与力矩数据由三部分组成: 传感器自身系统误差 传感器与末端夹持器自身重力作用 末端夹持器所受外部接触力 若要得到装配轴在装配过程中所受外部接触力,需要消除六维力传感器系统自身误差以及装配轴重力作用两方面的影响。因此,我们需要通过标定与辨识算法,剔除这些干扰因素的影响,以便更精确.原创 2020-05-19 15:17:17 · 16640 阅读 · 4 评论 -
仿人型手腕 6R机械臂 D-H参数和运动学逆解
计算正向运动学通常需要使用D-H参数法对机械臂建模。第一步: 绘制机械臂模型图可用手绘机械臂结构简图或者模型图,使用圆柱体代表转动关节和线表示的连杆,当写论文的时候,可以使用PPT或者CAD来绘图,ppt里面提供了很多现成的线条形状,通过组合功能可以设计出很nice的结构,用来画简图绰绰有余。百度搜索运动学图表或者google搜索kinematic diagram来获取些许参考。 ...原创 2020-04-11 16:40:03 · 10930 阅读 · 1 评论 -
ROS kinetic 升级 PCL1.9.0 以安装gpd库和gpd_ros
对于机械臂视觉抓取功能来说,比较传统的做法:由于之前的物体识别模块已经确定了这片点云对应的物体,如果我们有物体的3D模型,便可以直接用ICP算法将这片点云与物体的3D模型对齐。既然知道3D模型的位姿那就好办了。之后就是各种抓取姿态生成、力封闭之类的东西了。其他方法:利用RCNN在图像中定位了物体的大概位置,然后根据一堆点云做抓取,而不用知道物体的3D模型。1、Using Geometry to...原创 2020-03-28 14:11:23 · 4514 阅读 · 25 评论 -
使用Realsense 测试 aruco 包
aruco是一种类似二维码的定位标记辅助工具,通过在环境中部署Markers,可以辅助机器人进行定位,弥补单一传感器的缺陷,纠正误差。在之前的手眼标定easy_handeye程序中,需要使用这个工具进行手眼标定。正好手上有realsense深度相机,就根据资料进行了简单的测试。如下图是手眼标定程序包中的一段:通过github下载aruco相关的ROS包,里面会提供现成的Markers,也可...原创 2020-03-25 17:04:54 · 3679 阅读 · 11 评论 -
MoveIt!运动规划库OMPL和路径规划算法
运动规划(Motion Planning):要让一个机器人实现运动规划,需要先将机器人抽象到构形空间(C-Space)。MoveIt就可以帮大家把这些工作给做了,只需提供机器人URDF模型,就可以调用几大运动规划库的规划算法(如OMPL,SBPL,CHMOP),自动生成机器人运动轨迹。之前跟着教程走的时候,很多内部结构不是很清晰,它就像是一个黑匣子,只管启动launch,就会返回机器人所需的运动路...原创 2020-03-23 11:25:55 · 13390 阅读 · 8 评论 -
通过ROS控制真实机械臂(18) --- 构建 octocmap 用于碰撞检测和避障
师兄和同门在做SLAM的时候,经常会用到的 octomap ,也就是八叉树地图。octomap相比于点云地图来说大大减小了地图的存储空间。既然octomap可以用于导航和避障,那么自然也可以导入moveit!,作为机械臂路径规划过程中的障碍物,方便机械臂和障碍物之间进行碰撞检测。这里首先要提一下Movelt!并没有整合了物体识别和环境建模这些模块,而是利用传感器采集的数据导入的。而我的想法就是...原创 2020-03-11 14:30:58 · 18490 阅读 · 46 评论 -
通过ROS控制真实机械臂(17) --- 视觉抓取之ORK实现三维物体识别
视觉抓取中非常重要的一个部分就是对抓取物体的识别,无论是二维图像还是三维点云,在ROS中都可以找到对应的功能包,https://blog.youkuaiyun.com/qq_34935373/article/details/103757619该篇博客就基于模板匹配算法的find_object_2d包进行了简单的测试,本次测试的是三维的物体识别的框架,该框架是基于物体的三维模型进行训练并识别,大致的思想也是模板...转载 2020-01-03 15:50:36 · 12942 阅读 · 1 评论 -
通过ROS控制真实机械臂(16) --- 视觉抓取之find_object实现物体识别
视觉抓取中非常重要的一个部分就是对抓取物体的识别,无论是二维图像还是三维点云,在ROS中都可以找到对应的功能包,本次测试的是能对物体进行快速识别,甚至定位的find_object包,该功能包是基于模板匹配算法(包括彩色图像或点云匹配)。ubuntu14.04+indigo+usb摄像头/kinect相机/Zed mini相机。本文参考: https://github.com/introlab/...原创 2019-12-30 15:48:23 · 18597 阅读 · 29 评论 -
通过ROS控制真实机械臂(15) --- 视觉抓取之手眼标定
通过视觉传感器赋予机械臂“眼睛”的功能,配合ATI力和力矩传感器,就可以完成机械臂“手眼”结合的能力,完成视觉抓取过程。目前测试的视觉传感器为 ZED mini双目相机,配置安装过程https://blog.youkuaiyun.com/qq_34935373/article/details/103481401。1.手眼标定(内参)对于单目usb相机,可以通过ROS包usb_cam来启动相机,通过...原创 2019-12-28 15:01:18 · 21314 阅读 · 29 评论 -
通过ROS控制真实机械臂(14) --- 笛卡尔运动规划
笛卡尔运动规划Python接口https://blog.youkuaiyun.com/qq_32618327/article/details/99966978笛卡尔运动规划C++接口https://blog.youkuaiyun.com/flyfish1986/article/details/81189737Moveit!官网API介绍:http://docs.ros.org/kinetic/api/moveit...原创 2019-12-19 20:58:18 · 9779 阅读 · 2 评论 -
通过ROS控制真实机械臂(13) --- PRU-ICSS 定时器 DMTIMER 实现定时功能
之前的博客为了实现延时特定时间(4ms)并在这段时间内产生PWM波形,使用了两种方法,第一种通过计数的方式,比较low;第二种使用PRU的工业级定时器IEP,时钟频率200MHZ,使用也很简单。但是随着实验的进行,因为是六自由度的机械臂,计划使用三块beaglebone来控制,也就是一块板子控制两个伺服电机,beaglebone自带两个PRU核,PRU1和PRU2,每个核都具有31个寄存器, ...原创 2019-11-12 17:17:08 · 1317 阅读 · 9 评论 -
通过ROS控制真实机械臂(12) --- joint_states 消息的发布,更新机械臂位姿
底层的电机控制已经基本完成,还需要解决的最后一个问题就是根据机械臂的运动,将机械臂的位姿状态信息发回到上位机的ROS,让RVIZ中的机械臂和现实中的机械臂保持一致。目前没有反馈的信息发回到上位机,所以每当点击 Update ,然后Plan and Execute之后,机械臂都是从初始位置重新规划,而不是接着上一次运动到的位置作为起点规划。在修改move_group配置文件的时候,做过如下修...原创 2019-11-08 15:55:56 · 15040 阅读 · 50 评论 -
通过ROS控制真实机械臂(10) --- PRU-ICSS定时器 Industrial Ethernet Peripheral (IEP) 实现定时功能
上一篇博客为了实现延时特定时间(4ms)并在这段时间内产生PWM波形,方法是通过计算PWM的单次循环时间(PWM的周期),然后计算出循环次数,使用计数器计数,每次循环判断计数器的值是否等于循环次数。这种方法比较简单,对于不熟悉PRU 的我来说比较好用,对于只改变占空比不改变周期,延时时间不变的波形很容易实现,因为PWM的周期和延时是不变的,所以循环次数也不会改变,轮询检测就搞定了。但是随着实验...原创 2019-11-05 16:43:59 · 1047 阅读 · 0 评论 -
通过ROS控制真实机械臂(11) --- 通过 PRU-ICSS 访问 GPIO 实现电机正反转
每个PRU都连接着一个OCP主口,它允许访问linux主机设备对应的内存地址。此功能允许PRU控制通用GPIO的输入和输出状态。PRU可访问Linux主机内存,但是访问速度要慢上好几倍,因为内存访问需要路由到外部的PRU-ICSS,在通过PRU-ICSS接口从/OCP从口接收返回结果。首先测试用 PRU 通过/OCP主口访问 通用 GPIO 口。设备树覆盖层如下,用示波器连接beagleb...原创 2019-11-06 16:58:07 · 1769 阅读 · 0 评论 -
通过ROS控制真实机械臂(3)---Gazebo配合Rviz 仿真机械臂
###### gazebo配合rviz 仿真机械臂 #######一旦机器人有超过6个关节,逆向运动学函数不唯一,可能存在多个解,逆向运动学很难,需要ROS中的逆向运动学包的使用,简化成矩阵的运算对于机械臂而言,需要的是能操作follow_joint_trajectory/joint_states接口的插件,需要用到两个插件, 分别用于从follow_joint_trajectory接受轨迹并...原创 2019-07-14 16:01:08 · 13775 阅读 · 15 评论 -
通过ROS控制真实世界的机械臂(4)---- MoveIt !
OMPL能做什么? 简单说,就是提供一个运动轨迹。给定一个机器人结构(假设有N个关节),给定一个目标(比如终端移到xyz),给定一个环境,那么OMPL会提供给你一个 轨迹,也就是一个完整的关节位置。沿着这个轨迹依次移动关节,就可以最终把终端移到xyz,当然,这个轨迹应当不与环 境中的任何障碍发生碰撞。 为什么用OMPL? 运动规划的软件库和算法有很多,而OMPL由于其模块化的设计和稳定的更新,成...原创 2019-07-14 16:13:58 · 10534 阅读 · 0 评论 -
通过ROS控制真实机械臂(6)---自定义RViz插件panel界面设计
1. 自定义消息,用于发布每个关节的状态。GoalPoint.msgint8 busfloat32 joint1float32 joint2float32 joint3float32 joint4float32 joint5float32 joint6JointPos.msgfloat32 joint1float32 joint2float32 joint3...原创 2019-07-15 10:01:19 · 8781 阅读 · 5 评论 -
通过ROS控制真实机械臂(7)---三次样条插补
在之前的move_group界面中,当点击plan and execute之后,move_group就会帮我们规划出一条通往指定位姿的轨迹,发布在follow_joint_trajectory上,通过rostopic echo /redwall_arm/follow_joint_trajctory/goal,可以看到其中包含了positions: velocities: accelerations...原创 2019-08-05 13:40:48 · 13511 阅读 · 29 评论 -
通过ROS控制真实机械臂(1)----硬件测试
控制机械臂的电机有三种:1.伺服电机 2.步进电机 3.舵机1. 本次实验所使用的舵机有两种:LD_1501MG舵机和 ES3005舵机;控制板选择的是Beaglebone black,由于ES3005舵机的供电电压是5V,可以直接使用Beaglebone控制,手动测试流程如下:接线: 暗灰: GND 红色: VCC 4.8-7.2V 橙黄线: 脉...原创 2019-07-14 11:09:56 · 14538 阅读 · 17 评论