乐高打印机robotc

目录

一、实验原理

二、实验目的

三、实验内容

四、实验器材(设备、元器件)

五、实验步骤

六、实验数据及结果分析

七、实验结论

八、总结及心得体会

九、对本实验过程及方法、手段的改进建议

代码附录

温馨提示



一、实验原理

1.取模:在hzk16文件中每个汉字占32个字节。在GB2312-80代码表中,纵向分为0~93,共94行。将行号称为区号,列号称为位号,分别有94个区和94个位。区号和位号用十进制表示,不足两位前面补0。这样每个汉字或符号都可用4位十进制表示,也就是区位码。每一区共有94个汉字,而位记录该汉字在该区中的具体位置。通过区位码可以计算偏移量从而将汉字信息读取出来转为点阵并打印。但是hzk16文件较大,此处我们采取直接通过字模软件取模的方法。

2.打印机模型

通过3个电机(分别对应3个轴)协调打印

X轴为打印机水平平移方向,进行点阵的横向打印

Y轴为打印纸张竖直平移方向,使用一带轮电机滚动带动纸张平动,实现换行打印

Z轴控制水墨笔点出点迹

二、实验目的

1. 通过对计算机打印过程的分析,了解点阵字库的作用与打印过程的原理;

2.通过对打印机器人工作参数的定义分析过程,了解系统参数之间、系统参数确定对软硬件设计的影响;并可在系统参数、软件复杂度、硬件复杂度之间进行恰当的折中;

3.通过应用LEGO Digital Designer进行虚拟设计、组装实际的打印机器人并编写控制程序,了解系统分析设计、机械结构设计、软件编程验证、系统改进与维护等工程设计的整个流程;

4.学习进行组内任务划分和工作接口定义,了解初步的项目管理。

三、实验内容

1.打印机功能分析与参数定义:

(1)功能分析

打印出16×16点阵汉字

(2)参数定义

打印方式:单针击打式点阵打印

像素:16*16位

色阶:2色

打印速度:约0.4秒/点 约30秒/字

字符集:HZK16

语言:中文

纸张格式:A4(210mm*297mm)

打印尺寸:像素宽度4mm 文字大小3cm*3cm

机器尺寸:25cm*25cm*20cm

接口:USB micro B

主机:LEGO EV3

电源:10V DC

操作系统:Windows

使用温度:5-35℃

2.方案设计及任务规划:

以矩形为打印机基本框架,搭建轨道,上放小车(X轴),对面为进纸器(Y轴),将Z轴电机固定于小车上随小车一起移动,同时控制水墨笔打点。

3.进纸及打印机构设计:Y方向进纸

4.软件编程和调试:

通过robotc编写,用取模软件取模后生成点阵信息,读取每个点信息控制XYZ协调运动打印汉字,每行结束后Y轴行进一次,X轴反向移动。

四、实验器材(设备、元器件)

序号

名     称

型号与规格

数  量

备注

1

LEGO Minstorms教育机器人

NXT版本

1

2

RobotC开发环境

4.52版本

1

2015版

3

字模软件

畔畔字模提取软件

1

4

电脑

联想拯救者R7000

1

5

乐高积木

20+

6

一只记号笔

晨光MARKER油性记号笔

1

7

车轮

直径5cm

4

8

万向轮

直径1cm

1个

9

齿轮

24齿

4个

五、实验步骤

1. 搭建如图所示模型

以矩形为框架,外侧横向放置车轮增加稳定性,轨道与进纸区相对,小车与笔绑定,通过Z轴电机控制水墨笔上下移动完成打点,将主机固定于框架上

2.软件编程和测试

运用取模软件提取字模,生成点阵信息置于程序中生成二维数组,当其为1时x轴前进并打点,否则只前进不打点,每打完一行Y轴移动一次实现退纸

六、实验数据及结果分析

点距

xy)角度

24齿

1.06mm

5

40齿

5mm

