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

买域名网站专业商城网站设计制作

买域名网站,专业商城网站设计制作,微信公众号编辑 导入wordpress,新闻发稿渠道目录 0 专栏介绍1 动作通信模型2 动作模型实现(C)3 动作模型实现(Python)4 自定义动作 0 专栏介绍 本专栏旨在通过对ROS2的系统学习#xff0c;掌握ROS2底层基本分布式原理#xff0c;并具有机器人建模和应用ROS2进行实际项目的开发和调试的工程能力。 #x1f680;详情)3 动作模型实现(Python)4 自定义动作 0 专栏介绍 本专栏旨在通过对ROS2的系统学习掌握ROS2底层基本分布式原理并具有机器人建模和应用ROS2进行实际项目的开发和调试的工程能力。 详情《ROS2从入门到精通》 1 动作通信模型 在ROS2中动作通信机制提供了一种用于执行长时间运行任务的方式由三个部分组成 目标(goal)对客户端的请求进行处理和响应反馈(feedback)对监控任务的动作执行过程提供反馈数据结果(result)对监控任务的执行结果提供反馈 举个机器人导航的任务说明 假设有一个机器人需要从起始点导航到目标点。通过使用动作通信机制可以定义一个导航动作其中目标是目标位置。机器人将发送导航目标给动作服务器服务器将返回连续的反馈例如机器人的当前位置障碍物检测等。最终当机器人到达目标位置时服务器将返回导航任务的结果。 再比如机械臂控制 通过定义动作目标和提供连续的反馈可以实现对机械臂的精确控制。例如可以定义一个动作来控制机械臂移动到特定位置反馈可以包括当前位置、力传感器的读数等。一旦机械臂到达目标位置服务器将返回控制任务的结果 动作是应用级通信机制建立在话题和服务之上但却与话题和服务通信不同 动作通信更适合描述一项任务的执行过程而话题通信更适合传输实时数据;动作通信返回一系列的反馈和一个最终结果而服务通常只返回单个响应;动作通信是可中断的即在执行过程中可以取消而服务通信通常是一次性的请求-响应模式;… 总之通过使用动作通信可以实现更复杂的交互和反馈并灵活地处理长时间运行的任务 2 动作模型实现(C) 实验目标客户端提交请求给turtlesim功能包的/rotate_absolute动作在界面上使乌龟旋转并不断监听乌龟的实时旋转数据以及到达目标角度的反馈。 服务器 本实验中无需编程,为turtlesim::Action定义的/rotate_absolute服务 客户端 注册一个客户端client_ptr_ rclcpp_action::create_clientTurtleAction(get_node_base_interface(),get_node_graph_interface(),get_node_logging_interface(),get_node_waitables_interface(),/turtle1/rotate_absolute );定义目标响应回调函数void OnGoalResponseCallback(GoalHandle::SharedPtr goal_message) {if (!goal_message) {RCLCPP_ERROR(get_logger(), Client: Goal was rejected by server);rclcpp::shutdown();} elseRCLCPP_INFO(get_logger(), Client: Goal accepted by server, waiting for result); }定义过程反馈回调函数void OnFeedbackCallback(GoalHandle::SharedPtr, const std::shared_ptrconst TurtleAction::Feedback feedback_message) {std::stringstream ss;ss Client: Received feedback: feedback_message-remaining;RCLCPP_INFO(this-get_logger(), %s, ss.str().c_str()); }定义结果回调函数void OnResultCallback(const GoalHandle::WrappedResult result_message) {switch (result_message.code) {case rclcpp_action::ResultCode::SUCCEEDED:break;case rclcpp_action::ResultCode::ABORTED:RCLCPP_ERROR(get_logger(), Client: Goal was aborted);rclcpp::shutdown();return;case rclcpp_action::ResultCode::CANCELED:RCLCPP_ERROR(get_logger(), Client: Goal was canceled);rclcpp::shutdown();return;default:RCLCPP_ERROR(get_logger(), Client: Unknown result code);rclcpp::shutdown();return;}RCLCPP_INFO(get_logger(), Client: Result received: %.2f, (result_message.result-delta));rclcpp::shutdown(); }实验结果如下所示在本实验中theta表示发送的目标角度remaining是过程反馈的目标角度差值信息delta是结果响应表示距离初始位置的角度偏差 3 动作模型实现(Python) 实验目标客户端提交请求给turtlesim功能包的/rotate_absolute动作在界面上使乌龟旋转并不断监听乌龟的实时旋转数据以及到达目标角度的反馈。 服务器 本实验中无需编程,为turtlesim::Action定义的/rotate_absolute服务 客户端 注册一个客户端self.client_ ActionClient(self, RotateAbsolute, /turtle1/rotate_absolute)定义目标响应回调函数def OnGoalResponseCallback(self, future):goal_handle future.result() if not goal_handle.accepted: self.get_logger().info(Client: Goal was rejected by server)returnself.get_logger().info(Client: Goal accepted by server, waiting for result)self._get_result_future goal_handle.get_result_async()self._get_result_future.add_done_callback(self.OnResultCallback)定义过程反馈回调函数def OnFeedbackCallback(self, feedback_msg):feedback feedback_msg.feedbackself.get_logger().info(fReceived feedback: {feedback.remaining:.2f}) 定义结果回调函数def OnResultCallback(self, future):if future.done():self.get_logger().info(fAction done!)result future.result().resultself.get_logger().info(fResult: {result.delta:.2f})elif future.cancelled():self.get_logger().info(fClient: Goal was canceled)else:raise RuntimeWarning(Client: Unknown result code) 实验结果如下所示在本实验中theta表示发送的目标角度remaining是过程反馈的目标角度差值信息delta是结果响应表示距离初始位置的角度偏差 4 自定义动作 自定义动作的通用流程如下 功能包下新建action文件夹在其中添加自定义服务xxx.action,注意目标、反馈和结果数据结构使用---分割功能包package.xml中添加编译依赖与执行依赖buildtool_dependrosidl_default_generators/buildtool_depend exec_dependrosidl_default_runtime/exec_depend member_of_grouprosidl_interface_packages/member_of_group功能包CMakeLists.txt中添加编译消息相关依赖find_package(rosidl_default_generators REQUIRED) rosidl_generate_interfaces(${PROJECT_NAME}xxx.actionDEPENDENCIES xxx_actions )ament_export_dependencies(rosidl_default_runtime)编译自定义动作在install/pkg_name/include中生成由xxx.action编译的C可识别的xxx.hpp头文件引入xxx.hpp即可调用自定义动作 下面给出一个实例 实现一个自定义动作请求机器人开始圆周运动反馈机器人的实时运动角度并返回最终结果 添加如下自定义动作并按上面步骤配置依赖 bool enable # goal --- bool finish # result --- int32 state # feedback定义一个服务器、一个客户端限于篇幅只贴出部分代码完整代码见文末。 服务器class OwnActionServerNode : public rclcpp::Node {public:using OwnAction own_action_lab::action::MoveCircle;using GoalHandle rclcpp_action::ServerGoalHandleOwnAction;explicit OwnActionServerNode(const rclcpp::NodeOptions action_server_options rclcpp::NodeOptions()): Node(own_action_server, action_server_options) {action_server_ rclcpp_action::create_serverOwnAction(get_node_base_interface(),get_node_clock_interface(),get_node_logging_interface(),get_node_waitables_interface(),/move,std::bind(OwnActionServerNode::OnHandleGoal, this, std::placeholders::_1, std::placeholders::_2),std::bind(OwnActionServerNode::OnHandleCancel, this, std::placeholders::_1),std::bind(OwnActionServerNode::OnHandleAccepted, this, std::placeholders::_1));} }客户端class OwnActionClientNode : public rclcpp::Node {public:using OwnAction own_action_lab::action::MoveCircle;using GoalHandle rclcpp_action::ClientGoalHandleOwnAction;explicit OwnActionClientNode(const rclcpp::NodeOptions node_options rclcpp::NodeOptions()): Node(own_action_client, node_options) {client_ptr_ rclcpp_action::create_clientOwnAction(get_node_base_interface(),get_node_graph_interface(),get_node_logging_interface(),get_node_waitables_interface(),/move);} }实测效果如下 完整代码通过下方博主名片联系获取 更多精彩专栏 《ROS从入门到精通》《Pytorch深度学习实战》《机器学习强基计划》《运动规划实战精讲》… 源码获取 · 技术交流 · 抱团学习 · 咨询分享 请联系
http://www.zqtcl.cn/news/772101/

