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.rhkb.cn/news/299300.html

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

相关文章

【每日刷题】Day3

【每日刷题】Day3 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; 目录 1. 69. x 的平方根 - 力扣&#xff08;LeetCode&#xff09; 2. 70. 爬楼梯 - 力扣&#xff08;LeetCode&#xff09; 3. 118. 杨辉三…

ZYNQ学习Linux 基础外设的使用

基本都是摘抄正点原子的文章&#xff1a;《领航者 ZYNQ 之嵌入式Linux 开发指南 V3.2.pdf》&#xff0c;因初次学习&#xff0c;仅作学习摘录之用&#xff0c;有不懂之处后续会继续更新~ 工程的创建参考&#xff1a;《ZYNQ学习之Petalinux 设计流程实战》 一、GPIO 之 LED 的使…

docker安装jenkins 2024版

docker 指令安装安装 docker run -d --restartalways \ --name jenkins -uroot -p 10340:8080 \ -p 10341:50000 \ -v /home/docker/jenkins:/var/jenkins_home \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /usr/bin/docker:/usr/bin/docker jenkins/jenkins:lts访问…

耐腐蚀耐高温实验室塑料烧杯进口高纯PFA材质反应器特氟龙烧杯

PFA烧杯在实验过程中可作为储酸容器或涉及强酸强碱类实验的反应容器&#xff0c;用于盛放样品、试剂&#xff0c;可搭配电热板加热、蒸煮、赶酸用。 外壁均有凸起刻度&#xff0c;直筒设计&#xff0c;带翻边&#xff0c;便于夹持和移动&#xff0c;边沿有嘴&#xff0c;便于倾…

深挖苹果Find My技术,伦茨科技ST17H6x芯片赋予产品功能

苹果发布AirTag发布以来&#xff0c;大家都更加注重物品的防丢&#xff0c;苹果的 Find My 就可以查找 iPhone、Mac、AirPods、Apple Watch&#xff0c;如今的Find My已经不单单可以查找苹果的设备&#xff0c;随着第三方设备的加入&#xff0c;将丰富Find My Network的版图。产…

GitOps - 为 OpenShift GitOps 配置邮件通知

《OpenShift 4.x HOL教程汇总》 说明&#xff1a;本文已经 在OpenShift 4.15 OpenShift GitOps 1.11.2 环境中验证 文章目录 ArgoCD 的 Notification 功能简介启动 OpenShift GitOps 的 Notification 功能配置邮件通知验证参考 说明&#xff1a;先根据《OpenShift 4 之 GitOp…

vue创建项目下载动态路由v-for mounted websocket :style :class store使用说明

在Vue中创建一个项目&#xff0c;并整合动态路由、v-for、mounted生命周期钩子、WebSocket、:style、:class以及Vuex的store&#xff0c;涉及到多个Vue核心特性的使用。下面我将简要说明如何逐步整合这些特性。 1. 创建Vue项目 使用Vue CLI创建项目&#xff1a; 2. 配置动态路…

sourcetree提交代码出现闪退报错(已解决)

当我在sourcetree提交代码时&#xff0c;点击提交按钮出现闪退关闭&#xff0c;并弹出下面的报错框&#xff0c;报错的图片如下&#xff1a; 那么经过了解&#xff0c;出现这样的报错原因是&#xff0c;git的提交时无法定位提交的人是谁&#xff0c;导致无法提交 那么解决的方…

git中对子模块的本地修改、提交和推送远程仓库

场景 当前的某个项目&#xff0c;其使用了另一个项目&#xff0c;我在本地需要对子项目进行修改&#xff0c;并将这些修改提交到github中的子项目和父项目。其实在github中&#xff0c;子项目都是特定的指向子项目的某次提交&#xff0c;因此对于父项目的修改&#xff0c;其实…

golang 选择排序

