ROS教程
ROS使用教程
src 存放的是功能包源码的代码空间
build 存放的是编译过程中产生的中间文件,使用较少
devel存放的是编译完成后的可执行文件、环境变量配置的脚本等,较常用
install存放的是编译完成后的可执行文件、环境变量配置的脚本等,较常用和devel类似,ROS 2 中将install和devel文件夹合并
设置环境变量,这样系统就知道功能包放在catkin\_ws功能包下面,这个命令只能在当前终端下生效。可以通过将该句命令加入配置文件当中, vi .bashrc 或者 vi .zshrc(如果用的是zsh终端的话)。
python代码为可执行文件,所以可以不用编译,C++代码需要编译,生成可执行文件。
CMakeList.txt就是主要配置主要的具体的配置的选项。
生成可执行文件,需要add_executable进行配置,如果需要多个源码,则在后面加上 1.cpp 2.cpp ,例如:
add\_executable(talker src/talker.cpp 1.cpp 2.cpp 3.cpp)
由于许多可执行文件需要依赖第三方库,需要target\_link\_libraries将其和第三方的库进行链接
target\_link\_libraries(talker \${catkin\_LIBRARIES})
add\_dependencies 是根据自定义的消息内容添加第三方的依赖
详细步骤如下:
自定义的话题消息放在msg文件夹下面,在文件夹下面创建Person.msg文件
在package.xml中添加功能包依赖
修改完成后进行编译
在catkin\_ws目录下通过rosmsg show Person命令可以查看消息Person是否已经定义成功。
ROS通信编程–服务编程
package.xml.txt文件和消息中的xml文件设置一样。
如何实现一个服务器
代码定义为server.cpp
调用call表示如果srv有应答则继续运行,如果没有应答则一直停在这里,不继续运行
然后回到catkin\_ws的目录下,通过catkin\_make进行编译
如何运行编译的可执行文件
首先需要运行roscore来运行rosmaster
再新建终端,运行服务端rosrun learing\_communication server,由于没有消息,所以一直在消息等待
再启动客户端 rosrun learing\_communication client 3 4
generate\_messages(DEPENDENCIES std\_msgs)
generate\_messages(DEPENDENCIES actionlib\_msgs)
可以合并为:
generate\_messages(DEPENDENCIES std\_msgs actionlib\_msgs)
再次编译一下,看看代码是否正确
如何实现一个动作服务器

服务端 server


下面是动作客户端的代码示例




编译动作服务端和客户端,编译为可执行文件
编译没有问题后,查看运行效果如何,在终端输入roscore启动rosmaster
通过rosrun learning\_communication DoDishes\_client启动客户端
通过rosrun learning\_communication DoDishes\_server












