跳转至

ROS 2常用工具:让机器人开发更便捷

Launch:多节点启动与配置脚本

多节点启动脚本

3.1.1 多节点启动方法

$ ros2 launch learning_launch simple.launch.py

命令行参数配置

3.1.2 命令行参数配置

$ ros2 launch learning_launch rviz.launch.py

资源重映射

3.1.3 资源重映射

$ ros2 launch learning_launch remapping.launch.py 
$ ros2 topic pub --rate /turtlesim1/turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 
2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}" 

ROS参数设置

3.1.4 ROS参数设置

$ ros2 launch learning_launch parameters.launch.py 

tf:机器人坐标系管理系统

3.2 tf:机器人坐标系管理系统

tf 命令行操作

3.2.2 tf 命令行操作

$ sudo apt install ros-jazzy-turtle-tf2-py ros-jazzy-tf2-tools 
$ sudo pip3 install transforms3d 

安装成功后,在终端中输入如下命令,启动海龟跟随示例及键盘控制节点。

$ ros2 launch turtle_tf2_py turtle_tf2_demo.launch.py 
$ ros2 run turtlesim turtle_teleop_key 

查看tf树

$ ros2 run tf2_tools view_frames 

查询坐标变换信息

$ ros2 run tf2_ros tf2_echo turtle2 turtle1

坐标系可视化

$ ros2 run rviz2 rviz2 -d $(ros2 pkg prefix --share turtle_tf2_py)/rviz/turtle_rviz.rviz

静态tf广播(Python)

3.2.3 静态tf广播(Python)

$ ros2 run learning_tf static_tf_broadcaster 
$ ros2 run tf2_tools view_frames 

静态tf广播(C++)

3.2.4 静态tf广播(C++)

$ ros2 run learning_tf_cpp static_tf_broadcaster 
$ ros2 run tf2_tools view_frames

动态tf广播(Python)

3.2.5 动态tf广播(Python)

$ ros2 run turtlesim turtlesim_node 
$ ros2 run learning_tf turtle_tf_broadcaster --ros-args -p turtlename:=turtle1 
$ ros2 run tf2_tools view_frames

动态tf广播(C++)

3.2.6 动态tf广播(C++)

$ ros2 run turtlesim turtlesim_node 
$ ros2 run learning_tf_cpp turtle_tf_broadcaster --ros-args -p turtlename:=turtle1 
$ ros2 run tf2_tools view_frames

tf监听(Python)

3.2.7 tf监听(Python)

$ ros2 run learning_tf static_tf_broadcaster 
$ ros2 run learning_tf tf_listener 
$ ros2 run turtlesim turtlesim_node 
$ ros2 run learning_tf turtle_tf_broadcaster --ros-args -p turtlename:=turtle1 
$ ros2 run learning_tf tf_listener --ros-args -p target_frame:=turtle1 
$ ros2 run turtlesim turtle_teleop_key 

tf 监听(C++)

3.2.8 tf 监听(C++)

$ ros2 run learning_tf_cpp static_tf_broadcaster 
$ ros2 run learning_tf_cpp tf_listener
$ ros2 run turtlesim turtlesim_node 
$ ros2 run learning_tf_cpp turtle_tf_broadcaster --ros-args -p turtlename:=turtle1 
$ ros2 run learning_tf_cpp tf_listener --ros-args -p target_frame:=turtle1 
$ ros2 run turtlesim turtle_teleop_key 

海龟跟随(Python)

3.2.9 tf 综合应用示例:海龟跟随(Python)

$ ros2 launch learning_tf turtle_following_demo.launch.py 
$ ros2 run turtlesim turtle_teleop_key 

Gazebo:机器人三维物理仿真平台

3.3 Gazebo:机器人三维物理仿真平台

安装Gazebo

