AI结合机器人的入门级仿真环境有哪些?

news2024/11/16 1:23:27

由于使用真实的机器人开发和测试应用程序既昂贵又费时,因此仿真已成为机器人应用程序开发中越来越重要的部分。在部署到机器人之前在仿真中验证应用程序可以通过尽早发现潜在问题来缩短迭代时间。通过模拟,还可以更轻松地测试在现实世界中可能过于危险的极端情况或场景。

1.8.1 Python模拟机器人环境
Pygame:

在python中,带有GUI窗口的Pygame经常用于环境模拟。Pygame是游戏开发的函数库。Pygame的核心包括图像处理、获取操作杆输入、多媒体音视频特效这些。青少年和大学生经常用于pygame 开发射击游戏、平衡特技猫等。

图片

有特技的猫

随着人工智能神经网络的发展,经常有学生和爱好者使用pygame搭配开发神经网络用于快速验证。

Pyglet:

pyglet是一个功能强大但易于使用的Python库,用于在Windows、macOS和Linux上开发游戏和其他视觉丰富的应用程序。它支持窗口、鼠标和键盘、控制器、操纵杆、显示图像、照片和视频以及播放声音和音乐。

图片

基于AI的智能乒乓机

Piglet和pygame 比较列表:

在这里插入图片描述

1.8.2 Webots
在机器人的世界中,有各种各样的仿真模拟器,例如gazebo、matlab的simulink、以及今天要介绍的webots。这些形形色色的仿真软件,给了机器人工程师们有了无限创造的可能。让工程师们,在没有实物的情况下,也能上手开发机器人。今天,我们就来看看这一款webots仿真模拟器。

webots仿真模拟器是根据Apache2.0许可条款发布的开源机器人模拟器。它提供了一个完整的开发环境来对机器人、车辆和生物力学系统进行建模、编程和仿真。webots的GitHub地址:

https://github.com/cyberbotics/webots

webots有着界面友好,资料齐全,上手快速,操作便捷等特点,它能提供的仿真也很强大。提供ros和ros2的接口。支持C/C++、python、JavaScript编程。

无人机 机械臂 机械狗 室内机器人。

图片

Webots的仿真环境搭建

Webots是一个用于模拟机器人的开源和多平台桌面应用程序。由cyberbotics公司开发,它提供了一个完整的开发环境来建模、编程和模拟机器人。包括模拟3D的可见模型和具备可度量的物理属性,以及类似KEIL编程软件的IDE,支持gcc 中的make,除此之外还可以使用java/python 等编程语言。

图片

         结合ROS构建地图

它专为专业用途而设计,广泛用于工业、教育和研究。

创建各种各样的模拟,包括两轮台式机器人、 工业手臂、 双足机器人、 多腿机器人、 模块化机器人、 汽车、 飞行无人机、 自主水下航行器、 履带式机器人、 航空航天器等。设置 室内或 室外 交互环境。

使用 Webots创建机器人原型,开发、测试和验证您的 AI 和控制算法。

图片

               案例

图片

                   合并图像

此示例演示了将两个相机图像合并为一个图像,以创建立体图像。立体相机安装在iRobot Create机器人上。在每一步,两个相机图像都被合并到一个显示设备中,一个被过滤成红色,另一个被过滤成青色。这会产生可以使用低成本红色/青色 3D 眼镜看到的立体 3D 图像。

图片

               模仿昆虫机器人

在此示例中,昆虫形机器人由LinearMotor和RotationalMotor设备组合而成。机器人使用交替的三脚架步态移动。

图片

                  月球机器人

两个KT机器人 (K-Team) 在月球的表面上盘旋。可以使用键盘上的箭头键修改它们的轨迹。月亮般的风景由IndexedFaceSet节点组成。两个机器人使用相同的控制器代码。

图片

                  足球台控制场景

两队简单的机器人在踢足球。Supervisor控制器作为裁判;它计算进球数并在 3D 视图中显示当前比分和剩余时间。此示例显示了如何使用Supervisor控制器读取和更改对象的位置。

图片

                 室内场景

为扫地机器人搭建的室内仿真环境,模拟实现了桌子、墙面、椅子、灯光等,通过编程python程序可以实现扫地机器人的行驶。

支持的轮式机器人还有两轮、四轮、机器狗等。

支持的传感器还有摄像头、雷达、陀螺仪、定位系统等。

Webots控制器可以用C/C++、Java、Python 或MATLAB TM编写。除了句法差异外,所有这些语言都共享相同的低级实现。只要函数/方法调用的顺序不变,每种编程语言都会产生完全相同的模拟结果。因此,此处使用 C 示例解释的概念也适用于 C++、Java、Python 和 MATLAB。

编程示例

下面是一个读取左右电机和传感器的简单demo.

#include <webots/robot.h>

#include <webots/motor.h>

#include <webots/distance_sensor.h>
#define TIME_STEP 32

int main()
{

wb_robot_init();
WbDeviceTag left_sensor = wb_robot_get_device(“left_sensor”); WbDeviceTag right_sensor = wb_robot_get_device(“right_sensor”); wb_distance_sensor_enable(left_sensor, TIME_STEP); wb_distance_sensor_enable(right_sensor, TIME_STEP);
WbDeviceTag left_motor = wb_robot_get_device(“left_motor”); WbDeviceTag right_motor = wb_robot_get_device(“right_motor”); wb_motor_set_position(left_motor, INFINITY); wb_motor_set_position(right_motor, INFINITY); wb_motor_set_velocity(left_motor, 0.0); wb_motor_set_velocity(right_motor, 0.0);
while (wb_robot_step(TIME_STEP) != -1) {
// 读取传感器

const double left_dist = wb_distance_sensor_get_value(left_sensor);

const double right_dist = wb_distance_sensor_get_value(right_sensor);
// 计算速度

const double left = compute_left_speed(left_dist, right_dist); const double right = compute_right_speed(left_dist, right_dist);
// 设置速度

wb_motor_set_velocity(left_motor, left); wb_motor_set_velocity(right_motor, right);

}
wb_robot_cleanup();

return 0;

}
总结

webots搭建环境比较方便,但是一个复杂的环境可能会费点时间,笔者用webots搭建室内环境用于slam建图仿真话还挺有趣。另外还可以和ros平台通信。相比gazebo 比较容易入手。

可以通过cyberbotics 的官网 下载。

https://www.cyberbotics.com/

本书中使用R2023a的版本大小大约200多M, 且安装在windows 下。

webots自带很多DEMO。打开一个模型DEMO,等待下载完成后就可以查看仿真效果,拷贝到自己的工程后就可以编辑程序了。

模型DEMO中有加速度模型、摄像机模型、超声测距模型、图像识别模型、陀螺仪模型、编码、激光雷达模型,可以说把机器人中能用到的传暗器基本都囊括了。

Windows环境下使用 python时,需要先安装python软件,并将python.exe设置成全局路径, 还需要打开cmd.exe 安装opencv 和相关的库 。

Python3 -m pip install opencv-python

1.8.2 unity
unity也就是一个游戏引擎。具体来说游戏引擎是开发者开发内容的工具,整合了很多功能,只要将相关美术模型导入其中,就能添加其他的灯光、物理、特效、动画等等。

Unity又可以称为Unity3D,是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。目前其市场占有率已经超过其他的软件开发平台,目前国内的许多手游都是基于该平台开发的。

图片

1.8.3 udacity
https://github.com/Zhenye-Na/e2e-learning-self-driving-cars

自动驾驶汽车是当今研究和商业中最热门和最有趣的话题。越来越多的大公司已经跳入这一领域。在这个项目中,我实现了 Nvidia Research 在这篇论文中提出的 CNN 模型,使用 PyTorch 从车辆仿真软件中的 3 个摄像头中提取特征来预测转向角。这是一种应用于自动驾驶的端到端方法。

Udacity使用 Unity开发的自动驾驶汽车模拟器。Udacity 需要google 账户对国内开发者不太友好。

目前使用udcity和unity完成端到端自动驾驶的训练,如下3路摄像头示意的场景,

图片

神经网络对3路图像训练输出油门和方向控制,实现自动驾驶。

公号:视觉动力机器人

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1568370.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

优酷动漫顶梁柱!神话大乱炖的修仙番为何火爆?

优酷动漫新晋顶梁柱&#xff0c;实时超160万在追的修仙番长啥样&#xff1f; 由优酷动漫联合玄机科技打造的《师兄啊师兄》俨然成为了国漫界一颗璀璨的新星。自去年开播以来热度口碑双丰收&#xff0c;今年在播的第二季人气更是节节攀升&#xff0c;稳坐优酷动漫榜第一把交椅。…

水果销售(源码+文档)

水果销售管理系统&#xff08;小程序、ios、安卓都可部署&#xff09; 文件包含内容程序简要说明含有功能项目截图客户端添加地址首页商品详细意见反馈待发货商品分类我的代付款我的地址搜索防骗指南资料修改登录注册 后端管理分类管理反馈管理订单管理商品管理用户管理 文件包…

Java23种设计模式

本文主要是对Java中一些常用的设计模式进行讲解 后期会进行不断的更新&#xff0c;欢迎浏览 23种设计模式 创建型模式&#xff0c;共五种&#xff1a;工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式。结构型模式&#xff0c;共七种&#xff1a;适配器模式、桥接…

实战篇02:注册接口

实战篇02&#xff1a;注册接口 一、注册 1.1、接口信息 1.1.1 基本信息 请求路径&#xff1a;/user/register 请求方式&#xff1a;POST 接口描述&#xff1a;该接口用于注册新用户 1.1.2 请求参数 请求参数格式&#xff1a;x-www-form-urlencoded 请求参数说明&#xff1…

深入浅出 -- 系统架构之微服务架构

1.1 微服务的架构特征&#xff1a; 单一职责&#xff1a;微服务拆分粒度更小&#xff0c;每一个服务都对应唯一的业务能力&#xff0c;做到单一职责 自治&#xff1a;团队独立、技术独立、数据独立&#xff0c;独立部署和交付 面向服务&#xff1a;服务提供统一标准的接口&…

二维码的生成、下载Java,并返回给前端展示

分析 将生成的二维码图片&#xff0c;以IO流的方式&#xff0c;通过response响应体直接返回给请求方。 第一、不需要落到我们的磁盘&#xff0c;操作在内存中完成&#xff0c;效率比较高。 第二、所有生成二维码的请求&#xff0c;都可以访问这里&#xff0c;前端直接拿img标…

【Django学习笔记(三)】BootStrap介绍

BootStrap介绍 前言正文1、BootStrap 快速了解2、初识BootStrap2.1 下载地址2.2 创建目录2.3 引入BootStrap2.4 使用BootStrap 3、BootStrap 组件&样式3.1 导航条3.2 栅格系统3.3 container3.3.1 container3.3.2 container-fluid 3.4 面板3.5 媒体对象3.6 分页3.7 图标3.7.…

RedHat9中KVM虚拟机的配置与管理

KVM虚拟技术介绍 Linux的KVM&#xff08;Kernel-based Virtual Machine&#xff09;虚拟技术是一种基于Linux内核的虚拟化解决方案。它允许在单个物理服务器上创建和运行多个隔离的虚拟机&#xff0c;每个虚拟机都有自己的操作系统和应用程序&#xff0c;就像运行在独立的物理…

基于SpringBoot+Vue的版权检测管理系统的设计和实现【附源码】

1、系统演示视频&#xff08;演示视频&#xff09; 2、需要交流和学习请联系

ALPHA开发板上PHY网络芯片LAN8720

一. 简介 正点原子的开发板 ALPHA开发板&#xff0c;有线网络硬件方案所使用的也是最常用的一种方案&#xff0c;IMX6ULL芯片内部是自带 MAC网络芯片的&#xff0c;所以&#xff0c;也就是采用 "SOC内部集成网络MAC外设 PHY网络芯片方案"。 ALPHA开发板使用的PHY网…

