ROS 笔记

ROS学习笔记

00.VSCODE 引用ROS

catkin_make -DCMAKE_EXPORT_COMPILE_COMMANDS=Yes

“compileCommands”: “${workspaceFolder}/build/compile_commands.json”

01. 文件系统概念

  1. rospack — 获取软件包的相关信息

    rospack find 包名称

  2. roscd — 切换目录到某个软件包

    roscd 包名称

  3. rosls — 直接按软件包的名称而不是绝对路径执行ls命令

    rosls 本地包名称/子目录

02.创建ROS程序包

最简单的程序包
my_package/
CMakeLists.txt           程序包必须包含一个catkin 版本的CMakeLists.txt文件,而Catkin metapackages中必须包含一个对CMakeList.txt文件的引用。 
package.xml              这个package.xml文件提供有关程序包的元信息。 
  1. 创建程序包
catkin_create_pkg <package_name> [depend1] [depend2] [depend3]
std_msgs rospy roscpp
source devel/setup.bash
  1. 查找程序包一级依赖关系
rospack depends1 包名称
  1. 查找程序包间接依赖关系
rospack depends 包名称

03.编译ROS程序包

  1. 切换到工作空间

    cd ~/工作空间/
    
  2. catkin_make

04.ROS图概念概述

Nodes:节点,一个节点即为一个可执行文件,它可以通过ROS与其它节点进行通信。

Messages:消息,消息是一种ROS数据类型,用于订阅或发布到一个话题。

Topics:话题,节点可以发布消息到话题,也可以订阅话题以接收消息。

Master:节点管理器,ROS名称服务 (比如帮助节点找到彼此)。

rosout: ROS中相当于stdout/stderr。

roscore: 主机+ rosout + 参数服务器 (参数服务器会在后面介绍)。

rospy = python 客户端库

roscpp = c++ 客户端库

05.ROS节点

一个节点其实只不过是ROS程序包中的一个可执行文件。ROS节点可以使用ROS客户库与其他节点通信。节点可以发布或接收一个话题。

  1. roscore

    roscore是运行所以ROS程序前首先要运行的命令

  2. 查看活跃节点

    rosnode list

  3. 寻找某个节点的信息

    rosnode info /节点名字

  4. 运行节点

    rosrun 包名 节点名字

  5. 运行别名节点

    rosrun 包名 节点 _name:= 新节点名字

06.ROS话题

节点与节点之间是通过话题互相通信

  1. rqt_grahp

    rqt_grahp 显示当前运行的话题与节点

  2. rostopic echo 显示在某个话题上发布的数据

    rostopic echo 话题

  3. rostopic list -v

    获取发布与订阅话题及其类型的详细信息

  4. rostopic pub [topic] [msg_type] – [args]

    发布数据到当前某个广播的话题上

  5. rostopic hz 话题

    查看某个话题发布数据的帧率

07.ROS Message

话题之间的通信是通过在节点之间发送ROS消息实现的。对于发布器(turtle_teleop_key)和订阅器(turtulesim_node)之间的通信,发布器和订阅器之间必须发送和接收相同类型的消息。这意味着话题的类型是由发布在它上面的消息类型决定的。使用rostopic type命令可以查看发布在某个话题上的消息类型

  1. rostopic type 话题

    查看发布消息类型

  2. rosmsg show 消息类型

    查看显示消息的详细情况

08.ROS服务

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

rosservice可以很轻松的使用 ROS 客户端/服务器框架提供的服务。rosservice提供了很多可以在topic上使用的命令,如下所示:

rosservice list         输出可用服务的信息
rosservice call         调用带参数的服务
rosservice type         输出服务类型
rosservice find         依据类型寻找服务find services by service type
rosservice uri          输出服务的ROSRPC uri
  1. rosservice call clear

清除数据

  1. rosservice type spawn| rossrv show

通过查看再生(spawn)服务的信息

  1. rosparam
rosparam使得我们能够存储并操作ROS 参数服务器(Parameter Server)上的数据。参数服务器能够存储整型、浮点、布尔、字符串、字典和列表等数据类型。rosparam使用YAML标记语言的语法。一般而言,YAML的表述很自然:1 是整型, 1.0 是浮点型, one是字符串, true是布尔, [1, 2, 3]是整型列表, {a: b, c: d}是字典. 
rosparam set            设置参数
rosparam get            获取参数
rosparam load           从文件读取参数
rosparam dump           向文件中写入参数
rosparam delete         删除参数
rosparam list           列出参数名

rosparam set [param_name]
rosparam get [param_name]

  1. 存储与重新读取

rosparam dump [file_name]
rosparam load [file_name] [namespace]

09.Console信息

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

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

  1. rosrun rqt_console rqt_console
  2. rosrun rqt_logger_level rqt_logger_level

10.roslaunch

roslaunch可以用来启动定义在launch文件中的多个节点。

用法 roslaunch [package] [filename.launch]

11.创建ROS消息和服务

消息(msg): msg文件就是一个描述ROS中所使用消息类型的简单文本。它们会被用来生成不同语言的源代码。

服务(srv): 一个srv文件描述一项服务。它包含两个部分:请求和响应。

msg文件存放在package的msg目录下,srv文件则存放在srv目录下。

msg文件实际上就是每行声明一个数据类型和变量名。可以使用的数据类型如下:

int8, int16, int32, int64 (plus uint*)
float32, float64
string
time, duration
other msg files
variable-length array[] and fixed-length array[C]

在ROS中有一个特殊的数据类型:Header,它含有时间戳和坐标系信息。在msg文件的第一行经常可以看到Header header的声明.

  1. 请求和响应
srv文件分为请求和响应两部分,由'---'分隔。
int64 A
int64 B
---
int64 Sum

其中 A 和 B 是请求, 而Sum 是响应。 
  1. 创建一个msg
$ cd ~/catkin_ws/src/beginner_tutorials
$ mkdir msg
$ echo "int64 num" > msg/Num.msg
在package.xml文件夹中含有
<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>
在cmakelist.txt中的add_message_files中添加建立的消息
  1. 检查消息是否正常

rosmsg show 类型

  1. 创建srv服务

roscd beginner_tutorials

mkdir srv

roscp rospy_tutorials AddTwoInts.srv srv/AddTwoInts.srv

# Do not just add this line to your CMakeLists.txt, modify the existing line
find_package(catkin REQUIRED COMPONENTS
  roscpp
  rospy
  std_msgs
  message_generation)
add_service_files(
  FILES
  AddTwoInts.srv
)
  1. 检查服务是否正常
rossrv show <service type>
  1. 消息和服务都要的步骤
generate_messages(
  DEPENDENCIES
  std_msgs
)

由于增加了新的消息,所以我们需要重新编译我们的package:


# In your catkin workspace
$ cd ../..
$ catkin_make
$ cd -

12CAN操作

ifconfig -a // 获取网络设备

candump can名字 // 启动CAN

sudo ip link set can名字 up type can bitrate 500000 //设置波特率

candump can名字 // 启动CAN

sudo ip link set can名字 down //关闭CAN设备
sudo ip link set can$i up type can bitrate 1000000 dbitrate 5000000 fd on

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值