作者:丁位 朱紅磊 程國正 楊秀萍 丁語林
單位:黑龍江科技大學
指導老師:邵文冕 劉安平
1. 場景調研
1.1 研究背景及意義
? ? ? ?通過查閱資料,我們團隊了解到自2015年起中國公共圖書館圖書流通人次逐年增加,2019年中國公共圖書館圖書流通人次達90135萬人次,較2018年增加了8103萬人次,同比增長9.88%,2020年受新冠肺炎疫情影響,中國公共圖書館圖書流通人次大幅下滑,2020年中國公共圖書館圖 ? ? ? ?書流通人次為54145.81萬人次,較2019年減少了35989.19萬人次,同比減少39.93%。據統(tǒng)計2021年末全國共有公共圖書館3215個,比上年末增加3個;從業(yè)人員59301人,增加1321人;其中具有高級職稱人員7413人,占12.5%;具有中級職稱人員18979人,占32.0%。
? ? ? ?隨著中國公共圖書館圖書流通人次的增加,書刊文獻外借冊次也隨之增長,2019年中國公共圖書館書刊文獻外借冊次達61373萬冊次,較2018年增加了3363萬冊次,同比增長5.80%,2020年受新冠肺炎疫情影響,中國公共圖書館書刊文獻外借冊次大幅下滑,2020年中國公共圖書館書刊文獻外借冊次為42087.15萬冊次,較2019年減少了19285.85萬冊次,同比減少31.42%。2019年中國公共圖書館書刊文獻外借人次達26609萬人次,較2018年增加了795萬人次,同比增長3.08%,2020年受新冠肺炎疫情影響,中國公共圖書館書刊文獻外借人次大幅下滑,2020年中國公共圖書館書刊文獻外借人次為17466.62萬人次,較2019年減少了9142.38萬人次,同比減少34.36%。
? ? ? ?通過研究數據發(fā)現,在圖書館的日常管理中,圖書的歸類、搬運和上下架等作業(yè)需要花費大量人力和時間,增加了圖書館員的勞動強度,有時還會出現圖書歸類錯誤和上架錯誤等現象。目前,多數圖書館利用二維條碼和數據庫技術實現了圖書信息系統(tǒng)管理,即圖書采購、圖書典藏、讀者借還書等環(huán)節(jié)的信息化管理,提升了圖書館的管理和服務水平。在信息化浪潮中,圖書館缺少以機械化為基礎的自動化裝置。圖書館作業(yè)的自動化和智能化,能夠從根本上減輕圖書館員的勞動強度、提高工作效半,尤其適用于采用閉架借閱圖書的圖書館。在博物館和檔案館,重要文獻資料需要在恒溫、恒濕環(huán)境下保存。利用機器人實現圖書和文獻資料的歸類、自動存取操作,不僅能堿少館員頻繁進出館灝室對重要文獻的保存環(huán)境造成擾動和破壞,更有利于文獻保護。因此,自動化技術和信息技術的有效融合,是未來圖書館的重要發(fā)展趨勢。
? ? ? ?中國已經進入老齡化社會,如果能將圖書館信息資理系統(tǒng)、圖書自動存取系統(tǒng)和物流配送系統(tǒng)結合起來,可以實現讀者居家借閱和歸還圖書的目標,滿足高齡讀者自由借閔圖書的需要。因此研究和開發(fā)圖書自動存取裝置是一項有社會和經濟價值的研究項目。
1.2 圖書館圖書自動存取裝置的發(fā)展現狀
? ? ? ?目前大部分圖書館都是利用人工整理、清點、查找和上下架閣書,耗費了大量的時間和勞動力。為了提高圖書館自動化平,圖書館圖書自動存取機器人應運而生。目前圖書館機器人主要用于圖書的搬運和自動存取,自動存取的主要形式有3種:
? ? ? ?① 自助圖書館,它是基于書架的自動化,輔助自動傳送系統(tǒng)來實現圖書自動存取。
? ? ? ?② 自動倉儲式閣書館,它基于移動搬運機器人與自動化立體倉庫的配合,完成圖書的自動存取。
? ? ? ?③ 移動式閣書館機器人,它完全依賴于移動式服務機器人來完成圖書的自動存取。
? ? ? ?基于項目背景調研情況,本項目決定研究一款基于軌跡規(guī)劃的圖書歸還機器人。
2. 機器人本體技術路線說明
? ? ? 項目的設計分為電氣設計、機械設計、算法設計及外觀設計,以下將主要論述機器人實現自動路徑規(guī)劃與抓取搬運的技術路線分析。
2.1 電路設計
? ? ? 主板使用基于Arduino開源方案的開發(fā)者套件的Basra板加BigFish拓展版,主板CPU 采用AVR ATMEGA328型控制芯片,支持C語言編程方式。該系統(tǒng)的硬件電路包括:電源電路、串口通信電路、MCU基本電路、燒寫接口、顯示模塊、AD/DA轉換模塊、輸入模塊、IIC存儲模塊等其他電路模塊電路。通過5V電源輸入為主板供電,經拓展版為舵機、電機及各模塊供電。
2.2 機械設計
? ? ? 機械臂采用串聯(lián)式機械臂(也叫關節(jié)機械臂),通過四個關節(jié)舵機實現四自由度伸展控制。各個關節(jié)位置及端點的位置被固定,端點的位置處各個關節(jié)卻可以有多個不同位置。抓取機構通過齒輪嚙合實現由一個舵機精準控制完成抓取動作。車體結構設計通過萬向輪實現簡化車體地盤結構設計,為更多模塊的搭載提供空間。
2.3 功能實現路線
? ? ? 該項目行走軌跡采用循跡加路徑規(guī)劃,通過灰度傳感器加白標傳感器形成循跡系統(tǒng),后采用路徑規(guī)劃算法,實現機器人行程軌跡的控制與自動調整。通過外紅外模塊感應到達指定位置后進入已完成設定的抓取或放置程序完成整個的工作流程。
3. 作品創(chuàng)新點
? ? ? ① 便捷性:機器人通過路徑規(guī)劃自主歸還圖書,節(jié)約了許多的人力資源。
? ? ? ② 經濟性:充分考慮到機器人整體結構以及整體構件的選擇,使其裝配更加經濟便捷。
? ? ? ③ 工作效率高:通過機器人自主歸還和取放圖書可以節(jié)約更多的人力以及物力資源。
? ? ? ④ 可移動性更高:機器人采用萬向輪作為移動輪,可以在狹窄的兩書架之間更好的移動。在對圖書館機器人進行結構設計時,首先要考患其工作壞境。圖書館機器人進行圖書自動存取的工作空間為兩書相之間,空問較狹車設計時必須限制機器人最大寬度。
4. 作品難點及解決方案
? ? ? ① 機械臂的抓取力不足,導致在取書或者還書程中,對于書本的抓取可能存在松懈,使得書本掉落。
? ? ? 解決方案:通過提供輸出電壓更大的設備來控制舵機,使其機械臂的抓取力得到提升,以便于能更好的抓取圖書。
? ? ? ② 灰度傳感器以及白標傳感器形成的循跡系統(tǒng)傳感器感應不良,傳感器感應精度存在誤差,可能使其在通過軌跡規(guī)劃過程歸還圖書的過程中存在一定的軌跡偏差,以及錯位等情況。
? ? ? 解決辦法:在傳感器精度不良的情況下我們添加了藍牙遙控裝置,使得小車在歸還書籍的過程中,能夠更加精確的把圖書歸還到相應的位置,藍牙遙控裝置的作用是防止其軌跡偏離航線。
5. 經濟效益
? ? ? 對于目前國內圖書館以及高校圖書館而言,大部分圖書館的借還圖書過程都是通過人為手動進行,而只有極少數的圖書館或者高校圖書館配備了自動還書機器人,所以對于我們這一款圖書管理助手而言,如果能夠實現研發(fā)并且投入生產,能產生比較可觀的經濟效益以及價值。文章來源:http://www.zghlxwxcb.cn/news/detail-830585.html
6. 示例程序
#include<MsTimer2.h>
#include <Servo.h>
int a,b,c,d,e;
int pin[3] = {A0, A4, A3}; //如上圖,從左至右對應
int velocity; //定義速率
int temp; //設置標志量
byte value;
byte value_his = 0; //記錄上一次的傳感器值
//抓取定義***********起
Servo servo_pin_4;
Servo servo_pin_7;
Servo servo_pin_11;
Servo servo_pin_3;
Servo servo_pin_8;
Servo servo_pin_12;
int D3[]={15,76,76,15,76};
int D8[]={110,110,110,110,110};
int D7[]={160,70,160,70};
int D11[]={160,75,160,75};
int D4[]={190,190,190,190};
//抓取定義***********止
void setup()
{
pinMode( 5 , OUTPUT);
pinMode( 6 , OUTPUT);
pinMode( 9 , OUTPUT);
pinMode( 10 , OUTPUT);
MsTimer2::set(50,flash); //每 50ms 溢出一次
MsTimer2::start();
//抓取初始化***********起
servo_pin_3.attach(3);
servo_pin_8.attach(8);
servo_pin_7.attach(7);
servo_pin_11.attach(11);
servo_pin_4.attach(4);
//抓取初始化***********止
delay(1000);
}
void flash(){
if(!(digitalRead(16))) //A2 口接近紅外
{
velocity=150;
temp=1;
}
}
void loop()
{
while(temp==1)
{
value = 0;
for(int i=0; i<3; i++)
{
value |= (digitalRead(pin[i]) << i);
}
if(value == 0x07)
{ //當傳感器都沒有觸發(fā)時默認為上一次的值
value = value_his;
}
switch (value)
{
case 0x00: //全部觸發(fā)
Forwards();
break;
case 0x01: //觸發(fā)右邊兩個
while(digitalRead(pin[1])){ //通過 while 循環(huán)使小車回到跑道中間
Right();
}
break;
case 0x03: //觸發(fā)右邊一個
while(digitalRead(pin[1]))
{
Right();
}
break;
case 0x04: //觸發(fā)左邊兩個
while(digitalRead(pin[1]))
{
Left();
}
break;
case 0x05: //觸發(fā)中間一個
Forwards();
break;
case 0x06: //觸發(fā)左邊一個
while(digitalRead(pin[1]))
{
Left();
}
break;
default:
Stop();
}
value_his = value;
if(!(digitalRead(16)))
{
temp=0;
}
}
velocity=0;
}
void Left()
{
//analogWrite( 5 , velocity );
//analogWrite( 6 , 0 );
//analogWrite( 9 , 0 );
//analogWrite( 10 , 0 );
digitalWrite( 5 , HIGH );
digitalWrite( 6 , LOW );
digitalWrite( 9 , LOW );
digitalWrite( 10 , LOW );
}
void Right()
{
//analogWrite( 5 , 0 );
//analogWrite( 6 , 0 );
//analogWrite( 9 , velocity );
//analogWrite( 10 , 0 );
digitalWrite( 5 , LOW );
digitalWrite( 6 , LOW );
digitalWrite( 9 , HIGH );
digitalWrite( 10 , LOW );
}
void Forwards()
{
//analogWrite( 5 , velocity );
//analogWrite( 6 , 0 );
//analogWrite( 9 , velocity );
//analogWrite( 10 , 0 );
digitalWrite( 5 , HIGH );
digitalWrite( 6 , LOW );
digitalWrite( 9 , HIGH );
digitalWrite( 10 , LOW );
}
void Stop()
{
//analogWrite( 5 , 0 );
//analogWrite( 6 , 0 );
//analogWrite( 9 , 0 );
//analogWrite( 10 , 0 );
digitalWrite( 5 , LOW );
digitalWrite( 6 , LOW );
digitalWrite( 9 , LOW );
digitalWrite( 10 , LOW );
}
void zhuaqu()//抓取函數
{
for(a=100;a<=169;a+=1)
{servo_pin_3.write(a);delay(60);}
delay(1000);
for(a=130;a<=170;a+=1)
{servo_pin_12.write(a);delay(60);}
delay(1000);
for(b=175;b>=155;b-=1)
{servo_pin_11.write(b);delay(60);}
for(a=190;a>=165;a-=1)
{servo_pin_7.write(a);delay(60);}
delay(1000);
for(b=155;b>=115;b-=1)
{servo_pin_11.write(b);delay(60);}
for(a=165;a>=135;a-=1)
{servo_pin_7.write(a);delay(60);}
delay(1000);
for(b=115;b>=75;b-=1)
{servo_pin_11.write(b);delay(60);}
for(a=135;a>=110;a-=1)
{servo_pin_7.write(a);delay(60);}
delay(1600);
//for(c=170;c>=114;c-=1)
//{servo_pin_4.write(c);delay(60);}
//delay(2000);
for(c=170;c>=130;c-=1)
{servo_pin_12.write(c);delay(60);}
delay(2000);
for(b=75;b<=125;b+=1)
{servo_pin_11.write(b);delay(60);}
for(a=110;a<=150;a+=1)
{servo_pin_7.write(a);delay(60);}
for(b=125;b<=175;b+=1)
{servo_pin_11.write(b);delay(60);}
for(a=150;a<=190;a+=1)
{servo_pin_7.write(a);delay(60);}
delay(2000);
delay(23000);
//下場景
for(b=175;b>=155;b-=1)
{servo_pin_11.write(b);delay(60);}
for(a=190;a>=165;a-=1)
{servo_pin_7.write(a);delay(60);}
delay(1000);
for(b=155;b>=115;b-=1)
{servo_pin_11.write(b);delay(60);}
for(a=165;a>=135;a-=1)
{servo_pin_7.write(a);delay(60);}
delay(1000);
for(b=115;b>=75;b-=1)
{servo_pin_11.write(b);delay(60);}
for(a=135;a>=110;a-=1)
{servo_pin_7.write(a);delay(60);}
delay(1600);
//for(c=114;c<=170;c+=1)
//{servo_pin_4.write(c);delay(60);}
//delay(1000);
for(c=130;c<=170;c+=1)
{servo_pin_12.write(c);delay(60);}
delay(1000);
for(b=75;b<=125;b+=1)
{servo_pin_11.write(b);delay(60);}
for(a=110;a<=150;a+=1)
{servo_pin_7.write(a);delay(60);}
for(b=125;b<=175;b+=1)
{servo_pin_11.write(b);delay(60);}
for(a=150;a<=190;a+=1)
{servo_pin_7.write(a);delay(60);}
delay(1000);
for(a=169;a>=100;a-=1)
{servo_pin_3.write(a);delay(60);}
delay(200000);
}
更多詳情請見: 【S059】圖書管理助手文章來源地址http://www.zghlxwxcb.cn/news/detail-830585.html
到了這里,關于機器人制作開源方案 | 圖書管理助手的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!