使用Python對Nao機械人進行基礎的程式設計

2021-09-29 12:13:28 字數 4005 閱讀 3008

在主程式區新建python盒子

在choregraphe中寫入這樣一段**

def

oninput_onstart

(self)

:#self.onstopped() #activate the output of the box

tts = alproxy(

"altexttospeech"

)# 建立alproxy中「altexttospeech」的**

tts.say(

"hello"

)# 通過呼叫其中的.say()方法使機械人說話

self.onstopped(

)

def

oninput_onstart

(self)

:#self.onstopped() #activate the output of the box

motion = alproxy(

"almotion"

)# 建立"almotion"的**

motion.moveto(

0.1,0,

0)# 呼叫moveto()方法,傳遞三個引數,分別為前進的距離,向左的距離,身體轉的角度

self.onstopped(

)

在成功安裝naoqi庫以後,我們就可以在pycharm中控制nao機械人

# 通過呼叫naoqi中的alproxy類 建立**連線

from naoqi import alproxy

alexpression = alproxy(

"模組名稱"

, robot_ip, port)

模組名稱通過查閱api文件獲得: naoapi

通過呼叫模組中的方法來實現對機械人的控制

# 實現nao機械人說話

robot_ip =

"192.168.31.206"

# 輸入nao的ip位址

port =

9559

# 埠號預設為9559

tts = alproxy(

"altexttospeech"

, robot_ip, port)

tts.say(

"hello world"

)

需要類庫:opencv-python、numpy、pynaoqi

下面是呼叫小nao識別紅球的**

# -*- coding: utf-8 -*-

import cv2

import numpy as np

from naoqi import alproxy

import vision_definitions

import math

port =

9559

# crf 機械人埠

robot_ip =

"192.168.31.206"

# crf 機械人ip

cameraproxy = alproxy(

"alvideodevice"

, robot_ip, port)

# 基本引數

resolution = vision_definitions.kvga

colorspace = vision_definitions.kbgrcolorspace

fps =

20frameheight =

0framewidth =

0framechannels =

0framearray =

none

camerapitchrange =

47.64

/180

*math.pi

camerayawrange =

60.97

/180

*math.pi

# 獲取

cameraproxy.setactivecamera(1)

videoclient = cameraproxy.subscribe(

"python_**m"

,resolution, colorspace,fps)

frame = cameraproxy.getimageremote(videoclient)

cameraproxy.unsubscribe(videoclient)

#讀取framewidth = frame[0]

frameheight = frame[1]

framechannels = frame[2]

framearray = np.frombuffer(frame[6]

, dtype=np.uint8)

.reshape(

[frameheight, framewidth, framechannels]

)# 轉換為hsv

hue_image = cv2.cvtcolor(framearray, cv2.color_bgr2hsv)

# 用顏色分割影象

low_range = np.array(

[160,83

,100])

high_range = np.array(

[180

,255

,255])

th = cv2.inrange(hue_image, low_range, high_range)

cv2.imshow(

'result'

, th)

cv2.waitkey(0)

# 平滑處理

gaus=cv2.gaussianblur(th,(7

,7),

1.5)

cv2.imshow(

'result'

, gaus)

cv2.waitkey(0)

# 腐蝕

eroded = cv2.erode(gaus, cv2.getstructuringelement(cv2.morph_ellipse,(4

,4))

, iterations=2)

cv2.imshow(

'result'

, eroded)

cv2.waitkey(0)

# 膨脹

dilated = cv2.dilate(eroded, cv2.getstructuringelement(cv2.morph_ellipse,(3

,3))

, iterations=2)

cv2.imshow(

'result'

, dilated)

cv2.waitkey(0)

# hough circle

circles = cv2.houghcircles(dilated, cv.cv_hough_gradient,1,

100, param1=

15, param2=

7, minradius=

15, maxradius=

100)

# 繪製

if circles is

notnone

: x, y, radius = circles[0]

[0] center =

(x, y)

cv2.circle(framearray, center, radius,(0

,255,0

),2)

cv2.imshow(

'result'

, framearray)

cv2.waitkey(0)

cv2.destroyallwindows(

)

科大訊飛**:

NAO機械人連線網路

從今天開始,我們計畫使用nao機械人進行一些開發,nao機械人的功能非常強大。些這些的目的是想對開發過程中遇到的問題以及解決的方法進行一下記錄,省的以後再走彎路,同時也當其他人遇到類似問題時進行一些參考。1 nao機械人的連線問題 nao機械人連線到網路的文章很多,在此就不詳細介紹。下面主要說我們遇...

nao機械人開發資料

關於機械人理論知識的公開課 偏機械 課程中遇到的難理解的知識點 1.三維向量的簡單運算 點積 叉積及點到直線的距離 2.奇異值分解 svd 原理詳解及推導 nao機械人開發環境搭建 補充 在windows系統 win7 8 10 下,用vc2010配置nao機械人的方法 nao機械人的c 和open...

NAO機械人的幾個記錄

nao機械人一共有26個自由度,即26個控制電機,每乙個電機表現為乙個自由度 機械人可以看成是由連桿 link 和關節 jint 構成的 子連桿可以看成是通過關節連線到父連桿的,關節固定在父連桿上,子連桿的區域性座標建立在父連桿上,關節動作時將改變子連桿的位置。關節固定在父連桿上這句話是有問題的,應...