ROS Industrial教程(七)_笛卡尔规划和执行2

2024-04-28 04:58

本文主要是介绍ROS Industrial教程(七)_笛卡尔规划和执行2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

加载参数

在本练习中,我们将加载一些ROS参数以初始化程序中的重要变量。

定位练习源文件

·转到位于plan_and_run/src/plan_and_run_node.cpp中的主应用程序源文件。

·在主程序中,找到对application.loadParameters()的函数调用。

·转到位于plan_and_run/src/tasks/load_parameters.cpp中的该函数的源文件。 另外,在Eclipse中,您可以单击函数的任何部分,然后按“ F2”以调出该文件。

·注释掉包含ROS_ERROR_STREAM ...条目的第一行,以使该函数不会立即退出。

 

完成代码

·查找以/* Fill Code:开头的注释块并按说明完成。

·相应地替换[ COMPLETE HERE ]的每个实例。

 

构建与运行

·cd进入catkin工作区并运行catkin build

catkin build --cmake-args -G 'CodeBlocks - Unix Makefiles'

source ./devel/setup.bash

 

·然后运行应用程序启动文件:

roslaunch plan_and_run demo_setup.launch

roslaunch plan_and_run demo_run.launch

 

 

API参考

ros::NodeHandle

NodeHandle::getParam()

 

 

初始化ROS

在本练习中,我们将初始化应用程序所需的ros组件,以便与MoveIt!及系统的其他部分通信。

定位练习源文件

·转到位于plan_and_run/src/plan_and_run_node.cpp中的主应用程序源文件。

·在主程序中,找到对application.initRos()的函数调用。

·转到位于plan_and_run/src/tasks/init_ros.cpp中的该函数的源文件。或者,在QTCreator中,单击函数的任何部分,然后按“ F2”以调出该文件。

·注释掉包含ROS_ERROR_STREAM ...条目的第一行,以使该函数不会立即退出。

 

完成代码

·观察ros Publisher的marker_publisher_变量是如何初始化的。 节点使用它来发布visualization_msgs::!MarkerArray消息,以可视化RViz中的轨迹。

·使用ExecuteTrajectoryAction类型初始化moveit_run_path_client_ptr_操作客户端。

·查找以/* Fill Code:开头的注释块并按说明完成。

·相应地替换[ COMPLETE HERE ]的每个实例。

 

构建与运行

·cd进入catkin工作区并运行catkin build

·然后运行应用程序启动文件:

roslaunch plan_and_run demo_run.launch

 

 

API参考

visualization_msgs::MarkerArray

NodeHandle::serviceClient()

 

 

初始化笛卡尔

此练习包括设置笛卡尔机器人模型和路径规划器,我们的节点将使用该模型和路径规划器来从工具的半约束轨迹规划路径。

定位练习源文件

·转到位于plan_and_run/src/plan_and_run_node.cpp中的主应用程序源文件。

·在主程序中,找到对application.initDescartes()的函数调用。

·转到位于plan_and_run/src/tasks/init_descartes.cpp中的该函数的源文件。或者,在QTCreator中,单击函数的任何部分,然后按“ F2”以调出该文件。

·注释掉包含ROS_ERROR_STREAM ...条目的第一行,以使该函数不会立即退出。

 

完成代码

·调用descartes_core :: RobotModel :: initialize()方法以正确初始化机器人。

·同样,通过将robot_model_变量传递到descartes_core::!DensePlanner::initialize()方法来初始化Descartes计划器。

·查找以/* Fill Code:开头的注释块并按说明完成。

·相应地替换[ COMPLETE HERE ]的每个实例。

 

构建与运行

·cd进入catkin工作区并运行catkin build

·然后运行应用程序启动文件:

roslaunch plan_and_run demo_run.launch

 

API参考

descartes_core::RobotModel descartes_planner::DensePlanner

 

移动到初始位姿

此练习将使用MoveIt!移动机械臂。

定位练习源文件

·转到位于plan_and_run/src/plan_and_run_node.cpp中的主应用程序源文件。

·在主程序中,找到对application.moveHome()的函数调用。

·转到位于plan_and_run/src/tasks/move_home.cpp中的该函数的源文件。或者,在QTCreator中,单击函数的任何部分,然后按“ F2”以调出该文件。

·注释掉包含ROS_ERROR_STREAM ...条目的第一行,以使该函数不会立即退出。

 

完成代码

·使用MoveGroupInterface :: move()方法将机器人移动到目标。

·moveit_msgs :: MoveItErrorCodes结构包含可在调用move()函数后用来检查结果的常量。

·查找以/* Fill Code:开头的注释块并按说明完成。

·相应地替换[ COMPLETE HERE ]的每个实例。

 

构建与运行

·cd进入catkin工作区并运行catkin build

·然后运行应用程序启动文件:

roslaunch plan_and_run demo_run.launch

 

API参考

setNamedTarget()

MoveGroupInterface class

 

 

生成半约束轨迹

在本练习中,我们将通过一系列笛卡尔姿势创建笛卡尔轨迹。 每个点将绕工具的z轴具有旋转自由度。

定位练习源文件

·转到位于plan_and_run/src/plan_and_run_node.cpp中的主应用程序源文件。

·在主程序中,找到对application.generateTrajectory()的函数调用。

·转到位于plan_and_run/src/tasks/generate_trajectory.cpp中的该函数的源文件。或者,在QTCreator中,单击函数的任何部分,然后按“ F2”以调出该文件。

·注释掉包含ROS_ERROR_STREAM ...条目的第一行,以使该函数不会立即退出。

 

完成代码

·观察如何调用“ createLemniscate()”以生成轨迹的工具的所有姿态。 然后使用其中的姿势创建笛卡尔轨迹。

·使用AxialSymmetric构造函数来指定一个绕z轴具有旋转自由度的点。

·AxialSymmetricPt :: FreeAxis :: Z_AXIS枚举常量允许您将Z指定为自由旋转轴

·查找以/* Fill Code:开头的注释块并按说明完成。

·相应地替换[ COMPLETE HERE ]的每个实例。

 

 

构建与运行

·cd进入catkin工作区并运行catkin build

·然后运行应用程序启动文件:

roslaunch plan_and_run demo_run.launch

 

API参考

descartes_trajectory::AxialSymmetricPt

 

规划机器人路径

在本练习中,我们会将轨迹传递给笛卡尔计划器,以计划机器人路径。

定位练习源文件

·转到位于plan_and_run/src/plan_and_run_node.cpp中的主应用程序源文件。

·在主程序中,找到对application.planPath()的函数调用。

·转到位于plan_and_run/src/tasks/plan_path.cpp中的该函数的源文件。或者,在Eclipse中,单击函数的任何部分,然后按“ F2”以调出该文件。

·注释掉包含ROS_ERROR_STREAM ...条目的第一行,以使该函数不会立即退出。

 

完成代码

·观察AxialSymmetricPt :: getClosestJointPose()的使用,以获取最接近某一关节姿态的机器人的关节值。 此外,此步骤允许我们为起点和终点选择单个关节姿势,而不是多个有效的关节配置。

·调用DensePlanner :: planPath()方法以计算运动计划。

·当规划成功时,请使用DensePlanner :: getPath()方法从规划器中检索路径并将其保存到output_path变量中。

·查找以/* Fill Code:开头的注释块并按说明完成。

·相应地替换[ COMPLETE HERE ]的每个实例。

 

构建与运行

·cd进入catkin工作区并运行catkin build

·然后运行应用程序启动文件:

roslaunch plan_and_run demo_run.launch

 

API参考

descartes_planner::DensePlanner

 

运行机器人路径

在本练习中,我们将笛卡尔路径转换为MoveIt!轨迹,然后将其发送给机器人。

定位练习源文件

·转到位于plan_and_run/src/plan_and_run_node.cpp中的主应用程序源文件。

·在主程序中,找到对application.runPath()的函数调用。

·转到位于plan_and_run/src/tasks/run_path.cpp中的该函数的源文件。或者,在QTCreator中,单击函数的任何部分,然后按“ F2”以调出该文件。

·注释掉包含ROS_ERROR_STREAM ...条目的第一行,以使该函数不会立即退出。

 

完成代码

·查找以/* Fill Code:开头的注释块并按说明完成。

·相应地替换[ COMPLETE HERE ]的每个实例。

 

构建与运行

·cd进入catkin工作区并运行catkin build

·然后运行应用程序启动文件:

roslaunch plan_and_run demo_run.launch

 

API参考

MoveGroupInterface::move()

这篇关于ROS Industrial教程(七)_笛卡尔规划和执行2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/942370

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

动态规划---打家劫舍

题目: 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 思路: 动态规划五部曲: 1.确定dp数组及含义 dp数组是一维数组,dp[i]代表

软考系统规划与管理师考试证书含金量高吗?

2024年软考系统规划与管理师考试报名时间节点: 报名时间:2024年上半年软考将于3月中旬陆续开始报名 考试时间:上半年5月25日到28日,下半年11月9日到12日 分数线:所有科目成绩均须达到45分以上(包括45分)方可通过考试 成绩查询:可在“中国计算机技术职业资格网”上查询软考成绩 出成绩时间:预计在11月左右 证书领取时间:一般在考试成绩公布后3~4个月,各地领取时间有所不同

poj 2976 分数规划二分贪心(部分对总体的贡献度) poj 3111

poj 2976: 题意: 在n场考试中,每场考试共有b题,答对的题目有a题。 允许去掉k场考试,求能达到的最高正确率是多少。 解析: 假设已知准确率为x,则每场考试对于准确率的贡献值为: a - b * x,将贡献值大的排序排在前面舍弃掉后k个。 然后二分x就行了。 代码: #include <iostream>#include <cstdio>#incl

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

maven 编译构建可以执行的jar包

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」👈,「stormsha的知识库」👈持续学习,不断总结,共同进步,为了踏实,做好当下事儿~ 专栏导航 Python系列: Python面试题合集,剑指大厂Git系列: Git操作技巧GO

代码随想录冲冲冲 Day39 动态规划Part7

198. 打家劫舍 dp数组的意义是在第i位的时候偷的最大钱数是多少 如果nums的size为0 总价值当然就是0 如果nums的size为1 总价值是nums[0] 遍历顺序就是从小到大遍历 之后是递推公式 对于dp[i]的最大价值来说有两种可能 1.偷第i个 那么最大价值就是dp[i-2]+nums[i] 2.不偷第i个 那么价值就是dp[i-1] 之后取这两个的最大值就是d

沁恒CH32在MounRiver Studio上环境配置以及使用详细教程

目录 1.  RISC-V简介 2.  CPU架构现状 3.  MounRiver Studio软件下载 4.  MounRiver Studio软件安装 5.  MounRiver Studio软件介绍 6.  创建工程 7.  编译代码 1.  RISC-V简介         RISC就是精简指令集计算机(Reduced Instruction SetCom

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2