91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

電子發(fā)燒友App

硬聲App

掃碼添加小助手

加入工程師交流群

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>從ROS控制jetbot機(jī)器人

從ROS控制jetbot機(jī)器人

2023-06-27 | zip | 0.00 MB | 次下載 | 免費(fèi)

資料介紹

描述

這個(gè)開(kāi)源平臺(tái)為 DIY 開(kāi)發(fā)者、學(xué)生和愛(ài)好者提供了創(chuàng)建各種基于 AI 的應(yīng)用程序所需的一切。JetBot 套件以小型但功能強(qiáng)大的 NVIDIA Jetson Nano 計(jì)算機(jī)為基礎(chǔ)工作,該計(jì)算機(jī)提供多個(gè)傳感器神經(jīng)網(wǎng)絡(luò)的并行操作,用于對(duì)象識(shí)別、避免碰撞和其他任務(wù)。原始 NVIDIA JetBot AI 機(jī)器人的所有組裝文件和完整組件列表可在 GitHub ( https://github.com/NVIDIA-AI-IOT/jetbot ) 上獲得。

poYBAGNo9dSABTi0AACZNHhxSqw58.jpeg
?

可以從第三方制造商處購(gòu)買現(xiàn)成的套裝。這些套件以各種配置呈現(xiàn),使您能夠創(chuàng)建絕對(duì)獨(dú)特的解決方案。我有一套 Waveshare 提供的。Waveshare 的 JetBot 配備了高品質(zhì)的底盤、前置攝像頭和所有必要的工具,可確??焖佥p松地組裝。

pYYBAGNo9daAYDRQAAAr9U-jToY788.jpg
?
poYBAGNo9diAaIzfAACXBgF9Y7c32.jpeg
?

?

?

?

?

不幸的是,我們不得不改變平臺(tái),原來(lái)的平臺(tái)是不穩(wěn)定和弱引擎

我將它安裝在另一個(gè)平臺(tái)上——來(lái)自拆解的 iRobot Create 吸塵器。

pYYBAGNo9d2AcqMrAAXug-Wg488618.jpg
?

考慮在 jetbot 上安裝用于管理和導(dǎo)航的 ROS 包。

機(jī)器人操作系統(tǒng)(ROS)是用于開(kāi)發(fā)機(jī)器人軟件的靈活平臺(tái)(框架)。這是一組各種工具、庫(kù)和一定的規(guī)則,其目的是簡(jiǎn)化開(kāi)發(fā)機(jī)器人軟件的任務(wù)。

我們使用 64 GB 的 SD 卡來(lái)記錄 NVIDIA JetPack 圖像。NVIDIA JetPack 映像基于 Ubuntu 18.04 操作系統(tǒng)。我們將安裝 ROS Melodic 版本(http://wiki.ros.org/melodic )。

# 添加所有 Ubuntu 存儲(chǔ)庫(kù):

sudo apt-add-repository universe
sudo apt-add-repository multiverse
sudo apt-add-repository restricted

# 添加ROS倉(cāng)庫(kù)

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

# 安裝 ROS 基礎(chǔ)

sudo apt-get update
sudo apt-get install ros-melodic-ros-base

# 添加ROS路徑

sudo sh -c ' echo "source /opt/ros/melodic/setup.bash" >> ~ / .bashrc '

我們將安裝 Adafruit 庫(kù)以支持 TB6612/PCA9685 引擎驅(qū)動(dòng)程序和 SSD1306 調(diào)試 OLED 顯示器:

# 安裝點(diǎn)子

sudo apt-get install python-pip

# 安裝 Adafruit 庫(kù)

pip install Adafruit-MotorHAT
pip install Adafruit-SSD1306

我們將為用戶提供對(duì) i2c 總線的訪問(wèn)權(quán)限:

sudo usermod -aG i2c $USER

我們將重新啟動(dòng)系統(tǒng)以使更改生效。

創(chuàng)建一個(gè) ROS Catkin 工作區(qū)來(lái)存儲(chǔ) ROS 包:

# 創(chuàng)建工作區(qū) catkin mkdir -p ~/workspace/catkin_ws/src

cd ~/workspace/catkin_ws
catkin_make
# add the catkin_ws path to bashrc sudo sh -c ' echo "source ~/workspace/catkin_ws/devel/setup.bash" >> ~/.bashrc'

我們關(guān)閉并重新打開(kāi)一個(gè)新的終端窗口以確保 catkin_ws 對(duì) ROS 可見(jiàn):

echo $ROS_PACKAGE_PATH
poYBAGNo9d-AFFCOAAA2KW5_V2c683.png
?

我們克隆并構(gòu)建了 jetson-inference 包。該軟件包使用 NVIDIA TensorRT 在內(nèi)置 Jetson 平臺(tái)上高效部署神經(jīng)網(wǎng)絡(luò)。

# 安裝 git 和 cmake

sudo apt-get install git cmake

# 克隆存儲(chǔ)庫(kù)和 cd 子模塊 ~/workspace

git clone https://github.com/dusty-nv/jetson-inference
cd jetson-inference
git submodule update --init

# 從源代碼構(gòu)建

mkdir build
cd build
cmake ../
make

# 安裝庫(kù)

sudo make install

克隆和構(gòu)建 ROS 包 ros_deep_learning

# 安裝依賴

sudo apt-get install ros-melodic-vision-msgs ros-melodic-image-transport ros-melodic-image-publisher

# 克隆 cd 存儲(chǔ)庫(kù) ~/workspace/catkin_ws/src

git clone https://github.com/dusty-nv/ros_deep_learning

# 構(gòu)建catkin

cd ~/workspace/catkin_ws
catkin_make

# 檢查ROS是否找到了包,包是ros_deep_learning

rospack find ros_deep_learning
poYBAGNo9eGANc_FAABAKEf7bV4312.png
?

克隆和構(gòu)建 jetbot_ros ROS 包

# 克隆存儲(chǔ)庫(kù)

cd ~/workspace/catkin_ws/src
git clone https://github.com/dusty-nv/jetbot_ros

# 構(gòu)建包

cd ~/workspace/catkin_ws
catkin_make

# 檢查 ROS 是否找到了 jetbot_ros 包的包

$ rospack find jetbot_ros

測(cè)試 ros_jetbot

打開(kāi)終端并啟動(dòng)

roscore

在第二個(gè)終端中,我們啟動(dòng) jetbot_motors 節(jié)點(diǎn)

rosrun jetbot_ros jetbot_motors.py

然后問(wèn)題是導(dǎo)入錯(cuò)誤:沒(méi)有名為 Adafruit_MotorHAT 的模塊,盡管該庫(kù)已經(jīng)安裝(見(jiàn)上文)。

但是該庫(kù)是安裝在python3中的,而ROS使用的是python2。7

為 python2 安裝 Adafruit_MotorHAT 庫(kù)。7

python2. 7-m pip install Adafruit_MotorHAT

現(xiàn)在啟動(dòng)正常,在下一個(gè)終端中我們檢查相應(yīng)的節(jié)點(diǎn)和主題是否在 ROS 中運(yùn)行

這是主題列表

  • /jetbot_motors/cmd_dir - 相對(duì)航向(度數(shù) [-180.0, 180.0],速度 [-1.0, 1.0])
  • /jetbot_motors/cmd_raw - 原始 L/R 電機(jī)命令(速度 [-1.0, 1.0],速度 [-1.0, 1.0])
  • /jetbot_motors/cmd_str - 簡(jiǎn)單的字符串命令(左/右/前進(jìn)/后退/停止)

但是,不幸的是,在 jetbot_motors.py 中注冊(cè)了從主題 /jetbot_motors/cmd_str 接收到的消息的處理

我們嘗試從終端發(fā)送它們(這些是向前、向后、向左、向右和停止的移動(dòng))

rostopic pub /jetbot_motors/cmd_str std_msgs/String --once "forward"
rostopic pub /jetbot_motors/cmd_str std_msgs/String --once "backward"
rostopic pub /jetbot_motors/cmd_str std_msgs/String --once "left"
rostopic pub /jetbot_motors/cmd_str std_msgs/String --once "right"
rostopic pub /jetbot_motors/cmd_str std_msgs/String --once "stop"

又是問(wèn)題?。?!沒(méi)有動(dòng)靜。您需要更改文件 jetbot_motors.py,更改 set_speed() 和 all_stop() 函數(shù)。

我創(chuàng)建了一個(gè)新文件 jetbot_motors_1.py 并進(jìn)行了以下更改

# sets motor speed between [-1.0, 1.0]
def set_speed(motor_ID, value):
   max_pwm = 200.0
   speed = int(min(max(abs(value * max_pwm), 0), max_pwm))
   a = b = 0
   if motor_ID == 1:
      motor = motor_left
      a=1
      b=0
   elif motor_ID == 2:
      motor = motor_right
      a=2
      b=3
   else:
      rospy.logerror('set_speed(%d, %f) -> invalid motor_ID=%d', motor_ID, value, motor_ID)
      return
   motor.setSpeed(speed)
   if value < 0:
      motor.run(Adafruit_MotorHAT.FORWARD)
      motor.MC._pwm.setPWM(a,0,0)
      motor.MC._pwm.setPWM(b,0,speed*16)
   elif value > 0:
      motor.run(Adafruit_MotorHAT.BACKWARD)
      motor.MC._pwm.setPWM(a,0,speed*16)
      motor.MC._pwm.setPWM(b,0,0)
   else:
      motor.run(Adafruit_MotorHAT.RELEASE)
      motor.MC._pwm.setPWM(a,0,0)
      motor.MC._pwm.setPWM(b,0,0)
   # stops all motors

def all_stop():
   set_speed(motor_left_ID, 0.0)
   set_speed(motor_right_ID, 0.0)

現(xiàn)在jetbot響應(yīng)發(fā)送消息,可以向前、向后、向左、向右和停止。但這都是一個(gè)速度,由這個(gè)值調(diào)節(jié)

max_pwm = 200.0

有必要記錄以不同速度執(zhí)行的運(yùn)動(dòng)。現(xiàn)在,我們將做最簡(jiǎn)單的,我們將使用發(fā)送 std_msgs/String 消息到主題 /jetbot_motors/cmd_raw

# raw L/R motor commands (speed, speed)
def on_cmd_raw(msg):
rospy.loginfo(rospy.get_caller_id() + ' cmd_raw=%s', msg.data)
speeds=msg. data. split(',')
set_speed(motor_left_ID, float( speeds[0]))
set_speed(motor_right_ID, float (speeds[1]))

檢查一下,我發(fā)送了類似的命令

rostopic pub /jetbot_motors/cmd_raw std_msgs/String --once " 0.9,-0.7"
pYYBAGNo9eSAJkCmAAGqn6RPO8I669.png
?

pYYBAGNo9eeAPwTfAAKC4upJ74E036.png
?

并且還必須更改從主題 /jetbot_motors/cmd_raw 發(fā)送的消息。即geometry_msgs/Twist上的消息類型,在ROS中被廣泛使用。

我創(chuàng)建了一個(gè)新文件 jetbot_motors_2.py 并進(jìn)行了以下更改

#!/usr/bin/env python
import rospy
import time
import math
from Adafruit_MotorHAT import Adafruit_MotorHAT
from std_msgs.msg import String
from geometry_msgs.msg import Twist

PWM_MIN=0.5
PWM_MAX=1.0

# sets motor speed between [-1.0, 1.0]
def set_speed(motor_ID, value):
   max_pwm = 200.0
   speed = int(min(max(abs(value * max_pwm), 0), max_pwm))
   a = b = 0
   if motor_ID == 1:
      motor = motor_left
      a=1
      b=0
   elif motor_ID == 2:
      motor = motor_right
      a=2
      b=3
   else:
      rospy.logerror('set_speed(%d, %f) -> invalid motor_ID=%d', motor_ID, value, motor_ID)
return

def motor.setSpeed(speed)
   if value < 0:
      motor.run(Adafruit_MotorHAT.FORWARD)
      motor.MC._pwm.setPWM(a,0,0)
      motor.MC._pwm.setPWM(b,0,speed*16)
   elif value > 0:
      motor.run(Adafruit_MotorHAT.BACKWARD)
      motor.MC._pwm.setPWM(a,0,speed*16)
      motor.MC._pwm.setPWM(b,0,0)
   else:
      motor.run(Adafruit_MotorHAT.RELEASE)
      motor.MC._pwm.setPWM(a,0,0)
      motor.MC._pwm.setPWM(b,0,0)

# stops all motors
def all_stop():
   set_speed(motor_left_ID, 0.0)
   set_speed(motor_right_ID, 0.0)

# directional commands (degree, speed)
def on_cmd_dir(msg):
   rospy.loginfo(rospy.get_caller_id() + ' cmd_dir=%s', msg.data)
   
# raw L/R motor commands (speed, speed)
def on_cmd_raw(msg):
   rospy.loginfo("msg cmd_raw")
   rospy.loginfo(msg)
   x=max(min(msg.linear.x,1.0),-1.0)
   z=max(min(msg.angular.z,1.0),-1.0)
   l=(x-z)/2
   r=(x+z)/2
   #rospy.loginfo(x)
   #rospy.loginfo(z)
   #rospy.loginfo(l)
   #rospy.loginfo(r)
   lpwm= PWM_MIN+math.fabs(l)*(PWM_MAX-PWM_MIN)
   rpwm= PWM_MIN+math.fabs(r)*(PWM_MAX-PWM_MIN)
   #rospy.loginfo(lpwm)
   #rospy.loginfo(rpwm)
   kl=1 if l>0 else -1
   kr=1 if r>0 else -1
   if l==0 : kl=0
   if r==0 : kr=0
   set_speed(motor_left_ID, kl*lpwm )
   set_speed(motor_right_ID, kr*rpwm)

# simple string commands (left/right/forward/backward/stop)
def on_cmd_str(msg):
   rospy.loginfo(rospy.get_caller_id() + ' cmd_str=%s', msg.data)
   if msg.data.lower() == "left":
      set_speed(motor_left_ID, -1.0)
      set_speed(motor_right_ID, 1.0)
   elif msg.data.lower() == "right":
      set_speed(motor_left_ID, 1.0)
      set_speed(motor_right_ID, -1.0)
   elif msg.data.lower() == "forward":
      set_speed(motor_left_ID, 1.0)
      set_speed(motor_right_ID, 1.0)
   elif msg.data.lower() == "backward":
      set_speed(motor_left_ID, -1.0)
      set_speed(motor_right_ID, -1.0)
   elif msg.data.lower() == "stop":
      all_stop()
   else:
      rospy.logerror(rospy.get_caller_id() + ' invalid cmd_str=%s', msg.data)

# initialization
if __name__ == '__main__':
# setup motor controller
motor_driver = Adafruit_MotorHAT(i2c_bus=1)
motor_left_ID = 1
motor_right_ID = 2
motor_left = motor_driver.getMotor(motor_left_ID)
motor_right = motor_driver.getMotor(motor_right_ID)
# stop the motors as precaution
all_stop()
# setup ros node
rospy.init_node('jetbot_motors')
rospy.Subscriber('~cmd_dir', String, on_cmd_dir)
rospy.Subscriber('~cmd_raw', Twist, on_cmd_raw)
rospy.Subscriber('~cmd_str', String, on_cmd_str)
# start running
rospy.spin()
# stop motors before exiting
all_stop() And

當(dāng)然,通過(guò)啟動(dòng)啟動(dòng)命令文件來(lái)啟動(dòng)所有節(jié)點(diǎn)。我們將launch01.launch文件放在catkin_ws/src/jetbot_ros/launch

<launch>
   <node name="jetbot_motors" pkg="jetbot_ros" type="jetbot_motors_2.py">
   node>
   <node name="jetbot_camera" pkg="jetbot_ros" type="jetbot_camera">
   node>
   <node name="jetbot_oled" pkg="jetbot_ros" type="jetbot_oled.py">
   node>
launch>

運(yùn)行批處理文件

roslaunch jetbot_ros launch01.launch

讓我們從遠(yuǎn)程計(jì)算機(jī)控制機(jī)器人。我們將使用 rosbridge 包。Rosbridge 允許外部客戶端(在我們的例子中是瀏覽器)訪問(wèn) ROS 主題和服務(wù)(從主題發(fā)布和接收,調(diào)用服務(wù))。Rosbridge 是 rosbridge_suite 元包的一部分,其中包括用于實(shí)現(xiàn) rosbridge 協(xié)議的各種附加包。

rosbridge_suite 包是一組實(shí)現(xiàn) rosbridge 協(xié)議并提供 WebSocket 傳輸層的包。

套餐包括:

rosbridge_library - 基本的 rosbridge 包。Rosbridge_library 負(fù)責(zé)接收 JSON 字符串并向 ROS 發(fā)送命令,反之亦然。

rosapi-通過(guò)通常為 ROS 客戶端庫(kù)保留的服務(wù)調(diào)用使某些 ROS 操作可用。這包括獲取和設(shè)置參數(shù)、獲取主題列表等等。

rosbridge_server-通過(guò) WebSocket 提供連接,以便瀏覽器可以“與 rosbridge 對(duì)話”。Roslibjs 是一個(gè)用于瀏覽器的 JavaScript 庫(kù),可以通過(guò) rosbridge_server 與 ROS 進(jìn)行交互。

安裝包

sudo apt-get install ros-melodic-rosbridge-suite

在launch文件夾中的項(xiàng)目文件夾jetbot_ros中創(chuàng)建命令文件launch02.launch

<launch>
   <include file="$(find rosbridge_server)/launch/rosbridge_websocket.launch"/>
   <node name="jetbot_motors" pkg="jetbot_ros" type="jetbot_motors_2.py">
   node>
   <node name="jetbot_oled" pkg="jetbot_ros" type="jetbot_oled.py">
   node>
launch>

并運(yùn)行命令文件

1個(gè)終端

roscore

2個(gè)終端

roslaunch jetbot_ros launch02.launch

要組織 Web 界面,您需要安裝 Web 服務(wù)器。

sudo apt-get install apache2

現(xiàn)在我們的 html 頁(yè)面將位于 /var/www/html 文件夾中。Library roslib.min.js 我們將其放在 js 文件夾中。

創(chuàng)建一個(gè) html 文件 index01.html,我們將通過(guò) websocket 9090 連接到 ROS,并將表單中的消息發(fā)送到 ROS /pub_txt_msg 主題,并在頁(yè)面上接收和顯示來(lái)自 ROS /sub_txt_msg 主題的消息

html>
<html>
<head>
<meta charset="utf-8" />

<script type="text/javascript" src="js/roslib.min.js">script>
<script type="text/javascript" type="text/javascript">
var ros = new ROSLIB.Ros({
url : 'ws://192.168.0.111:9090'
});
ros.on('connection', function() {
   document.getElementById("status").innerHTML = "Connected";
});
ros.on('error', function(error) {
   document.getElementById("status").innerHTML = "Error";
});
ros.on('close', function() {
   document.getElementById("status").innerHTML = "Closed";
});
var txt_listener = new ROSLIB.Topic({
   ros : ros,
   name : '/sub_txt_msg',
   messageType : 'std_msgs/String'
});
txt_listener.subscribe(function(m) {
   document.getElementById("msg").innerHTML = m.data;
});
var pub1=new ROSLIB.Topic ({
   ros: ros,
   name : '/pub_txt_msg',
   messageType : 'std_msgs/String'
});
function send_ros() {
   var msg=new ROSLIB.Message ({"data" : document.getElementById("putdata").value});
   pub1.publish(msg);
}
script>

head>
<body>
<h1>Simple ROS User Interfaceh1>
<p>Connection status: <span id="status">span>p>
<p>Last /txt_msg received: <span id="msg">span>p>
<p><form id=formoptions name=formoptions action="javascript:void();" onsubmit="feturn false;">
send to /pub_txt_msg <br>
<input name=putdata id=putdata>
<button id='button1' value='send' onclick='send_ros();'>Sendbutton>
form>
p>
body>
html>

在瀏覽器中啟動(dòng)頁(yè)面index01.html

poYBAGNo9emAEcCsAAGtwOtOd1Q393.png
?

。

poYBAGNo9eyAbo1IAABa5bkIEGA641.png
?

創(chuàng)建一個(gè)文件 index02.html 來(lái)控制機(jī)器人的運(yùn)動(dòng)并從攝像頭查看圖像。我們使用 nipplejs library.js

html>
<html>
<head>
<meta charset="utf-8" />

<script type="text/javascript" src="js/roslib.min.js">script>
<script type="text/javascript" src="js/nipplejs.js">script>
<script type="text/javascript" type="text/javascript">
var ros = new ROSLIB.Ros({
   url : 'ws://192.168.0.111:9090'
});
ros.on('connection', function() {
   document.getElementById("status").innerHTML = "Connected";
});
ros.on('error', function(error) {
   document.getElementById("status").innerHTML = "Error";
});
ros.on('close', function() {
   document.getElementById("status").innerHTML = "Closed";
});
var txt_listener = new ROSLIB.Topic({
   ros : ros,
   name : '/txt_msg',
   messageType : 'std_msgs/String'
});
txt_listener.subscribe(function(m) {
   document.getElementById("msg").innerHTML = m.data;
});
cmd_vel_listener = new ROSLIB.Topic({
   ros : ros,
   name : "/cmd_vel",
   messageType : 'geometry_msgs/Twist'
});
move = function (linear, angular) {
   var twist = new ROSLIB.Message({
   linear: {
      x: linear,
      y: 0,
      z: 0
   },
   angular: {
      x: 0,
      y: 0,
      z: angular
   }
   });
   cmd_vel_listener.publish(twist);
}
createJoystick = function () {
   var options = {
   zone: document.getElementById('zone_joystick'),
   threshold: 0.1,
   position: { left: 50 + '%' },
   mode: 'static',
   size: 150,
   color: '#000000',
   };
   manager = nipplejs.create(options);
   linear_speed = 0;
   angular_speed = 0;
   manager.on('start', function (event, nipple) {
   timer = setInterval(function () {
   move(linear_speed, angular_speed);
   }, 25);
   });
   manager.on('move', function (event, nipple) {
      max_linear = 1.0; // m/s
      max_angular = 1.0; // rad/s
      max_distance = 75.0; // pixels;
      linear_speed = Math.sin(nipple.angle.radian) * max_linear * nipple.distance/max_distance;
      angular_speed = -Math.cos(nipple.angle.radian) * max_angular * nipple.distance/max_distance;
   });
   manager.on('end', function () {
      if (timer) {
      clearInterval(timer);
   }
   self.move(0, 0);
});
}
window.onload = function () {
createJoystick();
}
script>
head>
<body>
<h1>Simple ROS User Interfaceh1>
<p>Connection status: <span id="status">span>p>
<p>Last /txt_msg received: <span id="msg">span>p>
<div id="zone_joystick" style="position: relative;">div>
body>
html>

啟動(dòng)頁(yè)面后,我們可以控制機(jī)器人的運(yùn)動(dòng)。頁(yè)面預(yù)覽

pYYBAGNo9e6ALzBtAABz2eZPDwU482.png
?

。

?

?

?


pcb 機(jī)器人 ROS
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1新一代網(wǎng)絡(luò)可視化(NPB 2.0)
  2. 3.40 MB  |  1次下載  |  免費(fèi)
  3. 2冷柜-電氣控制系統(tǒng)講解
  4. 13.68 MB   |  1次下載  |  10 積分
  5. 3MDD品牌三極管MMBT3906數(shù)據(jù)手冊(cè)
  6. 2.33 MB  |  次下載  |  免費(fèi)
  7. 4MDD品牌三極管S9012數(shù)據(jù)手冊(cè)
  8. 2.62 MB  |  次下載  |  免費(fèi)
  9. 5LAT1218 如何選擇和設(shè)置外部晶體適配 BlueNRG-X
  10. 0.60 MB   |  次下載  |  3 積分
  11. 6LAT1216 Blue NRG-1/2 系列芯片 Flash 操作與 BLE 事件的互斥處理
  12. 0.89 MB   |  次下載  |  3 積分
  13. 7收音環(huán)繞擴(kuò)音機(jī) AVR-1507手冊(cè)
  14. 2.50 MB   |  次下載  |  免費(fèi)
  15. 8MS1000TA 超聲波測(cè)量模擬前端芯片技術(shù)手冊(cè)
  16. 0.60 MB   |  次下載  |  免費(fèi)

本月

  1. 1愛(ài)華AIWA HS-J202維修手冊(cè)
  2. 3.34 MB   |  37次下載  |  免費(fèi)
  3. 2PC5502負(fù)載均流控制電路數(shù)據(jù)手冊(cè)
  4. 1.63 MB   |  23次下載  |  免費(fèi)
  5. 3NB-IoT芯片廠商的資料說(shuō)明
  6. 0.31 MB   |  22次下載  |  1 積分
  7. 4UWB653Pro USB口測(cè)距通信定位模塊規(guī)格書(shū)
  8. 838.47 KB  |  5次下載  |  免費(fèi)
  9. 5蘇泊爾DCL6907(即CHK-S007)單芯片電磁爐原理圖資料
  10. 0.04 MB   |  4次下載  |  1 積分
  11. 6蘇泊爾DCL6909(即CHK-S009)單芯片電磁爐原理圖資料
  12. 0.08 MB   |  2次下載  |  1 積分
  13. 7100W準(zhǔn)諧振反激式恒流電源電路圖資料
  14. 0.09 MB   |  2次下載  |  1 積分
  15. 8FS8025B USB的PD和OC快充協(xié)議電壓誘騙控制器IC技術(shù)手冊(cè)
  16. 1.81 MB   |  1次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935137次下載  |  10 積分
  3. 2開(kāi)源硬件-PMP21529.1-4 開(kāi)關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
  4. 1.48MB  |  420064次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233089次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費(fèi)下載
  8. 340992  |  191439次下載  |  10 積分
  9. 5十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  10. 158M  |  183353次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81602次下載  |  10 積分
  13. 7Keil工具M(jìn)DK-Arm免費(fèi)下載
  14. 0.02 MB  |  73822次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65991次下載  |  10 積分