<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Projects | 个人主页</title><link>https://lxk-221.github.io/zh/project/</link><atom:link href="https://lxk-221.github.io/zh/project/index.xml" rel="self" type="application/rss+xml"/><description>Projects</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>zh-Hans</language><lastBuildDate>Sun, 01 Sep 2024 00:00:00 +0000</lastBuildDate><image><url>https://lxk-221.github.io/media/icon_hu68170e94a17a2a43d6dcb45cf0e8e589_3079_512x512_fill_lanczos_center_3.png</url><title>Projects</title><link>https://lxk-221.github.io/zh/project/</link></image><item><title>装配机器人</title><link>https://lxk-221.github.io/zh/project/010.assembly-robot/</link><pubDate>Sun, 01 Sep 2024 00:00:00 +0000</pubDate><guid>https://lxk-221.github.io/zh/project/010.assembly-robot/</guid><description>&lt;h2 id="摘要">摘要&lt;/h2>
&lt;p>运动基元（Movement Primitives, MP）是一种有前景的方法，可以从人类示范中建模机器人运动。使用学习的参数和通常缩放到$\boldsymbol{[0,1]}$的相位变量，MP可以在相位从0过渡到1时生成轨迹。
然而，在需要高精度和在线调整的装配任务中，典型的MP方法效果不佳，特别是当轨迹以有限的控制器增益执行，或者当任务受到某些障碍物阻碍时。
因此，我们提出了相位识别运动基元（Phase-Recognizing Movement Primitive, PMP），它可以在线稳定地估计任务相位，在装配任务受到外部干扰时进行适当调整，并最终在使用低增益顺应控制器的情况下实现精确装配。
具体来说，给定机器人状态，我们假设相位是一个具有高斯分布的随机变量。因此，可以计算相位速度，使我们能够确定任务是否受阻，并在任务卡住时重试。
我们在仿真中测试了我们的方法用于插孔装配任务，并在真实UR5上测试了滑入槽装配任务。实验结果表明，PMP可以稳定地估计相位，从而对受阻的装配任务进行调整以完成任务。&lt;/p>
&lt;h2 id="实验">实验&lt;/h2>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/Hcrcy2lksx4?autoplay=0&amp;controls=1&amp;end=0&amp;loop=0&amp;mute=0&amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"
>&lt;/iframe>
&lt;/div></description></item><item><title>基于BIM的机器人</title><link>https://lxk-221.github.io/zh/project/008.bim-based-robot/</link><pubDate>Fri, 01 Sep 2023 00:00:00 +0000</pubDate><guid>https://lxk-221.github.io/zh/project/008.bim-based-robot/</guid><description>&lt;h2 id="概述">概述&lt;/h2>
&lt;p>本研究在2D同步定位与地图构建(SLAM)中使用建筑信息模型(BIM)信息。在这个项目中，机器人使用BIM中的信息生成2D地图作为建筑物的先验知识。然后移动机器人使用这个全局地图进行初始定位和路径规划，可以是用于地图更新的覆盖路径，也可以是到目标位置的路径。此外，移动机器人可以根据后续探索更新这个先验地图。总的来说，这种方法的优势在于它可以帮助机器人在不需要先生成地图的情况下到达目标位置。相反，机器人可以基于先验知识到达期望位置，并在移动过程中更新地图。&lt;/p>
&lt;p>本项目使用的SLAM方法基于Cartographer，并在Gazebo中通过添加随机障碍物进行仿真测试。所有工作均由本人独立完成。&lt;/p>
&lt;h2 id="摘要">摘要&lt;/h2>
&lt;p>建筑机器人除非事先通过SLAM构建地图（这是耗时的，且阻碍了建筑机器人制定全局任务计划），否则无法获得建筑物的全局信息。同时，建筑信息模型（BIM）是建筑信息的数字化和标准化。有了BIM，建筑场景中的建筑内部实际上是半未知的，而不是完全未知的。在本研究中，我们提出了一个将BIM转换为2D理想地图的流程。然后，我们将2D理想地图和SLAM结合用于机器人导航。通过使用这个理想的2D地图作为机器人的初始全局地图，机器人可以获得建筑物内部的全局信息，从而节省时间并提高效率。&lt;/p>
&lt;h2 id="流程">流程&lt;/h2>
&lt;p>这个图展示了数据转换的流程。
&lt;figure id="figure-数据转换流程">
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img src="https://lxk-221.github.io/media/projects/bim-robot/Pipeline.png" alt="数据转换流程" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
数据转换流程
&lt;/figcaption>&lt;/figure>
&lt;/p>
&lt;p>这个图展示了以obj形式的建筑物。
&lt;figure id="figure-网格">
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img src="https://lxk-221.github.io/media/projects/bim-robot/mesh.png" alt="网格模型" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
网格
&lt;/figcaption>&lt;/figure>
&lt;/p>
&lt;p>这个图展示了以八叉树形式的建筑物。
&lt;figure id="figure-八叉树">
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img src="https://lxk-221.github.io/media/projects/bim-robot/Octree.png" alt="八叉树" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
八叉树
&lt;/figcaption>&lt;/figure>
&lt;/p>
&lt;h2 id="仿真">仿真&lt;/h2>
&lt;p>这个图展示了SLAM中的不同地图。&lt;/p>
&lt;p>
&lt;figure id="figure-地图信息">
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img src="https://lxk-221.github.io/media/projects/bim-robot/map.png" alt="地图信息" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
地图信息
&lt;/figcaption>&lt;/figure>
&lt;/p>
&lt;p>如图所示，虽然我们的机器人对环境是全新的，但它通过全局代价地图（由分层代价地图结构从2D理想地图生成）获得了有关建筑物的全局信息。
最大的框显示全局代价地图，第二大的框显示来自传感器的信息。最小的框显示局部代价地图。&lt;/p>
&lt;p>
&lt;figure id="figure-正确的全局路径">
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img src="https://lxk-221.github.io/media/projects/bim-robot/Global.png" alt="全局路径" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
正确的全局路径
&lt;/figcaption>&lt;/figure>
&lt;/p>
&lt;p>此图显示，即使传感器在目标点周围没有任何信息，机器人也能生成到目标的正确路径。&lt;/p>
&lt;p>
&lt;figure id="figure-正确的局部路径">
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img src="https://lxk-221.github.io/media/projects/bim-robot/Local.png" alt="局部路径" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
正确的局部路径
&lt;/figcaption>&lt;/figure>
&lt;/p>
&lt;p>此图显示，机器人可以根据局部代价地图改变其局部路径，以避免与障碍物发生碰撞。&lt;/p>
&lt;p>
&lt;figure id="figure-到达任意目标">
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img src="https://lxk-221.github.io/media/projects/bim-robot/Target.png" alt="到达目标" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
到达任意目标
&lt;/figcaption>&lt;/figure>
&lt;/p>
&lt;p>此图显示机器人可以到达建筑物特定楼层的任意目标点。&lt;/p>
&lt;h2 id="结论">结论&lt;/h2>
&lt;p>在本文中，我们提出了一个将BIM转换为2D理想地图的流程，然后我们使用2D理想地图进行机器人导航，从而在建筑场景中节省了通过SLAM构建地图的时间。未来，我们将尝试使用BIM中更多的语义信息和生命周期信息来帮助机器人完成任务。&lt;/p></description></item><item><title>竞速机器人</title><link>https://lxk-221.github.io/zh/project/005.racing-robot/</link><pubDate>Fri, 01 Sep 2023 00:00:00 +0000</pubDate><guid>https://lxk-221.github.io/zh/project/005.racing-robot/</guid><description>&lt;h2 id="概述">概述&lt;/h2>
&lt;p>本项目旨在参加机器人竞速比赛。在比赛中，机器人需要尽可能快地完成赛道并击中终点目标，同时不能进入黑色区域。
机器人要求使用人形机器人，配备由三个麦克纳姆轮组成的全向底盘，以及背包上的网络摄像头。所有程序都在背包中的树莓派4B上运行。&lt;/p>
&lt;p>在这个项目中，我负责仿真、视觉和控制算法。我在V-REP模拟器中建立了仿真环境，测试了基于边缘检测的赛道检测方法，并使用基于视觉的PD控制来控制底盘。此外，由于机器人在起点处被随机放置方向，我们使用Keras和TensorFlow来解决分类问题并使机器人朝向正确方向。&lt;/p>
&lt;h2 id="仿真">仿真&lt;/h2>
&lt;p>我们首先在V-REP中建立仿真环境来测试我们的算法，我们使用V-REP的远程Python API从虚拟相机获取仿真数据，并根据我们的算法控制机器人的电机。我们测试了真实网络摄像头的视场角，以确保虚拟相机具有与真实相机类似的参数。&lt;/p>
&lt;h2 id="真实机器人">真实机器人&lt;/h2>
&lt;p>网络摄像头的原始位置太高，无法获得机器人前方地面的足够信息。因此，我们使用3D打印机制作了一个可调角度的相机支架，使其能够向下倾斜以俯视地面。为了增加轮子的摩擦力，我们尝试了新材料来制作轮胎，并在真实机器人上进行了一些测试。&lt;/p>
&lt;h2 id="测试视频">测试视频&lt;/h2>
&lt;p>这个视频展示了比赛的整个过程。正如我们所见，机器人以不同的方向开始，然后根据网络摄像头的图像将指令分类为左转、右转和前进三类。对于左转或右转指令，机器人以特定角度左转或右转。对于前进指令，机器人开始使用基于边缘检测的PD控制来控制底盘。即使面对伪装图案，视觉算法也能保持稳健。最后，机器人使用基于圆弧检测的方法来估计与目标的距离，并在调整方向的同时减速。&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/cpf3xdfruAY?autoplay=0&amp;controls=1&amp;end=0&amp;loop=0&amp;mute=0&amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"
>&lt;/iframe>
&lt;/div>
&lt;!--
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/L-4Lpmt8hqk?autoplay=0&amp;controls=1&amp;end=0&amp;loop=0&amp;mute=0&amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"
>&lt;/iframe>
&lt;/div>
--></description></item><item><title>喷涂机器人</title><link>https://lxk-221.github.io/zh/project/009.painting-robot/</link><pubDate>Fri, 01 Sep 2023 00:00:00 +0000</pubDate><guid>https://lxk-221.github.io/zh/project/009.painting-robot/</guid><description>&lt;h2 id="概述">概述&lt;/h2>
&lt;p>本项目是我硕士论文的主题。&lt;/p>
&lt;p>在建筑喷涂作业中，喷涂机器人相比人工劳动具有显著优势。然而，为了满足高精度要求，喷涂机器人必须准确感知大型物体。此外，喷涂过程的需求要求喷涂机器人在其墙面覆盖喷涂的路径规划中纳入新的程序约束。本研究主要需要解决以下两个问题：&lt;/p>
&lt;ol>
&lt;li>考虑机器人可达性约束的全覆盖喷涂轨迹规划。&lt;/li>
&lt;li>可跨系统、平台的易部署、验证的算法。与具体硬件结合的整体喷涂软件。&lt;/li>
&lt;/ol>
&lt;h2 id="机器人模型">机器人模型&lt;/h2>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img src="https://lxk-221.github.io/media/projects/painting-robot/PaintingRobot_SW.png" alt="SolidWorks模型" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="感知">感知&lt;/h2>
&lt;p>最初，我们使用基于区域生长的方法进行感知，将墙面投影到2D平面上。这种方法有效地将问题从3D覆盖路径规划转变为2D覆盖路径规划。
然而，我们发现这种方法不足以处理涉及角落和曲面的任务。因此，我们现在正在探索基于切片的方法来解决这些挑战。&lt;/p>
&lt;h2 id="基于切片的喷涂点生成">基于切片的喷涂点生成&lt;/h2>
&lt;p>基于切片的喷涂点生成方法通过使用一系列平行的平面对待喷涂区域进行切割，这种方法在工件喷涂中常常使用。然而在建筑喷涂中，机器人喷涂范围由已知的面片（Mesh）文件变成了感知得到的点云（Point Cloud）文件，因此需要需要对喷涂点的生成方式进行改进。
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img src="https://lxk-221.github.io/media/projects/painting-robot/painting_point_generation.png" alt="喷涂点生成" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="基于喷涂可达地图的轨迹优化">基于喷涂可达地图的轨迹优化&lt;/h2>
&lt;p>本文提出了一种紧凑可达图和喷涂可达图，并基于这两图将喷涂轨迹生成问题构造为一个优化问题。&lt;/p>
&lt;h3 id="紧凑可达地图">紧凑可达地图&lt;/h3>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img src="https://lxk-221.github.io/media/projects/painting-robot/compact_reach_map.png" alt="紧凑可达图" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h3 id="喷涂可达地图">喷涂可达地图&lt;/h3>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img src="https://lxk-221.github.io/media/projects/painting-robot/painting_reach_map.png" alt="喷涂可达图" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h3 id="优化">优化&lt;/h3>
&lt;p>结合喷涂可达图的约束，可以将轨迹生成构造为一个凸优化问题进行求解
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img src="https://lxk-221.github.io/media/projects/painting-robot/simulation_result.png" alt="仿真结果（含门窗情况）" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="项目状态">项目状态&lt;/h2>
&lt;p>此项目仍在进行中&amp;hellip;&lt;/p>
&lt;h2 id="实验">实验&lt;/h2>
&lt;p>
&lt;figure id="figure-乳胶漆挂漆测试">
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img src="https://lxk-221.github.io/media/projects/painting-robot/single-spray.gif" alt="乳胶漆挂漆测试" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
乳胶漆挂漆测试
&lt;/figcaption>&lt;/figure>
&lt;figure id="figure-宽范围">
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img src="https://lxk-221.github.io/media/projects/painting-robot/wide-range.gif" alt="宽范围" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
宽范围
&lt;/figcaption>&lt;/figure>
&lt;/p></description></item><item><title>运输机器人</title><link>https://lxk-221.github.io/zh/project/006.transport-robot/</link><pubDate>Fri, 01 Sep 2023 00:00:00 +0000</pubDate><guid>https://lxk-221.github.io/zh/project/006.transport-robot/</guid><description>&lt;h2 id="概述">概述&lt;/h2>
&lt;p>本项目旨在为物料搬运比赛制作一个轻量级运输机器人。机器人需要从几个特定位置抓取物料并将它们运送到其他位置。物料放置越准确，处理的物料越多，用时越短，得分就越高。在这个项目中，我们设计了一个带有轻量级机械臂的移动机器人，并使用了两个2D相机，分别安装在机械臂末端执行器和机器人底盘侧面。我们使用视觉伺服策略来调整机械臂，以保证放置的准确性。&lt;/p>
&lt;p>在这个项目中，我负责底盘、机械臂和相机的控制。我使用基于RANSAC的方法来检测目标并对放置动作进行闭环控制。我还参与了机器人的设计，包括布局、机械臂类型的选择和搬运策略。&lt;/p>
&lt;h2 id="任务描述">任务描述&lt;/h2>
&lt;p>红、绿、蓝三种颜色的物料被放置在货架的不同位置。此外，货架上有与物料数量相同的二维码，每个二维码代表物料的目标位置。有了这些信息，机器人应该首先将这些物料抓取到机器人上，然后将它们运送到指定位置。&lt;/p>
&lt;p>另外，地面上的黑色网格允许我们使用灰度传感器进行机器人定位。&lt;/p>
&lt;p>对于放置，我们使用基于RANSAC的方法，根据安装在末端执行器上的相机来检测目标位置的中心。&lt;/p>
&lt;h2 id="我们机器人的最终版本">我们机器人的最终版本&lt;/h2>
&lt;p>这个视频展示了比赛的整个过程，正如我们所见，机器人使用视觉伺服策略来调整末端执行器并实现精确放置。
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/XEpZW4rSB-8?autoplay=0&amp;controls=1&amp;end=0&amp;loop=0&amp;mute=0&amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"
>&lt;/iframe>
&lt;/div>
&lt;/p>
&lt;h2 id="团队与小组">团队与小组&lt;/h2>
&lt;p>
&lt;figure id="figure-团队">
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img src="https://lxk-221.github.io/media/projects/transport-robot/Team.jpg" alt="团队照片" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
团队
&lt;/figcaption>&lt;/figure>
&lt;figure id="figure-小组">
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img src="https://lxk-221.github.io/media/projects/transport-robot/Large_Team.jpg" alt="小组照片" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
小组
&lt;/figcaption>&lt;/figure>
&lt;/p></description></item></channel></rss>