SSブログ

書初め (COZMO) [科学、数学]

あけましておめでとうございます。


初詣は、近所の白根神社に行きました。





白根神社は、もとは神仏混合の白根不動さんなので、お不動さんにもお参りできます。




今日は、もう二日なので、書初めをすることにしました。




COZMOの回転(turn_in_place)などのAPIは、位置の基準をCOZMOの中心にしているため、アームの先にペンを付けて字を描く時は、中心とペン先までの距離を計算して動かす必要があります。
LOGOのタートルグラフィックスやスクラッチ(Scratch)のタートルズ(turtles)、Pythonのturtleなどでは、ペンの位置と亀の位置が一致しているので、描きたい図形の座標を指定すれば、こんな感じで意図した図形が描けます。


from turtle import *

screensize(200,200)
pd()

for i in range(0,5):
    fd(50)
    rt(72)



同じことをCOZMOでやると、五角形ではなく、こんな花かヒトデのような図形になってしまいます。



import time
import cozmo
from cozmo.util import degrees, distance_mm, speed_mmps
def cozmo_program(robot: cozmo.robot.Robot):
    for i in range(0,5):
        robot.drive_straight(distance_mm(50), speed_mmps(50)).wait_for_completed()
        robot.turn_in_place(degrees(-72)).wait_for_completed()
    robot.set_lift_height(1.0, in_parallel = False).wait_for_completed()
    robot.drive_straight(distance_mm(200), speed_mmps(50)).wait_for_completed()
    print('*** Done ***')

cozmo.run_program(cozmo_program, use_viewer=True, force_viewer_on_top=True)


「春」と書くためには、こんなに複雑になってしまいました。
今年は、COZMOに字を見せるだけで、自分で描けるようにさせてみたいです。

# -*- coding: utf-8 -*-

import time
import cozmo
from cozmo.util import degrees, distance_mm, speed_mmps

