BOS가 그래서 머하는건지 까지 가려면.. USB 스펙을 다 읽어야 할 것 같은 느낌이... 크흡

[링크 : https://www.usb.org/bos-descriptor-types]

 

However I'm having trouble finding the Binary Device Object Store (BOS) descriptor using either method.



The header BOS descriptor is:

struct usb_bos_descriptor_header {
    u8_t bLength;
    u8_t bDescriptorType;
    u16_t wTotalLength;
    u8_t bNumDeviceCaps;
};

[링크 : https://stackoverflow.com/questions/57947195/]

 

EFI_USB_BOS_DESCRIPTOR 구조체는 USB 함수 드라이버에 BOS(Binary Object Store)에 대한 정보를 제공합니다.

[링크 : https://learn.microsoft.com/ko-kr/windows-hardware/drivers/bringup/efi-usb-bos-descriptor]

[링크 : https://techcommunity.microsoft.com/t5/microsoft-usb-blog/usb-2-1-2-0-1-1-device-enumeration-changes-in-windows-8/ba-p/270775]

'이론 관련 > 컴퓨터 관련' 카테고리의 다른 글

DDR3 pinout과 ECC  (0) 2024.04.01
uefi dxe pei  (0) 2024.04.01
radix 4 - fp4  (0) 2024.03.21
1.58bit  (0) 2024.03.16
gps kalman  (0) 2024.03.13
Posted by 구차니
프로그램 사용/kinect2024. 7. 14. 11:19

처음 실행하니 권한부족.. libusb가 권한이 필요한 녀석이었던가?

libfreenect2/build/bin$ ./Protonect 
Version: 0.2.0
Environment variables: LOGFILE=<protonect.log>
Usage: ./Protonect [-gpu=<id>] [gl | cl | clkde | cuda | cudakde | cpu] [<device serial>]
        [-noviewer] [-norgb | -nodepth] [-help] [-version]
        [-frames <number of frames to process>]
To pause and unpause: pkill -USR1 Protonect
[Info] [Freenect2Impl] enumerating devices...
[Info] [Freenect2Impl] 10 usb devices connected
[Error] [Freenect2Impl] failed to open Kinect v2: @4:3 LIBUSB_ERROR_ACCESS Access denied (insufficient permissions)
[Info] [Freenect2Impl] found 0 devices
no device connected!

 

짜잔~하고 먼가 나오길 기대했지만... 안된다 -_-

$ sudo ./Protonect 
Version: 0.2.0
Environment variables: LOGFILE=<protonect.log>
Usage: ./Protonect [-gpu=<id>] [gl | cl | clkde | cuda | cudakde | cpu] [<device serial>]
        [-noviewer] [-norgb | -nodepth] [-help] [-version]
        [-frames <number of frames to process>]
To pause and unpause: pkill -USR1 Protonect
[Info] [Freenect2Impl] enumerating devices...
[Info] [Freenect2Impl] 10 usb devices connected
[Info] [Freenect2Impl] found valid Kinect v2 @4:5 with serial 501441643042
[Info] [Freenect2Impl] found 1 devices
[Info] [Freenect2DeviceImpl] opening...
[Info] [Freenect2DeviceImpl] transfer pool sizes rgb: 20*16384 ir: 60*8*33792
[Info] [Freenect2DeviceImpl] opened
[Info] [Freenect2DeviceImpl] starting...
[Debug] [Freenect2DeviceImpl] status 0x090000: 9729
[Error] [protocol::UsbControl] failed to set ir interface state! LIBUSB_ERROR_OTHER Other error. Try debugging with environment variable: export LIBUSB_DEBUG=3 .
[Info] [Freenect2DeviceImpl] closing...
[Info] [Freenect2DeviceImpl] releasing usb interfaces...
[Info] [Freenect2DeviceImpl] deallocating usb transfer pools...
[Info] [Freenect2DeviceImpl] closing usb device...
[Info] [Freenect2DeviceImpl] closed

 

LIBUSB_DEBUG를 줘도 두 줄 추가 되는 것 외에는 별다른 에러 메시지가 없다.

# LIBUSB_DEBUG=3 ./Protonect 
Version: 0.2.0
Environment variables: LOGFILE=<protonect.log>
Usage: ./Protonect [-gpu=<id>] [gl | cl | clkde | cuda | cudakde | cpu] [<device serial>]
        [-noviewer] [-norgb | -nodepth] [-help] [-version]
        [-frames <number of frames to process>]
To pause and unpause: pkill -USR1 Protonect
libusb: warning [libusb_init] installing new context as implicit default
[Info] [Freenect2Impl] enumerating devices...
[Info] [Freenect2Impl] 10 usb devices connected
[Info] [Freenect2Impl] found valid Kinect v2 @4:7 with serial 501441643042
[Info] [Freenect2Impl] found 1 devices
[Info] [Freenect2DeviceImpl] opening...
[Info] [Freenect2DeviceImpl] transfer pool sizes rgb: 20*16384 ir: 60*8*33792
[Info] [Freenect2DeviceImpl] opened
[Info] [Freenect2DeviceImpl] starting...
libusb: error [udev_hotplug_event] ignoring udev action change
libusb: error [udev_hotplug_event] ignoring udev action change
[Debug] [Freenect2DeviceImpl] status 0x090000: 9731
libusb: error [op_set_interface] set interface failed, errno=28
[Error] [protocol::UsbControl] failed to set ir interface state! LIBUSB_ERROR_OTHER Other error. Try debugging with environment variable: export LIBUSB_DEBUG=3 .
[Info] [Freenect2DeviceImpl] closing...
[Info] [Freenect2DeviceImpl] releasing usb interfaces...
[Info] [Freenect2DeviceImpl] deallocating usb transfer pools...
[Info] [Freenect2DeviceImpl] closing usb device...
[Info] [Freenect2DeviceImpl] closed
libusb: warning [libusb_exit] device 4.7 still referenced
libusb: warning [libusb_exit] device 4.6 still referenced
libusb: warning [libusb_exit] device 4.1 still referenced

 

커널 메시지로는.... 엥? 왜 갑자기 대역폭 부족?

$ sudo dmesg -w
[  415.484074] usb 4-1.1: reset SuperSpeed USB device number 7 using xhci_hcd
[  415.595900] usb 4-1.1: Not enough bandwidth for new device state.
[  415.595907] usb 4-1.1: Not enough bandwidth for altsetting 1

 

라이브러리 홈페이지 가서 다시 보니 

make install 하고 udev rule을 복사한 뒤, 키넥트를 뽑았다 꽂으라고 한다.

Build (if you have run cd depends previously, cd .. back to the libfreenect2 root directory first.)
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/freenect2
make
make install
You need to specify cmake -Dfreenect2_DIR=$HOME/freenect2/lib/cmake/freenect2 for CMake based third-party application to find libfreenect2.
Set up udev rules for device access: sudo cp ../platform/linux/udev/90-kinect2.rules /etc/udev/rules.d/, then replug the Kinect.
Run the test program: ./bin/Protonect
Run OpenNI2 test (optional): sudo apt-get install openni2-utils && sudo make install-openni2 && NiViewer2. Environment variable LIBFREENECT2_PIPELINE can be set to cl, cuda, etc to specify the pipeline.

[링크 : https://github.com/OpenKinect/libfreenect2]

 

먼가 잔뜩 뜨긴 한데.. udev 쪽 먼가 실행하는 것 같진 않고..

[  517.098960] usb 3-1: new high-speed USB device number 5 using xhci_hcd
[  517.251097] usb 3-1: New USB device found, idVendor=045e, idProduct=02d9, bcdDevice= 0.70
[  517.251115] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[  517.251122] usb 3-1: Product: NuiSensor Adaptor      
[  517.251127] usb 3-1: Manufacturer: Microsoft Corporation  
[  517.254367] hub 3-1:1.0: USB hub found
[  517.254752] hub 3-1:1.0: 1 port detected
[  517.704842] usb 4-1: new SuperSpeed USB device number 8 using xhci_hcd
[  520.690577] usb 4-1: New USB device found, idVendor=045e, idProduct=02d9, bcdDevice= 0.73
[  520.690597] usb 4-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[  520.690604] usb 4-1: Product: NuiSensor Adaptor      
[  520.690610] usb 4-1: Manufacturer: Microsoft Corporation  
[  520.694210] hub 4-1:1.0: USB hub found
[  520.694623] hub 4-1:1.0: 1 port detected
[  521.187545] usb 4-1.1: new SuperSpeed USB device number 9 using xhci_hcd
[  521.212947] usb 4-1.1: New USB device found, idVendor=045e, idProduct=02d8, bcdDevice= 1.00
[  521.212966] usb 4-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=4
[  521.212973] usb 4-1.1: Product: Xbox NUI Sensor
[  521.212977] usb 4-1.1: Manufacturer: Microsoft
[  521.212982] usb 4-1.1: SerialNumber: 501441643042

 

키넥트 관련은 MODE 주는 것 외에는 별다른게 없어 보인다.

src/libfreenect2/build/bin# cat ../../platform/linux/udev/90-kinect2.rules 
# this file belongs in /etc/udev/rules.d/
# ATTR{product}=="Kinect2"
SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="02c4", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="02d8", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="02d9", MODE="0666"

 

에러는 동일하게 대역폭 부족이 뜬다.

$ sudo ./Protonect 
Version: 0.2.0
Environment variables: LOGFILE=<protonect.log>
Usage: ./Protonect [-gpu=<id>] [gl | cl | clkde | cuda | cudakde | cpu] [<device serial>]
        [-noviewer] [-norgb | -nodepth] [-help] [-version]
        [-frames <number of frames to process>]
To pause and unpause: pkill -USR1 Protonect
[Info] [Freenect2Impl] enumerating devices...
[Info] [Freenect2Impl] 10 usb devices connected
[Info] [Freenect2Impl] found valid Kinect v2 @4:13 with serial 501441643042
[Info] [Freenect2Impl] found 1 devices
[Info] [Freenect2DeviceImpl] opening...
[Info] [Freenect2DeviceImpl] transfer pool sizes rgb: 20*16384 ir: 60*8*33792
[Info] [Freenect2DeviceImpl] opened
[Info] [Freenect2DeviceImpl] starting...
[Debug] [Freenect2DeviceImpl] status 0x090000: 9731
[Error] [protocol::UsbControl] failed to set ir interface state! LIBUSB_ERROR_OTHER Other error. Try debugging with environment variable: export LIBUSB_DEBUG=3 .
[Info] [Freenect2DeviceImpl] closing...
[Info] [Freenect2DeviceImpl] releasing usb interfaces...
[Info] [Freenect2DeviceImpl] deallocating usb transfer pools...
[Info] [Freenect2DeviceImpl] closing usb device...
[Info] [Freenect2DeviceImpl] closed

 

[  786.203660] usb 4-2.1: reset SuperSpeed USB device number 13 using xhci_hcd
[  786.318931] usb 4-2.1: Not enough bandwidth for new device state.
[  786.318939] usb 4-2.1: Not enough bandwidth for altsetting 1

 

혹시나 해서 USB2.0에 꽂아보니 아래와 같이 에러가 발생한다.

$ sudo ./Protonect 
Version: 0.2.0
Environment variables: LOGFILE=<protonect.log>
Usage: ./Protonect [-gpu=<id>] [gl | cl | clkde | cuda | cudakde | cpu] [<device serial>]
        [-noviewer] [-norgb | -nodepth] [-help] [-version]
        [-frames <number of frames to process>]
To pause and unpause: pkill -USR1 Protonect
[Info] [Freenect2Impl] enumerating devices...
[Info] [Freenect2Impl] 9 usb devices connected
[Info] [Freenect2Impl] found valid Kinect v2 @2:5 with serial 501441643042
[Info] [Freenect2Impl] found 1 devices
[Info] [Freenect2DeviceImpl] opening...
[Error] [protocol::UsbControl] failed to claim interface with IrInterfaceId(=1)! LIBUSB_ERROR_BUSY Resource busy. Try debugging with environment variable: export LIBUSB_DEBUG=3 .
[Info] [Freenect2DeviceImpl] closing...
[Info] [Freenect2DeviceImpl] deallocating usb transfer pools...
[Info] [Freenect2DeviceImpl] closing usb device...
[Info] [Freenect2DeviceImpl] closed
[Error] [Freenect2Impl] failed to open Kinect v2: @2:5
failure opening device!

 

dmesg 상에는 아래와 같이 BOS desciptor 가 없거나 너무 짧다는게 그건 또 머냐..

[  683.513603] usb 2-1.1.1: reset high-speed USB device number 5 using ehci-pci
[  683.634757] usb 2-1.1.1: unable to get BOS descriptor or descriptor too short

 

expresscard to USB3.0 을 써서 생기는 문제인가.. 아니면 빌드라던가 다른 문제인가..

 

 

+

2024.07.15

usbfs 크기가 적으니 늘리는게 도움이 된다는데 해도 해결은 안된다.

기본은 ubutu 22.04 에서 16MB 인 듯한데 1000MB로 늘려도 안된다.

$ cat /etc/default/grub | grep GRUB_CMDLINE_LINUX_DEFAULT
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
$ cat /sys/module/usbcore/parameters/usbfs_memory_mb
16
$ sudo sh -c 'echo 1000 > /sys/module/usbcore/parameters/usbfs_memory_mb'
$ cat /sys/module/usbcore/parameters/usbfs_memory_mb
1000

[링크 : https://github.com/OpenKinect/libfreenect2/issues/971]

[링크 : https://importgeek.wordpress.com/2017/02/26/increase-usbfs-memory-limit-in-ubuntu/]

 

+

혹시나 해서 찾아보는데..

expresscard의 경우 PCIe 2 or USB 3 mode 일 경우 3.2Gbps로 USB3.0의 5Gbps 에는 어떤 모드던 부족하다.

그런데 풀 대역폭을 쓰진 않을수도 있긴한데.. USB 장치에서 필요로 하는 대역폭을 다 커버 할 수 없는건가?

 

Speed
480 Mbit/s effective (USB 2 mode)
1.6 Gbit/s effective (PCIe 1 mode)
3.2 Gbit/s effective (PCIe 2 or USB 3 mode)

[링크 : https://en.wikipedia.org/wiki/ExpressCard]

 

칩셋인 uPD720202도 스펙상 PCIe Gen2 1 lane 이고, 속도까진 나와있지 않다

System I/F: PCIe Gen2 x 1 Lane

[링크 : https://www.renesas.com/us/en/products/interface/usb-switches-hubs/upd720202-usb-30-host-controller#overview]

 

i5-2520m 도 PCIe Gen 2 라고 하는데

확장 옵션
PCI Express 개정판 2.0
PCI Express 구성 ‡ 1x16, 2x8, 1x8+2x4
최대 PCI Express 레인 수 16

[링크 : https://www.intel.co.kr/content/www/kr/ko/products/sku/52229/intel-core-i52520m-processor-3m-cache-up-to-3-20-ghz/specifications.html]

 

pci-e 2.0 lane 1은 5.0GT/s 이고 5Gbps로 계산이 되긴한다.

반대로 생각하면 USB3.0이 생각외로 빠른거구나..

[링크 : https://en.wikipedia.org/wiki/PCI_Express]

 

Depends on your thinkpad's generation of Expresscard
Gen 1 is 1.6gbps
Gen 2 is 3.2gbps
Gen 3 is 6.4gbps, but each usb port can only do a max of 5gbps
In this case it's a T420 so it has gen 2 expresscard

[링크 : https://www.reddit.com/r/thinkpad/comments/xy44zj/finally_got_the_cheapest_usb_30_express_card_for/]

 

expresscard 34 규격의 sony sxs pro 라는 저장장치 인데

우연인지 아니면 대역폭 한계인지 3.2Gbps가 검색되서 나온다. expresscard와 pci-e 와는 속도 차이가 존재하는건가?

Max. Speeds
Read speed 3.5Gbps (=440MB/s) (1)
Write Speed 3.2Gbps (=400MB/s) (1)

[링크 : https://ccktech.com/product/sony-sxs-pro/]

[링크 :  https://ccktech.com/product-interface/expresscard-34/]

'프로그램 사용 > kinect' 카테고리의 다른 글

libfreenect2 성공  (0) 2024.07.17
libfreenect2 실행 성공..  (0) 2024.07.15
libfreenect2 CUDA 끄고 빌드 성공  (0) 2024.07.13
kinect v2 / freenect 실패  (0) 2024.07.09
xbox one S / 기본형?  (0) 2024.06.25
Posted by 구차니
프로그램 사용/kinect2024. 7. 13. 23:05

귀찮으니 실행은 다음에 해보는 걸로 ㅋ

 

cmake .. -DENABLE_CUDA=OFF
CMake Deprecation Warning at CMakeLists.txt:1 (CMAKE_MINIMUM_REQUIRED):
  Compatibility with CMake < 3.5 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


-- using tinythread as threading library
-- Checking for modules 'libva;libva-drm'
--   No package 'libva' found
--   No package 'libva-drm' found
-- Could NOT find TegraJPEG (missing: TegraJPEG_LIBRARIES TegraJPEG_INCLUDE_DIRS TegraJPEG_WORKS) 
CMake Warning (dev) at /home/minimonk/.local/lib/python3.10/site-packages/cmake/data/share/cmake-3.30/Modules/FindOpenGL.cmake:415 (message):
  Policy CMP0072 is not set: FindOpenGL prefers GLVND by default when
  available.  Run "cmake --help-policy CMP0072" for policy details.  Use the
  cmake_policy command to set the policy and suppress this warning.

  FindOpenGL found both a legacy GL library:

    OPENGL_gl_LIBRARY: /usr/lib/x86_64-linux-gnu/libGL.so

  and GLVND libraries for OpenGL and GLX:

    OPENGL_opengl_LIBRARY: /usr/lib/x86_64-linux-gnu/libOpenGL.so
    OPENGL_glx_LIBRARY: /usr/lib/x86_64-linux-gnu/libGLX.so

  OpenGL_GL_PREFERENCE has not been set to "GLVND" or "LEGACY", so for
  compatibility with CMake 3.10 and below the legacy GL library will be used.
Call Stack (most recent call first):
  CMakeLists.txt:269 (FIND_PACKAGE)
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Could NOT find OpenCL (missing: OpenCL_LIBRARY OpenCL_INCLUDE_DIR) 
-- Linking with these libraries: 
 /usr/lib/x86_64-linux-gnu/libusb-1.0.so
 pthread
 /usr/lib/x86_64-linux-gnu/libturbojpeg.so.0
 /usr/lib/x86_64-linux-gnu/libglfw.so
 /usr/lib/x86_64-linux-gnu/libGL.so
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE) 
-- Configurating examples
CMake Deprecation Warning at examples/CMakeLists.txt:1 (CMAKE_MINIMUM_REQUIRED):
  Compatibility with CMake < 3.5 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


-- Using in-tree freenect2 target
-- Feature list:
--   CUDA    disabled
--   CXX11    disabled
--   Examples    yes
--   OpenCL    no
--   OpenGL    yes
--   OpenNI2    yes
--   TegraJPEG    no
--   Threading    tinythread
--   TurboJPEG    yes
--   VAAPI    no
--   VideoToolbox    no (Apple only)
--   streamer_recorder    disabled
-- Configuring done (0.1s)
-- Generating done (0.0s)
-- Build files have been written to: /home/minimonk/src/libfreenect2/build

 

$ make -j4
[  2%] Building CXX object CMakeFiles/generate_resources_tool.dir/tools/generate_resources.cpp.o
[  5%] Linking CXX executable bin/generate_resources_tool
[  5%] Built target generate_resources_tool
[  8%] Generating resources.inc.h
[ 10%] Building CXX object CMakeFiles/freenect2.dir/src/transfer_pool.cpp.o
[ 13%] Building CXX object CMakeFiles/freenect2.dir/src/event_loop.cpp.o
[ 16%] Building CXX object CMakeFiles/freenect2.dir/src/usb_control.cpp.o
[ 18%] Building CXX object CMakeFiles/freenect2.dir/src/allocator.cpp.o
[ 21%] Building CXX object CMakeFiles/freenect2.dir/src/frame_listener_impl.cpp.o
[ 24%] Building CXX object CMakeFiles/freenect2.dir/src/packet_pipeline.cpp.o
[ 27%] Building CXX object CMakeFiles/freenect2.dir/src/rgb_packet_stream_parser.cpp.o
[ 29%] Building CXX object CMakeFiles/freenect2.dir/src/rgb_packet_processor.cpp.o
[ 32%] Building CXX object CMakeFiles/freenect2.dir/src/depth_packet_stream_parser.cpp.o
[ 35%] Building CXX object CMakeFiles/freenect2.dir/src/depth_packet_processor.cpp.o
[ 37%] Building CXX object CMakeFiles/freenect2.dir/src/cpu_depth_packet_processor.cpp.o
[ 40%] Building CXX object CMakeFiles/freenect2.dir/src/resource.cpp.o
[ 43%] Building CXX object CMakeFiles/freenect2.dir/src/command_transaction.cpp.o
[ 45%] Building CXX object CMakeFiles/freenect2.dir/src/registration.cpp.o
[ 48%] Building CXX object CMakeFiles/freenect2.dir/src/logging.cpp.o
/home/minimonk/src/libfreenect2/src/cpu_depth_packet_processor.cpp: In member function ‘virtual void libfreenect2::CpuDepthPacketProcessor::loadP0TablesFromCommandResponse(unsigned char*, size_t)’:
/home/minimonk/src/libfreenect2/src/cpu_depth_packet_processor.cpp:844:53: warning: taking address of packed member of ‘libfreenect2::protocol::P0TablesResponse’ may result in an unaligned pointer value [-Waddress-of-packed-member]
  844 |     flipHorizontal(Mat(424, 512, p0table->p0table0), impl_->p0_table0);
      |                                            ~~~~~~~~~^~~~~~~~
/home/minimonk/src/libfreenect2/src/cpu_depth_packet_processor.cpp:845:53: warning: taking address of packed member of ‘libfreenect2::protocol::P0TablesResponse’ may result in an unaligned pointer value [-Waddress-of-packed-member]
  845 |     flipHorizontal(Mat(424, 512, p0table->p0table1), impl_->p0_table1);
      |                                            ~~~~~~~~~^~~~~~~~
/home/minimonk/src/libfreenect2/src/cpu_depth_packet_processor.cpp:846:53: warning: taking address of packed member of ‘libfreenect2::protocol::P0TablesResponse’ may result in an unaligned pointer value [-Waddress-of-packed-member]
  846 |     flipHorizontal(Mat(424, 512, p0table->p0table2), impl_->p0_table2);
      |                                            ~~~~~~~~~^~~~~~~~
/home/minimonk/src/libfreenect2/src/cpu_depth_packet_processor.cpp:850:42: warning: taking address of packed member of ‘libfreenect2::protocol::P0TablesResponse’ may result in an unaligned pointer value [-Waddress-of-packed-member]
  850 |     Mat p00(424, 512, p0table->p0table0);
      |                                 ~~~~~~~~~^~~~~~~~
/home/minimonk/src/libfreenect2/src/cpu_depth_packet_processor.cpp:852:38: warning: taking address of packed member of ‘libfreenect2::protocol::P0TablesResponse’ may result in an unaligned pointer value [-Waddress-of-packed-member]
  852 |     Mat(424, 512, p0table->p0table1).copyTo(impl_->p0_table1);
      |                             ~~~~~~~~~^~~~~~~~
/home/minimonk/src/libfreenect2/src/cpu_depth_packet_processor.cpp:853:38: warning: taking address of packed member of ‘libfreenect2::protocol::P0TablesResponse’ may result in an unaligned pointer value [-Waddress-of-packed-member]
  853 |     Mat(424, 512, p0table->p0table2).copyTo(impl_->p0_table2);
      |                             ~~~~~~~~~^~~~~~~~
[ 51%] Building CXX object CMakeFiles/freenect2.dir/src/libfreenect2.cpp.o
[ 54%] Building CXX object CMakeFiles/freenect2.dir/src/tinythread/tinythread.cpp.o
[ 56%] Building CXX object CMakeFiles/freenect2.dir/src/turbo_jpeg_rgb_packet_processor.cpp.o
[ 59%] Building CXX object CMakeFiles/freenect2.dir/src/flextGL.cpp.o
[ 62%] Building CXX object CMakeFiles/freenect2.dir/src/opengl_depth_packet_processor.cpp.o
[ 64%] Linking CXX shared library lib/libfreenect2.so
[ 64%] Built target freenect2
[ 70%] Building CXX object examples/CMakeFiles/Protonect.dir/Protonect.cpp.o
[ 72%] Building CXX object CMakeFiles/freenect2-openni2.dir/src/openni2/ColorStream.cpp.o
[ 72%] Building CXX object examples/CMakeFiles/Protonect.dir/__/src/flextGL.cpp.o
[ 75%] Building CXX object examples/CMakeFiles/Protonect.dir/viewer.cpp.o
[ 78%] Building CXX object CMakeFiles/freenect2-openni2.dir/src/openni2/DepthStream.cpp.o
/home/minimonk/src/libfreenect2/examples/Protonect.cpp: In function ‘int main(int, char**)’:
/home/minimonk/src/libfreenect2/examples/Protonect.cpp:157:7: warning: variable ‘deviceId’ set but not used [-Wunused-but-set-variable]
  157 |   int deviceId = -1;
      |       ^~~~~~~~
[ 81%] Building CXX object CMakeFiles/freenect2-openni2.dir/src/openni2/DeviceDriver.cpp.o
[ 83%] Building CXX object CMakeFiles/freenect2-openni2.dir/src/openni2/IrStream.cpp.o
[ 86%] Building CXX object CMakeFiles/freenect2-openni2.dir/src/openni2/Registration.cpp.o
[ 89%] Linking CXX executable ../bin/Protonect
[ 89%] Built target Protonect
[ 91%] Building CXX object CMakeFiles/freenect2-openni2.dir/src/openni2/Utility.cpp.o
[ 94%] Building CXX object CMakeFiles/freenect2-openni2.dir/src/openni2/VideoStream.cpp.o
[ 97%] Building CXX object CMakeFiles/freenect2-openni2.dir/src/tinythread/tinythread.cpp.o
In file included from /usr/include/string.h:535,
                 from /usr/include/openni2/Linux-x86/OniPlatformLinux-x86.h:34,
                 from /usr/include/openni2/OniPlatform.h:42,
                 from /usr/include/openni2/Driver/OniDriverAPI.h:24,
                 from /home/minimonk/src/libfreenect2/src/openni2/DeviceDriver.cpp:35:
In function ‘char* strncpy(char*, const char*, size_t)’,
    inlined from ‘void Freenect2Driver::Driver::register_uri(std::string)’ at /home/minimonk/src/libfreenect2/src/openni2/DeviceDriver.cpp:404:14:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:95:34: warning: ‘char* __builtin_strncpy(char*, const char*, long unsigned int)’ specified bound 256 equals destination size [-Wstringop-truncation]
   95 |   return __builtin___strncpy_chk (__dest, __src, __len,
      |          ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
   96 |                                   __glibc_objsize (__dest));
      |                                   ~~~~~~~~~~~~~~~~~~~~~~~~~
[100%] Linking CXX shared library lib/libfreenect2-openni2.so
[100%] Built target freenect2-openni2

 

~/src/libfreenect2/build$ tree -L 2 
.
├── CMakeCache.txt
├── CMakeFiles
│   ├── 3.30.0
│   ├── CMakeConfigureLog.yaml
│   ├── CMakeDirectoryInformation.cmake
│   ├── CMakeRuleHashes.txt
│   ├── CMakeScratch
│   ├── Makefile.cmake
│   ├── Makefile2
│   ├── TargetDirectories.txt
│   ├── cmake.check_cache
│   ├── freenect2-openni2.dir
│   ├── freenect2.dir
│   ├── generate_resources_tool.dir
│   ├── install-openni2.dir
│   ├── pkgRedirects
│   └── progress.marks
├── Makefile
├── bin
│   ├── Protonect
│   └── generate_resources_tool
├── cmake_install.cmake
├── doc
│   ├── CMakeFiles
│   ├── Makefile
│   └── cmake_install.cmake
├── examples
│   ├── CMakeFiles
│   ├── Makefile
│   └── cmake_install.cmake
├── freenect2.pc
├── freenect2Config.cmake
├── freenect2ConfigVersion.cmake
├── lib
│   ├── libfreenect2-openni2.so -> libfreenect2-openni2.so.0
│   ├── libfreenect2-openni2.so.0
│   ├── libfreenect2.so -> libfreenect2.so.0.2
│   ├── libfreenect2.so.0.2 -> libfreenect2.so.0.2.0
│   └── libfreenect2.so.0.2.0
├── libfreenect2
│   ├── config.h
│   └── export.h
└── resources.inc.h

15 directories, 28 files

 

bin/Protonect 를 실행하면 스트리밍 된다고 한다.

[링크 : https://www.notaboutmy.life/posts/run-kinect-2-on-ubuntu-20-lts/]

 

소스를 뒤져보니 glfw 라는 접두로 된 녀석을 통해 그리는데, openGL ES와 vulkan으로 그리는 듯?

[링크 : https://www.glfw.org/]

'프로그램 사용 > kinect' 카테고리의 다른 글

libfreenect2 실행 성공..  (0) 2024.07.15
libfreenect2 실행 실패  (0) 2024.07.14
kinect v2 / freenect 실패  (0) 2024.07.09
xbox one S / 기본형?  (0) 2024.06.25
kinect for windows v2 설치  (0) 2024.06.24
Posted by 구차니
Microsoft/Windows2024. 7. 13. 21:20

윈도우 바탕화면을 바꿀수 있다는게 신기한데

프로그램에 따라서 프로젝트 파일이 절대경로로 되어있는 경우에

다른 드라이브나 위치를 변경했을 경우 인식을 못한다는 문제아닌 문제가 발생한다.

 

다른 경로를 누르고 이동을 누르면 바탕화면을 복사한다고 시간이 좀 걸리는데

삭제는 그 이후에 따로 하는지 좀 버벅댄다.

 

C 드라이브를 자꾸 채워서 바로가기로 하는걸로 관리가 절대 안되는 분들을 위한

나름.. 차선책이랄까..

 

[링크 : https://san51k.tistory.com/entry/윈도우10-TIP-13-바탕화면-폴더-경로-변경-과-복원하기]

Posted by 구차니
개소리 왈왈/컴퓨터2024. 7. 13. 21:18

기존에 i7-2xxx 시리즈 노트북 쓰시는데

아무래도 nvidia 그래픽 카드가 내장되어 있어도 구형이고

모바일 cpu 한계가 있어서 느리다 보니

 

이번에 어떻게 처분할까 고민하던 i5-4670과 i7-3770 중에

i5-4670 / 32GB / 1050 2GB로 셋트를 만들어 드리는걸로 결정!

 

드리고 나니 동영상이 42분 걸리던게 5~6분 정도 걸리는거 봐서는

역시 모바일과 데스크탑 cpu 성능 차이는 무시할 수 없다라는 뜬금없는 결론이..

'개소리 왈왈 > 컴퓨터' 카테고리의 다른 글

3세대 intel 데스크탑 USB3.0  (0) 2024.07.16
빨콩 교체!  (0) 2024.07.16
express card 34 to USB 3.0 도착 (uPD720202)  (0) 2024.07.08
컴퓨터 회수  (0) 2024.07.04
가진거, 가지고 싶은거  (0) 2024.07.02
Posted by 구차니
embeded/Cortex-M3 STM2024. 7. 12. 17:30

timer 설명에 설정값에 따라 GPIO 출력이 바뀌게 되는게 가능한건 알고 있었는데

그걸 어떻게 써먹나 어따 써먹다 이런게 안떠올라서 잊고 있던걸 구현된 코드를 처음으로 봄 -_-

 

IP로 구현된 통신이 아닌

GPIO를 통해 정확한 시간 간격에 오가야 한다면

타이머 값이 매치되면 값이 바뀌는게 가장 정확할 수 밖에 없겠구나 싶어진다.

 

[링크 : https://m.blog.naver.com/eziya76/221461279858]

[링크 : https://m.blog.naver.com/eziya76/222712447615]

[링크 : https://eteo.tistory.com/159]

Posted by 구차니
이론 관련/전기 전자2024. 7. 11. 18:27

sink는 끌려 가도록/ 끌려 가지 않도록 제어(?) 하고 -> + 극을 차단/연결

source는 끌고 오도록 제어 한다 -> GND를 차단/연결

 

영어식이라서 전원을 어느 방향으로 가지 않도록 제어하냐로 보면 좀 쉬우려나?

+극 -> -극에 빼앗긴다 -> +극을 차단/연결한다 (안보내면 그만이야~)

-극 -> +극에서 들어온다(입력받음) -> -극을 차단/연결한다(안받아~)

 

[링크 : https://m.blog.naver.com/3lastbaek5/221581453670]

[링크 : https://usefulpen.cafe24.com/1892/]

 

 

+

[링크 : https://blog.naver.com/shkh13/221030410600]

[링크 : https://usefulpen.cafe24.com/1892/]

[링크 : https://article2.tistory.com/1425]

[링크 : https://gammabeta.tistory.com/609] 싱크(NPN) 소스(PNP)

[링크 : https://gammabeta.tistory.com/968]

'이론 관련 > 전기 전자' 카테고리의 다른 글

BJT - bipolar junction transistor  (0) 2024.08.13
clock is gated  (0) 2024.07.19
shunt(션트) 저항  (0) 2024.07.11
THD N  (0) 2024.04.03
아날로그 컴퓨터  (0) 2023.10.11
Posted by 구차니
Microsoft/vscode2024. 7. 11. 15:13

source insight 처럼 클릭하면 바뀌는 함수 목록을 원했는데

vscode의 outline이 ctags와 연동해서 작동하는 녀석이라고 한다. 너무 기본으로만 썼었나...

 

아무튼 explorer 패널에는

Folders / Outline / Timeline 세가지가 선택 가능한데

 

Open Editors는 열려있는 파일들만 따로 목록으로 보여주는 기능이고

Folders는 말그대로 탐색기 처럼 파일을 보는 녀석

Timeline은 모르겠고

Outline은 함수와 선언된 녀석들의 목록이 뜬다.

 

OUTLINE은 Follow Cursor가 체크되어 있지 않았는데

이걸 활성화 시키면 현재 선택중인 함수나 선언이 목록중에 어디것을 보고 있는지 네비게이션 대신 사용할 수 있고

 

 

OUTLINE을 드래그 해서 우측으로 가면 우측패널에 목록으로 띄워서 볼 수 있게 된다.

 

[링크 : https://code.visualstudio.com/docs/getstarted/userinterface]

[링크 : https://blog.naver.com/chcbaram/222682064638]

Posted by 구차니
Microsoft/Visual Studio2024. 7. 11. 12:32

source insight 사달라고 했다가 뺀찌먹어서 찾아보는중

(아니 회산데.. 이정도는 사줘야지 ㅠㅠ)

 

확장을 설치하고

사용법은 Ctrl-Shift-P를 눌러 command pallette를 열고

 

incomming 과 outgoing중에 골라서 입력하면

 

새 탭에 그래프가 생성된다.

imcoming graph - 선택된 함수를 호출하는 녀석을 봄(해당 함수를 child로 parent 를  추적)

 

outgoing graph - 선택된 함수가 호출하는 녀석을 봄 (해당 함수를 parent로 child를 추적)

 

근데 둘다 그래프가 해당 함수를 시작으로 보고 있어서

내용을 좀 봐야 이해가 되는 느낌이라.. imcoming의 경우 그래프 순서를 바꿔서 했으면 하는 아쉬움이..

그 와중에 당연(?) 하지만 매크로나 define에 대해서는 추적이 안된다.

source insight 시절에는 클릭만 해도 되던걸 이렇게 쑈를 해야 하다니 -_-

 

Quick start
1. Open your folder and select a entry function
2. Run CallGraph.showOutgoingCallGraph command using context menu or Ctrl+Shift+P to show outgoing calls
3. Or Run CallGraph.showIncomingCallGraph command using context menu or Ctrl+Shift+P to show incoming calls
4. Click save dot file or save as svg in the bottom left corner to save the graph
5. Add .callgraphignore file in your project root directory to ignore some files or folders in workspace (the syntax is the same as .gitignore)

[링크 : https://marketplace.visualstudio.com/items?itemName=LuoZhihao.call-graph]

Posted by 구차니
embeded/robot2024. 7. 11. 12:07

오랫만에 만져봤더니 그리퍼가 망가졌나.. 열리는데 닫히질 않는다.

 

일단 오늘 해본건

ATOM 이라는 부분인데 약자는 못 찾겠다.

E. Atom. Displaying 5X5 RGB LED (G27) and key function (G39).

[링크 : https://docs.elephantrobotics.com/docs/gitbook-en/2-serialproduct/2.1-280/2.1.5.2-RoboticArmElectricalInterface.html]

 

버튼식 LED의 색상은 아래의 함수를 쓰면 되고

from pymycobot.mycobot import MyCobot
from pymycobot import PI_PORT, PI_BAUD
import time

mc = MyCobot("COM3", 115200)
mc.set_color(0,0,255) #blue light on

[링크 : https://docs.elephantrobotics.com/docs/gitbook-en/7-ApplicationBasePython/7.7_example.html]

 

버튼이 눌렸는지는 get_digital_input을 이용하여 39번을 읽으면 된다. 1은 누르지 않은 상태, 0은 누른 상태이다(Normal Close?)

>>> mc.get_digital_input(39)
1
>>> mc.get_digital_input(39)
0

 

2.3 get_digital_input(self, pin_no):

Function: to obtain the working state of the end pin number.
Parameters: pin_no: represents the specific pin number at the end of the robot.
Return Value: pin_signal(int) When the returned value is 0, it means running in the working state; when it is 1, it means the stop state.

[링크 : https://docs.elephantrobotics.com/docs/gitbook-en/7-ApplicationBasePython/7.4_IO.html]

 

 

-------------------------

1 servo interface

[링크 : https://docs.elephantrobotics.com/docs/gitbook-en/2-serialproduct/2.1-280/2.1.5.2-RoboticArmElectricalInterface.html]

 

gripper control

[링크 : https://docs.elephantrobotics.com/docs/gitbook-en/7-ApplicationBasePython/7.5_gripper.html]

 

atom io

[링크 : https://docs.elephantrobotics.com/docs/gitbook-en/7-ApplicationBasePython/7.4_IO.html]

 

'embeded > robot' 카테고리의 다른 글

elephant robotics cobot python api  (0) 2023.12.21
산업로봇과 협동로봇의 차이  (0) 2023.12.21
ROS rviz  (0) 2023.12.21
오일러 각 / 짐벌락 / 쿼터니언  (0) 2023.12.21
6축 로봇 좌표계(TCP?)  (0) 2023.12.15
Posted by 구차니