您的位置:首页 > 其它

ROS基础学习笔记(一)

2016-07-12 15:13 309 查看
初始化空间信息:

1.首先需要创建工作空间,比如catkin_ws,我们一般将package包放在src文件夹下面,一般创建空间以后是没有其余子目录的,src自己创建,并在src下进行初始化:

$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
$ catkin_init_workspace
其余的类似devel等文件夹通过编译make指令进行自动创建:

$ cd ~/catkin_ws
$ catkin_make
2.每次编写新的package包之后都需要将其路径放入ros中以便快速查找到,source一下:

$ source ~/catkin_ws/devel/setup.bash
$ rospack profile


$ echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
3.当你要删除自己创建的包时不要去直接删除src目录,二十去执行:

$ cd ~/catkin_ws
$ \rm -rf devel build install
做完上述步骤之后就可以重新编译:

 $ cd ~/catkin_ws
$ catkin_make
$ source devel/setup.bash


当然,如果你只需要重新编译其中的一个包的话也可以直接:

 $ cd ~/catkin_ws
$ catkin_make --pkg package_name


4.当你使用之前版本rosbuild的时候可能需要以下命令:

$ rosws init ~/ros_workspace ~/catkin_ws/devel


当出现这种情况说明你没有安装相应软件:

rosws: command not found


你可以使用以下语句安装并再执行:

$ sudo apt-get install python-rosinstall


常用命令(以下操作的实现需要你将包路径存放在你的ROS_PACKAGE_PATH文件中才可以被访问到):

#路径列表:

$ echo $ROS_PACKAGE_PATH
#包的查找:

$ rospack find [package_name]
$ rospack find roscpp


#切换目录:

$ roscd [locationname[/subdir]]
$ roscd roscpp


#日志路径:

$ roscd log


#详细列表:

$ rosls [locationname[/subdir]]
$ rosls roscpp_tutorials


创建和执行最简单的应用:

1.首先认识一下包的结构:

my_package/
CMakeLists.txt
package.xml


再认识一下含有工作空间的结构:

workspace_folder/        -- WORKSPACE
src/                   -- SOURCE SPACE
CMakeLists.txt       -- 'Toplevel' CMake file, provided by catkin
package_1/
CMakeLists.txt     -- CMakeLists.txt file for package_1
package.xml        -- Package manifest for package_1
...
package_n/
CMakeLists.txt     -- CMakeLists.txt file for package_n
package.xml        -- Package manifest for package_n


2.现在开始创建一个包package:

$ cd ~/catkin_ws/src
$ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp


这里使用了catkin_create_pkg命令创建包的结构,中括号里填写包的依赖包名:

# catkin_create_pkg <package_name> [depend1] [depend2] [depend3]


3.编译并添加包路径:

 $ cd ~/catkin_ws
$ catkin_make
$ . ~/catkin_ws/devel/setup.bash


catkin_make能够在devel产生变化,第三步能够将工作空间添加到ROS环境中去。

4.关于包的依赖(可以创建时直接指定也可以后续在package.xml中添加):

查询某个包的一级依赖:

$ rospack depends1 beginner_tutorials


也可以直接进入package.xml文件直接看:

$ cat package.xml


其内部结构如下:

<package>
...
<buildtool_depend>catkin</buildtool_depend>
<build_depend>roscpp</build_depend>
<build_depend>rospy</build_depend>
<build_depend>std_msgs</build_depend>
...
</package>


当然,也有可能包的依赖包还依赖有自己的包(rospy为beginner_tutorials的依赖包):

$ rospack depends1 rospy


自然我们也有直接查看所有包的指令:

$ rospack depends beginner_tutorials


5.自然我们先在可以查看创建的包的信息了package.xml,其他信息自由操作,但是这里有个凭证license需要填写,一般可写:

<license>BSD</license>

自此完整package.xml如下:

1 <?xml version="1.0"?>

2 <package>

3 <name>beginner_tutorials</name>

4 <version>0.1.0</version>

5 <description>The beginner_tutorials package</description>

6

7 <maintainer email="you@yourdomain.tld">Your Name</maintainer>

8 <license>BSD</license>

9 <url type="website">http://wiki.ros.org/beginner_tutorials</url>

10 <author email="you@yourdomain.tld">Jane Doe</author>

11

12 <buildtool_depend>catkin</buildtool_depend>

13

14 <build_depend>roscpp</build_depend>

15 <build_depend>rospy</build_depend>

16 <build_depend>std_msgs</build_depend>

17

18 <run_depend>roscpp</run_depend>

19 <run_depend>rospy</run_depend>

