【5. ROS机器人的运动控制】

本文涉及的产品
资源编排,不限时长
简介: 【5. ROS机器人的运动控制】

1. 前言

Ubuntu环境搭建

【经典Ubuntu20.04版本U盘安装双系统教程】

【Windows10安装或重装ubuntu18.04双系统教程】

【Ubuntu同步系统时间】

【Ubuntu中截图工具】

【Ubuntu安装QQ】

【Ubuntu安装后基本配置】

【Ubuntu启动菜单的默认项】

【ubuntu系统中修改hosts配置】

【18.04Ubuntu中解决无法识别显示屏】

ROS学习笔记

【1. Ubuntu18.04安装ROS Melodic】

【2. 在Github上寻找安装ROS软件包】

【3. 初学ROS,年轻人的第一个Node节点】

【4. ROS的主要通讯方式:Topic话题与Message消息】

前期学习了话题和消息,接下来开始ROS机器人的运动控制

1.png

本教程是B站阿杰视频的笔记

视频地址:https://www.bilibili.com/video/BV1od4y1g7Ye


2.png


2. 机器人的运动

伸出你的右手,注意拇指食指和中指互成90度夹角


3.png

4.png

5.png

6.png


3. 机器人的运动速度单位

矢量单位:m/s

旋转单位:rad/s

7.png

8.png


机器人运动分为矢量速度和旋转速度,由XYZ轴分量组成,同为6个速度消息包

9.png


4. geometry_msgs模型

进入ROS index:https://index.ros.org/

找到匹配的noetic版本,进入

10.png

选择Website

11.png

进入geometry_msgs的Twist Message速度消息包

12.png

Twist Message速度消息包包涵两个成员,分别是线性和角度

13.png

点击一个成员,包涵3个64位的浮点数(x/y/z)

14.png

15.png

16.png

5. 用C++实现机器人运动控制

采用wpr_simulation

进入工作空间,重新拉取文件




cd ~/catkin_ws/src/wpr_sipulation/
git pull

17.png

然后退回catkin_ws工作空间,重新编译




cd ~/catkin_ws/
catkin_make

18.png

在这个wpr_simulation中有一个例子程序

打开三个终端分别运行三条指令




roscore
roslaunch wpr_simulation wpb_simple.launch
rosrun wpr_sLnulation deno_vel_ctrl

19.png

机器人开始向前移动,这就是这节我们要实现的控制效果

20.png

实现思路


  1. 构建一个新的软件包,包名叫做vel_pkg。
  2. 在软件包中新建一个节点,节点名叫做vel_node。
  3. 在节点中,向ROS大管家NodeHandle申请发布话题/cmd_vel,并拿到发布对象vel_pub。
  4. 构建一个geometry_msgs/Twist类型的消息包vel_msg,用来承载要发送的速度值。
  5. 开启一个while循环,不停的使用vel_pub对象发送速度消息包vel_msg 。


21.png

5.1 新建vel_pkg包

打开终端


cd ~/catkin_ws/src/
catkin_create_pkg vel_pkg roscpp rospy geonetry_msgs

22.png

VScode打开,在vel_pkg的src文件夹下创建vel_node.cpp

23.png


5.2 编写vel_node.cpp代码

源码如下

#include <ros/ros.h>
#include <geometry_msgs/Twist.h>
int main(int argc, char** argv)
{
  ros::init(argc, argv, "vel_node");
  ros::NodeHandle n;
  ros::Publisher vel_pub = n.advertise<geometry_msgs::Twist>("/cmd_vel", 10);
  geometry_msgs::Twist vel_msg;
  vel_msg.linear.x = 0.1;
  vel_msg.linear.y = 0.0;
  vel_msg.linear.z = 0.0;
  vel_msg.angular.x = 0;
  vel_msg.angular.y = 0;
  vel_msg.angular.z = 0;
  ros::Rate r(30);
  while(ros::ok())
  {
    vel_pub.publish(vel_msg);
    r.sleep();
  }
  return 0;
}


24.png


5.3 设置编译规则

修改CMake文件


add_executable(vel_node src/vel_node.cpp)
add_dependencies(vel_node ${${PROJECT_NANE]_EXPORTED_TARGETS} ${ catkin_EXPORTED_TARGETS})
target_link_libraries(vel_node
  ${catkin_LIBRARLES}
)

25.png

ctrl+s快捷保存

ctrl+shift+b快捷编译

可对照wpr_simulation的demo_vel_ctrl.cpp

26.png

也可以修改旋转的变量


5.4 运行验证

打开三个终端分别运行三条指令




roscore
roslaunch wpr_simulation wpb_simple.launch
rosrun vel_pkg vel_node

27.png

也可以修改旋转的变量


28.png


6. 用python实现机器人运动控制

采用wpr_simulation模板项目

进入工作空间,重新拉取文件




cd ~/catkin_ws/src/wpr_sipulation/
git pull

29.png

然后退回catkin_ws工作空间,重新编译




cd ~/catkin_ws/
catkin_make

30.png

在这个wpr_simulation中有一个例子程序

打开三个终端分别运行三条指令


roscore
roslaunch wpr_simulation wpb_simple.launch
rosrun wpr_sLnulation deno_vel_ctrl.py

31.png

机器人开始向前移动,这就是这节我们要实现的控制效果

32.png


实现思路


  1. 构建一个新的软件包,包名叫做vel_pkg。
  2. 在软件包中新建一个节点,节点名叫做vel_node.py。
  3. 在节点中,向ROS大管家rospy申请发布话题/cmd_vel,并拿到发布对象vel_pub。
  4. 构建一个geometry_msgs/Twist类型的消息包vel_msg,用来承载要发送的速度值。
  5. 开启一个while循环,不停的使用vel_pub对象发送速度消息包vel_msg 。

