getting started ros

ROS之前看过一遍,但是过于复杂,我就很快忘记了;现在重新梳理一遍。
http://wiki.ros.org/cn/ROS/Tutorials

Tutorials

官方良心教程

catkin overview

Catkin has the following dependencies: CMakePythn(2.7)、catkin_pkgempynoseGTestg++

catkin document

C++ catkin library dependencies
caktin for package

catkin command

catkin_create_pkg
catkin_make
catkin_init_workspace

catkin workspace

catkin workspace是一套规范:Source Space、Build Space、Development (Devel) Space、Install Space、Result space

REP-128

REP-128是catkin workspace的一套命名约定。

ros package

创建程序包:catkin_create_pkg,程序包存在依赖关系。
编译程序包:source devel/setup.bash,ref:安装并配置ROS环境

手动创建

依赖管理rosdep

catkin cmakelists

详细的cmake规则说明↑

REP-127

package.xml定义在REP127

REP-140

REP-140是catkin package的一套命名约定。

graph resource name

Graph Resource Names are an important mechanism in ROS for providing encapsulation。

http://wiki.ros.org/msg

message description language

http://wiki.ros.org/Nodes

publisher & subscriber

http://wiki.ros.org/srv

server & client Tutorials

faq

Common step for msg and srv.,该step有小问题,主要是因为:
package format,参考format1迁移format2

using class Methods as callback

.py文件需要对它chmod +x *.py 变为可执行才能run

understand ros topic

节点之间是通过ROS话题来互相通信的。node在一个topic上发布(publish)msg,而其他node则订阅(subscribe)该topic以接收该msg.
进阶:http://wiki.ros.org/rospy/Overview/Publishers%20and%20Subscribers#rospy.Publisher_initialization

rqt_graph

一个几乎没啥功能的图形化界面,显示框图、线条的粗细颜色表示通信数据流量和延迟。可以保存各种图片格式,便于梳理机器人代码结构。

rxplot

一个plot UI,可以显示波形,和rqt_graph差不多。

ros service

服务(services)是节点之间通讯的另一种方式。服务允许节点发送请求(request) 并获得一个响应(response).

using rosparam

rosparam使得我们能够存储并操作ROS 参数服务器(Parameter Server)上的数据。参数服务器能够存储整型、浮点、布尔、字符串、字典和列表等数据类型。rosparam使用YAML标记语言的语法。

actionlib

actionlib就是带feedback的srv,but基于msg,原理描述:http://wiki.ros.org/actionlib/DetailedDescription

ros console

编写node、server、client,API,such as ROS_INFO:http://wiki.ros.org/roscpp_tutorials
Writing a Simple Publisher and Subscriber
Writing a Simple Service and Client
Using Parameters in roscpp
Accessing Private Names from a NodeHandle
Using Class Methods as Callbacks
Understanding Timers
Dynamic Reconfigure
clock

ros launch

ros launch可以启动多个node,有固定文件写法。
进阶:http://wiki.ros.org/cn/ROS/Tutorials/Roslaunch%20tips%20for%20larger%20projects

ros bash

这里是各种ROS的bash指令,参考ROS文件系统介绍
rosed 是 rosbash 的一部分。利用它可以直接通过package名来获取到待编辑的文件而无需指定该文件的存储路径了。

debugging

ros record

ros wtf

rqt_console

rqt_console属于ROS日志框架(logging framework)的一部分,用来显示节点的输出信息。

rqt_logger_level

rqt_logger_level允许我们修改节点运行时输出信息的日志等级(logger levels)(包括 DEBUG、WARN、INFO和ERROR)。

master and newwork

ros core

如果 roscore 运行后无法正常初始化,很有可能是存在网络配置问题。
如果 roscore 不能初始化并提示缺少权限,这可能是因为~/.ros文件夹归属于root

运行类似于rosnode的指令时出现一些问题,也许是环境变量的影响。

ros out

network setup

multiple machines

ros tf Introduction

TF Tutorials

tf API

数据类型:http://wiki.ros.org/tf/Overview/Data%20Types
变换与参考系:http://wiki.ros.org/tf/Overview/Transformations
发布tf变换广播:http://wiki.ros.org/tf/Overview/Broadcasting%20Transforms
接收并使用tf广播:http://wiki.ros.org/tf/Overview/Using%20Published%20Transforms
异常:http://wiki.ros.org/tf/Overview/Exceptions

tf_monitor

tf_echo

static_transform_publisher

view_frames

详解tf

ros navigation

frist:sudo apt-get install ros-kinetic-navigation
tutorial:https://www.ncnynl.com/category/ros-navigation/

https://www.ros.org/reps/rep-0105.html

map:http://wiki.ros.org/map_server?distro=kinetic
http://wiki.ros.org/global_planner?distro=kinetic
http://wiki.ros.org/move_base?distro=kinetic
http://wiki.ros.org/nav_core?distro=kinetic

rviz user guide

http://wiki.ros.org/rviz/DisplayTypes/Marker
http://docs.ros.org/api/visualization_msgs/html/msg/Marker.html
https://github.com/PickNikRobotics/rviz_visual_tools

gazebo

v-rep

simulator

rviz是三维可视化工具,强调把已有的数据可视化显示;
gazebo是三维物理仿真平台,强调的是创建一个虚拟的仿真环境。http://gazebosim.org/

used ML for simulator http://www.mujoco.org/