ROS2学习笔记1-起步的程序
- 写在前面
- 一、环境的安装
- 二、最简单的起步示例
-
- [1. ROS2 官方教程](#1. ROS2 官方教程)
- [2. TurtleSim 示例](#2. TurtleSim 示例)
-
- launch:
- [key server](#key server)
- [vscode 启动python脚本](#vscode 启动python脚本)
写在前面
已经学习一段时间了,短短续续有两周了。首先说,体验并不是很好。
首先,第一个教训是最好用实体机,不要用vmware装个ubuntu.
一、环境的安装
主机的选择:
- 最好是实体机 ,不要采用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
- 启动 TurtleSim:
-
编程练习:
-
编写一个节点,通过发布 /turtle1/cmd_vel 话题控制乌龟画圆或走直线。
-
示例代码(Python):
python
import rclpy
from rclpy.node import Node
from geometry_msgs.msg import Twistclass 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:
base
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
base
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脚本

然后小乌龟,开始转圈。