机器人运动控制

一、基础

1.1 矢量速度和旋转速度

矢量速度用来控制运动方向,任何一个方向都可以看成x、y、z三轴方向的合。单位规定是m/s。

旋转速度用来控制旋转方向,可以看成x、y、z三轴方向旋转的合。单位规定是pi/s。

速度消息包,可以在ROS Index上搜索到。

 

它里面有很多消息类型,其中Twist就是速度消息包。

消息包中有两种数据类型linear、angular,他俩又都是三维向量。

1.2 节点话题设置

首先有一个机器人核心节点,他能直接控制机器人。再设置一个速度控制节点,一个速度控制话题。速度控制节点可以通过速度控制话题向机器人核心节点发送消息。消息类型是Twist。

二、机器人运动控制的C++实现

实现思路

step1:创建新的软件包。其中geometry_msgs是速度消息包所需要的依赖。

step2:在软件包中创建vel_node节点,节点中创建发布者对象vel_pub,再创建while循环,让发布对象不停的发布消息。

step3:在软件包目录下的CMakeList.txt文件中,找到build,添加以下三行代码。

第一行是”声明C++可执行文件“,也就是使用指定的源文件来生成目标可执行文件。参数1:可执行目标文件的名字,在一个cmake工程中,这个名字必须全局唯一。参数2:源文件地址。

第二行是添加可执行文件的cmake目标依赖。参数:可执行目标文件的名字。

第三行是指定库、可执行文件的链接库。参数:可执行目标文件的名字。

step3:编译+运行

三、机器人运动的python实现

step1:新建软件包

step2:在软件包中新建一个文件夹script,在这个文件夹里创建速度控制节点vel_node.py。

step3:python脚本首先要填加以下代码。若是ubuntu18.04以及以前的版本添加python解释器;若是ubuntu20.04添加python3解释器。第二行是指定编码格式。

step4:不用编译,给python脚本添加可执行权限即可。进入python脚本所在文件夹查看文件,若py脚本是白色的,则说明他是没有可执行权限。我们可以使用chmod来给他添加可执行权限。再次查看就变成绿色的了。

step5:运行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/782737.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

助力福建新型职业农民培育 北方天途推进无人机植保应用培训

为加强新型职业农民的职业培育,扩展新型农民的知识范围和专业技术水平,推进农业供给侧结构性改革。日前,在农业部门的大力支持下,北方天途航空和宁德天禾科技服务携手为福建省农民朋友开展了植保无人机驾驶员的应用培训。福建省农…

同步复位和异步复位的优缺点

同步复位 优点:能确保电路是100%的; 同步复位可以综合处更小的触发器; 可以保证复位只发生在有效时钟边沿,过滤掉复位信号毛刺; 内部逻辑产生的复位信号,采用同步复位可以有效过滤掉毛刺。 缺点&#xff1a…

网页布局案例 浮动

