• ROS入门学习(基于Ubuntu16.04+kinetic)


    本文主要部分全部来源于ROS官网的Tutorials.

    Setup

    roscore # making sure that we have roscore running
    rosrun turtlesim turtlesim_node
    rosrun turtlesim turtle_teleop_key # Now you can use the arrow keys of the keyboard to drive the turtle around.

    ROS Topics

    sudo apt-get install ros-kinetic-rqt
    sudo apt-get install ros-kinetic-rqt-common-plugins
    rosrun rqt_graph rqt_graph
    rostopic -h
    rostopic echo /turtle1/cmd_vel # you will now see topic datas when you press the arrow key in turtle_teleop_key terminal 

    rostopic list -h # figure out what argument the list sub-command needs
    rostopic list -v # displays a verbose list of topics to publish to and subscribe to and their type
    rostopic type /turtle1/cmd_vel  # You should get the message type of the topic: geometry_msgs/Twist
    rosmsg show geometry_msgs/Twist  #  look at the details of the message using rosmsg

    Using rostopic pub

    # publishes data on to a topic, 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]'
    #  publishes the velocity commands at a rate of 1 Hz on the velocity topic
    rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'
    # Now We can also look at what is happening in rqt_graph. 
    # and see the data published by our turtlesim
    rostopic echo /turtle1/pose

    # see how fast the turtlesim_node is publishing /turtle1/pose, $ rostopic hz [topic]
    rostopic hz /turtle1/pose

    # get in depth information about a topic
    rostopic type /turtle1/cmd_vel | rosmsg show

    Using rqt_plot

    rosrun rqt_plot rqt_plot
    # a text box in the upper left corner gives you the ability to add any topic to the plot. 
    # Typing /turtle1/pose/x and add it.
    # Typing /turtle1/pose/y and add it.

    ROS Services and Parameters

    rosservice list # shows us that the turtlesim node provides nine services
    rosservice type /clear # find out what type the clear service is
    rosservice call /clear # clears the background of the turtlesim_node
    
    #  look at the case where the service has arguments by looking at the information for the service spawn
    rosservice type /spawn | rossrv show
    rosservice call /spawn 2 2 0.2 "" # spawn a new turtle at a given location and orientation
    
    rosparam list # look at what parameters are currently on the param server
    rosparam set /background_r 150  # change the red channel of the background color
    rosservice call /clear # call the clear service for the parameter change to take effect
    rosparam get /background_g # get the value of the green background channel
    rosparam get / # show us the contents of the entire Parameter Serve
    
    rosparam dump params.yaml #  write all the parameters to the file ./params.yaml (current directory)
    rosparam load params.yaml copy # load these yaml files into new namespaces
    rosparam get /copy/background_b

     Using rqt_console and roslaunch

    This tutorial introduces ROS using rqt_console and rqt_logger_level for debugging and roslaunch for starting many nodes at once.

    sudo apt-get install ros-kinetic-rqt ros-kinetic-rqt-common-plugins ros-kinetic-turtlesim
    
    # in two new terminals start rqt_console and rqt_logger_level
    rosrun rqt_console rqt_console
    rosrun rqt_logger_level rqt_logger_level
    
    rosrun turtlesim turtlesim_node # Since the default logger level is INFO you will see any info that the turtlesim publishes when it starts up
    
    roscd beginner_tutorials
    mkdir launch
    cd launch
    gedit turtlemimic.launch
    <launch>
    
      <group ns="turtlesim1">
        <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
      </group>
    
      <group ns="turtlesim2">
        <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
      </group>
    
      <node pkg="turtlesim" name="mimic" type="mimic">
        <remap from="input" to="turtlesim1/turtle1"/>
        <remap from="output" to="turtlesim2/turtle1"/>
      </node>
    
    </launch>
    roslaunch beginner_tutorials turtlemimic.launch
    rostopic pub /turtlesim1/turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]' #  the two turtlesims start moving even though the publish command is only being sent to turtlesim1

     Using rosed to edit files in ROS

    rosed roscpp Logger.msg #  demonstrates how you would edit the Logger.msg file within the roscpp package
    
    rosed roscpp <tab><tab> # tab auto complete
    
    echo "export EDITOR='gedit -w'" >> ~/.bashrc
    source ~/.bashrc
    echo $EDITOR
    rosed roscpp Logger.msg # This time file will be open by The more beginner-friendly editor

     Creating a ROS msg and srv

    • msg: msg files are simple text files that describe the fields of a ROS message. They are used to generate source code for messages in different languages.
    • srv: an srv file describes a service. It is composed of two parts: a request and a response.

    Aboat Msg

    $ roscd beginner_tutorials
    $ mkdir msg
    $ echo "int64 num" > msg/Num.msg
    
    rosed beginner_tutorials package.xml

    Open package.xml, and make sure these two lines are in it.

      <build_depend>message_generation</build_depend>
      <exec_depend>message_runtime</exec_depend>
    rosed beginner_tutorials CMakeLists.txt

    Modify it like this:

    find_package(catkin REQUIRED COMPONENTS
       roscpp
       rospy
       std_msgs
       message_generation
    )
    ...
    catkin_package(
      ...
      CATKIN_DEPENDS message_runtime ...
      ...)
    ...
    add_message_files(
      FILES
      Num.msg
    )
    ...
    generate_messages(
      DEPENDENCIES
      std_msgs
    )
    ...

    Make sure ROS can see it.

    rosmsg show beginner_tutorials/Num # You will see: int64 num
    rosmsg show Num # You will see: [beginner_tutorials/Num]: int64 num

    Aboat srv

    $ roscd beginner_tutorials
    $ mkdir srv
    $ roscp rospy_tutorials AddTwoInts.srv srv/AddTwoInts.srv
    $ rosed beginner_tutorials CMakeLists.txt

    Modify it like this:

    ...
    add_service_files( FILES AddTwoInts.srv )
    ...

    make sure that ROS can see it using the rossrv show command

    rossrv show beginner_tutorials/AddTwoInts
    rossrv show AddTwoInts

        Now that we have made some new messages we need to make our package again:

    $ roscd beginner_tutorials
    $ cd ../..
    $ catkin_make install
    $ cd -

        Any .msg file in the msg directory will generate code for use in all supported languages. The C++ message header file will be generated in ~/catkin_ws/devel/include/beginner_tutorials/.

    rosmsg -h

    Review

    Let's just list some of the commands we've used so far:

    • rospack = ros+pack(age) : provides information related to ROS packages
    • roscd = ros+cd : changes directory to a ROS package or stack

    • rosls = ros+ls : lists files in a ROS package

    • roscp = ros+cp : copies files from/to a ROS package

    • rosmsg = ros+msg : provides information related to ROS message definitions
    • rossrv = ros+srv : provides information related to ROS service definitions
    • catkin_make : makes (compiles) a ROS package
      • rosmake = ros+make : makes (compiles) a ROS package (if you're not using a catkin workspace)
  • 相关阅读:
    杜教筛
    linux运维好书推荐:《高性能Linux服务器构建实战Ⅱ》热销中,附实例源码下载
    分布式监控系统ganglia配置文档
    基于Web应用的性能分析及优化案例
    一次Linux系统被攻击的分析过程
    Keepalived中Master和Backup角色选举策略
    linux运维好书《高性能Linux服务器构建实战Ⅱ》已出版发售,附封面照!
    并行分布式运维工具pdsh
    安全运维之:Linux系统账户和登录安全
    安全运维之:文件系统安全
  • 原文地址:https://www.cnblogs.com/xbit/p/8459686.html
Copyright © 2020-2023  润新知