ROS实现机器人移动
开源项目
使用是github上六合机器人工坊的项目。
https://github.com/6-robot/wpr_simulation.git
机器人运动模型
运动模型如下所示:👇

机器人运动的消息包:



实现思路:👇

为什么要使用/cmd_vel话题。因为这个是约定俗成的,项目中订阅的就是这个话题,否则无法订阅到主题或者更改项目的订阅者的源码
使用catkin_create_pkg 命令开具工具包,切换到catkin_ws下的src目录
- catkin_create_pkg vel_pkg rospy roscpp geometry_msgs #要依赖于geometry_msgs消息包,之前是依赖于std_msgs标准信息包。
vel_node节点的cpp文件👇
#vel_node.cpp
#include<ros/ros.h>
#include<geometry_msgs/Twist.h>
int main(int argc, char *argv[])
{//初始化节点ros::init(argc,argv,"vel_node");ros::NodeHandle nh;ros::Publisher pub=nh.advertise<geometry_msgs::Twist>("/cmd_vel",10);//定义消息包geometry_msgs::Twist vel_msgs;vel_msgs.linear.x=0.2;vel_msgs.linear.y=0.3;vel_msgs.linear.z=0;vel_msgs.angular.x=0;vel_msgs.angular.y=0;vel_msgs.angular.z=0;ros::Rate r(30);
//开始持续发布消息
while(ros::ok())
{pub.publish(vel_msgs);r.sleep();}return 0;
}
备注:Cmakelist.txt文件末尾加上,vscode的编译规则👇
add_executable(vel_node src/vel_node.cpp)
add_dependencies(vel_node KaTeX parse error: Expected '}', got 'EOF' at end of input: {{PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
target_link_libraries(vel_node
${catkin_LIBRARIES}
)

成功运行

额外,对于Rviz使用篇幅较短,就附录在文章尾部。
Rviz简介:
- RViz是ROS的一个可视化工具,用于可视化和调试ROS中的数据。它允许你在三维空间中显示和查看ROS的各种数据,如传感器数据、机器人模型、路径规划结果等。
RViz的功能包括:
-
可视化传感器数据:你可以通过RViz查看激光雷达、摄像头、深度相机等传感器的实时数据。
-
可视化机器人模型:你可以在RViz中加载机器人模型,查看机器人在三维空间中的姿态、关节状态等。
-
可视化路径规划:RViz支持显示机器人的路径规划结果,包括全局路径和局部路径。
-
可视化地图:你可以在RViz中加载地图数据,查看机器人所在的环境。
-
可视化TF坐标变换:RViz可以显示ROS中的TF坐标变换关系,帮助你了解机器人各个部件之间的相对位置。
-
可视化标记:你可以在RViz中添加标记、箭头、文字等来可视化特定的信息。
使用命令:
rviz

如果你想添加模型,可以点击Add按钮

结果展示:

相关文章:
ROS实现机器人移动
开源项目 使用是github上六合机器人工坊的项目。 https://github.com/6-robot/wpr_simulation.git 机器人运动模型 运动模型如下所示:👇 机器人运动的消息包: 实现思路:👇 为什么要使用/cmd_vel话题。因为这…...
Dockerfile构建LNMP镜像
建立工作目录 [rootlocalhost ~]# mkdir lnmp [rootlocalhost ~]# cd lnmp/ 编写Dockerfile文件 [rootlocalhost lnmp]# vim Dockerfile [rootlocalhost lnmp]# ll 总用量 4 -rw-r--r--. 1 root root 774 8月 3 14:54 Dockerfile [rootlocalhost lnmp]# vim Dockerfile #基础…...
总结七大排序!
排序总览 外部排序:依赖硬盘(外部存储器)进行的排序。对于数据集合的要求特别高,只能在特定场合下使用(比如一个省的高考成绩排序)。包括桶排序,基数排序,计数排序,都是o…...
没有fastjson,rust怎么方便的解析提取复杂json呢?
在 Rust 中解析和提取复杂的 JSON 结构,你可以使用 serde_json 库来处理。 serde_json 提供了一组功能强大的方法来解析和操作 JSON 数据。 下面是一个示例,展示了如何解析和提取复杂的 JSON 结构: use serde_json::{Value, Result}; fn mai…...
Docker制作SpringBoot镜像
Dcokerfile目录 编写Dockerfile FROM openjdk:8 #发布到网上时只会把jar包和Dockerfile发布上去RUN mkdir -p /opt/javaCOPY app.jar /opt/java/app.jar #地址映射 #CMD ["--server.port8080"] #对外暴露端口(可以任意修改) EXPOSE 15009 #执行命令 #ENTRYPOINT [&q…...
力扣:53. 最大子数组和(Python3)
题目: 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 来源:力扣(LeetCode) 链接ÿ…...
利用appium抓取app中的信息
一、appium简介 二、appium环境安装 三、联调测试环境 四、利用appium自动控制移动设备并提取数据...
数据结构:双向链表的实现(C实现)
个人主页 : 个人主页 个人专栏 : 《数据结构》 《C语言》 文章目录 前言 一、实现思路1.节点的结构(ListNode)2.新节点的创建(BuyListNode)3.头结点的创建(ListCreate)4.双向链表的销毁(ListDestroy)5.双向链表的打印(ListPrint)6.双向链表的尾插(ListPu…...
linuxARM裸机学习笔记(4)----GPIO中断以及定时器中断实验
1.中断向量表 这个表里面存放的都是中断向量,中断服务程序的入口地址或存放中断服务程序的首地址成为中断向量。中断向量表是一系列中断服务程序入口地址组成的表,当某个中断触发的时候会自动跳转到中断向量表对应的中断服务程序的入口。 2.NVIC(内嵌向…...
第十二次CCF计算机软件能力认证
第一题:最小差值 给定 n 个数,请找出其中相差(差的绝对值)最小的两个数,输出它们的差值的绝对值。 输入格式 输入第一行包含一个整数 n。 第二行包含 n 个正整数,相邻整数之间使用一个空格分隔。 输出格式 …...
ceph pg inconsistent修复(unexpected clone)
问题概述: ceph -s 显示pg 10.17 inconsistent 且命令ceph pg repair 10.17无法修复,/var/log/ceph/cep-osd.3.log报错内容如下: pg 10.17 osd [3,4] 权威副本osd:3 repair 10.17 10:e889b16a:::rbd_data.88033092ad95.00000000…...
供求重构是产业互联网的核心 个体崛起是产业互联网的终点
文章开头提到的网约车市场缘何会出现这样的困境?其中一个很重要的原因在于,建构于互联网模式之下的供求关系业已走到了尽头,仅仅只是依靠撮合和中介,仅仅只是凭借平台和中心开始无法破解供求两端的矛盾和问题。如何解决这一问题&a…...
torchvision.datasets数据加载失败
torchvision.datasets数据加载失败 如何使用torchvision.datasets进行自动下载数据失败,可以使用手动下载数据 Ctrl点击可以进入相关包文件,查找下载地址:https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz 手动下载之后解压&#x…...
【UEC++学习】UE网络 - Replication、RPC
1. UE网络架构 (1)UE的网络架构是SC(Server - Client)的模式,这种模式的优势:这种模式让所有客户端都在服务器端进行安全验证,这样可以有效的防止客户端上的作弊问题。 (2ÿ…...
C语言案例 按序输出三个整数-02
题目:输入三个整数a,b,c,按从小到大的顺序输出 步骤一:定义程序的目标 编写一个C程序,随机输入三个整数,按照从小到大的顺序输出。 步骤二:程序设计 整个程序由三个模块组成,第一个为scanf输入函数模块&a…...
区块链实验室(16) - FISCO BCOS实验环境
经过多次重复,建立一个FISCO BCOS实验环境。该环境是一个VMWare虚拟机,能够启动FISCO BCOS自创建的4节点区块链,不必下载依赖包即可编译Fisco Bcos目标文件,安装有VsCode1.81版本。 启动4节点的Fisco Bcos区块链 启动控制台 编译…...
Java事件监听机制
这里写目录标题 先进行专栏介绍再插一句 开始喽事件监听机制分析观察者模式观察者模式由以下几个角色组成:观察者模式的工作流程如下:观察者模式的优点包括:观察者模式适用于以下场景:总结 事件监听机制的工作流程如下:…...
记一次ubuntu16误删libc.so.6操作的恢复过程
背景 操作系统:ubuntu16 glibc版本:2.23 修改原因: 经过一系列报错和手工构建之后,vulkansdk成功安装(起码运行./vulkansdu成功),在进行./vulkaninfo进行验证时,报错:…...
MAVLINK—C语言demoWindows版本
mavlink/examples/c/udp_example.c 在学习mavlink时准备学习一下官网的C语言example,发现是unix系统的,打算在Windows系统下尝试,于是将示例修改了一下。 #include <stdio.h> #include <errno.h> #include <string.h> #in…...
区块链实验室(15) - 编译FISCO BCOS的过程监测
首次编译开源项目,一般需要下载很多依赖包,尤其是从github、sourceforge等下载依赖包时,速度很慢,编译进度似乎没有一点反应,似乎陷入死循环,似乎陷入一个没有结果的等待。本文提供一种监测方法,…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
jmeter聚合报告中参数详解
sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...
4. TypeScript 类型推断与类型组合
一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式,自动确定它们的类型。 这一特性减少了显式类型注解的需要,在保持类型安全的同时简化了代码。通过分析上下文和初始值,TypeSc…...
协议转换利器,profinet转ethercat网关的两大派系,各有千秋
随着工业以太网的发展,其高效、便捷、协议开放、易于冗余等诸多优点,被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口,具有实时性、开放性,使用TCP/IP和IT标准,符合基于工业以太网的…...
C++_哈希表
本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说,直接开始吧! 一、基础概念 1. 哈希核心思想: 哈希函数的作用:通过此函数建立一个Key与存储位置之间的映射关系。理想目标:实现…...
