1,总的来说就是节点与节点之间的通信,节点代表机器人的某种功能,多个节点互相作用来控制机器人
启动流程:
roscore
->启动rosmaster
rosrun
->package(找到功能包)->exe(经过编译make后形成的可执行文件)->创造一个节点->想干啥干啥
同理用多个终端开起多个执行文件形成多个节点,节点名字和可执行文件名字没鸟关系
2,py文件不同的是不需要可执行文件,py代码本身就是可执行文件,记得右键属性里更改它的使用权限
rosrun ->package(找到功能包)->name.py->创造一个节点->想干啥干啥
具体该部分的代码演示:
roscore
ctrl+alt+T //打开新终端
rosrun package_name exe_name
rosrun package_name exe_name.py
catkin就是整个Ros的创作空间,相当于一个project,在安装完Ros之后
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
cd ~/catkin_ws
catkin_make
catkin_mak
e之后,还要更新环境source devel/setup.bash
在catkin中创建属于自己的包,规定包的名字-name_pkg
,后面的都是包的依赖:也就是被人写好的包自己这个包里直接可以用,以下代码就依赖了三个包(以下在catkin_ws/src的终端中操作)
catkin_create_pkg name_pkg std_msgs rospy roscop
然后包里面会有include
和src
,c++文件都放在src里面,需要自己创建一个scripts用来放py文件。
就记录一下:
C++程序编写: 到包的src
文件中打开终端输入 touch xxxx.cpp
创建c++文件
Python程序编写: 在包中创建一个stricpt文件夹专门存放py代码,同理touch xxxxx.py
每个包里都有Cmake文件,打开以后在
Declare a C++ library下面,install上面
加入
add_executable(exe_name src/name.cpp)
target_link_libraries(exe_name ${catkin_LIBRARIES})
差不多意思就是把你写的cpp文件在cmake后编成可执行文件
然后老规矩catkin_make source
…
在stricpt里面,右键py属性权限变成可执行文件,然后出去cmake,直接用
#include
int main(int argc,char **argv)
{
return 0;
}
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import rospy
def function_name():
while not rospy.is_shutdown():
rate.sleep()
if __name__ == '__main__'
try:
function_name()
except rospy.ROSinterruptException():
pass
以上就是整个workspace的搭建,完全写给自己看,以后可以快速回忆。强烈推荐古月居老师,看完21讲帮助巨大
附上b站链接:[古月居21讲](https://www.bilibili.com/video/BV1zt411G7Vn?from=search&seid=3098893974219152868)