本文主要是介绍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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!