学习笔记&#xff5e; // Author sunwenbo // 2024/4/6 21:49 package mainimport "fmt"/* 选择排序基本介绍选择式排序也属于内部排序法&#xff0c;是从预排序的数据中按指定的规则选出某一元素&#xff0c;经过和其他元素重整&#xff0c;再依原则交换位置后达到…

设置你的第一个React应用

目录 一、React入门 1.1 你好React 1.2 创建React 1.3 应用结构 二、总结 2.1 定义组件 2.2 组件源码 三、组件详解 注意事项 3.1 组件三部曲 3.2 组件通信 —— props 3.3 对象数组迭代 —— map() 3.4 事件处理 3.5 钩子函数 —— useState() 初次学习最终效果…

ThreadLocal上传下载文件

文章目录 ThreadLocal1.基本介绍1.什么是ThreadLocal&#xff1f;2.示意图 2.快速入门1.创建普通java项目2.编写代码1.T1.java2.T1Service.java3.T2Dao.java4.Dog.java 3.结果 3.ThreadLocal源码解读1.set方法2.set方法总结3.get方法 上传下载文件1.基本介绍1.基本说明2.文件上…

Mybatis——一对多关联映射

一对多关联映射 一对多关联映射有两种方式&#xff0c;都用到了collection元素 以购物网站中用户和订单之间的一对多关系为例 collection集合的嵌套结果映射 创建两个实体类和映射接口 package org.example.demo;import lombok.Data;import java.util.List;Data public cla…

手动实现Tomcat底层机制+自己设计Servlet

文章目录 1.Tomcat整体架构分析自己理解 2.第一阶段1.实现功能2.代码1.TomcatV1.java 3.调试阶段1.阻塞在readLine导致无法返回结果 4.结果演示 3.第二阶段1.实现功能2.代码1.RequestHander.java2.TomcatV2.java 3.调试阶段1.发现每次按回车会接受到两次请求 4.结果演示 4.第三…

Redis常见数据类型(2)

String字符串 字符串是Redis最基础的数据类型, 关于字符串需要特别注意: (1)首先Redis中所有的键的类型都是字符串类型, 而且其它几种数据结构也是在字符串类型的基础上构建的, 例如列表和集合的元素都是字符串类型, 所以字符串类型能为其它4种数据结构的学习奠定基础. (2)其次…

基于Unet的BraTS 3d 脑肿瘤医学图像分割,从nii.gz文件中切分出2D图片数据

1、前言 3D图像分割一直是医疗领域的难题&#xff0c;在这方面nnunet已经成为了标杆&#xff0c;不过nnunet教程较少&#xff0c;本人之前跑了好久&#xff0c;一直目录报错、格式报错&#xff0c;反正哪里都是报错等等。并且&#xff0c;nnunet对于硬件的要求很高&#xff0c…

Java23种设计模式

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

Allavsoft for Mac v3.27.0.8852注册激活版 优秀的视频下载工具

Allavsoft for Mac是一款功能强大的多媒体下载和转换工具&#xff0c;支持从各种在线视频网站和流媒体服务下载视频、音频和图片。它具备批量下载和转换功能&#xff0c;可将文件转换为多种格式&#xff0c;以适应不同设备的播放需求。此外&#xff0c;Allavsoft还提供视频编辑…

彩虹易支付接口配置

支付通道配置 基本概念 彩虹易支付系统有强大的支付接口扩展能力&#xff0c;首先需要明白以下几个概念。 支付方式&#xff1a; 支付方式用于定义发起支付的调用值&#xff08;在前台开发文档里面显示&#xff09;与支付方式名称。目前系统自带6种支付方式&#xff0c;它们的…

【C++】map set 底层刨析

文章目录 1. 红黑树的迭代器2. 改造红黑树3. map 的模拟实现4. set 的模拟实现 在 C STL 库中&#xff0c;map 与 set 的底层为红黑树&#xff0c;那么在不写冗余代码的情况下使用红黑树同时实现 map 与 set 便是本文的重点。 1. 红黑树的迭代器 迭代器的好处是可以方便遍历&…