在 ROS 2 中,可以使用 turtlesim 包来实现绘制圆形的功能。turtlesim 是一个简单的模拟器,常用于教学和演示基本的 ROS 概念。要在 turtlesim 中控制乌龟绘制一个圆形,需要发布恰当的线速度和角速度组合到 /turtle1/cmd_vel 主题。
想一想在scratch中和Python里面是怎么画圆的,就知道这里怎么画里,其实原理是一样的,只是控制的方法不太相同而已。
一.建立turtlesim_node
首先确保运行了turtlesim,这个在各大教程中都有,主要是这么几步:
ros2 run turtlesim turtlesim_node
这一步会建立一个turtle的视图,类似于python中的tkinter
二. 发布消息
接下来就是发布消息里,一般,我们会用teleop来控制乌龟的走向,但是teleop的延时太厉害,以至于画一个五角星可以耗费整整半小时。太难了,所以既然是几何概念,那么我们就用代码来实现。
1.建立包
当然,我还是设置在主目录下,在主目录下建立一个文件夹,叫做ROSproject。在这个文件夹下建立src,通过terminal进入文件夹
建立ros项目。
ros2 pkg create --build-type ament_python my_ros_py_package
然后进入 my_ros_py_package
建立circleNode.py
touch circleNode.py
现在的目录树是这样的:
└── my_ros_py_package
├── my_ros_py_package
│ ├── circleNode.py
│ └── __init__.py
├── package.xml
├── resource
│ └── my_ros_py_package
├── setup.cfg
├── setup.py
└── test
├── test_copyright.py
├── test_flake8.py
└── test_pep257.py
2.编写代码
在circleNode.py中写入以下代码
import rclpy
import math
from rclpy.node import Node
# from std_msgs.msg import String
from geometry_msgs.msg import Twist
class MinimalPublisher(Node):
def __init__