ros初识笔记<3>
开坑time 2023-08-03 16:23:24
1. 创建工作空间与功能包
工作空间(workspace)
一个存放工程开发相关文件的文件夹
src(source space) :代码空间 (功能包)
build(Build space): 编译空间 (编译产生的中间文件)
devel(development space):开发空间 (编译生成的可执行文件,脚本)
install (Install space): 安装空间 (最终得到的一些可执行文件)
创建工作空间:
已经有了,所以搞了第二个工作空间

catkin_init_workspace:将工作空间变成真正ROS的工作空间,实现属性的变化
接着做编译(空的工作空间也可以做编译)
回到工作根目录(catkin_ws)进行编译

catkin_make一下就可以了,会产生build和devel两个文件夹

再catkin_make install一下就可以生成install文件夹了

接下来可以在工作空间中开发代码
首先创建功能包(放置源码的最小单元)
cd ~/catkin_ws/src(放置在src里面)
catkin_create_pkg test_pkg(功能包名称) std_msgs rospy roscpp(依赖,py,cpp,std_msgs标准数据结构)

编译功能包
cd~/catkin_ws
catkin_make
source~/catkin_ws/devel/setup.bash

返回根目录catkin_make编译

最后进行环境变量设置
只有设置了环境变量
才能让系统找到工作空间
才能找到对应的功能包
再用echo $ROS_PACKAGE_PATH 来检查环境变量
查找所有ros功能包的路径
目的是打开新终端时,运行setup.bash,setup.bash可以让一些ROS* 开头的命令可以使用。
其他补充:
在终端中使用source命令设置的环境变量只能在当前终端中生效,如果希望环境变量在所有终端中有效,则需要在终端的配置文件中加入环境变量的设置:echo “source /WORKSPACE/devel/setup.bash”>>~/.bashrc,请使用工作空间路径替代 WORKSPACE。(将source /catkin_ws/devel/setup.bash命令放入.bashrc文件内)
CMakeLists规定了语法
package包含了功能包相关信息
同一个工作空间下,不允许存在同名功能包;
不同工作空间下,允许存在同名功能包。
2.发布者Publisher的编程实现
模型图:

subscriber: 仿真器
message:数据类型:Twist,包含线速度和角速度
通过topic总线管道传输给sub
实现功能:不同于之前的键盘控制和命令行输入,采用程序控制海龟运动。
实现具体过程:
1.创建功能包
在src中创建功能包

catkin_create_pkg learning_topic roscpp rospy std_msgs geometry_msgs turtlesim
2.创建发布者代码

古月滴例程(cpp版):

source /home/setiko/catkin_ws/devel/setup.bash添加上去

关掉所有终端
在catkin_ws2中打开终端运行roscore
再开一个终端运行rosrun turtlesim turtlesim_node
再开一个终端运行刚刚生成的可执行文件

rosrun learning_topic velocity_publisher
然后就达到了运行程序驱动小海龟的效果

ctrl+c结束进程
最后是python版本
不清楚怎么运行
2023-08-06 12:43:29

浙公网安备 33010602011771号