20 <run_depend>std_msgs</run_depend>

21

22 </package>

6.编译新建的包:

首先要将环境搭建好:

$ source /opt/ros/%YOUR_ROS_DISTRO%/setup.bash

$ source /opt/ros/kinetic/setup.bash (For Kinetic for instance)

编译(其实就是之前的操作,这里详细看看):

# In a catkin workspace

$ catkin_make [make_targets] [-DCMAKE_VARIABLES=...]

上句其实就是原来版本的好多句集成语句:

# In a CMake project

$ mkdir build

$ cd build

$ cmake ..

$ make

$ make install # (optionally)

所以本版本直接一条:

# In a catkin workspace

$ catkin_make

$ catkin_make install # (optionally)

在src下编译:

$ catkin_make

节点的详细介绍:

1.准备工作:

$ sudo apt-get install ros-indigo-ros-tutorials

2.启动ros系统:

$ roscore

3.此时系统启动节点rosout,可以用以下命令查看当前开启节点:

$ rosnode list

将会看到:/rosout

当然也可以查看某个节点详细信息:

$ rosnode info /rosout

4.启动选定节点:

$ rosrun [package_name] [node_name]

$ rosrun turtlesim turtlesim_node

也可以给自己启动的节点改名字:

$ rosrun turtlesim turtlesim_node __name:=my_turtle

当你查看自己的节点通不通时:

$ rosnode ping my_turtle

主题的详细介绍:

1.启动ROS:

$ roscore

2.对于上一个里的turtlesim包,启动它的一个节点,用来显示乌龟:

$ rosrun turtlesim turtlesim_node

启动这个节点就是接收键盘方向信息并移动乌龟:

$ rosrun turtlesim turtle_teleop_key

3.上述2步骤中,turtle_teleop_key是发布者,他会发布坐标信息变化主题,turtlesim作为接收者去接到信息改变乌龟的位置

这里我们使用rqt_graph包来进行topic的说明演示,先下载安装:

$ sudo apt-get install ros-<distro>-rqt

$ sudo apt-get install ros-<distro>-rqt-common-plugins

然后我们就可以用rqt_graph来显示目前我们节点间的通信方式了:

$ rosrun rqt_graph rqt_graph

(一般都是几个圈加链接圈与圈之间的箭头,箭头上显示的是传送的消息格式)

3.介绍有关topic命令:

[1]:

rostopic echo [topic]

$ rostopic echo /turtle1/cmd_vel

这样便会显示发布在topic上的数据信息,这里我们查看了/turtle1/cmd_vel

linear:

x: 2.0

y: 0.0

z: 0.0

angular:

x: 0.0

y: 0.0

z: 0.0

---

linear:

x: 2.0

y: 0.0

z: 0.0

angular:

x: 0.0

y: 0.0

z: 0.0

---

[2]:

$ rostopic list -h/-v

4.ROS消息机制:

查看主题的消息类型:

rostopic type [topic]

当我们执行:

$ rostopic type /turtle1/cmd_vel

得到:

geometry_msgs/Twist

同时可以使用rosmsg查看消息的详细信息:

$ rosmsg show geometry_msgs/Twist

得到:

geometry_msgs/Vector3 linear

float64 x

float64 y

float64 z

geometry_msgs/Vector3 angular

float64 x

float64 y

float64 z

5.主题和消息的使用:

[1]:

rostopic pub [topic] [msg_type] [args]

我们举例:

$ rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'

-1表示就发一遍停止,/turtle1/cmd_vel是要发表到这个主题上, geometry_msgs/Twist表示要发送的消息类型,后续是具体消息内容

这样之后会发现乌龟绕圆滑动了一部分。

再举例:

$ rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'

[2]:

rostopic hz [topic]

表示显示数据发布的频率。

举例看turtlesim_node发布/turtle1/pose的频率:

$ rostopic hz /turtle1/pose

显示得到:

subscribed to [/turtle1/pose]

average rate: 59.354

min: 0.005s max: 0.027s std dev: 0.00284s window: 58

average rate: 59.459

min: 0.005s max: 0.027s std dev: 0.00271s window: 118

average rate: 59.539

min: 0.004s max: 0.030s std dev: 0.00339s window: 177

average rate: 59.492

min: 0.004s max: 0.030s std dev: 0.00380s window: 237

average rate: 59.463

min: 0.004s max: 0.030s std dev: 0.00380s window: 290

可以使用综合语句:

$ rostopic type /turtle1/cmd_vel | rosmsg show

6.画图工具介绍:

启动工具:

$ rosrun rqt_plot rqt_plot
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: