机器人制作开源方案 | 行星探测车概述

1. 功能描述

       行星探测车(Planetary Rover)是一种用于进行科学探索和勘测任务的无人车辆,它们被设计成能够适应各种复杂的地形条件和极端环境,以便收集数据、拍摄照片、采集样本等。行星探测车通常包含以下主要组件和功能:
       ① 底盘和轮子系统:底盘提供了行星探测车的支撑结构,轮子系统使其能够移动。轮子通常采用特殊设计,以适应不同地质条件和障碍物,并提供良好的牵引力和稳定性。
       ② 动力系统:行星探测车通常由电池或太阳能电池板供电,这些能源会驱动电动机,使车辆能够移动和执行其它任务。
       ③ 导航与控制系统:导航和控制系统帮助行星探测车感知周围的环境并自主导航,它们通常包括惯性测量单元(IMU)、陀螺仪、加速度、摄像头、激光雷达、GPS等传感器。
       ④ 通信系统:行星探测车需要进行通信以接收指令和发送数据,通常会使用无线电通信设备实现远距离通信。
本文示例将实现R261样机行星探测车在行进过程中避障,并且当光强传感器触发时实现太阳翼展开的功能。
 

 

2. 电子硬件

在这个示例中,我们采用了以下硬件,请大家参考:

主控板

Basra主控板(兼容Arduino Uno)

扩展板

Bigfish2.1扩展板

传感器
 
光强传感器
近红外传感器
电池7.4V锂电池

电路连接图如下所示:

3. 功能实现

编程环境:Arduino 1.8.19
下面提供一个实现行星探测车在行进过程中避障,并且当光强传感器触发时实现太阳翼展开功能的参考程序(sketch_sep12a.ino):

/*------------------------------------------------------------------------------------版权说明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved.Distributed under MIT license.See file LICENSE for detail or copy athttps://opensource.org/licenses/MITby 机器谱 2023-09-21 https://www.robotway.com/------------------------------*/#include <Servo.h>Servo leftSolarPanel;   // 左太阳翼舵机Servo rightSolarPanel; // 右太阳翼舵机Servo mast;           // 桅杆舵机int irSensorPin = A0;     // 红外传感器的引脚(根据实际连接修改)int lightSensorPin =A5;   // 光强传感器的引脚(根据实际连接修改)bool irSensorTriggered = false; // 用于跟踪红外传感器触发状态void setup() {pinMode(irSensorPin, INPUT);pinMode(lightSensorPin, INPUT);leftSolarPanel.attach(4);   // 左太阳翼舵机连接到数字引脚 4rightSolarPanel.attach(3); // 右太阳翼舵机连接到数字引脚 3mast.attach(7);            // 桅杆舵机连接到数字引脚 7}void loop() {// 读取红外传感器状态int irSensorValue = digitalRead(irSensorPin);// 如果红外传感器触发,小车后退并左转if (irSensorValue == HIGH && !irSensorTriggered) {irSensorTriggered = true;moveBackward();leftTurn();} else if (irSensorValue == HIGH && irSensorTriggered) {irSensorTriggered = false;moveForward();rightTurn();} else {// 如果未触发红外传感器,停止小车运动stopCar();}// 读取光强传感器状态int lightSensorValue = analogRead(lightSensorPin);// 如果光强传感器触发,执行太阳翼和桅杆展开和闭合操作if (lightSensorValue > 500) {expandSolarPanelsAndMast();} else {stopSolarPanelsAndMast();}}// 后退void moveBackward() {digitalWrite( 5 , HIGH );   //右轮后退digitalWrite( 6 , LOW );digitalWrite( 9 , HIGH );   //左轮后退digitalWrite( 10 , LOW);}// 左转void leftTurn() {digitalWrite( 5 , HIGH );digitalWrite( 6 , LOW );digitalWrite( 9 , LOW );digitalWrite( 10 , LOW );}// 前进void moveForward() {digitalWrite( 5 , LOW );   //右轮前进digitalWrite( 6 , HIGH );digitalWrite( 9 , LOW );   //左轮前进digitalWrite( 10 , HIGH );}// 右转void rightTurn() {digitalWrite( 5 , LOW );digitalWrite( 6 , LOW );digitalWrite( 9 , HIGH );digitalWrite( 10 , LOW );}// 停止void stopCar() {analogWrite(5 , 0);analogWrite(6 , 0);analogWrite(9 , 0);analogWrite(10 , 0);}// 太阳翼和桅杆展开操作void expandSolarPanelsAndMast() {// 左太阳翼展开至180°setServoAngle(leftSolarPanel, 180);delay(500);   // 暂停0.5秒// 右太阳翼展开至180°setServoAngle(rightSolarPanel, 180);delay(500);   // 暂停0.5秒// 桅杆展开至90°setServoAngle(mast, 90);delay(500);   // 暂停0.5秒}// 太阳翼和桅杆关闭操作void stopSolarPanelsAndMast() {// 桅杆闭合至0°setServoAngle(mast, 0);// 左太阳翼闭合至0°setServoAngle(leftSolarPanel, 0);// 右太阳翼闭合至0°setServoAngle(rightSolarPanel, 0);}// 函数用于设置舵机角度,并控制舵机旋转速度void setServoAngle(Servo servo, int targetAngle) {int currentAngle = servo.read();int step = 1; // 步进值,可根据需要调整int delayTime = 20; // 延迟时间,可根据需要调整if (targetAngle > currentAngle) {for (int angle = currentAngle; angle <= targetAngle; angle += step) {servo.write(angle);delay(delayTime);}} else if (targetAngle < currentAngle) {for (int angle = currentAngle; angle >= targetAngle; angle -= step) {servo.write(angle);delay(delayTime);}}}

