主頁 > 區塊鏈 > Astra相機的ROS開發環境配置與使用

Astra相機的ROS開發環境配置與使用

2021-02-28 11:15:15 區塊鏈

Astra相機的ROS開發環境配置與使用

  • 一、Astra相機簡介
  • 二、搭建ROS作業空間
    • 1.下載ROS驅動功能包
    • 2.安裝依賴
    • 3.配置作業空間
  • 三、配置設備節點
    • 1.固定設備串口號
    • 2.獲取設備資訊
    • 3.修改launch檔案
  • 四、啟動相機節點
  • 五、配置相機內參
    • 1.下載內參檔案
    • 2.使用內參檔案
    • 3.啟動launch
  • 六、RVIZ查看點云
    • 1.啟動rviz
    • 2.查看點云
    • 3.快捷啟動rviz
    • 4.保存點云資訊
    • 5.查看pcd檔案


一、Astra相機簡介

在這里插入圖片描述
Astra相機(售價150)是由樂視與奧比中光合作生產的一款體感相機,其對標微軟Kinect相機(售價800+),可用于機器視覺、3D點云、opencv、SLAM學習,支持ROS框架能夠在ubuntu、windows、Android等系統下進行開發,其官方(https://orbbec3d.com/develop/)提供了相應的SDK供開發者使用,
在這里插入圖片描述
相機的具體引數如下所示,本文主要講解如何在Ubuntu端搭建基于ROS的開發環境,
在這里插入圖片描述

二、搭建ROS作業空間

1.下載ROS驅動功能包

Astra相機官方提供了ROS驅動進行開發,該驅動目前僅支持ROS Kinetic 和 Melodic版本,

該專案的官方地址為https://github.com/orbbec/ros_astra_camera,由于處于外網原因,建議將其搬運至國內碼云后進行下載,此處提供我搬運的碼云地址:https://gitee.com/jasonli0012/ros_astra_camera
在這里插入圖片描述

2.安裝依賴

下載完專案原始碼后,需要先進行安裝依賴檔案,此處安裝命令中的**$ROS_DISTRO**將根據你的ROS版本不同而不同,此處我選擇Melodic版本進行開發,Astra相機同樣支持ROS Kinetic版本的開發,

sudo apt install ros-$ROS_DISTRO-rgbd-launch ros-$ROS_DISTRO-libuvc ros-$ROS_DISTRO-libuvc-camera ros-$ROS_DISTRO-libuvc-ros

在這里插入圖片描述

3.配置作業空間

完成安裝依賴檔案后,需要新建一個作業空間用于對Astra相機的ROS開發,

# 新建作業空間
mkdir -p astra/src
cd astra
catkin_make
source devel/setup.bash
# 將下載的原始碼移動至src目錄下
cd src
mv ~/ros_astra_camera ~/ws/astra/src/
# 編譯
cd ..
catkin_make

編譯成功后如圖所示:
在這里插入圖片描述
此處建議大家將source devel/setup.bash寫入 .bashrc檔案中,以防止之后重復操作,此處我用的命令列為zsh所以修改的檔案為 .zshrc,加載的檔案為 setup.zsh

# bash
sudo vi ~/.bashrc
# 填寫你自己的作業空間目錄
source ~/ws/astra/devel/setup.bash


# zsh
sudo vi ~/.zshrc
# 填寫你自己的作業空間目錄
source ~/ws/astra/devel/setup.zsh

在這里插入圖片描述

三、配置設備節點

1.固定設備串口號

為了方便之后進行開發,需要將Astra相機的串口號固定表示,其官方功能包中就自帶腳本,只需要直接運行即可,

roscd astra_camera
# 運行腳本
./scripts/create_udev_rules

出現如下圖所示內容即表明成功,
在這里插入圖片描述
隨后再次編譯作業空間即可,

# 到達作業空間下
roscd astra_camera
cd ../..
# 編譯
catkin_make -j7

上述命令中編譯命令catkin_make后帶的引數表示使用幾核(CPU核心)進行編譯,此處表明使用7核心進行編譯以達到快速編譯,

2.獲取設備資訊

由于官方提供的launch檔案是通過設備的 vendor (設備貼牌)和 product (設備ID)進行啟動節點的,所以首先我們需要確定設備的貼牌和ID ,

在命令列輸入命令lsusb分別查看Astra相機插拔前后的設備資訊,可以發現設備資訊,
在這里插入圖片描述
通過對比,排除多出的USB驅動外,剩余的兩項即為設備資訊

Bus 001 Device 019: ID 2bc5:0502  
Bus 001 Device 018: ID 2bc5:0403 

其中設備的貼牌為 2bc5 ,而0502 代表彩色攝像頭,0403代表深度攝像頭,

3.修改launch檔案

在獲取設備資訊后,我們需要修改官方提供的launch檔案,

# 找到launch檔案所在目錄
roscd astra_camera/launch
# 編輯launch檔案
sudo gedit astra_pro,launch

打開launch檔案后,找到第71行,將設備的屬性修改為彩色相機的設備ID,
在這里插入圖片描述

四、啟動相機節點

啟動launch檔案,運行節點,出現如下圖所示內容即表示運行成功,此處黃色報警內容可暫時忽略,

roslaunch astra_carma astrapro.launch

在這里插入圖片描述
另開命令列運行rqt節點

 rosrun rqt_image_view rqt_image_view 

在rqt工具上方選擇所需訂閱的話題即可調出不同的圖片,此處展示為彩色圖片(rgb)中的原圖(image_raw),此外也可以選擇深度、紅外等所需影像,
在這里插入圖片描述
在這里插入圖片描述

五、配置相機內參

1.下載內參檔案

由于相機本身存在畸變,所以需要使用一些組態檔來完成去畸變作業,此處給出Astra相機中彩色相機和深度相機的內參組態檔,

camera.yaml檔案

image_width: 640
image_height: 480
camera_name: camera
camera_matrix:
  rows: 3
  cols: 3
  data: [577.54679,   0.     , 310.24326,
           0.     , 578.63325, 253.65539,
           0.     ,   0.     ,   1.     ]
camera_model: plumb_bob
distortion_model: plumb_bob
distortion_coefficients:
  rows: 1
  cols: 5
  data: [0.125197, -0.196591, 0.006816, -0.006225, 0.000000]
rectification_matrix:
  rows: 3
  cols: 3
  data: [1., 0., 0.,
         0., 1., 0.,
         0., 0., 1.]
projection_matrix:
  rows: 3
  cols: 4
  data: [590.55457,   0.     , 306.57339,   0.     ,
           0.     , 592.83978, 256.43008,   0.     ,
           0.     ,   0.     ,   1.     ,   0.     ]

depth.yaml 檔案

image_width: 640
image_height: 480
camera_name: depth_Astra_Orbbec
camera_matrix:
  rows: 3
  cols: 3
  data: [582.795354, 0.000000, 326.415982, 0.000000, 584.395006, 249.989410, 0.000000, 0.000000, 1.000000]
distortion_model: plumb_bob
distortion_coefficients:
  rows: 1
  cols: 5
  data: [-0.068613, 0.174404, 0.001015, 0.006240, 0.000000]
rectification_matrix:
  rows: 3
  cols: 3
  data: [1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000]
projection_matrix:
  rows: 3
  cols: 4
  data: [586.186035, 0.000000, 329.702427, 0.000000, 0.000000, 590.631409, 250.167765, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000]

復制上述檔案并放置到cfg檔案夾中即可,

#路徑
roscd astra_camera/cfg

在這里插入圖片描述

2.使用內參檔案

為了在啟動launch檔案時呼叫內參檔案,需要對其進行修改,

roscd astra_camera/launch
sudo gedit astrapro.launch

在這里插入圖片描述
此處使用gedit編輯器打開launch檔案并修改其25、26行內容,將內參檔案的地址填寫入內,

# 原內容:
<arg name="rgb_camera_info_url"   default="" />
<arg name="depth_camera_info_url" default="" />
# 替換為:
<arg name="rgb_camera_info_url"   default="file://$(find astra_camera)/cfg/camera.yaml" />
<arg name="depth_camera_info_url" default="file://$(find astra_camera)/cfg/depth.yaml" />

隨后向下,找到第84行修改為如下內容:

# 原內容:
<param name="camera_info_url" value="" />
# 替換為:
<param name="camera_info_url" type="string" value="$(arg rgb_camera_info_url)" />

在這里插入圖片描述

3.啟動launch

配置完成后可以再次啟動節點,查看校準后的影像內容,

原始的深度圖:
在這里插入圖片描述
校準后的深度圖:
在這里插入圖片描述

六、RVIZ查看點云

1.啟動rviz

除了使用rqt工具進行查看影像外,還可以使用rviz工具進行查看影像,命令列中直接啟動rviz工具,

rviz

在這里插入圖片描述
此時的rviz內尚未訂閱任何節點,此時可以訂閱查看影像資訊,點擊左下方Add按鈕選擇image型別,添加影像節點,

在這里插入圖片描述
隨后在左側打開選項卡image,在image Topic中選擇自己訂閱的節點即可,
在這里插入圖片描述
上述步驟可重復進行,從而達到訂閱多個攝像頭節點,如下圖即為同時打開三個攝像頭,
在這里插入圖片描述

2.查看點云

同樣再次點擊左下方Add按鈕,選擇PointCloud2型別新建內容,
在這里插入圖片描述
隨后,在左側PointCloud2選項下訂閱 /camera/depth_registered/points話題,并將Global OptionsFixed Frame選為camera_depth_optical_frame,完成上述操作后,即可在中央查看到點云選項,

在這里插入圖片描述

3.快捷啟動rviz

為了方便之后減少重復打開rviz添加上述內容的作業,此處提供了rviz的引數檔案以方便再次打開,

Panels:
  - Class: rviz/Displays
    Help Height: 0
    Name: Displays
    Property Tree Widget:
      Expanded:
        - /Global Options1
        - /Status1
        - /PointCloud21
        - /Depth1
        - /ir1
        - /RGB1
      Splitter Ratio: 0.5
    Tree Height: 361
  - Class: rviz/Selection
    Name: Selection
  - Class: rviz/Tool Properties
    Expanded:
      - /2D Pose Estimate1
      - /2D Nav Goal1
      - /Publish Point1
    Name: Tool Properties
    Splitter Ratio: 0.5886790156364441
  - Class: rviz/Views
    Expanded:
      - /Current View1
    Name: Views
    Splitter Ratio: 0.5
  - Class: rviz/Time
    Experimental: false
    Name: Time
    SyncMode: 0
    SyncSource: PointCloud2
Preferences:
  PromptSaveOnExit: true
Toolbars:
  toolButtonStyle: 2
Visualization Manager:
  Class: ""
  Displays:
    - Alpha: 0.5
      Cell Size: 1
      Class: rviz/Grid
      Color: 159; 147; 147
      Enabled: true
      Line Style:
        Line Width: 0.029999999329447746
        Value: Lines
      Name: Grid
      Normal Cell Count: 0
      Offset:
        X: 0
        Y: 0
        Z: 0
      Plane: XZ
      Plane Cell Count: 10
      Reference Frame: camera_depth_optical_frame
      Value: true
    - Alpha: 1
      Autocompute Intensity Bounds: true
      Autocompute Value Bounds:
        Max Value: 9.859000205993652
        Min Value: 0.5799999833106995
        Value: true
      Axis: X
      Channel Name: intensity
      Class: rviz/PointCloud2
      Color: 255; 255; 255
      Color Transformer: RGB8
      Decay Time: 0
      Enabled: true
      Invert Rainbow: false
      Max Color: 255; 255; 255
      Max Intensity: 4096
      Min Color: 0; 0; 0
      Min Intensity: 0
      Name: PointCloud2
      Position Transformer: XYZ
      Queue Size: 10
      Selectable: true
      Size (Pixels): 3
      Size (m): 0.009999999776482582
      Style: Squares
      Topic: /camera/depth_registered/points
      Unreliable: false
      Use Fixed Frame: true
      Use rainbow: true
      Value: true
    - Class: rviz/Image
      Enabled: true
      Image Topic: /camera/depth/image_rect
      Max Value: 1
      Median window: 5
      Min Value: 0
      Name: Depth
      Normalize Range: true
      Queue Size: 2
      Transport Hint: raw
      Unreliable: false
      Value: true
    - Class: rviz/Image
      Enabled: true
      Image Topic: /camera/ir/image
      Max Value: 1
      Median window: 5
      Min Value: 0
      Name: ir
      Normalize Range: true
      Queue Size: 2
      Transport Hint: raw
      Unreliable: false
      Value: true
    - Class: rviz/Image
      Enabled: true
      Image Topic: /camera/rgb/image_raw
      Max Value: 1
      Median window: 5
      Min Value: 0
      Name: RGB
      Normalize Range: true
      Queue Size: 2
      Transport Hint: raw
      Unreliable: false
      Value: true
  Enabled: true
  Global Options:
    Background Color: 48; 48; 48
    Default Light: true
    Fixed Frame: camera_depth_frame
    Frame Rate: 30
  Name: root
  Tools:
    - Class: rviz/Interact
      Hide Inactive Objects: true
    - Class: rviz/MoveCamera
    - Class: rviz/Select
    - Class: rviz/FocusCamera
    - Class: rviz/Measure
    - Class: rviz/SetInitialPose
      Theta std deviation: 0.2617993950843811
      Topic: /initialpose
      X std deviation: 0.5
      Y std deviation: 0.5
    - Class: rviz/SetGoal
      Topic: /move_base_simple/goal
    - Class: rviz/PublishPoint
      Single click: true
      Topic: /clicked_point
  Value: true
  Views:
    Current:
      Class: rviz/Orbit
      Distance: 3.863161325454712
      Enable Stereo Rendering:
        Stereo Eye Separation: 0.05999999865889549
        Stereo Focal Distance: 1
        Swap Stereo Eyes: false
        Value: false
      Focal Point:
        X: 2.0370023250579834
        Y: -1.0987344980239868
        Z: -0.031386714428663254
      Focal Shape Fixed Size: true
      Focal Shape Size: 0.05000000074505806
      Invert Z Axis: false
      Name: Current View
      Near Clip Distance: 0.009999999776482582
      Pitch: 0.004796733148396015
      Target Frame: <Fixed Frame>
      Value: Orbit (rviz)
      Yaw: 2.4886555671691895
    Saved: ~
Window Geometry:
  Depth:
    collapsed: false
  Displays:
    collapsed: false
  Height: 961
  Hide Left Dock: false
  Hide Right Dock: false
  QMainWindow State: 000000ff00000000fd0000000400000000000001fa00000323fc020000000afb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f0070006500720074006900650073020000019b000001b500000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003d000001a6000000c900fffffffb0000000a0044006500700074006801000001e9000000ae0000001600fffffffb00000006005200470042010000029d000000c30000001600fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000019200000323fc0200000005fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073010000003d00000211000000a400fffffffb000000040069007201000002540000010c0000001600fffffffb0000000a0049006d00610067006501000002fb000000c00000000000000000fb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000007800000003efc0100000002fb0000000800540069006d0065010000000000000780000002eb00fffffffb0000000800540069006d00650100000000000004500000000000000000000003e80000032300000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
  RGB:
    collapsed: false
  Selection:
    collapsed: false
  Time:
    collapsed: false
  Tool Properties:
    collapsed: false
  Views:
    collapsed: false
  Width: 1920
  X: 0
  Y: 27
  ir:
    collapsed: false

新建檔案astra_camera.rviz并將上述檔案保存其內,最后將檔案反正如下目錄即可,

# 打開功能包根目錄
roscd astra_camera
# 新建檔案夾
mkdir rviz
cd rviz
# 復制上述檔案至astra_camera.rviz
sudo vi astra_camera.rviz

在這里插入圖片描述
最后,即可快捷啟動rviz環境了!

roscd astra_camera/
rviz -d rviz/astra_camera.rviz

在這里插入圖片描述
在這里插入圖片描述

4.保存點云資訊

如果需要實時保存當前點云資訊,可以直接運行如下節點,該節點將把當前點云資訊保存至當前目錄下,

rosrun pcl_ros pointcloud_to_pcd input:=/camera/depth_registered/points

在這里插入圖片描述
保存點云資訊時,要注意及時停止(Ctrl+C)否則會生產大量的pcd檔案,
在這里插入圖片描述

5.查看pcd檔案

查看pcd檔案需要使用特定工具,此處介紹工具pcl_viewer

# 安裝
sudo apt-get install  pcl-tools

查看檔案的方式如下,其中xxxx替換為所需查看的檔案名,

pcl_viewer xxxx.pcd

在這里插入圖片描述
打開后,可以使用滑鼠進行放大、縮小、移動,操作同rviz一樣,同時可以點擊鍵盤上的數字鍵1~5切換不同的顏色,
在這里插入圖片描述

轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/264538.html

標籤:區塊鏈

上一篇:Golang學習之路—map

下一篇:Golang 實作的打字小程式

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • JAVA使用 web3j 進行token轉賬

    最近新學習了下區塊鏈這方面的知識,所學不多,給大家分享下。 # 1. 關于web3j web3j是一個高度模塊化,反應性,型別安全的Java和Android庫,用于與智能合約配合并與以太坊網路上的客戶端(節點)集成。 # 2. 準備作業 jdk版本1.8 引入maven <dependency> < ......

    uj5u.com 2020-09-10 03:03:06 more
  • 以太坊智能合約開發框架Truffle

    前言 部署智能合約有多種方式,命令列的瀏覽器的渠道都有,但往往跟我們程式員的風格不太相符,因為我們習慣了在IDE里寫了代碼然后打包運行看效果。 雖然現在IDE中已經存在了Solidity插件,可以撰寫智能合約,但是部署智能合約卻要另走他路,沒辦法進行一個快捷的部署與測驗。 如果團隊管理的區塊節點多、 ......

    uj5u.com 2020-09-10 03:03:12 more
  • 谷歌二次驗證碼成為區塊鏈專用安全碼,你怎么看?

    前言 谷歌身份驗證器,前些年大家都比較陌生,但隨著國內互聯網安全的加強,它越來越多地出現在大家的視野中。 比較廣泛接觸的人群是國際3A游戲愛好者,游戲盜號現象嚴重+國外賬號安全應用廣泛,這類游戲一般都會要求用戶系結名為“兩步驗證”、“雙重驗證”等,平臺一般都推薦用谷歌身份驗證器。 后來區塊鏈業務風靡 ......

    uj5u.com 2020-09-10 03:03:17 more
  • 密碼學DAY1

    目錄 ##1.1 密碼學基本概念 密碼在我們的生活中有著重要的作用,那么密碼究竟來自何方,為何會產生呢? 密碼學是網路安全、資訊安全、區塊鏈等產品的基礎,常見的非對稱加密、對稱加密、散列函式等,都屬于密碼學范疇。 密碼學有數千年的歷史,從最開始的替換法到如今的非對稱加密演算法,經歷了古典密碼學,近代密 ......

    uj5u.com 2020-09-10 03:03:50 more
  • 密碼學DAY1_02

    目錄 ##1.1 ASCII編碼 ASCII(American Standard Code for Information Interchange,美國資訊交換標準代碼)是基于拉丁字母的一套電腦編碼系統,主要用于顯示現代英語和其他西歐語言。它是現今最通用的單位元組編碼系統,并等同于國際標準ISO/IE ......

    uj5u.com 2020-09-10 03:04:50 more
  • 密碼學DAY2

    ##1.1 加密模式 加密模式:https://docs.oracle.com/javase/8/docs/api/javax/crypto/Cipher.html ECB ECB : Electronic codebook, 電子密碼本. 需要加密的訊息按照塊密碼的塊大小被分為數個塊,并對每個塊進 ......

    uj5u.com 2020-09-10 03:05:42 more
  • NTP時鐘服務器的特點(京準電子)

    NTP時鐘服務器的特點(京準電子) NTP時鐘服務器的特點(京準電子) 京準電子官V——ahjzsz 首先對時間同步進行了背景介紹,然后討論了不同的時間同步網路技術,最后指出了建立全球或區域時間同步網存在的問題。 一、概 述 在通信領域,“同步”概念是指頻率的同步,即網路各個節點的時鐘頻率和相位同步 ......

    uj5u.com 2020-09-10 03:05:47 more
  • 標準化考場時鐘同步系統推進智能化校園建設

    標準化考場時鐘同步系統推進智能化校園建設 標準化考場時鐘同步系統推進智能化校園建設 安徽京準電子科技官微——ahjzsz 一、背景概述隨著教育事業的快速發展,學校建設如雨后春筍,隨之而來的學校教育、管理、安全方面的問題成了學校管理人員面臨的最大的挑戰,這些問題同時也是學生家長所擔心的。為了讓學生有更 ......

    uj5u.com 2020-09-10 03:05:51 more
  • 位元幣入門

    引言 位元幣基本結構 位元幣基礎知識 1)哈希演算法 2)非對稱加密技術 3)數字簽名 4)MerkleTree 5)哪有位元幣,有的是UTXO 6)位元幣挖礦與共識 7)區塊驗證(共識) 總結 引言 上一篇我們已經知道了什么是區塊鏈,此篇說一下區塊鏈的第一個應用——位元幣。其實先有位元幣,后有的區塊 ......

    uj5u.com 2020-09-10 03:06:15 more
  • 北斗對時服務器(北斗對時設備)電力系統應用

    北斗對時服務器(北斗對時設備)電力系統應用 北斗對時服務器(北斗對時設備)電力系統應用 京準電子科技官微(ahjzsz) 中國北斗衛星導航系統(英文名稱:BeiDou Navigation Satellite System,簡稱BDS),因為是目前世界范圍內唯一可以大面積提供免費定位服務的系統,所以 ......

    uj5u.com 2020-09-10 03:06:20 more
