Robot Ignite 初步体验

概述

Robot Ignite是一个线上ROS编程教学网站。其网站环境如下:

这里写图片描述

主要分为: 文字教程区 IDE 仿真环境 终端 四个板块

文字教程区采用jupyter notebook作为编辑器, 也就是说是可以自己加以批注修改的。
IDE是编写程序的区域
仿真环境 则是Gazebo的线上版
终端 emmm就是终端

第一课 ros-basics-in-5-days_1_0

让小车动起来,在终端输入如下

roslaunch publisher_example move.launch

但在用Ctrl+C结束进程后,会发现小车依然在运动,这是因为ROS的通讯机制是消息发送publisher-消息接收subscriber。在使用上述命令后,创建了一个move消息发布者,小车订阅该消息,然后就一直按照该消息指令运动。 结束上述进程的操作其实只是结束了创建过程,小车依然会监听之前发布的最后一条消息,所以小车依然会向前运动。要想让小车停下了则需要创建另一个消息发布者,发布停止指令使得小车停下。

roslaunch publisher_example stop.launch

如果同时发布两条指令,会发现小车一停一走。这是因为小车会接收两个消息发布者的消息。

ROS basics 2

一个正常的ros项目包含有如下文件
+ launch folder: Contains launch files启动文件
+ src folder: Source files (cpp, python)源文件
+ CMakeLists.txt: List of cmake rules for compilation 编译配置
+ package.xml: Package information and dependencies包信息及其依赖

一个简单的launch文件

<launch>
  <!-- turtlebot_teleop_key already has its own built in velocity smoother -->
  <node pkg="turtlebot_teleop" type="turtlebot_teleop_key.py" name="turtlebot_teleop_keyboard"  output="screen">
    <param name="scale_linear" value="0.5" type="double"/>
    <param name="scale_angular" value="1.5" type="double"/>
    <remap from="turtlebot_teleop_keyboard/cmd_vel" to="/cmd_vel"/>   <!-- cmd_vel_mux/input/teleop"/-->
  </node>
</launch>

launch文件采用xml文件格式组织内容。根节点为launch, 在ros中每个程序称之为节点node.
节点标签中有一些关键字:

  • pkg=”package_name” # ros包名称,相当于工程名称
  • type=”python_file_name.py” # 想要执行的程序文件
  • name=”node_name” # Name of the ROS node that will launch our Python file用于启动上述程序文件的节点
  • output=”type_of_output” # Through which channel you will print the output of the Python file运行结果输出的方式,比如这里的screen就是指将运行结果打印到屏幕上。

package

  • 创建package
catkin_create_pkg <package_name> <package_dependecies>

在工作空间中执行上述命令,从而初始化一个package .<package_name> 是package名字,<package_dependecies> 是相关依赖。

  • 包查找
    使用命令rospack查看管理已安装包。
    rospack list可以查看所有已安装包
    rospack list | grep my_package则是使用管道定向查找指定名称的包

第一个包

  • src文件:simple.py
#! /usr/bin/env python
import rospy
rospy.init_node('ObiWan')
print("help me Obi-Wan Kenobi,you're my only hope")

第一行不可缺少,用于指定编译器
该脚本启动了一个节点Obiwan,并输出一行文字

  • launch文件: my_package_launch_file.launch
<launch>
    <!-- My Package launch file -->
    <node pkg="my_package" type="simple.py" name="ObiWan"  output="screen">
    </node>
</launch>

节点node

节点的生命周期是从节点被创建到其结束。
如果要长期维持节点运行,可以使用rospy.is_shutdown() 来进行持续化,这样只有当终端使用ctrl+c后节点才会关闭。

catkin_make

指定包编译

catkin_make --only-pkg-with-deps <package_name>

猜你喜欢

转载自blog.csdn.net/u010137742/article/details/79520766