本章大多数代码只要复制粘贴即可, 感兴趣的可以体会一下每个代码的构成含义
大致流程也是按照群里发的PPT的内容进行的, 部分地方做了一点修改, 因为这个PPT里面有的内容已经老掉牙失效了
0. 打开 Ubuntu 终端

在桌面任意位置右键,点击Open in Terminal即可
1. 安装 g++ 编译器 和 Python 解释器
- 将以下代码复制到终端回车运行即可
sudo apt install g++ python
- 输入
y回车继续运行 (后面重复出现 同理)
- 等待进度条完成

在终端打开后,第一次输入
sudo相关命令时会让你输入密码,因为sudo后面的代码运行需要管理员权限, 大家如果遇到Permission denied和are 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
- 输入
1
- 输入
2
- 输入
3
这里PPT中要求安装的是
melodic但是选项中并没有, 因为melodic支持 Ubuntu 18.04,无法直接安装在 20.04 上, 替代方案是安装 Noetic(ROS1 的 Ubuntu 20.04 版本),功能与 Melodic 相似。

- 输入
1
- 等待安装完成


ROS1 安装完成
3. 小海龟界面体验
- 打开三个终端,分别输入以下命令
roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key

- 选中最后一个打开的窗口(运行
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

- 运行下面 1 行命令, 即可打开Gazebo界面
gazebo

按下 CTRL + C 即可退出
6. 实现一个话题模型(⭐️⭐️⭐️PPT上省略了很多步骤)
- 首先创建一个项目名为
learning_topic并包含roscpprospystd_msgsgeometry_msgsturtlesim这些库的模板文件夹
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})

- 同样的按下
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
