$ sudo nvpmodel -q NVPM WARN: fan mode is not set! NV Power Mode: MAXN 0
docker 로 서비스 실행
$ sudo docker run -p 8080:8080 -v /home/jetson/llm:/models ghcr.io/ggml-org/llama.cpp:server-vulkan --chat-template-kwargs "{\"enable_thinking\": false}" -m /models/Qwen3.5-0.8B-Q4_0.gguf -c 4096 --port 8080 --host 0.0.0.0 warn: LLAMA_ARG_HOST environment variable is set, but will be overwritten by command line argument --host 0.00.136.037 W Setting 'enable_thinking' via --chat-template-kwargs is deprecated. Use --reasoning on / --reasoning off instead. 0.00.136.924 I cmn common_param: common_params_print_info: verbosity = 3 (adjust with the `-lv N` CLI arg) 0.00.138.536 W srv llama_server: ----------------- 0.00.138.551 W srv llama_server: CORS is set to allow all origins ('*') and no API key is set 0.00.138.552 W srv llama_server: this can be a security risk (cross-origin attacks) 0.00.138.553 W srv llama_server: more info: https://github.com/ggml-org/llama.cpp/pull/25655 0.00.138.554 W srv llama_server: ----------------- 0.00.139.997 I srv load_model: loading model '/models/Qwen3.5-0.8B-Q4_0.gguf' 0.04.582.967 I srv load_model: initializing, n_slots = 4, n_ctx_slot = 4096, kv_unified = 'true' 0.04.681.224 I srv llama_server: model loaded 0.04.681.254 I srv llama_server: listening on http://0.0.0.0:8080 0.19.911.095 I slot get_availabl: id 3 | task -1 | selected slot by LRU, t_last = -1 0.19.911.286 I slot launch_slot_: id 3 | task 0 | processing task, is_child = 0 0.22.612.244 I slot print_timing: id 3 | task 0 | prompt eval time = 1093.85 ms / 13 tokens ( 84.14 ms per token, 11.88 tokens per second) 0.22.612.263 I slot print_timing: id 3 | task 0 | eval time = 1606.96 ms / 12 tokens ( 133.91 ms per token, 7.47 tokens per second) 0.22.612.266 I slot print_timing: id 3 | task 0 | total time = 2700.81 ms / 25 tokens 0.22.612.276 I slot print_timing: id 3 | task 0 | graphs reused = 11 0.22.612.345 I slot release: id 3 | task 0 | stop processing: n_tokens = 24, truncated = 0 0.32.329.433 I slot get_availabl: id 3 | task -1 | selected slot by LCP similarity, sim_best = 0.243 (> 0.100 thold), f_keep = 0.375 0.32.406.612 I slot launch_slot_: id 3 | task 14 | processing task, is_child = 0 0.37.382.135 I slot print_timing: id 3 | task 14 | prompt eval time = 2254.95 ms / 28 tokens ( 80.53 ms per token, 12.42 tokens per second) 0.37.382.154 I slot print_timing: id 3 | task 14 | eval time = 2720.41 ms / 18 tokens ( 151.13 ms per token, 6.62 tokens per second) 0.37.382.157 I slot print_timing: id 3 | task 14 | total time = 4975.37 ms / 46 tokens 0.37.382.160 I slot print_timing: id 3 | task 14 | graphs reused = 27 0.37.382.205 I slot release: id 3 | task 14 | stop processing: n_tokens = 54, truncated = 0 0.52.606.713 I slot get_availabl: id 3 | task -1 | selected slot by LCP similarity, sim_best = 0.471 (> 0.100 thold), f_keep = 0.611 0.52.606.847 I slot launch_slot_: id 3 | task 35 | processing task, is_child = 0 1.10.385.311 I slot print_timing: id 3 | task 35 | n_decoded = 100, tg = 6.70 t/s, tg_3s = 6.70 t/s 1.11.031.932 I slot print_timing: id 3 | task 35 | prompt eval time = 2847.89 ms / 37 tokens ( 76.97 ms per token, 12.99 tokens per second) 1.11.031.951 I slot print_timing: id 3 | task 35 | eval time = 15577.07 ms / 104 tokens ( 149.78 ms per token, 6.68 tokens per second) 1.11.031.954 I slot print_timing: id 3 | task 35 | total time = 18424.96 ms / 141 tokens 1.11.031.960 I slot print_timing: id 3 | task 35 | graphs reused = 129 1.11.032.011 I slot release: id 3 | task 35 | stop processing: n_tokens = 173, truncated = 0 3.50.029.790 I slot get_availabl: id 3 | task -1 | selected slot by LCP similarity, sim_best = 0.333 (> 0.100 thold), f_keep = 0.382 3.50.175.603 I slot launch_slot_: id 3 | task 142 | processing task, is_child = 0 3.57.905.059 I slot print_timing: id 3 | task 142 | prompt processing, n_tokens = 105, progress = 0.86, t = 7.73 s / 13.58 tokens per second 3.59.618.519 I slot print_timing: id 3 | task 142 | prompt processing, n_tokens = 128, progress = 0.98, t = 9.44 s / 13.56 tokens per second 4.10.877.834 I slot print_timing: id 3 | task 142 | prompt eval time = 9819.15 ms / 132 tokens ( 74.39 ms per token, 13.44 tokens per second) 4.10.877.855 I slot print_timing: id 3 | task 142 | eval time = 10882.92 ms / 72 tokens ( 151.15 ms per token, 6.62 tokens per second) 4.10.877.858 I slot print_timing: id 3 | task 142 | total time = 20702.07 ms / 204 tokens 4.10.877.862 I slot print_timing: id 3 | task 142 | graphs reused = 198 4.10.877.944 I slot release: id 3 | task 142 | stop processing: n_tokens = 269, truncated = 0
Jetson Nano는 Maxwell 아키텍처 기반 GPU(128 CUDA 코어)를 사용하며, compute capability는 5.3입니다.
CUDA 버전
Jetson Nano는 JetPack 버전에 따라 CUDA 버전이 결정됩니다. Nano에서 지원되는 마지막(최신) JetPack은 JetPack 4.6.x 계열이며, 이때 CUDA 10.2가 탑재됩니다. 참고로 Jetson Nano는 32비트 시절부터 나온 구형 라인업(2019년 출시)이라 JetPack 5.x(CUDA 11.x 이상)는 지원하지 않습니다. JetPack 5 이상은 Xavier, Orin 계열부터 지원됩니다
netson nano / maxwell 기반 128 cuda core
GPU NVIDIA Maxwell architecture with 128 NVIDIA CUDA® cores CPU Quad-core ARM Cortex-A57 MPCore processor Memory 4 GB 64-bit LPDDR4, 1600MHz 25.6 GB/s
$ cat /etc/nv_tegra_release # R32 (release), REVISION: 7.1, GCID: 29818004, BOARD: t210ref, EABI: aarch64, DATE: Sat Feb 19 17:05:08 UTC 2022
$ nvcc --version nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2021 NVIDIA Corporation Built on Sun_Feb_28_22:34:44_PST_2021 Cuda compilation tools, release 10.2, V10.2.300 Build cuda_10.2_r440.TC440_70.29663091_0
b10068 인데 cuda 12 와 cuda 13에 대해서 지원한다.
소스에서 빌드한다고 해서 될 게 아닌듯..
Windows:
Windows x64 (CPU) Windows arm64 (CPU) Windows arm64 (OpenCL Adreno) Windows x64 (CUDA 12) - CUDA 12.4 DLLs Windows x64 (CUDA 13) - CUDA 13.3 DLLs Windows x64 (Vulkan) Windows x64 (OpenVINO) Windows x64 (SYCL) Windows x64 (HIP)
[ 5%] Building CXX object tools/ui/CMakeFiles/llama-ui-embed.dir/embed.cpp.o /home/jetson/src/llama.cpp/tools/ui/embed.cpp:17:10: fatal error: filesystem: No such file or directory #include <filesystem> ^~~~~~~~~~~~ compilation terminated.
$ g++ --version g++ (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04) 7.5.0 Copyright (C) 2017 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ sudo apt install gcc-8 g++-8
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 800 --slave /usr/bin/g++ g++ /usr/bin/g++-8 update-alternatives: using /usr/bin/gcc-8 to provide /usr/bin/gcc (gcc) in auto mode
$ g++ --version g++ (Ubuntu/Linaro 8.4.0-1ubuntu1~18.04) 8.4.0 Copyright (C) 2018 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
optional arguments: -h, --help show this help message and exit --include-hidden-topics Consider hidden topics as well
Commands: bw Display bandwidth used by topic delay Display delay of topic from timestamp in header echo Output messages from a topic find Output a list of available topics of a given type hz Print the average publishing rate to screen info Print information about a topic list Output a list of available topics pub Publish a message to a topic type Print a topic's type
Call `ros2 topic <command> -h` for more detailed usage.
[INFO] [launch]: All log files can be found below /home/er/.ros/log/2026-07-03-11-17-17-203959-er-9929 [INFO] [launch]: Default logging verbosity is set to INFO [INFO] [robot_state_publisher-1]: process started with pid [9959] [INFO] [joint_state_publisher_gui-2]: process started with pid [9961] [INFO] [rviz2-3]: process started with pid [9963] [INFO] [slider_control-4]: process started with pid [9965] [robot_state_publisher-1] Link joint2 had 1 children [robot_state_publisher-1] Link joint3 had 1 children [robot_state_publisher-1] Link joint4 had 1 children [robot_state_publisher-1] Link joint5 had 1 children [robot_state_publisher-1] Link joint6 had 1 children [robot_state_publisher-1] Link joint6_flange had 0 children [robot_state_publisher-1] [INFO] [1783048639.394243790] [robot_state_publisher]: got segment joint1 [robot_state_publisher-1] [INFO] [1783048639.394549934] [robot_state_publisher]: got segment joint2 [robot_state_publisher-1] [INFO] [1783048639.394636748] [robot_state_publisher]: got segment joint3 [robot_state_publisher-1] [INFO] [1783048639.394680932] [robot_state_publisher]: got segment joint4 [robot_state_publisher-1] [INFO] [1783048639.394718784] [robot_state_publisher]: got segment joint5 [robot_state_publisher-1] [INFO] [1783048639.394756061] [robot_state_publisher]: got segment joint6 [robot_state_publisher-1] [INFO] [1783048639.394793246] [robot_state_publisher]: got segment joint6_flange [joint_state_publisher_gui-2] [INFO] [1783048643.531952578] [joint_state_publisher]: Waiting for robot_description to be published on the robot_description topic... [joint_state_publisher_gui-2] [INFO] [1783048643.610075662] [joint_state_publisher]: Centering [joint_state_publisher_gui-2] [INFO] [1783048644.027434405] [joint_state_publisher]: Centering [rviz2-3] [INFO] [1783048644.403594556] [rviz2]: Stereo is NOT SUPPORTED [rviz2-3] [INFO] [1783048644.404085494] [rviz2]: OpenGl version: 3.1 (GLSL 1.4) [rviz2-3] [INFO] [1783048647.151156049] [rviz2]: Stereo is NOT SUPPORTED [slider_control-4] array('d', [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) [slider_control-4] array('d', [-0.0004613180000001549, -0.0004613180000001549, -0.0004613180000001549, -0.0004613180000001549, -0.0004613180000001549, -0.0004613180000001549])
실제 장비가 움직이는진 모르겠지만 뜨긴한다.
$ ros2 launch mycobot_280 test.launch.py [INFO] [launch]: All log files can be found below /home/er/.ros/log/2026-07-03-11-23-38-154196-er-10335 [INFO] [launch]: Default logging verbosity is set to INFO [INFO] [robot_state_publisher-1]: process started with pid [10367] [INFO] [joint_state_publisher_gui-2]: process started with pid [10369] [INFO] [rviz2-3]: process started with pid [10371] [robot_state_publisher-1] Link joint2 had 1 children [robot_state_publisher-1] Link joint3 had 1 children [robot_state_publisher-1] Link joint4 had 1 children [robot_state_publisher-1] Link joint5 had 1 children [robot_state_publisher-1] Link joint6 had 1 children [robot_state_publisher-1] Link joint6_flange had 0 children [robot_state_publisher-1] Link env had 0 children [robot_state_publisher-1] [INFO] [1783049020.099496084] [robot_state_publisher]: got segment env [robot_state_publisher-1] [INFO] [1783049020.099850118] [robot_state_publisher]: got segment joint1 [robot_state_publisher-1] [INFO] [1783049020.099978210] [robot_state_publisher]: got segment joint2 [robot_state_publisher-1] [INFO] [1783049020.100036728] [robot_state_publisher]: got segment joint3 [robot_state_publisher-1] [INFO] [1783049020.100077783] [robot_state_publisher]: got segment joint4 [robot_state_publisher-1] [INFO] [1783049020.100116357] [robot_state_publisher]: got segment joint5 [robot_state_publisher-1] [INFO] [1783049020.100152116] [robot_state_publisher]: got segment joint6 [robot_state_publisher-1] [INFO] [1783049020.100192041] [robot_state_publisher]: got segment joint6_flange [rviz2-3] [INFO] [1783049023.998647585] [rviz2]: Stereo is NOT SUPPORTED [rviz2-3] [INFO] [1783049023.999256988] [rviz2]: OpenGl version: 3.1 (GLSL 1.4) [joint_state_publisher_gui-2] [INFO] [1783049024.105868138] [joint_state_publisher]: Waiting for robot_description to be published on the robot_description topic... [joint_state_publisher_gui-2] [INFO] [1783049024.137961673] [joint_state_publisher]: Centering [joint_state_publisher_gui-2] [INFO] [1783049024.490631764] [joint_state_publisher]: Centering [rviz2-3] [INFO] [1783049026.693983324] [rviz2]: Stereo is NOT SUPPORTED
# The default serial port name of mycobot 280-PI version is "/dev/ttyAMA0", and the baud rate is 1000000. ros2 launch mycobot_280pi slider_control.launch.py
# The default serial port name of mycobot 280-PI version is "/dev/ttyAMA0", and the baud rate is 1000000. ros2 launch mycobot_280pi teleop_keyboard.launch.py
G90 // 절대좌표 모드(원점 기준 좌표 사용) G4 S1 // 1초 대기 G01 X170 Y0 Z60 F15 // X170 Y0 Z60 위치로 직선 이동, 이송속도 F15 G4 S1 // 1초 대기 G0 X195.54 Y-32.03 // 빠른 이동으로 별의 시작점으로 이동 G0 Z49.00 // 작업 높이(Z=49)까지 하강 G1 X195.54 Y-9.66 // 직선 가공 G1 X215.61 Y-2.75 // 오른쪽 위 꼭짓점으로 이동 G1 X195.54 Y4.16 // 왼쪽으로 이동 G1 X195.54 Y26.52 // 위쪽 꼭짓점으로 이동 G1 X183.14 Y8.43 // 왼쪽 위 대각선 이동 G1 X163.08 Y15.34 // 왼쪽 꼭짓점으로 이동 G1 X175.48 Y-2.75 // 중앙 방향으로 이동 G1 X163.08 Y-20.84 // 왼쪽 아래 꼭짓점으로 이동 G1 X183.14 Y-13.93 // 오른쪽 아래 대각선 이동 G1 X195.54 Y-32.03 // 시작점으로 복귀하여 도형 완성 G0 Z70.00 // 공구를 안전 높이(Z=70)로 상승 G0 X189.34 Y-2.75 // 다음 작업 또는 대기 위치로 빠른 이동 M21 P0 // 제조사 전용 M코드(예: 펜, 그리퍼, 디지털 출력 등 장비별 기능)
T in the figure is the set tool coordinate system. The posture of this coordinate system is consistent with O’, and the relative displacement of the origin has occurred. Use the python function to set the tool coordinate system:
set_tool_reference([x, y, z, rx, ry, rz]) //Set tool coordinate system set_end_type(1) //Set the end coordinate system type as tool Assume that the tool coordinate system T is not rotated relative to O' (rx = ry = rz = 0) Assume that the origin of the tool coordinate system T is in the coordinate system O’ at (x = 0, y = 0, z = 100mm) The final tool coordinate system parameter is set_tool_reference(0, 0, 100, 0, 0, 0)
Function: Set Tool coordinate system。 Parameters: coords: The coordinate value of [x, y, z, rx, ry, rz] has a length of 6, x, y, z ranging from - 280 to 280, and rx, ry, yz ranging from - 314 to 314 Return Value: None
2.4 get_tool_reference()
Function: Get Tool coordinate system。 Return Value: Returns a coordinate list with a length of 6
2.9 set_end_type(end)
Function: Set end coordinate system。 Parameters: end: 0 - flange(default),1 - tool Return Value: None
3.0 get_end_type()
Function: Get end coordinate system Return Value: 0 - flange(default),1 - tool, -1 - error