Lanqiao クラウド クラス ROS ロボット旧バージョン実験レポート-02 アーキテクチャとコンセプト

プロジェクト名

実験 2 ROS[Kinetic/Melodic/Noetic] アーキテクチャと概念

スコア

内容:ロボットOSのファイルシステムレベル、計算グラフレベル、コミュニティレベル、機能パッケージの作成と機能実装など

実験記録(70点)

利用可能なソースからのビルド パッケージをインストールします。

    クローンを作成する前に、まだ dev_ws/src ディレクトリにいることを確認してください。

    $ cd ~/dev_ws/src

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

`# git clone -b <ブランチ> <アドレス>`

ros_tutorials のパッケージを表示するには、次のコマンドを入力します。

    $ ls ros_tutorials

    4 つのパッケージがあります: `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) のルートにあることを確認することを忘れないでください。

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

找到如下代码片段:

  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架构及概念要点的一个大致框架,具体内容可能会根据实验的目的和实际情况进行调整。

おすすめ

転載: blog.csdn.net/ZhangRelay/article/details/132044573