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

做spa会所网站做网站策划一个专利的主题宣传

做spa会所网站,做网站策划一个专利的主题宣传,网站建设 长沙百姓网,17网站模板接口 通信双方统一规定好接口。比如图像 img#xff0c;控制运动的线速度和角速度…… 我们也不用了解具体实现#xff0c;基本就是了解接口会去用就行。 $ ros2 interface list # 展示所有 interfaces $ ros2 interface show ... # 显示具体一个 interface $ ros2 package…接口 通信双方统一规定好接口。比如图像 img控制运动的线速度和角速度…… 我们也不用了解具体实现基本就是了解接口会去用就行。 $ ros2 interface list # 展示所有 interfaces $ ros2 interface show ... # 显示具体一个 interface $ ros2 package show ... # 查看一个 package 里所有的 interface添加接口 不是说我们写一个接口文件就算添加好了我们也要通过读取文件。 在 CMakeList.txt 中可以看到 rosidl_generate_interfaces(${PROJECT_NAME}msg/ObjectPosition.msgsrv/AddTwoInts.srvsrv/GetObjectPosition.srvaction/MoveCircle.action)指从相应的相对目录文件中找接口。 在文件中使用对应接口时则需要先引入 from File_Path import interface_name这个引入文件的路径位于系统生成的 .py 文件中编译成功即生成。 后面创建对象的时候就可以使用接口了。 动作 比如想让小乌龟转一圈我们需要不停发送指令根据当前状态调整指令在一定条件时取消指令。使用动作比这样一点点写服务方便得多。 实际使用的时候我们也很少直接用话题和服务都是用封装好的动作接口。 动作就是可以一边发运动指令一边收到反馈信息。 实现方法还是基于话题和服务话题是服务端比如要控制运动的机器人周期性反馈当前状态服务是客户端给服务端发的指令请求。 比如打开小乌龟打开键盘控制后我们可以尝试发送如下指令 $ ros2 action send_goal /turtle1/rotate_absolute turtlesim/action/RotateAbsolute {theta: 3.14} $ ros2 action send_goal /turtle1/rotate_absolute turtlesim/action/RotateAbsolute {theta: 0} --feedback 在接口中可以看到动作接口的三部分发起动作的目标动作完成的结束标志动作的反馈状态。 添加动作 前面的步骤和添加接口一样编写对应 .action 文件在 CMakeList.txt 中添加。 服务端在程序里注意如何添加 action_server import rclpy # ROS2 Python接口库 from rclpy.node import Node # ROS2 节点类 from rclpy.action import ActionServer # ROS2 动作服务器类 from learning_interface.action import MoveCircle # 自定义的圆周运动接口class MoveCircleActionServer(Node):def __init__(self, name):super().__init__(name) # ROS2节点父类初始化self._action_server ActionServer( # 创建动作服务器接口类型、动作名、回调函数self,MoveCircle,move_circle,self.execute_callback)def execute_callback(self, goal_handle): # 执行收到动作目标之后的处理函数self.get_logger().info(Moving circle...)feedback_msg MoveCircle.Feedback() # 创建一个动作反馈信息的消息for i in range(0, 360, 30): # 从0到360度执行圆周运动并周期反馈信息feedback_msg.state i # 创建反馈信息表示当前执行到的角度self.get_logger().info(Publishing feedback: %d % feedback_msg.state)goal_handle.publish_feedback(feedback_msg) # 发布反馈信息time.sleep(0.5)goal_handle.succeed() # 动作执行成功result MoveCircle.Result() # 创建结果消息result.finish True return result # 反馈最终动作执行的结果def main(argsNone): # ROS2节点主入口main函数rclpy.init(argsargs) # ROS2 Python接口初始化node MoveCircleActionServer(action_move_server) # 创建ROS2节点对象并进行初始化rclpy.spin(node) # 循环等待ROS2退出node.destroy_node() # 销毁节点对象rclpy.shutdown() # 关闭ROS2 Python接口反馈函数每30度标记一次发布反馈信息。 客户端先启动然后发送动作请求并注册自己的回调函数、收到目标后的回调函数。 from rclpy.action import ActionClient # ROS2 动作客户端类from learning_interface.action import MoveCircle # 自定义的圆周运动接口class MoveCircleActionClient(Node):def __init__(self, name):super().__init__(name) # ROS2节点父类初始化self._action_client ActionClient( # 创建动作客户端接口类型、动作名self, MoveCircle, move_circle) def send_goal(self, enable): # 创建一个发送动作目标的函数goal_msg MoveCircle.Goal() # 创建一个动作目标的消息goal_msg.enable enable # 设置动作目标为使能希望机器人开始运动self._action_client.wait_for_server() # 等待动作的服务器端启动self._send_goal_future self._action_client.send_goal_async( # 异步方式发送动作的目标goal_msg, # 动作目标feedback_callbackself.feedback_callback) # 处理周期反馈消息的回调函数self._send_goal_future.add_done_callback(self.goal_response_callback) # 设置一个服务器收到目标之后反馈时的回调函数def goal_response_callback(self, future): # 创建一个服务器收到目标之后反馈时的回调函数goal_handle future.result() # 接收动作的结果if not goal_handle.accepted: # 如果动作被拒绝执行self.get_logger().info(Goal rejected :()returnself.get_logger().info(Goal accepted :)) # 动作被顺利执行self._get_result_future goal_handle.get_result_async() # 异步获取动作最终执行的结果反馈self._get_result_future.add_done_callback(self.get_result_callback) # 设置一个收到最终结果的回调函数 def get_result_callback(self, future): # 创建一个收到最终结果的回调函数result future.result().result # 读取动作执行的结果self.get_logger().info(Result: {%d} % result.finish) # 日志输出执行结果def feedback_callback(self, feedback_msg): # 创建处理周期反馈消息的回调函数feedback feedback_msg.feedback # 读取反馈的数据self.get_logger().info(Received feedback: {%d} % feedback.state) def main(argsNone): # ROS2节点主入口main函数rclpy.init(argsargs) # ROS2 Python接口初始化node MoveCircleActionClient(action_move_client) # 创建ROS2节点对象并进行初始化node.send_goal(True) # 发送动作目标rclpy.spin(node) # 循环等待ROS2退出node.destroy_node() # 销毁节点对象rclpy.shutdown() # 关闭ROS2 Python接口 发送动作请求成功了服务器端先发一个应答反馈触发的是 goal_response_callback 中的 ‘Goal accepted ’ 后续收到反馈信息是输出 (‘Received feedback: {%d}’ . $ ros2 run learning_action action_move_server [INFO] [1692636260.811751032] [action_move_server]: Moving circle... [INFO] [1692636260.812184742] [action_move_server]: Publishing feedback: 0 [INFO] [1692636261.313871989] [action_move_server]: Publishing feedback: 30 [INFO] [1692636261.817491663] [action_move_server]: Publishing feedback: 60 [INFO] [1692636262.319652946] [action_move_server]: Publishing feedback: 90 [INFO] [1692636262.822605205] [action_move_server]: Publishing feedback: 120 [INFO] [1692636263.325196016] [action_move_server]: Publishing feedback: 150 [INFO] [1692636263.826669745] [action_move_server]: Publishing feedback: 180 [INFO] [1692636264.328210660] [action_move_server]: Publishing feedback: 210 [INFO] [1692636264.829900461] [action_move_server]: Publishing feedback: 240 [INFO] [1692636265.331746904] [action_move_server]: Publishing feedback: 270 [INFO] [1692636265.833479902] [action_move_server]: Publishing feedback: 300 [INFO] [1692636266.335957841] [action_move_server]: Publishing feedback: 330$ ros2 run learning_action action_move_client [INFO] [1692636260.807239104] [action_move_client]: Goal accepted :) [INFO] [1692636260.815466218] [action_move_client]: Received feedback: {0} [INFO] [1692636261.315441690] [action_move_client]: Received feedback: {30} [INFO] [1692636261.820438299] [action_move_client]: Received feedback: {60} [INFO] [1692636262.320808661] [action_move_client]: Received feedback: {90} [INFO] [1692636262.827049792] [action_move_client]: Received feedback: {120} [INFO] [1692636263.326864092] [action_move_client]: Received feedback: {150} [INFO] [1692636263.827891348] [action_move_client]: Received feedback: {180} [INFO] [1692636264.332103011] [action_move_client]: Received feedback: {210} [INFO] [1692636264.831075874] [action_move_client]: Received feedback: {240} [INFO] [1692636265.332972986] [action_move_client]: Received feedback: {270} [INFO] [1692636265.834606029] [action_move_client]: Received feedback: {300} [INFO] [1692636266.337943178] [action_move_client]: Received feedback: {330} [INFO] [1692636266.848281638] [action_move_client]: Result: {1}
http://wiki.neutronadmin.com/news/108780/

