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

相关文章

java中ssh2执行多条命令的四种方法

《java中ssh2执行多条命令的四种方法》本文主要介绍了java中ssh2执行多条命令的四种方法,包括分号分隔、管道分隔、EOF块、脚本调用,可确保环境配置生效,提升操作效率,具有一定的参考价值,感... 目录1 使用分号隔开2 使用管道符号隔开3 使用写EOF的方式4 使用脚本的方式大家平时有没有遇到自

全网最全Tomcat完全卸载重装教程小结

《全网最全Tomcat完全卸载重装教程小结》windows系统卸载Tomcat重新通过ZIP方式安装Tomcat,优点是灵活可控,适合开发者自定义配置,手动配置环境变量后,可通过命令行快速启动和管理... 目录一、完全卸载Tomcat1. 停止Tomcat服务2. 通过控制面板卸载3. 手动删除残留文件4.

mybatis直接执行完整sql及踩坑解决

《mybatis直接执行完整sql及踩坑解决》MyBatis可通过select标签执行动态SQL,DQL用ListLinkedHashMap接收结果,DML用int处理,注意防御SQL注入,优先使用#... 目录myBATiFBNZQs直接执行完整sql及踩坑select语句采用count、insert、u

Python的pandas库基础知识超详细教程

《Python的pandas库基础知识超详细教程》Pandas是Python数据处理核心库,提供Series和DataFrame结构,支持CSV/Excel/SQL等数据源导入及清洗、合并、统计等功能... 目录一、配置环境二、序列和数据表2.1 初始化2.2  获取数值2.3 获取索引2.4 索引取内容2

python依赖管理工具UV的安装和使用教程

《python依赖管理工具UV的安装和使用教程》UV是一个用Rust编写的Python包安装和依赖管理工具,比传统工具(如pip)有着更快、更高效的体验,:本文主要介绍python依赖管理工具UV... 目录前言一、命令安装uv二、手动编译安装2.1在archlinux安装uv的依赖工具2.2从github

C#实现SHP文件读取与地图显示的完整教程

《C#实现SHP文件读取与地图显示的完整教程》在地理信息系统(GIS)开发中,SHP文件是一种常见的矢量数据格式,本文将详细介绍如何使用C#读取SHP文件并实现地图显示功能,包括坐标转换、图形渲染、平... 目录概述功能特点核心代码解析1. 文件读取与初始化2. 坐标转换3. 图形绘制4. 地图交互功能缩放

一个Java的main方法在JVM中的执行流程示例详解

《一个Java的main方法在JVM中的执行流程示例详解》main方法是Java程序的入口点,程序从这里开始执行,:本文主要介绍一个Java的main方法在JVM中执行流程的相关资料,文中通过代码... 目录第一阶段:加载 (Loading)第二阶段:链接 (Linking)第三阶段:初始化 (Initia

SpringBoot集成redisson实现延时队列教程

《SpringBoot集成redisson实现延时队列教程》文章介绍了使用Redisson实现延迟队列的完整步骤,包括依赖导入、Redis配置、工具类封装、业务枚举定义、执行器实现、Bean创建、消费... 目录1、先给项目导入Redisson依赖2、配置redis3、创建 RedissonConfig 配

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

Java实现远程执行Shell指令

《Java实现远程执行Shell指令》文章介绍使用JSch在SpringBoot项目中实现远程Shell操作,涵盖环境配置、依赖引入及工具类编写,详解分号和双与号执行多指令的区别... 目录软硬件环境说明编写执行Shell指令的工具类总结jsch(Java Secure Channel)是SSH2的一个纯J