SLAM从入门到精通(用python实现机器人运动控制)

news2024/12/23 4:10:17

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        在ROS下面,开发的方法很多,可以是c++,可以是python。大部分接口操作类的应用,其实都可以用python来开发。或者如果想对某一类的算法、设备来验证,这个时候用python来开发也是ok的。当然如果是纯算法,或者最终是需要部署在嵌入式系统上面长期运行的,那么这个时候基本上只能选择c++了。下面我们就来谈一谈如何在ros环境下进行ros开发。

1、创建scripts目录

        假设我们有一个beginner_tutorials的package,这个时候首先需要创建一个scripts的目录。所有的python文件一般就安装在这个scripts目录里面。

2、编写python脚本文件

        这里,我们编写一个控制小车的脚本文件vel_node.py。它实现的功能和之前vel_node.cpp其实是一样的。只不过和c++版本相比较,python脚本本身不需要编译,使用起来更加地方便。

#!/usr/bin/env python3

import rospy
from geometry_msgs.msg import Twist

if __name__ == "__main__":
	rospy.init_node("vel_node")

	vel_pub = rospy.Publisher("cmd_vel", Twist, queue_size=10)

	vel_msg=Twist()
	vel_msg.linear.x = 0.1

	rate = rospy.Rate(30)
	while not rospy.is_shutdown():
		vel_pub.publish(vel_msg)
		rate.sleep()

        从代码内容上看其实并不复杂。首先代码中创建了一个node,接着生成一个vel_pub,发布的消息是vel_msg,最后就是用vel_pub将vel_msg周期性发送出去,这就是一个基本的ros python脚本操作。

3、设置vel_node.py属性

        编写好了vel_node.py,这个时候其实脚本还没有办法直接运行起来。需要用chmod +x vel_node.py运行一下,这样vel_node.py就变成可执行文件了。

4、开始测试

        测试的方法也非常简单。主要的动作有两步,第一步就是用roslaunch wpr_simulation wpb_simple.launch将gazebo的仿真场景运行起来。第二步,就是利用rosrun beginner_tutorials vel_node.py命令将脚本运行起来。我们需要观察一下此时此刻,小车是否真的动起来了。如果小车一切运行ok,那代表vel_node.py脚本发挥了作用了。反之,则要回过头去看下,我们编写的vel_node.py究竟是哪里出了问题。希望了解更多rospy知识点的同学,可以看看这个链接,

http://wiki.ros.org/rospy

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

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

相关文章

(五)激光线扫描-位移台标定

线激光属于主动测量方式,但是由于线激光的特性,我们只能通过提取激光中心线获取这一条线上的高度信息,那么要进行三维重建的话,就需要通过平移或者是旋转的方式,来让线激光扫描被测物体的完整轮廓,也就是整个表面。激光线的密度越高还原出来的物体越细腻,但由于数据量大…

计算机中丢失vcomp140.dll解决方案,可以使用这几个最新方法来修复

今天早上,当我打开电脑时,突然看到一个提示窗口,显示找不到 vcomp140.dll 文件。我一下子懵了,不知道这是怎么回事,也不知道如何解决这个问题。于是,我开始了寻找答案的旅程。 首先,我了解到 v…

<C++> 异常

C语言传统的处理错误的方式 传统的错误处理机制: 终止程序,如assert,缺陷:用户难以接受。如发生内存错误,除0错误时就会终止程序。返回错误码,缺陷:需要程序员自己去查找对应的错误。如系统的…

Autosar诊断实战系列21-UDS连续帧(CF)数据接收代码级分析

本文框架 前言1. 长帧数据的连续帧接收2. 连续帧的处理前言 在本系列笔者将结合工作中对诊断实战部分的应用经验进一步介绍常用UDS服务的进一步探讨及开发中注意事项, Dem/Dcm/CanTp/Fim模块配置开发及注意事项,诊断与BswM/NvM关联模块的应用开发及诊断capl测试脚本开发等诊…

计算机类毕业设计选题60套!太全了!快收藏!

💕💕作者:计算机源码社 💕💕个人简介:本人七年开发经验,擅长Java、Python、PHP、.NET、微信小程序、爬虫、大数据等,大家有这一块的问题可以一起交流! 💕&…

基于MDK-Keil环境如何把STM32程序直接下载到SRAM运行

