ROS机器人编程技术架构命令应用

本文涉及的产品
资源编排,不限时长
简介: ROS机器人编程技术架构命令应用

ROS机器人编程技术架构命令应用

通过对ROS基础操作命令的应用,熟练掌握以下技能:

1、掌握ROS架构中基本功能命令的使用方法;

2、能够运用指令在屏幕上生成两个小乌龟做画圆形运动;

3、能够运用rosbag功能包复现小乌龟画五角星运动;

需要配备的硬件:PC微型计算机.软件:Windows操作系统、Ubuntu18.04、ROS Melodic.

ROS第一个例程——小海龟画圆形

  1. 建立ROS工作空间
    打开Home目录,在空白处右击,点击新建文件夹(New Folder)建立一个文件夹,命名为catkin_ws

在文件夹 catkin_ws 下创建一个文件夹 src,在src目录下右键在终端中打开 ,输入$ catkin_init_workspac 此时,src文件夹中出现CMakeLists.txt文件

CMake 是一个跨平台的自动化建构系统,它使用一个名为 CMakeLists.txt 的文件来描述构建过程,可以产生标准的构建文件,如 Unix 的 Makefile 或Windows Visual C++ 的 projects/workspaces 。文件 CMakeLists.txt 需要手工编写,也可以通过编写脚本进行半自动的生成。CMake 提供了比 autoconfig 更简洁的语法。

2.编译工作空间

在catkin_ws文件夹下打开终端,输入catkin_make。在catkin_ws文件夹里生成build和devel两个文件夹。

  1. 配置环境变量
    设置环境变量是为了让系统知道功能包的位置在哪,以便能找到。确保安装脚本正确地覆盖了工作空间,ROS_PACKAGE_PATH环境变量包含在目录中。
    在catkin_ws路径下终端输入 $ source devel/setup.bash,使系统知道功能包放置在catkin_ws这个工作空间下。查看当前环境变量,终端输入 $ echo $ROS_PACKAGE_PATH
  2. ROS机器人画圆程序的编写
    打开终端,在catkin_ws/src路径下新建my_turtle_package包$ catkin_create_pkg my_turtle_package rospy roscpp
    在my_turtle_package/src 中创建cpp文件 $ gedit draw_circle.cpp
    打开draw_circle.cpp,编写画圆代码:
    #include “ros/ros.h”
    #include<geometry_msgs/Twist.h> //运动速度结构体类型 geometry_msgs::Twist的定义文件

int main(int argc, char *argv[])

{

ros::init(argc, argv, “vel_ctrl”); //对该节点进行初始化操作

ros::NodeHandle n; //申明一个NodeHandle对象n,并用n生成一个广播对象vel_pub

ros::Publisher vel_pub = n.advertise<geometry_msgs::Twist>(“/turtle1/cmd_vel”, 10);

//vel_pub会在主题"/cmd_vel"(机器人速度控制主题)里广播geometry_msgs::Twist类型的数据

ROS_INFO(“draw_circle start…”);//输出显示信息

while(ros::ok())

{

geometry_msgs::Twist vel_cmd; //声明一个geometry_msgs::Twist 类型的对象vel_cmd,并将速度的值赋值到这个对象里面

    vel_cmd.linear.x = 2.0;//前后(+-) m/s
    vel_cmd.linear.y = 0.0;  //左右(+-) m/s
    vel_cmd.linear.z = 0.0;

    vel_cmd.angular.x = 0;
    vel_cmd.angular.y = 0;
    vel_cmd.angular.z = 1.8; //机器人的自转速度,+左转,-右转,单位是rad/s
    vel_pub.publish(vel_cmd); //赋值完毕后,发送到主题"/cmd_vel"。机器人的核心节点会从这个主题接受发送过去的速度值,并转发到硬件体上去执行

    ros::spinOnce();//调用此函数给其他回调函数得以执行(比例程未使用回调函数)
}
return 0;

}

打开CMakeLists.txt $ gedit CMakeLists.txt

在CMakeLists.txt文件中找到##Declare a C++ executable,在这一行的前面添加如下内容:

add_executable(draw_circle src/draw_circle.cpp)

target_link_libraries(draw_circle ${catkin_LIBRARIES})

保存并退出CMakeLists.txt文件。然后在terminal中继续输入如下命令进行编译:

$ cd ~/catkin_ws/

$ catkin_make

