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路图像训练输出油门和方向控制,实现自动驾驶。

公号:视觉动力机器人

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux文件搜索工具(gnome-search-tool)

opensuse下安装: sudo zypper install gnome-search-tool 操作界面:

【剑指offr--C/C++】JZ59 滑动窗口的最大值

一、题目 二、思路及代码 暴力解法是依次往后滑动一位&#xff0c;然后比较窗口内的值。 我这里考虑&#xff1a;窗口每次往后移动一位&#xff0c;那么如果当前窗口的最大值max在窗口内部&#xff0c;那么再滑动到下一个窗口的时候&#xff0c;窗口内只有最新进来的一个元素没…

解决:CloudCompare中display选择Full screen后无法恢复且无法关闭

问题 在CloudCompare中display选择Full screen进行全屏显示时&#xff0c;软件各按钮失效且软件无法关闭 解决 按下F9键退出全屏模式&#xff0c;笔记本电脑可能需要FnF9同时按下。

算法 - 符号表-下

&#x1f600;前言 推荐从上看到下 算法 - 符号表-上 &#x1f3e0;个人主页&#xff1a;尘觉主页 文章目录 算法 - 符号表查找树1. 插入操作2. 性质 红黑树1. 左旋转2. 右旋转3. 颜色转换4. 插入5. 分析 散列表1. 散列函数2. 拉链法3. 线性探测法3.1 查找3.2 插入3.3 删除3.5 …

中兴天机A31 A31PRO 5G zte A2122H te A2022H 解锁BootLoader root权限 教程magisk,原厂刷机包

zte A2122H P768A02 zte A2022H P875A02 中兴天机A31 A31PRO 5G zte A2122H te A2022H 解锁BootLoader root教程magisk&#xff0c;原厂刷机包 感谢 某大神支持&#xff0c;已经解锁root 刷了面具&#xff1b; 中兴天机A31 A31PRO 5G zte A2122H te A2022H 解锁BootLoad…

Oracle 数据库中的全文搜索

Oracle 数据库中的全文搜索 0. 引言1. 整体流程2. 创建索引2-1. 创建一个简单的表2-2. 创建文本索引2-3. 查看创建的基础表 3. 运行查询3-1. 运行文本查询3-2. CONTAINS 运算符3-3. 混合查询3-4. OR 查询3-5. 通配符3-6. 短语搜索3-7. 模糊搜索&#xff08;Fuzzy searches&…

Francek Chen 的128天创作纪念日

目录 Francek Chen 的128天创作纪念日机缘收获日常成就憧憬 Francek Chen 的128天创作纪念日 Francek Chen 的个人主页 机缘 不知不觉的加入CSDN已有两年时间了&#xff0c;最初我第一次接触CSDN技术社区是在2022年4月的时候&#xff0c;通过学长给我们推荐了几个IT社区平台&a…

代码随想录-力扣刷题-总结笔记02

代码随想录&#xff1a;代码随想录力扣&#xff1a;力扣 (LeetCode) 全球极客挚爱的技术成长平台 代码随想录-力扣刷题-总结笔记01代码随想录-力扣刷题-总结笔记02 目录 01、代码随想录 00、其他 ArrayList转数组 07、二叉树 7.0、递归法 7.1、二叉树的层序遍历模板 7.2…

Lan仿朋友圈系统开源源码 表白墙 打造朋友圈工具 仿朋友圈界面 朋友圈模拟器在线

(购买本专栏可免费下载栏目内所有资源不受限制,持续发布中,需要注意的是,本专栏为批量下载专用,并无法保证某款源码或者插件绝对可用,介意不要购买!购买本专栏住如有什么源码需要,可向博主私信,第二天即可发布!博主有几万资源) Lan仿朋友圈系统开源,可用于表白墙等…

STL中各类容器详细介绍