最新发布
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:46:47 more
  • Hyperledger Fabric 使用 CouchDB 和復雜智能合約開發

    在上個實驗中,我們已經實作了簡單智能合約實作及客戶端開發,但該實驗中智能合約只有基礎的增刪改查功能,且其中的資料管理功能與傳統 MySQL 比相差甚遠。本文將在前面實驗的基礎上,將 Hyperledger Fabric 的默認資料庫支持 LevelDB 改為 CouchDB 模式,以實作更復雜的資料... ......

    uj5u.com 2023-04-16 07:28:31 more
  • .NET Core 波場鏈離線簽名、廣播交易(發送 TRX和USDT)筆記

    Get Started NuGet You can run the following command to install the Tron.Wallet.Net in your project. PM> Install-Package Tron.Wallet.Net 配置 public reco ......

    uj5u.com 2023-04-14 08:08:00 more
  • DKP 黑客分析——不正確的代幣對比率計算

    概述: 2023 年 2 月 8 日,針對 DKP 協議的閃電貸攻擊導致該協議的用戶損失了 8 萬美元,因為 execute() 函式取決于 USDT-DKP 對中兩種代幣的余額比率。 智能合約黑客概述: 攻擊者的交易:0x0c850f,0x2d31 攻擊者地址:0xF38 利用合同:0xf34ad ......

    uj5u.com 2023-04-07 07:46:09 more
  • Defi開發簡介

    Defi開發簡介 介紹 Defi是去中心化金融的縮寫, 是一項旨在利用區塊鏈技術和智能合約創建更加開放,可訪問和透明的金融體系的運動. 這與傳統金融形成鮮明對比,傳統金融通常由少數大型銀行和金融機構控制 在Defi的世界里,用戶可以直接從他們的電腦或移動設備上訪問廣泛的金融服務,而不需要像銀行或者信 ......

    uj5u.com 2023-04-05 08:01:34 more
  • solidity簡單的ERC20代幣實作

    // SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.7.0 <0.9.0; import "hardhat/console.sol"; //ERC20 同質化代幣,每個代幣的本質或性質都是相同 //ETH 是原生代幣,它不是ERC20代幣, ......

    uj5u.com 2023-03-21 07:56:29 more
  • solidity 參考型別修飾符memory、calldata與storage 常量修飾符C

    在solidity語言中 參考型別修飾符(參考型別為存盤空間不固定的數值型別) memory、calldata與storage,它們只能修飾參考型別變數,比如字串、陣列、位元組等... memory 適用于方法傳參、返參或在方法體內使用,使用完就會清除掉,釋放記憶體 calldata 僅適用于方法傳參 ......

    uj5u.com 2023-03-08 07:57:54 more
  • solidity注解標簽

    在solidity語言中 注釋符為// 注解符為/* 內容*/ 或者 是 ///內容 注解中含有這幾個標簽給予我們使用 @title 一個應該描述合約/介面的標題 contract, library, interface @author 作者的名字 contract, library, interf ......

    uj5u.com 2023-03-08 07:57:49 more
  • 評價指標:相似度、GAS消耗

    【代碼注釋自動生成方法綜述】 這些評測指標主要來自機器翻譯和文本總結等研究領域,可以評估候選文本(即基于代碼注釋自動方法而生成)和參考文本(即基于手工方式而生成)的相似度. BLEU指標^[^?88^^?^]^:其全稱是bilingual evaluation understudy.該指標是最早用于 ......

    uj5u.com 2023-02-23 07:27:39 more
  • 基于NOSTR協議的“公有制”版本的Twitter,去中心化社交軟體Damus

    最近,一個幽靈,Web3的幽靈,在網路游蕩,它叫Damus,這玩意詮釋了什么叫做病毒式營銷,滑稽的是,一個Web3產品卻在Web2的產品鏈上瘋狂傳銷,各方大佬紛紛為其背書,到底發生了什么?Damus的葫蘆里,賣的是什么藥? 注冊和簡單實用 很少有什么產品在用戶注冊環節會有什么噱頭,但Damus確實出 ......

    uj5u.com 2023-02-05 06:48:39 more