1. 安装配置
1.1 ROS安装(以ROS Noetic为例)
-
设置软件源 首先设置Ubuntu软件源,以确保能够安装来自各个源的软件包:
bash 复制代码
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
-
设置密钥 添加ROS的GPG密钥:
bash 复制代码
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
-
更新软件包索引
bash 复制代码
sudo apt update
-
安装ROS 这里选择安装
ros-noetic-desktop-full
,它包含了ROS的核心组件和常用工具:bash 复制代码
sudo apt install ros-noetic-desktop-full
-
初始化rosdep
rosdep
是一个ROS的命令行工具,用于安装ROS包的依赖:bash 复制代码
sudo rosdep init
rosdep update
-
设置ROS环境变量 每次打开新的终端时,都需要配置ROS环境变量。可以将以下命令添加到
~/.bashrc
文件中:bash 复制代码
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
-
安装rosinstall
rosinstall
是一个常用的命令行工具,用于轻松下载多个ROS包的源代码树:bash 复制代码
sudo apt install python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
1.2 创建和初始化工作空间
-
创建一个catkin工作空间:
bash 复制代码
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make
-
添加工作空间到ROS环境中:
bash 复制代码
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
2. ROS基本语法介绍
2.1 ROS文件结构
-
src/
:存放源代码和包的目录。 -
CMakeLists.txt
:构建系统配置文件。 -
package.xml
:包的描述文件,包含依赖信息。
2.2 创建ROS包
-
使用
catkin_create_pkg
命令创建一个新的ROS包,例如beginner_tutorials
:bash 复制代码
cd ~/catkin_ws/src
catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
-
查看生成的文件:
-
CMakeLists.txt
-
package.xml
-
2.3 编写简单的发布者(Publisher)和订阅者(Subscriber)
2.3.1 创建发布者节点
-
在
beginner_tutorials
包的src
目录下创建一个名为talker.cpp
的文件:cpp 复制代码
#include "ros/ros.h"
#include "std_msgs/String.h"
#include <sstream>
int main(int argc, char **argv)
{
ros::init(argc, argv, "talker");
ros::NodeHandle n;
ros::Publisher chatter_pub = n.advertise<std_msgs::String>("chatter", 1000);
ros::Rate loop_rate(10);
int count = 0;
while (ros::ok())
{
std_msgs::String msg;
std::stringstream ss;
ss << "hello world " << count;
msg.data = ss.str();
ROS_INFO("%s", msg.data.c_str());
chatter_pub.publish(msg);
ros::spinOnce();
loop_rate.sleep();
++count;
}
return 0;
}
-
在
CMakeLists.txt
中添加对talker.cpp
的编译支持:cmake 复制代码
add_executable(talker src/talker.cpp)
target_link_libraries(talker ${catkin_LIBRARIES})
2.3.2 创建订阅者节点
-
在
beginner_tutorials
包的src
目录下创建一个名为listener.cpp
的文件:cpp 复制代码
#include "ros/ros.h"
#include "std_msgs/String.h"
void chatterCallback(const std_msgs::String::ConstPtr& msg)
{
ROS_INFO("I heard: [%s]", msg->data.c_str());
}
int main(int argc, char **argv)
{
ros::init(argc, argv, "listener");
ros::NodeHandle n;
ros::Subscriber sub = n.subscribe("chatter", 1000, chatterCallback);
ros::spin();
return 0;
}
-
在
CMakeLists.txt
中添加对listener.cpp
的编译支持:cmake 复制代码
add_executable(listener src/listener.cpp)
target_link_libraries(listener ${catkin_LIBRARIES})
2.4 编译和运行
-
编译代码:
bash 复制代码
cd ~/catkin_ws
catkin_make
-
运行ROS master节点:
bash 复制代码
roscore
-
在一个新的终端中,运行发布者节点:
bash 复制代码
rosrun beginner_tutorials talker
-
在另一个新的终端中,运行订阅者节点:
bash 复制代码
rosrun beginner_tutorials listener
3. 总结
以上介绍了在Linux系统中安装和配置ROS,以及如何创建一个简单的ROS包并编写基本的发布者和订阅者节点。这是学习ROS的起点,后续可以深入学习更多的ROS功能和高级应用。