相关文章:

  • 网站开发答辩难点网站返回按钮设计
  • 鹤壁做网站优化建设银行理财产品网站
  • 电子商务类网站模板自学网站建设基本流程
  • 无锡网站制作的公司上海企业服务公司
  • 做h5小程序的网站搜索引擎营销案例
  • 订餐网站开发方案查询网站是否正规
  • 建站论坛图片生成器免费
  • 怎么做自己的店铺网站博物馆门户网站建设优势
  • 专业旅游培训网站建设应用之星 wordpress
  • 青海媒体网站建设公司深圳网站建设推广优化公司
  • 网站开发 价格跨境支付互联互通
  • 织梦 修改网站logo营销型网站设计的内容
  • 电商网站运营策划做网站CentOS还是win好
  • 小型企业网站模板企业网站seo点击软件
  • 提供邯郸企业建网站网站图片上怎么做弹幕效果
  • 滨州做网站的wordpress如何添加商桥
  • 网站登录密码忘记网站开发营业执照申请
  • 电商网站设计思路音乐推广平台有哪些
  • 网站建设傲鸿网站链轮内有死链
  • 哪些网站可以做微商品牌宣传网站怎么不花钱做排名 知乎
  • 上传了网站源码怎么做wordpress加百度广告代码出问题
  • 哪些网站做推广vi设计说明模板
  • 杭州市建设工程造价管理协会网站攀枝花建设工程质量监督站投诉网站
  • 做网站推广送什么深圳的网站建设公司流程
  • 中国网站开发的前景制作公司主页网站
  • 在线画流程图的网站购物网站的设计与实现论文
  • 淘宝客cms网站建设K12网站怎么建设
  • 专业门户网站开发浙江省湖州艺术与设计学校官网
  • 企业网站搭建价格搭建平台的另一种说法
  • 网站开发框架桂林人论坛风姿摄影