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

ROS2学习笔记1-起步的程序

ROS2学习笔记1-起步的程序

  • 写在前面
  • 一、环境的安装
    • 主机的选择:
    • 操作系统
    • 安装指令
  • 二、最简单的起步示例
    • 1. ROS2 官方教程
    • 2. TurtleSim 示例
      • launch:
      • key server
      • vscode 启动python脚本

写在前面

已经学习一段时间了,短短续续有两周了。首先说,体验并不是很好。
首先,第一个教训是最好用实体机,不要用vmware装个ubuntu.

一、环境的安装

主机的选择:

  1. 最好是实体机 ,不要采用vmware;因为cursor支持x-windows并不太好。vscode相对好一点。另外,Gazebo,并不是工程化的有多么好,所以,与vmware的显卡,配合的相当不好。

操作系统

官方要求是ubuntu 22.04 ,所以我装的是22.04.5, 感觉似乎不太好,最好选稍旧一点的。例如,22.04.3之类的

安装指令

sudo apt install ros-humble-desktop
sudo apt install python3-colcon-common-extensions
sudo apt install ros-humble-gazebo-ros-pkgs
sudo apt install ros-humble-ros2-control ros-humble-ros2-controllers
sudo apt install ros-humble-moveit
sudo apt install ros-humble-nav2-bringup

二、最简单的起步示例

1. ROS2 官方教程

ROS2 的官方文档提供了一系列入门示例,非常适合初学者。你可以从以下几个经典示例开始:

  • “Hello World” 示例:发布和订阅消息
    • 创建一个简单的发布者(Publisher)和订阅者(Subscriber),通过话题(Topic)发送和接收消息。
    • 官方教程链接:Writing a simple publisher and subscriber (Python)
    • 适合学习基本的节点通信。
  • 服务(Service)示例
    • 实现一个简单的服务端和客户端,例如加法运算服务。
    • 教程链接:Writing a simple service and client (Python)
    • 适合理解请求-响应模型。
  • 动作(Action)示例
    • 实现一个简单的动作客户端和服务端,例如倒计时任务。
    • 教程链接:Writing an action server and client (Python)
    • 适合学习长时间运行的任务管理。

2. TurtleSim 示例

TurtleSim 是一个轻量级的模拟器,常用于 ROS 和 ROS2 的入门学习。它提供了一个二维乌龟机器人,可以通过键盘或代码控制移动。

  • 安装 TurtleSim

    sudo apt install ros-humble-turtlesim

  • 运行示例

    • 启动 TurtleSim:
      ros2 run turtlesim turtlesim_node
    • 控制乌龟移动:
      ros2 run turtlesim turtle_teleop_key
  • 编程练习

    • 编写一个节点,通过发布 /turtle1/cmd_vel 话题控制乌龟画圆或走直线。
    • 示例代码(Python):
python
import rclpy
from rclpy.node import Node
from geometry_msgs.msg import Twist

class TurtleController(Node):
    def __init__(self):
        super().__init__('turtle_controller')
        self.publisher = self.create_publisher(Twist, '/turtle1/cmd_vel', 10)
        self.timer = self.create_timer(0.5, self.move_turtle)

    def move_turtle(self):
        msg = Twist()
        msg.linear.x = 1.0  # 前进速度
        msg.angular.z = 1.0  # 旋转速度
        self.publisher.publish(msg)

def main():
    rclpy.init()
    node = TurtleController()
    rclpy.spin(node)
    rclpy.shutdown()

if __name__ == '__main__':
    main()

具体:

launch:

root@ros:~# ros2 run turtlesim turtlesim_node
[INFO] [1743909730.765376988] [turtlesim]: Starting turtlesim with node name /turtlesim
[INFO] [1743909730.772274808] [turtlesim]: Spawning turtle [turtle1] at x=[5.544445], y=[5.544445], theta=[0.000000]
qt.qpa.xcb: QXcbConnection: XCB error: 145 (Unknown), sequence: 181, resource id: 0, major code: 139 (Unknown), minor code: 20

在这里插入图片描述

key server

ros2 run turtlesim turtle_teleop_key
Reading from keyboard
---------------------------
Use arrow keys to move the turtle.
Use G|B|V|C|D|E|R|T keys to rotate to absolute orientations. 'F' to cancel a rotation.
'Q' to quit.

vscode 启动python脚本

在这里插入图片描述
然后小乌龟,开始转圈。


文章转载自:

http://NxpTMLSE.tdqhs.cn
http://zPO1iYYq.tdqhs.cn
http://bsTl7cJt.tdqhs.cn
http://4nMUvpEz.tdqhs.cn
http://vzAmI06X.tdqhs.cn
http://oiUDLeEv.tdqhs.cn
http://TmBlU30D.tdqhs.cn
http://uKYFtUEQ.tdqhs.cn
http://alh2knEv.tdqhs.cn
http://KZOrr9W8.tdqhs.cn
http://UN0WpbMG.tdqhs.cn
http://bieNtxSa.tdqhs.cn
http://zoCD7aus.tdqhs.cn
http://u3nWsN8h.tdqhs.cn
http://wznTq6AB.tdqhs.cn
http://ieE3Weym.tdqhs.cn
http://xgRxPrJy.tdqhs.cn
http://nvimRatR.tdqhs.cn
http://KIzo69G0.tdqhs.cn
http://Ib3hF9jW.tdqhs.cn
http://3ZwEgrto.tdqhs.cn
http://kRCWjKDK.tdqhs.cn
http://Rl0gFVyb.tdqhs.cn
http://nmox5mzt.tdqhs.cn
http://72tyIzDP.tdqhs.cn
http://hETkN7co.tdqhs.cn
http://yFaz0Ipy.tdqhs.cn
http://Jffvd1j9.tdqhs.cn
http://9ufLQnJZ.tdqhs.cn
http://peUTP0b7.tdqhs.cn
http://www.dtcms.com/a/116298.html

相关文章:

  • JVM 垃圾回收器是如何判断一个对象是否要回收?
  • 使用NVM下载Node.js管理多版本
  • Logo语言的扩展运算符
  • Linux学习笔记——零基础详解:什么是Bootloader?U-Boot启动流程全解析!
  • leetcode刷题日记—— Z 字形变换
  • BGP路由协议之属性2
  • RabbitMQ运维
  • 面试常被问道OSPF的问题
  • 针对Qwen-Agent框架的源码阅读与解析:FnCallAgent与ReActChat篇
  • uniapp小程序登录失效后操作失灵问题
  • 电脑有时出现检测不到音箱设备怎么办?
  • redis学习笔记
  • JS 事件委托
  • 数据结构值ST表的详细讲解浅显易懂
  • WPF插入背景图
  • 代码随想录+leetcode学习笔记
  • 负载均衡是什么,Kubernetes如何自动实现负载均衡
  • Dubbo(35)如何优化Dubbo的网络通信?
  • leetcode376-摆动序列
  • 【Spring Cloud Netflix】GateWay服务网关
  • CISCO路由器配置DHCP及中继
  • Android学习总结之service篇
  • Linux file命令
  • Linux Terminal Mode | canonical / nocanonical / cbreak / raw
  • 【35期获取股票数据API接口】如何用Python、Java等五种主流语言实例演示获取股票行情api接口之沪深A股当天分价成交占比数据及接口API说明文档
  • 结构化需求分析:专业方法论与实践
  • 简单线程池实现
  • PDF转安卓APP软件, 支持加密添加一机一码, 静态密码, 保护APK版权使用说明和CSDN文库下载
  • [C++面试] explicit关键字面试点总结
  • 安装nfs客户端(centos)