ROS中的程序实现1、先创建一个工作空间2、再创建一个功能包3、编辑源文件4、编辑配置文件5、编译并执行例如mkdir -p demo01_ws/src 创建一个工作空间下面带一个子目录src切换到 cd demo01_ws/catkin_make 编译创建功能包cd srccatkin_create_pkg helloworld roscpp rospy std_msgs 创建一个名叫helloworld的功能包并加上依赖以上为cpp和py的通用部分cpp运行效率高但是编码效率低py反之进入src下demo01_ws/src/helloworld/src新建源文件helloworld_c.cpp接着编写源代码//1.包含ROS头文件#include ros/ros.h//2.编写main函数int main(int argc , char *argv[]){//3.初始化ROS节点ros::init(argc,argv,hello_node);//4.输出日志ROS_INFO(hello world!);return 0;}在CMAKELists.txt下面编写配置文件接着回到demo01_ws里面完成编译catkin_make先启动核心roscore在启动源文件source ./devel/setup.bash修改环境变量rosrun 包名 节点小操作打开.bashrc文件在最后加上source ~/demo01_ws/devel/setup.bashpy版本在demo01_ws/src/helloworld下新建一个文件scripts存放py文件新建文档重命名为helloworld_p.py# /usr/bin/env python##指定解释器#1.导包import rospy#2.编写主入口if __name__main__:#3.初始化ROS节点rospy.init_node(hello_p);#4.输出日志rospy.loginfo(hello world! by py);添加权限chmod x helloworld_p.pyterminator中的快捷键ctrl shift o水平分割ctrl shift e垂直分割ctrl shift c复制ctrl shift v粘贴ctrl shift w关闭当前终端ROS 文件系统工作空间 workspace最外层文件夹 ├── build/ # CMake编译中间文件cmake生成 ├── devel/ # 编译产物可执行文件、环境脚本、库文件 │ ├── setup.bash # 最常用环境配置脚本source这个文件才能识别自定义包 │ ├── lib/ # 编译出的节点可执行文件、动态库 │ └── share/ # 功能包的配置、launch、URDF资源 ├── src/ # 存放所有源码功能包开发者主要操作目录 │ ├── 功能包1比如turtlesim │ │ ├── CMakeLists.txt # CMake编译规则文件 │ │ ├── package.xml # 功能包清单声明依赖、版本信息 │ │ ├── src/ # C源码 .cpp 文件 │ │ ├── scripts/ # Python脚本 .py 文件 │ │ ├── launch/ # .launch启动文件一次性启动多个节点 │ │ ├── msg/ # 自定义消息 .msg 文件 │ │ ├── srv/ # 自定义服务 .srv 文件 │ │ ├── action/ # 动作通信 .action 文件 │ │ ├── urdf/ # 机器人模型urdf/xacro文件 │ │ ├── config/ # yaml参数配置文件 │ │ └── world/ # Gazebo仿真环境世界文件 │ └── 功能包2自定义cartographer、navigation等 └── log/ # 编译、运行日志自动生成ROS文件系统相关命令roscore是ROS系统先决条件节点和程序的集合必须运行roscore才能使ROS节点进行通讯roscore将启动ros masterros参数服务器rosout日志节点rosrunrosrun 包名 可执行文件名 运行指定的ROS节点roslanuchroslaunch 包名 launch 文件名 运行某个包下的launch文件定期清理乌班图的命令#!/bin/bash sudo apt autoclean sudo apt clean sudo apt autoremove -y sudo journalctl --vacuum-size200M rm -rf ~/.cache/* rm -rf ~/.ros/log/* rm -rf /tmp/* # 可选清理工作空间编译文件 # cd ~/catkin_ws rm -rf build devel sudo sync; sudo sysctl -w vm.drop_caches3 echo 清理完成ROS中的基本通讯机制主要有三种话题通讯发布订阅模式服务通讯请求响应模式参数服务器参数共享模式话题通讯是ROS中使用频率最高的一种通讯方式基于发布订阅模式一个节点发布消息另一个节点订阅消息用于不断更新的、少逻辑处理的数据传输场景master 可以根据话题建立发布者和订阅者之间的关系使用的协议有RPC和TCP发布方的订阅方都可存在多个建立连接之后master可以关掉上述实现流程已经封装了以后直接调用即可话题通信应用时的关注点话题设置关注发布者实现关注订阅者实现消息载体具体实现流程编写发布方实现编写订阅方实现python需要添加可执行文件编辑配置文件编译并执行终于也是让我拿下了我终于经过40分钟的努力成功跑了出来