5

选择24齿更稳定,并且精度高

七、实验结论

打印笔细则辨识度高,轨道太轻则不稳定,不打点时让小车一次性多走几步能很大程度提高速度。

八、总结及心得体会

  1. 通过反复调试,我们将为0的多个点合并成一个记录0的个数的数字,完成一次性走完多步而不打点,这样减少了小车的启动和停止时间,从而大大提高了打印速度。
  2. 打印笔连接杆越长,越不稳定,精度越低
  3. 打印笔的平动和转动:最初我们通过齿轮将转动转化为平动,但当z轴速度越来越快时,通过齿轮控制笔杆跟不上,导致卡的现象,最终我们选择了转动
  4. 行进轮大小对打印机的影响:理论上轮径越小打印车越稳定,但当轮径过小时,不能达到最大平移速度,并且实验发现轮径越小,相同速度下笔尖平移越不稳定。于是,我们适当控制行进轮大小,结合程序调试达到最佳效果
  5. 通过橡皮筋绑定笔杆与连接杆时,两根橡皮筋不宜离得太近,否则笔会沿x轴移动,影响打印精度
  6. 轨道下方增加万向轮可以提高轨道稳定性,但也使得进纸摩擦增大

九、对本实验过程及方法、手段的改进建议

  1. 纸的移动会偏离Y轴,可在两侧增加固定板使得纸只能沿Y轴移动,从而提高精度
  2. 万向轮的添加降低了纸移动的灵活性,可撤销万向轮,通过降低轨道高度或在轨道上方添加一滑道减少打点时小车的晃动

代码附录:

void HexToBin(unsigned char* hexStr, unsigned char* binStr, int lenHex)
{memset(binStr, '0', lenHex * 8);unsigned char hexChar[2];for(int i=0;i<lenHex;i++){hexChar[0]=(hexStr[i] & 0xF0) >> 4;hexChar[1]=hexStr[i] & 0x0F;for(int j=0;j<2;j++){for(int k=0;k<4;k++){if(hexChar[j] & (0x08 >> k)){binStr[8*i+4*j+k]='1';}}}}
}task main()
{unsigned char bin[257];int i,p;unsigned char bits[32]={0x00,0x00,0x3F,0xF0,0x02,0x10,0x02,0x10,0xFF,0xFE,0x02,0x10,0x06,0x10,0x3F,0xF0,0x08,0x00,0x1F,0xF0,0x28,0x10,0xC8,0x10,0x08,0x10,0x0F,0xF0,0x08,0x10,0x00,0x00,};HexToBin(bits, bin, 32);while(1){for(i=0;i<256;i++){if(i%16==0&&i!=0){resetMotorEncoder(motorB);setMotorTarget(motorB, 5, 60);waitUntilMotorStop(motorB);resetMotorEncoder(motorA);setMotorTarget(motorA, 5*16, -60);waitUntilMotorStop(motorA);}if(bin[i]==0){p=1;while(bin[i+1]==0&&i%16!=0)p++;i++;resetMotorEncoder(motorA);setMotorTarget(motorA, 5*p, 50);waitUntilMotorStop(motorA);}if(bin[i]=='1'){resetMotorEncoder(motorc);setMotorTarget(motorc, 20, 50);waitUntilMotorStop(motorc);resetMotorEncoder(motorc);setMotorTarget(motorc, 20, -50);waitUntilMotorStop(motorc);}resetMotorEncoder(motorA);setMotorTarget(motorA,5, 60);waitUntilMotorStop(motorA);}if(i==256){break;}}
}

温馨提示:代码可能存在错误,请读者辩证学习,独立思考更优解决方案

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

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

相关文章

乐高大颗粒作品6:打地鼠的搭建