def cozmo_program(robot: cozmo.robot.Robot):
    # If the robot was on the charger, drive them forward and clear of the charger
    if robot.is_on_charger:
        # drive off the charger
        robot.drive_off_charger_contacts().wait_for_completed()
        robot.drive_straight(distance_mm(100), speed_mmps(50)).wait_for_completed()
        # Start moving the lift down
        robot.move_lift(-3)
        # turn around to look at the charger
        robot.turn_in_place(degrees(180)).wait_for_completed()
        # drive backwards away from the charger
        robot.drive_straight(distance_mm(-60), speed_mmps(50)).wait_for_completed()
        # wait half a second to ensure Cozmo has seen the charger
        time.sleep(1.0)
    # Tilt the head to be level
    robot.set_head_angle(degrees(0)).wait_for_completed()
    robot.set_lift_height(1.0,  in_parallel = False).wait_for_completed()
    robot.wait_for_all_actions_completed()
    # 春
    robot.set_lift_height(1.0,  in_parallel = False).wait_for_completed()
    robot.drive_straight(distance_mm(100), speed_mmps(50)).wait_for_completed()
    robot.set_lift_height(.0,  in_parallel = False).wait_for_completed()
    robot.drive_straight(distance_mm(100), speed_mmps(50)).wait_for_completed()
    robot.set_lift_height(1.0,  in_parallel = False).wait_for_completed()
    robot.drive_straight(distance_mm(100), speed_mmps(50)).wait_for_completed()
    robot.turn_in_place(degrees(-90)).wait_for_completed()
    robot.drive_straight(distance_mm(30), speed_mmps(50)).wait_for_completed()
    robot.turn_in_place(degrees(-90)).wait_for_completed()
    robot.set_lift_height(.0,  in_parallel = False).wait_for_completed()
    robot.drive_straight(distance_mm(100), speed_mmps(50)).wait_for_completed()
    robot.set_lift_height(1.0,  in_parallel = False).wait_for_completed()
    robot.drive_straight(distance_mm(100), speed_mmps(50)).wait_for_completed()
    robot.turn_in_place(degrees(90)).wait_for_completed()
    robot.drive_straight(distance_mm(20), speed_mmps(50)).wait_for_completed()
    robot.turn_in_place(degrees(-90)).wait_for_completed()
    robot.drive_straight(distance_mm(30), speed_mmps(50)).wait_for_completed()
    robot.turn_in_place(degrees(-180)).wait_for_completed()
    robot.set_lift_height(.0,  in_parallel = False).wait_for_completed()
    robot.drive_straight(distance_mm(160), speed_mmps(50)).wait_for_completed()
    robot.set_lift_height(1.0,  in_parallel = False).wait_for_completed()
    #
    robot.turn_in_place(degrees(90)).wait_for_completed()
    robot.drive_straight(distance_mm(100), speed_mmps(50)).wait_for_completed()
    robot.turn_in_place(degrees(90)).wait_for_completed()
    robot.drive_straight(distance_mm(-30), speed_mmps(50)).wait_for_completed()
    robot.turn_in_place(degrees(50)).wait_for_completed()
    robot.set_lift_height(.0,  in_parallel = False).wait_for_completed()
    robot.drive_straight(distance_mm(150), speed_mmps(50)).wait_for_completed()
    robot.set_lift_height(1.0,  in_parallel = False).wait_for_completed()
    robot.turn_in_place(degrees(180)).wait_for_completed()
    robot.drive_straight(distance_mm(50), speed_mmps(50)).wait_for_completed()
    robot.turn_in_place(degrees(-90)).wait_for_completed()
    robot.drive_straight(distance_mm(-40), speed_mmps(50)).wait_for_completed()
    robot.set_lift_height(.0,  in_parallel = False).wait_for_completed()
    robot.drive_straight(distance_mm(150), speed_mmps(50)).wait_for_completed()
    robot.set_lift_height(1.0,  in_parallel = False).wait_for_completed()
    robot.drive_straight(distance_mm(-40), speed_mmps(50)).wait_for_completed()
    robot.turn_in_place(degrees(-50)).wait_for_completed()
    robot.drive_straight(distance_mm(-35), speed_mmps(50)).wait_for_completed()
    robot.set_lift_height(.0,  in_parallel = False).wait_for_completed()
    robot.drive_straight(distance_mm(50), speed_mmps(50)).wait_for_completed()
    robot.set_lift_height(1.0,  in_parallel = False).wait_for_completed()
    robot.drive_straight(distance_mm(55), speed_mmps(50)).wait_for_completed()
    robot.turn_in_place(degrees(-90)).wait_for_completed()
    robot.drive_straight(distance_mm(-50), speed_mmps(50)).wait_for_completed()
    robot.set_lift_height(.0,  in_parallel = False).wait_for_completed()
    robot.drive_straight(distance_mm(60), speed_mmps(50)).wait_for_completed()
    robot.set_lift_height(1.0,  in_parallel = False).wait_for_completed()
    robot.drive_straight(distance_mm(55), speed_mmps(50)).wait_for_completed()
    robot.turn_in_place(degrees(-90)).wait_for_completed()
    robot.drive_straight(distance_mm(-50), speed_mmps(50)).wait_for_completed()
    robot.set_lift_height(.0,  in_parallel = False).wait_for_completed()
    robot.drive_straight(distance_mm(60), speed_mmps(50)).wait_for_completed()
    robot.set_lift_height(1.0,  in_parallel = False).wait_for_completed()
    robot.drive_straight(distance_mm(55), speed_mmps(50)).wait_for_completed()
    robot.turn_in_place(degrees(-90)).wait_for_completed()
    robot.drive_straight(distance_mm(-50), speed_mmps(50)).wait_for_completed()
    robot.set_lift_height(.0,  in_parallel = False).wait_for_completed()
    robot.drive_straight(distance_mm(60), speed_mmps(50)).wait_for_completed()
    robot.set_lift_height(1.0,  in_parallel = False).wait_for_completed()
    robot.turn_in_place(degrees(-90)).wait_for_completed()
    robot.drive_straight(distance_mm(30), speed_mmps(50)).wait_for_completed()
    robot.turn_in_place(degrees(90)).wait_for_completed()
    robot.drive_straight(distance_mm(-50), speed_mmps(50)).wait_for_completed()
    robot.set_lift_height(.0,  in_parallel = False).wait_for_completed()
    robot.drive_straight(distance_mm(60), speed_mmps(50)).wait_for_completed()
    #
    robot.set_lift_height(1.0,  in_parallel = False).wait_for_completed()
    robot.drive_straight(distance_mm(200), speed_mmps(50)).wait_for_completed()
    print('Done')


cozmo.run_program(cozmo_program, use_viewer=False, force_viewer_on_top=True)






今夜は、今年一番大きな月、スーパームーン、今月31日は皆既月食です。
super_moon_2018.JPG





nice!(16)  コメント(2) 

nice! 16

コメント 2

いっぷく

あけましておめでとうございます。
今年もよろしくお願いいたします。
by いっぷく (2018-01-03 12:15) 

aoken

いっぷく さん
新年のご挨拶ありがとうございます。
良い年になりますように。
by aoken (2018-01-03 16:39) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。