项目名称 | 实验二 ROS[Kinetic/Melodic/Noetic]架构及概念 | 成绩 | |||
内容:机器人操作系统文件系统级、计算图级、社区级、创建功能包并实现功能等 | |||||
实验记录(70分) 安装一个可用的 build-from-source 包: 在克隆之前,确保仍在 dev_ws/src 目录中。 $ cd ~/dev_ws/src $ git clone https://github.com/ros/ros_tutorials.git -b Kinetic/Melodic/Noetic-devel `# git clone -b <branch> <address>` 要查看 ros_tutorials 中的包,请输入命令: $ ls ros_tutorials 会发现有四个包:`roscpp_tutorials rospy_tutorials ros_tutorials turtlesim` 只有 **turtlesim** 是 ROS2 包 在运行 rosdep 之前,请确保您位于工作区根目录 (~/dev_ws) 中。 第一次运行`rosdep`,需要先运行`rosdep init`。 $ cd .. $ rosdep install --from-paths src --ignore-src -r -y 此命令会神奇地安装工作区中的软件包所依赖但计算机上缺少的所有软件包。 使用 colcon 构建工作区 不要忘记在构建之前获取 ROS 安装源,并确保位于工作区的根目录中(~/dev_ws)。 $ source /opt/ros/Kinetic/Melodic/Noetic/setup.bash $ colcon build --symlink-install 2023补充,现在ROS1、ROS2社区,除了机器人爱好者贡献的资料之外,引入了AI生成的内容。 所有的源码下载地址: https://labfile.oss.aliyuncs.com/courses/854/rosdemos_ws.zip 如果下载的是zip压缩包,使用如下命令解压缩: unzip 压缩包名/home/shiyanlou/src/ros_tutorials/turtlesim文件夹, 放到code/自己命名/src文件夹下。 解压完成后, 从网上下载一些自己喜欢机器人头像做成图标png格式大小45*45 然后,上传到蓝桥云课code文件夹下,移动到 /home/shiyanlou/Code/robot/src/turtlesim/images/ 打开代码:/home/shiyanlou/Code/robot/src/turtlesim/src/
图2.1: 需修改文件的路径和对应文件 找到如下代码片段:
将不用的代码注释,并添加自己的图标名。 进入到ros2_ws文件夹下,单击鼠标右键,打开终端! 注意路径zhangrelay@cslg:~/code/ros2_ws$ 输入如下命令: ros2 pkg prefix turtlesim 显示如下: /opt/ros/galactic 这是使用sudo apt install 安装后的默认功能包位置。输入如下命令看一看效果: ros2 run turtlesim turtlesim_node 导入自己的功能包(一定要在对应功能包目录下操作): source install/setup.bash 重复上述指令: ros2 pkg prefix turtlesim ros2 run turtlesim turtlesim_node 查看变化! 修改如下代码: 主要后面修改为自己的学号 #define DEFAULT_BG_R 0x45 #define DEFAULT_BG_G 0x56 #define DEFAULT_BG_B 0xff namespace turtlesim { TurtleFrame::TurtleFrame(rclcpp::Node::SharedPtr& node_handle, QWidget* parent, Qt::WindowFlags f) : QFrame(parent, f) , path_image_(500, 500, QImage::Format_ARGB32) , path_painter_(&path_image_) , frame_count_(0) , id_counter_(0) { setFixedSize(500, 500); setWindowTitle("TurtleSim-ros2-esp32@cslg-cjq-160919103"); 修改后保存!但是镜像会还原,将这个目录复制到windows盘的合适位置然后编译! 缺失功能包自动补装: rosdep install --from-paths src --ignore-src -r -y 出现如下提示: #All required rosdeps installed successfully 说明一切准备就绪,开始编译。 使用单线程编译,否则会出现死机等问题! colcon build --symlink-install 如果只编译turtlesim,并使用单线程,命令如下: colcon build --symlink-install --parallel-workers 1 --packages-select turtlesim 参数顺序和不要出现中文空格。 过程如下图(将标题栏加入学号,判断是否抄袭): 下载相关源码后,放到所需要的位置然后修改其为cocube,代码文件的位置: 路径: /home/shiyanlou/Code/robot/src/cocube/src/
图2.2: 需修改文件的路径和对应文件
回到robot文件夹下编译,使用catkin_make: 完成度100%并且不报错。
图2.3 编译没有任何问题 每一个终端都要在robot文件夹下输入: source devel/setup.zsh ,配置为自定义功能包 否则,如果不输入,则调用系统内置功能包。 新建标签页输入roscore,然后还要新建标签页输入run turtlesim turtlesim_node(注意:source devel/setup.zsh)
图2.4 cocubesim-cslg界面截图 贪吃蛇如下:
| |||||
思考题(30分):
首先,打开终端,输入命令“roscore”启动ROS核心。然后,在新的终端中输入命令“rosrun turtlesim turtlesim_node”启动turtlesim节点。接下来,打开新的终端,输入命令“rosrun turtlesim turtle_teleop_key”启动键盘遥控节点。此时,你可以使用键盘上的方向键来控制机器人的运动。按下“Ctrl + C”可以停止节点的运行。
图2.5 键盘控制的终端
图2.6 键盘遥控机器人运动轨迹如上图 2 这是一个开环控制,下图可以说明:
图2.7 单向控制,没有闭环 |
AI:
蓝桥云课ROS机器人实验报告-02架构及概念的大纲可能包括以下内容:
- ROS架构介绍:介绍ROS的总体架构,包括ROS的组成、节点、消息传递、服务、参数服务器等基本概念。
- ROS工作空间:介绍ROS的工作空间概念,包括工作空间的创建、使用和组织方式。
- ROS包管理:介绍ROS的包管理机制,包括包的定义、安装、升级和卸载等操作。
- ROS节点编程:介绍如何使用ROS编程语言(如Python)创建和控制ROS节点,包括节点的启动、停止和参数设置等。
- ROS消息传递:介绍ROS中的消息传递机制,包括话题、服务和参数服务器等,并介绍如何使用这些机制进行程序间通信。
- ROS机器人模型:介绍如何使用ROS的的运动学模型库定义机器人的运动学模型,包括机器人的关节、链接、运动学方程等。
- ROS机器人控制:介绍如何使用ROS控制机器人,包括控制机器人的运动、传感器数据采集等。
- ROS机器人编程实践:通过一个具体的ROS程序,介绍如何编写ROS程序,包括创建ROS包、编写ROS节点、编写ROS消息等。
以上是蓝桥云课ROS机器人实验报告-02架构及概念的大纲的一个大致框架,具体内容可能会根据实验的目的和实际情况进行调整。
要使用蓝桥云课ROS机器人turtlesim实现贪吃蛇游戏,可以按照以下步骤进行:
- 确保已经安装了ROS和turtlesim包。
- 创建一个新的ROS工作空间,并将turtlesim包添加到工作空间中。
- 创建一个新的ROS节点,用于控制turtlesim中的乌龟。
- 在节点中编写Python程序,使用ROS消息与turtlesim乌龟进行通信。
- 用ROS命令行工具运行程序,并使用键盘控制乌龟的运动。
下面是一个简单的示例程序,可以实现贪吃蛇游戏的基本功能:
python
#!/usr/bin/env python | |
import rospy | |
from turtlesim.msg import Pose | |
def move_turtle(): | |
rospy.init_node('move_turtle') | |
pub = rospy.Publisher('/turtle1/command', Pose, queue_size=10) | |
rate = rospy.Rate(10) # 10hz | |
rospy.loginfo("Moving the turtle to home position") | |
# home position | |
pose = Pose() | |
pose.x = 0 | |
pose.y = 0 | |
pose.theta = 0 | |
pub.publish(pose) | |
rate.sleep() | |
rospy.loginfo("Starting the game") | |
# game logic here | |
# use pub.publish to move the turtle | |
if __name__ == '__main__': | |
try: | |
move_turtle() | |
except rospy.ROSInterruptException: | |
pass |
在上面的示例程序中,我们首先初始化了一个ROS节点,并创建了一个发布者pub
,用于向turtlesim中的乌龟发送运动命令。然后我们定义了一个速率rate
,用于控制程序的运行的频率。接着我们移动乌龟到初始位置(home position),并开始游戏逻辑。在这里你可以自己实现贪吃蛇游戏的规则和逻辑,例如根据方向移动乌龟、吃食物、计算分数等。最后,我们启动ROS节点并运行程序。
注意:这只是一个简单的示例程序,贪吃蛇游戏的具体实现需要根据自己的需求和规则进行编写。
蓝桥云课ROS机器人实验报告-02架构及概念要点如下:
- ROS架构:介绍ROS的总体架构,包括ROS的组成、节点、消息传递、服务、参数服务器等基本概念。
- ROS工作空间:介绍ROS的工作空间概念,包括工作空间的创建、使用和组织方式。
- ROS包管理:介绍ROS的包管理机制,包括包的定义、安装、升级和卸载等操作。
- ROS节点编程:介绍如何使用ROS编程语言(如Python)创建和控制ROS节点,包括节点的启动、停止和参数设置等。
- ROS消息传递:介绍ROS中的消息传递机制,包括话题、服务和参数服务器等,并介绍如何使用这些机制进行程序间通信。
- ROS机器人模型:介绍如何使用ROS的的运动学模型库定义机器人的运动学模型,包括机器人的关节、链接、运动学方程等。
- ROS机器人控制:介绍如何使用ROS控制机器人,包括控制机器人的运动、传感器数据采集等。
- ROS机器人编程实践:通过一个具体的ROS程序,介绍如何编写ROS程序,包括创建ROS包、编写ROS节点、编写ROS消息等。
以上是蓝桥云课ROS机器人实验报告-02架构及概念要点的一个大致框架,具体内容可能会根据实验的目的和实际情况进行调整。