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

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

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.hqwc.cn/news/591606.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图的深度优先遍历DFS得到各节点的度

在 一文中&#xff0c;我们通过了广度优先搜索来得到图结构中各结点的度&#xff0c;在这一篇文章中&#xff0c;我们要通过深度优先搜索来得到图结构中各结点的度。 初始化 初始化&#xff0c;在下面的代码中&#xff0c;我们创建了一个具有6个结点的图结构&#xff0c;以及…

MHA高可用-解决MySQL主从复制的单点问题

目录 一、MHA的介绍 1&#xff0e;什么是 MHA 2&#xff0e;MHA 的组成 2.1 MHA Node&#xff08;数据节点&#xff09; 2.2 MHA Manager&#xff08;管理节点&#xff09; 3&#xff0e;MHA 的特点 4. MHA工作原理总结如下&#xff1a; 二、搭建 MySQL MHA 实验环境 …

NoSQL之Redis

目录 一、关系型数据库与非关系型数据库 1.关系数据库 2.非关系数据库 2.1非关系型数据库产生背景 3.关系型数据库与非关系型数据区别 &#xff08;1&#xff09;数据存储方式不同 &#xff08;2&#xff09;扩展方式不同 &#xff08;3&#xff09;对事物性的支持不同 …

VSCode常用修改默认设置(settings.json)

❓ 问题1 我现在在vscode中鼠标选中某个单词&#xff0c;相同的单词都会自动出现一个高亮背景色&#xff0c;我需要怎么关闭这个功能呢&#xff1f; ⚠️ 注意 selectionHighlight 这个是鼠标双击后的高亮匹配&#xff0c;可以保留默认开启的配置&#xff0c;不用去改它。 …

智能革命:ChatGPT3.5与GPT4.0的融合,携手DALL·E 3和Midjourney开启艺术新纪元

迷图网(kk.zlrxjh.top)是一个融合了顶尖人工智能技术的多功能助手&#xff0c;集成了ChatGPT3.5、GPT4.0、DALLE 3和Midjourney等多种智能系统&#xff0c;为用户提供了丰富的体验。以下是对这些技术的概述&#xff1a; ChatGPT3.5是由OpenAI开发的一个自然语言处理模型&#x…

Git的简单入门使用

文章目录 拷贝项目的步骤创建项目的步骤提交项目或项目文件的步骤恢复项目文件的步骤 拷贝项目的步骤 找到需要用来存放项目的文件夹&#xff1b;在文件夹页面空白处右键点击&#xff0c;然后再菜单中选择“Open Git Bash here”。在Github上找到需要进行拷贝的项目&#xff0…

SpringMvc工作流程

用户通过浏览器发送请求到前端控制器DispatcherServlet。前端控制器直接将请求转给处理器映射器HandlerMapping。处理器映射器HandlerMapping会根据请求&#xff0c;找到负责处理该请求的处理器&#xff0c;并将其封装为处理器执行链HandlerExecutionChina后返回给前端控制器Di…

第33次CCF计算机软件能力认证

好菜。。而且这次是什么神仙打架&#xff0c;平均分居然201。。 不到一小时做完T1T2&#xff0c;之后一个小时做T4拿了30。剩下的时间做T3&#xff0c;没做出来&#xff08;哭了 看来是得练大模拟了&#xff08;痛苦~~>_<~~

Java中异常详解

文章目录 异常介绍存在形式程序中异常发生后的第一反应体系JVM的默认处理方案处理方式声明 throws概述格式抛出 throw格式注意意义 throws和throw的区别 捕获 try,catch介绍格式执行方式多异常捕获处理意义 如何选择用哪个 Throwable类介绍常用方法 自定义异常概述实现步骤范例…

Vulnhub:WESTWILD: 1.1

目录 信息收集 arp nmap nikto whatweb WEB web信息收集 dirmap enm4ulinux sumbclient get flag1 ssh登录 提权 横向移动 get root 信息收集 arp ┌──(root㉿ru)-[~/kali/vulnhub] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 0…

蓝桥杯—DS1302

目录 1.管脚 2.时序&官方提供的读写函数 3.如何使用读写函数 4.如何在数码管中显示在DS1302中读取出的数据&#xff1f; 1.管脚 2.时序&官方提供的读写函数 /* # DS1302代码片段说明1. 本文件夹中提供的驱动代码供参赛选手完成程序设计参考。2. 参赛选手可以自行…

分享一款实用的太阳能充电电路(室内光照可用)

随着物联网的发展&#xff0c;很多智能电子设备都朝着低功耗方向发展&#xff0c;光能&#xff0c;风能&#xff0c;机械能等不同的自然能源都能被利用起来作为电子设备的能量来源&#xff0c;本文要分享一款太阳能充电电路。 前言 大家好&#xff0c;我又来分享电路了&#…