首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
20 篇文章
1
ROS1&2机器人操作系统免安装在线自主学习平台简介和官方第三方教程列表
2
机器人操作系统二(ROS2)- 启程 Departure
3
机器人操作系统二(ROS2)- 修行 Taoism
4
机器人操作系统二(ROS2)- 仿真 Simulation
5
机器人操作系统二(ROS2)- 实践 Practice
6
ROS2与Arduino发布订阅
7
ROS2网络多机通信DDS和安全加密SROS(多机器人系统)
8
ROS2实时性案例分析之倒立摆系统使用(Inverted pendulum)
9
机器人实践课程镜像分享及使用说明(Arduino+ROS1+ROS2+Gazebo+SLAM+...)
10
使用机器人操作系统ROS 2和仿真软件Gazebo 9搭建机器人教程(一)
11
使用机器人操作系统ROS 2和仿真软件Gazebo 9命令遥控可视化教程(二)
12
使用机器人操作系统ROS 2和仿真软件Gazebo 9环境综合测试教程(三)
13
使用机器人操作系统ROS 2和仿真软件Gazebo 9目标跟踪实践(四)
14
使用机器人操作系统ROS 2和仿真软件Gazebo 9多机器人实践(五)
15
使用机器人操作系统ROS 2和仿真软件Gazebo 9激光传感器算法进阶(六)
16
使用机器人操作系统ROS 2和仿真软件Gazebo 9主题进阶实战(七)- mobot速度发布与里程计订阅
17
使用机器人操作系统ROS 2和仿真软件Gazebo 9服务进阶实战(八)- mobot行驶至目标位置
18
使用机器人操作系统ROS 2和仿真软件Gazebo 9行动进阶实战(九)- mobot区域巡逻
19
ROS 2 Foxy Fitzroy遇见Ubuntu 20.04
20
使用ROS2机器人操作系统进行多机器人编程技术实践(Multi-Robot Programming Via ROS2 )

ROS2实时性案例分析之倒立摆系统使用(Inverted pendulum)

倒立摆是自动控制原理或现代控制理论等经典分析案例,博客有数篇博文针对这样案例给出题目和分析:

本篇主要针对倒立摆小车在ROS2系统中的实现为例,进行详细介绍。

为什么选择使用倒立摆进行实时演示呢?

rviz2中倒立摆小车

平衡倒立摆是通常由实时计算解决的控制问题的经典示例之一。 如果控制器阻塞时间过长,摆锤将掉落或变得不稳定。 但是,如果控制器比控制摆锤的电动机运行的速度更快的速度可靠地更新,则摆锤将成功地对传感器数据做出反应平衡摆锤。

这是一个对实时性要求很高的控制场景!

安装说明:

需要确保ROS2 Dashing等安装完成,并配置好rosdep:

代码语言:javascript
复制
source /opt/ros/dashing/setup.bash
mkdir -p ~/pendulum_ws/src
cd ~/pendulum_ws/src
git clone https://github.com/ros2-realtime-demo/pendulum
cd ~/pendulum_ws
sudo rosdep init
rosdep update
rosdep install -q -y --from-paths src --ignore-src --rosdistro dashing
colcon build --merge-install # OR colcon build --symlink-install

示例运行说明:

终端1:启动倒立摆pendulum_bringup

代码语言:javascript
复制
ros2 launch pendulum_bringup pendulum_bringup.launch.py

初始化

终端2:启动管理器pendulum_manager

代码语言:javascript
复制
ros2 run pendulum_manager pendulum_manager

详细管理选项

终端3:启动三维可视化rviz2

代码语言:javascript
复制
export LC_NUMERIC="en_US.UTF-8" # Make sure that your locales are correctly setup.
ros2 run rviz2 rviz2 -d `ros2 pkg prefix pendulum_bringup --share`/config/pendulum.rviz

rviz2

如果一切正常,即可看到倒立摆:

倒立摆三维可视化界面

可以使用topic、node、service、rqt等命令进行复习。

rqt

基础课程参考链接:ROS2零基础快速入门 如果想要学习Gazebo仿真,参考:Gazebo和ROS2的使用说明

详细教程会逐步补充。

再开启一个新终端,输入设置位置命令,使倒立摆小车位于位置0:

代码语言:javascript
复制
ros2 topic pub -1 /pendulum_setpoint pendulum_msgs_v2/msg/PendulumCommand "cart_position: 0.0"

位置0

位置+4:

代码语言:javascript
复制
ros2 topic pub -1 /pendulum_setpoint pendulum_msgs_v2/msg/PendulumCommand "cart_position: 4.0"

位置4

位置-3:

代码语言:javascript
复制
ros2 topic pub -1 /pendulum_setpoint pendulum_msgs_v2/msg/PendulumCommand "cart_position: -3.0"

位置-3

除了位置设置,还支持力输入等,自行学习研究。

ros2 topic pub -1 /pendulum_setpoint pendulum_msgs_v2/msg/PendulumCommand "cart_position: -5.0"

position

ros2 topic pub -1 /pendulum_disturbance pendulum_msgs_v2/msg/PendulumCommand "cart_force: 100"

force

节点管理

演示中使用的主要节点是/pendulum_controller和/pendulum_driver。 也就是说,它们从生命周期节点继承,可以控制节点状态。

标题

所有配置和内存分配必须在onConfigure转换中完成。 在活动状态下,所有计算都应实时兼容。 目前可能还不完全正确,但这是目标。

创建包pendulum_manager的目的是为了更轻松地控制节点的状态。 这个软件包还处于初期,其想法是使这个软件包成为带有控制面板的rqt插件。

只是为了好玩,可以尝试在仿真处于活动状态时停用控制器节点,以查看摆锤的下落。

取消控制,摆下落

更多介绍,后续补充……

下一篇
举报
领券