​4. 扩展样机

本样机的底盘方案是【R255】号机构,如下图所示:

程序源代码及样机3D文件资料详见 行星探测车-概述

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

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

相关文章

抖音小程序制作源码系统 带完整搭建教程

在当今社交媒体时代&#xff0c;抖音作为一款备受欢迎的短视频应用&#xff0c;已经拥有了庞大的用户群体。与此同时&#xff0c;抖音小程序也成为了商家和开发者们关注的热点。今天小编就来给大家介绍一款抖音小程序制作源码系统&#xff0c;五分钟确实创建一个小程序。 系统特…

音乐播放器VHDL蜂鸣器数码管显示简谱,视频/代码

名称&#xff1a;音乐播放器数码管显示简谱蜂鸣器 软件&#xff1a;Quartus 语言&#xff1a;VHDL 代码功能&#xff1a; 设计音乐播放器&#xff0c;播放一首歌&#xff0c;使用开发板的蜂鸣器播放音乐&#xff0c;使用Quartus内的ROM IP核存储音乐文件&#xff0c;使用数…

为什么要做数据可视化

在当今信息爆炸的时代&#xff0c;数据已成为个人和企业最宝贵的资产之一。然而&#xff0c;仅仅拥有大量的数据并不足以支持明智的决策。数据可视化&#xff0c;作为一种将数据转化为图形形式的技术和方法&#xff0c;可以帮助我们更好地理解和分析数据&#xff0c;从而更准确…

《golang设计模式》第三部分·行为型模式-01-责任链模式(Chain of Responsibility)

文章目录 1 概念1.1 角色1.2 类图 2. 代码示例2.1 设计2.2 代码2.3 类图 1 概念 责任链&#xff08;Chain of Responsibility&#xff09;是指将客户端请求处理的不同职责对象组成请求处理链。 客户端只需要将请求交付到该链上&#xff0c;而不需要关心链上含有哪些对象。请求…

首次建站用香港服务器有影响没?

​  对于首次租用香港服务器的朋友来说&#xff0c;难免会对它没有一个很清晰的认知。因此&#xff0c;本文就从香港服务器适用人群&#xff0c;以及建站影响&#xff0c;选择技巧上做一个全方位的解答。 1. 哪一类人群适合使用香港服务器建站? 做外贸业务的网站。香港走的国…

时间序列预测 Graph-WaveNet:Graph WaveNet for Deep Spatial-Temporal Graph Modeling

Graph-WaveNet Graph WaveNet for Deep Spatial-Temporal Graph Modeling1.概述2.提出问题 & 解决策略 & 模型结构3.实验结果 ** Graph WaveNet for Deep Spatial-Temporal Graph Modeling ** 1.概述 时空图建模是分析系统中各组成部分的空间关系和时间趋势的一项重…

上海市教委产学研教师沙龙成功举办,共研大模型AI人才培养与插件生态

10月15日&#xff0c;百度飞桨携手上海市教育委员会、上海市学位委员会、上海物联网行业协会联合举办的“AI大模型产学研融合创新”上海研究生导师沙龙&#xff0c;在百度飞桨&#xff08;张江&#xff09;人工智能产业赋能中心顺利召开。来自上海地区20位高校及科研机构在聘研…

正向代理与反向代理

正向代理 客户端想要直接与目标服务器连接&#xff0c;但是无法直接进行连接&#xff0c;就需要先去访问中间的代理服务器&#xff0c;让代理服务器代替客户端去访问目标服务器 反向代理 屏蔽掉服务器的信息&#xff0c;经常用在多台服务器的分布式部署上&#xff0c;像一些大型…