STL介绍 STL&#xff08;Standard Template Library&#xff09;&#xff0c;即标准模板库&#xff0c;是一个具有工业强度的&#xff0c;高效的C程序库。它被容纳于C标准程序库&#xff08;C Standard Library&#xff09;中&#xff0c;是ANSI/ISO C标准中最新的也是极具革命…

tsv、csv、xls等文件类型区别及处理(python版)

目录 前言 介绍 tsv、csv、txt的区别 读取/生成 不同格式数据文件&#xff08;python&#xff09; 一、读取/生成csv数据文件 二、读取/生成txt数据文件 三、读取/生成tsv数据文件 四、读取/生成xls数据文件 不同文件格式转化 总结 前言 考虑到进行机器学习、深度学习…

代码随想录day35--动态规划的应用2||01背包理论基础、携带研究材料

01背包理论基础 有n件物品和一个最多能背重量为w的背包。第i件物品的重量是weight[i],得到的价值为 value[i]。每件物品只能用一次&#xff0c;将这些物品装入背包里物品价值总和最大。 这是很标准的背包问题&#xff0c;很多同学看到后很自然的就想到了背包&#xff0c;我们…

【Linux学习】Linux 的虚拟化和容器化技术

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…

少儿编程 2024年3月电子学会图形化编程等级考试Scratch一级真题解析(选择题)

2024年3月scratch编程等级考试一级真题 选择题&#xff08;共25题&#xff0c;每题2分&#xff0c;共50分&#xff09; 1、单击下列哪个按钮&#xff0c;能够让舞台变为“全屏模式” A、 B、 C、 D、 答案&#xff1a;C 考点分析&#xff1a;考查scratch平台的使用&…

java中Date类,SimpleDateFormat类和Calendar类

Date类 public Date() 创建一个Date对象&#xff0c;代表的是系统当前此刻的日期时间 public Date(long date) Constructs a Date object using the given milliseconds time value. 把时间毫秒值转变成Date日期对象 public void setTime(long date) Sets an existing Date ob…

【爬虫开发】爬虫从0到1全知识md笔记第3篇:数据提取概要,知识点【附代码文档】

爬虫开发从0到1全知识教程完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;爬虫课程概要&#xff0c;爬虫基础爬虫概述,,http协议复习。requests模块&#xff0c;requests模块1. requests模块介绍,2. response响应对象,3. requests模块发送请求,4. request…

接口练习题目

练习一 1、声明接口Eatable&#xff0c;包含抽象方法public abstract void eat(); 2、声明实现类中国人Chinese&#xff0c;重写抽象方法&#xff0c;打印用筷子吃饭 3、声明实现类美国人American&#xff0c;重写抽象方法&#xff0c;打印用刀叉吃饭 4、声明实现类印度人Indi…

深入Tauri开发——从环境搭建到项目构建

深入Tauri开发——从环境搭建到项目构建 开启你的Tauri桌面应用开发之旅&#xff08;续&#xff09; 经过上一篇文章的基础介绍&#xff0c;现在让我们更进一步&#xff0c;详细阐述如何在Windows和macOS平台上顺利搭建Tauri应用所需的开发环境&#xff0c;并指导您从创建项目…

Python搭建编程环境-安装Python3解释器

✅作者简介&#xff1a;CSDN内容合伙人、新星计划第三季Python赛道Top1&#x1f3c5; &#x1f525;本文已收录于Python系列专栏&#xff1a;零基础学Python &#x1f4ac;订阅专栏后可私信博主进入Python学习交流群&#xff0c;进群可领取Python视频教程以及Python相关电子书…

数据结构——图的应用(最小生成树,最短路径,拓扑排序,关键路径)

目录 1.最小生成树 1.概念回顾——生成树 2.最小生成树概念 2.构造最小生成树 1.MST性质 2.Prim算法 3.Kruskal 算法 4.两种算法比较 3.最短路径 1.两点间最短路径 2.某源点到其它各点最短路径 3.单源最短路径——用Dijkstra算法 4.所有顶点间的最短路径…