这里主要讲浮动 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><style>*{padding: 0;margin: 0;}.header{height: 40px;background-color: #333;}.nav{width: 1226px;heig…

深入理解数据结构(2):顺序表和链表详解

文章主题&#xff1a;顺序表和链表详解&#x1f331;所属专栏&#xff1a;深入理解数据结构&#x1f4d8;作者简介&#xff1a;更新有关深入理解数据结构知识的博主一枚&#xff0c;记录分享自己对数据结构的深入解读。&#x1f604;个人主页&#xff1a;[₽]的个人主页&#x…

单片机串口通过查询接收数据,同时具备接收超时、异常判断,常规通用处理算法实现

单片机串口通过查询接收数据,同时具备接收超时、异常判断,常规通用处理算法实现;1、实现过程 (1)初始化串口:首先,需要配置串口的基本参数,如波特率、数据位、停止位和校验位等。这通常涉及到GPIO引脚的配置(如PA2为发送引脚,PA3为接收引脚),以及USART的初始化。 …

Day38 动态规划

Day38 动态规划 509. 斐波那契数 我的思路&#xff1a; 很简单的递归 解答&#xff1a; class Solution {public int fib(int n) {if(n 0 || n 1) {return n;}return fib(n - 1) fib(n - 2);} }70. 爬楼梯 我的思路&#xff1a; 看了题解才明白本质上还是第一题的斐波那…

机器学习——降维算法-奇异值分解(SVD)

机器学习——降维算法-奇异值分解&#xff08;SVD&#xff09; 在机器学习中&#xff0c;降维是一种常见的数据预处理技术&#xff0c;用于减少数据集中特征的数量&#xff0c;同时保留数据集的主要信息。奇异值分解&#xff08;Singular Value Decomposition&#xff0c;简称…

csp资料

头文件 #include <bits/stdc.h> using namespace std isdigit(c); isalpha(c); switch(type){case value : 操作 } continue;//结束本轮循环 break;//结束所在的整个循环tips: //除法变乘法来算 //减法变加法 num1e42;//"1e4"表示10的4次方//用于移除容器中相…

某国投集团知识竞赛活动方案

一、抽签分组办法 1.抽签&#xff1a;参赛队伍赛前进行抽签分组。 2.分组&#xff1a;全部报名参赛队伍按照抽签顺序分为4组&#xff0c;每组7支队伍进行预赛&#xff0c;9月16日上午1、2组进行初赛&#xff0c;9月16日下午3、4组进行初赛。每组决出的前三名进入决赛。 二、初…

蓝桥杯2014年第十三届省赛真题-切面条

一、题目 切面条 一根高筋拉面&#xff0c;中间切一刀&#xff0c;可以得到2根面条。 如果先对折1次&#xff0c;中间切一刀&#xff0c;可以得到3根面条。 如果连续对折2次&#xff0c;中间切一刀&#xff0c;可以得到5根面条。 那么&#xff0c;连续对折10次&#xff0c;中间…

并查集进阶——带权并查集

带权并查集是在并查集的基础上加入数组来记录某些值&#xff0c;比如说当前家族的人数 原理也较简单&#xff0c;直接在合并时相加赋值就可以了&#xff0c;但是不要忘记初始化 例题一.合并家族 给定一个数n&#xff0c;代表总人数&#xff0c;一开始每个人自己是一家&#x…

二维码门楼牌管理应用平台建设:引领现代化小区管理新篇章

文章目录 前言一、二维码门楼牌管理应用平台概述二、三维动态单体化技术的优势三、二维码门楼牌管理应用平台的应用场景四、展望未来 前言 随着城市化的快速推进&#xff0c;现代化小区如雨后春笋般涌现&#xff0c;对小区管理的效率和智能化提出了更高要求。二维码门楼牌管理…

代码随想录Day39

Day 39 动态规划 part02 今日任务 62.不同路径 不同路径 II 代码实现 62.不同路径 public int uniquePaths(int m, int n) {if (m < 1 || n< 1) return 1;int[][] dp new int[m][n];for (int i 0; i < dp.length; i) {for (int j 0; j < dp[i].length; j) …

鸿蒙OS开发实例:【瀑布流式图片浏览】

介绍 瀑布流式展示图片文字&#xff0c;在当前产品设计中已非常常见&#xff0c;本篇将介绍关于WaterFlow的图片浏览场景&#xff0c;顺便集成Video控件&#xff0c;以提高实践的趣味性 准备 请参照[官方指导]&#xff0c;创建一个Demo工程&#xff0c;选择Stage模型熟读Har…

【算法】基数排序

简介 基数排序&#xff08;*Radix sort&#xff09;是一种非比较排序算法&#xff08;non-comparative sorting algorithm&#xff09;。现代计算机的基数排序算法由 计数排序 算法的开发人哈罗德H西华德&#xff08;Harold H. Seward&#xff09;于1954年于麻省理工大学开发。…

智能换气系统的设计与实现

智能换气系统的设计与实现 摘要&#xff1a; 随着现代家居对室内空气质量要求的日益提高&#xff0c;智能换气系统成为了确保室内环境舒适与健康的关键技术。本文详细探讨了智能换气系统的设计与实现过程&#xff0c;该系统结合了传感器技术、微控制器技术和智能控制算法&…

vue.router和vue.route

Vue Router 和 Vue Route 是 Vue.js 中用于构建单页面应用&#xff08;SPA&#xff09;路由系统的两个核心概念。Vue Router 是 Vue.js 的官方路由管理器&#xff0c;而 Vue Route 则是在 Vue 组件内部通过 $route 对象来访问当前路由的信息。 Vue Router 的使用 Vue Router …

图像分割论文阅读:Automatic Polyp Segmentation via Multi-scale Subtraction Network

这篇论文的主要内容是介绍了一种名为多尺度差值网络&#xff08;MSNet&#xff09;的自动息肉分割方法。 1&#xff0c;模型整体结构 整体结构包括编码器&#xff0c;解码器&#xff0c;编码器和解码器之间是多尺度差值模块模块&#xff08;MSM&#xff09;&#xff0c;以及一…

【前端】-

相对路径和绝对路径是描述文件位置的两种方式。 1. 相对路径&#xff1a;相对于自己的目标文件的位置&#xff0c;以引用文件之间网页所在位置为参考基础&#xff0c;而建立出的目录路径。因此&#xff0c;当保存于不同目录的网页引用同一个文件时&#xff0c;所使用的路径将不…

带头双向循环链表的实现及注释教学

首先需要借助三个文件 test.c list.h list.c 目录 list.h list.c test.c list.h 用于声明函数及创建结构体、包含头文件 #pragma once #include<stdio.h> #include<stdlib.h> #include<assert.h> #include<stdbool.h>typedef int LTDa…