1. 前言 对于 Cortex-M 内核的微控制器,它们都可以支持在 RAM 中执行程序,有些非 ARM 的微控制器是不支持的。 在内部 SRAM 执行程序,有基于以下几方面的原因: 1、所使用的设备可能具有OTP(One-time Programmable&a…

《CPU设计实战》第四章lab3记录找bug

修bug之路 1. debug_wb_pc 一个信号一个信号找下去&#xff0c;发现ID_stage.v中load_op未赋值 assign load_op inst_lw; 代码解释 module decoder_5_32(input [ 4:0] in,output [31:0] out ); //这个循环被命名为 gen_for_dec_5_32。 genvar i; generate for (i0; i<…

c++中的动态内存管理

目录 1.内存分布 2.c语言动态内存管理 3.c动态内存管理 4.operator new 与operator delete 函数 5.定位new 6.malloc/free 与 new/delete 的区别 1.内存分布 首先我们需要了解一下数据在内存中的分布&#xff0c;请看以下代码&#xff1a; int globalVar 1; static in…

Day 04 python学习笔记

Python数据容器 元组 元组的声明 变量名称&#xff08;元素1&#xff0c;元素2&#xff0c;元素3&#xff0c;元素4…….&#xff09; &#xff08;元素类型可以不同&#xff09; eg: tuple_01 ("hello", 1, 2,-20,[11,22,33]) print(type(tuple_01))结果&#x…

基于Java的4S店汽车商城系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

C++17中头文件filesystem的使用

C17引入了std::filesystem库(文件系统库, filesystem library)&#xff0c;相关类及函数的声明在头文件filesystem中&#xff0c;命名空间为std::filesystem。 1.path类&#xff1a;文件路径相关操作&#xff0c;如指定的路径是否存在等&#xff0c;其介绍参见&#xff1a;http…

STM32复习笔记(四):看门狗

目录 &#xff08;一&#xff09;简介 &#xff08;二&#xff09;IWDG IWDG的CUBEMX工程配置 IWDG相关函数&#xff08;非常少&#xff0c;所以直接贴上来&#xff09;&#xff1a; &#xff08;三&#xff09;WWDG &#xff08;一&#xff09;简介 看门狗分为独立看门…

【Java】微服务——Nacos注册中心

目录 1.Nacos快速入门1.1.服务注册到nacos1&#xff09;引入依赖2&#xff09;配置nacos地址3&#xff09;重启 2.服务分级存储模型2.1.给user-service配置集群2.2.同集群优先的负载均衡 3.权重配置4.环境隔离4.1.创建namespace4.2.给微服务配置namespace 5.Nacos与Eureka的区别…

[C++随想录] 优先级队列的模拟实现

优先级队列的模拟实现 底层结构初始化向下调整 && 向上调整push && poptop && empty && size源码 底层结构 namespace muyu {template <class T, class Continer std::vector<T>, class Compare less<T> >class priority_…

C#停车场管理系统

目录 一、绪论1.1内容简介及意义1.2开发工具及技术介绍 二、总体设计2.1系统总体架构2.2登录模块总体设计2.3主界面模块总体设计2.4停车证管理模块总体设计2.5停车位管理模块总体设计2.6员工管理模块总体设计2.7其他模块总体设计 三、详细设计3.1登录模块设计3.2主界面模块设计…

力扣:119. 杨辉三角 II(Python3)

题目&#xff1a; 给定一个非负索引 rowIndex&#xff0c;返回「杨辉三角」的第 rowIndex 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;力扣&#xff08;LeetCode&#xff09…

【Linux】ping命令详解

目录 一、ping概述 二、Ping用法 三、ping参数详解 四、使用 五、Wireshark抓取ICMP请求应答消息 一、ping概述 ping 命令用于测试与目标主机之间的连接。它向目标主机发送一个ICMP&#xff08;Internet Control Message Protocol&#xff09;Internet控制报文协议回显请求…

fetch前后端通信

fetch 前后端通信&#xff1a;ajax。 4步走&#xff1a; let xhrnew XMLHttpRequest() xhr.open(get,http://xxx) xhr.onreadystatechange xhr.send() 常用库&#xff1a; jQuery -> 回调地狱 axios fetch&#xff1a;网络获取资源 与Ajax的不同&#xff1a; 网络故障或请求…

激光雷达中实现F-P标准具高热稳定性的帕尔贴精密温控解决方案

摘要&#xff1a;法布里-珀罗标准具作为一种具有高温度敏感性的精密干涉分光器件&#xff0c;在具体应用中对热稳定性具有很高的要求&#xff0c;如温度波动不能超过0.01℃&#xff0c;为此本文提出了相应的高精度恒温控制解决方案。解决方案具体针对温度控制精度和温度均匀性控…

指针笔试题(带解析版)

题目2&#xff1a; struct MyStruct {int num;char* pcname;short sdate;char cha[2];short sba[4]; }*p; //结构体大小为32字节 //p0x100000 int main() {p 0x100000;printf("%p\n", p 0x1);//p&#xff1a;结构体指针&#xff0c;1下一个结构体指针&#xff0c;…