1 介绍
ROS 1 Noetic 是 ROS 1 的最后一个版本。Noetic 是一个长期支持(LTS)版本,于2020年5月23日发布。它支持 Python 3,并且与 Ubuntu 20.04 紧密相关。Noetic 的支持期限到2025年5月31日结束。
2 安装
一键安装指令【可自动更新源】
wget http://fishros.com/install -O fishros && . fishros
测试
- 查看版本
rosversion -d
- 测试
启动三个终端(Ctrl+Alt+T)
终端1键入:roscore
终端2键入:rosrun turtlesim turtlesim_node,会出现图像化界面
终端3键入:rosrun turtlesim turtle_teleop_key,可通过方向键控制turtle
可视化工具 rqt
rqt_graph
rqt_graph
rqt_plot
rqt_plot
基础命令
rosnode 命令
rosnode 是 ROS 中用于管理节点的工具,除了 rosnode list,它还有其他子命令:
- rosnode info <node_name>:显示指定节点的详细信息,包括订阅的主题、发布的主题、服务等。
- rosnode kill <node_name>:终止指定的节点。
- rosnode ping <node_name>:检查指定节点是否在运行。
杀死所有节点
for node in $(rosnode list); do rosnode kill $node; done
sen@u20:~$ rosnode info /turtlesim
--------------------------------------------------------------------------------
Node [/turtlesim]
Publications:
* /rosout [rosgraph_msgs/Log]
* /turtle1/color_sensor [turtlesim/Color]
* /turtle1/pose [turtlesim/Pose]
Subscriptions:
* /turtle1/cmd_vel [geometry_msgs/Twist]
Services:
* /clear
* /kill
* /reset
* /spawn
* /turtle1/set_pen
* /turtle1/teleport_absolute
* /turtle1/teleport_relative
* /turtlesim/get_loggers
* /turtlesim/set_logger_level
contacting node http://u20:33167/ ...
Pid: 4187
Connections:
* topic: /rosout
* to: /rosout
* direction: outbound (51473 - 127.0.0.1:59362) [28]
* transport: TCPROS
* topic: /turtle1/pose
* to: /rqt_gui_py_node_4260
* direction: outbound (51473 - 127.0.0.1:39778) [23]
* transport: TCPROS
* topic: /turtle1/cmd_vel
* to: /teleop_turtle (http://u20:40407/)
* direction: inbound (41832 - u20:48049) [30]
* transport: TCPROS
sen@u20:~$
rostopic 命令
rostopic 是用于管理 ROS 中主题(topic)的工具:
- rostopic list:列出当前所有活跃的主题。
- rostopic echo <topic_name>:显示指定主题的消息内容。
- rostopic info <topic_name>:显示指定主题的详细信息,包括发布者和订阅者。
- rostopic pub <topic_name> <msg_type>:手动发布消息到指定主题。
rostopic echo /turtle1/cmd_vel
---
linear:
x: 2.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0
---
- 让小海龟不停的运动
rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 "linear:
x: 2.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 1.0"
rosservice 命令
rosservice 是用于管理 ROS 中服务(service)的工具:
- rosservice list:列出当前所有活跃的服务。
- rosservice info <service_name>:显示指定服务的详细信息。
- rosservice call <service_name>:调用指定的服务。
rosparam 命令
rosparam 是用于管理 ROS 参数(parameter)的工具:
- rosparam list:列出当前所有参数。
- rosparam get <param_name>:获取指定参数的值。
- rosparam set <param_name> :设置指定参数的值。
rosbag 命令
rosbag 是用于记录和回放 ROS 消息的工具:
- rosbag record <topic_name>:记录指定主题的消息到一个文件。
- rosbag play <bag_file>:回放记录的消息。
roscore 命令
roscore 是 ROS 的核心节点,用于启动 ROS 主节点(master)和参数服务器(parameter server)。虽然它不是一个用于查看的命令,但它通常是运行 ROS 系统时首先启动的。
3 连接 wheeltec R550A PLUS ROS机械臂机器人 建图
小车和电脑同连一个WIFI
小车开机,连接WIFI(WHEELTEC),密码:一般为dongguan。
配置虚拟机环境
sudo gedit .bashrc
尾部添加
// export ROS_MASTER_URI=http://小车ip地址 wheeltec一般为:192.168.0.100
export ROS_MASTER_URI=http://192.168.0.100
export ROS_HOSTNAME=本机ip地址
export SVGA_VGPU10=0
小车中需要类似配置
有线IP:192.168.xx.xx,虚拟机和小车同步改配置
终端1:SSH远程登录
ssh -Y wheeltec@192.168.0.100
小车终端启动建图节点
roslaunch turn_on_wheeltec_robot mapping.launch
终端2:键盘控制小车行驶建图(也可以用app控制小车行驶)
新建一个终端(Ctrl+Alt+T)、按照步骤三(ssh远程登陆)后,在该终端输入以下命令开启键盘控制节点:
roslaunch wheeltec_robot_rc keyboard_teleop.launch
同时打开rviz 添加Map与RobotModel选项,设置话题
$ roscore
$ rosrun rviz rviz
设置话题
/map
/scan
单机键盘控制终端 按照指示按键控制小车行驶建图(边控制行驶,边观察Rviz建图情况)
注: 建图完毕后,不要关闭Rviz!!!
保存地图。
新建一个终端,输入以下命令(切换到要保存的目录下):
cd /home/wheeltec/wheeltec_robot/src/turn_on_wheeltec_robot/map
确定后,可以观察到我们进入了该目录(/home/wheeltec/wheeltec_robot/src/turn_on_wheeltec_robot/map)
再输入:
rosrun map_server map_saver -f 地图名称
即可保存当前地图到该目录下 然后退出rviz并终止建图、键盘控制节点的终端即可
注:终止终端命令(Ctrl+c)
导航模块中切换地图
在turn_on_wheeltec_robot功能包中launch文件夹中找到navigation.launch
大概在第11行——将其中的WHEELTEC换成之前保存的地图名字
启动导航节点。(要将小车放在建图起点)
roslaunch turn_on_wheeltec_robot navigation.launch
打开rviz 手动配置
注:如果不愿意每次都手动配置,可以参考这篇博客:保存Rviz配置 用launch文件启动
注:ssh登录小车,在小车的终端上开启相应节点,但要在上位机的终端开启rviz,小车主控无法承载同时开启节点与rviz
4 地图服务
地图文件
~/wheeltec_robot/src/turn_on_wheeltec_robot/map 下文件
wheeltec@wheeltec:~/wheeltec_robot/src/turn_on_wheeltec_robot/map$ ls
map_saver.launch WHEELTEC_end.yaml WHEELTEC.pgm WHEELTEC.yaml
wheeltec@wheeltec:~/wheeltec_robot/src/turn_on_wheeltec_robot/map$ cat WHEELTEC.yaml
image: /home/wheeltec/wheeltec_robot/src/turn_on_wheeltec_robot/map/WHEELTEC.pgm
resolution: 0.050000
origin: [-5.000000, -15.200000, 0.000000]
negate: 0
occupied_thresh: 0.65
free_thresh: 0.196
运行 map_server
rosrun map_server map_server <your_map_file.yaml>
查看地图服务
运行成功后,你可以通过ROS的 rostopic 和 rosservice 命令来查看和验证地图服务:
查看 /map 话题:
rostopic echo /map
查看地图服务:
rosservice list
5 日志
rosout
在ROS中,有一个特殊的话题叫作/rosout,它承载着所有节点的所有日志消息。/rosout消息的类型是rosgraph_msgs/Log:
rosmsg show rosgraph_msgs/Log
sen@u20:~$ rosmsg show rosgraph_msgs/Log
byte DEBUG=1
byte INFO=2
byte WARN=4
byte ERROR=8
byte FATAL=16
std_msgs/Header header
uint32 seq
time stamp
string frame_id
byte level
string name
string msg
string file
string function
uint32 line
string[] topics
rosgraph_msgs/Log消息用来让各个节点发布日志消息,这样一来就能让网络上的任何一个人都看到。
● DEBUG(调试):只在调试时用,此消息不出现在部署的应用中,仅用于测试;
● INFO(信息):标准消息,说明重要步骤或节点所正在执行的操作;
● WARN(警告):提醒一些错误、缺失或者不正常,但进程仍能运行;
● ERROR(错误):提示错误,尽管节点仍可在这里恢复,但对节点的行为设置了一定期望;
● FATAR(致命):这些消息通常表示阻止节点继续运行的错误。
日志消息有三个不同的输出目的地,包括屏幕、rosout topic、log 文档。其中发布到 rosout topic 的 msg 类型是 rosgraph_msgs/Log。
我们可以通过rostopic echo /rosout 来查看消息,也可以通过一个节点来订阅日志话题,还可以通过指令rqt_console来通过图形界面来显示日志消息:
日志查看工具
rqt_logger_level : rqt_logger_level 用于修改节点的日志输出级别(DEBUG、WARN、INFO、ERROR)
使用以下命令启动
rosrun rqt_logger_level rqt_logger_level
rqt_console : rqt_console 连接 ROS 的日志系统,可以实时显示节点输出
rosrun rqt_console rqt_console
其他
更新源
cd /etc/apt/
cp sources.list sources.list.bk
sudo vim sources.list
添加如下内容
deb https://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
# deb https://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
# deb-src https://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
# 添加上述内容后update
sudo apt-get update
参考
1、ROS–版本选择
2、小鱼的一键安装系列
3、wheeltec nano Ubuntu/Ros/Rviz小车建图及导航操作
4、保存Rviz配置 用launch文件启动
5、【ROS】学习之日志(log)消息
6、手动发布目标点
7、(五)turtlebot3用代码控制机器人直线及圆弧运动(/cmd_vel geometry_msgs/Twist的使用)
8、ROS学习–第2篇:ROS小海龟历程初探