当前位置: 首页 > news >正文

网站开发 职位网站建设后应该干什么

网站开发 职位,网站建设后应该干什么,美发培训网站,wordpress json rest Limo Pro 小车建图导航 引言 前景提要#xff1a;我们在上文介绍了使用LIMO cobot 实现一个能够执行复杂任务的复合机器人系统的应用场景的项目#xff0c;从以下三个方面#xff1a;概念设计、系统架构以及关键组件。 本文主要深入项目内核的主要部分#xff0c;同样也主要…Limo Pro 小车建图导航 引言 前景提要我们在上文介绍了使用LIMO cobot 实现一个能够执行复杂任务的复合机器人系统的应用场景的项目从以下三个方面概念设计、系统架构以及关键组件。 本文主要深入项目内核的主要部分同样也主要分为三个部分机械臂的视觉抓取LIMO Pro在ROS中的功能建图导航避障等以及两个系统的集成。 设备准备 myCobot 280 M5stackmyCobot Adaptive GrippermyCobot Camera Flange 2.0LIMO PRO 机械臂视觉抓取 这是机械臂安装 Adaptive Gripper和 camera flange 2.0之后的样子。 我们是用的camera flange 2.0是一款2D的相机他并不能够依靠他相机本身来获取到一个物体的三维长宽高但我们可以使用标记物来获得到目标物体的都长宽高。常见的有ArUcoSTagAR码AprilTags。今天我们用STag算法来做视觉识别。 STag标记系统 STag是一个为了高稳定性和精确的三位定位而设计的标记系统。它特别适用于环境中有遮挡和光照变化的情况。 下面有一个视频展示了STag标记码ARToolKitArUcoRUNE-Tag码在同一个环境下的识别效果。 https://www.youtube.com/watch?vvnHI3GzLVrY 可以从视频中看出来STag对环境变化的强大适应性和在复杂场景下的高可靠性使其成为在要求高精度跟踪和定位的应用中的首选。还有一篇论文专门讲解STag稳定的基准标记系统感兴趣的可以自己点击链接去了解一下。 https://arxiv.org/abs/1707.06292 STag系统可以是适配与ROS有ROS软件包用的是c编写的也能够支持python进行使用。 C/ROS:GitHub - bbenligiray/stag: STag: A Stable Fiducial Marker System PythonGitHub - ManfredStoiber/stag-python: Python Package for STag - A Stable, Occlusion-Resistant Fiducial Marker System 用python 简单写一个例子 import cv2 import stag import numpy as np# 加载相机参数 camera_params  np.load(camera_params.npz) mtx, dist  camera_params[mtx], camera_params[dist]# 初始化STag检测器 stag_detector  stag.detectMarkers(mtx, dist)# 初始化视频捕获 cap  cv2.VideoCapture(0) while cap.isOpened():ret, frame  cap.read()if not ret:break# 应用相机校正可选frame_undistorted  cv2.undistort(frame, mtx, dist, None, mtx)# 检测STag标记(corners, ids, rejected_corners)  stag.detectMarkers(frame_undistorted, 21)# 绘制检测到的标记及其IDstag.drawDetectedMarkers(frame_undistorted, corners, ids)# 绘制被拒绝的候选区域颜色设为红色stag.drawDetectedMarkers(frame_undistorted, rejected_corners, border_color(255, 0, 0))# 显示结果cv2.imshow(STag Detection, frame_undistorted)if cv2.waitKey(1) 0xFF ord(q):breakcap.release() cv2.destroyAllWindows() 标记了STag码之后可以获得标记码四个角的参数 (array([[[257., 368.],[185., 226.],[345., 162.],[420., 302.]]], dtypefloat32),) 给定坐标过后可以用opencv的‘cv2.solvePnP函数来计算标记相对于相机的旋转和偏移量。这个函数需要标记的3D坐标在物理世界中的位置和相应的2D图像坐标即检测到的角点以及相机的内参和畸变系数。solvePnP会返回旋转向量rvec和平移向量tvec它们描述了从标记坐标系到相机坐标系的转换。这样就可以根据这些参数计算出标记的位置和朝向。 以下是伪代码方便理解 def estimate_pose(corners):#Do some calculations with PnP, camera rotation and offsetreturn rvectvecdef convert_pose_to_arm_coordinates(rvec, tvec):# 将旋转向量和平移向量转换为机械臂坐标系统中的x, y, z, rx, ry, rzreturn x, y, z, rx, ry, rzdef convert_grab(object_coord_list):#Do some calculations to convert the coordinates into grasping coordinates for the robotic armreturn grab_positioncap  cv2.VideoCapture(0) while cap.isOpened():ret, frame  cap.read()if not ret:breakmaker  (corners, ids, rejected_corners)  stag.detectMarkers(image, 21)rvec, tvec  stag.estimate_pose(marker)object_coord_list  convert_pose_to_arm_coordinates(rvec, tvec)grab_position  convert_grab(object_coord_list)mycobot.move_to_position(grab_position) 机械臂控制 以上的代码就是大概的抓取的流程比较复杂的部分解决了接下来我们处理机械臂的运动控制,用到的是pymycobot库 from pymycobot import MyCobot#Create an instance and link the robotic arm mc  MyCobot(com3,115200)#Control the robotic arm with angle mc.send_angles(angles_list,speed)#Control the robotic arm using coordinates mc.send_coords(coords_list,speed,mode)#Control gripper,value-0~100 mc.set_gripper_value(value,speed) 因为机械臂的开放接口比较多我们只需要使用坐标控制夹爪控制就好了。 Limo Pro 建图导航 完成了机械臂抓取部分的功能接下来我们要实现小车的建图导航模块了。 首先我们要见图有了地图之后才能够在地图上进行导航定点巡航等一些的功能目前有多种建图的算法因为我们搭建的场景并不是很大环境相对于静态我们选择使用gmapping算法来实现。 建图 Gmapping是基于滤波SLAM框架的常用开源SLAM算法。Gmapping有效利用了车轮里程计信息对激光雷达的频率要求不高在构建小场景地图时所需的计算量较小且精度较高。这里通过使用ROS封装了的GMapping功能包来实现limo的建图。 注以下的功能都是封装好的可以直接使用 首先需要启动雷达打开一个新终端在终端中输入命令 roslaunch limo_bringup limo_start.launch pub_odom_tf:false 然后启动gmapping建图算法打开另一个新终端在终端中输入命令 roslaunch limo_bringup limo_gmapping.launch 成功启动之后会打开rviz可视化工具这时候看到的界面如图 这时候就可以把手柄调为遥控模式控制limo建图了。 构建完地图之后需要运行以下命令把地图保存到指定目录 1、切换到需要保存地图的目录下这里把地图保存到~/agilex_ws/src/limo_ros/limo_bringup/maps/在终端中输入命令 cd ~/agilex_ws/src/limo_ros/limo_bringup/maps/ 2、切换到/agilex_ws/limo_bringup/maps 之后继续在终端中输入命令 rosrun map_server map_saver -f map1 map1为保存地图的名称保存地图时应避免地图的名称重复 导航 前面我们用了gmapping来进行建图我们现在来进行导航。导航的关键是机器人定位和路径规划两大部分。针对这两个核心,ROS提供了以下两个功能包。 1move_base实现机器人导航中的最优路径规划。 2amcl实现二维地图中的机器人定位。 在上述的两个功能包的基础上ROS提供了一套完整的导航框架 机器人只需要发布必要的传感器信息和导航的目标位置,ROS即可完成导航功能。在该框架中,move_base功能包提供导航的主要运行、交互接口。为了保障导航路径的准确性,机器人还要对自己所处的位置进行精确定位,这部分功能由amcl功能包实现。 在导航的过程中运用了两种算法DWA和TEB算法这两种算法分别处理全局路径和局部路径规划来保证小车能够安全的前进到目的地避免与障碍物发生碰撞。 1首先启动雷达在终端中输入命令 roslaunch limo_bringup limo_start.launch pub_odom_tf:false 2启动导航功能在终端中输入命令 roslaunch limo_bringup limo_navigation_diff.launch 启动成功之后会打开rviz界面如图 我们需要把刚才建的地图给导进去请打开limo_navigation_diff.launch 文件修改参数, 文件所在目录为~/agilex_ws/src/limo_ros/limo_bringup/launch。把map02修改为需要更换的地图名称。 开启导航之后会发现激光扫描出来的形状和地图没有重合需要我们手动校正在rviz中显示的地图上矫正底盘在场景中实际的位置通过rviz中的工具发布一个大概的位置给limo一个大致的位置然后通过手柄遥控limo旋转让其自动校正当激光形状和地图中的场景形状重叠的时候校正完成。操作步骤如图  校正完成后 通过2D Nav Goal 设置导航目标点 路径巡检 如果要在一条路上来回运动的话我们要启用路径巡检功能后续会使用上这个功能。 1首先启动雷达开启一个新的终端在终端中输入命令 roslaunch limo_bringup limo_start.launch pub_odom_tf:false 2启动导航功能开启一个新的终端在终端中输入命令 roslaunch limo_bringup limo_navigation_diff.launch 注如果是阿克曼运动模式请运行 roslaunch limo_bringup limo_navigation_ackerman.launch 3启动路径记录功能开启一个新的终端在终端中输入命令 roslaunch agilex_pure_pursuit record_path.launch 路径记录结束之后终止路径记录程序在终端中输入命令为Ctrlc 4启动路径巡检功能开启一个新的终端在终端中输入命令 注把手柄调至指令模式 roslaunch agilex_pure_pursuit pure_pursuit.launch 两个系统的集成 上面分布完成了myCobot机械臂视觉的抓取LIMO的建图导航路径巡检功能现在我们需要把它们集成在ROS系统上。我们预设的场景是LIMO进行定点的巡检当遇到了标志物的时候停止运动等待机械臂执行抓取物体完成之后LIMO移动到下一个点位。 功能节点分布 在ROSRobot Operating System中实现一个功能的流程涉及到多个步骤和组件包括节点nodes、话题topics、服务services、参数服务器parameter server和动作actions。根据ROS的功能节点架构我们确定了节点的分布和它们交互的方式 1. 图像识别节点Image Recognition Node 职责持续接收来自摄像头的图像流使用图像识别算法如OpenCV或深度学习模型来检测特定的标记物。输入来自摄像头的图像流。输出当检测到标记物时发布一个消息到一个特定的话题如/marker_detected。 2. 控制节点Control Node 职责管理机器人的移动包括启动、停止和继续巡检。输入订阅/marker_detected话题以监听图像识别节点的输出。也可能订阅一个专门用于接收手动控制指令的话题如/control_commands。输出向机器人底层控制系统如驱动电机的节点发送控制命令。 3. 任务执行节点Task Execution Node 职责执行遇到标记物后的特定任务这些任务可以是数据采集、状态报告等。输入监听来自控制节点的指令这些指令指示何时开始执行任务。输出任务完成的状态反馈可能会发送到控制节点或一个专门的状态话题如/task_status。 4. 导航和路径规划节点Navigation and Path Planning Node 职责处理机器人的路径规划和导航逻辑确保机器人可以在环境中安全移动。输入接收来自控制节点的指令用于启动、停止或调整导航路径。输出向机器人底层控制系统发送导航指令如目标位置、速度和方向。 总结 这个场景算是初步完成了其实还可以添加许多细节的比如说在行径的过程中增添一些移动的障碍物又或者设定一个红绿灯之类的物体更加接近真实的场景。如果你们觉得有什么需要改善的地方又或者说你想用 LIMO cobot 来做一些什么尽管畅所欲言你的回复和点赞就是我们更新最大的动力
http://www.dnsts.com.cn/news/207399.html