编译成功

  1. 启动ROS机器人
    打开第一个终端(terminal),启动ros
    $ roscore
    打开第二个终端(terminal),启动rosnode
    $ rosrun turtlesim turtlesim_node
    打开第三个终端(terminal),启动my_turtle_package节点
    $ cd ~/catkin_ws/
    $ source devel/setup.bash
    $ rosrun my_turtle_package draw_circle

ROS第二个例程——复现小海龟画五角星

  1. 启动海龟模拟器
    打开终端Ctrl+Alt+T,输入下面的指令
    ros2 run turtlesim turtlesim_node

即看到这样的界面

  1. 启动海龟遥控器
    点一下原来的终端输入Ctrl+Shift+T 打开一个新的标签页输入
    ros2 run turtlesim turtle_teleop_key
    你可以看到这样子的界面


相关实践学习
使用ROS创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
目录
相关文章
|
4天前
|
弹性计算 Kubernetes 安全
Kubernetes 的架构问题之在Serverless Container中保障应用的安全防护如何解决
Kubernetes 的架构问题之在Serverless Container中保障应用的安全防护如何解决
25 8
|
5天前
|
传感器 人工智能 文字识别
OrangePi AIpro 机器人仿真与人工智能应用测评(下)
OrangePi AIpro 机器人仿真与人工智能应用测评(下)
25 11
|
5天前
|
人工智能 Ubuntu 机器人
OrangePi AIpro 机器人仿真与人工智能应用测评(上)
OrangePi AIpro 机器人仿真与人工智能应用测评
23 8
|
2天前
|
弹性计算 监控 数据挖掘
事件驱动架构的优势与应用:深度解析与实战应用
【8月更文挑战第17天】事件驱动架构以其松耦合、可扩展性、异步处理、实时性和高可靠性等优势,在实时数据处理、复杂业务流程、弹性伸缩和实时通信等多个领域展现出巨大的应用潜力。通过合理应用事件驱动架构,可以构建灵活、可扩展和可维护的系统架构,满足不断变化的业务需求和技术挑战。对于开发者而言,深入理解事件驱动架构的核心概念和优势,将有助于更好地设计和实现高质量的软件系统。
|
5天前
|
存储 Ubuntu 数据可视化
Sawyer 机器人 ROS SDK 配置(三)
Sawyer 机器人 ROS SDK 配置(三)
13 5
|
11天前
|
Cloud Native 云计算 微服务
云原生时代:企业分布式应用架构的惊人蜕变,从SOA到微服务的大逃亡!
【8月更文挑战第8天】在云计算与容器技术推动下,企业分布式应用架构正经历从SOA到微服务再到云原生的深刻变革。SOA强调服务重用与组合,通过标准化接口实现服务解耦;微服务以细粒度划分服务,增强系统灵活性;云原生架构借助容器化与自动化技术简化部署与管理。每一步演进都为企业带来新的技术挑战与机遇。
38 6
|
16天前
|
运维 Cloud Native 云计算
云原生应用架构:从理论到实践
【8月更文挑战第3天】 在数字化转型的浪潮中,云原生技术以其弹性、可扩展和容错特性成为企业IT架构的优选。本文将通过一个简易的云原生应用实例,深入探讨如何将抽象的云原生理念转化为具体操作,并分享实现过程中的关键代码段。读者将获得构建和部署云原生应用的实用知识,同时对云原生带来的变革有更深刻的理解。
|
17天前
|
Cloud Native 持续交付 云计算
探索云原生架构:构建现代应用的基石
在数字化转型的浪潮中,企业正面临前所未有的挑战与机遇。云原生架构,作为一种新兴的应用开发范式,正日益成为企业创新和竞争力提升的关键。本文将深入探讨云原生的核心概念、优势以及实施过程中可能遇到的挑战,旨在为读者提供一份全面的云原生实践指南。
|
19天前
|
Kubernetes Cloud Native 微服务
探索云原生技术:Kubernetes在微服务架构中的应用Python编程之旅:从基础到进阶
【7月更文挑战第31天】随着云计算技术的迅猛发展,云原生概念应运而生,它代表了一种构建和运行应用程序的全新方式。本文将通过实际代码示例,深入探讨Kubernetes这一云原生关键技术如何在微服务架构中发挥其强大的作用。我们将从容器化开始,逐步过渡到Kubernetes集群的搭建与管理,最后展示如何部署和管理一个微服务应用。
31 2

推荐镜像

更多