# 安装相关依赖 
$ sudo apt-get update 
$ sudo apt-get install lsb-release wget gnupg 
# 安装Gazebo Harmonic 
$ sudo curl https://packages.osrfoundation.org/gazebo.gpg --output /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg
$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null
$ sudo apt-get update
$ sudo apt-get install gz-harmonic
# 安装Jazzy gz功能包 
$ sudo apt install ros-jazzy-ros-gz 

启动Gazebo

$ gz sim 

机器人仿真示例

3.3.2 机器人仿真示例

$ ros2 launch ros_gz_sim_demos diff_drive.launch.py 
$ ros2 run teleop_twist_keyboard teleop_twist_keyboard --ros-args -r 
cmd_vel:=model/vehicle_blue/cmd_vel 

传感器仿真示例

3.3.3 传感器仿真示例

$ ros2 launch ros_gz_sim_demos rgbd_camera_bridge.launch.py 

RViz:数据可视化平台

tf数据可视化

3.4.3 应用示例一:tf数据可视化

$ ros2 launch learning_tf turtle_following_demo.launch.py 
$ ros2 run turtlesim turtle_teleop_key 

图像数据可视化

3.4.4 应用示例二:图像数据可视化

$ ros2 run usb_cam usb_cam_node_exe 

rosbag:数据记录与回放

记录数据

3.5.1 记录数据

$ ros2 run turtlesim turtlesim_node  
$ ros2 run turtlesim turtle_teleop_key 
$ ros2 topic list -v 
$ mkdir ~/bagfiles 
$ cd ~/bagfiles 
$ ros2 bag record /turtle1/cmd_vel 
$ ros2 bag record -o subset /turtle1/cmd_vel /turtle1/pose 

回放数据

3.5.2 回放数据

$ ros2 bag info <your bagfile> 
$ ros2 bag play <your bagfile>

rqt:模块化可视化工具箱

rqt 安装与使用

3.6.1 rqt 介绍

$ sudo apt install ros-jazzy-rqt 
$ rqt

日志显示

3.6.2 日志显示

$ ros2 run rqt_console rqt_console 

图像显示

3.6.3 图像显示

$ ros2 run rqt_image_view rqt_image_view 

ROS 2开发环境配置

3.7 ROS 2开发环境配置

版本管理软件git

3.7.1 版本管理软件git

$ sudo apt install git 
# 下载一个项目和它的整个代码历史 
$ git clone [url] 

# 添加指定文件到暂存区 
$ git add [file1] [file2] ... 
# 添加指定目录到暂存区,包括子目录 
$ git add [dir] 
# 添加当前目录的所有文件到暂存区 
$ git add . 

# 删除工作区文件,并且将删除操作的文件放入暂存区 
$ git rm [file1] [file2] ... 
# 提交暂存区到仓库区 
$ git commit -m [message] 

# 列出所有本地分支 
$ git branch 
# 列出所有远程分支 
$ git branch -r 
# 列出所有本地分支和远程分支 
$ git branch -a 
# 新建一个分支,但依然停留在当前分支 
$ git branch [branch-name] 
# 新建一个分支,并切换到该分支 
$ git checkout -b [branch] 

# 显示有变更的文件 
$ git status 
# 显示当前分支的版本历史 
$ git log 

# 下载远程仓库的所有变动 
$ git fetch [remote] 
# 显示所有远程仓库 
$ git remote -v 
# 显示某个远程仓库的信息 
$ git remote show [remote] 

# 取回远程仓库的变化,并与本地分支合并 
$ git pull [remote] [branch] 
# 上传本地指定分支到远程仓库 
$ git push [remote] [branch] 

# 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变 
$ git reset [file] 
# 重置暂存区与工作区,与上一次commit保持一致 
$ git reset --hard 
# 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变 
$ git reset [commit] 
# 重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致 
$ git reset --hard [commit] 

# 设置提交代码时的用户信息 
$ git config [--global] user.name "[name]" 
$ git config [--global] user.email "[email address]"

图片1