相关文章:

  • 中国网站免费服务器wordpress自定义添加meta模块
  • php网站开发是学什么的青岛公司网页设计
  • 怎么建设投票网站ui设计论文
  • 网站开发市场调查国家建设执业注册中心网站
  • 0基础建设网站上海企业登记全程电子化服务平台
  • wordpress网站如何与关联苏州营销型网站建设哪家好
  • 更新网站要怎么做呢工业设计软件有哪些软件
  • 景泰做网站做影视网站侵权吗
  • 成都网站设计苏州好的做网站的公司有哪些
  • 网站制作可以询价么北京注册公司地址可以是住宅吗
  • 烟台建设集团 招聘信息网站做企业网站多少钱
  • 昆明集团网站建设有什么做海报的网站吗
  • 做欧美贸易的主要有哪些网站网络规划的主要步骤
  • 如何建设一个普通网页网站重庆网上房地产查询
  • 济南建站公司模板微信订阅号做微网站吗
  • google网站收录跨境电商的特点
  • 修改公司网站怎么自己制作网站链接
  • 电子商务搭建网站红色 网站配色
  • wordpress能做什么网站云服务器和虚拟主机有什么区别
  • 流量网站建设教程一个空间如何做多个网站
  • 吉林科技网站建设wordpress彩色提示框
  • 房地产项目网站建设红包网站开发
  • 云南建设厅网站监理员培训厦门网站建设2015
  • 大学 建网站广州网站建设集团
  • 西塞山区建设局网站网站建设开发ppt模板下载
  • html源码网站建设中网站开发实用案例教程
  • 网站建设外贸合肥优秀网站建设
  • 全国文明网联盟网站建设百度一下百度一下
  • 冀州网站制作网站建设工作总结
  • 建设网站的页面设计建设信用卡申请官方网站