web框架的本质初识

1.什么是HTML HTML是一个超文本语言&#xff0c;是一种创建网页结构的标记语言。就是你女朋友化妆之后的样子 2.什么是HTTP协议 是一种用于在Web上传输数据的协议。它是客户端和服务器之间进行相互通信的基础的协议 3.HTTP的特点 无连接&#xff1a;每个http请求都是独立的…

go库x/text缺陷报告CVE-2022-32149的处理方案

#问题描述 go库 golang.org/x/text &#xff0c;注意这里不是go的源码&#xff0c; 在0.3.8版本之前存在一个缺陷(Vulnerability) 缺陷ID CVE-2022-32149 具体描述 攻击者可以通过制作一个Accept-Language报头来导致拒绝服务。 具体的原因是&#xff0c;在解析这个Accept-L…

Vue 如何快速上手

目录 1. Vue 是什么 &#xff08;概念&#xff09; 1.1. Vue 的两种使用方式 1.2. 优点 1.3. 缺点 2. 创建 Vue 实例&#xff0c;初始化渲染 2.1. 步骤&#xff08;核心步骤 4步&#xff09; 2.2. 练习——创建一个Vue实例 3. 插值表达式 {{ }} 3.1. 介绍 3.2. 作用…

【Linux实验室】NFS、DHCP的搭建

NFS、DHCP的搭建 1、nfs服务搭建及测试什么是NFS&#xff1f;环境准备服务端机器安装nfs-utils和rpcbind包启动NFS服务创建/data/NFSdata目录&#xff0c;配置nfs文件启动服务挂载测试在服务端在共享目录下创建文件测试在客户端在共享目录下创建文件 2、dhcp服务搭建及测试什么…

python相对路径导包与绝对路径导包的正确方式

【python相对路径导包与绝对路径导包的正确方式】 python相对路径导包与绝对路径导包的正确方式_哔哩哔哩_bilibilipython导包的难题&#xff0c;今天解决了&#xff0c;相对路径导包和绝对路径导包&#xff0c;均可以&#xff01;&#xff01;&#xff01;, 视频播放量 5、弹…

golang 归并回源策略

前言 下面是我根据业务需求画了一个架构图&#xff0c;没有特别之处&#xff0c;很普通&#xff0c;都是我们常见的中间件&#xff0c;都是一些幂等性GET 请求。有一个地方很有意思&#xff0c;从service 分别有10000 qps 请求到Redis&#xff0c;并且它们的key 是一样的。这样…

GDPU 竞赛技能实践 天码行空6

&#x1f4d6; 敌兵布阵 C国的死对头A国这段时间正在进行军事演习&#xff0c;所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况。由于采取了某种先进的监测手段&#xff0c;所以每个工…

数据库管理工具 DBeaverUE for Mac激活版

DBeaverUE for Mac是一款功能强大且易于使用的数据库管理工具&#xff0c;专为Mac用户设计。它支持多种数据库类型&#xff0c;如MySQL、PostgreSQL、Oracle等&#xff0c;使得用户可以轻松管理和操作各种数据库。 软件下载&#xff1a;DBeaverUE for Mac激活版下载 DBeaverUE …

GrayLog日志平台的基本使用-接入jumpserver

1、jumpserver3.8.0部署 Docker 环境准备 # 安装依赖包 yum install -y yum-utils device-mapper-persistent-data lvm2 # 添加源 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 替换Docker 安装源为清华大学镜像站 sed -i sh…

《pytorch深度学习实战》学习笔记第2章

第2章 预训练网络 讨论3种常用的预训练模型&#xff1a; 1、根据内容对图像进行标记&#xff08;识别&#xff09; 2、从真实图像中生成新图像&#xff08;GAN&#xff09; 3、使用正确的英语句子来描述图像内容&#xff08;自然语言&#xff09; 2.1 获取一个预训练好的网络…