认知实习 第四天&第五天 学习笔记(三) ROS环境搭建
认知实习 第四天&第五天 学习笔记(三) ROS环境搭建

认知实习 第四天&第五天 学习笔记(三) ROS环境搭建

本章大多数代码只要复制粘贴即可, 感兴趣的可以体会一下每个代码的构成含义

大致流程也是按照群里发的PPT的内容进行的, 部分地方做了一点修改, 因为这个PPT里面有的内容已经老掉牙失效了

0. 打开 Ubuntu 终端

alt text
在桌面任意位置右键,点击Open in Terminal即可

1. 安装 g++ 编译器 和 Python 解释器

  • 将以下代码复制到终端回车运行即可
sudo apt install g++ python
  • 输入 y 回车继续运行 (后面重复出现 同理)
    alt text
  • 等待进度条完成
    alt text

在终端打开后,第一次输入sudo相关命令时会让你输入密码,因为sudo后面的代码运行需要管理员权限, 大家如果遇到Permission deniedare you root?(如下面的错误)类似的字样那么很有可能是你少加了一个sudo

E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?

2. 快捷安装 ROS

  • 输入以下命令
wget http://fishros.com/install -O fishros && . fishros
  • 输入 1
    alt text
  • 输入 1
    alt text
  • 输入 2
    alt text
  • 输入 3

这里PPT中要求安装的是 melodic 但是选项中并没有, 因为 melodic支持 Ubuntu 18.04,无法直接安装在 20.04 上, 替代方案是安装 Noetic(ROS1 的 Ubuntu 20.04 版本),功能与 Melodic 相似。

alt text
  • 输入 1
    alt text
  • 等待安装完成
    alt text
    alt text

ROS1 安装完成

3. 小海龟界面体验

  • 打开三个终端,分别输入以下命令
roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key
alt text
  • 选中最后一个打开的窗口(运行rosrun turtlesim turtle_teleop_key命令的窗口), 按 ⬆️⬇️⬅️➡️ 键 (不是WSAD) 可以控制小海龟的移动

玩完儿之后可以直接把终端关掉,也可以按下CTRL + C停止运行

4. 安装Gazebo

  • 下面俩行PPT里有,但是实测已经安装过了,可以不用运行
sudo apt install gazebo11
sudo apt install ros-noetic-gazebo-ros-pkgs ros-noetic-gazebo-ros-control

5. 创建ROS工作空间

  • 运行下面 5 行代码, 一定要确保每行都运行了
mkdir -p ~/Desktop/catkin_ws/src
cd ~/Desktop/catkin_ws/src
catkin_init_workspace
cd ..
catkin_make
alt text
  • 运行下面 1 行命令, 即可打开Gazebo界面
gazebo

alt text
按下 CTRL + C 即可退出

6. 实现一个话题模型(⭐️⭐️⭐️PPT上省略了很多步骤)

  • 首先创建一个项目名为learning_topic并包含roscpp rospy std_msgs geometry_msgs turtlesim这些库的模板文件夹
cd ~/Desktop/catkin_ws/src
catkin_create_pkg learning_topic roscpp rospy std_msgs geometry_msgs turtlesim
cd ~/Desktop/catkin_ws/src/learning_topic/src
touch velocity_publisher.cpp
nano velocity_publisher.cpp
  • 将以下内容复制到velocity_publisher.cpp文件中
#include 
#include 

int main(int argc, char **argv)
{
    // 初始化ROS节点
    ros::init(argc, argv, "velocity_publisher");

    // 创建节点句柄
    ros::NodeHandle n;

    // 创建一个Publisher,发布名为/turtle1/cmd_vel的topic,消息类型为geometry_msgs::Twist,队列长度10
    ros::Publisher turtle_vel_pub = n.advertise("/turtle1/cmd_vel", 10); 

    // 设置循环频率(10Hz)
    ros::Rate loop_rate(10);

    int count = 0;
    while (ros::ok())
    {
        // 初始化geometry_msgs::Twist类型的消息
        geometry_msgs::Twist vel_msg;
        vel_msg.linear.x = 0.5;   // 线速度0.5 m/s
        vel_msg.angular.z = 0.2;   // 角速度0.2 rad/s

        // 发布消息
        turtle_vel_pub.publish(vel_msg);
        ROS_INFO("Publish turtle velocity command[%.2f m/s, %.2f rad/s]",
                vel_msg.linear.x, vel_msg.angular.z);

        // 按照循环频率延时
        loop_rate.sleep();
    }

    return 0;
}
  • 按下 Ctrl + S 保存文件
  • 按下 Ctrl + X 退出
  • 修改CMakeLists.txt文件
cd ~/Desktop/catkin_ws/src/learning_topic
nano CMakeLists.txt
  • 在任意位置添加以下俩行代码
add_executable(velocity_publisher src/velocity_publisher.cpp)
target_link_libraries(velocity_publisher ${catkin_LIBRARIES})
alt text
  • 同样的按下 Ctrl + S 保存文件 、按下 Ctrl + X 退出
  • 最后在三个终端分别运行以下代码
    1️⃣
cd ~/Desktop/catkin_ws/
catkin_make
roscore

2️⃣

rosrun turtlesim turtlesim_node

3️⃣

cd ~/Desktop/catkin_ws/
cp ~/Desktop/catkin_ws/build/learning_topic/velocity_publisher ~/Desktop/catkin_ws/src/learning_topic
source devel/setup.bash
rosrun learning_topic velocity_publisher
alt text

后面还有俩张有代码的PPT我真是没看懂他在干嘛, 给的命令一个也运行不了😣

本教程仅提供基础认知,更多深入的知识(如 Linux 系统的详细使用、项目目录结构的设计、CMake 等构建工具的作用)需要进一步学习。

Linux 是搭建网站服务器的重要工具,同时也有助于深入理解安卓(基于 Linux 内核)、苹果(类 Unix)等现代操作系统的运行机制。

至此ROS环境搭建和海龟仿真完成!!!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注