ROS基础学习笔记(一)

初始化空间信息:
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  [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

  其内部结构如下:
    
    ...
      catkin
      roscpp
      rospy
      std_msgs
    ...
    

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

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

5.自然我们先在可以查看创建的包的信息了package.xml,其他信息自由操作,但是这里有个凭证license需要填写,一般可写:
    BSD
  自此完整package.xml如下:
       1
       2
       3   beginner_tutorials
       4   0.1.0
       5   The beginner_tutorials package
       6
       7   Your Name
       8   BSD
       9   http://wiki.ros.org/beginner_tutorials
      10   Jane Doe
      11
      12   catkin
      13
      14   roscpp
      15   rospy
      16   std_msgs
      17
      18   roscpp
      19   rospy
      20   std_msgs
      21
      22

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--rqt
    $ sudo apt-get install ros--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

你可能感兴趣的:(ROS)