C#快速排序算法

快速排序实现原理 快速排序&#xff08;Quick Sort&#xff09;是一种常用的排序算法&#xff0c;它基于分治的思想&#xff0c;通过将一个无序的序列分割成两个子序列&#xff0c;并递归地对子序列进行排序&#xff0c;最终完成整个序列的排序。 其基本思路如下&#xff1a; 选…

屏幕录制视频编辑软件 Camtasia 2023 mac中文版软件功能

Camtasia 2023 mac是一款功能强大的屏幕录制和视频编辑软件&#xff0c;可以用于制作教育课程、演示文稿、培训视频等。它具有一系列工具和功能&#xff0c;包括屏幕录制、视频编辑、音频编辑、字幕、特效等&#xff0c;使用户可以轻松地创建高质量的视频内容。 Camtasia2023的…

MongoDB索引操作

1、创建索引 语句&#xff1a; db.collection.createIndex(keys, options, commitQuorum) 选项参数名类型描述keys 包含排序字段和排序方式的对象&#xff0c; 值&#xff1a; 1为升序索引 -1为降序索引 options参数控制对象backgroundboolean 可选&#xff0…

计算机基础知识34

进程锁 # 锁在IT界很重要&#xff0c;不但在Python中出现&#xff0c;尤其是数据库中得锁更多&#xff0c;比如&#xff1a;表锁、行锁、 悲观锁、乐观锁、进程锁、互斥锁、递归锁、可重入锁、死锁等 # 保证安全 import time # 导入time&#xff0c;执行顺序乱了 from…

面试题-React(十五):React中的CSS编写方案及推荐

在React开发中&#xff0c;如何组织和编写CSS是一个常见的问题&#xff0c;React官方并没有一种固定的CSS编写方式&#xff0c;所以在目前的React开发中可能存在各种各样不同的编写CSS风格。本文将介绍React中几种常用的CSS编写方案&#xff0c;分析其优缺点&#xff0c;并推荐…

服务CPU异常飙高问题分析和解决

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是「奇点」&#xff0c;江湖人称 singularity。刚工作几年&#xff0c;想和大家一同进步&#x1f91d;&#x1f91d; 一位上进心十足的【Java ToB端大厂…

如何使用uview中的loadmore上拉加载

普通用法 HTML <view><view><!-- 内容 --></view><u-loadmore :status"status" /> </view> JS&#xff0c;onReachBottom这个是生命周期&#xff0c;和method同级 data() {return {goods:null,status: loadmore,//当前状态p…

1208. 翻硬币

题目&#xff1a; 1208. 翻硬币 - AcWing题库 思路&#xff1a; 1.对于要求从A变化到B的这类题&#xff0c;可以采用开关控制的方法。 2.一次翻转连续两个硬币&#xff0c;求origin变为result 最少需要翻转多少次。我们在origin的两个硬币中间放一个开关&#xff0c;开关变换…

除静电感测型离子风棒在无尘车间中的应用

除静电感测型离子风棒是一种能够检测静电并及时释放离子的离子风棒&#xff0c;在无尘车间中应用非常广泛。以下是除静电感测型离子风棒在无尘车间中的应用&#xff1a; 防止静电干扰&#xff1a;在无尘车间中&#xff0c;静电干扰会影响电子元器件和仪器设备的正常工作&#x…

基于STM32设计的智慧农业管理系统(ESP8266+腾讯云微信小程序)

一、项目介绍 基于STM32设计的智慧农业控制系统(ESP8266+腾讯云微信小程序) 1.1 项目背景 随着人们对食品安全和生态环境的日益重视,智慧农业逐渐成为一个备受关注的领域。智能化管理可以提高农业生产效率,减少资源浪费,改善生态环境。因此,基于物联网技术的智慧农业管理系…

数据结构-堆排序Java实现

目录 一、引言二、算法步骤三、原理演示步骤1: 构建最大堆步骤2: 交换和堆化步骤3: 排序完成 四、代码实战五、结论 一、引言 堆排序是一种利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构&#xff0c;并同时满足堆积的性质&#xff1a;即子结点的键值或…

MySQL学习(八)——锁

文章目录 1. 锁概述2. 全局锁2.1 全局锁的必要性2.2 语法2.3 全局锁的特点 3. 表级锁3.1 表锁3.2 元数据锁3.3 意向锁3.4 自增锁 4. 行级锁4.1 介绍4.2 记录锁4.3 间隙锁4.4 临键锁 1. 锁概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中&#xff0c;除传…