ROS实现多机话题通信
两台Ubuntu系统(如台式机与机器人),通过网线连接,共享ROS节点。
105 篇
两台Ubuntu系统(如台式机与机器人),通过网线连接,共享ROS节点。
本文记录 Apple Vision Pro 开发环境的完整搭建流程,涵盖 Xcode 真机调试、Unity + PolySpatial 配置、Play to Device 串流、应用打包,以及 visionOS 空间类型与 Volume Camera 等基础概念。
实现IsaacSim中实现笛卡尔空间控制(逆运动学)的方法。
使用ROS2+Rviz2可视化URDF文件,一个示例功能包以及完整修改教程。
最近在新的电脑上安装了Ubuntu22.04与ROS2 Humble,与时俱进,学习一下新的ROS2命令并总结下来,以便随时查看。
NVIDIA Isaac Sim仿真环境的简介、安装、GUI和Python程序的基本使用介绍。
Ubuntu 系统下为 USB 转串口设备分配稳定且自定义的设备名(如 /dev/gripper)
FR5 是与 UR5 构型相似的 6 自由度机械臂,本文介绍其 Python SDK 的基本运动控制方法。
Omega.7虚拟触觉力反馈操作主手的配置和基本程序使用
斯坦福大学开发的双手模仿学习系统,包括一整套软硬件系统,实现低成本不精确硬件完成精细操作任务。
robomimic 是一个用于机器人从演示学习的框架,该项目提供了一系列机器人操作的演示数据和离线学习算法,可以让人们对任务和算法进行标准化测试。
Stanford CS25 V2中的一节课,由Google Brain工程师主讲的机器人学习主题课程。
将自定义机器人模型导入进Mujoco中,为后续强化学习搭建仿真环境基础。
基于技能单元的强化学习方法,将任务分解为技能,建立技能与状态的映射关系,学习技能选择策略
香港中文大学刘云辉团队基于DDPG+BC改进的手术机器人强化学习方法
基于强化学习的机器人动作模仿方法论文调研与笔记。
斯坦福大学李飞飞团队的通过观看人类动作进行长期模仿学习方法。
从人类抓取物体的视频中学习机器人的动作生成与规划方法,相关的研究的调研。
从人类抓取物体的视频中学习机器人抓取的相关工作调研。
使用Gazebo搭建6D机械臂仿真环境,并添加相机,然后实现抓取仿真实验。
在使用ROS系统进行机器人实验中,遇到的各种错误信息汇总,不定时更新。
复现上交提出的RGB Matters算法。
调研近三年顶会顶刊上的抓取姿态估计的论文
复现NVIDIA提出的抓取估计算法Contact GraspNet
在Robotstudio中导入一个CAD模型,如汽车外壳等复杂曲面模型。使用Robotstudio进行路径规划,实现机械臂的汽车外壳的喷漆功能。
实现了上位机Ros noetic与STM32F1开发板的基于串口的相互通信。
基于A4988芯片驱动42步进电机,在STM32F1平台上进行测试,最高可以实现16细分。
西门子PLC自动化设计软件博途V15的安装教程。
g2o(General Graphic Optimization)是一个基于图优化的库,将非线性优化与图论结合起来的理论,我们可以利用g2o求解任何可以表示为图优化的最小二乘问题。
Ceres是一个最小二乘问题求解库,我们只需要定义待优化的问题,然后交给它计算即可。使用方法:1. 定义每个参数块。参数块就是简单的向量,也可以是四元数、李代数等特殊的结构……
本人使用STM32F103C8T6最小系统板,当我在windows上调试好STM32程序并成功实现串口通信后。重启电脑后串口通信没有响应。
摄像头标定的目的是消除相机畸变,具体畸变原理可以参考之前的文章。usb摄像头在ros系统标定过程大致可以分成几个步骤。①安装usb_camera驱动包;②运行usb_cam读取usb摄像头图像;③下载打印棋盘格并进行摄像头标定。
本教程介绍Keil5 51版的下载安装方法,Keil5是一款非常友好和强大的C语言软件开发系统。Keil5提供了清晰直观的操作界面,而且使用起来十分的轻松便捷,并具备编译器、编译器、安装包和调试跟踪功能。
本教程介绍Keil5 MDK版的下载安装方法,Keil5是一款非常友好和强大的C语言软件开发系统。Keil5提供了清晰直观的操作界面,而且使用起来十分的轻松便捷,并具备编译器、编译器、安装包和调试跟踪功能。
利用xacro描述文件创建差速小车模型,通过gazebo仿真此模型,然后利用libgazebo_ros_diff_drive.so插件控制小车的运动,最后实现了通过键盘按键,控制gazebo环境中的小车运动。
LabVIEW2020 中文版安装教程,提供阿里云盘链接与详细安装教程。资源仅供学习参考,请勿用于商业用途!
为什么要创建机器人的三维模型,原因在于机器人机器人仿真工具可以帮助我们体现发现设计中的一些关键错误。而模型仿真的含义,在于我们创建的是机器人模型,因此不一定和实际机器人长得一模一样。但因为是仿真,所以模型必须具备所有的真实硬件特点。
首先介绍了针孔相机的成像原理以及实际坐标和像素坐标的转换方法。然后根据实际相机存在的一些问题,引入了畸变模型,并给出了去畸变的公式方法以及详细示例程序。
本文从创建工作空间和功能包开始,介绍了其创建步骤和编译方法,并详细汇总了ros的常用指令。然后分别通过具体案例详细讲解了节点、服务、启动文件以及动态参数的创建方法和使用效果。
状态机是在工程应用中使用最多的设计模型。使用状态机,我们可以很容易的实现程序流程图中的判断、分支。Labview状态机是由一个While循环、一个条件结构和一个移位寄存器组成的。
状态机是在工程应用中使用最多的设计模型。使用状态机,我们可以很容易的实现程序流程图中的判断、分支。Labview状态机是由一个While循环、一个条件结构和一个移位寄存器组成的。
程序设计中很重要的一个思想就是模块化思想,也就是将程序划分为若干个区块,这样对程序某个区块进行修改就不会影响到其它区块。在Labview中,我们通过子VI来实现模块化的编程。
二维图片控件可实现像素级控制,能用于创建几乎任何图形对象。如需在二维图片控件中显示图像,必须通过编程向该控件写入一个图像。可使用图片函数VI进行绘制。
移位寄存器用于将上一次循环产生的值传递至下一次循环。移位寄存器以成对接线端的形式出现,分别位于循环两侧的边框上,位置相对。移位寄存器需要初始化,即需要设置移位寄存器传递给第一次循环的值。
Eigen是一个C++开源的线性代数库,提供了快速的矩阵线性代数运算,解方程等功能。许多上层软件库也使用Eigen进行矩阵运算。Eigen是一个纯用头文件搭建起来的库,因此使用的时候,只需要引用它的头文件即可,不需要链接库文件。
两个坐标系之间的旋转、平移关系,统称为坐标系之间的变换关系。机器人运动过程中,往往会设定一个惯性坐标系(即世界坐标系),可以认为它是固定不动的。机器人则是一个移动坐标系。
花瓶这种回转曲面生成的本质是轮廓沿引导线扫描。而对于花瓶来说,其生成方法就是一个圆沿一条曲线进行扫描。圆的生成方法如下:循环总数为360,对应360度,i则对应从0~360的每一角度。
for循环是固定次数的循环,其也有条件接线端,可以提前结束while循环,相当于C语言的break语句。for循环与数组操作是密不可分的,for循环最重要的功能就是处理数组数据。
所使用元器件包括仿真电源、变压器、桥式整流器、无极电容、电解电容、三端稳压芯片。接线方法如图。
对于一个移动机器人来说,我们往往需要它知道两件事,我在什么地方(定位),周围环境是什么样(建图)。
Rviz是一款三维可视化工具,可以很好的兼容基域ROS软件框架的机器人平台。Rviz可以通过图形化的方式显示机器人传感器信息、机器人运动状态、环境信息等。
laubch文件的作用如下,通过XML文件实现多节点的配置和启动。同时可以自动启动ROS Master(不需要单独roscore)。
TF功能包用来管理所有的坐标系。它可以记录十秒钟之内所有坐标系之间的关系,可以展示夹取的物体相对于机器人中心坐标系的位置在哪里。
Client每Request一次数据请求,Server发送一次数据。数据格式为个人信息,如姓名、性别等。
在ROS Master中有一个Parameter Server参数服务器,它是一个全局字典,用来保存各种配置参数,配置参数是各个节点都可以全局访问的。
通过程序,发布服务请求。即通过客户端的请求,发给服务端产生一个海龟,反馈回客户端。回到catkin_ws/src文件夹下,创建一个名为learning_service的功能包。
Server端等待信号,每次接收到Client端的信号,海龟的运动状态就切换一次(运动→停止、停止→运动)。
在ROS Master中,可以发布与订阅已经定义好的消息,比如海龟的运动、位姿等信息。但有时我们需要自己定义消息的类型。本节主要目的为定义一个Person个人信息,Publisher发布个人信息,Subscriber订阅个人信息。
ROS Master内有两个节点,一个是Subscriber(turtlesim),一个是Publisher,发布者通过程序实现发布Message,Message的内容包括线速度、角度,通过Topic管道,传递给Subscriber,从而控制小海龟的运动。
在ROS_Master中,可以发布与订阅消息,ROS_Master内有两个节点,一个是Subscriber(turtlesim),一个是Publisher,发布者通过程序实现发布Message,Message的内容包括线速度、角度,通过Topic管道,传递给Subscriber,从而控制小海龟的运动。
工作空间是存放工程开发相关文件的文件夹,类似windows中使用ide时创建的工程。工作空间包含的文件夹包括……
roscore是用来启动ros master,是运行ros系统前首先运行的命令;rosrun是用来运行某个功能包内的某个节点的指令,有两个参数,第一个参数是功能包名,第二个参数是节点名。
添加ROS软件源,打开软件与更新,将下载选项前四个都选上。一定要确保都勾选上,不然后续安装时会出现依赖关系问题。然后执行以下命令添加软件源,并添加公钥。
ROS安装过程可见我的上一篇博客Ubuntu20.04安装ROS_Noetic。安装过程中rosdep_init出现【ERROR_cannot download_default_sources_list_from…Website_may_be down.】。rosdep_update,总是出现超时问题无法更新。最终找到了一种靠谱可用的方法。
进入Ubuntu官网下载支持树莓派的Ubuntu版本安装包。使用DiskGenius格式化SD卡,将所有扇区删除,然后格式化。下载官方烧录工具,镜像选择刚才下载的.xz文件,SD卡选择自己的卡,写入即可。然后进行ubuntu环境配置……
网盘链接:https://pan.baidu.com/s/1yUpRG146dUXC9Gj1D94AHw,提取码:rsaz。解压安装包,运行ABB RobotStudio 6.08.msi程序,按流程一步步安装。安装完成后再根据自己电脑,解压...
首先导入一个IRB2600机器人,移动夹具的本地坐标原点,使原点位置为顶面中心(与法兰盘连接的部位)。对齐夹爪Smart组件的本地坐标和机器人末端法兰盘的坐标...
如果你有其它建模软件如Solidworks等做的夹具模型,可以导入到RobotStudio中。这里简单建模,主要展示动态夹具的创建流程。
单击创建碰撞检测进行创建,创建完成后,ObjectA与ObjectB为进行检测的两个组,如果两个组的物体发生碰撞,则会发生颜色变化。
本文在一个已经搭建好机械模型,同时完成机器人系统的创建后的机器人运行路径的创建过程。工程文件已上传到网盘,包括:初始工程文件(03Practice_init.rspag)、完成后的工程文件(03Practice.rspag)、模型文件。
首先搭建系统的机械结构。导入两个传送带,将第二个传送带以z轴旋转90°,再沿y轴偏移-3200mm。导入机器人IRB120,将其移动到合适的位置上。创建工件的模型...
RobotStudio在使用路径和目标点的创建目标点时,有时会出现无法跳转到目标点的问题,错误为未找到有效配置。解决方法1:在基本-设置选择正确的工具坐标,例如夹具的工具坐标。
新建一个工作站,从设备中导入一个传送带。创建一个正方体,作为传送带的传送对象。将小方块拖动带传送带上我们要的位置处,可以借助捕捉与设定位置精确定位小方块的位置...
使用ABB RobotStudio的过程中,有时会遇到鼠标拖动平移视角的速度突然变慢的问题:工作站空白处右键,点击查看全部或查看中心。这样就可以解决此问题
当程序比较复杂,或者程序内存在重复的部分时,模块化程序设计往往是比较可行的办法。在RobotStudio中可以通过在主程序中调用不同的例行程序,达到使代码逻辑清晰的目的。
Offs指令可根据当前所选工件坐标以及基准点进行坐标偏移。点击要偏移的robtarget数据,选择功能-Offs即可进行坐标偏移设置。
在手动模式下,最大速度受到限制,最大时250mm/s。而程序中v1000在仿真和实际中是十分快的,需要设置机器人的运动速度,并且设置延时时间。
在目标工作台的任意位置,任意角度创建一个直角坐标系,把这个坐标系叫做工件坐标。在不同的位置创建工件坐标系,就可以实现,相同的程序在不同的位置实现相同的加工。
从夹爪夹住工件后,系统的载荷就发生了变化,对于仿真程序中效果区别可能不明显,但在实际系统中,必须要考虑载荷的区别。
MoveJ的作用是移动到某位置。Set/Reset用于控制外部设备。在初始位置添加一句MoveJ指令,将机器人爪调至工件的正上方,再添加一条MoveJ指令(在工件上方添加一个位置点,是为了防止机器人直接夹取,可能会从侧面撞到工件)。
拆除夹爪,测量夹爪末端坐标。点击建模-测量-点到点,选择夹爪底面和末端面,记录得到的z坐标值。将夹爪安装回机器人末端。打开虚拟示教器,进入手动操纵-工具坐标-新建,修改名称,点击左下角初始值。修改第一个z(坐标位置)为刚才测得得值215.30,mass(质量)为1,第二个z(重心位置)初估一个数。验证坐标,选择动作模式为重定位,工具坐标为刚才新建坐标。操纵摇杆可看到机器人绕夹爪两末端中心点转动。
打开一个机器人系统,打开虚拟示教器。点击菜单-手动操纵-动作模式,可以看到下方有四个动作模型,其中轴1-3和轴4-6为单轴操作,后面是线性操作,和重定位操作,这里选择轴1-3,点击确定,可以看到在手动操作界面右方有机器人的位置信息和操纵杆方向。
打开主菜单-程序 可以看到最上面一行是程序名称,其中T_ROB1是任务,有几个机械单元就有几个任务可以选择。第二层是模块,分成系统模块和程序模块。模块就是将机器人需要实现的各个功能分成不同模块。可以理解成文件夹。第三层是例行程序,是机器人系统真正执行的一些程序。
将安装包解压,运行安装包内的setup.exe程序,按照提示安装即可,比较简单。安装完成后双击RobotStudio_5.61.02注册补丁.reg。打开RobotStudio即可完成安装。
如果wordpress已经安装设置完成后,浏览器输入 localhost 或者 树莓派的ip地址,就可以访问到网站了,但是外网(不在一个路由器内)仍然无法访问,而内网穿透的目的就是使外网的计算机能够访问你的网站。为了减少配置的难度和复杂度,我使用了花生壳进行配置。
在wordpress官网下载安装包,解压后把worpress文件夹内容放在html文件夹内。浏览器输入localhost/phpmyadmin进入phpmyadmin,输入自己的phpmyadmin用户名和密码,点击数据库栏,新建数据库,输入一个数据库的名字,点击创建即可,暂时不需要数据表。
树莓派搭建个人网站主要包括以下几个步骤:搭建LAMP服务器(即Linux+Apache+MySQL+PHP),创建数据库用户(这一步需要安装PhpMyAdmin,并使用SQL语句添加mariaDB数据库用户)。
树莓派的安装和配置以及远程访问主要包括以下几个步骤:准备TF卡,下载和写入镜像,IP地址的确定和访问,数据源的更新和配置,windowns远程访问的实现。至此,初步完成了系统的安装,即可进入图形界面。
条件结构类似C语言中的if…else…和switch结构,主要用于分支选择程序逻辑。条件结构包括两个及以上子程序框图或分支。每次仅执行一个条件分支。右键单击条件结构边框添加、复制、删除、重排及选择默认分支。可创建多个输入/输出隧道。
处理一系列相似的数据和执行重复计算操作时,可考虑使用数组。数据将相同类型的数据元素归为一组。在前面板放置一个数组的外框,拖放一个数据对象或元素至外框内即可创建数组。数组函数包括数组大小、索引数组、创建数组、数组最大值最小值、排序、拆分数组等操作均可以通过数组函数实现。
属性节点可用于访问对象的属性。当某些应用中可能需要通过编程改变前面板对象外观,以响应特定输入时,通过编辑属性节点进行设置。在程序框图的控件上右键,创建属性节点。需要设置多个属性时可以在边框上下拖动添加属性,属性节点按照由上而下的顺序执行。
变量的作用:在并行循环间传递数据。移位寄存器可以将前一循环产生的数据传递至下一循环,右键单击循环边框,添加移位寄存器,右侧的移位寄存器存储每次循环结束后的数据,左侧的移位寄存器为下一循环提供所存储的数据。
while循环至少执行一次,for循环可以执行0次,while循环自动输出最后一次执行的值,for循环自动输出一个数组。可以右键单击while循环的边框,在右键菜单中将while循环转换为for循环。
输出正弦波信号,频率0-50M;采样率10M、50M、100M可选;检测信号频率;输出采样信号的功率谱,如果频率或采样率发生变化,重新开始平均过程
在LabView中,动态数据类型表示为深蓝色,只有Express VI才能产生和接收ExpressVI。使用获取动态数据ExpressVI获取动态数据的属性,使用设置动态数据属性ExpressVI设置动态数据的属性,如信号名、时间标识、时间模式等。
数值型控件可表示不同类型的数值。布尔型控件最关键的就是机械动作的选择。字符型控件可以通过快捷菜单更改显示类型。右键单击枚举或下拉列表控件,并从快捷菜单中选择编辑项,或者在属性对话框中点击编辑项的选项卡,即可向控件的下拉列表中添加内容,并更改项的顺序
放置Express VI至程序框图,然后配置弹出的对话框,连线Express VI,保存并运行VI。
如需要其他版本的请参考资源页面。下载网盘里面的LabView2018.zip压缩包,安装前请新建一个文件夹作为labview的安装路径,最好不要安装在盘符根目录下。
控件来源于控件选板,右键可以打开控件选板,控件可以点击后添加到前面板,也可以通过拖拽添加控件。程序框图由接线端(前面板)、子VI、函数、常量、结构、连线等组成。
此版本为英文版,如需要要中文版的请参考资源页面。下载网盘里面的LabView2019.zip压缩包,解压进入对应64位或32位文件夹,再解压文件夹内的的ISO文件,进入打开的文件夹,双击install.exe安装
在设计单片机电路的时候,单片机的IO口数量是有限的,有时并满足不了我们的设计需求,因此为了控制更多的器件,就需要使用一些外围的数字芯片进行引脚扩展。常用的是74HC138,也叫38译码器。
CD4066是四双向模拟开关,将CD4066的四个输入端接在L298N的输出口,CD4066的输出端接在步进电机的A+、A-、B+、B-端口,四个控制口同时接在单片机的某一引脚上,实现单片机的一个引脚控制一个CD4066上四个开关的同时开断,进而实现步进电机的选择。
解决方法:设计—配置供电网—在电源供应中,并将未连接电网的电源增加到网络连接即可。
单片机无法直接驱动步进电机,需要L298N进行驱动。本文介绍饿了L298N的部分参数,以及两相四线制步进电机的驱动原理和驱动方法。并根据给出的驱动原理在Proteus中进行了仿真实验
本次试验使用的是ESP8266 NodeMCU。固件烧录的是nodemcu官方固件,打开官方提供的ESP8266Flasher,在配置一栏选择nodemcu固件,烧录地址为0x00000。