- 博客(116)
- 收藏
- 关注
原创 【MoveIt 2】使用 MoveIt 任务构造器(MoveIt Task Constructor)进行拾取和放置
当您选择特定阶段时,成功和失败的解决方案列表将显示在最右侧的窗口中。选择其中一个解决方案将开始其可视化。
2025-05-14 19:08:37
299
原创 Ros2 - Moveit2 - DeepGrasp(深度抓握)
MoveIt 任务构造器包含一个生成器阶段。此阶段不直接包含 GPD 或 Dex-Net 的实现。相反,与 MoveIt 任务构造器的通信是通过 ROS 操作消息实现的。该阶段包含一个与操作服务器通信的操作客户端。操作服务器的实现位于moveit_task_constructor_dexnet和包中。操作服务器将抓取候选连同相关成本一起作为反馈发送回操作客户端。消息的相关字段可以在中看到使用阶段很简单。将下面的阶段添加到当前任务中。实现可以在中看到。模板参数是操作消息。指定。
2025-05-14 19:04:24
419
原创 PPO算法:一种先进的强化学习策略
PPO(Proximal Policy Optimization)是一种增强学习算法,主要应用于解决连续控制任务。PPO算法在2017年由OpenAI提出,旨在解决传统策略梯度方法在连续控制任务中面临的挑战。PPO算法通过引入一个近似目标函数和重要性采样,提高了策略更新的稳定性和效率。PPO算法是一种有效的增强学习算法,适用于解决连续控制任务。通过引入近似目标函数和重要性采样,PPO算法减小了策略更新的方差,提高了学习效果。
2025-05-14 18:58:36
54
原创 强化学习_PPO算法
state定义:比如说视觉就是一幅图像或者是一幅矩阵(模型的输入)action定义:交互后的反应,例如选择上下左右(模型的输出,反作用于模型的下个输入state)初步理解:如何得到state和action:比如以超级玛丽游戏为例子,由现在的图片(当前状态state)作为输入,来控制上下左右走的行动action,也就是输出奖励(reward)背景:我们前面提到了超级玛丽的例子,提到了不同的行动,但是并没有说明那种行为更好,因此我们在此处引入了奖励奖励(reward)定义。
2025-05-14 18:53:03
165
原创 笛卡尔路径规划
两点之间插值的算法有很多,简单起见,我们就采用直线插补,因为这里小鱼是从当前点向下运动30cm,所以姿态是不存在变化的,姿态的变化也有相应的插值算法,比如球面线性插值(将ompl支持的算法常用的都测试了下,可能因为参数调的不够好,最终效果都不太满意,关于如何调整moveit所使用的ompl算法,再搞一篇文章来讲。等,虽然都可以进行路径搜索,但并不能保证最终搜索出来的路径是我们想要的那种,比如这里小鱼让机械臂向下移30cm,结果机械臂饶了一圈。为什么路径和姿态那么奇怪,开始以为是姿态问题,毕竟用的求解器是。
2025-05-14 12:09:41
186
原创 MoveIt途经点过多导致轨迹规划失败如何优化
在使用MoveIt进行机器人轨迹规划时,途经点(Waypoints)过多是一个常见问题。途经点越多,计算复杂度越高,可能导致规划时间过长甚至失败。为解决这一问题,需要从简化途经点和优化约束条件两方面入手。
2025-05-14 12:05:28
168
原创 ubuntu22.04在 Docker容器中安装 ROS2-Humble
22.04 安装 docker 容器并实现rviz功能1命令拉取包含-Humble的镜像:d验证该镜像是否拉取成功。
2025-05-11 11:19:44
375
转载 Docker容器中安装 ROS2-Humble
volume=/dev/dri:/dev/dri:挂载卷,将宿主机的 /dev/dri 目录挂载到容器的相同路径,这个目录包含了 Direct Rendering Infrastructure (DRI) 设备文件,用于 GPU 硬件的直接访问。–volume=/tmp/.X11-unix:/tmp/.X11-unix:挂载卷,将宿主机的 /tmp/.X11-unix 目录挂载到容器的相同路径,这个目录包含了 X11 服务器的 UNIX 域套接字,用于图形界面的通信。
2025-05-11 05:46:58
9
原创 Docker容器中安装 ROS2-Humble 并使用 rviz
拉取完后创建容器,但是为了能在docker中能打开窗口,将使用以下参数,只需要修改名字即可,your_name 改成你想要的名字,必须英文。这两种创建的版本,哪个能用用哪个,参考在docker中进行RVIZ可视化。然后就可以运行容器啦,$containerId 换成容器名字也可以。运行下面这句,把 $containerId 替换为容器的 id。这个时候必然会报错,上步的目的是为了创建有对应参数的容器,解决主机无法访问和容器的共享文件夹的问题,这句在主机运行。此时进入容器了,再在容器里面运行这句。
2025-05-10 18:24:55
499
原创 RViz(机器人可视化工具)的配置文件(moveitcpp)
这里是配置文件中定义的各种显示内容,包括网格、规划场景、轨迹等。面板是RViz界面中的各个功能区域,用于显示和操作不同的数据。: 展开的属性树节点,这里列出了几个默认展开的节点,如。这是RViz的核心部分,用于管理所有显示的内容。这里是配置文件中定义的工具列表,用于操作和交互。分割窗口的比例,用于控制面板的布局。指定面板的类型,这里是显示面板。用于选择和操作场景中的对象。用于显示额外的可视化工具。帮助区域的高度(像素)。: 展开的工具属性节点,如。属性树的高度(像素)。显示当前工具的属性。
2025-05-05 18:00:42
818
转载 panda 物体抓取和放置
第一个阶段CurrentState也是一个生成阶段——为了连接第一个阶段和这个阶段,必须使用连接阶段,我们已经在上面创建了。然后,我们创建一个ComputeIK阶段并将我们的GeneratePlacePose阶段传递给它——其余的逻辑与抓取阶段相同。这个阶段是一个传播阶段,它接收相邻阶段的解决方案并传播到下一个或上一个阶段。
2025-04-29 04:47:59
25
原创 Docker获取 Ubuntu 镜像
由于网络原因,国内用户可能会遇到下载镜像速度慢的问题。此时,可以使用国内的 Docker 镜像加速器。在获取 Ubuntu 镜像之前,需要确保系统上已安装 Docker。一旦容器启动,你将进入一个 bash 会话。现在你可以安装软件和配置环境。通过以上步骤,你可以成功获取并运行 Ubuntu 镜像,并根据需要进行配置和使用。这将会从 Docker Hub 下载最新的 Ubuntu 镜像。是启动容器后运行的命令,这里是启动 bash shell。是用来运行一个新的容器的命令。是你拉取的镜像名称。
2025-01-16 11:46:25
626
原创 docker hello world
3、在文件夹中使用 vim Dockerfile 命令创建一个Dockerfile文件(名字不能出错),在文件中输入以下内容。1、需要一个jar包,使用IDEA创建一个Spring boot项目,随便输出一句话,install打成jar包,jar包生成在target目录下。4、使用 docker bulid -t hello . 来构建镜像, hello为命名的构建后镜像名, . 表示构建在此目录下,如图则构建成功。4、使用 docker run hello-world 来运行镜像,如图便运行成功。
2025-01-16 11:12:51
857
原创 MoveIt 中启动文件
”功能,用于简单、理想化的模拟。在我们的示例中,这是在 URDF 级别使用先前定义的“use_fake_hardware”xacro 参数配置的。虽然“ros2_control”允许您连接到真实的机器人硬件,或基于物理的模拟器(如 Gazebo 或 NVIDIA Isaac Sim)中的机器人,但它还公开了“模拟组件<>”节点,用于监听机器人的关节状态,使用机器人的 URDF 模型计算框架变换,并将它们发布到“tf2”。最后,我们可以告诉我们的启动文件实际启动我们在前面部分描述的所有内容。
2025-01-07 19:22:55
761
原创 move_group.launch.py 示例
import os# 获取 MoveIt 配置包的路径# 定义启动参数# 定义 MoveIt move_group 节点的参数文件路径# 创建 launch description 对象# 添加启动参数声明# 添加 move_group 节点Node(],],return ld。
2025-01-07 16:55:17
609
原创 MoveItConfigsBuilder 配置机器人的完整示例
这个示例涵盖了 MoveIt 配置的多个关键方面,可以根据具体需求进行调整和扩展。
2025-01-07 16:49:44
673
原创 docker基础命令入门、镜像、运行容器、操作容器
一. Docker 基础入门相关命令1.1 启动Docker1.2 查看 Docker 运行状态1.3 停止 Dokcer1.4 重启Docker1.5 配置开机启动 docker1.6 查看 docker 所有命令二. Docker 镜像相关命令2.1 docker search 镜像名称——(查询某个镜像)2.2 docker pull 镜像名称:version——拉取指定版本镜像2.3 docker images——列出当前主机上所有镜像。
2024-12-26 14:00:12
1388
转载 ROS2组件component自定义实现
本教程的主要目标为:生成一个自定义的组件信息test_component::Test1,功能包为test_component,该组件的主要功能为发布话题“/talker”,发送的数据类型为std_msg/msg/string。本教程主要实现一个自定义的组件信息test_component::Test1,功能包为test_component,组件管理器启动加载该组件后,能够正常发布话题“/talker”,据类型为std_msg/msg/string。// 创建定时器,定时1s后进入回调函数。
2024-12-06 13:53:24
129
转载 ROS单线程与多线程处理
这意味着ros::spin()和ros::spinOnce()不会调用这些回调函数。如果将NULL(默认值)作为setCallbackQueue的参数会导致使用全局队列(由ros::spin()和ros::spinOnce()服务)。在上面的spin()实现中使用了对ros::getGlobalCallbackQueue()的调用。ros::MultiThreadSpinner是一个阻塞式的spin,类似于ros::spin()。在上面的例子中,所有的用户回调函数都会在ros::spin()内部被调用。
2024-12-05 20:21:21
204
转载 精讲多线程之 MultiThreadedSpinner
笔者在实际中未遇到使用该方法的地方,仅记录在此,保持文章的完整性。CallbackB 处理了 B/message 中的所有消息 (1,2,3,4,5,6),而 CallbackA 还是 2s 调用一次,只处理了 A/message 中编号为 1,3,5 的消息。这就说明了单线程的不足,不管有多少个 Subscriber,节点都只能顺序执行回调,这在某些时候是不能忍受的,因此,多线程有了用武之地,我们要做的事情就是增加 spinner thread。一图胜千言,在只有一个。
2024-12-05 20:18:32
117
原创 MobaXterm访问VMware Ubuntu虚拟机
如果您使用的是网络地址转换(NAT)或桥接模式,确保您的虚拟机IP地址和SSH端口在主机上可访问。如果您使用端口转发,请确保转发规则正确配置,并且MobaXterm连接到正确的端口。在虚拟化平台(如VMware)中,检查虚拟机的网络适配器设置,确保它与您的主机网络兼容,并且允许外部连接。:如果您的Linux虚拟机上启用了SELinux或AppArmor等安全模块,它们可能会阻止SSH连接。在Ubuntu上,您可以使用。:确保虚拟机的IP地址设置正确,不应该和物理机的IP地址相同,但需要在同一网关中。
2024-11-28 08:51:37
348
原创 建立IKgroup
1.点击UR5_joint1上的图标,弹出scene object properties,再设置mode,将其设置为inverse kinematics mode,并且勾选上hybrid oper。在点击dummy,设置 配对。点击kinematics,再点击add new ik group,空白框出现IK_Group,可以选择命名。<如果,没有这样设置,会导致机械臂走不到目标点,而随处旋转。选中ur5,再点击tool,选择calculation module properties。
2024-11-19 21:02:16
251
原创 space之间和pose之间距离的计
搜索是随机的(猜测是随机采样)getConfigForTipPose找到一个符合给定的end-effector 位置和姿态的 configuration。-- 求这个距离d的方法应该是将两个configuration之间对应的每一个关节值相减得到的值乘以一个权重metric然后平方,再求平方和,最最后再开方。-- 返回两个 configurations 之间的距离。-- 这个求距离的方法叫做2范数(求元素的平方和再开方)
2024-11-19 18:33:30
883
原创 V-rep机器人仿真软件学习笔记
常用的机器人仿真软件有哪些?为什么选择V-rep?目前常用的机器人物理仿真软件有Gazebo、V-rep、Webots等,这三款都是开源软件,自己使用过前两种,Gazebo配合ROS使用功能十分强大,但是要在Linux系统下使用,会有些不方便;V-rep是一个跨平台的仿真软件,在windows和Linux下都可以很稳定的运行,而且软件体积较小。考虑到要在windows下使用仿真软件,以及V-rep方便的Python API接口和易用性,最终选择使用V-rep。V-rep在自己项目的应用情况?
2024-11-19 18:29:45
1858
原创 V-rep学习笔记:机器人路径规划
基于采样的运动规划方法在这一点与传统方法有本质的不同,它仅仅通过对位形空间或状态空间中的采样点进行碰撞检测来获取障碍物信息,并在此基础上进行运动规划。采样规划方法避免了对空间的建模,即对障碍空间和自由空间进行描述的复杂的前期计算,这使它完全能够处理高维空间和复杂系统的运动规划问题。在高维空间面前,运动规划的解析算法面临极大的困难。这种方法能用相对少的随机采样点来找到一个解,对多数问题而言,相对少的样本足以覆盖大部分可行的空间,并且找到路径的概率为1(随着采样数增加,P(找到一条路径)指数的趋向于1)。
2024-11-18 22:39:26
687
原创 MoveIt2基本概念
节点move_group的默认运动规划器是由MoveIt设置助手使用OMPL及MoveIt与OMPL的接口进行配置的。节点move_group能够同时侦听多个该话题发布者发布的信息,即使这些发布者只发布有关机器人状态的部分信息(例如,单独的发布者可能用于发布机器人的手臂和移动底座的状态信息)。请注意,来自move_group节点的运动规划结果是一条轨迹,而不仅仅是一条路径—_move_group*会使用期望的最大速度和加速度(如果指定了的话)来生成一条服从关节级别的速度和加速度约束的轨迹。
2024-11-12 21:21:48
1240
原创 多模态融合-决策层融合
决策层融合是多模态融合技术中一种高级的方法,通过在各模态的独立决策结果上进行融合来提高整体的决策性能。这种方法通常包括独立的模态特征提取和决策步骤,最后将各模态的决策结果进行融合。假设我们有图像数据和对应的文本描述,我们将它们分别训练独立的模型,并在决策层进行融合。决策层融合方法通过分别训练独立的模态模型,并在决策层进行融合。对每个模态的数据分别训练独立的模型,这些模型可以是同质的(同样的网络结构)或异质的(不同的网络结构)。在完成独立模型的训练之后,我们需要将各模态的决策结果进行融合。
2024-11-11 15:17:12
3061
1
原创 全面盘点多模态融合算法及应用场景
特征层融合是多模态融合技术中一种重要的方法,它通过分别提取不同模态的数据特征,并在特征层进行融合。特征层融合方法通过分别提取不同模态的特征,并在特征层进行融合,能够更好地捕捉多模态数据的互补信息,提高信息处理的效果。进入2020年代,多模态融合技术在各个领域的应用得到了进一步扩展,从自动驾驶到医疗诊断,从虚拟现实到智能家居,多模态融合技术展示了其广泛的应用前景。通过理解和处理多模态数据的类型和特征,我们可以设计出更加高效和鲁棒的多模态融合模型,解决复杂的跨模态信息处理问题,并在实际应用中取得更好的效果。
2024-11-11 15:14:31
3600
原创 ROS2深度相机的识别物体并得到三维坐标
K的值是相机内参,一般相机出厂都会只带标定好的相机内参k以及畸变系数矩阵d想要仔细将明白可能得花点时间,如果后面看的人比较多会出一个相机四个坐标系的系列。简短说, 相机畸变参数D,用于校正图像畸变,相机内参数K是可以通过它来计算出实际的物体基于相机坐标系下归一化平面上的实际坐标(归一化平面上的实际坐标,就是没有深度值的平面坐标)要想得到实际的三维坐标可以乘以深度(也是基于相机坐标系下)def px2xy()函数就是传入像数坐标系与内参K,与畸变系数D就可以得到归一化平面上的实际坐标。
2024-11-11 10:46:21
811
原创 OpenCV—颜色识别
一、前言本内容为通过对opencv进行初步学习,结合python进行多种颜色的基本识别。二、学习过程1.颜色空间的转换初学opencv,首先我对于图像进行了更深层的了解,对于灰度及彩色图像其内部的结构有了认识。之后便开始学习opencv的各种基本功能,如读取图像与视频,使用网络摄像头等等。在初步了解掌握了opencv的基本函数后,对于颜色识别的学习开始于颜色空间的转换。
2024-11-11 09:16:41
1767
1
原创 常见建图算法
当一个新的laser scan加入到地图中时,如果该laser scan的估计位姿与地图中某个submap的某个laser scan的位姿比较接近的话,那么通过某种 scan match策略就会找到该闭环。Cartographer中的scan match策略通过在新加入地图的laser scan的估计位姿附近取一个窗口,进而在该窗口内寻找该laser scan的一个可能的匹配,如果找到了一个足够好的匹配,则会将该匹配的闭环约束加入到位姿优化问题中。扫描匹配的作用是找到每个粒子在t时刻位姿的最佳坐标。
2024-11-11 08:56:47
902
原创 改进RRT*的路径规划算法
将地图的长宽各缩小为原来的十分之一后,将其划分为100个相等的网格,障碍物占据的网格数量与这100个网格的比例即为障碍物的分布情况。如图1为重选父节点示意图,其中橙色实线为更新的路径,蓝色虚线为舍去路径,在单位圆内存在某一节点,使得X_new选择这个节点为父节点的距离更近且无碰撞,即可更新。图2为节点重连,在单位圆内,X_1选择X_new为父节点的距离比X_1选择X_2为父节点的距离更短且无碰撞,即可更新。步长过大时,会增加Q_new与 Q_nearest之间的路径经过障碍物的概率,降低采样的成功率。
2024-11-07 23:18:47
1879
原创 OMPL库算法学习(1)RRT算法
简介RRT 算法(快速扩展随机树,rapidly exploring random tree)是一种随机性算法,它可以直接应用于非完整约束系统的规划,不需进行路径转换,所以它的算法复杂度较小,尤为适用于高维多自由度的系统。缺点是得到的路径质量不是很好。其思想是快速扩张一群像树一样的路径以探索(填充)空间的大部分区域,伺机找到可行的路径。RRT 的基本步骤是:1. 起点作为一颗种子,从它开始生长枝丫;2. 在机器人的“构型”空间中,生成一个随机点X;
2024-11-06 19:26:42
801
原创 MoveIt中的RRT算法进行机械臂的轨迹规划、插值和控制
通过上述过程,使用MoveIt中的RRT算法进行机械臂的轨迹规划、插值和控制。首先,通过配置RRT算法的参数进行规划;然后,使用插值技术优化轨迹;最后,将规划和优化后的轨迹发送到控制器以执行。这样可以确保机械臂以平滑、准确的路径进行运动。
2024-11-06 17:51:31
1259
原创 MoveIt!运动规划库OMPL和路径规划算法
自从看了交大邱博的路径规划的一个视频之后(如下其中之一的截图),才知道这里面包含的方法有很多,才发现ROS是多么的强大,帮我这种小硕铺了一条康庄大道,很多东西直接拿来就用了。当然对于大神来说,折腾总是在路上的,看了那么多算法,虽然很多都不适用于机械臂这种高维空间的路径规划,但是还是免不了想试试看自己导入一些算法。
2024-11-06 17:45:10
1147
原创 四. 运行MoveIt!
我们可以看到,本次运动规划使用了LBKPIECE算法,并且使用了4线程并行规划,规划时间为0.063719秒。在中间的下来菜单里面有很多的具体算法,之后你可以尝试不同的算法,看看他们的区别。同样的,你也可以在MotionPlanning模块下的Planning子模块写的Query子模块里面设置随机的或者预设的目标位置。的时候,就代表启动成功了。接下来可以尝试不同的OMPL算法,不同的目标位姿和不同的环境。因为OMPL是采样算法,由于其随机采样的特性,每次的路径是不同的,如下图。终于,到了运动规划的时候了。
2024-11-06 16:45:55
793
原创 MoveIt 配置包详解
打开刚刚创建好的lwr_moveit_config文件夹,我们发现有config和launch两个文件夹。ompl_planning.yaml:这里是配置OMPL各种算法的各种参数。3.1 MoveIt!先看config,里面有。3.3 Launch文件。3.2 SRDF文件。
2024-11-06 16:36:43
535
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人