相关文章:

  • 珠海微信网站网站开发的招标参数
  • 贵州省建设网站wordpress 主题 更新
  • 科技 杭州 网站建设小程序源码提取工具
  • 服装网站建设分析做图片为主的网站对服务器的要求
  • 南宁网站建设q479185700棒永久虚拟主机
  • 网站建设倒计时代码dm网站制作软件
  • 广东建设职业注册中心网站网站开发 外文文献
  • 班级网站建设主题公司网络组建工作方案
  • 网站开发需要什么基础只是wordpress和织梦架构
  • 天津市北辰区建设与管理局网站中国企业信息网官方网站
  • 辽宁建设工程信息网官网新网站入口网站建设推广重要性
  • 寿光网站建设m0536wordpress 主机服务主题
  • 金融网站开发wordpress怎样建立多站点
  • 建设厅安全证考试报名在哪个网站莆田制作网站企业
  • 做网站要多少网易邮箱163 com登录
  • 不是做有网站都叫狠狠wordpress会议
  • 网站页面不更新静海网站建设公司
  • 固镇网站建设哪家好网站seo优化方案策划书
  • 网站漂浮常州网站备案
  • 泰州营销型网站建设兰州网站建设q.479185700強
  • 网站建设zrhskj企业域名注册流程
  • 网站应该如何进行优化北京所有做招聘类网站建站公司
  • 自贡企业网站建设公司如何写网站开发的分析
  • 南山住房和建设局网站wordpress ajax登录
  • 萍乡建网站3d建模教程人物
  • 网站开发 运行及维护自己做的网页怎么发布
  • 建立网站需要多少钱 纠正错误湖南岚鸿wordpress上传小视频
  • 做兼职有哪些网站网站建设的前端开发和后端开发
  • 下载建设银行官方网站下载北碚区网站建设
  • 大型网站建设用什么系统好网站建站第十四课