33.png

6.1 新建vel_pkg包

打开终端




cd ~/catkin_ws/src/
catkin_create_pkg vel_pkg roscpp rospy geonetry_msgs

34.png

VScode打开,在vel_pkg的src文件夹下创建scripts文件夹,然后新建vel_node.py

35.png


6.2 编写vel_node.py代码

先引入python包,设置中文utf-8显示


  1. ros>=20.04,采用python3
  2. ros<20.04,采用python

源码如下

#!/usr/bin/env python3
# coding=utf-8
import rospy
from geometry_msgs.msg import Twist
if __name__ == "__main__":
    rospy.init_node("vel_node")
    # 发布速度控制话题
    vel_pub = rospy.Publisher("cmd_vel",Twist,queue_size=10)
    # 构建速度消息包并赋值
    vel_msg = Twist()
    vel_msg.linear.x = 0.1
    # 构建发送频率对象
    rate = rospy.Rate(10)
    while not rospy.is_shutdown():
        vel_pub.publish(vel_msg)
        rate.sleep()

36.png

6.3 设置执行权限

在所在文件夹打开终端




cd catkin_ws/src/vel_pkg/scripts/
ls
chmod +x vel_node.py
ls


37.png

ctrl+s快捷保存

ctrl+shift+b快捷编译

可对照wpr_simulation的script文件夹下的demo_vel_ctrl.py

38.png


6.4 运行验证

打开三个终端分别运行三条指令




roscore
roslaunch wpr_simulation wpb_simple.launch
rosrun vel_pkg vel_node.py

39.png

也可以修改旋转的变量


7. 总结

本节学习了机器人的运动控制,尝试C++和python两种语言编写控制节点来控制机器人的六个方向的运动,接下来会介绍机器人的雷达传感器的操作。

相关实践学习
使用ROS创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
目录
相关文章
|
1月前
|
Ubuntu 机器人 Linux
|
6天前
|
XML 算法 自动驾驶
ROS进阶:使用URDF和Xacro构建差速轮式机器人模型
【11月更文挑战第7天】本篇文章介绍的是ROS高效进阶内容,使用URDF 语言(xml格式)做一个差速轮式机器人模型,并使用URDF的增强版xacro,对机器人模型文件进行二次优化。
|
11天前
|
自动驾驶 安全 机器人
ROS2:从初识到深入,探索机器人操作系统的进化之路
【11月更文挑战第4天】ROS2的学习过程和应用,介绍DDS系统的框架和知识。
|
1月前
|
传感器 数据可视化 机器人
【ROS速成】半小时入门机器人ROS系统简明教程之可视化系统(三)
半小时入门机器人ROS系统简明教程之可视化系统
|
1月前
|
机器人
【ROS速成】半小时入门机器人ROS系统简明教程之安装测速(二)
半小时入门机器人ROS系统简明教程之安装测速
|
6月前
|
传感器 人工智能 监控
智能耕耘机器人
智能耕耘机器人
136 3
|
7天前
|
机器学习/深度学习 传感器 算法
智能机器人在工业自动化中的应用与前景###
本文探讨了智能机器人在工业自动化领域的最新应用,包括其在制造业中的集成、操作灵活性和成本效益等方面的优势。通过分析当前技术趋势和案例研究,预测了智能机器人未来的发展方向及其对工业生产模式的潜在影响。 ###
36 9
|
3天前
|
机器人 人机交互 语音技术
智能电销机器人源码部署安装好后怎么运行
销售打电销,其中90%电销都是无效的,都是不接,不要等被浪费了这些的精力,都属于忙于筛选意向客户,大量的人工时间都耗费在此了。那么,有这种新型的科技产品,能为你替代这些基本的工作,能为你提升10倍的电销效果。人们都在关心智能语音客服机器人如何高效率工作的问题,今天就为大家简单的介绍下:1、智能筛选系统:电销机器人目前已经达到一个真人式的专家级的销售沟通水平,可以跟客户沟通,筛选意向,记录语音和文字通话记录,快速帮助电销企业筛选意向客户,大大的节约了筛选时间成本和人工成本。2、高速运转:在工作效率上,人工电销员,肯定跟不上智能语音机器人,机器人自动拨出电话,跟客户交谈。电话机
60 0
|
1月前
|
人工智能 搜索推荐 机器人
挑战未来职场:亲手打造你的AI面试官——基于Agents的模拟面试机器人究竟有多智能?
【10月更文挑战第7天】基于Agent技术,本项目构建了一个AI模拟面试机器人,旨在帮助求职者提升面试表现。通过Python、LangChain和Hugging Face的transformers库,实现了自动提问、即时反馈等功能,提供灵活、个性化的模拟面试体验。相比传统方法,AI模拟面试机器人不受时间和地点限制,能够实时提供反馈,帮助求职者更好地准备面试。
51 2
|
3月前
|
人工智能 算法 机器人
机器人版的斯坦福小镇来了,专为具身智能研究打造
【8月更文挑战第12天】《GRUtopia:城市级具身智能仿真平台》新论文发布,介绍了一款由上海AI实验室主导的大规模3D城市模拟环境——GRUtopia。此平台包含十万级互动场景与大型语言模型驱动的NPC系统,旨在解决具身智能研究中的数据稀缺问题并提供全面的评估工具,为机器人技术的进步搭建重要桥梁。https://arxiv.org/pdf/2407.10943
216 60

热门文章

最新文章

推荐镜像

更多