Skip to main content

Example Package

This is a simple example package. You can use GitHub-flavored Markdown to write your content.

'

import sys import time

sys.path.append("/home/lemon/catkin_ws/src/aelos_smart_ros")

from leju import *

def handle_errors(func): def wrapper(*args, **kwargs): try: nodes.node_initial() return func(*args, **kwargs) except Exception as e: print(f"Error in {func.name}: {e}") nodes.serror(e) sys.exit(2)

return wrapper

tag_action_threshold = { 'normal': { 'x': (0.245, -1000, '前进2-8', '下蹲'), 'y': (0.03, -0.03, '左平移2-8', '右平移2-8'), 'yaw': (112, 78, '向左转动2-8', '向右转动2-8') }, 'stufen': { 'x': (0.2, -1000, '前进2-8', '下蹲'), 'y': (0.03, -0.03, '左平移2-8', '右平移2-8'), 'yaw': (295, 255, '向左转动2-8', '向右转动2-8') }, 'test':{ 'x': (0.25, -1000, '前进2-8', '下蹲'), 'y': (0.1, -0.1, '左平移2-8', '右平移2-8'), } }

color_params_threshold = { 1: (43, 115, 109, 53, 255, 162), # 绿色 2: (12, 140, 118, 17, 255, 199), # 橙色 }

color_xy_threshold = { 'x': (370, 270, '右平移1-8', '左平移1-8'), 'y': (1000, 370, '下蹲', '前进1-8'), }

tag_actions = { 1: ('前进2-8', False, True), 2: ('右平移3-2', False, True), 3: ('前进2-8', False, True), 4: ('左平移3-2', False, True), 5: ('前进2-8', False, False), 6: ('前进2-8', False, True), 7: ('右平移3-2', False, True), 8: ('前进2-8', True, False) }

head_color_threshold = 14 shest_color_threshold = 35 positive_geomag_threshold = (198, 180) reverse_geomag_threshold = (26, 11)

"""描述该功能... 向目标位移 """

@handle_errors def move_to_target(current, max_offset, min_offset, negative_action="", positive_action=''): if current <= max_offset and current >= min_offset: print("--已完成位移--") return True action = negative_action if current > max_offset else positive_action print(action) base_action.action(action) time.sleep(0.7) return False

"""描述该功能... 找tag码 """

@handle_errors def find_tag(tag_id, geomag_max, geomag_min, max_action='', min_action='',search_action='', step=True): print("--------开始调整地磁---------") while not move_to_target(sensor_port.get_magnet(), geomag_max, geomag_min, max_action, min_action): print(f"'地磁值:'{sensor_port.get_magnet()}") pass

x=0
if step:
    print(f"--------开始搜索{tag_id}号tag码--------")
    while artag_port.get_specifies_tag(tag_id, 'chest')[0] == 1000:
        print(f"Tag{tag_id}未识别到")
        base_action.action(search_action)
        print(search_action)
        if x>3:
            base_action.action('前进2-8')
        x+=1
        time.sleep(0.5)
    if artag_port.get_specifies_tag(tag_id, 'chest')[0] != 1000:
        adjusted_xy = {'x': False, 'y': False}
        while True:
            tag_xy = artag_port.get_specifies_tag(tag_id, 'chest')
            if all(adjusted_xy.values()):
                break
            adjusted_xy['y'] = move_to_target(tag_xy[1], *tag_action_threshold['test']['y'])
            adjusted_xy['x'] = move_to_target(tag_xy[0], *tag_action_threshold['test']['x'])

        print(f"Tag{tag_id}'号识别成功'")
        return True

"""描述该功能.... 抱起颜色方块 """

@handle_errors def pickup_block(color_params): while True: print('-----开始调整位置-----') while colour_port.get_color_percent('chest', *color_params) < shest_color_threshold: color = colour_port.get_central_coordinate('chest', *color_params) print(f"'颜色坐标x:'{color[0]},'y:'{color[1]}") color_x = move_to_target(color[0], *color_xy_threshold['x']) color_y = move_to_target(color[1], *color_xy_threshold['y']) print(colour_port.get_color_percent('chest', *color_params))

    print('-----进入抱起颜色方块循环-----')
    if colour_port.get_color_percent('chest', *color_params) > shest_color_threshold:
        print('--到达位置--')
        base_action.action('抱起方块1-1')
        print('抱起颜色')
        time.sleep(1)

    if colour_port.get_color_percent('head', *color_params) >= head_color_threshold:
        print("已抱起方块")
        break
return True

"""描述该功能... 对齐tag码 """

@handle_errors def align_to_tag(tag_id=0, action="", stufen=False, stufen_2=True): print('--------进入通道循环--------') print(f"'开始向'{tag_id}'号tag靠近'") thresholds = tag_action_threshold['stufen' if stufen else 'normal'] adjusted = {'x': False, 'y': False, 'yaw': False} while True: tag = artag_port.get_specifies_tag(tag_id, 'chest') print('胸部:', tag_id, "x: ", tag[0], "y: ", tag[1], "yaw: ", tag[2] + 180) if tag[0] == 1000: print('----id丢失----') base_action.action(tag_actions[tag_id - 1][0]) print(tag_actions[tag_id - 1][0]) time.sleep(0.2) continue print('-----开始调整位置-----')

    if not adjusted['yaw']:
        adjusted['yaw'] = move_to_target(tag[2] + 180, *thresholds['yaw'])
        if all(adjusted.values()):
            break
    if adjusted['yaw']:
        adjusted['y'] = move_to_target(tag[1], *thresholds['y'])
        adjusted['x'] = move_to_target(tag[0], *thresholds['x'])
    if adjusted['x'] and adjusted['yaw']:  # 再次调整yaw
        adjusted['yaw'] = False

print('--------进入横向移动调整-------')
if tag_id in (3, 6):  # 横向移动调整拐弯处
    steps = 2 if tag_id == 3 else 4  # 步数看实际步伐
    action = '右平移3-2' if tag_id == 3 else '左平移3-2'
    for _ in range(steps):
        base_action.action(action)

next_id = tag_id + 1
if stufen_2 and artag_port.get_specifies_tag(next_id, 'chest')[0] == 1000:  # 判断是否横移找tag码
    print(f" 开始识别{next_id}号tag码")
    base_action.action(action)
    print(action)
    find_tag(1, *positive_geomag_threshold, '向左转动2-8', '向右转动2-8', '左平移2-8', step=False)
    time.sleep(0.7)
    print(f"Tag {next_id} 识别成功")

"""描述该功能... 进入通道 """

@handle_errors def tag_foeward(): find_tag(1, *positive_geomag_threshold, '向左转动2-8', '向右转动2-8', '左平移3-2', step=True) print('------进入通道------') for id, (next_action, next_back, go_flag) in tag_actions.items(): if id == 8: id = 1 print(id, next_action) align_to_tag(id, next_action, next_back, go_flag) go_back = False if id == 5: print('----开始进入大本营----') go_back = place_block_at_base() find_tag(5, *reverse_geomag_threshold, '向左转动1步', '向右转动1步', '前进2-8',step=True) align_to_tag(5, '前进2-8', False, True) if go_back and id == 1: # 回到起点 for _ in range(2): # 步速看实际步伐 base_action.action('前进2-8')

"""描述该功能... 放下方块 """

@handle_errors def place_block_at_base(): for _ in range(4): # 步速看实际步伐 base_action.action('前进2-8') else: print('---到达位置---') base_action.action('向右转动1步') return True

@handle_errors def main(): print("--------开始运行--------") while True: # 检查是否已捡起方块 head_color_1 = colour_port.get_color_percent('head', *color_params_threshold[1]) head_color_2 = colour_port.get_color_percent('head', *color_params_threshold[2]) if head_color_1 >= head_color_threshold or head_color_2 >= head_color_threshold: print("----已抱起方块,开始导航----") tag_foeward() continue

    # 选择最近的方块
    chest_color_1 = colour_port.get_color_percent('chest', *color_params_threshold[1])
    chest_color_2 = -1
    # colour_port.get_color_percent('chest', *color_params_threshold[2])
    target_params = color_params_threshold[1] if chest_color_1 >= chest_color_2 else color_params_threshold[2]

    if pickup_block(target_params):
        tag_foeward()
        continue

if name == "main": print("Run custom project") main()

import sys import time sys.path.append("/home/lemon/catkin_ws/src/aelos_smart_ros")

from leju import *

leju_variable_tag_x = None leju_variable_tag_y = None leju_variable_tag_yaw = None

def main(): nodes.node_initial() try:

    while True:
        a=sensor_port.get_magnet()
        print(a)
        print("==============")
except Exception as e:
    nodes.serror(e)
    exit(2)
finally:
    nodes.finishsend()

def detect_coordinate_color(): nodes.node_initial() try: while True: color_params_3 = (155, 98,100,174,175 ,159) color_params_1 = (36, 108, 94, 53, 255, 162) color_params_2 = (10, 233, 132, 16, 255, 203) color=colour_port.get_central_coordinate('chest',*color_params) print(f"'颜色1颜色坐标x:'{color_params_1[0]},'y:'{color_params_1[1]}") print(f"'颜色2颜色坐标x:'{color_params_2[0]},'y:'{color_params_2[1]}") print(f"'颜色3颜色坐标x:'{color_params_3[0]},'y:'{color_params_3[1]}") except Exception as e: print(e) nodes.serror(e) exit(2)

def detect_area_color(): nodes.node_initial() try: while True: color_params_3 = (155, 98,100,174,175 ,159) color_params_1 = (36, 108, 94, 53, 255, 162) color_params_2 = (10, 233, 132, 16, 255, 203) shest_color = colour_port.get_color_percent('chest',*color_params_1)
head_color = colour_port.get_color_percent('head',*color_params_1) color = colour_port.get_color_percent('chest',*color_params_3)
print('胸部:'+str(shest_color),'头部'+str(head_color),'大本营'+str(color)) # print('颜色坐标x:',color[0],'y:',color[1])

except Exception as e:
    print(e)
    nodes.serror(e)
    exit(2)

def detect_all_tags(): nodes.node_initial() try: print("开始检测") while True: print("开始") marker = artag_port.get_specifies_marker('chest') marker_1 = artag_port.get_specifies_marker('head') print("============") for ke in marker_1: print('头部:',ke, "x: ", marker_1[ke][0], "y: ", marker_1[ke][1], "yaw: ", marker_1[ke][2] + 180) for key in marker: print('胸部:',key, "x: ", marker[key][0], "y: ", marker[key][1], "yaw: ", marker[key][2] + 180) print("============") time.sleep(1) except Exception as e: print(e) nodes.serror(e) exit(2)

if name == "main": print ("Run custom project") detect_all_tags() '

Metadata

Release files for at.hefang 1.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for at.hefang 1.5
File Size Uploaded
at_hefang-1.5.tar.gz 5.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for at.hefang 1.5
File Interpreter ABI Platform
at_hefang-1.5-py3-none-any.whl Python 3 none any Details

Total release size: 9.5 kB

Release files / at_hefang-1.5.tar.gz

Download URL at_hefang-1.5.tar.gz
Size 5.2 kB
Tags Source
SHA-256 checksum
How to use checksums
4d673751e2dfd4661ca493d89cd066c6fc7dd890ef04f14d5d52183a056490d6
BLAKE2b-256 checksum
How to use checksums
f1d3edc404b9e300e2eaeed4bad310636c6d327d5c0b314772a95bc0d113929b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.5

Release files / at_hefang-1.5-py3-none-any.whl

Download URL at_hefang-1.5-py3-none-any.whl
Size 4.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ce657d0786e734136b55c84bdcc4a7925d9d93e14b2af24afb7c5a53aee629a9
BLAKE2b-256 checksum
How to use checksums
b9b3a57f9b59382a73b8bee391214ef3e103b5965ad1dbe1ef234702624bf16a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.5

Release history Release notifications | RSS feed

This release

1.5 This release

2 release files

1.4

2 release files

1.3

2 release files

1.2

2 release files

1.1

2 release files

1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page