Lanqiao cloud class ROS robot old version experiment report-02 architecture and concept

project name

Experiment 2 ROS[Kinetic/Melodic/Noetic] architecture and concepts

score

Content: robot operating system file system level, calculation graph level, community level, creating function packages and implementing functions, etc.

Experimental records (70 points)

Install an available build-from-source package:

    Before cloning, make sure you are still in the dev_ws/src directory.

    $ cd ~/dev_ws/src

    $ git clone https://github.com/ros/ros_tutorials.git -b Kinetic/Melodic/Noetic-devel

`# git clone -b <branch> <address>`

To view the packages in ros_tutorials, enter the command:

    $ ls ros_tutorials

    You will find four packages: `roscpp_tutorials rospy_tutorials ros_tutorials turtlesim`

Only **turtlesim** is a ROS2 package

Before running rosdep, make sure you are in the workspace root (~/dev_ws).

    To run `rosdep` for the first time, you need to run `rosdep init` first.

    $ cd ..

    $ rosdep install --from-paths src --ignore-src -r -y

    This command magically installs any packages that the packages in the workspace depend on but are missing from your computer.

Use colcon to build workspaces

    Don't forget to grab the ROS installation source before building, and make sure it's in the root of your workspace (~/dev_ws).

    $ source /opt/ros/Kinetic/Melodic/Noetic/setup.bash

    $ colcon build --symlink-install

2023 added that now the ROS1 and ROS2 communities, in addition to the materials contributed by robot enthusiasts, have introduced AI-generated content.

所有的源码下载地址:

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: 需修改文件的路径和对应文件

找到如下代码片段:

  QVector<QString> turtles;

  turtles.append("box-turtle.png");

  turtles.append("robot-turtle.png");

  turtles.append("sea-turtle.png");

  turtles.append("diamondback.png");

  turtles.append("electric.png");

  turtles.append("fuerte.png");

  turtles.append("groovy.png");

  turtles.append("hydro.svg");

  turtles.append("indigo.svg");

  turtles.append("jade.png");

  turtles.append("kinetic.png");

将不用的代码注释,并添加自己的图标名。

进入到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: 需修改文件的路径和对应文件

  setFixedSize(500, 500);

  setWindowTitle("CoCubeSim-CSLG");

回到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分):

  1. 键盘遥控小乌龟实验:

启动turtlesim,在终端中输入以下命令:

 run turtlesim turtlesim_node(注意:source devel/setup.zsh)

模拟器窗口应该出现,中间有一个随机的海龟。

  1. 在命令下的终端中,将看到来自节点的消息

打开一个新的终端窗口,并输入:

 run turtlesim turtle_teleop_key

至此通过使用turtle_teleop_key实现对turtlesim的键盘控制

turtlesim中键盘遥控机器人运动的详细步骤

首先,打开终端,输入命令“roscore”启动ROS核心。然后,在新的终端中输入命令“rosrun turtlesim turtlesim_node”启动turtlesim节点。接下来,打开新的终端,输入命令“rosrun turtlesim turtle_teleop_key”启动键盘遥控节点。此时,你可以使用键盘上的方向键来控制机器人的运动。按下“Ctrl + C”可以停止节点的运行。

 

图2.5 键盘控制的终端

 

图2.6 键盘遥控机器人运动轨迹如上图

2 这是一个开环控制,下图可以说明:

 

图2.7 单向控制,没有闭环


AI:

蓝桥云课ROS机器人实验报告-02架构及概念的大纲可能包括以下内容:

  1. ROS架构介绍:介绍ROS的总体架构,包括ROS的组成、节点、消息传递、服务、参数服务器等基本概念。
  2. ROS工作空间:介绍ROS的工作空间概念,包括工作空间的创建、使用和组织方式。
  3. ROS包管理:介绍ROS的包管理机制,包括包的定义、安装、升级和卸载等操作。
  4. ROS节点编程:介绍如何使用ROS编程语言(如Python)创建和控制ROS节点,包括节点的启动、停止和参数设置等。
  5. ROS消息传递:介绍ROS中的消息传递机制,包括话题、服务和参数服务器等,并介绍如何使用这些机制进行程序间通信。
  6. ROS机器人模型:介绍如何使用ROS的的运动学模型库定义机器人的运动学模型,包括机器人的关节、链接、运动学方程等。
  7. ROS机器人控制:介绍如何使用ROS控制机器人,包括控制机器人的运动、传感器数据采集等。
  8. ROS机器人编程实践:通过一个具体的ROS程序,介绍如何编写ROS程序,包括创建ROS包、编写ROS节点、编写ROS消息等。

以上是蓝桥云课ROS机器人实验报告-02架构及概念的大纲的一个大致框架,具体内容可能会根据实验的目的和实际情况进行调整。

要使用蓝桥云课ROS机器人turtlesim实现贪吃蛇游戏,可以按照以下步骤进行:

  1. 确保已经安装了ROS和turtlesim包。
  2. 创建一个新的ROS工作空间,并将turtlesim包添加到工作空间中。
  3. 创建一个新的ROS节点,用于控制turtlesim中的乌龟。
  4. 在节点中编写Python程序,使用ROS消息与turtlesim乌龟进行通信。
  5. 用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架构及概念要点如下:

  1. ROS架构:介绍ROS的总体架构,包括ROS的组成、节点、消息传递、服务、参数服务器等基本概念。
  2. ROS工作空间:介绍ROS的工作空间概念,包括工作空间的创建、使用和组织方式。
  3. ROS包管理:介绍ROS的包管理机制,包括包的定义、安装、升级和卸载等操作。
  4. ROS节点编程:介绍如何使用ROS编程语言(如Python)创建和控制ROS节点,包括节点的启动、停止和参数设置等。
  5. ROS消息传递:介绍ROS中的消息传递机制,包括话题、服务和参数服务器等,并介绍如何使用这些机制进行程序间通信。
  6. ROS机器人模型:介绍如何使用ROS的的运动学模型库定义机器人的运动学模型,包括机器人的关节、链接、运动学方程等。
  7. ROS机器人控制:介绍如何使用ROS控制机器人,包括控制机器人的运动、传感器数据采集等。
  8. ROS机器人编程实践:通过一个具体的ROS程序,介绍如何编写ROS程序,包括创建ROS包、编写ROS节点、编写ROS消息等。

以上是蓝桥云课ROS机器人实验报告-02架构及概念要点的一个大致框架,具体内容可能会根据实验的目的和实际情况进行调整。

Guess you like

Origin blog.csdn.net/ZhangRelay/article/details/132044573