温馨提示 如果你喜欢本文&#xff0c;请点击收藏、在看并分享到朋友圈&#xff0c;想要获得更多乐高大颗粒图纸&#xff0c;请点击蓝字关注“Scratch青少儿编程课堂”&#xff0c;不定期更新更多优质作品。 ⭐ 打地鼠第一种搭建方法&#xff08;曲柄&#xff09; 打地鼠第二种搭…

LEGO® Education BricQ 乐高教育发布BricQ趣动系列套装

乐高教育今日宣布其发布两款无需额外技术辅助&#xff0c;寓学于乐的动手实践式STEAM学习解决方案&#xff0c;LEGO Education BricQ趣动系列套装。此次发布的两款解决方案均以体育运动为主题&#xff0c;在物理科学学科教学中通过实际场景应用&#xff0c;帮助学生们以有趣且独…

如何搜索相似的图片,如何通过识别图像搜索图片

最近有一张图片&#xff0c;想搜索这张图片的来源&#xff0c;搜索图片里的内容也没有搜索出来。比如搜索一个明星的照片&#xff0c;输入名字可以出来很多&#xff0c;但是有了图片想知道这个图片更多的信息&#xff0c;或者类似的图片&#xff0c;怎么搜索呢。 百度提供了一个…

搜索引擎(包括图片搜索)

转自&#xff1a;http://blog.csdn.net/v_july_v/article/details/6827391 1、什么是搜索引擎 搜索引擎指自动从因特网搜集信息&#xff0c;经过一定整理以后&#xff0c;提供给用户进行查询的系统。因特网上的信息浩瀚万千&#xff0c;而且毫无秩序&#xff0c;所有的信息像汪…

安卓性能测试(三):耗电量 (batterystats)

使用条件&#xff1a; android 5.0及以上系统 &#xff08;在6.0及以上系统的数据更详细&#xff09; 使用方法&#xff1a; 1、打开电池数据获取 adb shell dumpsys batterystats --enable full-wake-history 2、数据重置 adb shell dumpsys batterystats --reset 3、拔掉…

BatteryStatsService电池电量统计服务源码分析

BatteryStatsService主要负责电池电量的统计信息&#xff0c;首先我们简单的看下电量统计服务的启动过程。 BatteryStatsService启动过程 从BatteryStatsService的启动时序图可以看出&#xff0c;BatteryStatsService服务是在ActivityManagerService服务中启动的 1. 在SystemSe…

android 4.4 batteryservice 电池电量显示分析

转载地址&#xff1a;http://blog.csdn.net/daweibalang717/article/details/40615453 最近工作接触到这么的东西&#xff0c;这是我对整个电池管理方面Java 层的分析。如果想了解底层的话&#xff0c;请看我的博客&#xff1a; android 4.4 电池电量管理底层分析(C\C层) &a…

Battery Historian分析手机耗电神器

极力推荐Android 开发大总结文章&#xff1a;欢迎收藏程序员Android 力荐 &#xff0c;Android 开发者需要的必备技能 本篇文章主要介绍 Android 开发中 电量 的部分知识点&#xff0c;通过阅读本篇文章&#xff0c;您将收获以下内容: 1.安装Battery Historian 2.收集Batteryst…

卡尔曼滤波预测应用python实践

1. 什么是卡尔曼滤波 最佳线性滤波理论起源于二十世纪40年代美国科学家Wiener和前苏联科学家KOnMoropOB等人的研究工作&#xff0c;后人统称为维纳滤波理论。60年代Kalman把状态空间模型引入滤波理论&#xff0c;并导出了一套递推估计算法&#xff0c;后人称之为卡尔曼滤波理论…

BatteryStatsService电池电量统计服务分析

BatteryStatsService主要负责电池电量的统计信息,首先我们简单的看下电量统计服务的启动过程。 BatteryStatsService启动过程 从BatteryStatsService的启动时序图可以看出,BatteryStatsService服务是在ActivityManagerService服务中启动的 1. 在SystemServer中startBootstra…

使用Battery Historian采集android耗电数据

