当前位置: 首页 > 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脚本

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

相关文章:

  • 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服务网关
  • 泉州软件开发公司/图片seo优化是什么意思
  • 做旅游平台网站找哪家好/搜索引擎调词工具
  • 肥城网站建设/企业网络营销策划案例
  • 网站建设考试题/长沙谷歌seo
  • 做房产抵押网站需要什么手续费/网站主页
  • 做品牌网站怎么样/湖南企业seo优化推荐