workspace工作空间以及launch文件的编写
建立工作空间
- 建立 工作空间目录
回到主目录
cd
在主目录创建一个名字为my_ws的文件夹,并且在my_ws 文件夹里面建立一个名为src的文件夹,-p的作是建立子目录
mkdir -p my_ws/src - 使用catkin_make命令进行编译
首先进入my_ws目录(如果在src目录可以通过cd ..命令返回上层目录,如果在主目录可以通过cd my_ws/命令然后执行
catkin_make
虽然是一个空的文件价,也能完成编译。 - 通过ls命令查看当前文件夹的文件,文件目录解析
ls
会看到一下文件夹
build devel src
my_ws(工作空间),src(源码),bulid(生成的),devel(安装空间),如果不希望泄露源码,可以只提供install文件给客户 - 工作空间的链接
新的工作空间,必须在打开终端后链接一下,才能被系统挂载,具体的指令如下。
source my_ws/devel/setup.bash
my_ws为链接的工作空间,主要链接工作空间下devel文件夹下setup.bash文件
工作空间使用前每次都需要source,如果不想每次都source,可以修改主目录下的.bashrc文件。
使用文件管理器打开home目录,按ctrl+H命令显示隐藏文件,找到.bashrc 用gedit打开,翻到最后做如下修改。
source /opt/ros/kinetic/setup.bash (原有)
source ~/my_ws/devel/setup.bash (新增)然后保存,然后每次打开终端就会自动source
建立一个包
- 首先进入到工作空间的src目录,然后执行下面的命令
catkin_create_pkg mylaunch (mylaunch为包名,需要自己设定) - 执行rospack profile,更新现有包
rospack profile - 进入mylaunch目录,就可以在此目录创建launch文件了
launch文件的编写
- launch文件的结构,
<launh>
<node pkg="turtlesim" type="turtle_teleop_key" name="turtle_teleop_key">
<remap from="turtle1/cmd_vel" to="turtle2/cmd_vel" />
</node>
</launch>
- 编写一个launch文件,通过键盘来控制上节课的第二个乌龟。
进入在mylaunch目录,然后执行下面的命令 建立一个名字为telop,后缀为.launch的文件
touch telop2.launch
用gedit对其进行编辑
gedit telop2.launch - 把下面一段文字粘贴进去并保存。
<launch>
<node pkg="turtlesim" type="turtle_teleop_key" name="turtle_teleop_key">
<remap from="turtle1/cmd_vel" to="turtle2/cmd_vel" />
</node>
</launch>
这个launch文件的目的是启动turtle_teleop_key节点,并把turtle1/cmd_vel话题的值通过remap命令,映射给turtle2/cmd_vel,这样就打开了键盘控制,并且把键盘控制的的消息发布给了乌龟2的运动控制节点
3. 启动telop2.launch文件,如果直接启动launch文件,不需要先roscore打开服务,launch文件会自己打开roscore
首先打开第二个乌龟
rosservice call /spawn “x: 0.0
y: 0.0
theta: 0.0
name: ””
name: “turtle2”
启动launch文件
roslaunchmylaunchtelop2.launch就可以通过键盘来控制第二个乌龟运动了4.乌龟追逐demo打开demolaunch文件
r
o
s
l
a
u
n
c
h
m
y
l
a
u
n
c
h
t
e
l
o
p
2.
l
a
u
n
c
h
就
可
以
通
过
键
盘
来
控
制
第
二
个
乌
龟
运
动
了
4.
乌
龟
追
逐
d
e
m
o
打
开
d
e
m
o
l
a
u
n
c
h
文
件
roslaunch turtle_tf turtle_tf_demo.launch
启动键盘控制
$ rosrun turtlesim turtle_teleop_key
就可以通过键盘控制第一个乌龟,第二个乌龟跟随第一个乌龟了。