1-ROS简介和安装
ROS 是一个适用于机器人编程的框架,这个框架把原本松散的零部件耦合在了一起,为他们提供了通信架构。ROS 虽然叫做操作系统,但并非 Windows、Mac 那样通常意义的操作系统,它只是连接了操作系统和开发的 ROS 应用程序,所以它也算是一个中间件,基于 ROS 的应用程序之间建立起了沟通的桥梁,所以也是运行在 Linux 上的运行时环境,在这个环境上,机器人的感知、决策、控制算法可以更好的组织和运行。
————————————————
版权声明:本文为CSDN博主「感谢地心引力」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43764974/article/details/115544825
安装:作者使用的Ubuntu 20.04 ROS版本为noetic,安装教程参考以下文章
2-创建ROS项目工作空间,初始化项目
# 递归创建目录
mkdir -p hello_ros_01_ws/src
# 进入工作空间目录
cd hello_ros_01_ws
# 使用catkin_make初始化项目
# 在src同级目录下生成build(存放编译后的文件)和devel(存放编译中使用的脚本文件)目录
catkin_make
# 将devel中的setup.bash脚本文件加入环境变量中
vim ~/.bashrc
# 文件最后一行加入
source xxx/devel/setup.bash
# 保存后运行生效命令
source ~/.bashrc
# 测试环境变量是否生效,若生效进入devel目录
roscd
3-编写测试代码
#切换到工作空间中的src目录
cd src
# 创建包命令 同时添加引用包,在src目录下生成hello_ros文件夹,并生成了CMakeLists.txt等初始文件
catkin_create_pkg hello_ros std_msgs roscpp
使用clion打开 hello_ros目录
在hello_ros/src目录中添加hello_ros_node.cpp源代码文件,并实现如下编码:
#include "ros/ros.h"
#include "std_msgs/String.h"
#include <sstream>
int main(int argc,char* argv[])
{
ros::init(argc, argv, "hello_ros_talker");
ros::NodeHandle n;
ros::Publisher hello_pub = n.advertise<std_msgs::String>("/hello_topic", 10);
ros::Rate loop_rate(10);
int count = 0;
while (ros::ok())
{
std_msgs::String msg;
std::stringstream ss;
ss << "hello ros," << count;
count++;
msg.data = ss.str();
hello_pub.publish(msg);
loop_rate.sleep();
}
return 0;
}
代码实现的是topic发布功能,发布的消息为 hello ros,x 发布的频率为每秒钟10个
4-修改hello_ros/CMakeLists.txt文件,打开如下注释中的内容
catkin_package(
# INCLUDE_DIRS include
# LIBRARIES hello_ros
CATKIN_DEPENDS roscpp std_msgs
# DEPENDS system_lib
)
add_executable(${PROJECT_NAME}_node src/hello_ros_node.cpp)
add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
target_link_libraries(${PROJECT_NAME}_node
${catkin_LIBRARIES}
)
5-编译
切换到工作空间的根目录,运行编译命令
catkin_make
编译成功后如下图所示
![](https://i-blog.csdnimg.cn/blog_migrate/0128d5f0ed2b7bc696b1c1b8b485c27a.png)
6-运行
①先运行roscore启动ros master节点
roscore
成功执行后如下图所示
![](https://i-blog.csdnimg.cn/blog_migrate/b2b68bfe954e31b8f643f3573e41266e.png)
②运行编写的topic发布程序
rosrun hello_ros hello_ros_node
![](https://i-blog.csdnimg.cn/blog_migrate/406e871351442e777613420146da3ab8.png)
③查看所有在线节点
rosnode list
可以看到ros master节点和刚刚启动的topic发布节点
![](https://i-blog.csdnimg.cn/blog_migrate/6cab7aa33da9c742cafd427be4a6e410.png)
④查看所有的topic
rostopic list
可以看到系统自带的topic和刚刚启动发布的topuic
![](https://i-blog.csdnimg.cn/blog_migrate/efbb79ad32d5f12eebaea91ca2b0ee9c.png)
⑤订阅并打印/hello_topic话题
rostopic echo /hello_topic
可以看到不断打印收到的topic消息
![](https://i-blog.csdnimg.cn/blog_migrate/0b259dc24bf59cbd2f602916d744f723.png)
到此,ROS环境的安装和HelloROS的(Topic发布)测试程序就完美结束啦!通过本次学习了解了ROS的安装和配置,ROS的工作空间,ROS的程序包创建,ROS的topic消息的发布和订阅机制,ROS编写代码初步(cpp版本),ROS节点初步了解,cmake的初步了解,ROS程序的编译(catkin_make工具),ROS自带工具命令的使用,如roscore,rosnode,rosrun,rostopic等,此篇前置知识较多,但介绍较少,需要具备一定伦理基础才能透彻路理解,所以需在理论学习后按此篇事件效果最佳,本文到这里就结束了,希望能和大家一起坚持学习下去。
千里之行始于足下!