地平線旭日?X3派(下文簡(jiǎn)稱旭日X3派)是一款擁有著高算力,面向生態(tài)開(kāi)發(fā)者的嵌入式,可用于機(jī)器人、無(wú)人駕駛、智能家居等領(lǐng)域,并搭載了TogetherROS開(kāi)發(fā)平臺(tái),可高效進(jìn)行機(jī)器人開(kāi)發(fā)。ChatGPT是一款由OpenAI開(kāi)發(fā)的自然語(yǔ)言處理模型,可以理解人類語(yǔ)言、自動(dòng)生成文本、回答問(wèn)題和完成其他任務(wù),還可以與其他技術(shù)聯(lián)動(dòng),實(shí)現(xiàn)更加復(fù)雜的應(yīng)用。
旭日X3派遇上ChatGPT會(huì)碰撞出什么火花呢?本文使用旭日X3派作為載體,在OriginBot上使用ChatGPT進(jìn)行問(wèn)答。相關(guān)問(wèn)題歡迎大家注冊(cè)加入地平線開(kāi)發(fā)者社區(qū)交流討論,配置文件及代碼詳見(jiàn)地平線開(kāi)發(fā)者社區(qū)。
環(huán)境配置
1、解釋OriginBot小車代碼
2、解釋運(yùn)動(dòng)學(xué)模型
3、使用OpenCV在OriginBot小車上實(shí)現(xiàn)巡線功能
4、在ROS2環(huán)境中實(shí)現(xiàn)gmapping或者cartographer
5、總結(jié)對(duì)話
綜上,我們發(fā)現(xiàn)ChatGPT有著記憶儲(chǔ)存的功能,它區(qū)別于SiRi傳統(tǒng)的一問(wèn)一答,能根據(jù)聊天的上下文進(jìn)行互動(dòng)并歸納總結(jié)所有的問(wèn)題,協(xié)助我們完成編程。并且ChatGPT在回復(fù)消息時(shí)是逐字的顯示,很難感覺(jué)到是和機(jī)器人在對(duì)話,仿佛它只是個(gè)博學(xué)的朋友。
它在針對(duì)簡(jiǎn)單編程問(wèn)題的處理上可謂是非常驚艷,在ROS相關(guān)的問(wèn)題上,比我們?nèi)祟惛心托慕獯穑袝r(shí)會(huì)畫(huà)出重點(diǎn)并擴(kuò)展更多的相關(guān)知識(shí)幫助你去解決問(wèn)題掌握技術(shù)。
既然ChatGPT都能接入WX,那么它和旭日X3派一定也能「chat」一下!不妨我們直接詢問(wèn)ChatGPT,該如何使得旭日X3派和ChatGPT聯(lián)系起來(lái)!它給了我們這樣的一個(gè)答案:
模型部署
1、部署基本環(huán)境
進(jìn)入旭日X3派,執(zhí)行以下命令(此處使用的是OriginBot v1.0.2的鏡像):
pip3 install openai
2、學(xué)習(xí)OpenAI API如何使用
import openai # 將OpenAI訪問(wèn)令牌設(shè)置為環(huán)境變量 openai.api_key = "YOUR_API_KEY" # 調(diào)用OpenAI GPT-3模型,生成回答 response = openai.Completion.create( engine="text-davinci-002", prompt="你好!", max_tokens=1024, # 最大1024個(gè)標(biāo)記 temperature=0.7, n=1, stop=None, ) # 輸出生成的回答 print(response.choices[0].text)
3、書(shū)寫(xiě)節(jié)點(diǎn)代碼
import rclpy from rclpy.node import Node from std_msgs.msg import String import openai class OpenAINode(Node): def __init__(self): super().__init__('openai_node') self.publisher_ = self.create_publisher(String, 'openai_text', 10) self.subscription = self.create_subscription( String, 'user_input', self.listener_callback, 10) self.subscription # 防止被Python垃圾回收機(jī)制刪除 def listener_callback(self, msg): # 處理從ROS話題訂閱到的輸入 input_text = msg.data # 調(diào)用OpenAI的GPT-3模型生成文本 openai.api_key = 'YOUR_API_KEY' response = openai.Completion.create( engine="davinci", prompt=input_text, max_tokens=60, n=1, stop=None, temperature=0.7 ) # 將生成的文本發(fā)布到ROS話題 self.publisher_.publish(response.choices[0].text) def main(args=None): rclpy.init(args=args) openai_node = OpenAINode() rclpy.spin(openai_node) openai_node.destroy_node() rclpy.shutdown() if __name__ == '__main__': main()
4、部署到旭日X3派中
此處,即可按照古月老師的ROS2 21講的方式來(lái)創(chuàng)建一個(gè)基于python的功能包。
5、程序運(yùn)行
可以看到,此處運(yùn)行狀態(tài)與理想情況有較大出入。回到這一段代碼:
import openai # 將OpenAI訪問(wèn)令牌設(shè)置為環(huán)境變量 openai.api_key = "YOUR_API_KEY" # 調(diào)用OpenAI GPT-3模型,生成回答 response = openai.Completion.create( engine="text-davinci-002", prompt="你好!", max_tokens=1024, # 最大1024個(gè)標(biāo)記 temperature=0.7, n=1, stop=None, ) # 輸出生成的回答 print(response.choices[0].text)
當(dāng)前,engine使用的模型,此處是”text-davinci-002“,prompt是指輸入文本,max_tokens指的是最大輸出文字。首先,打印出所有的模型,示例代碼如下:
import openai # 將OpenAI訪問(wèn)令牌設(shè)置為環(huán)境變量 openai.api_key = "YOUR_API_KEY" # 獲取OpenAI最新的語(yǔ)言模型名稱 models = openai.Model.list() latest_model = models['data'][0].id print("最新的OpenAI語(yǔ)言模型是:", latest_model) print("\n") printf("所有的模型如下:", models)
與當(dāng)前WX接入ChatGPT方式進(jìn)行對(duì)照發(fā)現(xiàn),可將其理解為Transformer模型,直接把當(dāng)前和之前所有的問(wèn)題和回答都當(dāng)成輸入,生成最終的代碼:
import rclpy from rclpy.node import Node from std_msgs.msg import String import openai class OpenAINode(Node): def __init__(self): super().__init__('openai_node') self.publisher_ = self.create_publisher(String, 'chatgpt_node', 10) self.subscription = self.create_subscription( String, 'user_input', self.listener_callback, 10) self.history = "" def listener_callback(self, msg): # 處理從ROS話題訂閱到的輸入 input_text = msg.data self.history += input_text self.history += " " # 調(diào)用OpenAI的GPT-3模型生成文本 openai.api_key = 'KEY' #models = openai.Model.list() #latest_model = models['data'][0].id #print(models) response = openai.Completion.create( engine="text-davinci-003", prompt=self.history+input_text, max_tokens=1024, n=1, stop=None, temperature=0.7 ) # 將生成的文本發(fā)布到ROS話題 msg = String() msg.data = response.choices[0].text print(msg.data) self.history += msg.data self.history += " " def main(args=None): rclpy.init(args=args) chatgpt_node = OpenAINode() rclpy.spin(chatgpt_node) chatgpt_node.destroy_node() rclpy.shutdown() if __name__ == '__main__': main()
效果如下:
本文轉(zhuǎn)自地平線發(fā)者社區(qū)
原作者:Lxxxb
-
人工智能
+關(guān)注
關(guān)注
1804文章
48677瀏覽量
246230 -
開(kāi)發(fā)板
+關(guān)注
關(guān)注
25文章
5499瀏覽量
102029 -
OpenAI
+關(guān)注
關(guān)注
9文章
1201瀏覽量
8623 -
ChatGPT
+關(guān)注
關(guān)注
29文章
1586瀏覽量
8781
發(fā)布評(píng)論請(qǐng)先 登錄
韻樂(lè)Vinal X3/X5卡拉OK音頻處理器調(diào)音軟件簡(jiǎn)介
RDK X3 帶飛的智能護(hù)理系統(tǒng):讓機(jī)器人秒變貼心小棉襖

當(dāng) RDK X3 遇上倉(cāng)儲(chǔ)機(jī)器人,智鏈團(tuán)隊(duì)讓效率原地起飛

HMC-XTB110 無(wú)源x3倍頻器,24-30GHz輸入技術(shù)手冊(cè)

九號(hào)公司Segway Navimow X3割草機(jī)器人獲TüV萊茵"高效割草"Quality-mark認(rèn)證

樹(shù)莓派遇上ChatGPT,魔法熱線就此誕生!

當(dāng)自行車遇上了樹(shù)莓派

【第一彈】樹(shù)莓派開(kāi)發(fā)者必看!Ubuntu Snap煥新升級(jí):跨平臺(tái)開(kāi)發(fā)從未如此簡(jiǎn)單!

“你的錢來(lái)了”:財(cái)神1號(hào),RDK X3驅(qū)動(dòng),自動(dòng)撿錢不手軟!

評(píng)論