一、简介 Battery Historian是由Google提供的查看电量相关信息及事件的工具&#xff0c;Battery historian还可以上传bugreport文件&#xff0c;分析用户手机中App的电池耗电情况。详见&#xff1a;GitHub - google/battery-historian: Battery Historian is a tool to analyz…

利用XGBoost实现短期电力负荷预测

💥 项目专栏:【机器学习项目实战案例目录】项目详解 + 完整源码 文章目录 一、利用XGBoost实现短期电力负荷预测二、数据集介绍三、将数据进行标准化四、形成训练数据五、划分训练集、测试集六、定义模型七、模型训练八、训练集、测试集验证九、网络搜索十、绘制结果🌠 『…

性能优化十四之电量分析工具Battery Historian使用

上篇博客中并没有讲解BatterHistory该如何使用&#xff0c;这篇博客就开始给大家进行介绍。 数据准备 battery-historian工具需要使用bugreport中的BatteryHistory 1. 先断开adb服务&#xff0c;然后开启adb服务 adb kill-server 这一步很重要&#xff0c;因为当我们开…

使用BatteryHistorian分析和优化应用电量

欢迎Follow我的GitHub, 关注我的CSDN. 本文的合集已经编著成书&#xff0c;高级Android开发强化实战&#xff0c;欢迎各位读友的建议和指导。在京东即可购买&#xff1a;https://item.jd.com/12385680.html 在Android项目中, 较难监控应用的电量消耗, 但是用户却非常关心手机的…

Android 使用 Batterystats 和 Battery Historian 分析电池用量

Android 使用 Batterystats 和 Battery Historian 分析电池用量 专注于Android开发&#xff0c;分享经验总结&#xff0c;欢迎加入 Android开发中涉及到耗电量怎么分析呢 google官方提供了文档&#xff0c;链接&#xff1a;https://developer.android.com/studio/profile/batt…

GT的使用及耗电量统计的原理,对GT采集的电池数据采用VBA分析

注意&#xff1a;我测试时的ios操作系统是8.1&#xff0c;现在ios9.0及以后的耗电量比老的系统少了一个量级&#xff0c;官方说减少20%&#xff0c;我的手机在熄屏的耗电量减少了30%以上&#xff0c;亮屏幕减少不太多。 具体编译宏文件和GT采集的部分数据文件下载地址是&#…

Android电池功耗BatteryHistorian数据分析

BatteryHistorian的用法 BatteryHistorian环境搭建配置 官方文档 1.BatteryHistorian图形页面数据分析: Timeline: System stats: CPU runing: cpu运行的状态 Kernel only uptime: 只有kernell运行 Userspace wakelock: 用户空间申请的锁 Screen: 屏幕是否点亮 Top …

时间序列预测:用电量预测 07 灰色预测算法

&#x1f32e;开发平台&#xff1a;jupyter lab &#x1f356;运行环境&#xff1a;python3、TensorFlow2.x ----------------------------------------------- 2022.9.16 测验成功 ---------------------------------------------------------------- 1. 时间序列预测&#x…

时间序列预测15:Multi-input / Multi-head CNN 实现用电量/发电量预测

【时间序列预测/分类】 全系列60篇由浅入深的博文汇总&#xff1a;传送门 接上文&#xff0c;本文介绍如何为多变量数据开发多输入通道多步时间序列预测的CNN模型和多子模型异构多步时间序列预测的CNN模型。 文章目录 2. 多输入通道 CNN 模型2.1 建模2.2 完整代码 3. 多头&…

人工智能迅猛发展,如何应对避免失业?

“人工智能从感知智能向认知智能演进”&#xff0c;人工智能的发展带给我们哪些思考&#xff1f;它究竟会给我们的工作生活带来哪些变化?我们要如何去应对&#xff1f; 阿里达摩院票选出2020年十大科技趋势&#xff1a; 量子计算进入攻坚期工业互联网的超融合保护数据隐私的A…